* Copyright (C) 1996-2000 Andrew Tridgell
* Copyright (C) 1996 Paul Mackerras
* Copyright (C) 2001, 2002 Martin Pool <mbp@samba.org>
- * Copyright (C) 2003-2007 Wayne Davison
+ * Copyright (C) 2003-2008 Wayne Davison
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
t[1].tv_usec = 0;
# ifdef HAVE_LUTIMES
if (S_ISLNK(mode)) {
- lutimes(fname, t);
- return 0; /* ignore errors */
+ if (lutimes(fname, t) < 0)
+ return errno == ENOSYS ? 1 : -1;
+ return 0;
}
# endif
return utimes(fname, t);
int len; /* Number of bytes read into `buf'. */
if ((ifd = do_open(source, O_RDONLY, 0)) < 0) {
- rsyserr(FERROR, errno, "open %s", full_fname(source));
+ rsyserr(FERROR_XFER, errno, "open %s", full_fname(source));
return -1;
}
if (ofd < 0) {
if (robust_unlink(dest) && errno != ENOENT) {
- rsyserr(FERROR, errno, "unlink %s", full_fname(dest));
+ rsyserr(FERROR_XFER, errno, "unlink %s", full_fname(dest));
return -1;
}
if ((ofd = do_open(dest, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL, mode)) < 0
&& (!create_bak_dir || errno != ENOENT || make_bak_dir(dest) < 0
|| (ofd = do_open(dest, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL, mode)) < 0)) {
- rsyserr(FERROR, errno, "open %s", full_fname(dest));
+ rsyserr(FERROR_XFER, errno, "open %s", full_fname(dest));
close(ifd);
return -1;
}
while ((len = safe_read(ifd, buf, sizeof buf)) > 0) {
if (full_write(ofd, buf, len) < 0) {
- rsyserr(FERROR, errno, "write %s", full_fname(dest));
+ rsyserr(FERROR_XFER, errno, "write %s", full_fname(dest));
close(ifd);
close(ofd);
return -1;
}
if (len < 0) {
- rsyserr(FERROR, errno, "read %s", full_fname(source));
+ rsyserr(FERROR_XFER, errno, "read %s", full_fname(source));
close(ifd);
close(ofd);
return -1;
}
if (close(ifd) < 0) {
- rsyserr(FINFO, errno, "close failed on %s",
+ rsyserr(FWARNING, errno, "close failed on %s",
full_fname(source));
}
if (close(ofd) < 0) {
- rsyserr(FERROR, errno, "close failed on %s",
+ rsyserr(FERROR_XFER, errno, "close failed on %s",
full_fname(dest));
return -1;
}
} while ((rc = access(path, 0)) == 0 && counter != start);
if (verbose > 0) {
- rprintf(FINFO,"renaming %s to %s because of text busy\n",
+ rprintf(FWARNING, "renaming %s to %s because of text busy\n",
fname, path);
}
}
/** Turn a user name into a uid */
-int name_to_uid(const char *name, uid_t *uid)
+int name_to_uid(const char *name, uid_t *uid_p)
{
struct passwd *pass;
if (!name || !*name)
return 0;
- pass = getpwnam(name);
- if (pass) {
- *uid = pass->pw_uid;
- return 1;
- }
- return 0;
+ if (!(pass = getpwnam(name)))
+ return 0;
+ *uid_p = pass->pw_uid;
+ return 1;
}
/** Turn a group name into a gid */
-int name_to_gid(const char *name, gid_t *gid)
+int name_to_gid(const char *name, gid_t *gid_p)
{
struct group *grp;
if (!name || !*name)
return 0;
- grp = getgrnam(name);
- if (grp) {
- *gid = grp->gr_gid;
- return 1;
- }
- return 0;
+ if (!(grp = getgrnam(name)))
+ return 0;
+ *gid_p = grp->gr_gid;
+ return 1;
}
/** Lock a byte range in a open file */
curr_dir_depth = count_dir_elements(curr_dir + module_dirlen);
}
+ if (verbose >= 5 && !set_path_only)
+ rprintf(FINFO, "[%s] push_dir(%s)\n", who_am_i(), curr_dir);
+
return 1;
}
if (sanitize_paths)
curr_dir_depth = count_dir_elements(curr_dir + module_dirlen);
+ if (verbose >= 5)
+ rprintf(FINFO, "[%s] pop_dir(%s)\n", who_am_i(), curr_dir);
+
return 1;
}