home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / uucp-1.04 / unix / mkdirs.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-02-13  |  765 b   |  50 lines

  1. /* mkdirs.c
  2.    Create any directories needed for a file name.  */
  3.  
  4. #include "uucp.h"
  5.  
  6. #include "uudefs.h"
  7. #include "sysdep.h"
  8. #include "system.h"
  9.  
  10. #include <errno.h>
  11.  
  12. boolean
  13. fsysdep_make_dirs (zfile, fpublic)
  14.      const char *zfile;
  15.      boolean fpublic;
  16. {
  17.   char *zcopy, *z;
  18.   int imode;
  19.  
  20.   zcopy = zbufcpy (zfile);
  21.  
  22.   if (fpublic)
  23.     imode = IPUBLIC_DIRECTORY_MODE;
  24.   else
  25.     imode = IDIRECTORY_MODE;
  26.  
  27.   for (z = zcopy; *z != '\0'; z++)
  28.     {
  29.       if (*z == '/' && z != zcopy)
  30.     {
  31.       *z = '\0';
  32.       if (! fsysdep_directory (zcopy))
  33.         {
  34.           if (mkdir (zcopy, imode) != 0)
  35.         {
  36.           ulog (LOG_ERROR, "mkdir (%s): %s", zcopy,
  37.             strerror (errno));
  38.           ubuffree (zcopy);
  39.           return FALSE;
  40.         }
  41.         }
  42.       *z = '/';
  43.     }
  44.     }
  45.  
  46.   ubuffree (zcopy);
  47.  
  48.   return TRUE;
  49. }
  50.