diff arogue5/options.c @ 239:837044d2c362

Merge the GCC5 and build fix branches. This fixes all warnings produced by GCC 5, except the ones related to system functions. Those could be fixed by including the proper headers, but it would be better to replace the system-dependent code with functions from mdport.c.
author John "Elwin" Edwards
date Fri, 11 Mar 2016 19:47:52 -0500
parents 50b89f165a34
children e940e6c00751
line wrap: on
line diff
--- a/arogue5/options.c	Tue Mar 08 19:45:41 2016 -0500
+++ b/arogue5/options.c	Fri Mar 11 19:47:52 2016 -0500
@@ -28,8 +28,8 @@
 struct optstruct {
     char	*o_name;	/* option name */
     char	*o_prompt;	/* prompt for interactive entry */
-    int 	*o_opt;		/* pointer to thing to set */
-    int		(*o_putfunc)();	/* function to print value */
+    void 	*o_opt;		/* pointer to thing to set */
+    void	(*o_putfunc)();	/* function to print value */
     int		(*o_getfunc)();	/* function to get value interactively */
 };
 
@@ -39,38 +39,38 @@
 int get_restr(char *optstr, WINDOW *win);
 int get_score(char *optstr, WINDOW *win);
 void put_abil(int *ability, WINDOW *win);
-void get_abil(int *abil, WINDOW *win);
+int get_abil(int *abil, WINDOW *win);
 void put_quest(int *quest, WINDOW *win);
-void get_quest(int *quest, WINDOW *win);
+int get_quest(int *quest, WINDOW *win);
 void put_bool(bool *b, WINDOW *win);
 int get_bool(bool *bp, WINDOW *win);
 void put_str(char *str, WINDOW *win);
 
 OPTION	optlist[] = {
     {"terse",	 "Terse output: ",
-		 (int *) &terse,	put_bool,	get_bool	},
+		 (void *) &terse,	put_bool,	get_bool	},
     {"flush",	 "Flush typeahead during battle: ",
-		 (int *) &fight_flush,	put_bool,	get_bool	},
+		 (void *) &fight_flush,	put_bool,	get_bool	},
     {"jump",	 "Show position only at end of run: ",
-		 (int *) &jump,		put_bool,	get_bool	},
+		 (void *) &jump,	put_bool,	get_bool	},
     {"step",	"Do inventories one line at a time: ",
-		(int *) &slow_invent,	put_bool,	get_bool	},
+		(void *) &slow_invent,	put_bool,	get_bool	},
     {"askme",	"Ask me about unidentified things: ",
-		(int *) &askme,		put_bool,	get_bool	},
+		(void *) &askme,	put_bool,	get_bool	},
     {"pickup", "Pick things up automatically: ",
-		(int *) &auto_pickup,	put_bool,	get_bool	},
+		(void *) &auto_pickup,	put_bool,	get_bool	},
     {"name",	 "Name: ",
-		(int *) whoami,		put_str,	get_restr	},
+		(void *) whoami,	put_str,	get_restr	},
     {"fruit",	 "Fruit: ",
-		(int *) fruit,		put_str,	get_str		},
+		(void *) fruit,		put_str,	get_str		},
     {"file",	 "Save file: ",
-		(int *) file_name,	put_str,	get_restr	},
+		(void *) file_name,	put_str,	get_restr	},
     {"score",	 "Score file: ",
-		(int *) score_file,	put_str,	get_score	},
+		(void *) score_file,	put_str,	get_score	},
     {"class",	"Character class: ",
-		(int *)&char_type,	put_abil,	get_abil	},
+		(void *)&char_type,	put_abil,	get_abil	},
     {"quest",	"Quest item: ",
-		(int *) &quest_item,	put_quest,	get_quest	}
+		(void *) &quest_item,	put_quest,	get_quest	}
 };
 
 /* For fields that would be restricted if use_savedir is set. */
@@ -111,27 +111,27 @@
 /*
  * The ability field is read-only
  */
-void
+int
 get_abil(int *abil, WINDOW *win)
 {
     register int oy, ox;
 
     getyx(win, oy, ox);
     put_abil(abil, win);
-    get_ro(win, oy, ox);
+    return get_ro(win, oy, ox);
 }
 
 /*
  * The quest field is read-only
  */
-void
+int
 get_quest(int *quest, WINDOW *win)
 {
     register int oy, ox;
 
     getyx(win, oy, ox);
     waddstr(win, rel_magic[*quest].mi_name);
-    get_ro(win, oy, ox);
+    return get_ro(win, oy, ox);
 }
 
 /*
@@ -416,18 +416,19 @@
 		    if (op->o_putfunc != put_abil) 
 			strcpy((char *)op->o_opt, value);
 
-		    else if (*op->o_opt == -1) { /* Only init ability once */
+		    else if (*(int *)op->o_opt == -1) {
+			/* Only init ability once */
 			register int len = strlen(value);
 
 			if (isupper(value[0])) value[0] = tolower(value[0]);
 			if (EQSTR(value, "fighter", len))
-				*op->o_opt = C_FIGHTER;
+				*(int *)op->o_opt = C_FIGHTER;
 			else if (EQSTR(value, "magic", min(len, 5)))
-				*op->o_opt = C_MAGICIAN;
+				*(int *)op->o_opt = C_MAGICIAN;
 			else if (EQSTR(value, "cleric", len))
-				*op->o_opt = C_CLERIC;
+				*(int *)op->o_opt = C_CLERIC;
 			else if (EQSTR(value, "thief", len))
-				*op->o_opt = C_THIEF;
+				*(int *)op->o_opt = C_THIEF;
 		    }
 		}
 		break;