Mercurial > octave
diff src/DLD-FUNCTIONS/getgrent.cc @ 2937:9d26524e2869
[project @ 1997-05-06 05:49:53 by jwe]
author | jwe |
---|---|
date | Tue, 06 May 1997 05:55:13 +0000 |
parents | 295f037b4b3e |
children | 38de16594cb4 |
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/getgrent.cc Tue May 06 05:46:00 1997 +0000 +++ b/src/DLD-FUNCTIONS/getgrent.cc Tue May 06 05:55:13 1997 +0000 @@ -30,9 +30,7 @@ #include <sys/types.h> #endif -#ifdef HAVE_GRP_H -#include <grp.h> -#endif +#include "oct-group.h" #include "defun-dld.h" #include "error.h" @@ -46,7 +44,7 @@ // Group file functions. (Why not?) static octave_value -mk_gr_map (struct group *gr) +mk_gr_map (const octave_group& gr) { octave_value retval; @@ -54,40 +52,10 @@ { Octave_map m; - m ["name"] = gr->gr_name; -#if defined (HAVE_GR_PASSWD) - m ["passwd"] = gr->gr_passwd; -#else - m ["passwd"] = ""; -#endif - m ["gid"] = static_cast<double> (gr->gr_gid); - - if (gr->gr_mem) - { - // XXX FIXME XXX -- maybe there should be a string_vector - // constructor that takes a NULL terminated list of C - // strings. - - char **tmp = gr->gr_mem; - - int k = 0; - while (*tmp++) - k++; - - if (k > 0) - { - tmp = gr->gr_mem; - - string_vector members (k); - - for (int i = 0; i < k; i++) - members[i] = tmp[i]; - - m ["mem"] = members; - } - else - m ["mem"] = ""; - } + m ["name"] = gr.name (); + m ["passwd"] = gr.passwd (); + m ["gid"] = static_cast<double> (gr.gid ()); + m ["mem"] = gr.mem (); retval = m; } @@ -102,17 +70,19 @@ \n\ Read an entry from the group-file stream, opening it if necessary.") { - octave_value retval; + octave_value_list retval; + + retval(1) = string (); + retval(0) = 0.0; int nargin = args.length (); if (nargin == 0) { -#ifdef HAVE_GETGRENT - retval = mk_gr_map (getgrent ()); -#else - gripe_not_supported ("getgrent"); -#endif + string msg; + + retval(0) = mk_gr_map (octave_group::getgrent (msg)); + retval(1) = msg; } else print_usage ("getgrent"); @@ -125,13 +95,15 @@ \n\ Search for a group entry with a matching group ID.") { - octave_value retval; + octave_value_list retval; + + retval(1) = string (); + retval(0) = 0.0; int nargin = args.length (); if (nargin == 1) { -#ifdef HAVE_GETGRGID double dval = args(0).double_value (); if (! error_state) @@ -140,14 +112,14 @@ { gid_t gid = static_cast<gid_t> (dval); - retval = mk_gr_map (getgrgid (gid)); + string msg; + + retval(0) = mk_gr_map (octave_group::getgrgid (gid, msg)); + retval(1) = msg; } else error ("getgrgid: argument must be an integer"); } -#else - gripe_not_supported ("getgrgid"); -#endif } else print_usage ("getgrgid"); @@ -160,20 +132,24 @@ \n\ Search for group entry with a matching group name.") { - octave_value retval; + octave_value_list retval; + + retval(1) = string (); + retval(0) = 0.0; int nargin = args.length (); if (nargin == 1) { -#ifdef HAVE_GETGRNAM string s = args(0).string_value (); if (! error_state) - retval = mk_gr_map (getgrnam (s.c_str ())); -#else - gripe_not_supported ("getgrnam"); -#endif + { + string msg; + + retval(0) = mk_gr_map (octave_group::getgrnam (s.c_str (), msg)); + retval(1) = msg; + } } else print_usage ("getgrnam"); @@ -186,17 +162,19 @@ \n\ Rewind the group-file stream.") { - octave_value retval; + octave_value_list retval; + + retval(1) = string (); + retval(0) = -1.0; int nargin = args.length (); if (nargin == 0) { -#ifdef HAVE_SETGRENT - setgrent (); -#else - gripe_not_supported ("setgrent"); -#endif + string msg; + + retval(0) = static_cast<double> (octave_group::setgrent (msg)); + retval(1) = msg; } else print_usage ("setgrent"); @@ -209,17 +187,19 @@ \n\ Close the group-file stream.") { - octave_value retval; + octave_value_list retval; + + retval(1) = string (); + retval(0) = -1.0; int nargin = args.length (); if (nargin == 0) { -#ifdef HAVE_ENDGRENT - endgrent (); -#else - gripe_not_supported ("endgrent"); -#endif + string msg; + + retval(0) = static_cast<double> (octave_group::endgrent (msg)); + retval(1) = msg; } else print_usage ("endgrent");