| Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/coreutils/src/src/printenv.c | 
| Source code | Switch to Preprocessed file | 
| Line | Source | Count | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | /* printenv -- print all or part of environment | - | ||||||||||||||||||||||||
| 2 | Copyright (C) 1989-2018 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 3 of the License, or | - | ||||||||||||||||||||||||
| 7 | (at your option) 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, see <https://www.gnu.org/licenses/>. */ | - | ||||||||||||||||||||||||
| 16 | - | |||||||||||||||||||||||||
| 17 | /* Usage: printenv [variable...] | - | ||||||||||||||||||||||||
| 18 | - | |||||||||||||||||||||||||
| 19 | If no arguments are given, print the entire environment. | - | ||||||||||||||||||||||||
| 20 | If one or more variable names are given, print the value of | - | ||||||||||||||||||||||||
| 21 | each one that is set, and nothing for ones that are not set. | - | ||||||||||||||||||||||||
| 22 | - | |||||||||||||||||||||||||
| 23 | Exit status: | - | ||||||||||||||||||||||||
| 24 | 0 if all variables specified were found | - | ||||||||||||||||||||||||
| 25 | 1 if not | - | ||||||||||||||||||||||||
| 26 | 2 if some other error occurred | - | ||||||||||||||||||||||||
| 27 | - | |||||||||||||||||||||||||
| 28 | David MacKenzie and Richard Mlynarik */ | - | ||||||||||||||||||||||||
| 29 | - | |||||||||||||||||||||||||
| 30 | #include <config.h> | - | ||||||||||||||||||||||||
| 31 | #include <stdio.h> | - | ||||||||||||||||||||||||
| 32 | #include <sys/types.h> | - | ||||||||||||||||||||||||
| 33 | #include <getopt.h> | - | ||||||||||||||||||||||||
| 34 | - | |||||||||||||||||||||||||
| 35 | #include "system.h" | - | ||||||||||||||||||||||||
| 36 | - | |||||||||||||||||||||||||
| 37 | /* Exit status for syntax errors, etc. */ | - | ||||||||||||||||||||||||
| 38 | enum { PRINTENV_FAILURE = 2 }; | - | ||||||||||||||||||||||||
| 39 | - | |||||||||||||||||||||||||
| 40 | /* The official name of this program (e.g., no 'g' prefix). */ | - | ||||||||||||||||||||||||
| 41 | #define PROGRAM_NAME "printenv" | - | ||||||||||||||||||||||||
| 42 | - | |||||||||||||||||||||||||
| 43 | #define AUTHORS \ | - | ||||||||||||||||||||||||
| 44 | proper_name ("David MacKenzie"), \ | - | ||||||||||||||||||||||||
| 45 | proper_name ("Richard Mlynarik") | - | ||||||||||||||||||||||||
| 46 | - | |||||||||||||||||||||||||
| 47 | static struct option const longopts[] = | - | ||||||||||||||||||||||||
| 48 | { | - | ||||||||||||||||||||||||
| 49 | {"null", no_argument, NULL, '0'}, | - | ||||||||||||||||||||||||
| 50 | {GETOPT_HELP_OPTION_DECL}, | - | ||||||||||||||||||||||||
| 51 | {GETOPT_VERSION_OPTION_DECL}, | - | ||||||||||||||||||||||||
| 52 | {NULL, 0, NULL, 0} | - | ||||||||||||||||||||||||
| 53 | }; | - | ||||||||||||||||||||||||
| 54 | - | |||||||||||||||||||||||||
| 55 | void | - | ||||||||||||||||||||||||
| 56 | usage (int status) | - | ||||||||||||||||||||||||
| 57 | { | - | ||||||||||||||||||||||||
| 58 | if (status != EXIT_SUCCESS) 
 | 3-5 | ||||||||||||||||||||||||
| 59 | emit_try_help (); executed 3 times by 1 test:  end of blockExecuted by: 
 | 3 | ||||||||||||||||||||||||
| 60 | else | - | ||||||||||||||||||||||||
| 61 | { | - | ||||||||||||||||||||||||
| 62 | printf (_("\ | - | ||||||||||||||||||||||||
| 63 | Usage: %s [OPTION]... [VARIABLE]...\n\ | - | ||||||||||||||||||||||||
| 64 | Print the values of the specified environment VARIABLE(s).\n\ | - | ||||||||||||||||||||||||
| 65 | If no VARIABLE is specified, print name and value pairs for them all.\n\ | - | ||||||||||||||||||||||||
| 66 | \n\ | - | ||||||||||||||||||||||||
| 67 | "), | - | ||||||||||||||||||||||||
| 68 | program_name); | - | ||||||||||||||||||||||||
| 69 | fputs (_("\ | - | ||||||||||||||||||||||||
| 70 | -0, --null end each output line with NUL, not newline\n\ | - | ||||||||||||||||||||||||
| 71 | "), stdout); | - | ||||||||||||||||||||||||
| 72 | fputs (HELP_OPTION_DESCRIPTION, stdout); | - | ||||||||||||||||||||||||
| 73 | fputs (VERSION_OPTION_DESCRIPTION, stdout); | - | ||||||||||||||||||||||||
| 74 | printf (USAGE_BUILTIN_WARNING, PROGRAM_NAME); | - | ||||||||||||||||||||||||
| 75 | emit_ancillary_info (PROGRAM_NAME); | - | ||||||||||||||||||||||||
| 76 | } executed 5 times by 1 test:  end of blockExecuted by: 
 | 5 | ||||||||||||||||||||||||
| 77 | exit (status); executed 8 times by 1 test:  exit (status);Executed by: 
 | 8 | ||||||||||||||||||||||||
| 78 | } | - | ||||||||||||||||||||||||
| 79 | - | |||||||||||||||||||||||||
| 80 | int | - | ||||||||||||||||||||||||
| 81 | main (int argc, char **argv) | - | ||||||||||||||||||||||||
| 82 | { | - | ||||||||||||||||||||||||
| 83 | char **env; | - | ||||||||||||||||||||||||
| 84 | char *ep, *ap; | - | ||||||||||||||||||||||||
| 85 | int i; | - | ||||||||||||||||||||||||
| 86 | bool ok; | - | ||||||||||||||||||||||||
| 87 | int optc; | - | ||||||||||||||||||||||||
| 88 | bool opt_nul_terminate_output = false; | - | ||||||||||||||||||||||||
| 89 | - | |||||||||||||||||||||||||
| 90 | initialize_main (&argc, &argv); | - | ||||||||||||||||||||||||
| 91 | set_program_name (argv[0]); | - | ||||||||||||||||||||||||
| 92 | setlocale (LC_ALL, ""); | - | ||||||||||||||||||||||||
| 93 | bindtextdomain (PACKAGE, LOCALEDIR); | - | ||||||||||||||||||||||||
| 94 | textdomain (PACKAGE); | - | ||||||||||||||||||||||||
| 95 | - | |||||||||||||||||||||||||
| 96 | initialize_exit_failure (PRINTENV_FAILURE); | - | ||||||||||||||||||||||||
| 97 | atexit (close_stdout); | - | ||||||||||||||||||||||||
| 98 | - | |||||||||||||||||||||||||
| 99 | while ((optc = getopt_long (argc, argv, "+iu:0", longopts, NULL)) != -1) 
 | 16-20 | ||||||||||||||||||||||||
| 100 | { | - | ||||||||||||||||||||||||
| 101 | switch (optc) | - | ||||||||||||||||||||||||
| 102 | { | - | ||||||||||||||||||||||||
| 103 | case '0': executed 7 times by 1 test:  case '0':Executed by: 
 | 7 | ||||||||||||||||||||||||
| 104 | opt_nul_terminate_output = true; | - | ||||||||||||||||||||||||
| 105 | break; executed 7 times by 1 test:  break;Executed by: 
 | 7 | ||||||||||||||||||||||||
| 106 | case_GETOPT_HELP_CHAR; never executed:  break;executed 5 times by 1 test:  case GETOPT_HELP_CHAR:Executed by: 
 | 0-5 | ||||||||||||||||||||||||
| 107 | case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS); executed 5 times by 1 test:  exit ( 0 );Executed by: 
 never executed:  break;executed 5 times by 1 test:  case GETOPT_VERSION_CHAR:Executed by: 
 | 0-5 | ||||||||||||||||||||||||
| 108 | default: executed 3 times by 1 test:  default:Executed by: 
 | 3 | ||||||||||||||||||||||||
| 109 | usage (PRINTENV_FAILURE); | - | ||||||||||||||||||||||||
| 110 | } never executed:  end of block | 0 | ||||||||||||||||||||||||
| 111 | } | - | ||||||||||||||||||||||||
| 112 | - | |||||||||||||||||||||||||
| 113 | if (optind >= argc) 
 | 5-11 | ||||||||||||||||||||||||
| 114 | { | - | ||||||||||||||||||||||||
| 115 | for (env = environ; *env != NULL; ++env) 
 | 5-185 | ||||||||||||||||||||||||
| 116 | printf ("%s%c", *env, opt_nul_terminate_output ? '\0' : '\n'); executed 185 times by 1 test:  printf ("%s%c", *env, opt_nul_terminate_output ? '\0' : '\n');Executed by: 
 | 185 | ||||||||||||||||||||||||
| 117 | ok = true; | - | ||||||||||||||||||||||||
| 118 | } executed 5 times by 1 test:  end of blockExecuted by: 
 | 5 | ||||||||||||||||||||||||
| 119 | else | - | ||||||||||||||||||||||||
| 120 | { | - | ||||||||||||||||||||||||
| 121 | int matches = 0; | - | ||||||||||||||||||||||||
| 122 | - | |||||||||||||||||||||||||
| 123 | for (i = optind; i < argc; ++i) 
 | 11-17 | ||||||||||||||||||||||||
| 124 | { | - | ||||||||||||||||||||||||
| 125 | bool matched = false; | - | ||||||||||||||||||||||||
| 126 | - | |||||||||||||||||||||||||
| 127 | /* 'printenv a=b' is silent, even if 'a=b=c' is in environ. */ | - | ||||||||||||||||||||||||
| 128 | if (strchr (argv[i], '=')) 
 
 
 
 | 0-17 | ||||||||||||||||||||||||
| 129 | continue; executed 1 time by 1 test:  continue;Executed by: 
 | 1 | ||||||||||||||||||||||||
| 130 | - | |||||||||||||||||||||||||
| 131 | for (env = environ; *env; ++env) 
 | 16-995 | ||||||||||||||||||||||||
| 132 | { | - | ||||||||||||||||||||||||
| 133 | ep = *env; | - | ||||||||||||||||||||||||
| 134 | ap = argv[i]; | - | ||||||||||||||||||||||||
| 135 | while (*ep != '\0' && *ap != '\0' && *ep++ == *ap++) 
 
 
 | 0-1147 | ||||||||||||||||||||||||
| 136 | { | - | ||||||||||||||||||||||||
| 137 | if (*ep == '=' && *ap == '\0') 
 
 | 0-152 | ||||||||||||||||||||||||
| 138 | { | - | ||||||||||||||||||||||||
| 139 | printf ("%s%c", ep + 1, | - | ||||||||||||||||||||||||
| 140 | opt_nul_terminate_output ? '\0' : '\n'); | - | ||||||||||||||||||||||||
| 141 | matched = true; | - | ||||||||||||||||||||||||
| 142 | break; executed 11 times by 1 test:  break;Executed by: 
 | 11 | ||||||||||||||||||||||||
| 143 | } | - | ||||||||||||||||||||||||
| 144 | } executed 152 times by 1 test:  end of blockExecuted by: 
 | 152 | ||||||||||||||||||||||||
| 145 | } executed 995 times by 1 test:  end of blockExecuted by: 
 | 995 | ||||||||||||||||||||||||
| 146 | - | |||||||||||||||||||||||||
| 147 | matches += matched; | - | ||||||||||||||||||||||||
| 148 | } executed 16 times by 1 test:  end of blockExecuted by: 
 | 16 | ||||||||||||||||||||||||
| 149 | - | |||||||||||||||||||||||||
| 150 | ok = (matches == argc - optind); | - | ||||||||||||||||||||||||
| 151 | } executed 11 times by 1 test:  end of blockExecuted by: 
 | 11 | ||||||||||||||||||||||||
| 152 | - | |||||||||||||||||||||||||
| 153 | return ok ? EXIT_SUCCESS : EXIT_FAILURE; executed 16 times by 1 test:  return ok ? 0 : 1 ;Executed by: 
 | 16 | ||||||||||||||||||||||||
| 154 | } | - | ||||||||||||||||||||||||
| Source code | Switch to Preprocessed file |