40
40
/*
41
41
* Holds an argv that could be passed to exec*() if we restart ourselves
42
42
*/
43
+ <<<<<<< HEAD
43
44
char * * restartargv = NULL ;
45
+ = == == ==
46
+ /* Declare variable */
47
+ extern char * * restartargv ;
48
+ /* Define variable */
49
+ char * * restartargv = NULL ;
50
+ >>>>>>> b80bc0b523d60a5c16040ef8a66827aab13541b3
44
51
45
52
/**
46
53
* A flag to denote whether we were restarted via a parent wifidog, or started normally
@@ -68,7 +75,8 @@ usage(void)
68
75
fprintf (stdout , " -w <path> Wdctl socket path\n" );
69
76
fprintf (stdout , " -h Print usage\n" );
70
77
fprintf (stdout , " -v Print version information\n" );
71
- fprintf (stdout , " -x pid Used internally by WiFiDog when re-starting itself *DO NOT ISSUE THIS SWITCH MANUAlLY*\n" );
78
+ fprintf (stdout ,
79
+ " -x pid Used internally by WiFiDog when re-starting itself *DO NOT ISSUE THIS SWITCH MANUAlLY*\n" );
72
80
fprintf (stdout , " -i <path> Internal socket path used when re-starting self\n" );
73
81
fprintf (stdout , "\n" );
74
82
}
@@ -77,20 +85,29 @@ usage(void)
77
85
* also populates restartargv
78
86
*/
79
87
void
88
+ <<<<<<< HEAD
80
89
parse_commandline (int argc , char * * argv ) {
81
90
int c ;
82
91
int skiponrestart ;
83
92
int i ;
93
+ = == == ==
94
+ parse_commandline (int argc , char * * argv )
95
+ {
96
+ int c ;
97
+ int skiponrestart ;
98
+ int i ;
99
+ >>>>>>> b80bc0b523d60a5c16040ef8a66827aab13541b3
84
100
85
101
s_config * config = config_get_config ();
86
102
87
- //MAGIC 3: Our own -x, the pid, and NULL :
88
- restartargv = safe_malloc ((size_t ) (argc + 3 ) * sizeof (char * ));
89
- i = 0 ;
90
- restartargv [i ++ ] = safe_strdup (argv [0 ]);
103
+ //MAGIC 3: Our own -x, the pid, and NULL :
104
+ restartargv = safe_malloc ((size_t ) (argc + 3 ) * sizeof (char * ));
105
+ i = 0 ;
106
+ restartargv [i ++ ] = safe_strdup (argv [0 ]);
91
107
92
108
while (-1 != (c = getopt (argc , argv , "c:hfd:sw:vx:i:" ))) {
93
109
110
+ <<<<<<< HEAD
94
111
skiponrestart = 0 ;
95
112
96
113
switch (c ) {
@@ -179,6 +196,94 @@ parse_commandline(int argc, char **argv) {
179
196
restartargv [i ++ ] = NULL ;
180
197
restartargv [i ++ ] = NULL ;
181
198
restartargv [i ++ ] = NULL ;
199
+ = == == ==
200
+ skiponrestart = 0 ;
182
201
183
- }
202
+ switch (c ) {
203
+
204
+ case 'h' :
205
+ usage ();
206
+ exit (1 );
207
+ break ;
208
+
209
+ case 'c' :
210
+ if (optarg ) {
211
+ free (config -> configfile );
212
+ config -> configfile = safe_strdup (optarg );
213
+ }
214
+ break ;
215
+
216
+ case 'w' :
217
+ if (optarg ) {
218
+ free (config -> wdctl_sock );
219
+ config -> wdctl_sock = safe_strdup (optarg );
220
+ }
221
+ break ;
222
+
223
+ case 'f' :
224
+ skiponrestart = 1 ;
225
+ config -> daemon = 0 ;
226
+ break ;
227
+
228
+ case 'd' :
229
+ if (optarg ) {
230
+ config -> debuglevel = atoi (optarg );
231
+ }
232
+ break ;
233
+
234
+ case 's' :
235
+ config -> log_syslog = 1 ;
236
+ break ;
237
+
238
+ case 'v' :
239
+ fprintf (stdout , "This is WiFiDog version " VERSION "\n" );
240
+ exit (1 );
241
+ break ;
184
242
243
+ case 'x' :
244
+ skiponrestart = 1 ;
245
+ if (optarg ) {
246
+ restart_orig_pid = atoi (optarg );
247
+ } else {
248
+ fprintf (stdout , "The expected PID to the -x switch was not supplied!" );
249
+ exit (1 );
250
+ }
251
+ break ;
252
+
253
+ case 'i' :
254
+ if (optarg ) {
255
+ free (config -> internal_sock );
256
+ config -> internal_sock = safe_strdup (optarg );
257
+ }
258
+ break ;
259
+
260
+ default :
261
+ usage ();
262
+ exit (1 );
263
+ break ;
264
+
265
+ }
266
+
267
+ if (!skiponrestart ) {
268
+ /* Add it to restartargv */
269
+ safe_asprintf (& (restartargv [i ++ ]), "-%c" , c );
270
+ if (optarg ) {
271
+ restartargv [i ++ ] = safe_strdup (optarg );
272
+ }
273
+ }
274
+
275
+ }
276
+
277
+ /* Finally, we should add the -x, pid and NULL to restartargv
278
+ * HOWEVER we cannot do it here, since this is called before we fork to background
279
+ * so we'll leave this job to gateway.c after forking is completed
280
+ * so that the correct PID is assigned
281
+ *
282
+ * We add 3 nulls, and the first 2 will be overridden later
283
+ */
284
+ restartargv [i ++ ] = NULL ;
285
+ restartargv [i ++ ] = NULL ;
286
+ restartargv [i ++ ] = NULL ;
287
+ >>>>>>> b80bc0b523d60a5c16040ef8a66827aab13541b3
288
+
289
+ }
0 commit comments