Diff for /libaitcfg/src/Attic/cfgprog.c between versions 1.1.2.1 and 1.1.2.3

version 1.1.2.1, 2025/01/30 12:28:41 version 1.1.2.3, 2025/01/30 14:34:25
Line 2 Line 2
 #include "aitcfg.h"  #include "aitcfg.h"
   
   
   cfg_root_t cfg;
   char cfgname[MAXPATHLEN], section[STRSIZ];
   
   
   static void
   Usage(const char *prog)
   {
           printf( " -= CFGPROG =- ELWIX config tool ver.%s\n"
                   "(C)`25 by Michael Pounov <misho@elwix.org>\n"
                   "==========================================\n"
                   " Syntax: %s [-options] <config> [attribute] [value]\n\n"
                   "\t-s <section>\tScope of attribute\n"
                   "\t-w\t\tSet and write attribute\n"
                   "\t-v\t\tVerbose, more -v more verbosity\n"
                   "\t-h\t\tHelp, this help screen!\n", 
                   PACKAGE_VERSION, prog);
   }
   
 int  int
main(int argc, char **argv)Get(const char *prog, int argc, char **argv)
 {  {
           const char *str;
           int i, ret = 0;
           array_t *sec;
           struct tagCfg *av;
   
           EVERBS(1) printf("Get value for %s in scope %s from config %s\n", 
                           *argv ? *argv : "*", section, prog);
   
           if (*argv) {
                   str = cfg_getAttribute(&cfg, section, *argv);
                   if (str)
                           printf("%s=%s\n", *argv, str);
                   else
                           ret = 3;
           } else {
                   sec = cfg_getSection(&cfg, section);
                   if (sec) {
                           for (i = 0; i < array_Size(sec) && 
                                           (av = array(sec, i, struct tagCfg*)); i++) {
                                   if (AIT_GET_STR(&av->cfg_attr))
                                           printf("%s=%s\n", 
                                                           AIT_GET_STR(&av->cfg_attr), 
                                                           AIT_GET_STR(&av->cfg_val));
                           }
                           array_Destroy(&sec);
                   } else
                           ret = 3;
           }
   
           return ret;
   }
   
   int
   Set(const char *prog, int argc, char **argv)
   {
           if (argc < 2) {
                   printf("Error:: missing attribute and value arguments!\n");
                   return 1;
           }
   
           EVERBS(1) printf("Set value %s for %s in scope %s from config %s\n", 
                           argv[1], argv[0], section, prog);
   
         return 0;          return 0;
   }
   
   
   int
   main(int argc, char **argv)
   {
           int ch, ret = 0;
           int (*run)(const char*, int, char**) = Get;
           const char *prog;
           char *str;
   
           if (!argv || !*argv)
                   prog = "cfgprog";
           else if (!(prog = strrchr(*argv, '/')))
                   prog = *argv;
           else
                   prog++;
   
           while ((ch = getopt(argc, argv, "hvws:")) != -1)
                   switch (ch) {
                           case 'w':
                                   run = Set;
                                   break;
                           case 's':
                                   strlcpy(section, optarg, sizeof section);
                                   break;
                           case 'v':
                                   e_incVerbose;
                                   break;
                           default:
                                   Usage(prog);
                                   return 1;
                   }
           argc -= optind;
           argv += optind;
   
           if (!strcmp(prog, "cfg_set"))
                   run = Set;
           else if (!strcmp(prog, "cfg_get"))
                   run = Get;
   
           if (!argc) {
                   printf("Error:: missing config name!\n");
                   Usage(prog);
                   return 1;
           } else {
                   strlcpy(cfgname, *argv, sizeof cfgname);
                   argc--;
                   argv++;
           }
   
           if (argc && *argv && (str = strchr(*argv, '/'))) {
                   *str++ = 0;
                   strlcpy(section, *argv, sizeof section);
                   *argv = str;
           }
   
           if (cfgLoadConfig(cfgname, &cfg)) {
                   printf("Error:: load config %s #%d - %s\n", 
                                   cfgname, cfg_GetErrno(), cfg_GetError());
                   return 2;
           }
   
           ret = run(prog, argc, argv);
   
           cfgUnloadConfig(&cfg);
           return ret;
 }  }

Removed from v.1.1.2.1  
changed lines
  Added in v.1.1.2.3


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