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;
  }