Example #1
0
File: rename.c Project: VanL/zrt
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;
}
Example #2
0
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;
}
Example #3
0
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;
}