aklog-obsd-20051221
[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 int
18 main(int argc, char *argv[])
19 {
20     aklog(argc, argv);
21     exit(0);
22 }
23
24 #else /* WINDOWS */
25
26 #include <windows.h>
27 #include <windowsx.h>
28
29 static void parse_cmdline();
30
31
32 int PASCAL
33 WinMain(HINSTANCE hinst, HINSTANCE hprevinstance, LPSTR cmdline, int noshow)
34 {
35         int argc = 0;
36         char **argv;
37
38     aklog_params params;
39
40         parse_cmdline(cmdline, &argv, &argc);
41
42     aklog(argc, argv, &params);
43
44         return 0;
45 }
46
47 /*
48  * Generate agrv/argc here from command line.
49  * Note that windows doesn't pass us the executible name, so
50  * we need to fill that in manually.
51  */
52
53 static void
54 parse_cmdline(char *cmdline, char ***pargv, int *pargc)
55 {
56         char **argv;
57         int argc = 0;
58         char *arg, *sep = " \t";
59         int argv_size = 10;             /* to start with */
60
61
62         argv = malloc(argv_size * sizeof(char *));
63
64         if (!argv) {
65                 MessageBox(NULL, "Fatal Error: Out of memory", AKLOG_DIALOG_NAME, 
66                                    MB_OK | MB_ICONSTOP);
67                 exit(1);
68         }
69
70         argv[argc++] = "aklog";
71
72         arg = strtok(cmdline, sep);
73
74         while(arg) {
75                 argv[argc] = strdup(arg);
76
77                 if (!argv[argc]) {
78                         MessageBox(NULL, "Fatal Error: Out of memory", AKLOG_DIALOG_NAME, 
79                                            MB_OK | MB_ICONSTOP);
80                         exit(1);
81                 }
82
83                 argc++;
84
85                 if (argc == argv_size) {
86                         argv_size += 10;
87                         argv = realloc(argv, argv_size * sizeof(char *));
88
89                         if (!argv) {
90                                 MessageBox(NULL, "Fatal Error: Out of memory",
91                                                    AKLOG_DIALOG_NAME, 
92                                                    MB_OK | MB_ICONSTOP);
93                                 exit(1);
94                         }
95                 }
96
97                 arg = strtok(NULL, sep);
98         }
99
100         argv[argc] = NULL;
101
102         *pargv = argv;
103         *pargc = argc;
104 }
105
106 #endif /* WINDOWS */
107