aklog-cleanup-rxkad2b-20050623
[openafs.git] / src / aklog / aklog.c
1 /* 
2  * $Id$
3  *
4  * Copyright 1990,1991 by the Massachusetts Institute of Technology
5  * For distribution and copying rights, see the file "mit-copyright.h"
6  */
7
8 #if !defined(lint) && !defined(SABER)
9 static char *rcsid = "$Id$";
10 #endif /* lint || SABER */
11
12 #include <afs/stds.h>
13 #include "aklog.h"
14
15 #ifndef WINDOWS
16
17 #ifdef __STDC__
18 main(int argc, char *argv[])
19 #else
20 main(argc, argv)
21   int argc;
22   char *argv[];
23 #endif /* __STDC__ */
24 {
25     aklog(argc, argv);
26 }
27
28 #else /* WINDOWS */
29
30 #include <windows.h>
31 #include <windowsx.h>
32
33 static void parse_cmdline();
34
35
36 int PASCAL
37 WinMain(HINSTANCE hinst, HINSTANCE hprevinstance, LPSTR cmdline, int noshow)
38 {
39         int argc = 0;
40         char **argv;
41
42     aklog_params params;
43
44         parse_cmdline(cmdline, &argv, &argc);
45
46     aklog_init_params(&params);
47     aklog(argc, argv, &params);
48
49         return 0;
50 }
51
52 /*
53  * Generate agrv/argc here from command line.
54  * Note that windows doesn't pass us the executible name, so
55  * we need to fill that in manually.
56  */
57
58 static void
59 parse_cmdline(char *cmdline, char ***pargv, int *pargc)
60 {
61         char **argv;
62         int argc = 0;
63         char *arg, *sep = " \t";
64         int argv_size = 10;             /* to start with */
65
66
67         argv = malloc(argv_size * sizeof(char *));
68
69         if (!argv) {
70                 MessageBox(NULL, "Fatal Error: Out of memory", AKLOG_DIALOG_NAME, 
71                                    MB_OK | MB_ICONSTOP);
72                 exit(1);
73         }
74
75         argv[argc++] = "aklog";
76
77         arg = strtok(cmdline, sep);
78
79         while(arg) {
80                 argv[argc] = strdup(arg);
81
82                 if (!argv[argc]) {
83                         MessageBox(NULL, "Fatal Error: Out of memory", AKLOG_DIALOG_NAME, 
84                                            MB_OK | MB_ICONSTOP);
85                         exit(1);
86                 }
87
88                 argc++;
89
90                 if (argc == argv_size) {
91                         argv_size += 10;
92                         argv = realloc(argv, argv_size * sizeof(char *));
93
94                         if (!argv) {
95                                 MessageBox(NULL, "Fatal Error: Out of memory",
96                                                    AKLOG_DIALOG_NAME, 
97                                                    MB_OK | MB_ICONSTOP);
98                                 exit(1);
99                         }
100                 }
101
102                 arg = strtok(NULL, sep);
103         }
104
105         argv[argc] = NULL;
106
107         *pargv = argv;
108         *pargc = argc;
109 }
110
111 #endif /* WINDOWS */
112