verbose info not being line buffered to files.
- add a call to localtime() in open_log() in order to prime the C
libraries timezone cache before the chroot(). This should fix the
problem of rsyncd log entries being in GMT time.
AC_FUNC_UTIME_NULL
AC_CHECK_FUNCS(mmap munmap waitpid getcwd strdup strerror chown chmod mknod)
AC_CHECK_FUNCS(fchmod fstat strchr readlink link utime utimes)
AC_FUNC_UTIME_NULL
AC_CHECK_FUNCS(mmap munmap waitpid getcwd strdup strerror chown chmod mknod)
AC_CHECK_FUNCS(fchmod fstat strchr readlink link utime utimes)
-AC_CHECK_FUNCS(memmove getopt_long lchown setlinebuf vsnprintf setsid glob strpbrk)
+AC_CHECK_FUNCS(memmove getopt_long lchown vsnprintf setsid glob strpbrk)
echo $ac_n "checking for working fnmatch... $ac_c"
AC_TRY_RUN([#include <fnmatch.h>
echo $ac_n "checking for working fnmatch... $ac_c"
AC_TRY_RUN([#include <fnmatch.h>
{
static int initialised;
int options = LOG_PID;
{
static int initialised;
int options = LOG_PID;
if (initialised) return;
initialised = 1;
if (initialised) return;
initialised = 1;
#ifndef LOG_NDELAY
syslog(LOG_INFO,"rsyncd started\n");
#endif
#ifndef LOG_NDELAY
syslog(LOG_INFO,"rsyncd started\n");
#endif
+
+ /* this looks pointless, but it is needed in order for the
+ C library on some systems to fetch the timezone info
+ before the chroot */
+ t = time(NULL);
+ localtime(&t);
if (fwrite(buf, len, 1, f) != 1) exit_cleanup(1);
if (fwrite(buf, len, 1, f) != 1) exit_cleanup(1);
- if (buf[len-1] == '\r') fflush(f);
+ if (buf[len-1] == '\r' || buf[len-1] == '\n') fflush(f);
pid = do_cmd(shell_cmd,shell_machine,shell_user,shell_path,&f_in,&f_out);
pid = do_cmd(shell_cmd,shell_machine,shell_user,shell_path,&f_in,&f_out);
-#if HAVE_SETLINEBUF
- setlinebuf(stdout);
- setlinebuf(stderr);
-#endif
-
ret = client_run(f_in, f_out, pid, argc, argv);
fflush(stdout);
ret = client_run(f_in, f_out, pid, argc, argv);
fflush(stdout);