Ignore:
Timestamp:
Oct 6, 2007, 12:16:46 AM (18 years ago)
Author:
bird
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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}
Note: See TracChangeset for help on using the changeset viewer.