home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / mmdf / mmdf-IIb.43 / libz / mkdir.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-06-23  |  799 b   |  48 lines

  1. #
  2.  
  3. /*LINTLIBRARY*/
  4.  
  5. #include "stdio.h"
  6.  
  7. #ifndef lint
  8. #ifndef NOID
  9. static char    sccsid[] = "@(#)mkdir.c    7.5";
  10. #endif /* !NOID */
  11. #endif /* !lint */
  12.  
  13. extern FILE *    popen();
  14.  
  15. static
  16. quote(name, fp)
  17. register char *    name;
  18. register FILE *    fp;
  19. {
  20.     register int    c;
  21.  
  22.     (void) fputc('\'', fp);
  23.     if (name != NULL)
  24.         while ((c = *name++) != '\0')
  25.             if (c == '\'')
  26.                 (void) fprintf(fp, "'\\''");
  27.             else    (void) fputc(c, fp);
  28.     (void) fputc('\'', fp);
  29. }
  30.  
  31. mkdir(name, mode)
  32. char *    name;
  33. {
  34.     register FILE *    fp;
  35.     register int    oops;
  36.  
  37.     if ((fp = popen("sh", "w")) == NULL)
  38.         return -1;
  39.     (void) fprintf(fp, "mkdir 2>&- ");
  40.     quote(name, fp);
  41.     (void) fprintf(fp, " && chmod 2>&- %o ", mode);
  42.     quote(name, fp);
  43.     (void) fputc('\n', fp);
  44.     (void) fflush(fp);
  45.     oops = ferror(fp);
  46.     return (pclose(fp) == 0 && !oops) ? 0 : -1;
  47. }
  48.