1: #include "global.h"
2:
3:
4: io_enableDEBUG;
5:
6: cfg_root_t cfg;
7: FILE *output;
8: char szConfig[MAXPATHLEN] = VOUCHER_CFG;
9: extern char compiled[], compiledby[], compilehost[];
10:
11:
12: static void
13: Usage()
14: {
15: printf( " -= VOUCHER =- management tool\n"
16: "=== %s === %s@%s ===\n\n"
17: "Syntax: voucher [options] -r <RollID> [count]\n"
18: "\tvoucher [options] -t <voucher> [voucher [voucher ...]]\n\n"
19: "\t-v\t\tVerbose (more -v more verbosity)\n"
20: "\t-r\t\tRequest new voucher(s) mode\n"
21: "\t-t\t\tTest voucher(s) mode\n"
22: "\t-c <config>\tConfig file\n"
23: "\t-o <output>\tOutput file [default=-]\n"
24: "\n", compiled, compiledby, compilehost);
25: }
26:
27: static void
28: AtExit()
29: {
30: if (output != stdout)
31: fclose(output);
32: }
33:
34: static inline int
35: RedirOutput(const char *name)
36: {
37: AtExit();
38:
39: if (strcmp(name, "-")) {
40: output = fopen(name, "w+");
41: if (!output) {
42: printf("Error:: can't redirect output #%d - %s\n",
43: errno, strerror(errno));
44: return -1;
45: }
46: } else
47: output = stdout;
48: return 0;
49: }
50:
51:
52: int
53: main(int argc, char **argv)
54: {
55: char ch, mode = 0;
56: int rid, cnt = 1;
57:
58: output = stdout;
59: atexit(AtExit);
60:
61: while ((ch = getopt(argc, argv, "hvrtc:o:")) != -1)
62: switch (ch) {
63: case 'r':
64: mode = 1;
65: break;
66: case 't':
67: mode = 2;
68: break;
69: case 'c':
70: strlcpy(szConfig, optarg, sizeof szConfig);
71: break;
72: case 'o':
73: RedirOutput(optarg);
74: break;
75: case 'v':
76: io_incDebug;
77: break;
78: case 'h':
79: default:
80: Usage();
81: return 1;
82: }
83: argc -= optind;
84: argv += optind;
85: if (!argc || !mode) {
86: printf("Error:: not enough parameter or unspecified mode ...\n\n");
87: Usage();
88: return 1;
89: }
90: if (cfgLoadConfig(szConfig, &cfg)) {
91: printf("Error:: load config #%d - %s\n", cfg_GetErrno(), cfg_GetError());
92: return 2;
93: }
94:
95: cfgUnloadConfig(&cfg);
96: return 0;
97: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>