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

  1.  
  2. #include <stdio.h>
  3. #include <memory.h>
  4. #include <pwd.h>
  5. #include "pwinf.h"
  6.  
  7. static char *RCSid="$Header: pwinf.c,v 1.1 91/10/28 10:38:25 dtb Exp $";
  8.  
  9. int     pwinf_info_fpr (fp)
  10. FILE     * fp;
  11. {
  12.     int nout = 0;
  13.     nout += fprintf (fp, "%s %s\n", __FILE__, PWINF_RCSid);
  14.     return (nout);
  15. }
  16.  
  17. /*
  18.     pwinfrq_set_dflt
  19.     Puts default values in pwinfrq structure.
  20.     A pointer to the structure is passed as an argument.
  21.     If a NULL pointer is used as an argument, then memory will
  22.     be allocated and a pointer to the new structure returned.
  23.     If a NULL pointer is returned, memory could not be allocated.
  24. */
  25. struct pwinfrq     *    pwinfrq_set_dflt ( p)
  26. struct pwinfrq     *     p;
  27. {
  28.     if (p == NULL)
  29.         p = (struct pwinfrq *) malloc ( sizeof (struct pwinfrq) ) ;
  30.     if (p != NULL) {
  31.         (void) memset (p, 0, sizeof (struct pwinfrq) );
  32.         p->dlm = PWINFRQ_DLM_DFLT ;
  33.     }
  34.     return (p);
  35. }
  36.  
  37. int         pwinf_fpr ( fp, pwd, pwinf)
  38. FILE         *     fp;
  39. struct     passwd     *     pwd;
  40. struct     pwinfrq *     pwinf;
  41. {
  42.     int     nout = 0;     /* Number of bytes output */
  43.     int     dreq = 0;     /* Is delimiter required */
  44.  
  45.     if (pwinf->nam) {
  46.         if (pwinf->vbs)
  47.             nout += fprintf (fp, "usrname=");
  48.         nout += fprintf (fp, "%s", pwd->pw_name);
  49.         dreq = 1;
  50.     }
  51.     if (pwinf->epw) {
  52.         if (dreq)
  53.             nout += fprintf (fp, "%c", pwinf->dlm);
  54.         if (pwinf->vbs)
  55.             nout += fprintf (fp, "pass=");
  56.         nout += fprintf (fp, "%s", pwd->pw_passwd);
  57.     }
  58.     if (pwinf->uid) {
  59.         if (dreq)
  60.             nout += fprintf (fp, "%c", pwinf->dlm);
  61.         if (pwinf->vbs)
  62.             nout += fprintf (fp, "uid=");
  63.         nout += fprintf (fp, "%d", pwd->pw_uid);
  64.     }
  65.     if (pwinf->gid) {
  66.         if (dreq)
  67.             nout += fprintf (fp, "%c", pwinf->dlm);
  68.         if (pwinf->vbs)
  69.             nout += fprintf (fp, "gid=");
  70.         nout += fprintf (fp, "%d", pwd->pw_gid);
  71.     }
  72.     /*
  73.     if (pwinf->age) {
  74.         if (dreq)
  75.             nout += fprintf (fp, "%c", pwinf->dlm);
  76.         if (pwinf->vbs)
  77.             nout += fprintf (fp, "age=");
  78.         nout += fprintf (fp, "%s", pwd->pw_age);
  79.     }
  80.     */
  81.     if (pwinf->cmt) {
  82.         if (dreq)
  83.             nout += fprintf (fp, "%c", pwinf->dlm);
  84.         if (pwinf->vbs)
  85.             nout += fprintf (fp, "comment=");
  86.         nout += fprintf (fp, "%s", pwd->pw_comment);
  87.     }
  88.     if (pwinf->dir) {
  89.         if (dreq)
  90.             nout += fprintf (fp, "%c", pwinf->dlm);
  91.         if (pwinf->vbs)
  92.             nout += fprintf (fp, "home_dir=");
  93.         nout += fprintf (fp, "%s", pwd->pw_dir);
  94.     }
  95.     if (pwinf->shl) {
  96.         if (dreq)
  97.             nout += fprintf (fp, "%c", pwinf->dlm);
  98.         if (pwinf->vbs)
  99.             nout += fprintf (fp, "shell=");
  100.         nout += fprintf (fp, "%s", pwd->pw_shell);
  101.     }
  102.     if ( pwinf->nam | pwinf->epw | pwinf->uid | pwinf->gid | pwinf->age 
  103.         | pwinf->cmt | pwinf->dir | pwinf->shl )
  104.         nout += fprintf (fp, "\n");
  105.     return (nout);
  106. }
  107.  
  108.