summaryrefslogtreecommitdiff
path: root/pl/fullname.pl
diff options
context:
space:
mode:
Diffstat (limited to 'pl/fullname.pl')
-rw-r--r--pl/fullname.pl49
1 files changed, 49 insertions, 0 deletions
diff --git a/pl/fullname.pl b/pl/fullname.pl
new file mode 100644
index 0000000..3305d10
--- /dev/null
+++ b/pl/fullname.pl
@@ -0,0 +1,49 @@
+;# $Id$
+;#
+;# Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi
+;#
+;# You may redistribute only under the terms of the Artistic Licence,
+;# as specified in the README file that comes with the distribution.
+;# You may reuse parts of this distribution only within the terms of
+;# that same Artistic Licence; a copy of which may be found at the root
+;# of the source tree for dist 4.0.
+;#
+;# $Log: fullname.pl,v $
+;# Revision 3.0 1993/08/18 12:10:52 ram
+;# Baseline for dist 3.0 netwide release.
+;#
+;#
+sub getfullname {
+ local($logname) = @_;
+ local($foo,$bar);
+ if ($ENV{'NAME'}) {
+ $ENV{'NAME'};
+ } else {
+ open(PASSWD,'/etc/passwd') || die "Can't open /etc/passwd";
+ while (<PASSWD>) {
+ /(\w+):/;
+ last if $1 eq $logname;
+ }
+ close PASSWD;
+ local($login,$passwd,$uid,$gid,$gcos,$home,$shell) = split(/:/);
+ if (-f "$home/.fullname") {
+ open(FN,"$home/.fullname");
+ chop($foo = <FN>);
+ close FN;
+ $foo;
+ } elsif ($nametype eq 'bsd') {
+ $gcos =~ s/[,;].*//;
+ if ($gcos =~ /&/) { # oh crud
+ ($foo,$bar) = ($logname =~ /(.)(.*)/);
+ $foo =~ y/a-z/A-Z/;
+ $gcos =~ s/&/$foo$bar/;
+ }
+ $gcos;
+ } else {
+ $gcos =~ s/[(].*//;
+ $gcos =~ s/.*-//;
+ $gcos;
+ }
+ }
+}
+