home · contact · privacy
Moved textfile_sizes() to readwrite library.
[plomrogue] / src / wincontrol.c
index d1a03042f71ca48d9c6e72b5b19979f6199a2bd7..aeae7b229c27a36766cd5fd3ccf49d8a41b81535 100644 (file)
@@ -12,7 +12,7 @@
                       */
 #include "yx_uint16.h" /* for yx_uint16 struct */
 #include "main.h" /* for Wins struct */
-#include "misc.h" /* for textfile_sizes() */
+#include "readwrite.h" /* for textfile_sizes() */
 #include "rexit.h" /* for exit_err() */
 #include "main.h" /* for World, Wins structs */
 #include "draw_wins.h" /* for draw_keys_win(), draw_info_win(), draw_log_win(),
@@ -93,31 +93,28 @@ static void init_winconf_from_file(struct World * world, char id)
     FILE * file = fopen(path, "r");
     exit_err(NULL == file, world, err_o);
     free(path);
-
     uint16_t linemax;
     exit_err(textfile_sizes(file, &linemax, NULL), world, err_s);
-    char * line = malloc(linemax);
-    exit_err(NULL == line, world, err_m);
+    char line[linemax + 1];
 
     struct WinConf * winconf = get_winconf_by_id(world, id);
-    exit_err(NULL == fgets(line, linemax, file), world, err_g);
+    exit_err(NULL == fgets(line, linemax + 1, file), world, err_g);
     exit_err(NULL == (winconf->title = malloc(strlen(line))), world, err_m);
     memcpy(winconf->title, line, strlen(line) - 1); /* Eliminate newline char */
     winconf->title[strlen(line) - 1] = '\0';        /* char at end of string. */
-    exit_err(NULL == fgets(line, linemax, file), world, err_g);
+    exit_err(NULL == fgets(line, linemax + 1, file), world, err_g);
     winconf->height = atoi(line);
     if (0 >= winconf->height)
     {
         winconf->height_type = 1;
     }
-    exit_err(NULL == fgets(line, linemax, file), world, err_g);
+    exit_err(NULL == fgets(line, linemax + 1, file), world, err_g);
     winconf->width = atoi(line);
     if (0 >= winconf->width)
     {
         winconf->width_type = 1;
     }
 
-    free(line);
     exit_err(fclose(file), world, err_c);
 }
 
@@ -137,7 +134,6 @@ static void init_win_from_winconf(struct World * world, char id)
 extern void save_win_config(struct World * world, char id)
 {
     char * err_o = "Trouble in save_win_config() with fopen().";
-    char * err_m = "Trouble in save_win_config() with malloc().";
     char * err_c = "Trouble in save_win_config() with fclose().";
     char * err_u = "Trouble in save_win_config() with unlink().";
     char * err_r = "Trouble in save_win_config() with rename().";
@@ -152,8 +148,7 @@ extern void save_win_config(struct World * world, char id)
     {
         size = 7;
     }
-    char * line = malloc(size);
-    exit_err(NULL == line, world, err_m);
+    char line[size];
     sprintf(line, "%s\n", wc->title);
     fwrite(line, sizeof(char), strlen(line), file);
     sprintf(line, "%d\n", wc->height);
@@ -312,16 +307,15 @@ extern void sorted_wintoggle(struct World * world)
     char * path = "config/windows/toggle_order";
     FILE * file = fopen(path, "r");
     exit_err(NULL == file, world, err_o);
-
     uint16_t linemax;
     exit_err(textfile_sizes(file, &linemax, NULL), world, err_s);
+    char win_order[linemax + 1];
 
-    char win_order[linemax];
-    exit_err(NULL == fgets(win_order, linemax, file), world, err_g);
+    exit_err(NULL == fgets(win_order, linemax + 1, file), world, err_g);
     exit_err(fclose(file), world, err_c);
 
     uint8_t i = 0;
-    for (; i < linemax - 2; i++)
+    for (; i < linemax - 1; i++)
     {
         toggle_window(world->wmeta, get_win_by_id(world, win_order[i]));
     }
@@ -352,7 +346,6 @@ extern void save_win_configs(struct World * world)
     save_win_config(world, 'm');
 
     char * err_o = "Trouble in save_win_configs() with fopen().";
-    char * err_m = "Trouble in save_win_configs() with calloc().";
     char * err_c = "Trouble in save_win_configs() with fclose().";
     char * err_u = "Trouble in save_win_configs() with unlink().";
     char * err_r = "Trouble in save_win_configs() with rename().";
@@ -362,8 +355,7 @@ extern void save_win_configs(struct World * world)
     FILE * file = fopen(path_tmp, "w");
     exit_err(NULL == file, world, err_o);
 
-    char * line = calloc(6, sizeof(char));
-    exit_err(NULL == line, world, err_m);
+    char line[6];
     struct Win * w_p = world->wmeta->_chain_start;
     uint8_t i = 0;
     while (0 != w_p)