From: Art Cancro Date: Sat, 24 Aug 2002 05:05:34 +0000 (+0000) Subject: * Bugfixes X-Git-Tag: v7.86~6280 X-Git-Url: https://code.citadel.org/?a=commitdiff_plain;h=007bbcbb07600e1d40cc90df3ddf788f8312b7d9;hp=179eb2be9a0322403c50f4a66ed73e5d317ca189;p=citadel.git * Bugfixes --- diff --git a/citadel/file_ops.c b/citadel/file_ops.c index 911138168..ca089bac1 100644 --- a/citadel/file_ops.c +++ b/citadel/file_ops.c @@ -665,7 +665,7 @@ void cmd_ucls(char *cmd) "NEW UPLOAD: '%s'\n %s\n", CC->upl_file, CC->upl_comment); quickie_message(CC->curr_user, NULL, CC->quickroom.QRname, - upload_notice, 0); + upload_notice, 0, NULL); } else { abort_upl(CC); cprintf("%d File '%s' aborted.\n", CIT_OK, CC->upl_path); diff --git a/citadel/msgbase.c b/citadel/msgbase.c index 0123fd39c..94405b53f 100644 --- a/citadel/msgbase.c +++ b/citadel/msgbase.c @@ -1066,7 +1066,7 @@ int CtdlOutputMsg(long msg_num, /* message number (local) to fetch */ else { TheMessage = CtdlFetchMessage(msg_num); if (CC->cached_msg != NULL) { - phree(CC->cached_msg); + phree(CC->cached_msg); /* FIXME efence? */ } CC->cached_msg = TheMessage; CC->cached_msgnum = msg_num; @@ -2142,7 +2142,7 @@ long CtdlSubmitMsg(struct CtdlMessage *msg, /* message to save */ * Convenience function for generating small administrative messages. */ void quickie_message(char *from, char *to, char *room, char *text, - int format_type) + int format_type, char *subject) { struct CtdlMessage *msg; struct recptypes *recp = NULL; @@ -2159,6 +2159,9 @@ void quickie_message(char *from, char *to, char *room, char *text, msg->cm_fields['R'] = strdoop(to); recp = validate_recipients(to); } + if (subject != NULL) { + msg->cm_fields['U'] = strdoop(subject); + } msg->cm_fields['M'] = strdoop(text); CtdlSubmitMsg(msg, recp, room); diff --git a/citadel/msgbase.h b/citadel/msgbase.h index 27860c322..cfa6aa7f5 100644 --- a/citadel/msgbase.h +++ b/citadel/msgbase.h @@ -1,6 +1,6 @@ /* $Id$ */ -#define aide_message(text) quickie_message("Citadel",NULL,AIDEROOM,text,0); +#define aide_message(text) quickie_message("Citadel",NULL,AIDEROOM,text,0,NULL) #define MSGS_ALL 0 #define MSGS_OLD 1 @@ -83,7 +83,7 @@ void cmd_opna (char *cmdbuf); long send_message (struct CtdlMessage *, FILE *); void loadtroom (void); long CtdlSubmitMsg(struct CtdlMessage *, struct recptypes *, char *); -void quickie_message (char *, char *, char *, char *, int); +void quickie_message (char *, char *, char *, char *, int, char *); void cmd_ent0 (char *entargs); void cmd_dele (char *delstr); void cmd_move (char *args); diff --git a/citadel/serv_listsub.c b/citadel/serv_listsub.c index 4ee52e886..179014548 100644 --- a/citadel/serv_listsub.c +++ b/citadel/serv_listsub.c @@ -162,14 +162,18 @@ void do_subscribe(char *room, char *email, char *subtype, char *webpage) { "" "Someone (probably you) has submitted a request to subscribe\n" "<%s> to the %s mailing list.

\n" + "Please click here to confirm this request:
\n" "" - "Please click here to confirm this request.

\n" + "http://%s?room=%s&token=%s&cmd=confirm

\n" "If this request has been submitted in error and you do not\n" "wish to receive the '%s' mailing list, simply do nothing,\n" "and you will not receive any further mailings.\n" "\n", - email, qrbuf.QRname, webpage, urlroom, token, qrbuf.QRname + email, qrbuf.QRname, + webpage, urlroom, token, + webpage, urlroom, token, + qrbuf.QRname ); quickie_message( /* This delivers the message */ @@ -177,7 +181,8 @@ void do_subscribe(char *room, char *email, char *subtype, char *webpage) { email, NULL, confirmation_request, - FMT_RFC822 + FMT_RFC822, + "Please confirm your list subscription" ); cprintf("%d Subscription entered; confirmation request sent\n", CIT_OK); @@ -270,15 +275,19 @@ void do_unsubscribe(char *room, char *email, char *webpage) { "Someone (probably you) has submitted a request " "to unsubscribe\n" "<%s> from the %s mailing list.

\n" + "Please click here to confirm this request:
\n" "" - "Please click here to confirm this request.

\n" + "http://%s?room=%s&token=%s&cmd=confirm

\n" "If this request has been submitted in error and you do\n" "not wish to unsubscribe from the " "'%s' mailing list, simply do nothing,\n" "and you will remain subscribed to the list.\n" "\n", - email, qrbuf.QRname, webpage, urlroom, token, qrbuf.QRname + email, qrbuf.QRname, + webpage, urlroom, token, + webpage, urlroom, token, + qrbuf.QRname ); quickie_message( /* This delivers the message */ @@ -286,7 +295,8 @@ void do_unsubscribe(char *room, char *email, char *webpage) { email, NULL, confirmation_request, - FMT_RFC822 + FMT_RFC822, + "Please confirm your unsubscribe request" ); cprintf("%d Unubscription noted; confirmation request sent\n", CIT_OK); @@ -314,8 +324,13 @@ void do_confirm(char *room, char *token) { char *holdbuf = NULL; int linelen = 0; int buflen = 0; + char success_message[SIZ]; + char success_message_to[SIZ]; + char address_of_list[SIZ]; + int i; strcpy(address_to_unsubscribe, ""); + strcpy(success_message_to, ""); if (getroom(&qrbuf, room) != 0) { cprintf("%d There is no list called '%s'\n", @@ -330,6 +345,30 @@ void do_confirm(char *room, char *token) { return; } + /* + * We'll just have this success message ready if we need it + */ + sprintf(address_of_list, "room_%s@%s", qrbuf.QRname, config.c_fqdn); + for (i=0; i" + "You have successfully subscribed to the %s\n" + "mailing list.

To post to the list, simply send " + "an e-mail to %s" + "\n", + qrbuf.QRname, + address_of_list + ); + + /* + * Now start scanning this room's netconfig file for the + * specified token. + */ assoc_file_name(filename, sizeof filename, &qrbuf, "netconfigs"); begin_critical_section(S_NETCONFIGS); ncfp = fopen(filename, "r+"); @@ -362,6 +401,7 @@ void do_confirm(char *room, char *token) { fseek(ncfp, line_offset, SEEK_SET); fprintf(ncfp, "%s\n", buf); ++success; + strcpy(success_message_to, email); } } if (!strcasecmp(cmd, "unsubpending")) { @@ -431,6 +471,18 @@ void do_confirm(char *room, char *token) { phree(holdbuf); } + /* Let 'em know it succeeded, and how to post to the list. */ + if (strlen(success_message_to) > 0) { + quickie_message( + "Citadel", + success_message_to, + NULL, + success_message, + FMT_RFC822, + "Your subscription is complete" + ); + } + /* * Did we do anything useful today? */ diff --git a/citadel/sysdep.c b/citadel/sysdep.c index fc545a155..dcf4cd7ab 100644 --- a/citadel/sysdep.c +++ b/citadel/sysdep.c @@ -726,9 +726,10 @@ struct worker_node *worker_list = NULL; */ void create_worker(void) { int ret; - struct worker_node *n = mallok(sizeof *n); + struct worker_node *n; pthread_attr_t attr; + n = mallok(sizeof(struct worker_node)); if (n == NULL) { lprintf(1, "can't allocate worker_node, exiting\n"); time_to_die = -1; @@ -741,8 +742,7 @@ void create_worker(void) { return; } - /* we seem to need something bigger than - FreeBSD's default of 64K of stack. */ + /* we seem to need something bigger than FreeBSD's default 64k stack */ if ((ret = pthread_attr_setstacksize(&attr, 128 * 1024))) { lprintf(1, "pthread_attr_setstacksize: %s\n", strerror(ret)); diff --git a/citadel/tools.c b/citadel/tools.c index 3a457ae6e..21c1ce91e 100644 --- a/citadel/tools.c +++ b/citadel/tools.c @@ -388,7 +388,7 @@ void striplt(char *buf) { while ((strlen(buf) > 0) && (isspace(buf[0]))) strcpy(buf, &buf[1]); - while (isspace(buf[strlen(buf) - 1])) + while ((strlen(buf) > 0) && (isspace(buf[strlen(buf) - 1]))) buf[strlen(buf) - 1] = 0; }