exit_cleanup(RERR_MALLOC);
}
-void overflow(char *str)
+void overflow_exit(char *str)
{
rprintf(FERROR, "ERROR: buffer overflow in %s\n", str);
exit_cleanup(RERR_MALLOC);
-int set_modtime(char *fname, time_t modtime)
+int set_modtime(char *fname, time_t modtime, mode_t mode)
{
+#if !defined HAVE_LUTIMES || !defined HAVE_UTIMES
+ if (S_ISLNK(mode))
+ return 1;
+#endif
+
if (verbose > 2) {
rprintf(FINFO, "set modtime of %s to (%ld) %s",
safe_fname(fname), (long)modtime,
return 0;
{
-#ifdef HAVE_UTIMBUF
+#ifdef HAVE_UTIMES
+ struct timeval t[2];
+ t[0].tv_sec = time(NULL);
+ t[0].tv_usec = 0;
+ t[1].tv_sec = modtime;
+ t[1].tv_usec = 0;
+# ifdef HAVE_LUTIMES
+ if (S_ISLNK(mode))
+ return lutimes(fname, t);
+# endif
+ return utimes(fname, t);
+#elif defined HAVE_UTIMBUF
struct utimbuf tbuf;
tbuf.actime = time(NULL);
tbuf.modtime = modtime;
t[1] = modtime;
return utime(fname,t);
#else
- struct timeval t[2];
- t[0].tv_sec = time(NULL);
- t[0].tv_usec = 0;
- t[1].tv_sec = modtime;
- t[1].tv_usec = 0;
- return utimes(fname,t);
+#error No file-time-modification routine found!
#endif
}
}
filter_server_path(s);
#else
glob_t globbuf;
- int i;
if (maxargs <= argc)
return;
if (globbuf.gl_pathc == 0)
argv[argc++] = s;
else {
- int j = globbuf.gl_pathc;
+ int i;
free(s);
- for (i = 0; i < j; i++) {
+ for (i = 0; i < (int)globbuf.gl_pathc; i++) {
if (!(argv[argc++] = strdup(globbuf.gl_pathv[i])))
out_of_memory("glob_expand_one");
}