access dereferences symbolic links. Use lstat instead.
authorDaniel Hokka Zakrisson <daniel@hozac.com>
Fri, 29 Aug 2008 03:45:53 +0000 (03:45 +0000)
committerDaniel Hokka Zakrisson <daniel@hozac.com>
Fri, 29 Aug 2008 03:45:53 +0000 (03:45 +0000)
git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2779 94cd875c-1c1d-0410-91d2-eb244daf1a30

src/vclone.c

index c180bcf..78992c3 100644 (file)
@@ -125,6 +125,7 @@ handleDirEntry(const PathInfo *src_path, const PathInfo *basename,
   else {
     PathInfo           dst_path = global_info.dst;
     char               dst_path_buf[ENSC_PI_APPSZ(dst_path, *src_path)];
+    struct stat                dst_st;
 
     if (S_ISDIR(st->st_mode))
       *is_dir = true;
@@ -141,7 +142,7 @@ handleDirEntry(const PathInfo *src_path, const PathInfo *basename,
     PathInfo_append(&dst_path, src_path, dst_path_buf);
 
     /* skip files that already exist */
-    if (access(dst_path.d, F_OK)!=-1) {
+    if (lstat(dst_path.d, &dst_st)!=-1) {
       if (Global_getVerbosity() > 1) {
        WRITE_MSG(1, "  skipping '");
        Vwrite(1, src_path->d, src_path->l);