static void logit(int priority, char *buf)
{
if (logfile) {
- fprintf(logfile,"%s %s", timestring(), buf);
+ fprintf(logfile,"%s [%d] %s",
+ timestring(), (int)getpid(), buf);
fflush(logfile);
} else {
syslog(priority, "%s", buf);
static int initialised;
int options = LOG_PID;
time_t t;
+ char *logf;
if (initialised) return;
initialised = 1;
- if (lp_log_file()) {
- logfile = fopen(lp_log_file(), "a");
+ logf = lp_log_file();
+ if (logf && *logf) {
+ logfile = fopen(logf, "a");
return;
}
buf[len] = 0;
+ if (fd == FLOG) {
+ if (am_daemon) logit(LOG_INFO, buf);
+ depth--;
+ return;
+ }
+
if (am_daemon) {
int priority = LOG_INFO;
if (fd == FERROR) priority = LOG_WARNING;
fflush(f);
}
+
+/* log the outgoing transfer of a file */
+void log_send(struct file_struct *file)
+{
+ extern int module_id;
+ if (lp_transfer_logging(module_id)) {
+ rprintf(FLOG,"Sending %s [%s] %.0f %s\n",
+ client_name(0), client_addr(0),
+ (double)file->length, f_name(file));
+ }
+}
+
+/* log the incoming transfer of a file */
+void log_recv(struct file_struct *file)
+{
+ extern int module_id;
+ if (lp_transfer_logging(module_id)) {
+ rprintf(FLOG,"Receiving %s [%s] %.0f %s\n",
+ client_name(0), client_addr(0),
+ (double)file->length, f_name(file));
+ }
+}
+
+/* called when the transfer is interrupted for some reason */
+void log_exit(int code)
+{
+ 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,
+ (double)stats.total_size);
+ } else {
+ rprintf(FLOG,"transfer interrupted\n");
+ }
+}
+
+/* log the incoming transfer of a file for interactive use, this
+ will be called at the end where the client was run */
+void log_transfer(struct file_struct *file, char *fname)
+{
+ extern int verbose;
+
+ if (!verbose) return;
+
+ rprintf(FINFO,"%s\n", fname);
+}
+