*/
#include "rsync.h"
+extern int am_daemon;
+extern int am_server;
+extern int am_sender;
+extern int quiet;
+extern int module_id;
+extern char *auth_user;
+extern char *log_format;
+
static int log_initialised;
static char *logfname;
static FILE *logfile;
{ RERR_WAITCHILD , "some error returned by waitpid()" },
{ RERR_MALLOC , "error allocating core memory buffers" },
{ RERR_PARTIAL , "some files could not be transferred" },
+ { RERR_VANISHED , "some files vanished before they could be transfered" },
{ RERR_TIMEOUT , "timeout in data send/receive" },
{ RERR_CMD_FAILED , "remote shell failed" },
{ RERR_CMD_KILLED , "remote shell killed" },
void rwrite(enum logcode code, char *buf, int len)
{
FILE *f=NULL;
- extern int am_daemon;
- extern int am_server;
- extern int quiet;
/* recursion can happen with certain fatal conditions */
if (quiet && code == FINFO) return;
void rflush(enum logcode code)
{
FILE *f = NULL;
- extern int am_daemon;
if (am_daemon) {
return;
}
if (code == FINFO) {
- extern int am_server;
if (am_server)
f = stderr;
else
char *format, char *op, struct file_struct *file,
struct stats *initial_stats)
{
- extern int module_id;
- extern char *auth_user;
char buf[1024];
char buf2[1024];
char *p, *s, *n;
size_t l;
- extern struct stats stats;
- extern int am_sender;
- extern int am_daemon;
int64 b;
/* We expand % codes one by one in place in buf. We don't
/* log the outgoing transfer of a file */
void log_send(struct file_struct *file, struct stats *initial_stats)
{
- extern int module_id;
- extern int am_server;
- extern char *log_format;
-
if (lp_transfer_logging(module_id)) {
log_formatted(FLOG, lp_log_format(module_id), "send", file, initial_stats);
} else if (log_format && !am_server) {
/* log the incoming transfer of a file */
void log_recv(struct file_struct *file, struct stats *initial_stats)
{
- extern int module_id;
- extern int am_server;
- extern char *log_format;
-
if (lp_transfer_logging(module_id)) {
log_formatted(FLOG, lp_log_format(module_id), "recv", file, initial_stats);
} else if (log_format && !am_server) {
void log_exit(int code, const char *file, int line)
{
if (code == 0) {
- extern struct stats stats;
rprintf(FLOG,"wrote %.0f bytes read %.0f bytes total size %.0f\n",
(double)stats.total_written,
(double)stats.total_read,
if (!name)
name = "unexplained error";
- rprintf(FERROR,"rsync error: %s (code %d) at %s(%d)\n",
- name, code, file, line);
+ /* VANISHED is not an error, only a warning */
+ if (code == RERR_VANISHED) {
+ rprintf(FINFO, "rsync warning: %s (code %d) at %s(%d)\n",
+ name, code, file, line);
+ } else {
+ rprintf(FERROR, "rsync error: %s (code %d) at %s(%d)\n",
+ name, code, file, line);
+ }
}
}