- /* Assign WinConf id to filename path, error message context, winconf->id.*/
- char * tmp = "init_winconf_from_file() on window id '_'";
- char * context = try_malloc(strlen(tmp) + 1, "init_winconf_from_file()");
- memcpy(context, tmp, strlen(tmp) + 1);
- context[strlen(tmp) - 2] = id;
- char * path = string_prefixed_id("confclient/windows/Win_", id);
- winconf->id = id;
-
- /* Prepare reading in file line by line into "line" array. */
- FILE * file = try_fopen(path, "r", context);
- free(path);
- uint32_t linemax = textfile_sizes(file, NULL);
- char line[linemax + 1];
-
- /* Read/determine winconf->title, ->draw, ->height(_type),->width(_type). */
- try_fgets(line, linemax + 1, file, context);
- winconf->title = try_malloc(strlen(line), context);
- memcpy(winconf->title, line, strlen(line) - 1); /* Eliminate newline char */
- winconf->title[strlen(line) - 1] = '\0'; /* char at end of string. */
- try_fgets(line, linemax + 1, file, context);
- winconf->draw = line[0];
- try_fgets(line, linemax + 1, file, context);
- winconf->height = atoi(line);
- winconf->height_type = (0 >= winconf->height);
- try_fgets(line, linemax + 1, file, context);
- winconf->width = atoi(line);
- winconf->width_type = (0 >= winconf->width);
-
- /* Read in window-specific keybindings (winconf->kb). */
- char command[linemax + 1];
- char * cmdptr;
- struct KeyBinding ** loc_last_ptr = &winconf->kb.kbs;
- * loc_last_ptr = 0;
- while (try_fgets(command, linemax + 1, file, context))