-
-int mymkdir(char const * pathname, unsigned long int mode)
-{
-#if HAVE_MKDIR
-# if MKDIR_TAKES_ONE_ARG
- // MinGW32
- return ::mkdir(pathname);
-# else
- // POSIX
- return ::mkdir(pathname, mode_t(mode));
-# endif
-#elif defined(_WIN32)
- // plain Windows 32
- return CreateDirectory(pathname, 0) != 0 ? 0 : -1;
-#elif HAVE__MKDIR
- return ::_mkdir(pathname);
-#else
-# error "Don't know how to create a directory on this system."
-#endif
-}
-
-
-int makedir(char * newdir)
-{
- char *buffer;
- char *p;
- int len = (int)strlen(newdir);
- int mode = 0775;
-
- if (len <= 0)
- return 1;
-
- buffer = (char*)malloc(len+1);
- strcpy(buffer,newdir);
-
- if (buffer[len-1] == '/')
- buffer[len-1] = '\0';
- if (mymkdir(buffer, mode) == 0) {
- free(buffer);
- return 0;
- }
-
- p = buffer + 1;
- while (1) {
- char hold;
-
- while(*p && *p != '\\' && *p != '/')
- p++;
- hold = *p;
- *p = 0;
- if (mymkdir(buffer, mode) != 0) {
- printf("couldn't create directory %s\n",buffer);
- free(buffer);
- return 1;
- }
- if (hold == 0)
- break;
- *p++ = hold;
- }
- free(buffer);
- return 0;
-}
-
-