VirtualBox

Changeset 1183 in kBuild


Ignore:
Timestamp:
Oct 5, 2007 10:16:46 PM (17 years ago)
Author:
bird
Message:

Added --version and --help to all builtins.

Location:
trunk/src/kmk
Files:
1 added
18 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kmk/Makefile.am

    r1171 r1183  
    7272                kmkbuiltin/strmode.c \
    7373                kmkbuiltin/strlcpy.c \
    74                 kmkbuiltin/osdep.c
     74                kmkbuiltin/osdep.c \
     75                kmkbuiltin/version.c
    7576
    7677
     
    127128        -DKBUILD_VERSION_MAJOR=0 \
    128129        -DKBUILD_VERSION_MINOR=1 \
    129         -DKBUILD_VERSION_PATCH=0 \
     130        -DKBUILD_VERSION_PATCH=1 \
    130131        \
    131132        -DCONFIG_WITH_KMK_BUILTIN \
  • trunk/src/kmk/Makefile.kmk

    r1171 r1183  
    5151        kmkbuiltin/strmode.c \
    5252        kmkbuiltin/strlcpy.c \
     53        kmkbuiltin/version.c \
    5354        getopt.c \
    5455        getopt1.c \
  • trunk/src/kmk/kmkbuiltin.h

    r1162 r1183  
    4343extern int kmk_builtin_kDepIDB(int argc, char **argv, char **envp);
    4444
     45extern int kbuild_version(const char *argv0);
     46
  • trunk/src/kmk/kmkbuiltin/append.c

    r820 r1183  
    3939 * Prints the usage and return 1.
    4040 */
    41 static int usage(void)
     41static int usage(FILE *pf)
    4242{
    43     fprintf(stderr, "usage: append [-nv] file [string ...]\n");
     43    fprintf(pf,
     44            "usage: %s [-nv] file [string ...]\n"
     45            "   or: %s --version\n"
     46            "   or: %s --help\n",
     47            g_progname, g_progname, g_progname);
    4448    return 1;
    4549}
     
    6872       &&  argv[i][0] == '-'
    6973       &&  argv[i][1] != '\0' /* '-' is a file */
    70        &&  strchr("nv", argv[i][1]) /* valid option char */
     74       &&  strchr("-nv", argv[i][1]) /* valid option char */
    7175       )
    7276    {
    7377        char *psz = &argv[i][1];
    74         do
     78        if (*psz != '-')
    7579        {
    76             switch (*psz)
     80            do
    7781            {
    78                 case 'n':
    79                     fNewLine = 1;
    80                     break;
    81                 case 'v':
     82                switch (*psz)
     83                {
     84                    case 'n':
     85                        fNewLine = 1;
     86                        break;
     87                    case 'v':
    8288#ifndef kmk_builtin_append
    83                     fVariables = 1;
    84                     break;
     89                        fVariables = 1;
     90                        break;
    8591#else
    86                     errx(1, "Option '-v' isn't supported in external mode.");
    87                     return usage();
     92                        errx(1, "Option '-v' isn't supported in external mode.");
     93                        return usage(stderr);
    8894#endif
    89                 default:
    90                     errx(1, "Invalid option '%c'! (%s)", *psz, argv[i]);
    91                     return usage();
    92             }
    93         } while (*++psz);
     95                    default:
     96                        errx(1, "Invalid option '%c'! (%s)", *psz, argv[i]);
     97                        return usage(stderr);
     98                }
     99            } while (*++psz);
     100        }
     101        else if (!strcmp(psz, "-help"))
     102        {
     103            usage(stdout);
     104            return 0;
     105        }
     106        else if (!strcmp(psz, "-version"))
     107            return kbuild_version(argv[0]);
     108        else
     109            break;
    94110        i++;
    95111    }
     
    101117    {
    102118        errx(1, "missing filename!");
    103         return usage();
     119        return usage(stderr);
    104120    }
    105121    pFile = fopen(argv[i], "a");
  • trunk/src/kmk/kmkbuiltin/cat.c

    r942 r1183  
    7878#endif
    7979
     80#include "kmkbuiltin.h"
     81
     82
    8083int bflag, eflag, nflag, sflag, tflag, vflag;
    8184/*int rval;*/
    8285const char *filename;
    8386
    84 static int usage(void);
     87static struct option long_options[] =
     88{
     89    { "help",                                           no_argument, 0, 261 },
     90    { "version",                                        no_argument, 0, 262 },
     91    { 0, 0,     0, 0 },
     92};
     93
     94
     95static int usage(FILE *);
    8596static int scanfiles(char *argv[], int cooked);
    8697static int cook_cat(FILE *);
     
    92103
    93104int
    94 kmk_builtin_cat(int argc, char *argv[])
     105kmk_builtin_cat(int argc, char *argv[], char **envp)
    95106{
    96107        int ch, rc;
     
    111122#endif
    112123
    113         while ((ch = getopt(argc, argv, "benstuv")) != -1)
     124        while ((ch = getopt_long(argc, argv, "benstuv", long_options, NULL)) != -1)
    114125                switch (ch) {
    115126                case 'b':
     
    134145                        vflag = 1;
    135146                        break;
     147                case 261:
     148                        usage(stdout);
     149                        return 0;
     150                case 262:
     151                        return kbuild_version(argv[0]);
    136152                default:
    137                         return usage();
     153                        return usage(stderr);
    138154                }
    139155        argv += optind;
     
    151167
    152168static int
    153 usage(void)
    154 {
    155         fprintf(stderr, "usage: cat [-benstuv] [file ...]\n");
     169usage(FILE *fp)
     170{
     171        fprintf(fp, "usage: %s [-benstuv] [file ...]\n"
     172                                "   or: %s --help\n"
     173                                "   or: %s --version\n",
     174                        g_progname, g_progname, g_progname);
    156175        return 1;
    157176}
  • trunk/src/kmk/kmkbuiltin/cmp.c

    r1117 r1183  
    6363#  define lseek _lseeki64
    6464# endif
    65 #endif 
     65#endif
    6666#include <locale.h>
    6767
    6868#ifndef O_BINARY
    6969# define O_BINARY 0
    70 #endif 
     70#endif
    7171
    7272/*#include "extern.h"*/
    7373
     74#include "kmkbuiltin.h"
     75
     76
    7477static int      lflag, sflag;
     78
     79static struct option long_options[] =
     80{
     81    { "help",                                           no_argument, 0, 261 },
     82    { "version",                                        no_argument, 0, 262 },
     83    { 0, 0,     0, 0 },
     84};
     85
    7586
    7687/* this is kind of ugly but its the simplest way to avoid namespace mess. */
     
    8192#else
    8293#include "cmp_regular_std.c"
    83 #endif 
    84 
    85 static int usage(void);
     94#endif
     95
     96static int usage(FILE *);
    8697
    8798int
    88 kmk_builtin_cmp(int argc, char *argv[])
     99kmk_builtin_cmp(int argc, char *argv[], char **envp)
    89100{
    90101        struct stat sb1, sb2;
     
    107118        optind = 0; /* init */
    108119
    109         while ((ch = getopt(argc, argv, "ls")) != -1)
     120        while ((ch = getopt_long(argc, argv, "ls", long_options, NULL)) != -1)
    110121                switch (ch) {
    111122                case 'l':               /* print all differences */
     
    115126                        sflag = 1;
    116127                        break;
     128                case 261:
     129                        usage(stdout);
     130                        return 0;
     131                case 262:
     132                        return kbuild_version(argv[0]);
    117133                case '?':
    118134                default:
    119                         return usage();
     135                        return usage(stderr);
    120136                }
    121137        argv += optind;
     
    126142
    127143        if (argc < 2 || argc > 4)
    128                 return usage();
     144                return usage(stderr);
    129145
    130146        /* Backward compatibility -- handle "-" meaning stdin. */
     
    161177                skip1 = strtoll(argv[2], &ep, 0);
    162178                if (errno || ep == argv[2]) {
    163                         rc = usage();
     179                        rc = usage(stderr);
    164180                        goto l_exit;
    165181                }
     
    168184                        skip2 = strtoll(argv[3], &ep, 0);
    169185                        if (errno || ep == argv[3]) {
    170                                 rc = usage();
     186                                rc = usage(stderr);
    171187                                goto l_exit;
    172188                        }
     
    203219
    204220static int
    205 usage(void)
     221usage(FILE *fp)
    206222{
    207 
    208         (void)fprintf(stderr,
    209             "usage: cmp [-l | -s] file1 file2 [skip1 [skip2]]\n");
     223    fprintf(fp, "usage: %s [-l | -s] file1 file2 [skip1 [skip2]]\n"
     224                                "   or: %s --help\n"
     225                                "   or: %s --version\n",
     226                        g_progname, g_progname, g_progname);
    210227        return(ERR_EXIT);
    211228}
  • trunk/src/kmk/kmkbuiltin/cp.c

    r1141 r1183  
    7979#include "cp_extern.h"
    8080
     81#include "kmkbuiltin.h"
     82
     83
    8184#ifndef S_IFWHT
    8285#define S_IFWHT 0
     
    115118enum op { FILE_TO_FILE, FILE_TO_DIR, DIR_TO_DNE };
    116119
     120static struct option long_options[] =
     121{
     122    { "help",                                           no_argument, 0, 261 },
     123    { "version",                                        no_argument, 0, 262 },
     124    { 0, 0,     0, 0 },
     125};
     126
     127
    117128static int copy(char *[], enum op, int);
    118129static int mastercmp(const FTSENT * const *, const FTSENT * const *);
     
    120131static void siginfo(int __unused);
    121132#endif
     133static int usage(FILE *);
    122134
    123135int
    124 kmk_builtin_cp(int argc, char *argv[])
     136kmk_builtin_cp(int argc, char *argv[], char **envp)
    125137{
    126138        struct stat to_stat, tmp_stat;
     
    145157
    146158        Hflag = Lflag = Pflag = 0;
    147         while ((ch = getopt(argc, argv, "HLPRfinprv")) != -1)
     159        while ((ch = getopt_long(argc, argv, "HLPRfinprv", long_options, NULL)) != -1)
    148160                switch (ch) {
    149161                case 'H':
     
    191203                        vflag = 1;
    192204                        break;
     205                case 261:
     206                        usage(stdout);
     207                        return 0;
     208                case 262:
     209                        return kbuild_version(argv[0]);
    193210                default:
    194                         return usage();
     211                        return usage(stderr);
    195212                }
    196213        argc -= optind;
     
    198215
    199216        if (argc < 2)
    200                 return usage();
     217                return usage(stderr);
    201218
    202219        fts_options = FTS_NOCHDIR | FTS_PHYSICAL;
     
    270287                 */
    271288                if (argc > 1)
    272                         return usage();
     289                        return usage(stderr);
    273290                /*
    274291                 * Need to detect the case:
     
    573590}
    574591#endif
     592
     593
     594static int
     595usage(FILE *fp)
     596{
     597        fprintf(fp, "usage: %s [-R [-H | -L | -P]] [-f | -i | -n] [-pv] src target\n"
     598                                "   or: %s [-R [-H | -L | -P]] [-f | -i | -n] [-pv] src1 ... srcN directory\n"
     599                                "   or: %s --help\n"
     600                                "   or: %s --version\n",
     601                        g_progname, g_progname, g_progname, g_progname);
     602        return EX_USAGE;
     603}
  • trunk/src/kmk/kmkbuiltin/cp_extern.h

    r370 r1183  
    5858int     copy_special(struct stat *, int);
    5959int     setfile(struct stat *, int);
    60 int     usage(void);
  • trunk/src/kmk/kmkbuiltin/cp_utils.c

    r809 r1183  
    355355}
    356356
    357 int
    358 usage(void)
    359 {
    360 
    361         (void)fprintf(stderr, "%s\n%s\n",
    362 "usage: cp [-R [-H | -L | -P]] [-f | -i | -n] [-pv] src target",
    363 "       cp [-R [-H | -L | -P]] [-f | -i | -n] [-pv] src1 ... srcN directory");
    364         return EX_USAGE;
    365 }
  • trunk/src/kmk/kmkbuiltin/install.c

    r942 r1183  
    8181#endif
    8282
     83#include "kmkbuiltin.h"
     84
     85
    8386extern void * setmode(const char *p);
    8487extern mode_t getmode(const void *bbox, mode_t omode);
     
    117120static mode_t mode = S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH;
    118121static const char *suffix = BACKUP_SUFFIX;
     122
     123static struct option long_options[] =
     124{
     125    { "help",                                           no_argument, 0, 261 },
     126    { "version",                                        no_argument, 0, 262 },
     127    { 0, 0,     0, 0 },
     128};
     129
    119130
    120131static int      copy(int, const char *, int, const char *, off_t);
     
    129140static int      trymmap(int);
    130141#endif
    131 static int      usage(void);
     142static int      usage(FILE *);
    132143
    133144int
    134 kmk_builtin_install(int argc, char *argv[])
     145kmk_builtin_install(int argc, char *argv[], char **envp)
    135146{
    136147        struct stat from_sb, to_sb;
     
    158169        iflags = 0;
    159170        group = owner = NULL;
    160         while ((ch = getopt(argc, argv, "B:bCcdf:g:Mm:o:pSsv")) != -1)
     171        while ((ch = getopt_long(argc, argv, "B:bCcdf:g:Mm:o:pSsv", long_options, NULL)) != -1)
    161172                switch((char)ch) {
    162173                case 'B':
     
    217228                        verbose = 1;
    218229                        break;
     230                case 261:
     231                        usage(stdout);
     232                        return 0;
     233                case 262:
     234                        return kbuild_version(argv[0]);
    219235                case '?':
    220236                default:
    221                         return usage();
     237                        return usage(stderr);
    222238                }
    223239        argc -= optind;
     
    227243        if (dostrip && dodir) {
    228244                warnx("-d and -s may not be specified together");
    229                 return usage();
     245                return usage(stderr);
    230246        }
    231247
    232248        /* must have at least two arguments, except when creating directories */
    233249        if (argc == 0 || (argc == 1 && !dodir))
    234                 return usage();
     250                return usage(stderr);
    235251
    236252        /* need to make a temp copy so we can compare stripped version */
     
    292308        if (argc != 2) {
    293309                warnx("wrong number or types of arguments");
    294                 return usage();
     310                return usage(stderr);
    295311        }
    296312
     
    927943 */
    928944static int
    929 usage()
    930 {
    931         (void)fprintf(stderr,
    932 "usage: install [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode]\n"
    933 "               [-o owner] file1 file2\n"
    934 "       install [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode]\n"
    935 "               [-o owner] file1 ... fileN directory\n"
    936 "       install -d [-v] [-g group] [-m mode] [-o owner] directory ...\n");
     945usage(FILE *pf)
     946{
     947        fprintf(stderr,
     948"usage: %s [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode]\n"
     949"           [-o owner] file1 file2\n"
     950"   or: %s [-bCcpSsv] [-B suffix] [-f flags] [-g group] [-m mode]\n"
     951"           [-o owner] file1 ... fileN directory\n"
     952"   or: %s -d [-v] [-g group] [-m mode] [-o owner] directory ...\n"
     953"   or: %s --help\n"
     954"   or: %s --version\n",
     955                        g_progname, g_progname, g_progname, g_progname, g_progname);
    937956        return EX_USAGE;
    938957}
  • trunk/src/kmk/kmkbuiltin/kDepIDB.c

    r1165 r1183  
    788788static void usage(const char *argv0)
    789789{
    790     printf("syntax: %s -o <output> -t <target> [-f] [-s] <vc idb-file>\n", argv0);
     790    printf("usage: %s -o <output> -t <target> [-f] [-s] <vc idb-file>\n"
     791           "   or: %s --help\n"
     792           "   or: %s --version\n",
     793           argv0, argv0, argv0);
    791794}
    792795
     
    820823        if (argv[i][0] == '-')
    821824        {
    822             switch (argv[i][1])
     825            const char *psz = &argv[i][1];
     826            if (*psz == '-')
     827            {
     828                if (!strcmp(psz, "-help"))
     829                    psz = "?";
     830                else if (!strcmp(psz, "-version"))
     831                    psz = "v";
     832            }
     833
     834            switch (*psz)
    823835            {
    824836                /*
     
    896908
    897909                /*
     910                 * The mandatory version & help.
     911                 */
     912                case '?':
     913                    usage(argv[0]);
     914                    return 0;
     915                case 'v':
     916                    return kbuild_version(argv[0]);
     917
     918                /*
    898919                 * Invalid argument.
    899920                 */
  • trunk/src/kmk/kmkbuiltin/ln.c

    r942 r1183  
    6262#endif
    6363
     64#include "kmkbuiltin.h"
     65
    6466static int      fflag;                          /* Unlink existing files. */
    6567static int      hflag;                          /* Check new name for symlink first. */
     
    7072static int (*linkf)(const char *, const char *);
    7173static char     linkch;
     74static struct option long_options[] =
     75{
     76    { "help",                                           no_argument, 0, 261 },
     77    { "version",                                        no_argument, 0, 262 },
     78    { 0, 0,     0, 0 },
     79};
     80
    7281
    7382static int      linkit(const char *, const char *, int);
    74 static int      usage(void);
     83static int      usage(FILE *);
    7584
    7685
    7786int
    78 kmk_builtin_ln(int argc, char *argv[])
     87kmk_builtin_ln(int argc, char *argv[], char **envp)
    7988{
    8089        struct stat sb;
    81         char *p, *sourcedir;
     90        char *sourcedir;
    8291        int ch, exitval;
    8392
    84         /* initialize globals. */
    85         fflag = hflag = iflag = sflag = vflag = 0;
    86         linkch = 0;
    87         linkf = NULL;
    88 
    89         /* kmk: reset getopt() and set program name. */
    90         g_progname = argv[0];
    91         opterr = 1;
    92         optarg = NULL;
    93         optopt = 0;
    94         optind = 0; /* init */
    95 
    96 #if 0 /* kmk: we don't need this. */
    97         /*
    98          * Test for the special case where the utility is called as
    99          * "link", for which the functionality provided is greatly
    100          * simplified.
    101          */
    102         if ((p = rindex(argv[0], '/')) == NULL)
    103                 p = argv[0];
    104         else
    105                 ++p;
    106         if (strcmp(p, "link") == 0) {
    107                 while (getopt(argc, argv, "") != -1)
    108                         return usage();
    109                 argc -= optind;
    110                 argv += optind;
    111                 if (argc != 2)
    112                         return usage();
    113                 linkf = link;
    114                 return linkit(argv[0], argv[1], 0);
    115         }
    116 #else
    117         (void)p;
    118 #endif
    119 
    120 
    121         while ((ch = getopt(argc, argv, "fhinsv")) != -1)
     93        /* initialize globals. */
     94        fflag = hflag = iflag = sflag = vflag = 0;
     95        linkch = 0;
     96        linkf = NULL;
     97
     98        /* kmk: reset getopt() and set program name. */
     99        g_progname = argv[0];
     100        opterr = 1;
     101        optarg = NULL;
     102        optopt = 0;
     103        optind = 0; /* init */
     104
     105        while ((ch = getopt_long(argc, argv, "fhinsv", long_options, NULL)) != -1)
    122106                switch (ch) {
    123107                case 'f':
     
    139123                        vflag = 1;
    140124                        break;
     125                case 261:
     126                        usage(stdout);
     127                        return 0;
     128                case 262:
     129                        return kbuild_version(argv[0]);
    141130                case '?':
    142131                default:
    143                         return usage();
     132                        return usage(stderr);
    144133                }
    145134
     
    152141        switch(argc) {
    153142        case 0:
    154                 return usage();
     143                return usage(stderr);
    155144                /* NOTREACHED */
    156145        case 1:                         /* ln target */
     
    174163                return err(1, "%s", sourcedir);
    175164        if (!S_ISDIR(sb.st_mode))
    176                 return usage();
     165                return usage(stderr);
    177166        for (exitval = 0; *argv != sourcedir; ++argv)
    178167                exitval |= linkit(*argv, sourcedir, 1);
     
    261250
    262251static int
    263 usage(void)
    264 {
    265         (void)fprintf(stderr, "%s\n%s\n%s\n",
    266             "usage: ln [-fhinsv] source_file [target_file]",
    267             "       ln [-fhinsv] source_file ... target_dir",
    268             "       link source_file target_file");
     252usage(FILE *pf)
     253{
     254        fprintf(pf, "usage: %s [-fhinsv] source_file [target_file]\n"
     255                                "   or: %s [-fhinsv] source_file ... target_dir\n"
     256                "   or: %s source_file target_file\n"
     257                                "   or: %s --help\n"
     258                                "   or: %s --version\n");
    269259        return 1;
    270260}
  • trunk/src/kmk/kmkbuiltin/md5sum.c

    r1125 r1183  
    6565            );
    6666    return 1;
    67 }
    68 
    69 
    70 /**
    71  * Prints the version string.
    72  * @returns 0
    73  */
    74 static int version(void)
    75 {
    76 #ifdef kmk_builtin_md5sum
    77     fprintf(stdout, "kmk_md5sum (kBuild) %d.%d.%d\n"
    78                     "Copyright (c) 2007 knut st. osmundsen\n",
    79             KBUILD_VERSION_MAJOR, KBUILD_VERSION_MINOR, KBUILD_VERSION_PATCH);
    80 #else
    81     fprintf(stdout, "kmk_builtin_md5sum (kBuild) %d.%d.%d\n"
    82                     "Copyright (c) 2007 knut st. osmundsen\n",
    83             KBUILD_VERSION_MAJOR, KBUILD_VERSION_MINOR, KBUILD_VERSION_PATCH);
    84 #endif
    85     return 0;
    8667}
    8768
     
    713694
    714695                    case 'v':
    715                         return version();
     696                        return kbuild_version(argv[0]);
    716697
    717698                    /*
     
    761742}
    762743
    763 
  • trunk/src/kmk/kmkbuiltin/mkdir.c

    r942 r1183  
    6464#endif
    6565
     66#include "kmkbuiltin.h"
     67
     68
     69static int vflag;
     70static struct option long_options[] =
     71{
     72    { "help",                                           no_argument, 0, 261 },
     73    { "version",                                        no_argument, 0, 262 },
     74    { 0, 0,     0, 0 },
     75};
     76
     77
    6678extern void * setmode(const char *p);
    6779extern mode_t getmode(const void *bbox, mode_t omode);
    6880
    6981static int      build(char *, mode_t);
    70 static int      usage(void);
    71 
    72 static int vflag;
     82static int      usage(FILE *);
     83
    7384
    7485int
    75 kmk_builtin_mkdir(int argc, char *argv[])
     86kmk_builtin_mkdir(int argc, char *argv[], char **envp)
    7687{
    7788        int ch, exitval, success, pflag;
     
    91102        optopt = 0;
    92103        optind = 0; /* init */
    93         while ((ch = getopt(argc, argv, "m:pv")) != -1)
     104        while ((ch = getopt_long(argc, argv, "m:pv", long_options, NULL)) != -1)
    94105                switch(ch) {
    95106                case 'm':
     
    102113                        vflag = 1;
    103114                        break;
     115                case 261:
     116                        usage(stdout);
     117                        return 0;
     118                case 262:
     119                        return kbuild_version(argv[0]);
    104120                case '?':
    105                 default:
    106                         return usage();
     121                        default:
     122                        return usage(stderr);
    107123                }
    108124
     
    110126        argv += optind;
    111127        if (argv[0] == NULL)
    112                 return usage();
     128                return usage(stderr);
    113129
    114130        if (mode == NULL) {
     
    252268
    253269static int
    254 usage(void)
    255 {
    256 
    257         (void)fprintf(stderr, "usage: mkdir [-pv] [-m mode] directory ...\n");
     270usage(FILE *pf)
     271{
     272        fprintf(pf, "usage: %s [-pv] [-m mode] directory ...\n"
     273                                "   or: %s --help\n"
     274                                "   or: %s --version\n",
     275                        g_progname, g_progname, g_progname);
    258276        return EX_USAGE;
    259277}
  • trunk/src/kmk/kmkbuiltin/mv.c

    r942 r1183  
    7979#endif
    8080
    81 #if !defined(__FreeBSD__) && !defined(__APPLE__)
    82 extern void strmode(mode_t mode, char *p);
    83 #endif
     81#include "kmkbuiltin.h"
     82
    8483
    8584static int fflg, iflg, nflg, vflg;
     85static struct option long_options[] =
     86{
     87    { "help",                                           no_argument, 0, 261 },
     88    { "version",                                        no_argument, 0, 262 },
     89    { 0, 0,     0, 0 },
     90};
     91
    8692
    8793static int      do_move(char *, char *);
     
    9096static int      copy(char *, char *);
    9197#endif
    92 static int      usage(void);
     98static int      usage(FILE *);
     99
     100#if !defined(__FreeBSD__) && !defined(__APPLE__)
     101extern void strmode(mode_t mode, char *p);
     102#endif
    93103
    94104#if !defined(__FreeBSD__) && !defined(__APPLE__)
     
    115125
    116126int
    117 kmk_builtin_mv(int argc, char *argv[])
     127kmk_builtin_mv(int argc, char *argv[], char **envp)
    118128{
    119129        size_t baselen, len;
     
    134144        optind = 0; /* init */
    135145
    136         while ((ch = getopt(argc, argv, "finv")) != -1)
     146        while ((ch = getopt_long(argc, argv, "finv", long_options, NULL)) != -1)
    137147                switch (ch) {
    138148                case 'i':
     
    151161                        vflg = 1;
    152162                        break;
     163                case 261:
     164                        usage(stdout);
     165                        return 0;
     166                case 262:
     167                        return kbuild_version(argv[0]);
    153168                default:
    154                         return usage();
     169                        return usage(stderr);
    155170                }
    156171        argc -= optind;
     
    158173
    159174        if (argc < 2)
    160                 return usage();
     175                return usage(stderr);
    161176
    162177        /*
     
    166181        if (stat(argv[argc - 1], &sb) || !S_ISDIR(sb.st_mode)) {
    167182                if (argc > 2)
    168                         return usage();
     183                        return usage(stderr);
    169184                return do_move(argv[0], argv[1]);
    170185        }
     
    481496
    482497static int
    483 usage(void)
    484 {
    485 
    486         (void)fprintf(stderr, "%s\n%s\n",
    487                       "usage: mv [-f | -i | -n] [-v] source target",
    488                       "       mv [-f | -i | -n] [-v] source ... directory");
     498usage(FILE *pf)
     499{
     500        fprintf(pf, "usage: %s [-f | -i | -n] [-v] source target\n"
     501                                "   or: %s [-f | -i | -n] [-v] source ... directory\n"
     502                                "   or: %s --help\n"
     503                                "   or: %s --version\n");
    489504        return EX_USAGE;
    490505}
  • trunk/src/kmk/kmkbuiltin/printf.c

    r942 r1183  
    6767#endif
    6868
     69#include "kmkbuiltin.h"
     70
     71
    6972#ifdef __GNUC__
    7073#define ESCAPE '\e'
     
    7275#define ESCAPE 033
    7376#endif
     77
     78
     79static size_t   b_length;
     80static char     *b_fmt;
     81static int      rval;
     82static char  **gargv;
     83static struct option long_options[] =
     84{
     85    { "help",                                           no_argument, 0, 261 },
     86    { "version",                                        no_argument, 0, 262 },
     87    { 0, 0,     0, 0 },
     88};
     89
    7490
    7591static void      conv_escape_str(char *, void (*)(int));
     
    84100static char     *mklong(const char *, int);
    85101static void      check_conversion(const char *, const char *);
    86 static void      usage(void);
     102static int       usage(FILE *);
    87103
    88104static void     b_count(int);
    89105static void     b_output(int);
    90 static size_t   b_length;
    91 static char     *b_fmt;
    92 
    93 static int      rval;
    94 static char  **gargv;
    95106
    96107#ifdef BUILTIN          /* csh builtin */
     
    127138}
    128139
    129 int kmk_builtin_printf(int argc, char *argv[])
     140int kmk_builtin_printf(int argc, char *argv[], char **envp)
    130141{
    131142        char *fmt, *start;
     
    152163#endif
    153164
    154         while ((ch = getopt(argc, argv, "")) != -1) {
     165        while ((ch = getopt_long(argc, argv, "", long_options, NULL)) != -1) {
    155166                switch (ch) {
     167                case 261:
     168                        usage(stdout);
     169                        return 0;
     170                case 262:
     171                        return kbuild_version(argv[0]);
    156172                case '?':
    157173                default:
    158                         usage();
    159                         return 1;
     174                        return usage(stderr);
    160175                }
    161176        }
     
    164179
    165180        if (argc < 1) {
    166                 usage();
    167                 return 1;
     181                return usage(stderr);
    168182        }
    169183
     
    675689}
    676690
    677 static void
    678 usage(void)
    679 {
    680         (void)fprintf(stderr, "Usage: %s format [arg ...]\n", g_progname);
    681 }
     691static int
     692usage(FILE *pf)
     693{
     694        fprintf(pf, "usage: %s format [arg ...]\n"
     695                                "   or: %s --help\n"
     696                                "   or: %s --version\n",
     697                        g_progname, g_progname, g_progname);
     698        return 1;
     699}
  • trunk/src/kmk/kmkbuiltin/rm.c

    r942 r1183  
    7272#endif
    7373
     74#include "kmkbuiltin.h"
     75
     76
    7477#ifdef __EMX__
    7578#undef S_IFWHT
     
    9093
    9194static char *argv0;
     95
     96static struct option long_options[] =
     97{
     98    { "help",                                           no_argument, 0, 261 },
     99    { "version",                                        no_argument, 0, 262 },
     100    { 0, 0,     0, 0 },
     101};
     102
    92103
    93104static int      check(char *, char *, struct stat *);
     
    98109static void     rm_tree(char **);
    99110#endif
    100 static int      usage(void);
     111static int      usage(FILE *);
     112
     113
    101114
    102115/*
     
    108121 */
    109122int
    110 kmk_builtin_rm(int argc, char *argv[])
     123kmk_builtin_rm(int argc, char *argv[], char **envp)
    111124{
    112125        int ch, rflag;
    113         char *p;
    114 
    115         /* reinitialize globals */
    116         argv0 = argv[0];
    117         dflag = eval = fflag = iflag = Pflag = vflag = Wflag = stdin_ok = 0;
    118         uid = 0;
    119 
    120         /* kmk: reset getopt and set program name. */
    121         g_progname = argv[0];
    122         opterr = 1;
    123         optarg = NULL;
    124         optopt = 0;
    125         optind = 0; /* init */
    126 
    127 #if 0 /* kmk: we don't need this */
    128         /*
    129          * Test for the special case where the utility is called as
    130          * "unlink", for which the functionality provided is greatly
    131          * simplified.
    132          */
    133         if ((p = rindex(argv[0], '/')) == NULL)
    134                 p = argv[0];
    135         else
    136                 ++p;
    137         if (strcmp(p, "unlink") == 0) {
    138                 while (getopt(argc, argv, "") != -1)
    139                         return usage();
    140                 argc -= optind;
    141                 argv += optind;
    142                 if (argc != 1)
    143                         return usage();
    144                 rm_file(&argv[0]);
    145                 return eval;
    146         }
    147 #else
    148         (void)p;
    149 #endif
     126
     127        /* reinitialize globals */
     128        argv0 = argv[0];
     129        dflag = eval = fflag = iflag = Pflag = vflag = Wflag = stdin_ok = 0;
     130        uid = 0;
     131
     132        /* kmk: reset getopt and set program name. */
     133        g_progname = argv[0];
     134        opterr = 1;
     135        optarg = NULL;
     136        optopt = 0;
     137        optind = 0; /* init */
     138
    150139        Pflag = rflag = 0;
    151         while ((ch = getopt(argc, argv, "dfiPRrvW")) != -1)
     140        while ((ch = getopt_long(argc, argv, "dfiPRrvW", long_options, NULL)) != -1)
    152141                switch(ch) {
    153142                case 'd':
     
    182171                        break;
    183172#endif
     173                case 261:
     174                        usage(stdout);
     175                        return 0;
     176                case 262:
     177                        return kbuild_version(argv[0]);
     178                case '?':
    184179                default:
    185                         return usage();
     180                        return usage(stderr);
    186181                }
    187182        argc -= optind;
     
    191186                if (fflag)
    192187                        return (0);
    193                 return usage();
     188                return usage(stderr);
    194189        }
    195190
     
    603598
    604599static int
    605 usage(void)
    606 {
    607 
    608         (void)fprintf(stderr, "%s\n%s\n",
    609             "usage: rm [-f | -i] [-dPRrvW] file ...\n",
    610             "       unlink file");
     600usage(FILE *pf)
     601{
     602        fprintf(pf, "usage: %s [-f | -i] [-dPRrvW] file ...\n"
     603                                "   or: %s --help\n"
     604                                "   or: %s --version\n",
     605                        g_progname, g_progname, g_progname);
    611606        return EX_USAGE;
    612607}
  • trunk/src/kmk/kmkbuiltin/rmdir.c

    r1151 r1183  
    5151#include <unistd.h>
    5252#include "getopt.h"
     53#include "kmkbuiltin.h"
    5354
    5455#ifdef _MSC_VER
     
    5758
    5859static int rm_path(char *);
    59 static int usage(void);
     60static int usage(FILE *);
    6061
    6162static int pflag;
     
    6667static struct option long_options[] =
    6768{
     69    { "help",                       no_argument, 0, 262 },
    6870    { "ignore-fail-on-non-empty",   no_argument, 0, 260 },
    6971    { "ignore-fail-on-not-exist",   no_argument, 0, 261 },
    7072    { "parents",                    no_argument, 0, 'p' },
    7173    { "verbose",                    no_argument, 0, 'v' },
     74    { "version",                    no_argument, 0, 263 },
    7275    { 0, 0,     0, 0 },
    7376};
     
    7578
    7679int
    77 kmk_builtin_rmdir(int argc, char *argv[])
     80kmk_builtin_rmdir(int argc, char *argv[], char **envp)
    7881{
    7982        int ch, errors;
     
    102105                        ignore_fail_on_not_exist = 1;
    103106                        break;
     107                case 262:
     108                        return kbuild_version(argv[0]);
     109                case 263:
     110                        usage(stdout);
     111                        return 0;
    104112                case '?':
    105113                default:
    106                         return usage();
     114                        return usage(stderr);
    107115                }
    108116        argc -= optind;
     
    110118
    111119        if (argc == 0)
    112                 return /*usage()*/0;
     120                return /*usage(stderr)*/0;
    113121
    114122        for (errors = 0; *argv; argv++) {
     
    181189
    182190static int
    183 usage(void)
     191usage(FILE *pf)
    184192{
    185 
    186         (void)fprintf(stderr, "usage: rmdir [-pv --ignore-fail-on-non-empty --ignore-fail-on-not-exist] directory ...\n");
     193        (void)fprintf(pf, "usage: %s [-pv --ignore-fail-on-non-empty --ignore-fail-on-not-exist] directory ...\n"
     194                          "   or: %s --help\n"
     195                          "   or: %s --version\n",
     196                      g_progname, g_progname, g_progname);
    187197        return 1;
    188198}
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette