X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Freqstat.c;h=18349529fa35681bf6c245a8f2ebeac62a7f4cdf;hb=78ba3ee1d71032a1325036d5cefa8d0549d76ccd;hp=34b7ce37df1c49e189e9a407b46af9680137b5cf;hpb=5dce4f6c7d1f5fb0a4d4bcf72c11ee0c91ebcfdf;p=doldaconnect.git diff --git a/daemon/reqstat.c b/daemon/reqstat.c index 34b7ce3..1834952 100644 --- a/daemon/reqstat.c +++ b/daemon/reqstat.c @@ -22,7 +22,6 @@ #include #include #include -#include #ifdef HAVE_CONFIG_H #include @@ -31,6 +30,10 @@ #include "module.h" #include "log.h" +#ifdef HAVE_XATTR +#include +#endif + struct trdata { size_t startpos; }; @@ -62,6 +65,7 @@ void filelog(char *format, ...) fclose(out); } +#ifdef HAVE_XATTR void xainc(wchar_t *file, char *an, off_t inc) { char buf[32]; @@ -69,6 +73,8 @@ void xainc(wchar_t *file, char *an, off_t inc) off_t val; char *fn; + if(file[0] != L'/') + return; if((fn = icswcstombs(file, NULL, NULL)) == NULL) { flog(LOG_WARNING, "could not convert filename %ls into local charset: %s", file, strerror(errno)); return; @@ -88,26 +94,33 @@ void xainc(wchar_t *file, char *an, off_t inc) if(setxattr(fn, an, buf, al, 0) < 0) flog(LOG_WARNING, "could not set xattr %s on %s: %s", an, fn, strerror(errno)); } +#endif void request(struct transfer *transfer, struct trdata *data) { filelog("request %ls", transfer->path); +#ifdef HAVE_XATTR if(confgetint("reqstat", "xa")) xainc(transfer->path, "user.dc-req", 1); +#endif } void start(struct transfer *transfer, struct trdata *data) { filelog("start %ls at %zi", transfer->path, data->startpos); +#ifdef HAVE_XATTR if(confgetint("reqstat", "xa")) xainc(transfer->path, "user.dc-started", 1); +#endif } void finish(struct transfer *transfer, struct trdata *data) { filelog("finish %ls at %zi, total %zi", transfer->path, transfer->curpos, transfer->curpos - data->startpos); +#ifdef HAVE_XATTR if(confgetint("reqstat", "xa")) xainc(transfer->path, "user.dc-bytes", transfer->curpos - data->startpos); +#endif } static int chattr(struct transfer *transfer, wchar_t *attrib, struct trdata *data)