Exemple #1
0
R_API int r_sys_rmkdir(const char *dir) {
	int ret = R_TRUE;
	const char slash = R_SYS_DIR[0];
	char *path = strdup (dir), *ptr = path;
	if (*ptr==slash) ptr++;
#if __WINDOWS__
	{
		char *p = strstr (ptr, ":\\");
		if (p) {
			ptr = p + 2;
		}
	}
#endif
	while ((ptr = strchr (ptr, slash))) {
		*ptr = 0;
		if (!r_sys_mkdir (path) && r_sys_mkdir_failed ()) {
			eprintf ("r_sys_rmkdir: fail '%s' of '%s'\n", path, dir);
			free (path);
			return R_FALSE;
		}
		*ptr = slash;
		ptr++;
	}
	if (!r_sys_mkdir (path) && r_sys_mkdir_failed ())
		ret = R_FALSE;
	free (path);
	return ret;
}
Exemple #2
0
R_API bool r_sys_mkdirp(const char *dir) {
	bool ret = true;
	char slash = R_SYS_DIR[0];
	char *path = strdup (dir), *ptr = path;
	if (*ptr == slash) ptr++;
#if __WINDOWS__ && !defined(__CYGWIN__)
	{
		char *p = strstr (ptr, ":\\");
		if (p) ptr = p + 2;
	}
#endif
	for (;;) {
		// find next slash
		for (; *ptr; ptr++) {
			if (*ptr == '/' || *ptr == '\\') {
				slash = *ptr;
				break;
			}
		}
		if (!*ptr) break;
		*ptr = 0;
		if (!r_sys_mkdir (path) && r_sys_mkdir_failed ()) {
			eprintf ("r_sys_mkdirp: fail '%s' of '%s'\n", path, dir);
			free (path);
			return false;
		}
		*ptr = slash;
		ptr++;
	}
	if (!r_sys_mkdir (path) && r_sys_mkdir_failed ())
		ret = false;
	free (path);
	return ret;
}
Exemple #3
0
static int r_core_project_init() {
	int ret;
	char *str = r_str_home (".radare2");
	if (str && (ret = r_sys_mkdir (str))) {
		if (!ret) {
			free (str);
			str = r_str_home (".radare2/plugins");
			ret = r_sys_mkdir (str);
			if (ret) eprintf ("Cannot create ~/.radare2/plugins\n");
		}
	}
	str = r_str_home (".radare2/rdb");
	ret = r_sys_mkdir (str);
	free (str);
	return ret;
}
Exemple #4
0
static inline int r_sys_mkdirp(char *dir) {
	int ret = 1;
	const char slash = DIRSEP;
	char *path = dir;
	char *ptr = path;
	if (*ptr == slash) {
		ptr++;
	}
#if __WINDOWS__
        char *p = strstr (ptr, ":\\");
		if (p) {
			ptr = p + 2;
		}
#endif
		while ((ptr = strchr (ptr, slash))) {
			*ptr = 0;
			if (!r_sys_mkdir (path) && r_sys_mkdir_failed ()) {
				eprintf ("r_sys_mkdirp: fail '%s' of '%s'\n", path, dir);
				*ptr = slash;
				return 0;
			}
			*ptr = slash;
			ptr++;
		}
		return ret;
}
Exemple #5
0
R_API int r_io_create (RIO *io, const char *file, int mode, int type) {
	if (io->plugin && io->plugin->create)
		return io->plugin->create (io, file, mode, type);
	if (type == 'd'|| type == 1)
		return r_sys_mkdir (file);
	return r_sandbox_creat (file, mode)? R_FALSE: R_TRUE;
}
Exemple #6
0
R_API int r_sys_rmkdir(const char *dir) {
	int ret = R_TRUE;
	char *path = strdup (dir), *ptr = path;
	// XXX: Wrong for w32 (/).. and no errno ?
	if (*ptr=='/') ptr++;
	while ((ptr = strchr (ptr, '/'))) {
		*ptr = 0;
		if (!r_sys_mkdir (path) && r_sys_mkdir_failed ()) {
			eprintf ("r_sys_rmkdir: fail %s\n", dir);
			free (path);
			return R_FALSE;
		}
		*ptr = '/';
		ptr++;
	}
	if (!r_sys_mkdir (path) && r_sys_mkdir_failed ())
		ret = R_FALSE;
	free (path);
	return ret;
}
Exemple #7
0
R_API int r_sys_mkdirp(const char *dir) {
	int ret = R_TRUE;
	char slash = R_SYS_DIR[0];
	char *path = strdup (dir), *ptr = path;
	if (*ptr==slash) ptr++;
#if __WINDOWS__
	{
		char *p = strstr (ptr, ":\\");
		if (p) {
			ptr = p + 2;
		}
	}
#endif
	for (;;) {
		// find next slash
		for (; *ptr; ptr++) {
			if (*ptr == '/' || *ptr == '\\') {
				slash = *ptr;
				break;
			}
		}
		if (!*ptr) break;
		*ptr = 0;
		if (!r_sys_mkdir (path) && r_sys_mkdir_failed ()) {
			eprintf ("r_sys_mkdirp: fail '%s' of '%s'\n", path, dir);
			free (path);
			return R_FALSE;
		}
		*ptr = slash;
		ptr++;
	}
	if (!r_sys_mkdir (path) && r_sys_mkdir_failed ())
		ret = R_FALSE;
	free (path);
	return ret;
}
Exemple #8
0
// TODO: move into util.c ?
static inline int r_sys_rmkdir(char *dir) {
        char *ptr = dir;
        if (*ptr==DIRSEP) ptr++;
        while ((ptr = strchr (ptr, DIRSEP))) {
                *ptr = 0;
                if (!r_sys_mkdir (dir) && r_sys_mkdir_failed ()) {
                        eprintf ("r_sys_rmkdir: fail %s\n", dir);
			*ptr = DIRSEP;
                        return 0;
                }
                *ptr = DIRSEP;
                ptr++;
        }
        return 1;
}