104Β {"ignore-environment", no_argument, NULL, 'i'},105Β {"unset", required_argument, NULL, 'u'},106Β {GETOPT_HELP_OPTION_DECL},107Β {GETOPT_VERSION_OPTION_DECL},108Β {NULL, 0, NULL, 0}109 };GNU Coreutils ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΠΎΠ±ΡΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°Π½Π°Π»ΠΈΠ· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²). ΠΠ»Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΈΠ΄ΠΈΠΎΠΌΡ Π±ΡΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ². ΠΠ²ΡΠΌΡ ΡΠ°ΠΊΠΈΠΌ ΠΌΠ°ΠΊΡΠΎΡΠ°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ
GETOPT_HELP_OPTION_DECLGETOPT_VERSION_OPTIONusage()_("string")111 void112 usage(int status)113 {114 Β if (status '= 0)115Β Β fprintf(stderr, _("Try '%s --help' for more information.\n"),116Β Β Β program_name);117Β else118Β {119Β Β printf (_("\120Β Β Β Usage: %s [OPTION]... [-] [NAME=VALUE]... [COMMAND [ARG]...]\n"),121Β Β Β program_name);122Β Β fputs (_("\123Β Β Β Set each NAME to VALUE in the environment and run COMMAND. \n\124Β Β Β \n\125Β Β Β -i, --ignore-environment start with an empty environment\n\126Β Β Β -u, --unset=NAME remove variable from the environment\n\127Β Β Β "), stdout);128Β Β fputs(HELP_OPTION_DESCRIPTION, stdout);129Β Β fputs(VERSION_OPTION_DESCRIPTION, stdout);130Β Β fputs(_("\131Β Β Β \n\132Β Β Β A mere - implies -i. If no COMMAND, print the resulting\133Β Β Β environment.\n"), stdout);134Β Β printf(_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);135Β }136Β exit(status);137 }ΠΠ΅ΡΠ²Π°Ρ ΡΠ°ΡΡΡ
main()setlocale()bindtextdomain()textdomain()main() envpatexit()stdoutgetopt_long()139 int140 main(register int argc, register char **argv, char **envp)141 {142 Β char *dummy_environ[1];143 Β int optc;144Β int ignore_environment = 0;145146Β program_name = argv[0];147Β setlocale(LC_ALL, "");148Β bindtextdomain(PACKAGE, LOCALEDIR);149Β textdomain(PACKAGE);150151Β atexit(close_stdout);152153Β while ((optc = getopt_long(argc, argv, "+iu:", longopts, NULL)) != -1)154Β {155Β Β switch (optc)156Β Β {157Β Β Β case 0:158Β Β Β break;159Β Β case 'i':160Β Β Β ignore_environment = 1;161Β Β Β break;162Β Β case 'u':163Β Β Β break;164Β Β case_GETOPT_HELP_CHAR;165Β Β case_GETOPT_VERSION_CHAR(PROGRAM_NAME, AUTHORS);166Β Β default:167Β Β Β usage(2);168Β Β }169Β }170171Β if (optind != argc && !strcmp(argv[optind], "-"))172Β Β ignore_environment = 1;ΠΠΎΡ ΠΎΡΡΡΠ²ΠΎΠΊ ΠΈΠ· ΡΠ°ΠΉΠ»Π°
src/sys2.hcase_GETOPT_xxx/* ΠΡΠ½Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠΊΠΎΠ±ΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ --help ΠΈΒ Β --version. *//* ΠΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ²Π°ΡΡ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΠΏΡΠΈΠΉ,Β Β ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ CHAR_MAX + 1 ΠΈ Ρ.Π΄. ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅Β Β CHAR_MIN - 1, Ρ.ΠΊ. ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π²Π½ΡΡΡΡΡ -1, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΉ getopt.*/enum {Β GETOPT_HELP_CHAR = (CHAR_MIN β 2),Β GETOPT_VERSION_CHAR = (CHAR_MIN - 3)};