int zrt_zcall_rename (const char *oldpath, const char *newpath){ CHECK_EXIT_IF_ZRT_NOT_READY; char* absolute_path1; char* absolute_path2; char temp_path1[PATH_MAX]; char temp_path2[PATH_MAX]; int ret=-1; errno=0; LOG_SYSCALL_START("old=%p, new=%p", oldpath, newpath); struct MountsPublicInterface* transpar_mount = transparent_mount(); assert(transpar_mount); VALIDATE_SUBSTITUTED_SYSCALL_PTR(oldpath); VALIDATE_SUBSTITUTED_SYSCALL_PTR(newpath); if ( (absolute_path1 = realpath(oldpath, temp_path1)) != NULL && (absolute_path2 = zrealpath(newpath, temp_path2)) != NULL){ ret = transpar_mount->rename(transpar_mount, absolute_path1, absolute_path2); } LOG_SHORT_SYSCALL_FINISH(ret, "old=%s, new=%s", oldpath, newpath); return ret; }
int zrt_zcall_stat_realpath(const char* abspathname, struct stat *stat){ CHECK_EXIT_IF_ZRT_NOT_READY; LOG_SYSCALL_START("abspathname=%p, stat=%p", abspathname, stat); struct MountsPublicInterface* transpar_mount = transparent_mount(); assert(transpar_mount); errno=0; VALIDATE_SUBSTITUTED_SYSCALL_PTR(abspathname); int ret = transpar_mount->stat(transpar_mount, abspathname, stat); LOG_SHORT_SYSCALL_FINISH(ret, "abspathname=%s", abspathname); return ret; }
int zrt_zcall_rmdir(const char *pathname){ CHECK_EXIT_IF_ZRT_NOT_READY; char* absolute_path; char temp_path[PATH_MAX]; int ret=-1; LOG_SYSCALL_START("pathname=%s", pathname); VALIDATE_SUBSTITUTED_SYSCALL_PTR(pathname); errno=0; struct MountsPublicInterface* transpar_mount = transparent_mount(); assert(transpar_mount); if ( (absolute_path = realpath(pathname, temp_path)) != NULL ){ ret = transpar_mount->rmdir( transpar_mount, absolute_path ); } LOG_SHORT_SYSCALL_FINISH(ret, "pathname=%s", pathname); return ret; }