]> code.citadel.org Git - citadel.git/blobdiff - citadel/serv_vandelay.c
- declare *printf format specifiers if gcc detected
[citadel.git] / citadel / serv_vandelay.c
index f54e9d7046662eb76bc3649d0d496e8e1a400da3..d364740cbd027c664775a77ba3024067a996f1bc 100644 (file)
 #include <pwd.h>
 #include <errno.h>
 #include <sys/types.h>
-#include <sys/time.h>
+
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+#  include <sys/time.h>
+# else
+#  include <time.h>
+# endif
+#endif
+
 #include <sys/wait.h>
 #include <string.h>
+#include <ctype.h>
 #include <limits.h>
 #include "citadel.h"
 #include "server.h"
-#include <time.h>
 #include "sysdep_decls.h"
 #include "citserver.h"
 #include "support.h"
@@ -49,7 +60,7 @@ void artv_export_users_backend(struct usersupp *usbuf, void *data) {
        cprintf("%ld\n", usbuf->posted);
        cprintf("%d\n", usbuf->axlevel);
        cprintf("%ld\n", usbuf->usernum);
-       cprintf("%ld\n", usbuf->lastcall);
+       cprintf("%ld\n", (long)usbuf->lastcall);
        cprintf("%d\n", usbuf->USuserpurge);
        cprintf("%s\n", usbuf->fullname);
        cprintf("%d\n", usbuf->USscreenwidth);
@@ -75,12 +86,12 @@ void artv_export_rooms_backend(struct quickroom *qrbuf, void *data) {
        cprintf("%s\n", qrbuf->QRpasswd);
        cprintf("%ld\n", qrbuf->QRroomaide);
        cprintf("%ld\n", qrbuf->QRhighest);
-       cprintf("%ld\n", qrbuf->QRgen);
+       cprintf("%ld\n", (long)qrbuf->QRgen);
        cprintf("%u\n", qrbuf->QRflags);
        cprintf("%s\n", qrbuf->QRdirname);
        cprintf("%ld\n", qrbuf->QRinfo);
        cprintf("%d\n", qrbuf->QRfloor);
-       cprintf("%ld\n", qrbuf->QRmtime);
+       cprintf("%ld\n", (long)qrbuf->QRmtime);
        cprintf("%d\n", qrbuf->QRep.expire_mode);
        cprintf("%d\n", qrbuf->QRep.expire_value);
        cprintf("%ld\n", qrbuf->QRnumber);
@@ -144,7 +155,6 @@ void artv_export_visits(void) {
        struct visit vbuf;
        struct cdbdata *cdbv;
 
-       cdb_begin_transaction();
        cdb_rewind(CDB_VISIT);
 
        while (cdbv = cdb_next_item(CDB_VISIT), cdbv != NULL) {
@@ -158,10 +168,16 @@ void artv_export_visits(void) {
                cprintf("%ld\n", vbuf.v_roomnum);
                cprintf("%ld\n", vbuf.v_roomgen);
                cprintf("%ld\n", vbuf.v_usernum);
-               cprintf("%ld\n", vbuf.v_lastseen);
+
+               if (strlen(vbuf.v_seen) > 0) {
+                       cprintf("%s\n", vbuf.v_seen);
+               }
+               else {
+                       cprintf("%ld\n", vbuf.v_lastseen);
+               }
+
                cprintf("%u\n", vbuf.v_flags);
        }
-       cdb_end_transaction();
 }
 
 
@@ -191,7 +207,7 @@ void artv_export_message(long msgnum) {
        sprintf(buf, "./base64 -e >%s", tempfile);
        fp = popen(buf, "w");
        fwrite(smr.ser, smr.len, 1, fp);
-       fclose(fp);
+       pclose(fp);
 
        phree(smr.ser);
 
@@ -222,7 +238,7 @@ void artv_export_messages(void) {
                }
        }
        fclose(artv_global_message_list);
-       lprintf(7, "Exported %ld messages.\n", count);
+       lprintf(7, "Exported %d messages.\n", count);
 }
 
 
@@ -426,11 +442,18 @@ void artv_import_floor(void) {
 void artv_import_visit(void) {
        struct visit vbuf;
        char buf[SIZ];
+       int i;
+       int is_textual_seen = 0;
 
        client_gets(buf);       vbuf.v_roomnum = atol(buf);
        client_gets(buf);       vbuf.v_roomgen = atol(buf);
        client_gets(buf);       vbuf.v_usernum = atol(buf);
-       client_gets(buf);       vbuf.v_lastseen = atol(buf);
+
+       client_gets(buf);
+       vbuf.v_lastseen = atol(buf);
+       for (i=0; i<strlen(buf); ++i) if (!isdigit(buf[i])) is_textual_seen = 1;
+       if (is_textual_seen)    strcpy(vbuf.v_seen, buf);
+
        client_gets(buf);       vbuf.v_flags = atoi(buf);
        put_visit(&vbuf);
        lprintf(7, "Imported visit %ld/%ld/%ld\n",
@@ -442,7 +465,7 @@ void artv_import_visit(void) {
 void artv_import_message(void) {
        struct SuppMsgInfo smi;
        long msgnum;
-       int msglen;
+       long msglen;
        FILE *fp;
        char buf[SIZ];
        char tempfile[SIZ];
@@ -464,7 +487,7 @@ void artv_import_message(void) {
        while (client_gets(buf), strcasecmp(buf, END_OF_MESSAGE)) {
                fprintf(fp, "%s\n", buf);
        }
-       fclose(fp);
+       pclose(fp);
        fp = fopen(tempfile, "rb");
        fseek(fp, 0L, SEEK_END);
        msglen = ftell(fp);
@@ -526,7 +549,7 @@ void cmd_artv(char *cmdbuf) {
        char cmd[SIZ];
        static int is_running = 0;
 
-       if (CtdlAccessCheck(ac_aide)) return;   /* FIXME should be intpgm */
+       if (CtdlAccessCheck(ac_internal)) return;
        if (is_running) {
                cprintf("%d The importer/exporter is already running.\n",
                        ERROR);