diff options
| author | fukachan <fukachan> | 2003-03-06 09:26:28 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2003-03-06 09:26:28 +0000 |
| commit | deef97e85ca7ad654027155b0b6bca7eeaa13eb1 (patch) | |
| tree | 2a657fa1d447c7030302993a915cb1e4eaa0a1c9 /fml/lib/FML/Sys | |
| parent | 6e0bc3bb5deb41287d2000940be0c2d9b20c23d1 (diff) | |
| download | fml8-deef97e85ca7ad654027155b0b6bca7eeaa13eb1.tar.gz fml8-deef97e85ca7ad654027155b0b6bca7eeaa13eb1.tar.bz2 fml8-deef97e85ca7ad654027155b0b6bca7eeaa13eb1.zip | |
wrap os dependence to get all user entries.
In the case of unix, we read /etc/passwd and return the user list.
we cannot use getpwent() since it is not defined by POSIX.
Diffstat (limited to 'fml/lib/FML/Sys')
| -rw-r--r-- | fml/lib/FML/Sys/User.pm | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/fml/lib/FML/Sys/User.pm b/fml/lib/FML/Sys/User.pm new file mode 100644 index 00000000..2d59a17d --- /dev/null +++ b/fml/lib/FML/Sys/User.pm @@ -0,0 +1,111 @@ +#-*- perl -*- +# +# Copyright (C) 2003 Ken'ichi Fukamachi +# All rights reserved. This program is free software; you can +# redistribute it and/or modify it under the same terms as Perl itself. +# +# $FML: @template.pm,v 1.7 2003/01/01 02:06:22 fukachan Exp $ +# + +package FML::Sys::User; +use strict; +use vars qw(@ISA @EXPORT @EXPORT_OK $AUTOLOAD); +use Carp; +use Config; + + +=head1 NAME + +FML::Sys::User - get user infomation on this system + +=head1 SYNOPSIS + +=head1 DESCRIPTION + +=head1 METHODS + +=head2 C<new()> + +constructor. + +=cut + + +# Descriptions: constructor. +# Arguments: OBJ($self) OBJ($curproc) +# Side Effects: none +# Return Value: OBJ +sub new +{ + my ($self, $curproc) = @_; + my ($type) = ref($self) || $self; + my $me = { _curproc => $curproc }; + return bless $me, $type; +} + + +# Descriptions: return user list as HASH_REF. +# Arguments: OBJ($self) +# Side Effects: none +# Return Value: HASH_REF +sub get_user_list +{ + my ($self) = @_; + + # XXX-TODO: how do we do on Windows NT ??? + return $self-> _get_user_list_on_unix(); +} + + +# Descriptions: return user list as HASH_REF. +# we assume all unix system has /etc/passwd. +# Arguments: OBJ($self) +# Side Effects: none +# Return Value: HASH_REF +sub _get_user_list_on_unix +{ + my ($self) = @_; + my $users = {}; + + if (-f "/etc/passwd") { + use FileHandle; + my $fh = new FileHandle "/etc/passwd"; + if (defined $fh) { + my ($user, $buf); + while ($buf = <$fh>) { + ($user) = split(/:/, $buf); + $users->{ $user } = $user; + } + + $fh->close(); + } + } + + return $users; +} + + +=head1 CODING STYLE + +See C<http://www.fml.org/software/FNF/> on fml coding style guide. + +=head1 AUTHOR + +Ken'ichi Fukamachi + +=head1 COPYRIGHT + +Copyright (C) 2003 Ken'ichi Fukamachi + +All rights reserved. This program is free software; you can +redistribute it and/or modify it under the same terms as Perl itself. + +=head1 HISTORY + +FML::Sys::User appeared in fml8 mailing list driver package. +See C<http://www.fml.org/> for more details. + +=cut + + +1; |
