version 1.6, 2019/02/14 18:31:01 |
version 1.7, 2019/02/16 05:06:30 |
|
|
return; |
return; |
sz = strlen(f->path); |
sz = strlen(f->path); |
assert(sz > 0); |
assert(sz > 0); |
LOG1(sess, "%s%s", f->path, |
LOG1(sess, "%s%s", f->path, ('/' == f->path[sz - 1]) ? "" : "/"); |
'/' == f->path[sz - 1] ? "" : "/"); |
|
} |
} |
|
|
/* |
/* |
|
|
tv[0].tv_nsec = 0; |
tv[0].tv_nsec = 0; |
tv[1].tv_sec = f->st.mtime; |
tv[1].tv_sec = f->st.mtime; |
tv[1].tv_nsec = 0; |
tv[1].tv_nsec = 0; |
rc = utimensat(p->rootfd, |
rc = utimensat(p->rootfd, f->path, tv, AT_SYMLINK_NOFOLLOW); |
f->path, tv, AT_SYMLINK_NOFOLLOW); |
|
if (rc == -1) { |
if (rc == -1) { |
ERR(sess, "%s: utimensat", f->path); |
ERR(sess, "%s: utimensat", f->path); |
return -1; |
return -1; |
|
|
*/ |
*/ |
|
|
if (newlink || sess->opts->preserve_perms) { |
if (newlink || sess->opts->preserve_perms) { |
rc = fchmodat(p->rootfd, |
rc = fchmodat(p->rootfd, f->path, f->st.mode, AT_SYMLINK_NOFOLLOW); |
f->path, f->st.mode, AT_SYMLINK_NOFOLLOW); |
|
if (rc == -1) { |
if (rc == -1) { |
ERR(sess, "%s: fchmodat", f->path); |
ERR(sess, "%s: fchmodat", f->path); |
return -1; |
return -1; |
|
|
|
|
if (*fileinfd != -1 && st.st_size > 0) { |
if (*fileinfd != -1 && st.st_size > 0) { |
mapsz = st.st_size; |
mapsz = st.st_size; |
map = mmap(NULL, mapsz, |
map = mmap(NULL, mapsz, PROT_READ, MAP_SHARED, *fileinfd, 0); |
PROT_READ, MAP_SHARED, *fileinfd, 0); |
|
if (map == MAP_FAILED) { |
if (map == MAP_FAILED) { |
WARN(sess, "%s: mmap", u->fl[u->idx].path); |
WARN(sess, "%s: mmap", u->fl[u->idx].path); |
close(*fileinfd); |
close(*fileinfd); |