Changeset - 038a38cef284
[Not reviewed]
default
0 2 0
Nathan Brink (binki) - 16 years ago 2009-11-29 23:22:14
ohnobinki@ohnopublishing.net
listen block eating, config parse error handling
2 files changed with 22 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/common/options.c
Show inline comments
 
@@ -170,13 +170,13 @@ int options_init(int argc, char *argv[],
 
	      CFGF_NONE),
 
      CFG_SEC("server",
 
	      server_opts,
 
	      CFGF_MULTI | CFGF_TITLE),
 
      CFG_SEC(myname,
 
	      myopts,
 
	      0),
 
	      CFGF_NONE),
 
      CFG_FUNC("include",
 
	       &cfg_include),
 
      CFG_END()
 
    };
 

	
 

	
 
@@ -189,12 +189,14 @@ int options_init(int argc, char *argv[],
 
    case CFG_FILE_ERROR:
 
      cfg_error((*allopts)->data->cfg, "Couldn't open file ``%s''\n", configfile);
 
      /* no break; on purpose */
 

	
 
    case CFG_PARSE_ERROR:
 

	
 
      fprintf(stderr, "error parsing configuration file, exiting\n");
 

	
 
      free((*allopts)->data);
 
      free(*allopts);
 
      free(configfile);
 

	
 
      return 1;
 

	
src/server/distrend.c
Show inline comments
 
@@ -605,12 +605,14 @@ void distrenjob_remove(struct general_in
 
}
 

	
 

	
 
/* Grabs config info from confs */
 
int distrend_do_config(int argc, char *argv[], struct distrend_config **config)
 
{
 
  unsigned int counter;
 

	
 
  cfg_opt_t myopts_listen[] =
 
    {
 
      CFG_SIMPLE_STR("type", NULL),
 
      CFG_SIMPLE_STR("path", NULL),
 
      CFG_SIMPLE_INT("port", NULL),
 
      CFG_END()
 
@@ -622,12 +624,13 @@ int distrend_do_config(int argc, char *a
 
          CFGF_MULTI),
 
      CFG_SIMPLE_STR("datadir", NULL),
 
      CFG_END()
 
    };
 

	
 
  struct distrenjob *distrenjob;
 
  cfg_t *cfg_listen;
 

	
 
  int tmp;
 

	
 
  /*
 
   * test xml2distrenjob()
 
   */
 
@@ -639,13 +642,26 @@ int distrend_do_config(int argc, char *a
 

	
 
  fprintf(stderr, "%s:%d running config\n", __FILE__, __LINE__);
 

	
 
  *config = malloc(sizeof(struct distrend_config));
 
  myopts[1].simple_value = &(*config)->datadir;
 

	
 
  options_init(argc, argv, &(*config)->mycfg, myopts, "daemon", &(*config)->options);
 
  if(options_init(argc, argv, &(*config)->mycfg, myopts, "daemon", &(*config)->options))
 
    return 1;
 

	
 
  /**
 
     grab listen blocks:
 
   */
 
  (*config)->listens = malloc(sizeof(struct distrend_listen) * (cfg_size((*config)->mycfg, "listen") + 1));
 
  for(counter = 0; counter < cfg_size((*config)->mycfg, "listen"); counter ++)
 
    {
 
      cfg_listen = cfg_getnsec((*config)->mycfg, "listen", counter);
 
      (*config)->listens[counter].port = cfg_getint(cfg_listen, "port");
 
      (*config)->listens[counter].sock = -1;
 
    }
 
  memset(&(*config)->listens[counter], '\0', sizeof(struct distrend_listen));
 

	
 
  fprintf(stderr, "using %s as datadir\n", (*config)->datadir);
 

	
 
  return 0;
 
}
 
int distrend_config_free(struct distrend_config *config)
 
@@ -1114,13 +1130,14 @@ int main(int argc, char *argv[])
 
    	  fprintf(stderr, "Entering into test mode...\n\n");
 
		  test=1;
 
      }
 
    }
 
  cont = 1;
 

	
 
  distrend_do_config(argc, argv, &config);
 
  if(distrend_do_config(argc, argv, &config))
 
    return 1;
 

	
 
  if(start_data(&general_info, config->datadir))
 
    {
 
      fprintf(stderr, "%s:%d: start_data() failed\n", __FILE__, __LINE__);
 
      return 1;
 
    }
0 comments (0 inline, 0 general)