@@ -20,13 +20,21 @@ License:
20
20
#
21
21
22
22
use strict;
23
- use Getopt::Std;
23
+
24
+ use File::Basename qw( basename) ;
25
+ use Getopt::Std qw( getopts) ;
26
+
27
+ use constant EX_SUCCESS => 0;
28
+ use constant EX_FAILURE => 1;
29
+
24
30
use vars qw( $opt_G $opt_n $opt_u $opt_g $opt_r $opt_a $opt_p) ;
25
31
32
+ my $Program = basename($0 );
33
+
26
34
getopts(' Gnugrap' ) or help();
27
35
if ( ($opt_G + $opt_g + $opt_p + $opt_u ) > 1 ) {
28
- print STDERR " You may only choose one of -G, -g, -p, or -u. Doh! \n \n" ;
29
- & help;
36
+ warn " $Program : Choose only one of -G, -g, -p, or -u\n " ;
37
+ help() ;
30
38
}
31
39
32
40
my ($user ,$pw ,$uid ,$gid ,$tp );
@@ -37,7 +45,10 @@ if ( @ARGV ) { # user specified
37
45
if (!defined ($uid ) && $ARGV [0] =~ m /\A [0-9] +\Z / ) {
38
46
($user ,$pw ,$uid ,$gid ) = getpwuid $ARGV [0];
39
47
}
40
- die " id: $ARGV [0]: No such user\n " unless (defined $uid );
48
+ unless (defined $uid ) {
49
+ warn " $Program : $ARGV [0]: No such user\n " ;
50
+ exit EX_FAILURE;
51
+ }
41
52
}
42
53
43
54
if ( $opt_u ) { # print uid
@@ -59,8 +70,11 @@ elsif ( $opt_p ) { # human-readable form (names when possible, etc.)
59
70
}
60
71
}
61
72
else {
62
- my ($login ) = getlogin || die " getlogin failed!" ;
63
-
73
+ my $login = getlogin ;
74
+ unless ($login ) {
75
+ warn " $Program : getlogin failed\n " ;
76
+ exit EX_FAILURE;
77
+ }
64
78
$tp .=" login $login \n " if ( $login ne scalar getpwuid $< );
65
79
66
80
my ($uid ) = scalar getpwuid $< || $< ;
@@ -154,11 +168,11 @@ else { # uid=#(name) gid=#(name) euid=#(name) egid=#(name) groups=#(name) ...
154
168
}
155
169
156
170
print " $tp \n " ;
157
- exit 0 ;
171
+ exit EX_SUCCESS ;
158
172
159
173
sub help {
160
174
require Pod::Usage;
161
- Pod::Usage::pod2usage({ -exitval => 1 , -verbose => 0 });
175
+ Pod::Usage::pod2usage({ -exitval => EX_FAILURE , -verbose => 0 });
162
176
}
163
177
164
178
=head1 NAME
@@ -222,9 +236,9 @@ Display the effective user ID.
222
236
223
237
=back
224
238
225
- =head1 NOTES
239
+ =head1 EXIT STATUS
226
240
227
- id returns 0 on success or 1 if an error occurred.
241
+ id exits with status 0 on success, or 1 if an error occurred.
228
242
229
243
=head1 AUTHOR
230
244
0 commit comments