Ejemplo n.º 1
0
INT64_T chirp_global_rename(const char *host, const char *path, const char *newpath, time_t stoptime)
{
	if(is_multi_path(host)) {
		char mhost[CHIRP_PATH_MAX];
		char mpath[CHIRP_PATH_MAX];

		char mnewhost[CHIRP_PATH_MAX];
		char mnewpath[CHIRP_PATH_MAX];

		parse_multi_path(path, mhost, mpath);
		parse_multi_path(path, mnewhost, mnewpath);

		if(!strcmp(mhost, mnewhost)) {
			return chirp_multi_rename(mhost, mpath, mnewpath, stoptime);
		} else {
			errno = EXDEV;
			return -1;
		}
	} else if(not_empty(path)) {
		return chirp_reli_rename(host, path, newpath, stoptime);
	} else {
		errno = EXDEV;
		return -1;
	}
}
Ejemplo n.º 2
0
static INT64_T do_mv(int argc, char **argv)
{
	char old_full_path[CHIRP_PATH_MAX];
	char new_full_path[CHIRP_PATH_MAX];
	complete_remote_path(argv[1], old_full_path);
	complete_remote_path(argv[2], new_full_path);
	return chirp_reli_rename(current_host, old_full_path, new_full_path, stoptime);
}
Ejemplo n.º 3
0
INT64_T chirp_multi_rename(const char *volume, const char *path, const char *newpath, time_t stoptime)
{
	char lpath[CHIRP_PATH_MAX];
	char newlpath[CHIRP_PATH_MAX];
	int result;

	if(!chirp_multi_lpath(volume, path, lpath, stoptime))
		return -1;
	if(!chirp_multi_lpath(volume, newpath, newlpath, stoptime))
		return -1;

	result = chirp_multi_unlink(volume, newpath, stoptime);
	if(result < 0) {
		if(errno == ENOENT || errno == EISDIR) {
			/* ok, keep going */
		} else {
			return -1;
		}
	}

	return chirp_reli_rename(current_volume->host, lpath, newlpath, stoptime);
}