changeset 21729:815b2f500fab

use namespace for system password wrapper class * oct-passwd.h, oct-passwd.cc: Put password class in octave::sys namespace. Change all uses. (octave_passwd): Now a deprecated typedef for octave::sys::password.
author John W. Eaton <jwe@octave.org>
date Wed, 18 May 2016 13:11:15 -0400
parents c218a5b31ad7
children 30c53770f47e
files libinterp/corefcn/getpwent.cc liboctave/system/file-ops.cc liboctave/system/oct-env.cc liboctave/system/oct-passwd.cc liboctave/system/oct-passwd.h liboctave/util/kpse.cc
diffstat 6 files changed, 256 insertions(+), 234 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/getpwent.cc	Wed May 18 12:35:37 2016 -0400
+++ b/libinterp/corefcn/getpwent.cc	Wed May 18 13:11:15 2016 -0400
@@ -41,7 +41,7 @@
 // Password file functions.  (Why not?)
 
 static octave_value
-mk_pw_map (const octave_passwd& pw)
+mk_pw_map (const octave::sys::password& pw)
 {
   octave_value retval;
 
@@ -80,8 +80,8 @@
 
   std::string msg;
 
-  // octave_passwd::getpwent may set msg.
-  octave_value val = mk_pw_map (octave_passwd::getpwent (msg));
+  // octave::sys::password::getpwent may set msg.
+  octave_value val = mk_pw_map (octave::sys::password::getpwent (msg));
 
   return ovl (val, msg);
 }
@@ -108,8 +108,8 @@
 
   std::string msg;
 
-  // octave_passwd::getpwuid may set msg.
-  octave_value val = mk_pw_map (octave_passwd::getpwuid (uid, msg));
+  // octave::sys::password::getpwuid may set msg.
+  octave_value val = mk_pw_map (octave::sys::password::getpwuid (uid, msg));
 
   return ovl (val, msg);
 }
@@ -131,8 +131,8 @@
 
   std::string msg;
 
-  // octave_passwd::getpwnam may set msg.
-  octave_value val = mk_pw_map (octave_passwd::getpwnam (s, msg));
+  // octave::sys::password::getpwnam may set msg.
+  octave_value val = mk_pw_map (octave::sys::password::getpwnam (s, msg));
 
   return ovl (val, msg);
 }
@@ -149,8 +149,8 @@
 
   std::string msg;
 
-  // octave_passwd::setpwent may set msg.
-  int status = octave_passwd::setpwent (msg);
+  // octave::sys::password::setpwent may set msg.
+  int status = octave::sys::password::setpwent (msg);
 
   return ovl (static_cast<double> (status), msg);
 }
@@ -167,8 +167,8 @@
 
   std::string msg;
 
-  // octave_passwd::endpwent may set msg.
-  int status = octave_passwd::endpwent (msg);
+  // octave::sys::password::endpwent may set msg.
+  int status = octave::sys::password::endpwent (msg);
 
   return ovl (static_cast<double> (status), msg);
 }
--- a/liboctave/system/file-ops.cc	Wed May 18 12:35:37 2016 -0400
+++ b/liboctave/system/file-ops.cc	Wed May 18 13:11:15 2016 -0400
@@ -251,7 +251,7 @@
   // No preexpansion hook, or the preexpansion hook failed.  Look in the
   // password database.
 
-  octave_passwd pw = octave_passwd::getpwnam (username);
+  octave::sys::password pw = octave::sys::password::getpwnam (username);
 
   if (! pw)
     {
--- a/liboctave/system/oct-env.cc	Wed May 18 12:35:37 2016 -0400
+++ b/liboctave/system/oct-env.cc	Wed May 18 13:11:15 2016 -0400
@@ -479,7 +479,7 @@
 
   if (hd.empty ())
     {
-      octave_passwd pw = octave_passwd::getpwuid (octave::sys::getuid ());
+      octave::sys::password pw = octave::sys::password::getpwuid (octave::sys::getuid ());
 
       hd = pw ? pw.dir () : std::string (file_ops::dir_sep_str ());
     }
@@ -492,7 +492,7 @@
 {
   if (user_name.empty ())
     {
-      octave_passwd pw = octave_passwd::getpwuid (octave::sys::getuid ());
+      octave::sys::password pw = octave::sys::password::getpwuid (octave::sys::getuid ());
 
       user_name = pw ? pw.name () : std::string ("unknown");
     }
--- a/liboctave/system/oct-passwd.cc	Wed May 18 12:35:37 2016 -0400
+++ b/liboctave/system/oct-passwd.cc	Wed May 18 13:11:15 2016 -0400
@@ -43,189 +43,196 @@
   (*current_liboctave_error_handler) ("invalid password object");
 }
 
-std::string
-octave_passwd::name (void) const
-{
-  if (! ok ())
-    err_invalid ();
-
-  return pw_name;
-}
-
-std::string
-octave_passwd::passwd (void) const
-{
-  if (! ok ())
-    err_invalid ();
-
-  return pw_passwd;
-}
-
-uid_t
-octave_passwd::uid (void) const
+namespace
+octave
 {
-  if (! ok ())
-    err_invalid ();
-
-  return pw_uid;
-}
+  namespace
+  sys
+  {
+    std::string
+    password::name (void) const
+    {
+      if (! ok ())
+        err_invalid ();
 
-gid_t
-octave_passwd::gid (void) const
-{
-  if (! ok ())
-    err_invalid ();
+      return m_name;
+    }
+
+    std::string
+    password::passwd (void) const
+    {
+      if (! ok ())
+        err_invalid ();
+
+      return m_passwd;
+    }
 
-  return pw_gid;
-}
+    uid_t
+    password::uid (void) const
+    {
+      if (! ok ())
+        err_invalid ();
+
+      return m_uid;
+    }
 
-std::string
-octave_passwd::gecos (void) const
-{
-  if (! ok ())
-    err_invalid ();
+    gid_t
+    password::gid (void) const
+    {
+      if (! ok ())
+        err_invalid ();
 
-  return pw_gecos;
-}
+      return m_gid;
+    }
+
+    std::string
+    password::gecos (void) const
+    {
+      if (! ok ())
+        err_invalid ();
 
-std::string
-octave_passwd::dir (void) const
-{
-  if (! ok ())
-    err_invalid ();
+      return m_gecos;
+    }
 
-  return pw_dir;
-}
+    std::string
+    password::dir (void) const
+    {
+      if (! ok ())
+        err_invalid ();
 
-std::string
-octave_passwd::shell (void) const
-{
-  if (! ok ())
-    err_invalid ();
+      return m_dir;
+    }
 
-  return pw_shell;
-}
+    std::string
+    password::shell (void) const
+    {
+      if (! ok ())
+        err_invalid ();
+
+      return m_shell;
+    }
 
-octave_passwd
-octave_passwd::getpwent (void)
-{
-  std::string msg;
-  return getpwent (msg);
-}
+    password
+    password::getpwent (void)
+    {
+      std::string msg;
+      return getpwent (msg);
+    }
 
-octave_passwd
-octave_passwd::getpwent (std::string& msg)
-{
+    password
+    password::getpwent (std::string& msg)
+    {
 #if defined HAVE_GETPWENT
-  msg = "";
-  return octave_passwd (::getpwent (), msg);
+      msg = "";
+      return password (::getpwent (), msg);
 #else
-  msg = NOT_SUPPORTED ("getpwent");
-  return octave_passwd ();
+      msg = NOT_SUPPORTED ("getpwent");
+      return password ();
 #endif
-}
+    }
 
-octave_passwd
-octave_passwd::getpwuid (uid_t uid)
-{
-  std::string msg;
-  return getpwuid (uid, msg);
-}
+    password
+    password::getpwuid (uid_t uid)
+    {
+      std::string msg;
+      return getpwuid (uid, msg);
+    }
 
-octave_passwd
-octave_passwd::getpwuid (uid_t uid, std::string& msg)
-{
+    password
+    password::getpwuid (uid_t uid, std::string& msg)
+    {
 #if defined (HAVE_GETPWUID)
-  msg = "";
-  return octave_passwd (::getpwuid (uid), msg);
+      msg = "";
+      return password (::getpwuid (uid), msg);
 #else
-  msg = NOT_SUPPORTED ("getpwuid");
-  return octave_passwd ();
+      msg = NOT_SUPPORTED ("getpwuid");
+      return password ();
 #endif
-}
+    }
 
-octave_passwd
-octave_passwd::getpwnam (const std::string& nm)
-{
-  std::string msg;
-  return getpwnam (nm, msg);
-}
+    password
+    password::getpwnam (const std::string& nm)
+    {
+      std::string msg;
+      return getpwnam (nm, msg);
+    }
 
-octave_passwd
-octave_passwd::getpwnam (const std::string& nm, std::string& msg)
-{
+    password
+    password::getpwnam (const std::string& nm, std::string& msg)
+    {
 #if defined (HAVE_GETPWNAM)
-  msg = "";
-  return octave_passwd (::getpwnam (nm.c_str ()), msg);
+      msg = "";
+      return password (::getpwnam (nm.c_str ()), msg);
 #else
-  msg = NOT_SUPPORTED ("getpwnam");
-  return octave_passwd ();
+      msg = NOT_SUPPORTED ("getpwnam");
+      return password ();
 #endif
-}
+    }
 
-int
-octave_passwd::setpwent (void)
-{
-  std::string msg;
-  return setpwent (msg);
-}
+    int
+    password::setpwent (void)
+    {
+      std::string msg;
+      return setpwent (msg);
+    }
 
-int
-octave_passwd::setpwent (std::string& msg)
-{
+    int
+    password::setpwent (std::string& msg)
+    {
 #if defined (HAVE_SETPWENT)
-  msg = "";
-  ::setpwent ();
-  return 0;
+      msg = "";
+      ::setpwent ();
+      return 0;
 #else
-  msg = NOT_SUPPORTED ("setpwent");
-  return -1;
+      msg = NOT_SUPPORTED ("setpwent");
+      return -1;
 #endif
-}
+    }
 
-int
-octave_passwd::endpwent (void)
-{
-  std::string msg;
-  return endpwent (msg);
-}
+    int
+    password::endpwent (void)
+    {
+      std::string msg;
+      return endpwent (msg);
+    }
 
-int
-octave_passwd::endpwent (std::string& msg)
-{
+    int
+    password::endpwent (std::string& msg)
+    {
 #if defined (HAVE_ENDPWENT)
-  msg = "";
-  ::endpwent ();
-  return 0;
+      msg = "";
+      ::endpwent ();
+      return 0;
 #else
-  msg = NOT_SUPPORTED ("endpwent");
-  return -1;
+      msg = NOT_SUPPORTED ("endpwent");
+      return -1;
 #endif
-}
+    }
 
-octave_passwd::octave_passwd (void *p, std::string& msg)
-  : pw_name (), pw_passwd (), pw_uid (0), pw_gid (0), pw_gecos (),
-    pw_dir (), pw_shell (), valid (false)
-{
+    password::password (void *p, std::string& msg)
+      : m_name (), m_passwd (), m_uid (0), m_gid (0), m_gecos (),
+        m_dir (), m_shell (), valid (false)
+    {
 #if defined (HAVE_PWD_H)
-  msg = "";
+      msg = "";
 
-  if (p)
-    {
-      struct passwd *pw = static_cast<struct passwd *> (p);
+      if (p)
+        {
+          struct ::passwd *pw = static_cast<struct ::passwd *> (p);
 
-      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;
+          m_name = pw->pw_name;
+          m_passwd = pw->pw_passwd;
+          m_uid = pw->pw_uid;
+          m_gid = pw->pw_gid;
+          m_gecos = pw->pw_gecos;
+          m_dir = pw->pw_dir;
+          m_shell = pw->pw_shell;
 
-      valid = true;
-    }
+          valid = true;
+        }
 #else
-  msg = NOT_SUPPORTED ("password functions");
+      msg = NOT_SUPPORTED ("password functions");
 #endif
+    }
+  }
 }
-
--- a/liboctave/system/oct-passwd.h	Wed May 18 12:35:37 2016 -0400
+++ b/liboctave/system/oct-passwd.h	Wed May 18 13:11:15 2016 -0400
@@ -29,104 +29,119 @@
 
 #include <sys/types.h>
 
-class
-OCTAVE_API
-octave_passwd
+namespace
+octave
 {
-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)
+  namespace
+  sys
   {
-    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;
-      }
+    class
+    OCTAVE_API
+    password
+    {
+    public:
 
-    return *this;
-  }
+      password (void)
+        : m_name (), m_passwd (), m_uid (0), m_gid (0), m_gecos (),
+          m_dir (), m_shell (), valid (false)
+        { }
+
+      password (const password& pw)
+        : m_name (pw.m_name), m_passwd (pw.m_passwd),
+          m_uid (pw.m_uid), m_gid (pw.m_gid), m_gecos (pw.m_gecos),
+          m_dir (pw.m_dir), m_shell (pw.m_shell), valid (pw.valid)
+        { }
 
-  ~octave_passwd (void) { }
-
-  std::string name (void) const;
-
-  std::string passwd (void) const;
-
-  uid_t uid (void) const;
+      password& operator = (const password& pw)
+        {
+          if (this != &pw)
+            {
+              m_name = pw.m_name;
+              m_passwd = pw.m_passwd;
+              m_uid = pw.m_uid;
+              m_gid = pw.m_gid;
+              m_gecos = pw.m_gecos;
+              m_dir = pw.m_dir;
+              m_shell = pw.m_shell;
+              valid = pw.valid;
+            }
 
-  gid_t gid (void) const;
+          return *this;
+        }
 
-  std::string gecos (void) const;
+      ~password (void) { }
+
+      std::string name (void) const;
+
+      std::string passwd (void) const;
 
-  std::string dir (void) const;
+      uid_t uid (void) const;
+
+      gid_t gid (void) const;
 
-  std::string shell (void) const;
+      std::string gecos (void) const;
+
+      std::string dir (void) const;
+
+      std::string shell (void) const;
 
-  bool ok (void) const { return valid; }
+      bool ok (void) const { return valid; }
 
-  operator bool () const { return ok (); }
+      operator bool () const { return ok (); }
 
-  static octave_passwd getpwent (void);
-  static octave_passwd getpwent (std::string& msg);
+      static password getpwent (void);
+      static password getpwent (std::string& msg);
 
-  static octave_passwd getpwuid (uid_t uid);
-  static octave_passwd getpwuid (uid_t uid, std::string& msg);
+      static password getpwuid (uid_t uid);
+      static password getpwuid (uid_t uid, std::string& msg);
+
+      static password getpwnam (const std::string& nm);
+      static password getpwnam (const std::string& nm, std::string& msg);
 
-  static octave_passwd getpwnam (const std::string& nm);
-  static octave_passwd getpwnam (const std::string& nm, std::string& msg);
+      static int setpwent (void);
+      static int setpwent (std::string& msg);
 
-  static int setpwent (void);
-  static int setpwent (std::string& msg);
+      static int endpwent (void);
+      static int endpwent (std::string& msg);
 
-  static int endpwent (void);
-  static int endpwent (std::string& msg);
+    private:
 
-private:
+      // User name.
+      std::string m_name;
 
-  // User name.
-  std::string pw_name;
+      // Encrypted password.
+      std::string m_passwd;
 
-  // Encrypted password.
-  std::string pw_passwd;
+      // Numeric user id.
+      uid_t m_uid;
 
-  // Numeric user id.
-  uid_t pw_uid;
+      // Numeric group id.
+      gid_t m_gid;
 
-  // Numeric group id.
-  gid_t pw_gid;
+      // Miscellaneous junk.
+      std::string m_gecos;
 
-  // Miscellaneous junk.
-  std::string pw_gecos;
+      // Home directory.
+      std::string m_dir;
+
+      // Login shell.
+      std::string m_shell;
 
-  // Home directory.
-  std::string pw_dir;
-
-  // Login shell.
-  std::string pw_shell;
+      // Flag that says whether we have been properly initialized.
+      bool valid;
 
-  // Flag that says whether we have been properly initialized.
-  bool valid;
+      // This is how we will create a password object from a pointer
+      // to a struct passwd.
+      password (void *p, std::string& msg);
+    };
+  }
+}
 
-  // This is how we will create an octave_passwd object from a pointer
-  // to a struct passwd.
-  octave_passwd (void *p, std::string& msg);
-};
+#if defined (OCTAVE_USE_DEPRECATED_FUNCTIONS)
+
+OCTAVE_DEPRECATED ("use octave::sys::password instead")
+typedef octave::sys::password octave_passwd;
 
 #endif
+
+#endif
--- a/liboctave/util/kpse.cc	Wed May 18 12:35:37 2016 -0400
+++ b/liboctave/util/kpse.cc	Wed May 18 13:11:15 2016 -0400
@@ -1244,7 +1244,7 @@
 
       /* We only need the cast here for (deficient) systems
          which do not declare 'getpwnam' in <pwd.h>.  */
-      octave_passwd p = octave_passwd::getpwnam (user);
+      octave::sys::password p = octave::sys::password::getpwnam (user);
 
       /* If no such user, just use '.'.  */
       std::string home = p ? p.dir () : std::string (".");