aboutsummaryrefslogtreecommitdiff
path: root/util-linux
diff options
context:
space:
mode:
Diffstat (limited to 'util-linux')
-rw-r--r--util-linux/getopt.c26
1 files changed, 9 insertions, 17 deletions
diff --git a/util-linux/getopt.c b/util-linux/getopt.c
index 95ecba6e6..2390f3056 100644
--- a/util-linux/getopt.c
+++ b/util-linux/getopt.c
@@ -96,9 +96,7 @@ const char *normalize(const char *arg)
96 free(BUFFER); 96 free(BUFFER);
97 97
98 if (!quote) { /* Just copy arg */ 98 if (!quote) { /* Just copy arg */
99 BUFFER=xmalloc(strlen(arg)+1); 99 BUFFER=xstrdup(arg);
100
101 strcpy(BUFFER,arg);
102 return BUFFER; 100 return BUFFER;
103 } 101 }
104 102
@@ -204,7 +202,6 @@ static const int LONG_OPTIONS_INCR = 10;
204/* Register a long option. The contents of name is copied. */ 202/* Register a long option. The contents of name is copied. */
205void add_longopt(const char *name,int has_arg) 203void add_longopt(const char *name,int has_arg)
206{ 204{
207 char *tmp;
208 if (!name) { /* init */ 205 if (!name) { /* init */
209 free(long_options); 206 free(long_options);
210 long_options=NULL; 207 long_options=NULL;
@@ -228,9 +225,7 @@ void add_longopt(const char *name,int has_arg)
228 long_options[long_options_nr-1].has_arg=has_arg; 225 long_options[long_options_nr-1].has_arg=has_arg;
229 long_options[long_options_nr-1].flag=NULL; 226 long_options[long_options_nr-1].flag=NULL;
230 long_options[long_options_nr-1].val=LONG_OPT; 227 long_options[long_options_nr-1].val=LONG_OPT;
231 tmp = xmalloc(strlen(name)+1); 228 long_options[long_options_nr-1].name=xstrdup(name);
232 strcpy(tmp,name);
233 long_options[long_options_nr-1].name=tmp;
234 } 229 }
235 long_options_nr++; 230 long_options_nr++;
236} 231}
@@ -326,7 +321,7 @@ int getopt_main(int argc, char *argv[])
326 /* For some reason, the original getopt gave no error 321 /* For some reason, the original getopt gave no error
327 when there were no arguments. */ 322 when there were no arguments. */
328 printf(" --\n"); 323 printf(" --\n");
329 exit(0); 324 return 0;
330 } else 325 } else
331 error_msg_and_die("missing optstring argument"); 326 error_msg_and_die("missing optstring argument");
332 } 327 }
@@ -336,7 +331,7 @@ int getopt_main(int argc, char *argv[])
336 optstr=xmalloc(strlen(argv[1])+1); 331 optstr=xmalloc(strlen(argv[1])+1);
337 strcpy(optstr,argv[1]+strspn(argv[1],"-+")); 332 strcpy(optstr,argv[1]+strspn(argv[1],"-+"));
338 argv[1]=argv[0]; 333 argv[1]=argv[0];
339 exit(generate_output(argv+1,argc-1,optstr,long_options)); 334 return (generate_output(argv+1,argc-1,optstr,long_options));
340 } 335 }
341 336
342 while ((opt=getopt_long(argc,argv,shortopts,longopts,NULL)) != EOF) 337 while ((opt=getopt_long(argc,argv,shortopts,longopts,NULL)) != EOF)
@@ -347,8 +342,7 @@ int getopt_main(int argc, char *argv[])
347 case 'o': 342 case 'o':
348 if (optstr) 343 if (optstr)
349 free(optstr); 344 free(optstr);
350 optstr=xmalloc(strlen(optarg)+1); 345 optstr=xstrdup(optarg);
351 strcpy(optstr,optarg);
352 break; 346 break;
353 case 'l': 347 case 'l':
354 add_long_options(optarg); 348 add_long_options(optarg);
@@ -356,8 +350,7 @@ int getopt_main(int argc, char *argv[])
356 case 'n': 350 case 'n':
357 if (name) 351 if (name)
358 free(name); 352 free(name);
359 name=xmalloc(strlen(optarg)+1); 353 name=xstrdup(optarg);
360 strcpy(name,optarg);
361 break; 354 break;
362 case 'q': 355 case 'q':
363 quiet_errors=1; 356 quiet_errors=1;
@@ -369,7 +362,7 @@ int getopt_main(int argc, char *argv[])
369 set_shell(optarg); 362 set_shell(optarg);
370 break; 363 break;
371 case 'T': 364 case 'T':
372 exit(4); 365 return 4;
373 case 'u': 366 case 'u':
374 quote=0; 367 quote=0;
375 break; 368 break;
@@ -381,8 +374,7 @@ int getopt_main(int argc, char *argv[])
381 if (optind >= argc) 374 if (optind >= argc)
382 error_msg_and_die("missing optstring argument"); 375 error_msg_and_die("missing optstring argument");
383 else { 376 else {
384 optstr=xmalloc(strlen(argv[optind])+1); 377 optstr=xstrdup(argv[optind]);
385 strcpy(optstr,argv[optind]);
386 optind++; 378 optind++;
387 } 379 }
388 } 380 }
@@ -390,7 +382,7 @@ int getopt_main(int argc, char *argv[])
390 argv[optind-1]=name; 382 argv[optind-1]=name;
391 else 383 else
392 argv[optind-1]=argv[0]; 384 argv[optind-1]=argv[0];
393 exit(generate_output(argv+optind-1,argc-optind+1,optstr,long_options)); 385 return (generate_output(argv+optind-1,argc-optind+1,optstr,long_options));
394} 386}
395 387
396/* 388/*