42 lines
905 B
C++
42 lines
905 B
C++
#include <host/Directories.h>
|
|
#include <utils/String8.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
|
|
#ifdef HAVE_MS_C_RUNTIME
|
|
#include <direct.h>
|
|
#endif
|
|
|
|
using namespace android;
|
|
using namespace std;
|
|
|
|
string
|
|
parent_dir(const string& path)
|
|
{
|
|
return string(String8(path.c_str()).getPathDir().string());
|
|
}
|
|
|
|
int
|
|
mkdirs(const char* last)
|
|
{
|
|
String8 dest;
|
|
const char* s = last-1;
|
|
int err;
|
|
do {
|
|
s++;
|
|
if (s > last && (*s == '.' || *s == 0)) {
|
|
String8 part(last, s-last);
|
|
dest.appendPath(part);
|
|
#ifdef HAVE_MS_C_RUNTIME
|
|
err = _mkdir(dest.string());
|
|
#else
|
|
err = mkdir(dest.string(), S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP);
|
|
#endif
|
|
if (err != 0) {
|
|
return err;
|
|
}
|
|
last = s+1;
|
|
}
|
|
} while (*s);
|
|
return 0;
|
|
}
|