diff --git a/src/common/options.c b/src/common/options.c --- a/src/common/options.c +++ b/src/common/options.c @@ -29,7 +29,7 @@ #include #include -struct options_common_data +struct options_common_data { cfg_t *cfg; }; @@ -41,7 +41,7 @@ int options_init(int argc, char *argv[], size_t i; - /* For those of you who don't know, the following is an example of concatenation of constant strings by the C compiler. Now, that doesn't mean you can do run-time string concatenation ;-) + /* For those of you who don't know, the following is an example of concatenation of constant strings by the C compiler. Now, that doesn't mean you can do run-time string concatenation ;-) strdup is because someday configfile will be customizable via argv[] */ @@ -55,7 +55,7 @@ int options_init(int argc, char *argv[], strncpy(configfile, SYSCONFDIR "/distren", strlen(SYSCONFDIR "/distren") + 1); strcat(configfile, myname); strcat(configfile, ".conf"); - + *allopts = malloc(sizeof(struct options_common)); if(!*allopts) { @@ -64,7 +64,7 @@ int options_init(int argc, char *argv[], return 1; } memset(*allopts, '\0', sizeof(struct options_common)); - + (*allopts)->data = malloc(sizeof(struct options_common_data)); if(!(*allopts)->data) { @@ -87,17 +87,18 @@ int options_init(int argc, char *argv[], memset((*allopts)->remoteio, '\0', sizeof(struct remoteio_opts)); (*allopts)->remoteio->ssh_command = strdup("ssh"); /** @TODO: check for NULL return above */ - + cfg_opt_t common_opts[] = { CFG_SIMPLE_STR("ssh-command", &(*allopts)->remoteio->ssh_command), + CF CFG_END() }; - + /* In these arrays, I should replace NULL with a pointer to a string in the struct which should hold the result of confuse processing an option. This is partially because confuse will not free the values it parses. */ - cfg_opt_t server_opts[] = + cfg_opt_t server_opts[] = { CFG_STR("username", NULL, CFGF_NONE), CFG_STR("hostname", NULL, CFGF_NONE), @@ -134,19 +135,19 @@ int options_init(int argc, char *argv[], /* no break; on purpose */ case CFG_PARSE_ERROR: - + free((*allopts)->data); free(*allopts); free(configfile); - + return 1; - + case CFG_SUCCESS: break; } - + free(configfile); - + *mycfg = cfg_getsec((*allopts)->data->cfg, myname); return 0; @@ -161,6 +162,6 @@ int options_free(struct options_common * free(opts->remoteio); free(opts->data); free(opts); - + return 0; } diff --git a/src/server/slave.c b/src/server/slave.c --- a/src/server/slave.c +++ b/src/server/slave.c @@ -29,6 +29,7 @@ // Provides DISTREN_REQUEST* which is in reality, DISTREN_SEND(signal) in the minds of your average joe #include "protocol.h" +#include "options.h" // Confuse, etc. #include int slavestatus = 0; // Ugh global vars @@ -45,7 +46,7 @@ int main(int argc, char *argv[]) if(argc != 4) { - fprintf(stderr, "I need more arguments!\n%d is not enough!\n Invoke 'slave -c to register'", argc - 1); + fprintf(stderr, "I need more arguments!\n%d is not enough!\n Invoke 'slave -c to register. \n Already registered? Edit your distrend.conf file!'", argc - 1); return 234; } @@ -64,11 +65,31 @@ int main(int argc, char *argv[]) } /* End arg parser */ +char *username; +char *key; +username = NULL; +key = NULL; - if('username and the user\'s key filename are in conf file'){ - loginuser(username); +cfg_t * my_cfg; +cfg_opt_t myopts = { + CFG_SIMPLE_STR("username"), &username), + CFG_SIMPLE_STR("key"), &key), + CFG_END() + }; +struct options_common *commonopts +options_init(argc,argv,&my_cfg, &myopts, "slave", &commonopts); + + if(key == NULL || username == NULL){ + fprintf(stderr,"You didn't register! Please register or add your username to distrend.conf"); } + else if(key != NULL || username != NULL){ + loginuser(username); // Logs in user to the server + } + else{ + fprintf(stderr,"Something is terribly wrong!!!"); + } + if('slave recieves "start frame#, job#"'){ fprintf(stderr, "Got frame %d in job %d, preparing to render...",frame,job);