120 lines
2.2 KiB
C++
120 lines
2.2 KiB
C++
#include <ctype.h> // isspace()
|
|
#include <stdlib.h> // atoi()
|
|
#include <math.h> // rint()
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <sys/stat.h> // stat()
|
|
#include <unistd.h> // stat()
|
|
|
|
#include <string>
|
|
|
|
#include <Bucket/bucketutils.h>
|
|
|
|
#ifdef __CYGWIN32__
|
|
# define MKDIR(a) mkdir(a,S_IRWXU) // I am just guessing at this flag
|
|
(NHV)
|
|
#endif // __CYGWIN32__
|
|
|
|
#ifdef __CYGWIN32__
|
|
|
|
// return the file path name ( foo/bar/file.ext = foo/bar )
|
|
static void extract_path (char *in, char *base) {
|
|
int len, i;
|
|
|
|
len = strlen (in);
|
|
strcpy (base, in);
|
|
|
|
i = len - 1;
|
|
while ( (i >= 0) && (in[i] != '/') ) {
|
|
i--;
|
|
}
|
|
|
|
base[i] = '\0';
|
|
}
|
|
|
|
|
|
// Make a subdirectory
|
|
static int my_mkdir (char *dir) {
|
|
struct stat stat_buf;
|
|
int result;
|
|
|
|
printf ("mk_dir() ");
|
|
|
|
result = stat (dir, &stat_buf);
|
|
|
|
if (result != 0) {
|
|
MKDIR (dir);
|
|
result = stat (dir, &stat_buf);
|
|
if (result != 0) {
|
|
printf ("problem creating %s\n", dir);
|
|
} else {
|
|
printf ("%s created\n", dir);
|
|
}
|
|
} else {
|
|
printf ("%s already exists\n", dir);
|
|
}
|
|
|
|
return (result);
|
|
}
|
|
|
|
#endif // __CYGWIN32__
|
|
|
|
|
|
void scenery_dir( const string& dir ) {
|
|
struct stat stat_buf;
|
|
char base_path[256], file[256], exfile[256];
|
|
#ifdef __CYGWIN32__
|
|
char tmp_path[256];
|
|
#endif
|
|
string command;
|
|
FILE *fd;
|
|
fgBUCKET p;
|
|
int result;
|
|
|
|
cout << "Dir = " + dir + "\n";
|
|
|
|
// stat() directory and create if needed
|
|
result = stat(dir.c_str(), &stat_buf);
|
|
if ( result != 0 ) {
|
|
cout << "Stat error need to create directory\n";
|
|
|
|
#ifndef __CYGWIN32__
|
|
|
|
command = "mkdir -p " + dir + "\n";
|
|
system( command.c_str() );
|
|
|
|
#else // __CYGWIN32__
|
|
|
|
// Cygwin crashes when trying to output to node file
|
|
// explicitly making directory structure seems OK on Win95
|
|
|
|
extract_path (base_path, tmp_path);
|
|
|
|
dir = tmp_path;
|
|
if (my_mkdir ( dir.c_str() )) { exit (-1); }
|
|
|
|
dir = base_path;
|
|
if (my_mkdir ( dir.c_str() )) { exit (-1); }
|
|
|
|
#endif // __CYGWIN32__
|
|
|
|
} else {
|
|
// assume directory exists
|
|
cout << " Allready Exists !\n";
|
|
}
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
string root;
|
|
|
|
if(argc != 2)
|
|
{
|
|
cout << "Makedir failed\n";
|
|
return(10);
|
|
}
|
|
root = argv[1];
|
|
scenery_dir(root);
|
|
|
|
return(0);
|
|
}
|