d4-core/client/d4.c

93 lines
1.9 KiB
C
Raw Normal View History

2018-11-27 12:47:18 +01:00
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <getopt.h>
#include <string.h>
2018-11-27 15:19:40 +01:00
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
2018-11-27 12:47:18 +01:00
#include "d4.h"
//Returns -1 on error, 0 otherwise
int d4_load_config(d4_t* d4)
{
2018-11-27 14:42:35 +01:00
int i;
2018-11-27 15:19:40 +01:00
int fd;
2018-11-27 14:42:35 +01:00
char *buf;
buf=calloc(1,2*FILENAME_MAX);
if (buf) {
for (i=0; i < ND4PARAMS; i++) {
snprintf(buf,2*FILENAME_MAX, "%s/%s",d4->confdir, d4params[i]);
2018-11-27 15:19:40 +01:00
fd = open(buf,O_RDONLY);
2018-11-27 16:39:48 +01:00
if (fd > 0) {
2018-11-27 15:19:40 +01:00
//FIXME error handling
read(fd, d4->conf[i], SZCONFVALUE);
} else {
d4->errno_copy = errno;
2018-11-27 17:27:52 +01:00
INSERT_ERROR("Failed to load %s", d4params[i]);
2018-11-27 15:19:40 +01:00
}
2018-11-27 14:42:35 +01:00
}
}
2018-11-27 12:47:18 +01:00
return -1;
}
void usage(void)
{
printf("d4 client help\n");
}
d4_t* d4_init(char* confdir)
{
d4_t* out;
int i;
2018-11-27 12:47:18 +01:00
out = calloc(1,sizeof(d4_t));
if (out) {
strncpy(out->confdir, confdir, FILENAME_MAX);
}
for (i=0; i< ND4PARAMS; i++) {
bzero(out->conf[i],SZCONFVALUE);
}
2018-11-27 12:47:18 +01:00
// Do other inititalization stuff here
return out;
}
int main (int argc, char* argv[])
{
int opt;
char* confdir;
d4_t* d4;
confdir=calloc(1,FILENAME_MAX);
if (!confdir)
return EXIT_FAILURE;
while ((opt = getopt(argc, argv, "c:h")) != -1) {
switch (opt) {
case 'h':
usage();
return EXIT_SUCCESS;
case 'c':
strncpy(confdir, optarg, FILENAME_MAX);
break;
default:
fprintf(stderr,"An invalid command line argument was specified\n");
}
}
if (!confdir[0]){
fprintf(stderr,"A config directory must be specified\n");
return EXIT_FAILURE;
}
2018-11-27 14:48:09 +01:00
d4 = d4_init(confdir);
2018-11-27 12:47:18 +01:00
free(confdir);
d4_load_config(d4);
2018-11-27 17:35:31 +01:00
2018-11-27 12:47:18 +01:00
return EXIT_SUCCESS;
}