5e5dbde357cd98999aee57d3922b1b89c198bc94
[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(argc, argv, &params);
47
48         return 0;
49 }
50
51 /*
52  * Generate agrv/argc here from command line.
53  * Note that windows doesn't pass us the executible name, so
54  * we need to fill that in manually.
55  */
56
57 static void
58 parse_cmdline(char *cmdline, char ***pargv, int *pargc)
59 {
60         char **argv;
61         int argc = 0;
62         char *arg, *sep = " \t";
63         int argv_size = 10;             /* to start with */
64
65
66         argv = malloc(argv_size * sizeof(char *));
67
68         if (!argv) {
69                 MessageBox(NULL, "Fatal Error: Out of memory", AKLOG_DIALOG_NAME, 
70                                    MB_OK | MB_ICONSTOP);
71                 exit(1);
72         }
73
74         argv[argc++] = "aklog";
75
76         arg = strtok(cmdline, sep);
77
78         while(arg) {
79                 argv[argc] = strdup(arg);
80
81                 if (!argv[argc]) {
82                         MessageBox(NULL, "Fatal Error: Out of memory", AKLOG_DIALOG_NAME, 
83                                            MB_OK | MB_ICONSTOP);
84                         exit(1);
85                 }
86
87                 argc++;
88
89                 if (argc == argv_size) {
90                         argv_size += 10;
91                         argv = realloc(argv, argv_size * sizeof(char *));
92
93                         if (!argv) {
94                                 MessageBox(NULL, "Fatal Error: Out of memory",
95                                                    AKLOG_DIALOG_NAME, 
96                                                    MB_OK | MB_ICONSTOP);
97                                 exit(1);
98                         }
99                 }
100
101                 arg = strtok(NULL, sep);
102         }
103
104         argv[argc] = NULL;
105
106         *pargv = argv;
107         *pargc = argc;
108 }
109
110 #endif /* WINDOWS */
111