Annotation of embedaddon/lrzsz/lib/long-options.c, revision 1.1
1.1 ! misho 1: /* Utility to accept --help and --version options as unobtrusively as possible.
! 2: Copyright (C) 1993, 1994 Free Software Foundation, Inc.
! 3:
! 4: This program is free software; you can redistribute it and/or modify
! 5: it under the terms of the GNU General Public License as published by
! 6: the Free Software Foundation; either version 2, or (at your option)
! 7: any later version.
! 8:
! 9: This program is distributed in the hope that it will be useful,
! 10: but WITHOUT ANY WARRANTY; without even the implied warranty of
! 11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! 12: GNU General Public License for more details.
! 13:
! 14: You should have received a copy of the GNU General Public License
! 15: along with this program; if not, write to the Free Software
! 16: Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
! 17:
! 18: /* Jim Meyering (meyering@comco.com) */
! 19:
! 20: #ifdef HAVE_CONFIG_H
! 21: #include <config.h>
! 22: #endif
! 23:
! 24: #include <stdio.h>
! 25: #include <getopt.h>
! 26: #include "long-options.h"
! 27:
! 28: static struct option const long_options[] =
! 29: {
! 30: {"help", no_argument, 0, 'h'},
! 31: {"version", no_argument, 0, 'v'},
! 32: {0, 0, 0, 0}
! 33: };
! 34:
! 35: /* Process long options --help and --version, but only if argc == 2.
! 36: Be careful not to gobble up `--'. */
! 37: void
! 38: parse_long_options (argc, argv,version, usage)
! 39: int argc;
! 40: char **argv;
! 41: void (*version)();
! 42: void (*usage)();
! 43: {
! 44: int c;
! 45: int saved_opterr;
! 46: int saved_optind;
! 47:
! 48: saved_opterr = opterr;
! 49: saved_optind = optind;
! 50:
! 51: /* Don't print an error message for unrecognized options. */
! 52: opterr = 0;
! 53:
! 54: if (argc == 2
! 55: && (c = getopt_long (argc, argv, "+", long_options, (int *) 0)) != EOF)
! 56: {
! 57: switch (c)
! 58: {
! 59: case 'h':
! 60: (*usage) (0);
! 61:
! 62: case 'v':
! 63: (*version) (0);
! 64: /* printf ("%s (%s) %s\n", command_name, package, version_string); */
! 65: exit (0);
! 66:
! 67: default:
! 68: /* Don't process any other long-named options. */
! 69: break;
! 70: }
! 71: }
! 72:
! 73: /* Restore previous value. */
! 74: opterr = saved_opterr;
! 75:
! 76: /* Restore optind in case it has advanced past a leading `--'. */
! 77: optind = saved_optind;
! 78: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>