fork download
  1. /* Utility to accept --help and --version options as unobtrusively as possible.
  2.  
  3.   Copyright (C) 1993-1994, 1998-2000, 2002-2006, 2009-2016 Free Software
  4.   Foundation, Inc.
  5.  
  6.   This program is free software: you can redistribute it and/or modify
  7.   it under the terms of the GNU General Public License as published by
  8.   the Free Software Foundation; either version 3 of the License, or
  9.   (at your option) any later version.
  10.  
  11.   This program is distributed in the hope that it will be useful,
  12.   but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14.   GNU General Public License for more details.
  15.  
  16.   You should have received a copy of the GNU General Public License
  17.   along with this program. If not, see <http://w...content-available-to-author-only...u.org/licenses/>. */
  18.  
  19. /* Written by Jim Meyering. */
  20.  
  21. #include <config.h>
  22.  
  23. /* Specification. */
  24. #include "long-options.h"
  25.  
  26. #include <stdarg.h>
  27. #include <stdio.h>
  28. #include <stdlib.h>
  29. #include <getopt.h>
  30.  
  31. #include "version-etc.h"
  32.  
  33. static struct option const long_options[] =
  34. {
  35. {"help", no_argument, NULL, 'h'},
  36. {"version", no_argument, NULL, 'v'},
  37. {NULL, 0, NULL, 0}
  38. };
  39.  
  40. /* Process long options --help and --version, but only if argc == 2.
  41.   Be careful not to gobble up "--". */
  42.  
  43. void
  44. parse_long_options (int argc,
  45. char **argv,
  46. const char *command_name,
  47. const char *package,
  48. const char *version,
  49. void (*usage_func) (int),
  50. /* const char *author1, ...*/ ...)
  51. {
  52. int c;
  53. int saved_opterr;
  54.  
  55. saved_opterr = opterr;
  56.  
  57. /* Don't print an error message for unrecognized options. */
  58. opterr = 0;
  59.  
  60. if (argc == 2
  61. && (c = getopt_long (argc, argv, "+", long_options, NULL)) != -1)
  62. {
  63. switch (c)
  64. {
  65. case 'h':
  66. (*usage_func) (EXIT_SUCCESS);
  67. break;
  68.  
  69. case 'v':
  70. {
  71. va_list authors;
  72. va_start (authors, usage_func);
  73. version_etc_va (stdout, command_name, package, version, authors);
  74. exit (0);
  75. }
  76.  
  77. default:
  78. /* Don't process any other long-named options. */
  79. break;
  80. }
  81. }
  82.  
  83. /* Restore previous value. */
  84. opterr = saved_opterr;
  85.  
  86. /* Reset this to zero so that getopt internals get initialized from
  87.   the probably-new parameters when/if getopt is called later. */
  88. optind = 0;
  89. }
  90.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.c:21:10: fatal error: 'config.h' file not found
#include <config.h>
         ^~~~~~~~~~
1 error generated.
stdout
Standard output is empty