#include #include #include #include #include int make_directory_for_filename (const char *filename) { int ret_val = 1; char temp [1024]; memset (temp, 0, sizeof (temp)); strcpy (temp, filename); strrchr (temp, '/')[0] = '\0'; /* lop off the filename */ // Check for directory, if not make it! if (access (temp, R_OK | W_OK | X_OK) == -1) { char temp1 [1024]; char *ptr = strtok (temp, "/"); memset (temp1, 0, sizeof (temp1)); if (filename [0] == '/') temp1 [0] = '/'; while (ptr != NULL) { strcat (temp1, ptr); if (access (temp1, R_OK | X_OK) == -1) { #ifdef _WIN32 if (mkdir (temp1) == -1) { #else if (mkdir (temp1, 0755) == -1) { #endif printf ("Couldn't create directory %s. Using ./\n", temp); strcpy (temp, "./"); ret_val = 0; } } /* if access */ ptr = strtok (NULL, "/"); strcat (temp1, "/"); } /* while */ strcpy (temp, filename); } return (ret_val); }