aboutsummaryrefslogtreecommitdiff
path: root/engines/glk/jacl
diff options
context:
space:
mode:
authorPaul Gilbert2019-10-05 20:43:03 -0700
committerPaul Gilbert2019-10-07 19:01:52 -0700
commit66468fa2fe18daff4d8dc664886b5e23f9436672 (patch)
treee13cc603885e40efc8d08493b4b179ff82883a76 /engines/glk/jacl
parentaf4f390ab26c2a181b3dc69dfd93e8fcf5bc30a0 (diff)
downloadscummvm-rg350-66468fa2fe18daff4d8dc664886b5e23f9436672.tar.gz
scummvm-rg350-66468fa2fe18daff4d8dc664886b5e23f9436672.tar.bz2
scummvm-rg350-66468fa2fe18daff4d8dc664886b5e23f9436672.zip
GLK: JACL: gcc compilation fixes
Diffstat (limited to 'engines/glk/jacl')
-rw-r--r--engines/glk/jacl/csv.h2
-rw-r--r--engines/glk/jacl/display.cpp2
-rw-r--r--engines/glk/jacl/encapsulate.cpp6
-rw-r--r--engines/glk/jacl/errors.cpp12
-rw-r--r--engines/glk/jacl/interpreter.cpp63
-rw-r--r--engines/glk/jacl/jacl.cpp6
-rw-r--r--engines/glk/jacl/jacl_main.cpp102
-rw-r--r--engines/glk/jacl/jpp.cpp6
-rw-r--r--engines/glk/jacl/libcsv.cpp29
-rw-r--r--engines/glk/jacl/loader.cpp134
-rw-r--r--engines/glk/jacl/logging.cpp2
-rw-r--r--engines/glk/jacl/parser.cpp53
-rw-r--r--engines/glk/jacl/prototypes.h336
-rw-r--r--engines/glk/jacl/resolvers.cpp71
-rw-r--r--engines/glk/jacl/types.h4
-rw-r--r--engines/glk/jacl/utils.cpp12
16 files changed, 416 insertions, 424 deletions
diff --git a/engines/glk/jacl/csv.h b/engines/glk/jacl/csv.h
index f979f003b3..80fe402d88 100644
--- a/engines/glk/jacl/csv.h
+++ b/engines/glk/jacl/csv.h
@@ -81,7 +81,7 @@ int csv_init(struct csv_parser *p, unsigned char options);
int csv_fini(struct csv_parser *p, void (*cb1)(void *, size_t, void *), void (*cb2)(int, void *), void *data);
void csv_free(struct csv_parser *p);
int csv_error(struct csv_parser *p);
-char *csv_strerror(int error);
+const char *csv_strerror(int error);
size_t csv_parse(struct csv_parser *p, const void *s, size_t len, void (*cb1)(void *, size_t, void *), void (*cb2)(int, void *), void *data);
size_t csv_write(void *dest, size_t dest_size, const void *src, size_t src_size);
int csv_fwrite(Common::WriteStream *fp, const void *src, size_t src_size);
diff --git a/engines/glk/jacl/display.cpp b/engines/glk/jacl/display.cpp
index db59efbdb1..256240152a 100644
--- a/engines/glk/jacl/display.cpp
+++ b/engines/glk/jacl/display.cpp
@@ -34,7 +34,7 @@ extern char function_name[];
extern struct object_type *object[];
extern struct variable_type *variable[];
-extern char *word[];
+extern const char *word[];
extern int player;
extern int wp;
diff --git a/engines/glk/jacl/encapsulate.cpp b/engines/glk/jacl/encapsulate.cpp
index 8e65ba3932..8daba293d2 100644
--- a/engines/glk/jacl/encapsulate.cpp
+++ b/engines/glk/jacl/encapsulate.cpp
@@ -34,9 +34,9 @@ char text_buffer[1024];
/* THIS IS A STRING CONSTANT TO POINT TO WHENEVER A COMMA IS
* USED IN THE PLAYER'S INPUT */
-char *comma = "comma\0";
-char *then = "then\0";
-char *word[MAX_WORDS];
+const char *comma = "comma\0";
+const char *then = "then\0";
+const char *word[MAX_WORDS];
int quoted[MAX_WORDS];
int percented[MAX_WORDS];
int wp;
diff --git a/engines/glk/jacl/errors.cpp b/engines/glk/jacl/errors.cpp
index fc791add48..4956a1dfd5 100644
--- a/engines/glk/jacl/errors.cpp
+++ b/engines/glk/jacl/errors.cpp
@@ -29,7 +29,7 @@ namespace Glk {
namespace JACL {
extern struct function_type *executing_function;
-extern char *word[];
+extern const char *word[];
extern char error_buffer[];
@@ -44,7 +44,7 @@ void notintrun() {
log_error(error_buffer, PLUS_STDERR);
}
-void unkfunrun(char *name) {
+void unkfunrun(const char *name) {
sprintf(error_buffer, UNKNOWN_FUNCTION_RUN, name);
log_error(error_buffer, PLUS_STDOUT);
}
@@ -130,22 +130,22 @@ void badplrrun(int value) {
log_error(error_buffer, PLUS_STDOUT);
}
-void badptrrun(char *name, int value) {
+void badptrrun(const char *name, int value) {
sprintf(error_buffer, BAD_POINTER, executing_function->name, name, value);
log_error(error_buffer, PLUS_STDOUT);
}
-void unkvarrun(char *variable) {
+void unkvarrun(const char *variable) {
sprintf(error_buffer, UNDEFINED_CONTAINER_RUN, executing_function->name, arg_text_of(variable));
log_error(error_buffer, PLUS_STDOUT);
}
-void unkstrrun(char *variable) {
+void unkstrrun(const char *variable) {
sprintf(error_buffer, UNDEFINED_STRING_RUN, executing_function->name, variable);
log_error(error_buffer, PLUS_STDOUT);
}
-void unkscorun(char *scope) {
+void unkscorun(const char *scope) {
sprintf(error_buffer, UNKNOWN_SCOPE_RUN, executing_function->name, scope);
log_error(error_buffer, PLUS_STDOUT);
}
diff --git a/engines/glk/jacl/interpreter.cpp b/engines/glk/jacl/interpreter.cpp
index 47c07c8acd..94fa45f3e8 100644
--- a/engines/glk/jacl/interpreter.cpp
+++ b/engines/glk/jacl/interpreter.cpp
@@ -30,7 +30,6 @@
namespace Glk {
namespace JACL {
-#ifdef WIN32
struct flock {
short l_type;
short l_whence;
@@ -55,10 +54,9 @@ struct flock {
int fcntl(int __fd, int __cmd, ...) {
return 0;
}
-#endif /* WIN32 */
#ifndef strcasestr
-char *strcasestr(const char *s, const char *find) {
+const char *strcasestr(const char *s, const char *find) {
char c, sc;
size_t len;
@@ -73,28 +71,28 @@ char *strcasestr(const char *s, const char *find) {
} while (scumm_strnicmp(s, find, len) != 0);
s--;
}
- return ((char *)s);
+ return s;
}
#endif
#define MAX_TRY 10
-struct flock read_lck;
+flock read_lck;
int read_fd;
-struct flock write_lck;
+flock write_lck;
int write_fd;
char *url_encode(char *str);
char to_hex(char code);
-char *location_attributes[] = {
+const char *location_attributes[] = {
"VISITED ", "DARK ", "ON_WATER ", "UNDER_WATER ", "WITHOUT_AIR ", "OUTDOORS ",
"MID_AIR ", "TIGHT_ROPE ", "POLLUTED ", "SOLVED ", "MID_WATER ", "DARKNESS ",
"MAPPED ", "KNOWN ",
NULL
};
-char *object_attributes[] = {
+const char *object_attributes[] = {
"CLOSED ", "LOCKED ", "DEAD ", "IGNITABLE ", "WORN ", "CONCEALING ",
"LUMINOUS ", "WEARABLE ", "CLOSABLE ", "LOCKABLE ", "ANIMATE ", "LIQUID ",
"CONTAINER ", "SURFACE ", "PLURAL ", "FLAMMABLE ", "BURNING ", "LOCATION ",
@@ -103,13 +101,13 @@ char *object_attributes[] = {
"NOT_IMPORTANT ", NULL
};
-char *object_elements[] = {
+const char *object_elements[] = {
"parent", "capacity", "mass", "bearing", "velocity", "next", "previous",
"child", "index", "status", "state", "counter", "points", "class", "x", "y",
NULL
};
-char *location_elements[] = {
+const char *location_elements[] = {
"north", "south", "east", "west", "northeast", "northwest", "southeast",
"southwest", "up", "down", "in", "out", "points", "class", "x", "y",
NULL
@@ -211,13 +209,13 @@ extern char user_id[];
extern char prefix[];
extern char text_buffer[];
extern char chunk_buffer[];
-extern char *word[];
+extern const char *word[];
extern char bookmark[];
extern char file_prompt[];
/* CONTAINED IN PARSER.C */
-extern int object_list[4][MAX_WORDS];
+extern int object_list[4][MAX_OBJECTS];
extern int list_size[];
extern int max_size[];
@@ -244,7 +242,7 @@ extern char error_buffer[];
extern char proxy_buffer[];
extern char default_function[];
-extern char override[];
+extern char override_[];
extern int noun[];
extern int wp;
@@ -268,7 +266,7 @@ extern char margin_string[];
char integer_buffer[16];
char called_name[1024];
char scope_criterion[24];
-char *output;
+const char *output;
void terminate(int code) {
// FREE ANY EXTRA RAM ALLOCATED BY THE CSV PARSER
@@ -325,7 +323,7 @@ void build_proxy() {
void cb1(void *s, size_t i, void *not_used) {
struct string_type *resolved_cstring;
- //sprintf (temp_buffer, "Trying to set field %d to equal %s^", field_no, (char *) s);
+ //sprintf (temp_buffer, "Trying to set field %d to equal %s^", field_no, (const char *) s);
//write_text(temp_buffer);
sprintf(temp_buffer, "field[%d]", field_no);
@@ -336,7 +334,7 @@ void cb1(void *s, size_t i, void *not_used) {
//write_text("^");
strncpy(resolved_cstring->value, (const char *)s, i);
resolved_cstring->value[i] = 0;
- //sprintf(temp_buffer, "Setting field %d to ~%s~^", field_no, (char *) s);
+ //sprintf(temp_buffer, "Setting field %d to ~%s~^", field_no, (const char *) s);
//write_text(temp_buffer);
// INCREMENT THE FIELD NUMBER SO THE NEXT ONE GETS STORED IN THE RIGHT CONSTANT
field_no++;
@@ -357,7 +355,7 @@ void cb2(int c, void *not_used) {
}
}
-int execute(char *funcname) {
+int execute(const char *funcname) {
int index;
int counter;
int *container;
@@ -373,7 +371,6 @@ int execute(char *funcname) {
/* THESE ARE USED AS FILE POINTER OFFSETS TO RETURN TO FIXED
* POINTS IN THE GAME FILE */
#ifdef GLK
- int result;
int before_command = 0;
#else
long before_command = 0;
@@ -421,7 +418,7 @@ int execute(char *funcname) {
#ifdef GLK
g_vm->glk_stream_set_position(game_stream, executing_function->position, seekmode_Start);
before_command = executing_function->position;
- result = glk_get_bin_line_stream(game_stream, text_buffer, (glui32) 1024);
+ //result = glk_get_bin_line_stream(game_stream, text_buffer, (glui32) 1024);
#else
fseek(file, executing_function->position, SEEK_SET);
before_command = executing_function->position;
@@ -602,7 +599,7 @@ int execute(char *funcname) {
}
if (infile == NULL) {
- sprintf(error_buffer, "Failed to open file %s: %s\n", temp_buffer, strerror(errno));
+ sprintf(error_buffer, "Failed to open file %s\n", temp_buffer);
log_error(error_buffer, LOG_ONLY);
infile = NULL;
} else {
@@ -684,7 +681,7 @@ int execute(char *funcname) {
}
if (infile == NULL) {
- sprintf(error_buffer, "Failed to open input CSV file ~%s~: %s\n", in_name, strerror(errno));
+ sprintf(error_buffer, "Failed to open input CSV file ~%s\n", in_name);
log_error(error_buffer, LOG_ONLY);
if (outfile != NULL) {
delete outfile;
@@ -693,7 +690,7 @@ int execute(char *funcname) {
return (exit_function(TRUE));
} else {
if (outfile == NULL) {
- sprintf(error_buffer, "Failed to open output CSV file ~%s~: %s\n", out_name, strerror(errno));
+ sprintf(error_buffer, "Failed to open output CSV file ~%s~\n", out_name);
log_error(error_buffer, LOG_ONLY);
if (infile != NULL) {
delete infile;
@@ -1608,7 +1605,7 @@ int execute(char *funcname) {
* TO EXECUTE IN PLACE OF ANY CODE THAT FOLLOWS THIS LINE.
* THIS COMMAND IS USED EXCLUSIVELY IN GLOBAL FUNCTIONS
* ASSOCIATED WITH GRAMMAR LINES */
- if (execute(override) == TRUE) {
+ if (execute(override_) == TRUE) {
return (exit_function(TRUE));
} else {
if (execute(default_function) == TRUE) {
@@ -2198,7 +2195,7 @@ int execute(char *funcname) {
outfile = File::openForWriting(temp_buffer);
if (outfile == NULL) {
- sprintf(error_buffer, "Failed to open file %s: %s\n", temp_buffer, strerror(errno));
+ sprintf(error_buffer, "Failed to open file %s\n", temp_buffer);
log_error(error_buffer, PLUS_STDOUT);
} else {
for (counter = 2; word[counter] != NULL && counter < MAX_WORDS; counter++) {
@@ -2546,7 +2543,7 @@ int bearing(double x1, double y1, double x2, double y2) {
return ((int) bearing);
}
-void set_arguments(char *function_call) {
+void set_arguments(const char *function_call) {
/* THIS FUNCTION CREATES AN ARRAY OF JACL INTEGER CONSTANTS TO
REPRESENT THE ARGUMENTS PASSED TO A JACL FUNCTION */
int index,
@@ -2670,7 +2667,7 @@ void pop_stack() {
/* RESTORE THE STORED FUNCTION NAMES THAT ARE USED WHEN AN
* 'override' COMMAND IS ENCOUNTERED IN THE CURRENT FUNCTION */
- strncpy(override, backup[stack].override, 80);
+ strncpy(override_, backup[stack]._override, 80);
strncpy(default_function, backup[stack].default_function, 80);
/* RESTORE ALL THE WORD POINTERS */
@@ -2753,7 +2750,7 @@ void push_stack(int32 file_pointer) {
/* COPY THE STORED FUNCTION NAMES THAT ARE USED WHEN AN
* 'override' COMMAND IS ENCOUNTERED IN THE CURRENT FUNCTION */
- strncpy(backup[stack].override, override, 80);
+ strncpy(backup[stack]._override, override_, 80);
strncpy(backup[stack].default_function, default_function, 80);
/* PUSH ALL THE WORD POINTERS ONTO THE STACK */
@@ -3091,8 +3088,8 @@ int and_strcondition() {
}
int str_test(int first) {
- char *index;
- char *compare;
+ const char *index;
+ const char *compare;
// GET THE TWO STRING VALUES TO COMPARE
@@ -3150,7 +3147,7 @@ int str_test(int first) {
}
}
-void add_cinteger(char *name, int value) {
+void add_cinteger(const char *name, int value) {
/* THIS FUNCTION ADDS A NEW JACL CONSTANT TO THE LIST */
if ((new_cinteger = (struct cinteger_type *)
@@ -3174,7 +3171,7 @@ void add_cinteger(char *name, int value) {
}
}
-void clear_cinteger(char *name) {
+void clear_cinteger(const char *name) {
/* FREE CONSTANTS THAT HAVE SUPPLIED NAME*/
//printf("--- clear integer %s\n", name);
@@ -3208,7 +3205,7 @@ void clear_cinteger(char *name) {
//printf("--- leaving clear integer\n");
}
-void add_cstring(char *name, char *value) {
+void add_cstring(const char *name, const char *value) {
/* ADD A STRING CONSTANT WITH THE SUPPLIED NAME AND VALUE */
if ((new_string = (struct string_type *)
@@ -3233,7 +3230,7 @@ void add_cstring(char *name, char *value) {
}
}
-void clear_cstring(char *name) {
+void clear_cstring(const char *name) {
/* FREE CONSTANTS THAT HAVE SUPPLIED NAME*/
if (cstring_table != NULL) {
current_cstring = cstring_table;
diff --git a/engines/glk/jacl/jacl.cpp b/engines/glk/jacl/jacl.cpp
index c967a8891c..c0530339ee 100644
--- a/engines/glk/jacl/jacl.cpp
+++ b/engines/glk/jacl/jacl.cpp
@@ -27,6 +27,8 @@ namespace Glk {
namespace JACL {
JACL *g_vm;
+extern strid_t game_stream;
+extern void glk_main();
JACL::JACL(OSystem *syst, const GlkGameDescription &gameDesc) : GlkAPI(syst, gameDesc),
_saveSlot(-1) {
@@ -37,6 +39,10 @@ void JACL::runGame() {
// Check for savegame
_saveSlot = ConfMan.hasKey("save_slot") ? ConfMan.getInt("save_slot") : -1;
+ // Open up the game file as a stream, and play the game
+ game_stream = _streams->openStream(&_gameFile);
+ glk_main();
+ glk_stream_close(game_stream);
}
bool JACL::initialize() {
diff --git a/engines/glk/jacl/jacl_main.cpp b/engines/glk/jacl/jacl_main.cpp
index 6b77f85d97..00fa706210 100644
--- a/engines/glk/jacl/jacl_main.cpp
+++ b/engines/glk/jacl/jacl_main.cpp
@@ -43,7 +43,7 @@ event_t *cancelled_event;
extern struct csv_parser parser_csv;
extern char text_buffer[];
-extern char *word[];
+extern const char *word[];
extern short int quoted[];
extern short int punctuated[];
extern int wp;
@@ -75,7 +75,7 @@ char walkthru[81] = "\0";
char function_name[81];
extern char default_function[84];
-char override[81];
+char override_[81];
char temp_buffer[1024];
char error_buffer[1024];
@@ -88,8 +88,8 @@ char proxy_buffer[1024];
char oops_buffer[1024];
char oopsed_current[1024];
char last_command[1024];
-char *blank_command = "blankjacl\0";
-char *current_command = (char *) NULL;
+const char *blank_command = "blankjacl\0";
+const char *current_command = (const char *)NULL;
char command_buffer[1024];
#ifndef NOUNICODE
glui32 command_buffer_uni[1024];
@@ -174,9 +174,8 @@ static void version_info();
void glk_main() {
int index;
- frefid_t blorb_file;
- override[0] = 0;
+ override_[0] = 0;
/* ALLOC AN EVENT TO STORE A CANCELLED EVENT IN */
if ((cancelled_event = (event_t *) malloc(sizeof(event_t))) == NULL)
@@ -217,26 +216,6 @@ void glk_main() {
terminate(200);
}
- /* OPEN THE BLORB FILE IF ONE EXISTS */
-#ifndef WINGLK
- blorb_file = g_vm->glk_fileref_create_by_name(fileusage_BinaryMode, blorb, 0);
-#else
- strcpy(temp_buffer, game_path);
- strcat(temp_buffer, blorb);
- strcpy(blorb, temp_buffer);
- blorb_file = wing_vm->glk_fileref_create_by_name(fileusage_BinaryMode, blorb, 0, 0);
-#endif
-
-#ifdef UNUSED
- if (blorb_file != NULL && g_vm->glk_fileref_does_file_exist(blorb_file)) {
- blorb_stream = g_vm->glk_stream_open_file(blorb_file, filemode_Read, 0);
-
- if (blorb_stream != NULL) {
- /* IF THE FILE EXISTS, SET THE RESOURCE MAP */
- giblorb_set_resource_map(blorb_stream);
- }
- }
-#endif
// INTIALISE THE CSV PARSER
csv_init(&parser_csv, CSV_APPEND_NULL);
@@ -363,6 +342,9 @@ void glk_main() {
* STATUS WINDOW. */
status_line();
break;
+
+ default:
+ break;
}
}
@@ -534,7 +516,7 @@ void word_check() {
command_encapsulate();
//printf("--- trying to replace %s with %s\n", word[oops_word], oops_buffer);
jacl_truncate();
- word[oops_word] = (char *) &oops_buffer;
+ word[oops_word] = (char *)&oops_buffer;
/* BUILD A PLAIN STRING REPRESENTING THE NEW COMMAND */
oopsed_current[0] = 0;
@@ -667,7 +649,7 @@ void save_game_state() {
noun3_backup = noun[3];
}
-int save_interaction(char *filename) {
+int save_interaction(const char *filename) {
frefid_t saveref;
jacl_set_window(inputwin);
@@ -742,7 +724,7 @@ void restore_game_state() {
TIME->value = FALSE;
}
-void write_text(char *string_buffer) {
+void write_text(const char *string_buffer) {
int index,
length;
@@ -840,9 +822,7 @@ void newline() {
write_text("\n");
}
-void more(char *message) {
- int character;
-
+void more(const char *message) {
jacl_set_window(inputwin);
if (inputwin == promptwin) {
@@ -854,7 +834,7 @@ void more(char *message) {
write_text(message);
g_vm->glk_set_style(style_Normal);
- character = get_key();
+ (void)get_key();
if (inputwin == mainwin) newline();
}
@@ -864,8 +844,7 @@ int get_key() {
g_vm->glk_request_char_event(inputwin);
- while (1) {
-
+ while (!g_vm->shouldQuit()) {
g_vm->glk_select(&ev);
switch (ev.type) {
@@ -874,9 +853,13 @@ int get_key() {
return (ev.val1);
}
break;
+
+ default:
+ break;
}
}
+ return 0;
}
int get_number(int insist, int low, int high) {
@@ -904,8 +887,7 @@ int get_number(int insist, int low, int high) {
g_vm->glk_request_line_event(inputwin, commandbuf, 255, 0);
gotline = FALSE;
- while (!gotline) {
-
+ while (!gotline && g_vm->shouldQuit()) {
g_vm->glk_select(&ev);
switch (ev.type) {
@@ -918,6 +900,9 @@ int get_number(int insist, int low, int high) {
case evtype_Arrange:
status_line();
break;
+
+ default:
+ break;
}
}
@@ -959,8 +944,7 @@ void get_string(char *string_buffer) {
g_vm->glk_request_line_event(inputwin, commandbuf, 255, 0);
gotline = FALSE;
- while (!gotline) {
-
+ while (!gotline && !g_vm->shouldQuit()) {
g_vm->glk_select(&ev);
switch (ev.type) {
@@ -973,6 +957,9 @@ void get_string(char *string_buffer) {
case evtype_Arrange:
status_line();
break;
+
+ default:
+ break;
}
}
@@ -1005,7 +992,7 @@ int get_yes_or_no() {
g_vm->glk_request_line_event(inputwin, commandbuf, 255, 0);
gotline = FALSE;
- while (!gotline) {
+ while (!gotline && !g_vm->shouldQuit()) {
g_vm->glk_select(&ev);
@@ -1019,6 +1006,9 @@ int get_yes_or_no() {
case evtype_Arrange:
status_line();
break;
+
+ default:
+ break;
}
}
@@ -1038,7 +1028,7 @@ int get_yes_or_no() {
}
}
-char get_character(char *message) {
+char get_character(const char *message) {
char *cx;
char commandbuf[256];
int gotline;
@@ -1048,7 +1038,7 @@ char get_character(char *message) {
/* THIS LOOP IS IDENTICAL TO THE MAIN COMMAND LOOP IN g_vm->glk_main(). */
- while (1) {
+ while (!g_vm->shouldQuit()) {
if (inputwin == promptwin) {
g_vm->glk_window_clear(promptwin);
jacl_set_window(inputwin);
@@ -1059,7 +1049,7 @@ char get_character(char *message) {
jacl_set_window(mainwin);
gotline = FALSE;
- while (!gotline) {
+ while (!gotline && !g_vm->shouldQuit()) {
g_vm->glk_select(&ev);
@@ -1073,6 +1063,9 @@ char get_character(char *message) {
case evtype_Arrange:
status_line();
break;
+
+ default:
+ break;
}
}
@@ -1081,6 +1074,9 @@ char get_character(char *message) {
return (*cx);
}
+
+
+ return '\0';
}
strid_t open_glk_file(uint usage, uint mode, char *filename) {
@@ -1239,7 +1235,7 @@ void walking_thru() {
walkthru_running = FALSE;
}
-int restore_interaction(char *filename) {
+int restore_interaction(const char *filename) {
frefid_t saveref;
jacl_set_window(inputwin);
@@ -1297,11 +1293,11 @@ void jacl_set_window(winid_t new_window) {
}
#ifdef READLINE
-char **command_completion(char *text, int start, int end) {
+char **command_completion(const char *text, int start, int end) {
/* READLINE TAB COMPLETION CODE */
char **options;
- options = (char **) NULL;
+ options = (const char **) NULL;
if (start == 0)
options = completion_matches(text, verb_generator);
@@ -1312,7 +1308,7 @@ char **command_completion(char *text, int start, int end) {
}
#endif
-char *object_generator(char *text, int state) {
+const char *object_generator(const char *text, int state) {
static int len;
static struct command_type *now;
struct command_type *to_send;
@@ -1348,15 +1344,15 @@ char *object_generator(char *text, int state) {
if (!strncmp(text, now->word, len)) {
to_send = now;
now = now->next;
- return ((char *) to_send->word);
+ return ((const char *)to_send->word);
}
now = now->next;
}
- return (char *) NULL;
+ return (const char *)NULL;
}
-char *verb_generator(char *text, int state) {
+const char *verb_generator(const char *text, int state) {
static int len;
static struct command_type *now;
struct command_type *to_send;
@@ -1388,17 +1384,17 @@ char *verb_generator(char *text, int state) {
now = now->next;
/* MALLOC A COPY AND RETURN A POINTER TO THE COPY */
- return ((char *) to_send->word);
+ return ((const char *)to_send->word);
}
now = now->next;
}
- return (char *) NULL;
+ return (const char *)NULL;
}
/* ADD A COPY OF STRING TO A LIST OF STRINGS IF IT IS NOT
ALREADY IN THE LIST. THIS IS FOR THE USE OF READLINE */
-void add_word(char *newWord) {
+void add_word(const char *newWord) {
static struct command_type *current_word = NULL;
struct command_type *previous_word = NULL;
diff --git a/engines/glk/jacl/jpp.cpp b/engines/glk/jacl/jpp.cpp
index f036b75aca..a8db6a01a5 100644
--- a/engines/glk/jacl/jpp.cpp
+++ b/engines/glk/jacl/jpp.cpp
@@ -28,7 +28,7 @@ namespace JACL {
extern char text_buffer[];
extern char temp_buffer[];
-extern char *word[];
+extern const char *word[];
extern short int quoted[];
extern short int punctuated[];
extern int wp;
@@ -126,7 +126,7 @@ int jpp() {
}
}
- if (process_file(game_file, (char *) NULL) == FALSE) {
+ if (process_file(game_file, (const char *) NULL) == FALSE) {
return (FALSE);
}
@@ -139,7 +139,7 @@ int jpp() {
return (TRUE);
}
-int process_file(char *sourceFile1, char *sourceFile2) {
+int process_file(const char *sourceFile1, char *sourceFile2) {
char temp_buffer1[1025];
char temp_buffer2[1025];
Common::File *srcFile = NULL;
diff --git a/engines/glk/jacl/libcsv.cpp b/engines/glk/jacl/libcsv.cpp
index 408e60b683..ccb90b8280 100644
--- a/engines/glk/jacl/libcsv.cpp
+++ b/engines/glk/jacl/libcsv.cpp
@@ -28,13 +28,15 @@ namespace JACL {
#define VERSION "3.0.0"
-//#define SIZE_MAX ((size_t)-1)
+//#define MAX_INT ((size_t)-1)
#define ROW_NOT_BEGUN 0
#define FIELD_NOT_BEGUN 1
#define FIELD_BEGUN 2
#define FIELD_MIGHT_HAVE_ENDED 3
+#define MAX_INT 0x7fff
+
/*
Explanation of states
ROW_NOT_BEGUN There have not been any fields encountered for this row
@@ -69,7 +71,7 @@ namespace JACL {
#define SUBMIT_CHAR(p, c) ((p)->entry_buf[entry_pos++] = (c))
-static char *csv_errors[] = {"success",
+static const char *csv_errors[] = {"success",
"error parsing data while strict checking enabled",
"memory exhausted while increasing buffer size",
"data size too large",
@@ -81,7 +83,7 @@ int csv_error(struct csv_parser *p) {
return p->status;
}
-char *csv_strerror(int status) {
+const char *csv_strerror(int status) {
/* Return a textual description of status */
if (status >= CSV_EINVALID || status < 0)
return csv_errors[CSV_EINVALID];
@@ -179,6 +181,7 @@ int csv_fini(struct csv_parser *p, void (*cb1)(void *, size_t, void *), void (*c
/* Reset parser */
p->spaces = p->quoted = p->entry_pos = p->status = 0;
p->pstate = ROW_NOT_BEGUN;
+ (void)pstate;
return 0;
}
@@ -237,16 +240,16 @@ size_t csv_get_buffer_size(struct csv_parser *p) {
static int csv_increase_buffer(struct csv_parser *p) {
/* Increase the size of the entry buffer. Attempt to increase size by
- * p->blk_size, if this is larger than SIZE_MAX try to increase current
- * buffer size to SIZE_MAX. If allocation fails, try to allocate halve
+ * p->blk_size, if this is larger than MAX_INT try to increase current
+ * buffer size to MAX_INT. If allocation fails, try to allocate halve
* the size and try again until successful or increment size is zero.
*/
size_t to_add = p->blk_size;
void *vp;
- if (p->entry_size >= SIZE_MAX - to_add)
- to_add = SIZE_MAX - p->entry_size;
+ if (p->entry_size >= MAX_INT - to_add)
+ to_add = MAX_INT - p->entry_size;
if (!to_add) {
p->status = CSV_ETOOBIG;
@@ -432,18 +435,18 @@ size_t csv_write(void *dest, size_t dest_size, const void *src, size_t src_size)
if (*csrc == '"') {
if (dest_size > chars)
*cdest++ = '"';
- if (chars < SIZE_MAX) chars++;
+ if (chars < MAX_INT) chars++;
}
if (dest_size > chars)
*cdest++ = *csrc;
- if (chars < SIZE_MAX) chars++;
+ if (chars < MAX_INT) chars++;
src_size--;
csrc++;
}
if (dest_size > chars)
*cdest = '"';
- if (chars < SIZE_MAX) chars++;
+ if (chars < MAX_INT) chars++;
return chars;
}
@@ -488,18 +491,18 @@ size_t csv_write2(void *dest, size_t dest_size, const void *src, size_t src_size
if (*csrc == quote) {
if (dest_size > chars)
*cdest++ = quote;
- if (chars < SIZE_MAX) chars++;
+ if (chars < MAX_INT) chars++;
}
if (dest_size > chars)
*cdest++ = *csrc;
- if (chars < SIZE_MAX) chars++;
+ if (chars < MAX_INT) chars++;
src_size--;
csrc++;
}
if (dest_size > chars)
*cdest = quote;
- if (chars < SIZE_MAX) chars++;
+ if (chars < MAX_INT) chars++;
return chars;
}
diff --git a/engines/glk/jacl/loader.cpp b/engines/glk/jacl/loader.cpp
index 345aa18aad..d4da488697 100644
--- a/engines/glk/jacl/loader.cpp
+++ b/engines/glk/jacl/loader.cpp
@@ -37,7 +37,7 @@ extern char text_buffer[];
extern char temp_buffer[];
extern char prefix[];
extern char error_buffer[];
-extern char *word[];
+extern const char *word[];
extern int quoted[];
extern int punctuated[];
extern int wp;
@@ -109,23 +109,17 @@ void read_gamefile() {
int self_parent = 0;
long start_of_file = 0;
-#ifdef GLK
- glui32 current_file_position;
-#else
- long current_file_position;
-#endif
-
long bit_mask;
- struct filter_type *current_filter = NULL;
- struct filter_type *new_filter = NULL;
- struct attribute_type *current_attribute = NULL;
- struct attribute_type *new_attribute = NULL;
- struct cinteger_type *resolved_cinteger = NULL;
- struct synonym_type *current_synonym = NULL;
- struct synonym_type *new_synonym = NULL;
- struct function_type *current_function = NULL;
- struct name_type *current_name = NULL;
+ filter_type *current_filter = NULL;
+ filter_type *new_filter = NULL;
+ attribute_type *current_attribute = NULL;
+ attribute_type *new_attribute = NULL;
+ cinteger_type *resolved_cinteger = NULL;
+ synonym_type *current_synonym = NULL;
+ synonym_type *new_synonym = NULL;
+ function_type *current_function = NULL;
+ name_type *current_name = NULL;
char function_name[81];
@@ -750,7 +744,7 @@ void read_gamefile() {
function_name[80] = 0;
self_parent = 0;
} else if (word[wp][0] == '*') {
- char *last_underscore = (char *) NULL;
+ const char *last_underscore = (char *)NULL;
/* ALLOW MANUAL NAMING OF ASSOCIATED FUNCTIONS */
/* TO GIVE CLASS-LIKE BEHAVIOR */
@@ -1063,10 +1057,8 @@ void read_gamefile() {
}
#ifdef GLK
- current_file_position = g_vm->glk_stream_get_position(game_stream);
result = glk_get_bin_line_stream(game_stream, text_buffer, (glui32) 1024);
#else
- current_file_position = ftell(file);
fgets(text_buffer, 1024, file);
#endif
line++;
@@ -1138,7 +1130,7 @@ void build_grammar_table(struct word_type *pointer) {
} while (word[wp] != NULL && wp < MAX_WORDS);
}
-int legal_label_check(char *word, int line, int type) {
+int legal_label_check(const char *label_word, int line, int type) {
struct integer_type *integer_pointer = integer_table;
struct cinteger_type *cinteger_pointer = cinteger_table;
struct string_type *string_pointer = string_table;
@@ -1147,30 +1139,30 @@ int legal_label_check(char *word, int line, int type) {
int index;
- if (!strcmp(word, "here") ||
- !strcmp(word, "player") ||
- !strcmp(word, "integer") ||
- !strcmp(word, "arg") ||
- !strcmp(word, "string_arg") ||
- !strcmp(word, "arg") ||
- !strcmp(word, "$word") ||
- !strcmp(word, "self") ||
- !strcmp(word, "this") ||
- !strcmp(word, "noun1") ||
- !strcmp(word, "noun2") ||
- !strcmp(word, "noun3") ||
- !strcmp(word, "noun4") ||
- !strcmp(word, "objects") ||
- validate(word)) {
- sprintf(error_buffer, ILLEGAL_LABEL, line, word);
+ if (!strcmp(label_word, "here") ||
+ !strcmp(label_word, "player") ||
+ !strcmp(label_word, "integer") ||
+ !strcmp(label_word, "arg") ||
+ !strcmp(label_word, "string_arg") ||
+ !strcmp(label_word, "arg") ||
+ !strcmp(label_word, "$label_word") ||
+ !strcmp(label_word, "self") ||
+ !strcmp(label_word, "this") ||
+ !strcmp(label_word, "noun1") ||
+ !strcmp(label_word, "noun2") ||
+ !strcmp(label_word, "noun3") ||
+ !strcmp(label_word, "noun4") ||
+ !strcmp(label_word, "objects") ||
+ validate(label_word)) {
+ sprintf(error_buffer, ILLEGAL_LABEL, line, label_word);
log_error(error_buffer, PLUS_STDERR);
return (TRUE);
}
if (type == CSTR_TYPE) {
- if (!strcmp(word, "command_prompt")) {
- sprintf(error_buffer, USED_LABEL_STR, line, word);
+ if (!strcmp(label_word, "command_prompt")) {
+ sprintf(error_buffer, USED_LABEL_STR, line, label_word);
log_error(error_buffer, PLUS_STDERR);
return (TRUE);
@@ -1178,8 +1170,8 @@ int legal_label_check(char *word, int line, int type) {
}
while (integer_pointer != NULL && type != INT_TYPE) {
- if (!strcmp(word, integer_pointer->name)) {
- sprintf(error_buffer, USED_LABEL_INT, line, word);
+ if (!strcmp(label_word, integer_pointer->name)) {
+ sprintf(error_buffer, USED_LABEL_INT, line, label_word);
log_error(error_buffer, PLUS_STDERR);
return (TRUE);
@@ -1189,8 +1181,8 @@ int legal_label_check(char *word, int line, int type) {
while (cinteger_pointer != NULL && type != CINT_TYPE) {
- if (!strcmp(word, cinteger_pointer->name)) {
- sprintf(error_buffer, USED_LABEL_CINT, line, word);
+ if (!strcmp(label_word, cinteger_pointer->name)) {
+ sprintf(error_buffer, USED_LABEL_CINT, line, label_word);
log_error(error_buffer, PLUS_STDERR);
return (TRUE);
@@ -1199,8 +1191,8 @@ int legal_label_check(char *word, int line, int type) {
}
while (string_pointer != NULL && type != STR_TYPE) {
- if (!strcmp(word, string_pointer->name)) {
- sprintf(error_buffer, USED_LABEL_STR, line, word);
+ if (!strcmp(label_word, string_pointer->name)) {
+ sprintf(error_buffer, USED_LABEL_STR, line, label_word);
log_error(error_buffer, PLUS_STDERR);
return (TRUE);
@@ -1209,8 +1201,8 @@ int legal_label_check(char *word, int line, int type) {
}
while (cstring_pointer != NULL && type != CSTR_TYPE) {
- if (!strcmp(word, cstring_pointer->name)) {
- sprintf(error_buffer, USED_LABEL_CSTR, line, word);
+ if (!strcmp(label_word, cstring_pointer->name)) {
+ sprintf(error_buffer, USED_LABEL_CSTR, line, label_word);
log_error(error_buffer, PLUS_STDERR);
return (TRUE);
@@ -1220,8 +1212,8 @@ int legal_label_check(char *word, int line, int type) {
/* DON'T CHECK FOR ATT_TYPE AS YOU CAN'T HAVE ATTRIBUTE ARRAYS. */
while (attribute_pointer != NULL) {
- if (!strcmp(word, attribute_pointer->name)) {
- sprintf(error_buffer, USED_LABEL_ATT, line, word);
+ if (!strcmp(label_word, attribute_pointer->name)) {
+ sprintf(error_buffer, USED_LABEL_ATT, line, label_word);
write_text(error_buffer);
return (TRUE);
@@ -1230,9 +1222,9 @@ int legal_label_check(char *word, int line, int type) {
}
for (index = 1; index <= objects; index++) {
- if (!strcmp(word, object[index]->label)) {
+ if (!strcmp(label_word, object[index]->label)) {
sprintf(error_buffer, USED_LABEL_OBJ,
- line, word);
+ line, label_word);
log_error(error_buffer, PLUS_STDERR);
return (TRUE);
@@ -1245,7 +1237,7 @@ int legal_label_check(char *word, int line, int type) {
void restart_game() {
int index;
- struct integer_type *current_integer;
+ struct integer_type *curr_integer;
struct integer_type *previous_integer;
struct synonym_type *current_synonym;
struct synonym_type *previous_synonym;
@@ -1253,7 +1245,7 @@ void restart_game() {
struct name_type *next_name;
struct function_type *current_function;
struct function_type *previous_function;
- struct string_type *current_string;
+ struct string_type *curr_string;
struct string_type *previous_string;
struct attribute_type *current_attribute;
struct attribute_type *previous_attribute;
@@ -1293,13 +1285,13 @@ void restart_game() {
if (integer_table != NULL) {
if (integer_table->next_integer != NULL) {
do {
- current_integer = integer_table;
+ curr_integer = integer_table;
previous_integer = integer_table;
- while (current_integer->next_integer != NULL) {
- previous_integer = current_integer;
- current_integer = current_integer->next_integer;
+ while (curr_integer->next_integer != NULL) {
+ previous_integer = curr_integer;
+ curr_integer = curr_integer->next_integer;
}
- free(current_integer);
+ free(curr_integer);
previous_integer->next_integer = NULL;
} while (previous_integer != integer_table);
}
@@ -1350,13 +1342,13 @@ void restart_game() {
if (string_table != NULL) {
if (string_table->next_string != NULL) {
do {
- current_string = string_table;
+ curr_string = string_table;
previous_string = string_table;
- while (current_string->next_string != NULL) {
- previous_string = current_string;
- current_string = current_string->next_string;
+ while (curr_string->next_string != NULL) {
+ previous_string = curr_string;
+ curr_string = curr_string->next_string;
}
- free(current_string);
+ free(curr_string);
previous_string->next_string = NULL;
} while (previous_string != string_table);
}
@@ -1406,13 +1398,13 @@ void restart_game() {
if (cstring_table != NULL) {
if (cstring_table->next_string != NULL) {
do {
- current_string = cstring_table;
+ curr_string = cstring_table;
previous_string = cstring_table;
- while (current_string->next_string != NULL) {
- previous_string = current_string;
- current_string = current_string->next_string;
+ while (curr_string->next_string != NULL) {
+ previous_string = curr_string;
+ curr_string = curr_string->next_string;
}
- free(current_string);
+ free(curr_string);
previous_string->next_string = NULL;
} while (previous_string != cstring_table);
}
@@ -1461,7 +1453,7 @@ void set_defaults() {
him = 0;
}
-void create_cinteger(char *name, int value) {
+void create_cinteger(const char *name, int value) {
struct cinteger_type *new_cinteger = NULL;
if ((new_cinteger = (struct cinteger_type *)
@@ -1482,7 +1474,7 @@ void create_cinteger(char *name, int value) {
}
}
-void create_integer(char *name, int value) {
+void create_integer(const char *name, int value) {
struct integer_type *new_integer = NULL;
if ((new_integer = (struct integer_type *)
@@ -1506,7 +1498,7 @@ void create_integer(char *name, int value) {
}
}
-void create_string(char *name, char *value) {
+void create_string(const char *name, const char *value) {
struct string_type *new_string = NULL;
if ((new_string = (struct string_type *)
@@ -1539,7 +1531,7 @@ void create_string(char *name, char *value) {
}
}
-void create_cstring(char *name, char *value) {
+void create_cstring(const char *name, const char *value) {
struct string_type *new_string = NULL;
if ((new_string = (struct string_type *)
diff --git a/engines/glk/jacl/logging.cpp b/engines/glk/jacl/logging.cpp
index 97376c52b2..789c12dcee 100644
--- a/engines/glk/jacl/logging.cpp
+++ b/engines/glk/jacl/logging.cpp
@@ -31,7 +31,7 @@ namespace JACL {
extern char user_id[];
extern char prefix[];
-void log_error(char *message, int console) {
+void log_error(const char *message, int console) {
/* LOG A MESSAGE TO THE CONSOLE */
char consoleMessage[256];
diff --git a/engines/glk/jacl/parser.cpp b/engines/glk/jacl/parser.cpp
index b9787c8ac7..d37f4d1f4b 100644
--- a/engines/glk/jacl/parser.cpp
+++ b/engines/glk/jacl/parser.cpp
@@ -77,7 +77,7 @@ char *expected_scope[3];
int from_objects[MAX_OBJECTS];
int after_from;
-char *from_word;
+const char *from_word;
int object_expected = FALSE;
@@ -93,8 +93,8 @@ extern char text_buffer[];
extern char function_name[];
extern char temp_buffer[];
extern char error_buffer[];
-extern char override[];
-extern char *word[];
+extern char override_[];
+extern const char *word[];
extern int quoted[];
@@ -194,7 +194,7 @@ void parser() {
}
// STORE THE EXPECTED SCOPE FOR LATER CHECKING
- expected_scope[current_noun] = (char *) &matched_word->word;
+ expected_scope[current_noun] = (char *)&matched_word->word;
//printf("--- expected scope for noun%d is %s\n", current_noun, expected_scope[current_noun]);
// THE NEXT MATCH OR GROUP OF MATCHES SHOULD BE IN THE SECOND
@@ -377,7 +377,7 @@ int first_available(int list_number) {
return (0);
}
-void call_functions(char *base_name) {
+void call_functions(const char *base_name) {
/* THIS FUNCTION CALLS ALL THE APPROPRIATE JACL FUNCTIONS TO RESPOND
* TO A PLAYER'S COMMAND GIVEN A BASE FUNCTION NAME AND THE CURRENT
* VALUE OF noun1 AND noun2 */
@@ -389,7 +389,7 @@ void call_functions(char *base_name) {
strncpy(base_function, base_name + 1, 80);
strcat(base_function, "_");
- strncpy(override, base_function, 80);
+ strncpy(override_, base_function, 80);
strcpy(before_function, "+before_");
strcat(before_function, base_name + 1);
@@ -439,8 +439,8 @@ void call_functions(char *base_name) {
/* PREPARE THE OVERRIDE FUNCTION NAME IN CASE IT
* IS NEEDED */
- strcat(override, "override_");
- strcat(override, object[HERE]->label);
+ strcat(override_, "override_");
+ strcat(override_, object[HERE]->label);
/* CREATE THE FUNCTION NAME '+func' */
strcpy(base_function, "+");
@@ -465,8 +465,8 @@ void call_functions(char *base_name) {
/* PREPARE THE OVERRIDE FUNCTION NAME IN CASE IT
* IS NEEDED */
- strcat(override, "override_");
- strcat(override, object[noun[0]]->label);
+ strcat(override_, "override_");
+ strcat(override_, object[noun[0]]->label);
/* CREATE THE FUNCTION NAME '+func' */
strcpy(base_function, "+");
@@ -495,9 +495,9 @@ void call_functions(char *base_name) {
/* PREPARE THE OVERRIDE FUNCTION NAME IN CASE IT
* IS NEEDED */
- strcat(override, object[noun[1]]->label);
- strcat(override, "_override_");
- strcat(override, object[noun[0]]->label);
+ strcat(override_, object[noun[1]]->label);
+ strcat(override_, "_override_");
+ strcat(override_, object[noun[0]]->label);
/* CREATE THE FUNCTION NAME '+func' */
strcpy(base_function, "+");
@@ -638,7 +638,7 @@ int build_object_list(struct word_type *scope_word, int noun_number) {
int index, counter;
int resolved_object;
- char *except_word;
+ const char *except_word;
//printf("--- entering build object list starting at %s with a scope_word of %s\n", word[wp], scope_word->word);
/* LOOK AHEAD FOR A FROM CLAUSE AND STORE from_object IF SO */
@@ -835,10 +835,9 @@ void set_them(int noun_number) {
}
void add_all(struct word_type *scope_word, int noun_number) {
- int index, counter;
+ int index;
//printf("--- trying to add all\n");
- counter = 0;
for (index = 1; index <= objects; index++) {
if ((object[index]->MASS < HEAVY) &&
@@ -1744,7 +1743,7 @@ void diagnose() {
TIME->value = FALSE;
}
-int scope(int index, char *expected, int restricted) {
+int scope(int index, const char *expected, int restricted) {
/* THIS FUNCTION DETERMINES IF THE SPECIFIED OBJECT IS IN THE SPECIFIED
* SCOPE - IT RETURNS TRUE IF SO, FALSE IF NOT. */
@@ -1860,7 +1859,7 @@ int find_parent(int index) {
}
}
-int parent_of(int parent, int child, int restricted) {
+int parent_of(int parent_, int child, int restricted) {
/* THIS FUNCTION WILL CLIMB THE OBJECT TREE STARTING AT 'CHILD' UNTIL
* 'PARENT' IS REACHED (RETURN TRUE), OR THE TOP OF THE TREE OR A CLOSED
* OR CONCEALING OBJECT IS REACHED (RETURN FALSE). */
@@ -1871,33 +1870,33 @@ int parent_of(int parent, int child, int restricted) {
int index;
- //printf("--- parent is %s, child is %s\n", object[parent]->label, object[child]->label);
- if (child == parent) {
+ //printf("--- parent_ is %s, child is %s\n", object[parent_]->label, object[child]->label);
+ if (child == parent_) {
return (TRUE);
} else if (!(object[child]->attributes & LOCATION) &&
object[child]->PARENT != NOWHERE) {
/* STORE THE CHILDS PARENT OBJECT */
index = object[child]->PARENT;
- //printf("--- %s is the parent of %s\n", object[index]->label, object[child]->label);
+ //printf("--- %s is the parent_ of %s\n", object[index]->label, object[child]->label);
if (index == child) {
/* THIS CHILD HAS IT'S PARENT SET TO ITSELF */
sprintf(error_buffer, SELF_REFERENCE, executing_function->name, object[index]->label);
log_error(error_buffer, PLUS_STDOUT);
- //printf("--- self parent.\n");
+ //printf("--- self parent_.\n");
return (FALSE);
} else if (!(object[index]->attributes & LOCATION)
&& ((object[index]->attributes & CLOSED && object[index]->attributes & CONTAINER)
|| object[index]->attributes & CONCEALING)) {
/* THE CHILDS PARENT IS CLOSED OR CONCEALING - CANT BE SEEN */
- //printf("--- parent %s is closed\n", object[index]->label);
+ //printf("--- parent_ %s is closed\n", object[index]->label);
return (FALSE);
- } else if (restricted && object[index]->MASS < HEAVY && index != parent) {
+ } else if (restricted && object[index]->MASS < HEAVY && index != parent_) {
//printf("--- scenery object.\n");
return (FALSE);
} else {
- //printf("--- comparing %s with %s\n", object[index]->label, object[parent]->label);
- if (index == parent) {
+ //printf("--- comparing %s with %s\n", object[index]->label, object[parent_]->label);
+ if (index == parent_) {
/* YES, IS PARENT OF CHILD */
return (TRUE);
} else if (object[index]->attributes & LOCATION) {
@@ -1905,7 +1904,7 @@ int parent_of(int parent, int child, int restricted) {
} else {
/* KEEP LOOKING UP THE TREE TILL THE CHILD HAS NO MORE
* PARENTS */
- return (parent_of(parent, index, restricted));
+ return (parent_of(parent_, index, restricted));
}
}
} else {
diff --git a/engines/glk/jacl/prototypes.h b/engines/glk/jacl/prototypes.h
index dabfb9d1f6..66416f198c 100644
--- a/engines/glk/jacl/prototypes.h
+++ b/engines/glk/jacl/prototypes.h
@@ -24,177 +24,177 @@ namespace Glk {
namespace JACL {
#ifdef GLK
-strid_t open_glk_file(uint usage, uint mode, char *filename);
-glui32 glk_get_bin_line_stream(strid_t file_stream, char *buffer, glui32 max_length);
-glui32 parse_utf8(unsigned char *buf, glui32 buflen, glui32 *out, glui32 outlen);
-void convert_to_utf8(glui32 *text, int len);
-glui32 parse_utf8(unsigned char *buf, glui32 buflen, glui32 *out, glui32 outlen);
+extern strid_t open_glk_file(uint usage, uint mode, char *filename);
+extern glui32 glk_get_bin_line_stream(strid_t file_stream, char *buffer, glui32 max_length);
+extern glui32 parse_utf8(unsigned char *buf, glui32 buflen, glui32 *out, glui32 outlen);
+extern void convert_to_utf8(glui32 *text, int len);
+extern glui32 parse_utf8(unsigned char *buf, glui32 buflen, glui32 *out, glui32 outlen);
#else
-void update_parameters();
+extern void update_parameters();
#endif
-int bearing(double x1, double y1, double x2, double y2);
-int distance(double x1, double y1, double x2, double y2);
-int strcondition();
-int and_strcondition();
-int logic_test(int first);
-int str_test(int first);
-int first_available(int list_number);
-int validate(char *string);
-int noun_resolve(struct word_type *scope_word, int finding_from, int noun_number);
-int get_from_object(struct word_type *scope_word, int noun_number);
-int is_direct_child_of_from(int child);
-int is_child_of_from(int child);
-int verify_from_object(int from_object);
-int find_parent(int index);
-int scope(int index, char *expected, int restricted = 0);
-int object_element_resolve(char *textstring);
-int execute(char *funcname);
-int object_resolve(char object_string[]);
-int random_number();
-void log_error(char *message, int console);
-int parent_of(int parent, int child, int restricted);
-int grand_of(int child, int objs_only);
-int check_light(int where);
-int find_route(int fromRoom, int toRoom, int known);
-int exit_function(int return_code);
-int count_resolve(char *textstring);
-void jacl_set_window(winid_t new_window);
-void create_cstring(char *name, char *value);
-void create_string(char *name, char *value);
-void create_integer(char *name, int value);
-void create_cinteger(char *name, int value);
-void scripting();
-void undoing();
-void walking_thru();
-void create_paths(char *full_path);
-int get_key();
-char get_character(char *message);
-int get_yes_or_no();
-void get_string(char *string_buffer);
-int get_number(int insist, int low, int high);
-int save_interaction(char *filename);
-int restore_interaction(char *filename);
-void jacl_encrypt(char *string);
-void jacl_decrypt(char *string);
-void log_message(char *message, int console);
-void set_them(int noun_number);
-void preparse();
-void inspect(int object_num);
-void add_all(struct word_type *scope_word, int noun_number);
-void add_to_list(int noun_number, int resolved_object);
-void call_functions(char *base_name);
-int build_object_list(struct word_type *scope_word, int noun_number);
-long value_of(char *value, int run_time = 0);
-long attribute_resolve(char *attribute);
-long user_attribute_resolve(char *name);
-struct word_type *exact_match(struct word_type *pointer);
-struct word_type *object_match(struct word_type *iterator, int noun_number);
-struct integer_type *integer_resolve(char *name);
-struct integer_type *integer_resolve_indexed(char *name, int index);
-struct function_type *function_resolve(char *name);
-struct string_type *string_resolve(char *name);
-struct string_type *string_resolve_indexed(char *name, int index);
-struct string_type *cstring_resolve(char *name);
-struct string_type *cstring_resolve_indexed(char *name, int index);
-struct cinteger_type *cinteger_resolve(char *name);
-struct cinteger_type *cinteger_resolve_indexed(char *name, int index);
-int array_length_resolve(char *textstring);
-int legal_label_check(char *word, int line, int type);
-char *object_names(int object_index, char *names_buffer);
-char *arg_text_of(char *string);
-char *arg_text_of_word(int wordnumber);
-char *var_text_of_word(int wordnumber);
-char *text_of(char *string);
-char *text_of_word(int wordnumber);
-char *expand_function(char *name);
-int *container_resolve(char *container_name);
-int condition();
-int and_condition();
-void free_from(struct word_type *x);
-void eachturn();
-int jacl_whitespace(char character);
-int get_here();
-char *stripwhite(char *string);
-void command_encapsulate();
-void encapsulate();
-void jacl_truncate();
-void parser();
-void diagnose();
-void look_around();
-char *macro_resolve(char *textstring);
-char *plain_output(int index, int capital);
-char *sub_output(int index, int capital);
-char *obj_output(int index, int capital);
-char *that_output(int index, int capital);
-char *sentence_output(int index, int capital);
-char *isnt_output(int index, bool unused = false);
-char *is_output(int index, bool unused = false);
-char *it_output(int index, bool unused = false);
-char *doesnt_output(int index, bool unused = false);
-char *does_output(int index, bool unused = false);
-char *list_output(int index, int capital);
-char *long_output(int index);
-void terminate(int code);
-void set_arguments(char *function_call);
-void pop_stack();
-void push_stack(int32 file_pointer);
-void pop_proxy();
-void push_proxy();
-void write_text(char *string_buffer);
-void status_line();
-void newline();
-int save_game(frefid_t saveref);
-int restore_game(frefid_t saveref, int warn);
-void write_integer(strid_t stream, int x);
-int read_integer(strid_t stream);
-void write_long(strid_t stream, long x);
-long read_long(strid_t stream);
-void save_game_state();
-void restore_game_state();
-void add_cstring(char *name, char *value);
-void clear_cstring(char *name);
-void add_cinteger(char *name, int value);
-void clear_cinteger(char *name);
-void restart_game();
-void read_gamefile();
-void new_position(double x1, double y1, double bearing, double velocity);
-void build_grammar_table(struct word_type *pointer);
-void unkvalerr(int line, int wordno);
-void totalerrs(int errors);
-void unkatterr(int line, int wordno);
-void unkfunrun(char *name);
-void nofnamerr(int line);
-void nongloberr(int line);
-void unkkeyerr(int line, int wordno);
-void maxatterr(int line, int wordno);
-void unkattrun(int wordno);
-void badptrrun(char *name, int value);
-void badplrrun(int value);
-void badparrun();
-void notintrun();
-void noproprun(int unused = 0);
-void noproperr(int line);
-void noobjerr(int line);
-void unkobjerr(int line, int wordno);
-void unkobjrun(int wordno);
-void unkdirrun(int wordno);
-void unkscorun(char *scope);
-void unkstrrun(char *variable);
-void unkvarrun(char *variable);
-void outofmem();
-void set_defaults();
-void no_it();
-void more(char *message);
-int jpp();
-int process_file(char *sourceFile1, char *sourceFile2);
-char *strip_return(char *string);
-char *object_generator(char *text, int state);
-char *verb_generator(char *text, int state);
-void add_word(char *word);
-void create_language_constants();
-int select_next();
-void jacl_sleep(unsigned int mseconds);
+extern int bearing(double x1, double y1, double x2, double y2);
+extern int distance(double x1, double y1, double x2, double y2);
+extern int strcondition();
+extern int and_strcondition();
+extern int logic_test(int first);
+extern int str_test(int first);
+extern int first_available(int list_number);
+extern int validate(const char *string);
+extern int noun_resolve(struct word_type *scope_word, int finding_from, int noun_number);
+extern int get_from_object(struct word_type *scope_word, int noun_number);
+extern int is_direct_child_of_from(int child);
+extern int is_child_of_from(int child);
+extern int verify_from_object(int from_object);
+extern int find_parent(int index);
+extern int scope(int index, const char *expected, int restricted = 0);
+extern int object_element_resolve(const char *textstring);
+extern int execute(const char *funcname);
+extern int object_resolve(const char *object_string);
+extern int random_number();
+extern void log_error(const char *message, int console);
+extern int parent_of(int parent_, int child, int restricted);
+extern int grand_of(int child, int objs_only);
+extern int check_light(int where);
+extern int find_route(int fromRoom, int toRoom, int known);
+extern int exit_function(int return_code);
+extern int count_resolve(const char *textstring);
+extern void jacl_set_window(winid_t new_window);
+extern void create_cstring(const char *name, const char *value);
+extern void create_string(const char *name, const char *value);
+extern void create_integer(const char *name, int value);
+extern void create_cinteger(const char *name, int value);
+extern void scripting();
+extern void undoing();
+extern void walking_thru();
+extern void create_paths(char *full_path);
+extern int get_key();
+extern char get_character(const char *message);
+extern int get_yes_or_no();
+extern void get_string(char *string_buffer);
+extern int get_number(int insist, int low, int high);
+extern int save_interaction(const char *filename);
+extern int restore_interaction(const char *filename);
+extern void jacl_encrypt(char *string);
+extern void jacl_decrypt(char *string);
+extern void log_message(const char *message, int console);
+extern void set_them(int noun_number);
+extern void preparse();
+extern void inspect(int object_num);
+extern void add_all(struct word_type *scope_word, int noun_number);
+extern void add_to_list(int noun_number, int resolved_object);
+extern void call_functions(const char *base_name);
+extern int build_object_list(struct word_type *scope_word, int noun_number);
+extern long value_of(const char *value, int run_time = 0);
+extern long attribute_resolve(const char *attribute);
+extern long user_attribute_resolve(const char *name);
+extern struct word_type *exact_match(struct word_type *pointer);
+extern struct word_type *object_match(struct word_type *iterator, int noun_number);
+extern struct integer_type *integer_resolve(const char *name);
+extern struct integer_type *integer_resolve_indexed(const char *name, int index);
+extern struct function_type *function_resolve(const char *name);
+extern struct string_type *string_resolve(const char *name);
+extern struct string_type *string_resolve_indexed(const char *name, int index);
+extern struct string_type *cstring_resolve(const char *name);
+extern struct string_type *cstring_resolve_indexed(const char *name, int index);
+extern struct cinteger_type *cinteger_resolve(const char *name);
+extern struct cinteger_type *cinteger_resolve_indexed(const char *name, int index);
+extern int array_length_resolve(const char *textstring);
+extern int legal_label_check(const char *word, int line, int type);
+extern char *object_names(int object_index, char *names_buffer);
+extern const char *arg_text_of(const char *string);
+extern const char *arg_text_of_word(int wordnumber);
+extern const char *var_text_of_word(int wordnumber);
+extern const char *text_of(const char *string);
+extern const char *text_of_word(int wordnumber);
+extern const char *expand_function(const char *name);
+extern int *container_resolve(const char *container_name);
+extern int condition();
+extern int and_condition();
+extern void free_from(struct word_type *x);
+extern void eachturn();
+extern int jacl_whitespace(char character);
+extern int get_here();
+extern char *stripwhite(char *string);
+extern void command_encapsulate();
+extern void encapsulate();
+extern void jacl_truncate();
+extern void parser();
+extern void diagnose();
+extern void look_around();
+extern char *macro_resolve(const char *textstring);
+extern char *plain_output(int index, int capital);
+extern char *sub_output(int index, int capital);
+extern char *obj_output(int index, int capital);
+extern char *that_output(int index, int capital);
+extern char *sentence_output(int index, int capital);
+extern char *isnt_output(int index, bool unused = false);
+extern char *is_output(int index, bool unused = false);
+extern char *it_output(int index, bool unused = false);
+extern char *doesnt_output(int index, bool unused = false);
+extern char *does_output(int index, bool unused = false);
+extern char *list_output(int index, int capital);
+extern char *long_output(int index);
+extern void terminate(int code);
+extern void set_arguments(const char *function_call);
+extern void pop_stack();
+extern void push_stack(int32 file_pointer);
+extern void pop_proxy();
+extern void push_proxy();
+extern void write_text(const char *string_buffer);
+extern void status_line();
+extern void newline();
+extern int save_game(frefid_t saveref);
+extern int restore_game(frefid_t saveref, int warn);
+extern void write_integer(strid_t stream, int x);
+extern int read_integer(strid_t stream);
+extern void write_long(strid_t stream, long x);
+extern long read_long(strid_t stream);
+extern void save_game_state();
+extern void restore_game_state();
+extern void add_cstring(const char *name, const char *value);
+extern void clear_cstring(const char *name);
+extern void add_cinteger(const char *name, int value);
+extern void clear_cinteger(const char *name);
+extern void restart_game();
+extern void read_gamefile();
+extern void new_position(double x1, double y1, double bearing, double velocity);
+extern void build_grammar_table(struct word_type *pointer);
+extern void unkvalerr(int line, int wordno);
+extern void totalerrs(int errors);
+extern void unkatterr(int line, int wordno);
+extern void unkfunrun(const char *name);
+extern void nofnamerr(int line);
+extern void nongloberr(int line);
+extern void unkkeyerr(int line, int wordno);
+extern void maxatterr(int line, int wordno);
+extern void unkattrun(int wordno);
+extern void badptrrun(const char *name, int value);
+extern void badplrrun(int value);
+extern void badparrun();
+extern void notintrun();
+extern void noproprun(int unused = 0);
+extern void noproperr(int line);
+extern void noobjerr(int line);
+extern void unkobjerr(int line, int wordno);
+extern void unkobjrun(int wordno);
+extern void unkdirrun(int wordno);
+extern void unkscorun(const char *scope);
+extern void unkstrrun(const char *variable);
+extern void unkvarrun(const char *variable);
+extern void outofmem();
+extern void set_defaults();
+extern void no_it();
+extern void more(const char *message);
+extern int jpp();
+extern int process_file(const char *sourceFile1, char *sourceFile2);
+extern char *strip_return(char *string);
+extern const char *object_generator(const char *text, int state);
+extern const char *verb_generator(const char *text, int state);
+extern void add_word(const char *word);
+extern void create_language_constants();
+extern int select_next();
+extern void jacl_sleep(unsigned int mseconds);
} // End of namespace JACL
} // End of namespace Glk
diff --git a/engines/glk/jacl/resolvers.cpp b/engines/glk/jacl/resolvers.cpp
index cf42911bfd..6d119de594 100644
--- a/engines/glk/jacl/resolvers.cpp
+++ b/engines/glk/jacl/resolvers.cpp
@@ -67,7 +67,7 @@ extern char user_id[];
extern int noun[];
extern int quoted[];
extern int percented[];
-extern char *word[];
+extern const char *word[];
extern int resolved_attribute;
@@ -83,7 +83,7 @@ extern int value_resolved;
char macro_function[84];
int value_has_been_resolved;
-int *container_resolve(char *container_name) {
+int *container_resolve(const char *container_name) {
container_name = arg_text_of(container_name);
/* IN JACL, A 'CONTAINER' IS ANYTHING THAT CAN STORE AN INTEGER */
@@ -109,8 +109,8 @@ int *container_resolve(char *container_name) {
return ((int *) NULL);
}
-char *var_text_of_word(int wordnumber) {
- char *value;
+const char *var_text_of_word(int wordnumber) {
+ const char *value;
if (percented[wordnumber] == FALSE) {
return (word[wordnumber]);
@@ -126,8 +126,8 @@ char *var_text_of_word(int wordnumber) {
}
}
-char *arg_text_of_word(int wordnumber) {
- char *value;
+const char *arg_text_of_word(int wordnumber) {
+ const char *value;
if (quoted[wordnumber] == 1) {
return (word[wordnumber]);
@@ -143,8 +143,8 @@ char *arg_text_of_word(int wordnumber) {
}
}
-char *text_of_word(int wordnumber) {
- char *value;
+const char *text_of_word(int wordnumber) {
+ const char *value;
if (quoted[wordnumber] == 1) {
return (word[wordnumber]);
@@ -160,7 +160,7 @@ char *text_of_word(int wordnumber) {
}
}
-char *text_of(char *string) {
+const char *text_of(const char *string) {
struct integer_type *resolved_integer;
struct cinteger_type *resolved_cinteger;
struct string_type *resolved_string;
@@ -221,7 +221,7 @@ char *text_of(char *string) {
}
}
-char *arg_text_of(char *string) {
+const char *arg_text_of(const char *string) {
struct string_type *resolved_string;
struct string_type *resolved_cstring;
char *macro_text;
@@ -242,7 +242,7 @@ char *arg_text_of(char *string) {
}
}
-int validate(char *string) {
+int validate(const char *string) {
int index,
count;
@@ -265,7 +265,7 @@ int validate(char *string) {
return (TRUE);
}
-long value_of(char *value, int run_time) {
+long value_of(const char *value, int run_time) {
long compare;
value_resolved = TRUE;
@@ -347,7 +347,7 @@ long value_of(char *value, int run_time) {
}
}
-struct integer_type *integer_resolve(char *name) {
+struct integer_type *integer_resolve(const char *name) {
int index,
iterator,
counter;
@@ -408,7 +408,7 @@ struct integer_type *integer_resolve(char *name) {
}
}
-struct integer_type *integer_resolve_indexed(char *name, int index) {
+struct integer_type *integer_resolve_indexed(const char *name, int index) {
struct integer_type *pointer = integer_table;
if (pointer == NULL)
@@ -432,7 +432,7 @@ struct integer_type *integer_resolve_indexed(char *name, int index) {
return (NULL);
}
-struct cinteger_type *cinteger_resolve(char *name) {
+struct cinteger_type *cinteger_resolve(const char *name) {
int index,
iterator,
counter;
@@ -493,7 +493,7 @@ struct cinteger_type *cinteger_resolve(char *name) {
}
}
-struct cinteger_type *cinteger_resolve_indexed(char *name, int index) {
+struct cinteger_type *cinteger_resolve_indexed(const char *name, int index) {
struct cinteger_type *pointer = cinteger_table;
if (pointer == NULL)
@@ -517,7 +517,7 @@ struct cinteger_type *cinteger_resolve_indexed(char *name, int index) {
return (NULL);
}
-struct string_type *string_resolve(char *name) {
+struct string_type *string_resolve(const char *name) {
int index,
iterator,
counter;
@@ -569,7 +569,7 @@ struct string_type *string_resolve(char *name) {
return (NULL);
}
-struct string_type *string_resolve_indexed(char *name, int index) {
+struct string_type *string_resolve_indexed(const char *name, int index) {
struct string_type *pointer = string_table;
if (pointer == NULL)
@@ -593,7 +593,7 @@ struct string_type *string_resolve_indexed(char *name, int index) {
return (NULL);
}
-struct string_type *cstring_resolve(char *name) {
+struct string_type *cstring_resolve(const char *name) {
int index,
iterator,
counter;
@@ -645,7 +645,7 @@ struct string_type *cstring_resolve(char *name) {
return (NULL);
}
-struct string_type *cstring_resolve_indexed(char *name, int index) {
+struct string_type *cstring_resolve_indexed(const char *name, int index) {
struct string_type *pointer = cstring_table;
if (pointer == NULL)
@@ -669,8 +669,8 @@ struct string_type *cstring_resolve_indexed(char *name, int index) {
return (NULL);
}
-struct function_type *function_resolve(char *name) {
- char *full_name;
+struct function_type *function_resolve(const char *name) {
+ const char *full_name;
char core_name[84];
int index;
@@ -691,9 +691,8 @@ struct function_type *function_resolve(char *name) {
}
core_name[index] = 0;
- /* GET A POINTER TO A STRING THAT REPRESENTS THE EXPANDED NAME OF
- * THE FUNCTION */
- full_name = (char *) expand_function(core_name);
+ /* GET A POINTER TO A STRING THAT REPRESENTS THE EXPANDED NAME OF THE FUNCTION */
+ full_name = (const char *)expand_function(core_name);
/* LOOP THROUGH ALL THE FUNCTIONS LOOKING FOR A FUNCTION THAT
* HAS THIS EXPANDED FULL NAME */
@@ -708,7 +707,7 @@ struct function_type *function_resolve(char *name) {
return (NULL);
}
-char *expand_function(char *name) {
+const char *expand_function(const char *name) {
/* THIS FUNCTION TAKES A SCOPE FUNCTION CALL SUCH AS noun1.function
* AND REOLVE THE ACTUAL FUNCTION NAME SUCH AS function_key */
int index,
@@ -739,7 +738,7 @@ char *expand_function(char *name) {
index = value_of(expression, TRUE);
if (index < 1 || index > objects) {
- return ((char *) name);
+ return ((const char *) name);
}
if (cinteger_resolve(&expression[delimiter]) != NULL ||
@@ -754,10 +753,10 @@ char *expand_function(char *name) {
strcat(function_name, "_");
strcat(function_name, object[index]->label);
- return ((char *) function_name);
+ return ((const char *) function_name);
}
-char *macro_resolve(char *testString) {
+char *macro_resolve(const char *testString) {
int index,
counter;
int delimiter = 0;
@@ -988,7 +987,7 @@ char *macro_resolve(char *testString) {
return (NULL);
}
-int count_resolve(char *testString) {
+int count_resolve(const char *testString) {
struct function_type *resolved_function = NULL;
if (*(testString + 1) == 0) {
@@ -1002,9 +1001,9 @@ int count_resolve(char *testString) {
}
}
-int array_length_resolve(char *testString) {
+int array_length_resolve(const char *testString) {
int counter = 0;
- char *array_name = &testString[1];
+ const char *array_name = &testString[1];
struct integer_type *integer_pointer = integer_table;
struct cinteger_type *cinteger_pointer = cinteger_table;
@@ -1071,7 +1070,7 @@ int array_length_resolve(char *testString) {
return (0);
}
-int object_element_resolve(char *testString) {
+int object_element_resolve(const char *testString) {
int index,
iterator,
counter;
@@ -1161,7 +1160,7 @@ int object_element_resolve(char *testString) {
}
}
-int object_resolve(char object_string[]) {
+int object_resolve(const char *object_string) {
int index;
if (!strcmp(object_string, "noun1"))
@@ -1195,7 +1194,7 @@ int object_resolve(char object_string[]) {
return (-1);
}
-long attribute_resolve(char *attribute) {
+long attribute_resolve(const char *attribute) {
long bit_mask;
if (!strcmp(attribute, "VISITED"))
@@ -1299,7 +1298,7 @@ long attribute_resolve(char *attribute) {
return (0);
}
-long user_attribute_resolve(char *name) {
+long user_attribute_resolve(const char *name) {
struct attribute_type *pointer = attribute_table;
if (pointer == NULL)
diff --git a/engines/glk/jacl/types.h b/engines/glk/jacl/types.h
index 3cfb2afde0..a2290e094a 100644
--- a/engines/glk/jacl/types.h
+++ b/engines/glk/jacl/types.h
@@ -57,10 +57,10 @@ struct stack_type {
char str_arguments[MAX_WORDS][256];
char text_buffer[1024];
char called_name[1024];
- char override[84];
+ char _override[84];
char scope_criterion[24];
char default_function[84];
- char *word[MAX_WORDS];
+ const char *word[MAX_WORDS];
int quoted[MAX_WORDS];
int wp;
int argcount;
diff --git a/engines/glk/jacl/utils.cpp b/engines/glk/jacl/utils.cpp
index 700d64c436..f9513223fa 100644
--- a/engines/glk/jacl/utils.cpp
+++ b/engines/glk/jacl/utils.cpp
@@ -99,7 +99,7 @@ char *strip_return(char *string) {
}
}
- return (char *) string;
+ return string;
}
int random_number() {
@@ -107,15 +107,15 @@ int random_number() {
}
void create_paths(char *full_path) {
- int index;
- char *last_slash;
+ int index;
+ char *last_slash;
/* SAVE A COPY OF THE SUPPLIED GAMEFILE NAME */
strcpy(game_file, full_path);
/* FIND THE LAST SLASH IN THE SPECIFIED GAME PATH AND REMOVE THE GAME
* FILE SUFFIX IF ANY EXISTS */
- last_slash = (char *) NULL;
+ last_slash = (char *)NULL;
/* GET A POINTER TO THE LAST SLASH IN THE FULL PATH */
last_slash = strrchr(full_path, DIR_SEPARATOR);
@@ -132,7 +132,7 @@ void create_paths(char *full_path) {
}
/* STORE THE GAME PATH AND THE GAME FILENAME PARTS SEPARATELY */
- if (last_slash == (char *) NULL) {
+ if (last_slash == (const char *) NULL) {
/* GAME MUST BE IN CURRENT DIRECTORY SO THERE WILL BE NO GAME PATH */
strcpy(prefix, full_path);
game_path[0] = 0;
@@ -182,7 +182,7 @@ void create_paths(char *full_path) {
}
}
-int jacl_whitespace(int character) {
+int jacl_whitespace(char character) {
/* CHECK IF A CHARACTER IS CONSIDERED WHITE SPACE IN THE JACL LANGUAGE */
switch (character) {
case ':':