From 4ece18dbfa7b31a9dc319ec0480ed651a30b3213 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Mon, 28 Jan 2008 16:25:50 +0000 Subject: [PATCH] * Unfinished code is now disabled. To enable it, do 'CFLAGS=-DTECH_PREVIEW' prior to configure. This will activate the Jabber and Wiki modules. * Citadel and WebCit configure scripts now check to make sure that libcitadel is current enough. * Cleaned up some compiler warnings. --- citadel/citadel.h | 1 + citadel/configure.ac | 23 +++++- citadel/modules/jabber/serv_xmpp.c | 2 + citadel/msgbase.c | 2 +- citadel/tuiconfig.c | 4 +- citadel/user_ops.c | 3 +- libcitadel/lib/libcitadel.h | 7 +- webcit/configure.ac | 19 ++++- webcit/preferences.c | 19 ++--- webcit/roomops.c | 127 +++++++++++++++-------------- webcit/siteconfig.c | 18 +++- webcit/webcit.h | 3 +- 12 files changed, 143 insertions(+), 85 deletions(-) diff --git a/citadel/citadel.h b/citadel/citadel.h index 9e9b92341..f646fae3c 100644 --- a/citadel/citadel.h +++ b/citadel/citadel.h @@ -50,6 +50,7 @@ extern "C" { #define REV_LEVEL 725 /* This version */ #define REV_MIN 591 /* Oldest compatible database */ #define EXPORT_REV_MIN 725 /* Oldest compatible export files */ +#define LIBCITADEL_MIN 103 /* Minimum required version of libcitadel */ #define SERVER_TYPE 0 /* zero for stock Citadel; other developers please obtain SERVER_TYPE codes for your implementations */ diff --git a/citadel/configure.ac b/citadel/configure.ac index 8a3d904f7..e3d51730c 100644 --- a/citadel/configure.ac +++ b/citadel/configure.ac @@ -405,7 +405,6 @@ dnl Check for libcitadel AC_CHECK_HEADER(libcitadel.h, [AC_CHECK_LIB(citadel, libcitadel_version_string, [ - AC_MSG_RESULT(OK) LIBS="-lcitadel $LIBS" ], [ @@ -420,6 +419,28 @@ AC_CHECK_HEADER(libcitadel.h, +dnl Check to see if libcitadel is new enough +AC_MSG_CHECKING(checking libcitadel version) +AC_TRY_RUN( + [ +#include +#include +#include +#include +#include "citadel.h" +main() { + if (LIBCITADEL_VERSION_NUMBER >= LIBCITADEL_MIN) { + return(0); + } + return(1); +} + ], + AC_MSG_RESULT(ok), + AC_MSG_ERROR(libcitadel is too old. Please upgrade it first.) +) + + + # The big search for OpenSSL if test "$with_ssl" != "no"; then saved_LIBS="$LIBS" diff --git a/citadel/modules/jabber/serv_xmpp.c b/citadel/modules/jabber/serv_xmpp.c index 6fa8a66b9..f131c988a 100644 --- a/citadel/modules/jabber/serv_xmpp.c +++ b/citadel/modules/jabber/serv_xmpp.c @@ -480,6 +480,7 @@ const char *CitadelServiceXMPP="XMPP"; CTDL_MODULE_INIT(jabber) { if (!threading) { +#ifdef TECH_PREVIEW #ifdef HAVE_EXPAT CtdlRegisterServiceHook(config.c_xmpp_c2s_port, NULL, @@ -495,6 +496,7 @@ CTDL_MODULE_INIT(jabber) #else lprintf(CTDL_INFO, "This server is missing the Expat XML parser. Jabber service will be disabled.\n"); #endif +#endif /* TECH_PREVIEW */ } /* return our Subversion id for the Log */ diff --git a/citadel/msgbase.c b/citadel/msgbase.c index 15fbd3993..6489e6528 100644 --- a/citadel/msgbase.c +++ b/citadel/msgbase.c @@ -3114,7 +3114,7 @@ int CtdlDoIHavePermissionToPostInThisRoom(char *errmsgbuf, snprintf(errmsgbuf, n, "Not logged in Moderation feature not yet implemented!"); return (ERROR + NOT_LOGGED_IN); } - if (CC->room.QRflags2 & QR2_SMTP_PUBLIC == 0){ + if ((CC->room.QRflags2 & QR2_SMTP_PUBLIC) == 0) { SpoolControl *sc; char filename[SIZ]; int found; diff --git a/citadel/tuiconfig.c b/citadel/tuiconfig.c index 314704894..c1104df8d 100644 --- a/citadel/tuiconfig.c +++ b/citadel/tuiconfig.c @@ -171,10 +171,12 @@ void do_system_configuration(CtdlIPC *ipc) strprompt("SMTPS server port (-1 to disable)", &sc[41][0], 5); strprompt("Postfix TCP Dictionary Port server port (-1 to disable)", &sc[50][0], 5); strprompt("ManageSieve server port (-1 to disable)", &sc[51][0], 5); - strprompt("XMPP (Jabber) client to server port (-1 to disable)", &sc[62][0], 5); +#ifdef TECH_PREVIEW + strprompt("XMPP (Jabber) client to server port (-1 to disable)", &sc[62][0], 5); /* No prompt because we don't implement this service yet, it's just a placeholder */ /* strprompt("XMPP (Jabber) server to server port (-1 to disable)", &sc[63][0], 5); */ +#endif /* This logic flips the question around, because it's one of those * situations where 0=yes and 1=no diff --git a/citadel/user_ops.c b/citadel/user_ops.c index 974e1da8b..10fcb3f47 100644 --- a/citadel/user_ops.c +++ b/citadel/user_ops.c @@ -413,7 +413,8 @@ int CtdlLoginExistingUser(char *authname, char *trythisname) * If not found, make one attempt to create it. */ found_user = getuserbyuid(&CC->user, pd.pw_uid); - lprintf(CTDL_DEBUG, "found it: uid=%ld, gecos=%s here: %ld\n", (long)pd.pw_uid, pd.pw_gecos, found_user); + lprintf(CTDL_DEBUG, "found it: uid=%ld, gecos=%s here: %d\n", + (long)pd.pw_uid, pd.pw_gecos, found_user); if (found_user != 0) { create_user(username, 0); found_user = getuserbyuid(&CC->user, pd.pw_uid); diff --git a/libcitadel/lib/libcitadel.h b/libcitadel/lib/libcitadel.h index 9b8462be6..73813738d 100644 --- a/libcitadel/lib/libcitadel.h +++ b/libcitadel/lib/libcitadel.h @@ -4,7 +4,7 @@ */ -#define LIBCITADEL_VERSION_NUMBER 102 +#define LIBCITADEL_VERSION_NUMBER 103 /* * Here's a bunch of stupid magic to make the MIME parser portable. @@ -15,7 +15,8 @@ /* - * Views + * View definitions. + * Note that not all views are implemented in all clients. */ #define VIEW_BBS 0 /* Bulletin board view */ #define VIEW_MAILBOX 1 /* Mailbox summary */ @@ -25,7 +26,7 @@ #define VIEW_NOTES 5 /* Notes view */ #define VIEW_WIKI 6 /* Wiki view */ #define VIEW_CALBRIEF 7 /* Brief Calendar view */ -#define VIEW_JOURNAL 8 /* Journal view (not yet implemented in native clients) */ +#define VIEW_JOURNAL 8 /* Journal view */ #ifndef IsEmptyStr diff --git a/webcit/configure.ac b/webcit/configure.ac index 80ff049fe..39626b38b 100644 --- a/webcit/configure.ac +++ b/webcit/configure.ac @@ -105,7 +105,6 @@ dnl Check for libcitadel AC_CHECK_HEADER(libcitadel.h, [AC_CHECK_LIB(citadel, libcitadel_version_string, [ - AC_MSG_RESULT(OK) LIBS="-lcitadel $LIBS" ], [ @@ -119,6 +118,24 @@ AC_CHECK_HEADER(libcitadel.h, ) +dnl Check to see if libcitadel is new enough +AC_MSG_CHECKING(checking libcitadel version) +AC_TRY_RUN( + [ +#include "webcit.h" +main() { + if (LIBCITADEL_VERSION_NUMBER >= LIBCITADEL_MIN) { + return(0); + } + return(1); +} + ], + AC_MSG_RESULT(ok), + AC_MSG_ERROR(libcitadel is too old. Please upgrade it first.) +) + + + webcit_with_calendar_service=no dnl Checks for the libical calendaring library. if test "x$with_libical" != xno ; then diff --git a/webcit/preferences.c b/webcit/preferences.c index 87026fe8b..d39829931 100644 --- a/webcit/preferences.c +++ b/webcit/preferences.c @@ -1,28 +1,21 @@ /* * $Id$ - */ -/** - * \defgroup ManagePrefs Manage user preferences with a little help from the Citadel server. - * \ingroup CitadelConfig + * + * Manage user preferences with a little help from the Citadel server. * */ -/*@{*/ + #include "webcit.h" #include "webserver.h" #include "groupdav.h" - -//// tmp -#include - -/** - * \brief display preferences dialog +/* + * display preferences dialog */ void load_preferences(void) { char buf[SIZ]; long msgnum = 0L; char key[SIZ], value[SIZ]; - char *pBuf; serv_printf("GOTO %s", USERCONFIGROOM); serv_getln(buf, sizeof buf); @@ -56,7 +49,7 @@ void load_preferences(void) { } } - /** Go back to the room we're supposed to be in */ + /* Go back to the room we're supposed to be in */ serv_printf("GOTO %s", WC->wc_roomname); serv_getln(buf, sizeof buf); } diff --git a/webcit/roomops.c b/webcit/roomops.c index fcbbf368a..a128ba8bf 100644 --- a/webcit/roomops.c +++ b/webcit/roomops.c @@ -37,10 +37,16 @@ int is_view_allowed_as_default(int which_view) case VIEW_CALENDAR: return(1); case VIEW_TASKS: return(1); case VIEW_NOTES: return(1); - case VIEW_WIKI: return(0); /**< because it isn't finished yet */ + +#ifdef TECH_PREVIEW + case VIEW_WIKI: return(1); +#else /* TECH_PREVIEW */ + case VIEW_WIKI: return(0); /* because it isn't finished yet */ +#endif /* TECH_PREVIEW */ + case VIEW_CALBRIEF: return(0); case VIEW_JOURNAL: return(0); - default: return(0); /**< should never get here */ + default: return(0); /* should never get here */ } } @@ -827,8 +833,9 @@ char *pop_march(int desired_floor) -/** - *\brief Goto next room having unread messages. +/* + * Goto next room having unread messages. + * * We want to skip over rooms that the user has already been to, and take the * user back to the lobby when done. The room we end up in is placed in * newroom - which is set to 0 (the lobby) initially. @@ -838,12 +845,13 @@ char *pop_march(int desired_floor) void gotonext(void) { char buf[256]; - struct march *mptr, *mptr2; + struct march *mptr = NULL; + struct march *mptr2 = NULL; char room_name[128]; char next_room[128]; int ELoop = 0; - /** + /* * First check to see if the march-mode list is already allocated. * If it is, pop the first room off the list and go there. */ @@ -876,7 +884,7 @@ void gotonext(void) } buf[0] = '\0'; } - /** + /* * add _BASEROOM_ to the end of the march list, so the user will end up * in the system base room (usually the Lobby>) at the end of the loop */ @@ -893,7 +901,7 @@ void gotonext(void) mptr2 = mptr2->next; mptr2->next = mptr; } - /** + /* * ...and remove the room we're currently in, so a oto doesn't make us * walk around in circles */ @@ -910,9 +918,8 @@ void gotonext(void) } -/** - * \brief goto next room - * \param next_room next room to go to +/* + * goto next room */ void smart_goto(char *next_room) { gotoroom(next_room); @@ -921,8 +928,8 @@ void smart_goto(char *next_room) { -/** - * \brief mark all messages in current room as having been read +/* + * mark all messages in current room as having been read */ void slrp_highest(void) { @@ -933,8 +940,8 @@ void slrp_highest(void) } -/** - * \brief un-goto the previous room +/* + * un-goto the previous room */ void ungoto(void) { @@ -968,16 +975,16 @@ typedef struct __room_states { int order; int view; int flags2; -}room_states; +} room_states; -/** - * \brief Set/clear/read the "self-service list subscribe" flag for a room +/* + * Set/clear/read the "self-service list subscribe" flag for a room * - * \param newval set to 0 to clear, 1 to set, any other value to leave unchanged. - * \return return the new value. + * set newval to 0 to clear, 1 to set, any other value to leave unchanged. + * returns the new value. */ int self_service(int newval) { @@ -1030,29 +1037,26 @@ int self_service(int newval) { } -int -is_selflist(room_states *RoomFlags) +int is_selflist(room_states *RoomFlags) { return ((RoomFlags->flags2 & QR2_SELFLIST) != 0); } -int -is_publiclist(room_states *RoomFlags) +int is_publiclist(room_states *RoomFlags) { return ((RoomFlags->flags2 & QR2_SMTP_PUBLIC) != 0); } -int -is_moderatedlist(room_states *RoomFlags) +int is_moderatedlist(room_states *RoomFlags) { return ((RoomFlags->flags2 & QR2_MODERATED) != 0); } -/** - * \brief Set/clear/read the "self-service list subscribe" flag for a room +/* + * Set/clear/read the "self-service list subscribe" flag for a room * - * \param newval set to 0 to clear, 1 to set, any other value to leave unchanged. - * \return return the new value. + * set newval to 0 to clear, 1 to set, any other value to leave unchanged. + * returns the new value. */ int get_roomflags(room_states *RoomOps) @@ -1096,8 +1100,8 @@ int set_roomflags(room_states *RoomOps) -/** - * \brief display the form for editing a room +/* + * display the form for editing a room */ void display_editroom(void) { @@ -1225,9 +1229,9 @@ void display_editroom(void) wprintf("\n"); wprintf("\n"); - /** end tabbed dialog */ + /* end tabbed dialog */ - /** begin content of whatever tab is open now */ + /* begin content of whatever tab is open now */ if (!strcmp(tab, "admin")) { wprintf("
"); @@ -1484,7 +1488,7 @@ void display_editroom(void) } - /** Sharing the room with other Citadel nodes... */ + /* Sharing the room with other Citadel nodes... */ if (!strcmp(tab, "sharing")) { wprintf("
"); @@ -1531,7 +1535,7 @@ void display_editroom(void) } } - /** Display the stuff */ + /* Display the stuff */ wprintf("

" "" "
"); @@ -1639,7 +1643,7 @@ void display_editroom(void) wprintf(""); } - /** Mailing list management */ + /* Mailing list management */ if (!strcmp(tab, "listserv")) { room_states RoomFlags; wprintf("
"); @@ -1721,7 +1725,7 @@ void display_editroom(void) _("Add recipients from Contacts or other address books"), _("Add recipients from Contacts or other address books") ); - /** Pop open an address book -- end **/ + /* Pop open an address book -- end **/ wprintf("
\n
\n"); @@ -1760,7 +1764,7 @@ void display_editroom(void) } - /** Configuration of The Dreaded Auto-Purger */ + /* Configuration of The Dreaded Auto-Purger */ if (!strcmp(tab, "expire")) { wprintf("
"); @@ -1857,14 +1861,14 @@ void display_editroom(void) wprintf("
"); } - /** Access controls */ + /* Access controls */ if (!strcmp(tab, "access")) { wprintf("
"); display_whok(); wprintf("
"); } - /** Fetch messages from remote locations */ + /* Fetch messages from remote locations */ if (!strcmp(tab, "feeds")) { wprintf("
"); @@ -2003,7 +2007,7 @@ void display_editroom(void) } - /** end content of whatever tab is open now */ + /* end content of whatever tab is open now */ wprintf("
\n"); address_book_popup(); @@ -2011,17 +2015,16 @@ void display_editroom(void) } -/** - * \brief Toggle self-service list subscription +/* + * Toggle self-service list subscription */ void toggle_self_service(void) { -// int newval = 0; room_states RoomFlags; get_roomflags (&RoomFlags); - // Yank out the bits we want to change - RoomFlags.flags2 = RoomFlags.flags2 & + /* Yank out the bits we want to change */ + RoomFlags.flags2 = RoomFlags.flags2 & !(QR2_SELFLIST|QR2_SMTP_PUBLIC|QR2_MODERATED); if (!strcasecmp(bstr("QR2_SelfList"), "yes")) @@ -2038,8 +2041,8 @@ void toggle_self_service(void) { -/** - * \brief save new parameters for a room +/* + * save new parameters for a room */ void editroom(void) { @@ -2226,8 +2229,8 @@ void editroom(void) } -/** - * \brief Display form for Invite, Kick, and show Who Knows a room +/* + * Display form for Invite, Kick, and show Who Knows a room */ void do_invt_kick(void) { char buf[SIZ], room[SIZ], username[SIZ]; @@ -2276,8 +2279,8 @@ void do_invt_kick(void) { -/** - * \brief Display form for Invite, Kick, and show Who Knows a room +/* + * Display form for Invite, Kick, and show Who Knows a room */ void display_whok(void) { @@ -2332,7 +2335,7 @@ void display_whok(void) "" "" "
\n", _("Invite")); - /** Pop open an address book -- begin **/ + /* Pop open an address book -- begin **/ wprintf( "" @@ -2341,7 +2344,7 @@ void display_whok(void) _("User"), _("Users"), _("Users") ); - /** Pop open an address book -- end **/ + /* Pop open an address book -- end **/ wprintf("
\n"); address_book_popup(); @@ -2350,8 +2353,8 @@ void display_whok(void) -/** - * \brief display the form for entering a new room +/* + * display the form for entering a new room */ void display_entroom(void) { @@ -2398,7 +2401,7 @@ void display_entroom(void) wprintf("\n"); wprintf(""); - /** + /* * Our clever little snippet of JavaScript automatically selects * a public room if the view is set to Bulletin Board or wiki, and * it selects a mailbox room otherwise. The user can override this, @@ -2500,8 +2503,8 @@ void display_entroom(void) -/** - * \brief support function for entroom() -- sets the default view +/* + * support function for entroom() -- sets the default view */ void er_set_default_view(int newview) { @@ -2536,8 +2539,8 @@ void er_set_default_view(int newview) { -/** - * \brief enter a new room +/* + * Create a new room */ void entroom(void) { diff --git a/webcit/siteconfig.c b/webcit/siteconfig.c index ecc63972a..96e481c9b 100644 --- a/webcit/siteconfig.c +++ b/webcit/siteconfig.c @@ -599,6 +599,8 @@ void display_siteconfig(void) ((atoi(buf) != 0) ? "CHECKED" : "")); sprintf(&network[strlen(network)], "\n"); break; + +#ifdef TECH_PREVIEW case 62: sprintf(&network[strlen(network)], ""); sprintf(&network[strlen(network)], _("XMPP (Jabber) client to server port (-1 to disable)")); @@ -609,10 +611,24 @@ void display_siteconfig(void) case 63: sprintf(&network[strlen(network)], ""); sprintf(&network[strlen(network)], _("XMPP (Jabber) server to server port (-1 to disable)")); - sprintf(&network[strlen(network)], "-1"); + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], "\n", buf); + sprintf(&network[strlen(network)], "\n"); + break; +#else /* TECH_PREVIEW */ + case 62: + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], "", buf); + sprintf(&network[strlen(network)], "\n"); + break; + case 63: + sprintf(&network[strlen(network)], ""); + sprintf(&network[strlen(network)], ""); sprintf(&network[strlen(network)], "\n", buf); sprintf(&network[strlen(network)], "\n"); break; +#endif /* TECH_PREVIEW */ } } diff --git a/webcit/webcit.h b/webcit/webcit.h index 6b865e4f9..a324f6c98 100644 --- a/webcit/webcit.h +++ b/webcit/webcit.h @@ -123,7 +123,8 @@ extern locale_t wc_locales[]; #define DEVELOPER_ID 0 #define CLIENT_ID 4 #define CLIENT_VERSION 723 /* This version of WebCit */ -#define MINIMUM_CIT_VERSION 723 /* min required Citadel ver. */ +#define MINIMUM_CIT_VERSION 723 /* min required Citadel ver */ +#define LIBCITADEL_MIN 103 /* min required libcitadel ver */ #define DEFAULT_HOST "localhost" /* Default Citadel server */ #define DEFAULT_PORT "504" #define LB (1) /* Internal escape chars */ -- 2.30.2