コード例 #1
0
ファイル: sys.c プロジェクト: NightOfTwelve/radare2
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;
}
コード例 #2
0
ファイル: sys.c プロジェクト: hhhaiai/radare2
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;
}
コード例 #3
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;
}
コード例 #4
0
ファイル: sys.c プロジェクト: futex/radare2
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;
}
コード例 #5
0
ファイル: sys.c プロジェクト: hillu/radare2
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;
}
コード例 #6
0
ファイル: disk.c プロジェクト: Sigterm-no/radare2
// 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;
}