You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by wr...@apache.org on 2001/01/28 02:18:04 UTC
cvs commit: apr/user/unix groupinfo.c Makefile.in
wrowe 01/01/27 17:18:04
Modified: . configure.in
include apr_file_info.h apr_user.h
user/unix Makefile.in
Added: user/unix groupinfo.c
Log:
Add groupinfo.c for apr_get_groupname... win32 commit to follow in a
moment.
Note: I have no clue if getgrgid_r is implemented by anyone anywhere,
it was a best guess at a threadsafe flavor.
Revision Changes Path
1.217 +1 -0 apr/configure.in
Index: configure.in
===================================================================
RCS file: /home/cvs/apr/configure.in,v
retrieving revision 1.216
retrieving revision 1.217
diff -u -r1.216 -r1.217
--- configure.in 2001/01/28 00:29:18 1.216
+++ configure.in 2001/01/28 01:18:03 1.217
@@ -627,6 +627,7 @@
dnl #----------------------------- Checking for missing POSIX thread functions
AC_CHECK_FUNCS(getpwnam_r)
AC_CHECK_FUNCS(getpwuid_r)
+AC_CHECK_FUNCS(getgrgid_r)
dnl #----------------------------- Checking for Processes
echo $ac_n "${nl}Checking for Processes...${nl}"
1.9 +0 -5 apr/include/apr_file_info.h
Index: apr_file_info.h
===================================================================
RCS file: /home/cvs/apr/include/apr_file_info.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- apr_file_info.h 2001/01/28 00:29:18 1.8
+++ apr_file_info.h 2001/01/28 01:18:04 1.9
@@ -109,11 +109,6 @@
* @defvar apr_fileperms_t
*/
typedef apr_int32_t apr_fileperms_t;
-/**
- * Structure for determining the group that owns the file.
- * @defvar apr_gid_t
- */
-typedef gid_t apr_gid_t;
#ifdef WIN32
/**
* Structure for determining the inode of the file.
1.5 +29 -5 apr/include/apr_user.h
Index: apr_user.h
===================================================================
RCS file: /home/cvs/apr/include/apr_user.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- apr_user.h 2001/01/28 00:29:18 1.4
+++ apr_user.h 2001/01/28 01:18:04 1.5
@@ -59,8 +59,6 @@
#include "apr_errno.h"
#include "apr_pools.h"
-#if APR_HAS_USER
-
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
@@ -70,10 +68,26 @@
*/
/**
- * Structure for determining file owner.
+ * Structure for determining user ownership.
* @defvar apr_uid_t
*/
+#ifdef WIN32
+typedef PSID apr_uid_t;
+#else
typedef uid_t apr_uid_t;
+#endif
+
+/**
+ * Structure for determining group ownership.
+ * @defvar apr_gid_t
+ */
+#ifdef WIN32
+typedef PSID apr_gid_t;
+#else
+typedef gid_t apr_gid_t;
+#endif
+
+#if APR_HAS_USER
/***
* Get the user name for a specified userid
@@ -95,10 +109,20 @@
*/
APR_DECLARE(apr_status_t) apr_get_home_directory(char **dirname, const char *userid, apr_pool_t *p);
+/***
+ * Get the group name for a specified groupid
+ * @param dirname Pointer to new string containing group name (on output)
+ * @param userid The groupid
+ * @param p The pool from which to allocate the string
+ * @deffunc apr_status_t apr_get_groupname(char **groupname, apr_gid_t userid, apr_pool_t *p)
+ * @tip 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)
+
+#endif /* ! APR_HAS_USER */
+
#ifdef __cplusplus
}
#endif
-
-#endif /* ! APR_HAS_USER */
#endif /* ! APR_USER_H */
1.6 +1 -1 apr/user/unix/Makefile.in
Index: Makefile.in
===================================================================
RCS file: /home/cvs/apr/user/unix/Makefile.in,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Makefile.in 2001/01/28 00:04:02 1.5
+++ Makefile.in 2001/01/28 01:18:04 1.6
@@ -1,5 +1,5 @@
-TARGETS = userinfo.lo
+TARGETS = userinfo.lo groupinfo.lo
# bring in rules.mk for standard functionality
@INCLUDE_RULES@
1.1 apr/user/unix/groupinfo.c
Index: groupinfo.c
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2000 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
#include "apr_strings.h"
#include "apr_portable.h"
#include "apr_user.h"
#include "apr_private.h"
#ifdef HAVE_GRP_H
#include <grp.h>
#endif
#if APR_HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
APR_DECLARE(apr_status_t) apr_get_groupname(char **groupname, apr_gid_t groupid, apr_pool_t *p)
{
struct group *gr;
#if APR_HAS_THREADS && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && defined(HAVE_GETGRGID_R)
struct group grp;
char grbuf[512];
if (getgrgid_r(groupid, &grp, grbuf, sizeof(grbuf), &gr)) {
#else
if ((gr = getgrgid(userid)) == NULL) {
#endif
return errno;
}
*groupname = apr_pstrdup(p, gr->gr_name);
return APR_SUCCESS;
}