--- freem/src/iniconf.c 2025/04/10 15:31:25 1.8 +++ freem/src/iniconf.c 2025/04/15 18:19:40 1.11 @@ -1,5 +1,5 @@ /* - * $Id: iniconf.c,v 1.8 2025/04/10 15:31:25 snw Exp $ + * $Id: iniconf.c,v 1.11 2025/04/15 18:19:40 snw Exp $ * Function implementations for reading * FreeM configuration files * @@ -25,6 +25,15 @@ * along with FreeM. If not, see . * * $Log: iniconf.c,v $ + * Revision 1.11 2025/04/15 18:19:40 snw + * Further attempts to fix FreeBSD + * + * Revision 1.10 2025/04/15 16:49:36 snw + * Make use of logprintf throughout codebase + * + * Revision 1.9 2025/04/13 04:22:43 snw + * Fix snprintf calls + * * Revision 1.8 2025/04/10 15:31:25 snw * Attempt to fix DosCopy calls for OS/2 * @@ -89,8 +98,6 @@ extern char config_file[4096]; #endif -/* ini_keyvalue *ini_head; */ - int get_conf(char *section, char *key, char *value) { char *etcfile; @@ -230,14 +237,14 @@ int read_profile_string(char *file, char - snprintf(fullsec, CONF_BUFSIZE, "[%s]%c", section, '\0'); + snprintf(fullsec, CONF_BUFSIZE - 1, "[%s]%c", section, '\0'); strcpy(cursec, "[]"); + if ((fp = fopen(file, "r")) == NULL) { + return FALSE; + } - - fp = fopen(file, "r"); - - while(fgets(line, CONF_BUFSIZE, fp) != NULL) { + while(fgets(line, CONF_BUFSIZE - 1, fp) != NULL) { ++lnum; if(line[0] == '[') { @@ -320,7 +327,7 @@ int modify_profile_string(char *file, ch char tmps[255]; int changed = FALSE; - snprintf (output_filename, 4095, "%s.tmp", file); + snprintf (output_filename, sizeof (output_filename) - 1, "%s.tmp", file); if ((input_fp = fopen (file, "r")) == NULL) { return FALSE; @@ -351,7 +358,7 @@ int modify_profile_string(char *file, ch /* is this key the one we're changing? */ if (strcmp (key, current_key) == 0) { /* yes; modify it and write out*/ - snprintf (tmps, 255, "%s=%s\n", current_key, value); + snprintf (tmps, sizeof (tmps) - 1, "%s=%s\n", current_key, value); fputs (tmps, output_fp); changed = TRUE;