Changeset - f17d2abc8601
[Not reviewed]
default
0 4 0
Nathan Brink (binki) - 16 years ago 2009-04-08 23:32:22
ohnobinki@ohnopublishing.net
progress on restructuring options system
4 files changed with 34 insertions and 9 deletions:
0 comments (0 inline, 0 general)
etc/distren.conf
Show inline comments
 
@@ -18,7 +18,9 @@ server ohnopublishing
 
  method = "ssh"
 
}
 

	
 
client
 
{
 
  render_types = {"povray", "blender", "inkscape", "imagemagick", "dcraw"}
 
  username = "distrenc"
 
}
 

	
src/client/distren.c
Show inline comments
 
@@ -42,16 +42,16 @@ int main(int argc, char *argv[])
 
  struct options_common *options;
 
  
 
  cfg_t *cfg;
 
  
 
  cfg_opt_t cfg_opts[] =
 
    {
 
      CFG_STR("username", "guest", CFGF_NONE),
 
      CFG_STR("hostname", "protofusion.org", CFGF_NONE),
 
      CFG_STR("name", "Guest", CFGF_NONE),
 
      CFG_STR("email", "guest@protofusion.org", CFGF_NONE),
 
      CFG_STR_LIST("render_types", NULL, 0),
 
      CFG_STR("username", NULL, 0),
 
      CFG_STR("name", NULL, 0),
 
      CFG_STR("email", NULL, 0),
 
      CFG_END()
 
    };
 

	
 
  int i;
 
  
 
  if(options_init(argc, argv, &cfg, cfg_opts, "client", &options))
src/common/options.c
Show inline comments
 
@@ -20,31 +20,54 @@
 
#include "options.h"
 

	
 
#include <confuse.h>
 
#include <string.h>
 
#include <stdio.h>
 

	
 
int options_init(int argc, char *argv[], cfg_t **mycfg, cfg_opt_t *myopts, const char *myname, struct options_common **allopts)
 
int options_init(int argc, char *argv[], cfg_t **mycfg, cfg_opt_t *myopts, char *myname, struct options_common **allopts)
 
{
 
  char *configfile;
 
  
 
  configfile = strdup(SYSCONFDIR "/distren.conf");
 
  if(!configfile)
 
    {
 
      perror("strdup");
 
      return 1;
 
    }
 
      
 
  /* Conf File Parser */
 
  cfg_opt_t common_opts[] =
 
    {
 
      CFG_END()
 
    };
 
  
 
  cfg_opt_t server_opts[] = 
 
    {
 
      CFG_STR("username", NULL, CFGF_NONE),
 
      CFG_STR("hostname", NULL, CFGF_NONE),
 
      CFG_STR("method", "ssh", CFGF_NONE),
 
      CFG_END()
 
    };
 
  
 
  cfg_opt_t opts[] =
 
    {
 
      CFG_STR("username", "guest", CFGF_NONE),
 
      CFG_SEC("common",
 
	      common_opts,
 
	      CFGF_NONE),
 
      CFG_SEC("server",
 
	      server_opts,
 
	      CFGF_MULTI | CFGF_TITLE),
 
      CFG_SEC(myname,
 
	      myopts,
 
	      0),
 
      CFG_END()
 
    };
 
  cfg_t *cfg;
 
  cfg = cfg_init(opts, CFGF_NONE);
 

	
 

	
 
  cfg = cfg_init(opts, 0);
 
  switch(cfg_parse(cfg, configfile))
 
    {
 
    default:
 
      fprintf(stderr, "cfg_parse returned an unknown error code\n");
 
    case CFG_FILE_ERROR:
 
      cfg_error(cfg, "Couldn't open file ``%s''\n", configfile);
 
@@ -56,10 +79,10 @@ int options_init(int argc, char *argv[],
 
    case CFG_SUCCESS:
 
      break;
 
    }
 
  
 
  /* End Conf File Parser */
 

	
 
  printf("Client Username: %s\n", cfg_getstr(cfg, "username"));
 
  printf("Client Username: %s\n", cfg_getstr(cfg_getsec(cfg, "client"), "username"));
 
  cfg_free(cfg);
 
  return 0;
 
}
src/common/options.h
Show inline comments
 
@@ -48,13 +48,13 @@ struct options_common
 
  \param myname holds the name of the section of the config file that refers to mycfg and myopts
 

	
 
  \param allopts will be set to a pointer that many functions need for operation
 
  \param argc the argc that was passed to main()
 
  \param argv the argv that was passed to main()
 
 */
 
int options_init(int argc, char *argv[], cfg_t **mycfg, cfg_opt_t *myopts, const char *myname, struct options_common **allopts);
 
int options_init(int argc, char *argv[], cfg_t **mycfg, cfg_opt_t *myopts, char *myname, struct options_common **allopts);
 

	
 
/**
 
   Frees the struct options_common. This should be run before the program exits.
 
 */
 
int options_free(struct options_common *allopts);
 
#endif
0 comments (0 inline, 0 general)