home · contact · privacy
Load last world state from save file, not from re-stepping record file.
[plomrogue] / src / client / interface_conf.c
index 1a4a4ce04c26cbcba68196d97948772af37c9c40..e3bfd022a5db6d3c61c1757d1819cb894935849a 100644 (file)
@@ -9,7 +9,7 @@
 #include <stdio.h> /* FILE, sprintf() */
 #include <string.h> /* strchr(), strcmp(), strdup(), strlen() */
 #include <unistd.h> /* optarg, getopt() */
-#include "../common/parse_file.h" /* EDIT_STARTED, parse_file(), parse_val(),
+#include "../common/parse_file.h" /* EDIT_STARTED, parse_file(),parse_flagval(),
                                    * token_from_line(), parsetest_singlechar(),
                                    * parse_and_reduce_to_readyflag(),
                                    * parsetest_defcontext(),parse_unknown_arg(),
@@ -102,11 +102,11 @@ static uint8_t start_kbd(char * token0, char * token1, char * str_kbd,
 /* Helper to tokens_into_entries(), sets specific entry member data. "token0"
  * and the state of flags determine what entry member to edit; "win" and "kbdb"
  * are entries to write "token1" data into (as is the global "tmp_active"). If
- * "token0" is "KEY", a keybinding is defined and "token2" is read / must not be
- * NULL. In that case, the line read is checked against having a 4th token.
+ * "token0" is "str_key", a keybinding is defined and "token2" is read/must not
+ * be NULL. In that case, the line read is checked against having a 4th token.
  */
 static uint8_t set_members(char * token0, char * token1, uint8_t * win_flags,
-                           uint8_t * ord_flags, uint8_t kbd_flags,
+                           uint8_t * ord_flags,uint8_t kbd_flags,char * str_key,
                            struct Win * win, struct KeyBindingDB * kbdb);
 
 /* Add keybinding defined in "token1" as keycode and "token2" as command to
@@ -143,7 +143,7 @@ static void write_def(FILE * file, char * prefix, uint8_t quotes, char * val,
                       char type)
 {
     char * f_name = "write_def()";
-    char * val_str;
+    char * val_str = NULL;
     int test_val_str = 1;
     if      ('s' == type)
     {
@@ -182,6 +182,7 @@ static void tokens_into_entries(char * token0, char * token1)
     char * str_win = "WINDOW";
     char * str_ord = "WIN_ORDER";
     char * str_kbd = "KEYBINDINGS";
+    char * str_key = "KEY";
     static uint8_t win_flags = READY_WIN;
     static uint8_t ord_flags = READY_ORD;
     static uint8_t kbd_flags = READY_KBD;
@@ -197,7 +198,7 @@ static void tokens_into_entries(char * token0, char * token1)
     }
     if (token0)
     {
-        if (strcmp(token0, "KEY"))
+        if (strcmp(token0, str_key))
         {
             parsetest_too_many_values();
         }
@@ -205,7 +206,7 @@ static void tokens_into_entries(char * token0, char * token1)
               || start_ord(token0, token1, str_ord, &ord_flags)
               || start_kbd(token0, token1, str_kbd, &kbd_flags, &kbdb)
               || set_members(token0, token1, &win_flags, &ord_flags, kbd_flags,
-                             win, kbdb)))
+                             str_key, win, kbdb)))
         {
            parse_unknown_arg();
         }
@@ -307,29 +308,29 @@ static uint8_t start_kbd(char * token0, char * token1, char * str_kbd,
 
 
 static uint8_t set_members(char * token0, char * token1, uint8_t * win_flags,
-                           uint8_t * ord_flags, uint8_t kbd_flags,
+                           uint8_t * ord_flags,uint8_t kbd_flags,char * str_key,
                            struct Win * win, struct KeyBindingDB * kbdb)
 {
-    if (   parse_val(token0, token1, "NAME", win_flags,
-                     NAME_SET, 's', (char *) &win->title)
-        || parse_val(token0, token1, "WIDTH", win_flags,
-                     WIDTH_SET, 'i', (char *) &win->target_width)
-        || parse_val(token0, token1, "HEIGHT", win_flags,
-                     HEIGHT_SET, 'i', (char *) &win->target_height));
-    else if (parse_val(token0, token1, "BREAK", win_flags,
-                       BREAK_SET, '8', (char *) &win->linebreak))
+    if (   parse_flagval(token0, token1, "NAME", win_flags,
+                         NAME_SET, 's', (char *) &win->title)
+        || parse_flagval(token0, token1, "WIDTH", win_flags,
+                         WIDTH_SET, 'i', (char *) &win->target_width)
+        || parse_flagval(token0, token1, "HEIGHT", win_flags,
+                         HEIGHT_SET, 'i', (char *) &win->target_height));
+    else if (parse_flagval(token0, token1, "BREAK", win_flags,
+                           BREAK_SET, '8', (char *) &win->linebreak))
     {
         err_line(2 < win->linebreak, "Value must be 0, 1 or 2.");
     }
-    else if (parse_val(token0, token1, "WIN_FOCUS", ord_flags,
-                       FOCUS_SET, 'c', &tmp_active))
+    else if (parse_flagval(token0, token1, "WIN_FOCUS", ord_flags,
+                           FOCUS_SET, 'c', &tmp_active))
     {
         char * err_null = "Value not empty as it should be.";
         char * err_outside = "ID not found in WIN_ORDER ID series.";
         err_line(!strlen(tmp_order) && tmp_active, err_null);
         err_line(!strchr(tmp_order, tmp_active), err_outside);
     }
-    else if (!strcmp(token0, "KEY"))
+    else if (!strcmp(token0, str_key))
     {
         if (*win_flags & EDIT_STARTED)
         {