Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Saturday, October 17, 2026

Diff for libcfg+/src/cfg+.c between version 1.19 and 1.20

version 1.19, 2001/12/20 19:50:38 version 1.20, 2002/02/13 14:55:26
Line 29  CFG_CONTEXT cfg_get_context(struct cfg_o
Line 29  CFG_CONTEXT cfg_get_context(struct cfg_o
         if (con == NULL)          if (con == NULL)
                 return NULL;                  return NULL;
   
           /* Setting all struct values to 0 or NULL. */
         memset(con, '\0', sizeof(*con));          memset(con, '\0', sizeof(*con));
         con->type = CFG_NO_CONTEXT;          con->type = CFG_NO_CONTEXT;
   
Line 110  void cfg_set_cmdline_context(
Line 111  void cfg_set_cmdline_context(
                 char **argv                  char **argv
                 )                  )
 {  {
           cfg_reset_context(con);
   
         con->type = CFG_CMDLINE;          con->type = CFG_CMDLINE;
   
         con->argc = argc;          con->argc = argc;
Line 128  void cfg_set_cfgfile_context(
Line 131  void cfg_set_cfgfile_context(
                 char *filename                  char *filename
                 )                  )
 {  {
           cfg_reset_context(con);
   
         con->type = CFG_CFGFILE;          con->type = CFG_CFGFILE;
   
         con->begin_pos = begin_pos;          con->begin_pos = begin_pos;
         con->end_pos = end_pos;          con->end_pos = end_pos;
   
           /* TODO: filename copying? (if yes than don't forget memory freeing) */
         con->filename = (char *) filename;          con->filename = (char *) filename;
   
         con->fhandle = NULL;          con->fhandle = NULL;
 }  }
   
   void cfg_reset_context(const CFG_CONTEXT con)
   {
           con->cur_idx = 0;
           con->cur_idx_tmp = 0;
   
           if (con->used_opt_idx != NULL) {
                   free(con->used_opt_idx);
                   con->used_opt_idx = NULL;
           }
   
           __cfg_free_currents(con);
   
           if (con->fhandle != NULL) {
                   fclose(con->fhandle);
                   con->fhandle = NULL;
           }
   }
   
 void cfg_free_context(const CFG_CONTEXT con)  void cfg_free_context(const CFG_CONTEXT con)
 {  {
           cfg_reset_context(con);
   
         cfg_clear_cmdline_stop_string(con);          cfg_clear_cmdline_stop_string(con);
         cfg_clear_cfgfile_stop_prefix(con);          cfg_clear_cfgfile_stop_prefix(con);
Line 152  void cfg_free_context(const CFG_CONTEXT
Line 178  void cfg_free_context(const CFG_CONTEXT
         cfg_clear_cfgfile_multi_line_postfix(con);          cfg_clear_cfgfile_multi_line_postfix(con);
         cfg_clear_quote_strings(con);          cfg_clear_quote_strings(con);
   
         if (con->used_opt_idx != NULL)          con->argc = 0;
                 free(con->used_opt_idx);          con->argv = NULL;
   
         /*  
          * We can't call free_currents(con), because it is stacic method defined  
          * in cmdline.c; but no problem, we will do the free-job ourself.  
   
          if (con->cur_opt != NULL)  
          free(con->cur_opt);  
          if (con->cur_arg != NULL)  
          free(con->cur_arg);  
   
          con->cur_opt = con->cur_arg = NULL;  
          con->cur_opt_type = CFG_NONE_OPTION;  
          */  
   
         __cfg_free_currents(con);  
   
   
         if (con->fhandle != NULL)  
                 fclose(con->fhandle);  
   
         con->fhandle = NULL;  
         con->filename = NULL;          con->filename = NULL;
           con->begin_pos = 0;
           con->end_pos = 0;
   
         con->type = CFG_NO_CONTEXT;          con->type = CFG_NO_CONTEXT;
   
Line 184  void cfg_free_context(const CFG_CONTEXT
Line 192  void cfg_free_context(const CFG_CONTEXT
   
 #if defined(SELF) || defined(SELFTEST) || defined(SELF_CFG)  #if defined(SELF) || defined(SELFTEST) || defined(SELF_CFG)
   
   
   void ar_print(char *name, char *format, void **vals)
   {
           if (vals != NULL) {
                   if (strcmp(format, "%s")) {
                           register int i;
                           printf("%s: ", name);
   
                           //fputs(format, stdout);
                           //fputs(": ", stdout);
   
                           for (i = 0; vals[i] != NULL; i++) {
   
                                   printf(format, !strcmp(format, "%d") ? *(((int **) vals)[i])
                                                   : !strcmp(format, "%u") ? *(((unsigned int **) vals)[i])
                                                   : !strcmp(format, "%ld") ? *(((long **) vals)[i])
                                                   : !strcmp(format, "%lu") ? *(((unsigned long**)vals)[i])
                                                   : !strcmp(format, "%f") ? *(((float **) vals)[i])
                                                   : !strcmp(format, "%e") ? *(((double **) vals)[i])
                                                   : 0LU);
   
                                   printf(", ");
                           }
                           puts("NULL");
                   }
                   else {
                           register char *s;
                           s = strdyn_implode_str((char **) vals, "][");
                           printf("%s = [%s]\n", name, s);
                           if (s != NULL)
                                   free(s);
                   }
   
                   strdyn_free((char **) vals);
           }
           else
                   printf("%s uninitialized\n", name);
   }
   
 int main(int argc, char **argv)  int main(int argc, char **argv)
 {  {
   
Line 241  int main(int argc, char **argv)
Line 288  int main(int argc, char **argv)
            printf("advanced leftovers: %d\n", cfg_get_context_flag(con, CFG_ADVANCED_LEFTOVERS));             printf("advanced leftovers: %d\n", cfg_get_context_flag(con, CFG_ADVANCED_LEFTOVERS));
            cfg_set_context_flag(con, CFG_ADVANCED_LEFTOVERS);             cfg_set_context_flag(con, CFG_ADVANCED_LEFTOVERS);
            printf("advanced leftovers: %d\n", cfg_get_context_flag(con, CFG_ADVANCED_LEFTOVERS));             printf("advanced leftovers: %d\n", cfg_get_context_flag(con, CFG_ADVANCED_LEFTOVERS));
          */             */
   
         cfg_set_context_flag(con, CFG_ADVANCED_LEFTOVERS);          cfg_set_context_flag(con, CFG_ADVANCED_LEFTOVERS);
   
Line 299  int main(int argc, char **argv)
Line 346  int main(int argc, char **argv)
                                 cfg_get_cur_idx(con),                                  cfg_get_cur_idx(con),
                                 argv[cfg_get_cur_idx(con)]);                                  argv[cfg_get_cur_idx(con)]);
   
         cfg_free_context(con);          /* DELTHIS: cfg_free_context(con); */
   
         if (o_cfgfile != NULL) {          if (o_cfgfile != NULL) {
                 con = cfg_get_cfgfile_context(0, 0, o_cfgfile, options);                  /* DELTHIS: con = cfg_get_cfgfile_context(0, 0, o_cfgfile, options); */
                   cfg_set_cfgfile_context(con, 0, 0, o_cfgfile);
                 cfg_remove_cfgfile_comment_prefix(con, "//");                  cfg_remove_cfgfile_comment_prefix(con, "//");
                 cfg_add_cfgfile_comment_prefix(con, "//");                  cfg_add_cfgfile_comment_prefix(con, "//");
   
Line 315  int main(int argc, char **argv)
Line 363  int main(int argc, char **argv)
                            cfg_get_cur_arg(con),                             cfg_get_cur_arg(con),
                            cfg_get_cur_idx(con),                             cfg_get_cur_idx(con),
                            argv[cfg_get_cur_idx(con)]);                             argv[cfg_get_cur_idx(con)]);
                          */                             */
                 }                  }
   
                 if (ret != 0)                  if (ret != 0)
Line 332  int main(int argc, char **argv)
Line 380  int main(int argc, char **argv)
         printf("o_float = %f, o_double = %e\n", o_float, o_double);          printf("o_float = %f, o_double = %e\n", o_float, o_double);
         printf("o_string = <%s>\n", o_string);          printf("o_string = <%s>\n", o_string);
   
         {          puts("Multi values printing:");
                 char *s;  
                 register int i;  
   
                 puts("Multi values printing:");  
   
                 if (o_multi_int != NULL) {  
                         printf("o_multi_int: ");  
                         for (i = 0; o_multi_int[i] != NULL; i++)  
                                 printf("%d, ", *(o_multi_int[i]));  
                         puts("NULL");  
                         strdyn_free((char**) o_multi_int);  
                 }  
                 else  
                         puts("o_multi_int uninitialized");  
   
                 if (o_multi_uint != NULL) {  
                         printf("o_multi_uint: ");  
                         for (i = 0; o_multi_uint[i] != NULL; i++)  
                                 printf("%u, ", *(o_multi_uint[i]));  
                         puts("NULL");  
                         strdyn_free((char**) o_multi_uint);  
                 }  
                 else  
                         puts("o_multi_uint uninitialized");  
   
                 if (o_multi_long != NULL) {  
                         printf("o_multi_long: ");  
                         for (i = 0; o_multi_long[i] != NULL; i++)  
                                 printf("%ld, ", *(o_multi_long[i]));  
                         puts("NULL");  
                         strdyn_free((char**) o_multi_long);  
                 }  
                 else  
                         puts("o_multi_long uninitialized");  
   
                 if (o_multi_ulong != NULL) {  
                         printf("o_multi_ulong: ");  
                         for (i = 0; o_multi_ulong[i] != NULL; i++)  
                                 printf("%lu, ", *(o_multi_ulong[i]));  
                         puts("NULL");  
                         strdyn_free((char**) o_multi_ulong);  
                 }  
                 else  
                         puts("o_multi_ulong uninitialized");  
   
                 if (o_multi_float != NULL) {  
                         printf("o_multi_float: ");  
                         for (i = 0; o_multi_float[i] != NULL; i++)  
                                 printf("%f, ", *(o_multi_float[i]));  
                         puts("NULL");  
                         strdyn_free((char**) o_multi_float);  
                 }  
                 else  
                         puts("o_multi_float uninitialized");  
   
                 if (o_multi_double != NULL) {  
                         printf("o_multi_double: ");  
                         for (i = 0; o_multi_double[i] != NULL; i++)  
                                 printf("%e, ", *(o_multi_double[i]));  
                         puts("NULL");  
                         strdyn_free((char**) o_multi_double);  
                 }  
                 else  
                         puts("o_multi_double uninitialized");  
   
                 if (o_name != NULL) {  
                         s = strdyn_implode_str(o_name, "][");  
                         printf("o_name = [%s]\n", s);  
                         if (s != NULL)  
                                 free(s);  
                         strdyn_free(o_name);  
                 }  
                 else  
                         puts("o_name uninitialized");  
   
                 if (o_leftover != NULL) {  
                         s = strdyn_implode_str(o_leftover, "][");  
                         printf("o_leftover = [%s]\n", s);  
                         if (s != NULL)  
                                 free(s);  
                         strdyn_free(o_leftover);  
                 }  
                 else  
                         puts("o_leftover uninitialized");  
         }  
   
           ar_print("o_multi_int", "%d", (void **) o_multi_int);
           ar_print("o_multi_uint", "%u", (void **) o_multi_uint);
           ar_print("o_multi_long", "%ld", (void **) o_multi_long);
           ar_print("o_multi_ulong", "%lu", (void **) o_multi_ulong);
           ar_print("o_multi_float", "%f", (void **) o_multi_float);
           ar_print("o_multi_double", "%e", (void **) o_multi_double);
           ar_print("o_name", "%s", (void **) o_name);
           ar_print("o_leftover", "%s", (void **) o_leftover);
   
         return 0;          return 0;
 }  }

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.20

Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top