Diff for /freem/src/iniconf.c between versions 1.4 and 1.10

version 1.4, 2025/04/02 19:59:38 version 1.10, 2025/04/15 16:49:36
Line 25 Line 25
  *   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.   *   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.
  *   *
  *   $Log$   *   $Log$
    *   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   *   Revision 1.4  2025/04/02 19:59:38  snw
  *   Automatically modify env.conf from fmadm reconfigure   *   Automatically modify env.conf from fmadm reconfigure
  *   *
Line 50 Line 68
 #include <fs.h>  #include <fs.h>
 #include "mpsdef.h"  #include "mpsdef.h"
   
   #if defined(__OS2__)
   # include <os2.h>
   #endif
   
 extern char config_file[4096];  extern char config_file[4096];
   
 #if !defined(PATH_MAX) && defined(_SCO_DS)  #if !defined(PATH_MAX) && defined(_SCO_DS)
Line 68  extern char config_file[4096]; Line 90  extern char config_file[4096];
 # include <sys/syslimits.h>  # include <sys/syslimits.h>
 #endif  #endif
   
 ini_keyvalue *ini_head;  #if !defined(PATH_MAX)
   # define PATH_MAX 4096
   #endif
   
   
 int get_conf(char *section, char *key, char *value)  int get_conf(char *section, char *key, char *value)
 {  {
Line 194  int read_profile_string(char *file, char Line 219  int read_profile_string(char *file, char
     char *cursec;      char *cursec;
     char *line;      char *line;
     int lnum = 0;      int lnum = 0;
   
       curkey = (char *) NULL;
           
     fullsec = (char *) malloc(CONF_BUFSIZE);      fullsec = (char *) malloc(CONF_BUFSIZE);
     NULLPTRCHK(fullsec,"read_profile_string");      NULLPTRCHK(fullsec,"read_profile_string");
Line 207  int read_profile_string(char *file, char Line 234  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, "[]");      strcpy(cursec, "[]");
   
   
     fp = fopen(file, "r");      fp = fopen(file, "r");
   
     while(fgets(line, CONF_BUFSIZE, fp) != NULL) {      while(fgets(line, CONF_BUFSIZE - 1, fp) != NULL) {
         ++lnum;          ++lnum;
   
         if(line[0] == '[') {          if(line[0] == '[') {
Line 278  int file_exists(char *filename) Line 305  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)  void parse_section_header(char *input, char *buf, size_t buflen)
 {  {
     strncpy (buf, &(input[1]), buflen);      strncpy (buf, &(input[1]), buflen);
Line 294  int modify_profile_string(char *file, ch Line 316  int modify_profile_string(char *file, ch
     FILE *input_fp;      FILE *input_fp;
     FILE *output_fp;      FILE *output_fp;
     char output_filename[4096];      char output_filename[4096];
     char input_line[255];      char input_line[255];    
     char output_line[255];  
     char current_section[255];      char current_section[255];
     char *savptr;      char *savptr;
     char *current_key;      char *current_key;
     char *current_value;  
     char tmpsi[255];      char tmpsi[255];
     char tmps[255];      char tmps[255];
     int changed = FALSE;      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) {      if ((input_fp = fopen (file, "r")) == NULL) {
         return FALSE;          return FALSE;
Line 332  int modify_profile_string(char *file, ch Line 352  int modify_profile_string(char *file, ch
                     strcpy (tmpsi, input_line);                      strcpy (tmpsi, input_line);
                     savptr = tmpsi;                      savptr = tmpsi;
                     current_key = strtok_r (tmpsi, "=", &savptr);                      current_key = strtok_r (tmpsi, "=", &savptr);
                     current_value = strtok_r (NULL, "=", &savptr);  
                     /* is this key the one we're changing? */                      /* is this key the one we're changing? */
                     if (strcmp (key, current_key) == 0) {                      if (strcmp (key, current_key) == 0) {
                         /* yes; modify it and write out*/                          /* 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);                          fputs (tmps, output_fp);
                         changed = TRUE;                                                  changed = TRUE;                        
Line 369  int modify_profile_string(char *file, ch Line 388  int modify_profile_string(char *file, ch
 #if !defined(__OS2__)  #if !defined(__OS2__)
     cp (file, output_filename);      cp (file, output_filename);
 #else  #else
     DosCopy (output_filename, file);      DosCopy (output_filename, file, 1);
 #endif      #endif    
                                                 
     return changed;      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)  
 {  
   
 }  

Removed from v.1.4  
changed lines
  Added in v.1.10


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>