On Tue, 2001-11-20 at 14:44, [EMAIL PROTECTED] wrote:
> 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))) {
linux needs another parameter on this.. something about restricting
groups.. (the man page doesn't seem to come up so I'm not sure what the
parameter does)
>   +#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 */
>   
>   
>   
-- 
Ian Holsman          [EMAIL PROTECTED]
Performance Measurement & Analysis
CNET Networks   -   (415) 344-2608

Reply via email to