Backport some changes

- Error: comma at end of enumerator list
- Use strcspn instead of strtok for reentrancy
- Include ctype.h
This commit is contained in:
bladeoner 2018-12-30 21:26:57 +01:00
parent 23a0144ee5
commit d6fc51f01a
2 changed files with 25 additions and 9 deletions

View File

@ -4,11 +4,24 @@
For further information, consult the LICENSE file in the root directory. For further information, consult the LICENSE file in the root directory.
\*****************************************************************************/ \*****************************************************************************/
#include <ctype.h>
#include "snes9x.h" #include "snes9x.h"
#include "memmap.h" #include "memmap.h"
#include "cheats.h" #include "cheats.h"
#include "bml.h" #include "bml.h"
static inline char *trim (char *string)
{
int start;
int end;
for (start = 0; string[start] && isspace (string[start]); start++) {}
for (end = start; string[end] && !isspace (string[end]); end++) {}
string[end] = '\0';
return &string[start];
}
static inline uint8 S9xGetByteFree (uint32 Address) static inline uint8 S9xGetByteFree (uint32 Address)
{ {
int block = (Address & 0xffffff) >> MEMMAP_SHIFT; int block = (Address & 0xffffff) >> MEMMAP_SHIFT;
@ -394,20 +407,23 @@ SCheat S9xTextToCheat (char *text)
SCheatGroup S9xCreateCheatGroup (const char *name, const char *cheat) SCheatGroup S9xCreateCheatGroup (const char *name, const char *cheat)
{ {
SCheatGroup g; SCheatGroup g;
char *code;
char *code_string = strdup (cheat); char *code_string = strdup (cheat);
char *code_ptr = code_string;
int len;
g.name = strdup (name); g.name = strdup (name);
g.enabled = false; g.enabled = false;
for (code = strtok (code_string, "+"); code; code = strtok (NULL, "+")) for (len = strcspn (code_ptr, "+"); len; len = strcspn (code_ptr, "+"))
{ {
if (code) char *code = code_ptr;
{ code_ptr += len + (code_ptr[len] == '\0' ? 0 : 1);
SCheat c = S9xTextToCheat (code); code[len] = '\0';
if (c.address) code = trim (code);
g.c.push_back (c);
} SCheat c = S9xTextToCheat (code);
if (c.address)
g.c.push_back (c);
} }
delete[] code_string; delete[] code_string;

View File

@ -54,7 +54,7 @@ enum
S9X_NOT_A_MOVIE_SNAPSHOT, S9X_NOT_A_MOVIE_SNAPSHOT,
S9X_SNAPSHOT_INCONSISTENT, S9X_SNAPSHOT_INCONSISTENT,
S9X_AVI_INFO, S9X_AVI_INFO,
S9X_PRESSED_KEYS_INFO, S9X_PRESSED_KEYS_INFO
}; };
#endif #endif