diff options
Diffstat (limited to 'libc/grp')
| -rw-r--r-- | libc/grp/Config | 1 | ||||
| -rw-r--r-- | libc/grp/Makefile | 42 | ||||
| -rw-r--r-- | libc/grp/__getgrent.c | 168 | ||||
| -rw-r--r-- | libc/grp/config-grp.h | 65 | ||||
| -rw-r--r-- | libc/grp/config.h | 65 | ||||
| -rw-r--r-- | libc/grp/fgetgrent.c | 35 | ||||
| -rw-r--r-- | libc/grp/getgrgid.c | 48 | ||||
| -rw-r--r-- | libc/grp/getgrnam.c | 51 | ||||
| -rw-r--r-- | libc/grp/grent.c | 57 | ||||
| -rw-r--r-- | libc/grp/initgroups.c | 80 | ||||
| -rw-r--r-- | libc/grp/test_grp.c | 107 |
11 files changed, 0 insertions, 719 deletions
diff --git a/libc/grp/Config b/libc/grp/Config deleted file mode 100644 index 9f49d93..0000000 --- a/libc/grp/Config +++ /dev/null @@ -1 +0,0 @@ -grp: /etc/group managment diff --git a/libc/grp/Makefile b/libc/grp/Makefile deleted file mode 100644 index f5d42a0..0000000 --- a/libc/grp/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright (C) 1996 Nat Friedman <ndf@aleph1.mit.edu> -# This file is part of the Linux-8086 C library and is distributed -# under the GNU Library General Public License. - -TOP=.. -include $(TOP)/Make.defs - -ifeq ($(LIB_CPU),g386) -CFLAGS+=$(WALL) -else -CFLAGS=$(CCFLAGS) $(LIBDEFS) -ansi -endif - -GSRC=__getgrent.c grent.c getgrnam.c getgrgid.c fgetgrent.c initgroups.c \ - config-grp.h - -ifeq ($(LIB_OS),ELKS) -GOBJ=__getgrent.o grent.o getgrnam.o getgrgid.o fgetgrent.o initgroups.o -else -GOBJ= -endif - -all: $(GOBJ) - -%.o: %.c config-grp.h - $(CC) $(CFLAGS) -o $@ $< -c - -libc.a: $(GOBJ) - ar r ../$(LIBC) $(GOBJ) - @touch libc.a - -test: test_grp.c libgrp.a - $(CC) $(CFLAGS) test_grp.c -o test_grp -L -lgrp # -static - -libgrp: libgrp.a - -libgrp.a: $(GOBJ) - ar r libgrp.a $(GOBJ) - ranlib libgrp.a - -clean: - rm -f *.o libc.a libgrp.a diff --git a/libc/grp/__getgrent.c b/libc/grp/__getgrent.c deleted file mode 100644 index 612f112..0000000 --- a/libc/grp/__getgrent.c +++ /dev/null @@ -1,168 +0,0 @@ -/* - * __getgrent.c - This file is part of the libc-8086/grp package for ELKS, - * Copyright (C) 1995, 1996 Nat Friedman <ndf@linux.mit.edu>. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -#include <unistd.h> -#include <stdlib.h> -#include <string.h> -#include <grp.h> -#include "config.h" - -/* - * This is the core group-file read function. It behaves exactly like - * getgrent() except that it is passed a file descriptor. getgrent() - * is just a wrapper for this function. - */ -struct group * -__getgrent(int grp_fd) -{ -#ifndef GR_SCALE_DYNAMIC - static char line_buff[GR_MAX_LINE_LEN]; - static char * members[GR_MAX_MEMBERS]; -#else - static char * line_buff = NULL; - static char ** members = NULL; - short line_index; - short buff_size; -#endif - static struct group group; - register char * ptr; - char * field_begin; - short member_num; - char * endptr; - int line_len; - - - /* We use the restart label to handle malformatted lines */ -restart: -#ifdef GR_SCALE_DYNAMIC - line_index=0; - buff_size=256; -#endif - -#ifndef GR_SCALE_DYNAMIC - /* Read the line into the static buffer */ - if ((line_len=read(grp_fd, line_buff, GR_MAX_LINE_LEN))<=0) - return NULL; - field_begin=strchr(line_buff, '\n'); - if (field_begin!=NULL) - lseek(grp_fd, (long) (1+field_begin-(line_buff+line_len)), SEEK_CUR); - else /* The line is too long - skip it :-\ */ - { - do { if ((line_len=read(grp_fd, line_buff, GR_MAX_LINE_LEN))<=0) - return NULL; - } while (!(field_begin=strchr(line_buff, '\n'))); - lseek(grp_fd, (long) ((field_begin-line_buff)-line_len+1), SEEK_CUR); - goto restart; - } - if (*line_buff=='#' || *line_buff==' ' || *line_buff=='\n' || - *line_buff=='\t') - goto restart; - *field_begin='\0'; - -#else /* !GR_SCALE_DYNAMIC */ - line_buff=realloc(line_buff, buff_size); - while (1) - { - if ((line_len=read(grp_fd, line_buff+line_index, - buff_size-line_index))<=0) - return NULL; - field_begin=strchr(line_buff, '\n'); - if (field_begin!=NULL) - { - lseek(grp_fd, (long) (1+field_begin-(line_len+line_index+line_buff)), - SEEK_CUR); - *field_begin='\0'; - if (*line_buff=='#' || *line_buff==' ' || *line_buff=='\n' || - *line_buff=='\t') - goto restart; - break; - } - else /* Allocate some more space */ - { - line_index=buff_size; - buff_size+=256; - line_buff=realloc(line_buff, buff_size); - } - } -#endif /* GR_SCALE_DYNAMIC */ - - /* Now parse the line */ - group.gr_name=line_buff; - ptr=strchr(line_buff, ':'); - if (ptr==NULL) goto restart; - *ptr++='\0'; - - group.gr_passwd=ptr; - ptr=strchr(ptr, ':'); - if (ptr==NULL) goto restart; - *ptr++='\0'; - - field_begin=ptr; - ptr=strchr(ptr, ':'); - if (ptr==NULL) goto restart; - *ptr++='\0'; - - group.gr_gid=(gid_t) strtoul(field_begin, &endptr, 10); - if (*endptr!='\0') goto restart; - - member_num=0; - field_begin=ptr; - -#ifndef GR_SCALE_DYNAMIC - while ((ptr=strchr(ptr, ','))!=NULL) - { - *ptr='\0'; - ptr++; - members[member_num]=field_begin; - field_begin=ptr; - member_num++; - } - if (*field_begin=='\0') - members[member_num]=NULL; - else - { - members[member_num]=field_begin; - members[member_num+1]=NULL; - } -#else /* !GR_SCALE_DYNAMIC */ - if (members!=NULL) - free (members); - members=(char **) malloc(1*sizeof(char *)); - while ((ptr=strchr(ptr, ','))!=NULL) - { - *ptr='\0'; - ptr++; - members[member_num]=field_begin; - field_begin=ptr; - member_num++; - members=(char **)realloc((void *)members, (member_num+1)*sizeof(char *)); - } - if (*field_begin=='\0') - members[member_num]=NULL; - else - { - members[member_num]=field_begin; - members[member_num+1]=NULL; - } -#endif /* GR_SCALE_DYNAMIC */ - - group.gr_mem=members; - return &group; -} diff --git a/libc/grp/config-grp.h b/libc/grp/config-grp.h deleted file mode 100644 index 337d54b..0000000 --- a/libc/grp/config-grp.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * config-grp.h - This file is part of the libc-8086/grp package for ELKS, - * Copyright (C) 1995, 1996 Nat Friedman <ndf@linux.mit.edu>. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - - -#ifndef _CONFIG_GRP_H -#define _CONFIG_GRP_H - -/* - * Define GR_SCALE_DYNAMIC if you want grp to dynamically scale its read buffer - * so that lines of any length can be used. On very very small systems, - * you may want to leave this undefined becasue it will make the grp functions - * somewhat larger (because of the inclusion of malloc and the code necessary). - * On larger systems, you will want to define this, because grp will _not_ - * deal with long lines gracefully (they will be skipped). - */ -#define GR_SCALE_DYNAMIC - -#ifndef GR_SCALE_DYNAMIC -/* - * If scaling is not dynamic, the buffers will be statically allocated, and - * maximums must be chosen. GR_MAX_LINE_LEN is the maximum number of - * characters per line in the group file. GR_MAX_MEMBERS is the maximum - * number of members of any given group. - */ -#define GR_MAX_LINE_LEN 128 -/* GR_MAX_MEMBERS = (GR_MAX_LINE_LEN-(24+3+6))/9 */ -#define GR_MAX_MEMBERS 11 - -#endif /* !GR_SCALE_DYNAMIC */ - - -/* - * Define GR_DYNAMIC_GROUP_LIST to make initgroups() dynamically allocate - * space for it's GID array before calling setgroups(). This is probably - * unnecessary scalage, so it's undefined by default. - */ -#undef GR_DYNAMIC_GROUP_LIST - -#ifndef GR_DYNAMIC_GROUP_LIST -/* - * GR_MAX_GROUPS is the size of the static array initgroups() uses for - * its static GID array if GR_DYNAMIC_GROUP_LIST isn't defined. - */ -#define GR_MAX_GROUPS 64 - -#endif /* !GR_DYNAMIC_GROUP_LIST */ - -#endif /* !_CONFIG_GRP_H */ diff --git a/libc/grp/config.h b/libc/grp/config.h deleted file mode 100644 index 337d54b..0000000 --- a/libc/grp/config.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * config-grp.h - This file is part of the libc-8086/grp package for ELKS, - * Copyright (C) 1995, 1996 Nat Friedman <ndf@linux.mit.edu>. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - - -#ifndef _CONFIG_GRP_H -#define _CONFIG_GRP_H - -/* - * Define GR_SCALE_DYNAMIC if you want grp to dynamically scale its read buffer - * so that lines of any length can be used. On very very small systems, - * you may want to leave this undefined becasue it will make the grp functions - * somewhat larger (because of the inclusion of malloc and the code necessary). - * On larger systems, you will want to define this, because grp will _not_ - * deal with long lines gracefully (they will be skipped). - */ -#define GR_SCALE_DYNAMIC - -#ifndef GR_SCALE_DYNAMIC -/* - * If scaling is not dynamic, the buffers will be statically allocated, and - * maximums must be chosen. GR_MAX_LINE_LEN is the maximum number of - * characters per line in the group file. GR_MAX_MEMBERS is the maximum - * number of members of any given group. - */ -#define GR_MAX_LINE_LEN 128 -/* GR_MAX_MEMBERS = (GR_MAX_LINE_LEN-(24+3+6))/9 */ -#define GR_MAX_MEMBERS 11 - -#endif /* !GR_SCALE_DYNAMIC */ - - -/* - * Define GR_DYNAMIC_GROUP_LIST to make initgroups() dynamically allocate - * space for it's GID array before calling setgroups(). This is probably - * unnecessary scalage, so it's undefined by default. - */ -#undef GR_DYNAMIC_GROUP_LIST - -#ifndef GR_DYNAMIC_GROUP_LIST -/* - * GR_MAX_GROUPS is the size of the static array initgroups() uses for - * its static GID array if GR_DYNAMIC_GROUP_LIST isn't defined. - */ -#define GR_MAX_GROUPS 64 - -#endif /* !GR_DYNAMIC_GROUP_LIST */ - -#endif /* !_CONFIG_GRP_H */ diff --git a/libc/grp/fgetgrent.c b/libc/grp/fgetgrent.c deleted file mode 100644 index 800236f..0000000 --- a/libc/grp/fgetgrent.c +++ /dev/null @@ -1,35 +0,0 @@ -/* - * fgetgrent.c - This file is part of the libc-8086/grp package for ELKS, - * Copyright (C) 1995, 1996 Nat Friedman <ndf@linux.mit.edu>. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -#include <stdio.h> -#include <errno.h> -#include <grp.h> - -struct group * -fgetgrent(FILE * file) -{ - if (file==NULL) - { - errno=EINTR; - return NULL; - } - - return __getgrent(fileno(file)); -} diff --git a/libc/grp/getgrgid.c b/libc/grp/getgrgid.c deleted file mode 100644 index c1dd20e..0000000 --- a/libc/grp/getgrgid.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - * getgrgid.c - This file is part of the libc-8086/grp package for ELKS, - * Copyright (C) 1995, 1996 Nat Friedman <ndf@linux.mit.edu>. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -#include <sys/types.h> -#include <unistd.h> -#include <fcntl.h> -#include <grp.h> - -struct group * -getgrgid(const gid_t gid) -{ - struct group * group; - int grp_fd; - - if ((grp_fd=open("/etc/group", O_RDONLY))<0) - return NULL; - - while ((group=__getgrent(grp_fd))!=NULL) - if (group->gr_gid==gid) - { - close(grp_fd); - return group; - } - - close(grp_fd); - return NULL; -} - - - - diff --git a/libc/grp/getgrnam.c b/libc/grp/getgrnam.c deleted file mode 100644 index e6c27fc..0000000 --- a/libc/grp/getgrnam.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * getgrnam.c - This file is part of the libc-8086/grp package for ELKS, - * Copyright (C) 1995, 1996 Nat Friedman <ndf@linux.mit.edu>. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -#include <unistd.h> -#include <string.h> -#include <errno.h> -#include <fcntl.h> -#include <grp.h> - -struct group * -getgrnam(const char * name) -{ - int grp_fd; - struct group * group; - - if (name==NULL) - { - errno=EINVAL; - return NULL; - } - - if ((grp_fd=open("/etc/group", O_RDONLY))<0) - return NULL; - - while ((group=__getgrent(grp_fd))!=NULL) - if (!strcmp(group->gr_name, name)) - { - close(grp_fd); - return group; - } - - close(grp_fd); - return NULL; -} diff --git a/libc/grp/grent.c b/libc/grp/grent.c deleted file mode 100644 index 19d618b..0000000 --- a/libc/grp/grent.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * grent.c - This file is part of the libc-8086/grp package for ELKS, - * Copyright (C) 1995, 1996 Nat Friedman <ndf@linux.mit.edu>. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -/* - * setgrent(), endgrent(), and getgrent() are mutually-dependent functions, - * so they are all included in the same object file, and thus all linked - * in together. - */ - -#include <unistd.h> -#include <fcntl.h> -#include <grp.h> - -static int grp_fd=-1; - -void -setgrent(void) -{ - if (grp_fd!=-1) - close(grp_fd); - grp_fd=open("/etc/group", O_RDONLY); -} - -void -endgrent(void) -{ - if (grp_fd!=-1) - close(grp_fd); - grp_fd=-1; -} - -struct group * -getgrent(void) -{ - if (grp_fd==-1) - return NULL; - return __getgrent(grp_fd); -} - - diff --git a/libc/grp/initgroups.c b/libc/grp/initgroups.c deleted file mode 100644 index 35e1d03..0000000 --- a/libc/grp/initgroups.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * initgroups.c - This file is part of the libc-8086/grp package for ELKS, - * Copyright (C) 1995, 1996 Nat Friedman <ndf@linux.mit.edu>. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -#include <unistd.h> -#include <string.h> -#include <fcntl.h> -#include <grp.h> -#include "config.h" - -int -initgroups(__const char * user, gid_t gid) -{ - register struct group * group; -#ifndef GR_DYNAMIC_GROUP_LIST - gid_t group_list[GR_MAX_GROUPS]; -#else - gid_t * group_list=NULL; -#endif - register char ** tmp_mem; - int num_groups; - int grp_fd; - - - if ((grp_fd=open("/etc/group", O_RDONLY))<0) - return -1; - - num_groups=0; -#ifdef GR_DYNAMIC_GROUP_LIST - group_list=(gid_t *) realloc(group_list, 1); -#endif - group_list[num_groups]=gid; -#ifndef GR_DYNAMIC_GROUP_LIST - while (num_groups<GR_MAX_GROUPS && - (group=__getgrent(grp_fd))!=NULL) -#else - while ((group=__getgrent(grp_fd))!=NULL) -#endif - { - if (group->gr_gid!=gid); - { - tmp_mem=group->gr_mem; - while(*tmp_mem!=NULL) - { - if (!strcmp(*tmp_mem, user)) - { - num_groups++; -#ifdef GR_DYNAMIC_GROUP_LIST - group_list=(gid_t *)realloc(group_list, - num_groups*sizeof(gid_t *)); -#endif - group_list[num_groups]=group->gr_gid; - } - tmp_mem++; - } - } - } - close(grp_fd); - return setgroups(num_groups, group_list); -} - - - - diff --git a/libc/grp/test_grp.c b/libc/grp/test_grp.c deleted file mode 100644 index b5ecd36..0000000 --- a/libc/grp/test_grp.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - * test_grp.c - This file is part of the libc-8086/grp package for ELKS, - * Copyright (C) 1995, 1996 Nat Friedman <ndf@linux.mit.edu>. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -#include <unistd.h> -#include <stdio.h> -#include <fcntl.h> -#include <grp.h> - -int -main(int argc, char ** argv) -{ - struct group * group; - char ** tmp_mem; - int test_gid; - - fprintf(stderr, "Beginning test of libc/grp...\n"); - - fprintf(stderr, "=> Testing setgrent(), getgrent(), endgrent()...\n"); - fprintf(stderr, "-> setgrent()...\n"); - setgrent(); - fprintf(stderr, "-> getgrent()...\n"); - printf("********************************************************************************\n"); - while ((group=getgrent())!=NULL) - { - printf("gr_name\t\t: %s\n", group->gr_name); - printf("gr_passwd\t: %s\n", group->gr_passwd); - printf("gr_gid\t\t: %d\n", (int) group->gr_gid); - printf("gr_mem\t\t: "); - fflush(stdout); - tmp_mem=group->gr_mem; - while(*tmp_mem!=NULL) - { - printf("%s, ", *tmp_mem); - tmp_mem++; - } - printf("\n********************************************************************************\n"); - } - fprintf(stderr, "-> endgrent()...\n"); - endgrent(); - fprintf(stderr, "=> Test of setgrent(), getgrent(), endgrent() complete.\n"); - fprintf(stderr, "=> Testing getgrid(), getgrnam()...\n"); - fprintf(stderr, "-> getgrgid()...\n"); - printf("********************************************************************************\n"); - for(test_gid=0;test_gid<100;test_gid++) - { - fprintf(stderr, "-> getgrgid(%d)...\n", test_gid); - group=getgrgid((gid_t) test_gid); - if (group!=NULL) - { - printf("gr_name\t: %s\n", group->gr_name); - printf("gr_passwd\t: %s\n", group->gr_passwd); - printf("gr_gid\t: %d\n", (int) group->gr_gid); - printf("gr_mem\t\t: "); - fflush(stdout); - tmp_mem=group->gr_mem; - while(*tmp_mem!=NULL) - { - printf("%s, ", *tmp_mem); - tmp_mem++; - } - } - printf("\n********************************************************************************\n"); - } - fprintf(stderr, "-> getgrnam()...\n"); - group=getgrnam("root"); - if (group==NULL) - { - printf(">NULL<\n"); - } - else - { - printf("gr_name\t: %s\n", group->gr_name); - printf("gr_passwd\t: %s\n", group->gr_passwd); - printf("gr_gid\t: %d\n", (int) group->gr_gid); - printf("gr_mem\t\t: "); - fflush(stdout); - tmp_mem=group->gr_mem; - while(*tmp_mem!=NULL) - { - printf("%s, ", *tmp_mem); - tmp_mem++; - } - printf("\n"); - } - - - return 0; -} - - |
