1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
/******************************************************************************
**
** rm_clp.c
**
** C file for command line parser
**
** Automatically created by genparse v0.8.1
**
** See http://genparse.sourceforge.net for details and updates
**
******************************************************************************/
#include <string.h>
#include <stdlib.h>
#include <getopt.h>
#include "rm_clp.h"
static struct option const long_options[] =
{
{"directory", no_argument, NULL, 'd'},
{"force", no_argument, NULL, 'f'},
{"interactive", no_argument, NULL, 'i'},
{"recursive", no_argument, NULL, 'r'},
{"verbose", no_argument, NULL, 'v'},
{"help", no_argument, NULL, 'h'},
{"version", no_argument, NULL, 256},
{NULL, 0, NULL, 0}
};
/*----------------------------------------------------------------------------
**
** Cmdline ()
**
** Parse the argv array of command line parameters
**
**--------------------------------------------------------------------------*/
void Cmdline (struct arg_t *my_args, int argc, char *argv[])
{
extern char *optarg;
extern int optind;
int c;
int errflg = 0;
my_args->directory = false;
my_args->force = false;
my_args->interactive = false;
my_args->recursive = false;
my_args->verbose = false;
my_args->help = false;
my_args->version = false;
optind = 0;
while ((c = getopt_long (argc, argv, "dfirRvh", long_options, &optind)) != - 1)
{
switch (c)
{
case 'd':
my_args->directory = true;
break;
case 'f':
my_args->force = true;
break;
case 'i':
my_args->interactive = true;
break;
case 'r':
case 'R':
my_args->recursive = true;
break;
case 'v':
my_args->verbose = true;
break;
case 'h':
my_args->help = true;
usage (EXIT_SUCCESS, argv[0]);
break;
case 256:
my_args->version = true;
break;
default:
usage (EXIT_FAILURE, argv[0]);
}
} /* while */
if (errflg)
usage (EXIT_FAILURE, argv[0]);
if (optind >= argc)
my_args->optind = 0;
else
my_args->optind = optind;
}
/*----------------------------------------------------------------------------
**
** usage ()
**
** Print out usage information, then exit
**
**--------------------------------------------------------------------------*/
void usage (int status, char *program_name)
{
if (status != EXIT_SUCCESS)
fprintf (stderr, _("Try `%s --help' for more information.\n"),
program_name);
else
{
printf (_("\
Remove (unlink) the FILE(s).\n\
\n\
Usage: %s [OPTION]... FILE...\n\
-d, --directory unlink directory, even if non-empty (super-user only)\n\
-f, --force ignore nonexistant files, never prompt\n\
-i, --interactive prompt before any removal\n\
-r -R, --recursive remove the contents of directories recursively\n\
-v, --verbose explain what is being done\n\
-h, --help print this help and exit\n\
--version print version information and exit\n\
\n\
To remove a file whose name starts with a `-', for example `-foo',\n\
use one of these commands:\n\
%s -- -foo\n\
\n\
%s ./-foo\n\
\n\
Note that if you use rm to remove a file, it is usually possible to recover\n\
the contents of that file. If you want more assurance that the contents are\n\
truly unrecoverable, consider using shred.\n"), program_name, program_name, program_name);
emit_bug_reporting_address ();
}
exit (status);
}
|