summaryrefslogtreecommitdiffstats
path: root/lib/libaccess/nsgroup.cpp
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2005-03-07 14:49:18 +0000
committerRob Crittenden <rcritten@redhat.com>2005-03-07 14:49:18 +0000
commitab37199479f849ecae189e1a2314da49cc906187 (patch)
tree35e02b41332f187d083319cf486262c4df4d75e3 /lib/libaccess/nsgroup.cpp
parentea64bb776b54e43e117d516e7e0e818d48287370 (diff)
149510
Remove files that aren't needed.
Diffstat (limited to 'lib/libaccess/nsgroup.cpp')
-rw-r--r--lib/libaccess/nsgroup.cpp336
1 files changed, 0 insertions, 336 deletions
diff --git a/lib/libaccess/nsgroup.cpp b/lib/libaccess/nsgroup.cpp
deleted file mode 100644
index 83dcf950..00000000
--- a/lib/libaccess/nsgroup.cpp
+++ /dev/null
@@ -1,336 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-/*
- * Description (nsgroup.c)
- *
- * This module contains routines for accessing information in a
- * Netscape group database. Group information is returned in the
- * form of a group object (GroupObj_t), defined in nsauth.h.
- */
-
-#include "base/systems.h"
-#include "netsite.h"
-#include "assert.h"
-#define __PRIVATE_NSGROUP
-#include "libaccess/nsgroup.h"
-
-/*
- * Description (groupDecode)
- *
- * This function decodes an external group DB record into a
- * dynamically allocated GroupObj_t structure. The DB record is
- * encoded as an attribute record as defined in attrec.h.
- *
- * Arguments:
- *
- * name - pointer to group name string
- * greclen - length of the group DB record, in octets
- * grecptr - pointer to group DB record
- *
- * Returns:
- *
- * A pointer to the allocated GroupObj_t structure is returned.
- */
-
-NSAPI_PUBLIC GroupObj_t * groupDecode(NTS_t name, int greclen, ATR_t grecptr)
-{
- ATR_t cp = grecptr; /* current pointer into DB record */
- USI_t tag; /* attribute tag */
- USI_t len; /* attribute value encoding length */
- int i; /* group id index */
- int idcnt; /* count of user or group ids */
- USI_t * ids; /* pointer to array of ids */
- GroupObj_t * goptr; /* group object pointer */
-
- /* Allocate a group object structure */
- goptr = (GroupObj_t *)MALLOC(sizeof(GroupObj_t));
- if (goptr) {
-
- goptr->go_name = (unsigned char *) STRDUP((char *)name);
- goptr->go_gid = 0;
- goptr->go_flags = GOF_MODIFIED;
- goptr->go_desc = 0;
- UILINIT(&goptr->go_users);
- UILINIT(&goptr->go_groups);
- UILINIT(&goptr->go_pgroups);
-
- /* Parse group DB record */
- while ((cp - grecptr) < greclen) {
-
- /* Get the attribute tag */
- cp = USIDECODE(cp, &tag);
-
- /* Get the length of the encoding of the attribute value */
- cp = USIDECODE(cp, &len);
-
- /* Process this attribute */
- switch (tag) {
-
- case GAT_GID: /* group id */
- cp = USIDECODE(cp, &goptr->go_gid);
- break;
-
- case GAT_FLAGS: /* flags */
- cp = USIDECODE(cp, &goptr->go_flags);
- break;
-
- case GAT_DESCRIPT: /* group description */
- cp = NTSDECODE(cp, &goptr->go_desc);
- break;
-
- case GAT_USERS: /* member users of this group */
-
- /* First get the number of user ids following */
- cp = USIDECODE(cp, (unsigned *)&idcnt);
-
- if (idcnt > 0) {
-
- /* Allocate space for user ids */
- ids = usiAlloc(&goptr->go_users, idcnt);
- if (ids) {
- for (i = 0; i < idcnt; ++i) {
- cp = USIDECODE(cp, ids + i);
- }
- }
- }
- break;
-
- case GAT_GROUPS: /* member groups of this group */
-
- /* First get the number of group ids following */
- cp = USIDECODE(cp, (unsigned *)&idcnt);
-
- if (idcnt > 0) {
-
- /* Allocate space for group ids */
- ids = usiAlloc(&goptr->go_groups, idcnt);
- if (ids) {
- for (i = 0; i < idcnt; ++i) {
- cp = USIDECODE(cp, ids + i);
- }
- }
- }
- break;
-
- case GAT_PGROUPS: /* parent groups of this group */
-
- /* First get the number of group ids following */
- cp = USIDECODE(cp, (USI_t *)&idcnt);
-
- if (idcnt > 0) {
-
- /* Allocate space for group ids */
- ids = usiAlloc(&goptr->go_pgroups, idcnt);
- if (ids) {
- for (i = 0; i < idcnt; ++i) {
- cp = USIDECODE(cp, ids + i);
- }
- }
- }
- break;
-
- default: /* unrecognized attribute */
- /* Just skip it */
- cp += len;
- break;
- }
- }
- }
-
- return goptr;
-}
-
-/*
- * Description (groupEnumHelp)
- *
- * This is a local function that is called by NSDB during group
- * database enumeration. It decodes group records into group
- * objects, and presents them to the caller of groupEnumerate().
- *
- * Arguments:
- *
- * errp - error frame list pointer (may be null)
- * parg - pointer to GroupEnumArgs_t structure
- * namelen - length of group record key, including null
- * terminator
- * name - group record key (group account name)
- * reclen - length of group record
- * recptr - pointer to group record contents
- *
- * Returns:
- *
- * Returns whatever value is returned from the upcall to the caller
- * of groupEnumerate().
- */
-
-static int groupEnumHelp(NSErr_t * errp, void * parg,
- int namelen, char * name, int reclen, char * recptr)
-{
- GroupEnumArgs_t * ge = (GroupEnumArgs_t *)parg;
- GroupObj_t * goptr; /* group object pointer */
- int rv;
-
- goptr = groupDecode((NTS_t)name, reclen, (ATR_t)recptr);
-
- rv = (*ge->func)(errp, ge->user, goptr);
-
- if (!(ge->flags & GOF_ENUMKEEP)) {
- FREE(goptr);
- }
-
- return rv;
-}
-
-/*
- * Description (groupEnumerate)
- *
- * This function enumerates all of the groups in a specified group
- * database, calling a caller-specified function with a group object
- * for each group in the database. A 'flags' value of GOF_ENUMKEEP
- * can be specified to keep the group objects around (not free them)
- * after the caller's function returns. Otherwise, each group
- * object is freed after being presented to the caller's function.
- * The 'argp' argument is an opaque pointer, which is passed to
- * the caller's function as 'parg' on each call, along with a
- * group object pointer.
- *
- * Arguments:
- *
- * errp - error frame list pointer (may be null)
- * groupdb - handle for group DB access
- * flags - bit flags:
- * GOF_ENUMKEEP - keep group objects
- * argp - passed to 'func' as 'parg'
- * func - pointer to caller's enumeration function
- *
- * Returns:
- *
- * If successful, the return value is zero. Otherwise it is a
- * non-zero error code.
- */
-
-NSAPI_PUBLIC int groupEnumerate(NSErr_t * errp, void * groupdb, int flags, void * argp,
- int (*func)(NSErr_t * ferrp,
- void * parg, GroupObj_t * goptr))
-{
- int rv;
- GroupEnumArgs_t args;
-
- args.groupdb = groupdb;
- args.flags = flags;
- args.func = func;
- args.user = argp;
-
- rv = ndbEnumerate(errp,
- groupdb, NDBF_ENUMNORM, (void *)&args, groupEnumHelp);
-
- return rv;
-}
-
-/*
- * Description (groupFindByName)
- *
- * This function looks up a group record for a specified group name,
- * converts the group record to the internal group object form, and
- * returns a pointer to the group object.
- *
- * Arguments:
- *
- * errp - error frame list pointer (may be null)
- * groupdb - handle for group DB access
- * name - group name to find
- *
- * Returns:
- *
- * If successful, the return value is a pointer to a group object
- * for the specified group. Otherwise it is 0.
- */
-
-NSAPI_PUBLIC GroupObj_t * groupFindByName(NSErr_t * errp, void * groupdb, NTS_t name)
-{
- GroupObj_t * goptr = 0;
- ATR_t grecptr;
- int greclen;
- int rv;
-
- /* Look up the group name in the database */
- rv = ndbFindName(errp, groupdb, 0, (char *)name, &greclen, (char **)&grecptr);
- if (rv == 0) {
-
- /* Got the group record. Decode into a group object. */
- goptr = groupDecode(name, greclen, grecptr);
- }
-
- return goptr;
-}
-
-/*
- * Description (groupFindByGid)
- *
- * This function looks up a group record for a specified group id,
- * converts the group record to the internal group object form, and
- * returns a pointer to the group object.
- *
- * Arguments:
- *
- * errp - error frame list pointer (may be null)
- * groupdb - handle for group DB access
- * gid - group id to find
- *
- * Returns:
- *
- * If successful, the return value is a pointer to a group object
- * for the specified group. Otherwise it is 0.
- */
-
-NSAPI_PUBLIC GroupObj_t * groupFindByGid(NSErr_t * errp, void * groupdb, USI_t gid)
-{
- GroupObj_t * goptr = 0;
- NTS_t name;
- ATR_t grecptr;
- int greclen;
- int rv;
-
- /* Get the group account name corresponding to the gid */
- rv = ndbIdToName(errp, groupdb, gid, 0, (char **)&name);
- if (rv == 0) {
-
- rv = ndbFindName(errp, groupdb, 0, (char *)name, &greclen, (char **)&grecptr);
- if (rv == 0) {
-
- /* Got the group record. Decode into a group object. */
- goptr = groupDecode(name, greclen, grecptr);
- }
- }
-
- return goptr;
-}
-
-/*
- * Description (groupFree)
- *
- * This function is called to free a group object. Group objects
- * are not automatically freed when a group database is closed.
- *
- * Arguments:
- *
- * goptr - group object pointer
- *
- */
-
-NSAPI_PUBLIC void groupFree(GroupObj_t * goptr)
-{
- if (goptr) {
-
- if (goptr->go_name) FREE(goptr->go_name);
- if (goptr->go_desc) FREE(goptr->go_desc);
- UILFREE(&goptr->go_users);
- UILFREE(&goptr->go_groups);
- UILFREE(&goptr->go_pgroups);
- FREE(goptr);
- }
-}