]> code.citadel.org Git - citadel.git/blobdiff - citadel/serv_vcard.c
fix all the <time.h> vs. <sys/time.h> issues, hopefully
[citadel.git] / citadel / serv_vcard.c
index 4540de4d512472eddf4b99f46f83b18b8f166e54..2a67d9f874002ca7440d3aac49df3a785262e3bf 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 <limits.h>
 #include "citadel.h"
 #include "server.h"
-#include <time.h>
 #include "sysdep_decls.h"
 #include "citserver.h"
 #include "support.h"
@@ -57,7 +67,7 @@ int vcard_upload_beforesave(struct CtdlMessage *msg) {
        char *ptr;
        int linelen;
         char config_rm[ROOMNAMELEN];
-       char buf[256];
+       char buf[SIZ];
 
 
        if (!CC->logged_in) return(0);  /* Only do this if logged in. */
@@ -188,7 +198,7 @@ int vcard_upload_aftersave(struct CtdlMessage *msg) {
 /*
  * back end function used for callbacks
  */
-void vcard_gu_backend(long msgnum) {
+void vcard_gu_backend(long msgnum, void *userdata) {
        VC->msgnum = msgnum;
 }
 
@@ -214,7 +224,7 @@ struct vCard *vcard_get_user(struct usersupp *u) {
         /* We want the last (and probably only) vcard in this room */
        VC->msgnum = (-1);
         CtdlForEachMessage(MSGS_LAST, 1, (-127), "text/x-vcard",
-               NULL, vcard_gu_backend);
+               NULL, vcard_gu_backend, NULL);
         getroom(&CC->quickroom, hold_rm);      /* return to saved room */
 
        if (VC->msgnum < 0L) return vcard_new();
@@ -276,14 +286,15 @@ void vcard_write_user(struct usersupp *u, struct vCard *v) {
  */
 void cmd_regi(char *argbuf) {
        int a,b,c;
-       char buf[256];
+       char buf[SIZ];
        struct vCard *my_vcard;
 
-       char tmpaddr[256];
-       char tmpcity[256];
-       char tmpstate[256];
-       char tmpzip[256];
-       char tmpaddress[512];
+       char tmpaddr[SIZ];
+       char tmpcity[SIZ];
+       char tmpstate[SIZ];
+       char tmpzip[SIZ];
+       char tmpaddress[SIZ];
+       char tmpcountry[SIZ];
 
        if (!(CC->logged_in)) {
                cprintf("%d Not logged in.\n",ERROR+NOT_LOGGED_IN);
@@ -295,6 +306,7 @@ void cmd_regi(char *argbuf) {
        strcpy(tmpcity, "");
        strcpy(tmpstate, "");
        strcpy(tmpzip, "");
+       strcpy(tmpcountry, "USA");
 
        cprintf("%d Send registration...\n", SEND_LISTING);
        a=0;
@@ -314,10 +326,11 @@ void cmd_regi(char *argbuf) {
                        }
                if (a==5) vcard_set_prop(my_vcard, "tel;home", buf);
                if (a==6) vcard_set_prop(my_vcard, "email;internet", buf);
+               if (a==7) strcpy(tmpcountry, buf);
                ++a;
                }
-       sprintf(tmpaddress, ";;%s;%s;%s;%s;USA",
-               tmpaddr, tmpcity, tmpstate, tmpzip);
+       sprintf(tmpaddress, ";;%s;%s;%s;%s;%s",
+               tmpaddr, tmpcity, tmpstate, tmpzip, tmpcountry);
        vcard_set_prop(my_vcard, "adr", tmpaddress);
        vcard_write_user(&CC->usersupp, my_vcard);
        vcard_free(my_vcard);
@@ -344,9 +357,9 @@ void cmd_greg(char *argbuf)
        struct usersupp usbuf;
        struct vCard *v;
        char *s;
-       char who[256];
-       char adr[256];
-       char buf[256];
+       char who[SIZ];
+       char adr[SIZ];
+       char buf[SIZ];
 
        extract(who, argbuf, 0);
 
@@ -401,6 +414,11 @@ void cmd_greg(char *argbuf)
 
        s = vcard_get_prop(v, "email;internet", 0);
        cprintf("%s\n", s ? s : " ");
+       s = vcard_get_prop(v, "adr", 0);
+       sprintf(adr, "%s", s ? s : " ");/* address... */
+
+       extract_token(buf, adr, 6, ';');
+       cprintf("%s\n", buf);                           /* country */
        cprintf("000\n");
        }
 
@@ -412,7 +430,7 @@ void cmd_greg(char *argbuf)
  */
 void vcard_purge(char *username, long usernum) {
        struct CtdlMessage *msg;
-       char buf[256];
+       char buf[SIZ];
 
        msg = (struct CtdlMessage *) mallok(sizeof(struct CtdlMessage));
        if (msg == NULL) return;
@@ -462,7 +480,7 @@ char *Dynamic_Module_Init(void)
        CtdlRegisterProtoHook(cmd_regi, "REGI", "Enter registration info");
        CtdlRegisterProtoHook(cmd_greg, "GREG", "Get registration info");
        CtdlRegisterUserHook(vcard_purge, EVT_PURGEUSER);
-       create_room(ADDRESS_BOOK_ROOM, 3, "", 0);
+       create_room(ADDRESS_BOOK_ROOM, 3, "", 0, 1);
        return "$Id$";
 }