wrowe 01/11/20 14:44:46
Modified: user/unix groupinfo.c
include apr_user.h
Log:
Implement apr_get_groupid [to mirror apr_get_userid]
Revision Changes Path
1.6 +19 -0 apr/user/unix/groupinfo.c
Index: groupinfo.c
===================================================================
RCS file: /home/cvs/apr/user/unix/groupinfo.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- groupinfo.c 2001/07/20 12:36:13 1.5
+++ groupinfo.c 2001/11/20 22:44:46 1.6
@@ -86,3 +86,22 @@
return APR_SUCCESS;
}
+APR_DECLARE(apr_status_t) apr_get_groupid(apr_gid_t *groupid, const char
*groupname, apr_pool_t *p)
+{
+ struct group *gr;
+#ifndef BEOS
+
+#if APR_HAS_THREADS && defined(_POSIX_THREAD_SAFE_FUNCTIONS) &&
defined(HAVE_GETGRGID_R)
+ struct group grp;
+ char grbuf[512];
+
+ if (getgrnam_r(&grpname, &gr, grbuf, sizeof(grbuf))) {
+#else
+ if ((gr = getgrnam(groupname)) == NULL) {
+#endif
+ return errno;
+ }
+ *groupid = gr->gr_gid;
+#endif
+ return APR_SUCCESS;
+}
1.16 +13 -4 apr/include/apr_user.h
Index: apr_user.h
===================================================================
RCS file: /home/cvs/apr/include/apr_user.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- apr_user.h 2001/08/24 17:55:45 1.15
+++ apr_user.h 2001/11/20 22:44:46 1.16
@@ -144,19 +144,28 @@
#if defined(WIN32)
APR_DECLARE(apr_status_t) apr_compare_users(apr_uid_t left, apr_uid_t right);
#else
-#define apr_compare_users(left,right) ((left == right) ? APR_SUCCESS :
APR_EMISMATCH)
+#define apr_compare_users(left,right) (((left) == (right)) ? APR_SUCCESS :
APR_EMISMATCH)
#endif
/**
* Get the group name for a specified groupid
- * @param dirname Pointer to new string containing group name (on output)
- * @param userid The groupid
+ * @param groupname Pointer to new string containing group name (on output)
+ * @param groupid The groupid
* @param p The pool from which to allocate the string
* @remark This function is available only if APR_HAS_USER is defined.
*/
APR_DECLARE(apr_status_t) apr_get_groupname(char **groupname, apr_gid_t
groupid, apr_pool_t *p);
/**
+ * Get the groupid for a specified group name
+ * @param groupid Pointer to the group id (on output)
+ * @param groupname The group name to look up
+ * @param p The pool from which to allocate the string
+ * @remark This function is available only if APR_HAS_USER is defined.
+ */
+APR_DECLARE(apr_status_t) apr_get_groupid(apr_gid_t *groupid, const char
*groupname, apr_pool_t *p);
+
+/**
* Compare two group identifiers for equality.
* @param left One gid to test
* @param right Another gid to test
@@ -167,7 +176,7 @@
#if defined(WIN32)
APR_DECLARE(apr_status_t) apr_compare_groups(apr_gid_t left, apr_gid_t
right);
#else
-#define apr_compare_groups(left,right) ((left == right) ? APR_SUCCESS :
APR_EMISMATCH)
+#define apr_compare_groups(left,right) (((left) == (right)) ? APR_SUCCESS :
APR_EMISMATCH)
#endif
#endif /* ! APR_HAS_USER */