--- freem/src/iniconf.c 2025/04/02 19:59:38 1.4
+++ freem/src/iniconf.c 2025/04/15 18:19:40 1.11
@@ -1,5 +1,5 @@
/*
- * $Id: iniconf.c,v 1.4 2025/04/02 19:59:38 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,27 @@
* 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
+ *
+ * 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
+ *
+ * Revision 1.5 2025/04/09 19:52:02 snw
+ * Eliminate as many warnings as possible while building with -Wall
+ *
* Revision 1.4 2025/04/02 19:59:38 snw
* Automatically modify env.conf from fmadm reconfigure
*
@@ -50,6 +71,10 @@
#include
#include "mpsdef.h"
+#if defined(__OS2__)
+# include
+#endif
+
extern char config_file[4096];
#if !defined(PATH_MAX) && defined(_SCO_DS)
@@ -68,7 +93,10 @@ extern char config_file[4096];
# include
#endif
-ini_keyvalue *ini_head;
+#if !defined(PATH_MAX)
+# define PATH_MAX 4096
+#endif
+
int get_conf(char *section, char *key, char *value)
{
@@ -194,6 +222,8 @@ int read_profile_string(char *file, char
char *cursec;
char *line;
int lnum = 0;
+
+ curkey = (char *) NULL;
fullsec = (char *) malloc(CONF_BUFSIZE);
NULLPTRCHK(fullsec,"read_profile_string");
@@ -207,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] == '[') {
@@ -278,11 +308,6 @@ int file_exists(char *filename)
}
}
-void write_profile_string(char *file, char *section, char *key, char *value)
-{
- ini_keyvalue *ini_head;
-}
-
void parse_section_header(char *input, char *buf, size_t buflen)
{
strncpy (buf, &(input[1]), buflen);
@@ -294,17 +319,15 @@ int modify_profile_string(char *file, ch
FILE *input_fp;
FILE *output_fp;
char output_filename[4096];
- char input_line[255];
- char output_line[255];
+ char input_line[255];
char current_section[255];
char *savptr;
char *current_key;
- char *current_value;
char tmpsi[255];
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;
@@ -332,11 +355,10 @@ int modify_profile_string(char *file, ch
strcpy (tmpsi, input_line);
savptr = tmpsi;
current_key = strtok_r (tmpsi, "=", &savptr);
- current_value = strtok_r (NULL, "=", &savptr);
/* 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;
@@ -369,112 +391,10 @@ 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;
}
-ini_keyvalue *ini_insert(ini_section *s, char *section, char *key, char *value)
-{
- ini_section *t;
-
- for (t = s; t != NULL; t = t->next) {
-
- if (strcmp (t->name, section) == 0) {
-
- /* this section already exists. update. */
- return ini_kv_insert (s, key, value);
-
- }
-
- }
-
- /* section does not exist. insert. */
- t = (ini_section *) malloc (sizeof (ini_section));
- NULLPTRCHK(t,"ini_insert");
-
- t->name = (char *) malloc ((strlen (section) + 1) * sizeof (char));
- NULLPTRCHK(t->name,"ini_insert");
-
- strcpy (t->name, section);
-
- t->next = s;
- s = t;
-
- return ini_kv_insert (s, key, value);
-
-}
-
-ini_keyvalue *ini_kv_insert(ini_section *s, char *key, char *value)
-{
- ini_keyvalue *t;
-
- for (t = s->head; t != NULL; t = t->next) {
-
- if (strcmp (t->key, key) == 0) {
-
- /* this is an update */
- free (t->value);
- t->value = (char *) malloc ((strlen (value) + 1) * sizeof (char));
- NULLPTRCHK(t->value,"ini_kv_insert");
-
- strcpy (t->value, value);
-
- return t;
-
- }
-
- }
-
- /* this is an insert */
- t = (ini_keyvalue *) malloc (sizeof (ini_keyvalue));
- NULLPTRCHK(t,"ini_kv_insert");
-
- t->key = (char *) malloc ((strlen (key) + 1) * sizeof (char));
- NULLPTRCHK(t->key,"ini_kv_insert");
-
- t->value = (char *) malloc ((strlen (value) + 1) * sizeof (char));
- NULLPTRCHK(t->value,"ini_kv_insert");
-
- strcpy (t->key, key);
- strcpy (t->value, value);
-
- t->next = s->head;
- s->head = t;
-
- return t;
-
-}
-
-void ini_section_delete(ini_section *head, char *name)
-{
- ini_section *t = head;
- ini_section *p = NULL;
-
- if ((t != (ini_section *) NULL) && (strcmp (t->name, name) == 0)) {
- head = t->next;
-
- free (t->name);
- free (t);
- return;
- }
-
- while ((t != NULL) && (strcmp (t->name, name) != 0)) {
- p = t;
- t = t->next;
- }
-
- if (t == NULL) return;
-
- free (t->name);
- free (t);
-
- return;
-}
-
-void ini_key_delete(ini_section *head, char *key)
-{
-
-}