minimal skeleton
[webserver.git] / webserver.c
CommitLineData
8512671a
LM
1/* depend: */
2/* cflags: */
3/* linker: color.o debug.o */
4
5#include <stdio.h>
6#include <stdlib.h>
7
8#include "debug.h"
9
10/* constants */
11
12#define BUFFER_SIZE 4096
13
14/* macros */
15
16/* gobal variables */
17
18char *progname = NULL;
19
20/* help function */
21
22int usage (int ret)
23{
24 FILE *fid = ret ? stderr : stdout;
25 fprintf (fid, "usage: %s\n", progname);
26 fprintf (fid, " -h : help message\n");
27 fprintf (fid, " -v : verbose level (%d)\n", verbose);
28
29 return ret;
30}
31
32/* main function */
33
34int main (int argc, char *argv[])
35{
36 int i = 0;
37 int ret = 0;
38
39 /* program name */
40
41 progname = argv[0];
42 while (progname[i] != '\0') {
43 if ((progname[i] == '/') || (progname[i] == '\\')) {
44 progname += i + 1;
45 i = 0;
46 } else {
47 i++;
48 }
49 }
50
51 /* argument processing */
52
53 while (argc-- > 1) {
54 char *arg = *(++argv);
55 if (arg[0] != '-') {
56 VERBOSE (ERROR, fprintf (stderr, "%s: invalid option -- '%s'\n", progname, arg); usage (1));
57 return 1;
58 }
59 char c = arg[1];
60 switch (c) {
61/*
62 case 'i':
63 arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
64 if (arg == NULL) {
65 VERBOSE (ERROR, fprintf (stderr, "%s: missing input prompt\n", progname); usage (1));
66 return 1;
67 }
68 iprompt = arg;
69 break;
70*/
71 case 'v':
72 arg = (arg[2]) ? arg + 2 : (--argc > 0) ? *(++argv) : NULL;
73 if (arg == NULL) {
74 VERBOSE (ERROR, fprintf (stderr, "%s: missing verbose level\n", progname); usage (1));
75 return 1;
76 }
77 verbose = atoi (arg);
78 break;
79 case 'h':
80 default:
81 return usage (c != 'h');
82 }
83 }
84
85 return ret;
86}
87
88// test: webserver.exe -h
89// test: webserver.exe -h | awk '/usage:/ { rc=1 } END { exit (1-rc) }'
90// test: echo 1 | webserver.exe -v3 | grep -q value
91// test: webserver.exe -_ 2> /dev/null | awk 'END { if (NR == 0) { exit(0) } else exit (1) }'
92// test: webserver.exe -_ 2>&1 | awk '/usage:/ { rc=1 } END { exit (1-rc) }'
93// test: webserver.exe error 2>&1 | grep -q 'invalid option'
94
95/* vim: set ts=4 sw=4 et: */