X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fmodules%2Fnotes%2Fserv_notes.c;h=a250c8ccd63a652d7a317d1f33ad99ee7256a1c5;hb=55013f95f08eafe1b375df4241e8defe387c6cdc;hp=e1e6b81cc39e60e764fe45f0f693587b1c32d478;hpb=6106c1da54f0923550c7bdceb45246fb88e9ea19;p=citadel.git diff --git a/citadel/modules/notes/serv_notes.c b/citadel/modules/notes/serv_notes.c index e1e6b81cc..a250c8ccd 100644 --- a/citadel/modules/notes/serv_notes.c +++ b/citadel/modules/notes/serv_notes.c @@ -1,21 +1,21 @@ /* * Handles functions related to yellow sticky notes. * - * Copyright (c) 2007-2009 by the citadel.org team + * Copyright (c) 2007-2012 by the citadel.org team * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. + * This program is open source software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 3. + * + * * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * + * */ #include "sysdep.h" @@ -66,7 +66,7 @@ void notes_extract_vnote(char *name, char *filename, char *partnum, char *disp, if (!strcasecmp(cbtype, "text/vnote")) { - CtdlLogPrintf(CTDL_DEBUG, "Part %s contains a vNote! Loading...\n", partnum); + syslog(LOG_DEBUG, "Part %s contains a vNote! Loading...\n", partnum); if (*v != NULL) { vnote_free(*v); } @@ -80,7 +80,7 @@ void notes_extract_vnote(char *name, char *filename, char *partnum, char *disp, * and modern vNote format notes) and does its best to learn the subject (summary) * and EUID (uid) of the note for Citadel's own nefarious purposes. */ -int serv_notes_beforesave(struct CtdlMessage *msg) +int serv_notes_beforesave(struct CtdlMessage *msg, recptypes *recp) { char *p; int a, i; @@ -106,8 +106,8 @@ int serv_notes_beforesave(struct CtdlMessage *msg) * any existing message containing that UUID. */ strcpy(uuid, ""); - p = msg->cm_fields['M']; - a = strlen(p); + p = msg->cm_fields[eMesageText]; + a = msg->cm_lengths[eMesageText]; while (--a > 0) { if (!strncasecmp(p, "X-KOrg-Note-Id: ", 16)) { /* Found it */ safestrncpy(uuid, p + 16, sizeof(uuid)); @@ -118,18 +118,11 @@ int serv_notes_beforesave(struct CtdlMessage *msg) } } - CtdlLogPrintf(9, "UUID of note is: %s\n", uuid); + syslog(LOG_DEBUG, "UUID of note is: %s\n", uuid); if (!IsEmptyStr(uuid)) { + CM_SetField(msg, eExclusiveID, uuid, strlen(uuid)); - if (msg->cm_fields['E'] != NULL) { - free(msg->cm_fields['E']); - } - msg->cm_fields['E'] = strdup(uuid); - - if (msg->cm_fields['U'] != NULL) { - free(msg->cm_fields['U']); - } - msg->cm_fields['U'] = strdup(uuid); + CM_CopyField(msg, eMsgSubject, eExclusiveID); } } p++; @@ -137,7 +130,7 @@ int serv_notes_beforesave(struct CtdlMessage *msg) /* Modern clients are using vNote format. Check for one... */ - mime_parser(msg->cm_fields['M'], + mime_parser(msg->cm_fields[eMesageText], NULL, *notes_extract_vnote, NULL, NULL, @@ -149,23 +142,19 @@ int serv_notes_beforesave(struct CtdlMessage *msg) /* Set the message EUID to the vNote UID */ - if (v->uid) if (!IsEmptyStr(v->uid)) { - CtdlLogPrintf(9, "UID of vNote is: %s\n", v->uid); - if (msg->cm_fields['E'] != NULL) { - free(msg->cm_fields['E']); - } - msg->cm_fields['E'] = strdup(v->uid); + if ((v->uid) && (!IsEmptyStr(v->uid))) { + syslog(LOG_DEBUG, "UID of vNote is: %s\n", v->uid); + CM_SetField(msg, eExclusiveID, v->uid, strlen(v->uid)); } /* Set the message Subject to the vNote Summary */ - if (v->summary) if (!IsEmptyStr(v->summary)) { - if (msg->cm_fields['U'] != NULL) { - free(msg->cm_fields['U']); - } - msg->cm_fields['U'] = strdup(v->summary); - if (strlen(msg->cm_fields['U']) > 72) { - strcpy(&msg->cm_fields['U'][68], "..."); + if ((v->summary) && (!IsEmptyStr(v->summary))) { + CM_SetField(msg, eMsgSubject, v->summary, strlen(v->summary)); + + if (msg->cm_lengths[eMsgSubject] > 72) { + strcpy(&msg->cm_fields[eMsgSubject][68], "..."); + CM_CutFieldAt(msg, eMsgSubject, 72); } } @@ -182,6 +171,6 @@ CTDL_MODULE_INIT(notes) CtdlRegisterMessageHook(serv_notes_beforesave, EVT_BEFORESAVE); } - /* return our Subversion id for the Log */ + /* return our module name for the log */ return "notes"; }