home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume26 / idutil / grinf.c < prev    next >
C/C++ Source or Header  |  1992-06-12  |  2KB  |  88 lines

  1. #include <stdio.h>
  2. #include <memory.h>
  3. #include <grp.h>
  4. #include "grinf.h"
  5.  
  6. static char *RCSid="$Header: grinf.c,v 1.4 92/01/23 15:05:34 dtb Exp $";
  7.  
  8. int     grinf_info_fpr (fp)
  9. FILE     * fp;
  10. {
  11.     int nout = 0;
  12.     nout += fprintf (fp, "%s %s\n", __FILE__, GRINF_RCSid);
  13.     return (nout);
  14. }
  15.  
  16. /*
  17.     grinfrq_set_dflt
  18.     Puts default values in grinfrq structure.
  19.     A pointer to the structure is passed as an argument.
  20.     If a NULL pointer is used as an argument, then memory will
  21.     be allocated and a pointer to the new structure returned.
  22.     If a NULL pointer is returned, memory could not be allocated.
  23. */
  24. struct grinfrq     *    grinfrq_set_dflt ( p)
  25. struct grinfrq     *     p;
  26. {
  27.     if (p == NULL)
  28.         p = (struct grinfrq *) malloc ( sizeof (struct grinfrq) ) ;
  29.     if (p != NULL) {
  30.         (void) memset (p, 0, sizeof (struct grinfrq) );
  31.         p->dlm = GRINFRQ_DLM_DFLT ;
  32.         p->mdl = GRINFRQ_MDL_DFLT ; 
  33.     }
  34.     return (p);
  35. }
  36.  
  37. int         grinf_fpr ( fp, grp, grinf)
  38. FILE         *     fp;
  39. struct     group     *     grp;
  40. struct     grinfrq *     grinf;
  41. {
  42.     int     nout = 0;     /* Number of bytes output */
  43.     int     dreq = 0;     /* Is delimiter required */
  44.  
  45.     if (grinf->nam) {
  46.         if (grinf->vbs)
  47.             nout += fprintf (fp, "gname=");
  48.         nout += fprintf (fp, "%s", grp->gr_name);
  49.         dreq = 1;
  50.     }
  51.     if (grinf->epw) {
  52.         if (dreq)
  53.             nout += fprintf (fp, "%c", grinf->dlm);
  54.         if (grinf->vbs)
  55.             nout += fprintf (fp, "pass=");
  56.         nout += fprintf (fp, "%s", grp->gr_passwd);
  57.     }
  58.     if (grinf->gid) {
  59.         if (dreq)
  60.             nout += fprintf (fp, "%c", grinf->dlm);
  61.         if (grinf->vbs)
  62.             nout += fprintf (fp, "gid=");
  63.         nout += fprintf (fp, "%d", grp->gr_gid);
  64.     }
  65.     if (grinf->mem) {
  66.         int mdreq = 0;
  67.         int mno = 0;
  68.         char **vmem = grp->gr_mem;
  69.         
  70.         if (dreq)
  71.             nout += fprintf (fp, "%c", grinf->dlm);
  72.         if (grinf->vbs)
  73.             nout += fprintf (fp, "members=");
  74.         for (; *vmem != NULL; vmem++) {
  75.             if (mdreq) {
  76.             nout += fprintf (fp, "%c", grinf->mdl);
  77.             }
  78.             nout += fprintf (fp, "%s", *vmem);
  79.             mdreq = 1;
  80.         }
  81.     }
  82.     if ( grinf->nam | grinf->epw | grinf->gid | grinf->mem )
  83.         nout += fprintf (fp, "\n");
  84.     return (nout);
  85. }
  86.  
  87.  
  88.