Back to index

glibc  2.9
Functions | Variables
tst_fgetgrent.c File Reference
#include <grp.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>

Go to the source code of this file.

Functions

static void write_users (FILE *f, int large_pos, int pos)
static void write_group (const char *filename, int pos)
static void test_entry (const char *name, gid_t gid, struct group *g)
static void test_fgetgrent (const char *filename)
int main (int argc, char *argv[])

Variables

static int errors

Function Documentation

int main ( int  argc,
char *  argv[] 
)

Definition at line 101 of file tst_fgetgrent.c.

{
  char *file = tmpnam (NULL);
  int i = 0;

  if (argc > 1)
    i = atoi (argv[1]);
  if (i > 3)
    i = 3;
  if (i)
    printf ("Large group is group: %d\n", i);
  else
    printf ("Not using a large group\n");
  write_group (file, i);
  test_fgetgrent (file);

  remove (file);

  return (errors != 0);
}

Here is the call graph for this function:

static void test_entry ( const char *  name,
gid_t  gid,
struct group g 
) [static]

Definition at line 62 of file tst_fgetgrent.c.

{
  if (!g)
    {
      printf ("Error: Entry is empty\n");
      errors++;
      return;
    }

  if ((g->gr_gid == gid) && (strcmp (g->gr_name, name) == 0))
    printf ("Ok: %s: %d\n", g->gr_name, g->gr_gid);
  else
    {
      printf ("Error: %s: %d should be: %s: %d\n", g->gr_name, g->gr_gid,
             name, gid);
      errors++;
    }
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void test_fgetgrent ( const char *  filename) [static]

Definition at line 83 of file tst_fgetgrent.c.

{
  struct group *g;
  FILE *f;

  f = fopen (filename,"r");

  g = fgetgrent (f);
  test_entry ("one", 1, g);
  g = fgetgrent (f);
  test_entry ("two", 2, g);
  g = fgetgrent (f);
  test_entry ("three", 3, g);
  fclose (f);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void write_group ( const char *  filename,
int  pos 
) [static]

Definition at line 47 of file tst_fgetgrent.c.

{
  FILE *f;

  f = fopen (filename, "w");
  fprintf (f, "one:x:1:one");
  write_users (f, pos, 1);
  fprintf (f, "two:x:2:two");
  write_users (f, pos, 2);
  fprintf (f, "three:x:3");
  write_users (f, pos, 3);
  fclose (f);
}

Here is the call graph for this function:

Here is the caller graph for this function:

static void write_users ( FILE f,
int  large_pos,
int  pos 
) [static]

Definition at line 29 of file tst_fgetgrent.c.

{
  int i;

  if (pos == large_pos)
    {
      if (large_pos == 3)
       fprintf (f, ":three");

      /* we need more than 2048 bytes for proper testing.  */
      for (i = 0; i < 500; i++)
       fprintf (f, ",user%03d", i);
    }
  fprintf (f, "\n");

}

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

int errors [static]

Definition at line 26 of file tst_fgetgrent.c.