--- freem/src/iniconf.c 2025/04/10 01:24:38 1.6 +++ freem/src/iniconf.c 2025/04/15 16:49:36 1.10 @@ -1,5 +1,5 @@ /* - * $Id: iniconf.c,v 1.6 2025/04/10 01:24:38 snw Exp $ + * $Id: iniconf.c,v 1.10 2025/04/15 16:49:36 snw Exp $ * Function implementations for reading * FreeM configuration files * @@ -25,6 +25,18 @@ * along with FreeM. If not, see . * * $Log: iniconf.c,v $ + * 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 + * + * Revision 1.7 2025/04/10 15:27:39 snw + * Detect Devuan distribution and fix OS/2 problem with iniconf.c + * * Revision 1.6 2025/04/10 01:24:38 snw * Remove C++ style comments * @@ -56,6 +68,10 @@ #include #include "mpsdef.h" +#if defined(__OS2__) +# include +#endif + extern char config_file[4096]; #if !defined(PATH_MAX) && defined(_SCO_DS) @@ -79,8 +95,6 @@ extern char config_file[4096]; #endif -/* ini_keyvalue *ini_head; */ - int get_conf(char *section, char *key, char *value) { char *etcfile; @@ -220,14 +234,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, "[]"); fp = fopen(file, "r"); - while(fgets(line, CONF_BUFSIZE, fp) != NULL) { + while(fgets(line, CONF_BUFSIZE - 1, fp) != NULL) { ++lnum; if(line[0] == '[') { @@ -310,7 +324,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; @@ -341,7 +355,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; @@ -374,7 +388,7 @@ int modify_profile_string(char *file, ch #if !defined(__OS2__) cp (file, output_filename); #else - DosCopy (output_filename, file); + DosCopy (output_filename, file, 1); #endif return changed;