#include "room_ops.h"
#include "parsedate.h"
#include "database.h"
-
#include "ctdl_module.h"
-
-#ifndef HAVE_SNPRINTF
-#include "snprintf.h"
-#endif
-
-
#ifdef HAVE_ICONV
#include <iconv.h>
pField++, sField++)
{
if ((*sField=='\r') || (*sField=='\n')) {
- while (isspace(*sField))
- sField++;
- *pField = *sField;
+ sField++;
+ if (*sField == '\n')
+ sField++;
+ *pField = *sField;
}
else {
if (*sField=='\"') quote = 1 - quote;
else if (!strcasecmp(key, "From")) {
process_rfc822_addr(value, user, node, name);
- CtdlLogPrintf(CTDL_DEBUG, "Converted to <%s@%s> (%s)\n", user, node, name);
+ syslog(LOG_DEBUG, "Converted to <%s@%s> (%s)\n", user, node, name);
snprintf(addr, sizeof addr, "%s@%s", user, node);
if (msg->cm_fields['A'] == NULL)
msg->cm_fields['A'] = strdup(name);
- processed = 1;
if (msg->cm_fields['F'] == NULL)
msg->cm_fields['F'] = strdup(addr);
processed = 1;
else if (!strcasecmp(key, "Message-ID")) {
if (msg->cm_fields['I'] != NULL) {
- CtdlLogPrintf(CTDL_WARNING, "duplicate message id\n");
+ syslog(LOG_WARNING, "duplicate message id\n");
}
if (msg->cm_fields['I'] == NULL) {
processed = 1;
}
+ else if (!strcasecmp(key, "Reply-To")) {
+ if (msg->cm_fields['K'] != NULL) {
+ free(msg->cm_fields['K']);
+ }
+ msg->cm_fields['K'] = strndup(value, valuelen);
+ processed = 1;
+ }
+
else if (!strcasecmp(key, "In-reply-to")) {
if (msg->cm_fields['W'] == NULL) { /* References: supersedes In-reply-to: */
msg->cm_fields['W'] = strndup(value, valuelen);
}
key[keylen++] = 0;
- CtdlLogPrintf(CTDL_DEBUG, "Directory key is <%s>\n", key);
+ syslog(LOG_DEBUG, "Directory key is <%s>\n", key);
}
/*
* Add an Internet e-mail address to the directory for a user
*/
-void CtdlDirectoryAddUser(char *internet_addr, char *citadel_addr) {
+int CtdlDirectoryAddUser(char *internet_addr, char *citadel_addr) {
char key[SIZ];
- if (IsDirectory(internet_addr, 0) == 0) return;
- CtdlLogPrintf(CTDL_DEBUG, "Create directory entry: %s --> %s\n", internet_addr, citadel_addr);
+ if (IsDirectory(internet_addr, 0) == 0)
+ return 0;
+ syslog(LOG_DEBUG, "Create directory entry: %s --> %s\n", internet_addr, citadel_addr);
directory_key(key, internet_addr);
cdb_store(CDB_DIRECTORY, key, strlen(key), citadel_addr, strlen(citadel_addr)+1 );
+ return 1;
}
* (NOTE: we don't actually use or need the citadel_addr variable; it's merely
* here because the callback API expects to be able to send it.)
*/
-void CtdlDirectoryDelUser(char *internet_addr, char *citadel_addr) {
+int CtdlDirectoryDelUser(char *internet_addr, char *citadel_addr) {
char key[SIZ];
- CtdlLogPrintf(CTDL_DEBUG, "Delete directory entry: %s --> %s\n", internet_addr, citadel_addr);
+ syslog(LOG_DEBUG, "Delete directory entry: %s --> %s\n", internet_addr, citadel_addr);
directory_key(key, internet_addr);
- cdb_delete(CDB_DIRECTORY, key, strlen(key) );
+ return cdb_delete(CDB_DIRECTORY, key, strlen(key) ) == 0;
}