Mercurial > octave-nkf
diff liboctave/oct-passwd.h @ 2934:dddc1b5c324e
[project @ 1997-05-05 22:56:37 by jwe]
author | jwe |
---|---|
date | Mon, 05 May 1997 22:59:00 +0000 |
parents | |
children | 9d26524e2869 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/liboctave/oct-passwd.h Mon May 05 22:59:00 1997 +0000 @@ -0,0 +1,138 @@ +/* + +Copyright (C) 1996, 1997 John W. Eaton + +This file is part of Octave. + +Octave is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +Octave is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Octave; see the file COPYING. If not, write to the Free +Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +*/ + +#if !defined (octave_passwd_h) +#define octave_passwd_h 1 + +#include <string> + +#ifdef HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif + +class +octave_passwd +{ +public: + + octave_passwd (void) + : pw_name (), pw_passwd (), pw_uid (0), pw_gid (0), pw_gecos (), + pw_dir (), pw_shell (), valid (false) + { } + + octave_passwd (const octave_passwd& pw) + : pw_name (pw.pw_name), pw_passwd (pw.pw_passwd), + pw_uid (pw.pw_uid), pw_gid (pw.pw_gid), pw_gecos (pw.pw_gecos), + pw_dir (pw.pw_dir), pw_shell (pw.pw_shell), valid (pw.valid) + { } + + octave_passwd& operator = (const octave_passwd& pw) + { + if (this != &pw) + { + pw_name = pw.pw_name; + pw_passwd = pw.pw_passwd; + pw_uid = pw.pw_uid; + pw_gid = pw.pw_gid; + pw_gecos = pw.pw_gecos; + pw_dir = pw.pw_dir; + pw_shell = pw.pw_shell; + valid = pw.valid; + } + + return *this; + } + + ~octave_passwd (void) { } + + string name (void) const; + + string passwd (void) const; + + uid_t uid (void) const; + + gid_t gid (void) const; + + string gecos (void) const; + + string dir (void) const; + + string shell (void) const; + + bool ok (void) const { return valid; } + + operator void* () const + { return ok () + ? static_cast<void *> (-1) : static_cast<void *> (0); } + + static octave_passwd getpwent (void); + + static octave_passwd getpwuid (uid_t uid); + + static octave_passwd getpwnam (const string& nm); + + static void setpwent (void); + + static void endpwent (void); + +private: + + // User name. + string pw_name; + + // Encrypted password. + string pw_passwd; + + // Numeric user id. + uid_t pw_uid; + + // Numeric group id. + gid_t pw_gid; + + // Miscellaneous junk. + string pw_gecos; + + // Home directory. + string pw_dir; + + // Login shell. + string pw_shell; + + // Flag that says whether we have been properly initialized. + bool valid; + + // This is how we will create an octave_passwd object from a pointer + // to a struct passwd. + octave_passwd (void *); + + void gripe_invalid (void) const; + + void gripe_not_supported (const string& fcn) const; +}; + +#endif + +/* +;;; Local Variables: *** +;;; mode: C++ *** +;;; End: *** +*/