-/*
- * Header file for libcitadel
- *
- * Copyright (c) 1987-2021 by the citadel.org team
- *
- * 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.
- */
-
-/* protect against double includes */
+// Header file for libcitadel
+//
+// Copyright (c) 1987-2022 by the citadel.org team
+//
+// This program is open source software. Use, duplication, or disclosure
+// is subject to the terms of the GNU General Public License, version 3.
+
+// protect against double includes
#ifndef LIBCITADEL_H
#define LIBCITADEL_H
#include <sys/types.h>
#include <netinet/in.h>
-#define LIBCITADEL_VERSION_NUMBER 931
+#define LIBCITADEL_VERSION_NUMBER 1000
/*
* Here's a bunch of stupid magic to make the MIME parser portable.
VIEW_DRAFTS = 9, /* Drafts view */
VIEW_BLOG = 10, /* Blog view */
VIEW_QUEUE = 11, /* SMTP/... QUEUE rooms */
- VIEW_WIKIMD = 12, /* Markdown Wiki view */
VIEW_MAX,
VIEW_JSON_LIST,
} ROOM_VIEWS;
void StrBuf_RFC822_to_Utf8(StrBuf *Target, const StrBuf *DecodeMe, const StrBuf* DefaultCharset, StrBuf *FoundCharset);
typedef enum __eStreamType {
- eBase64Encode,
- eBase64Decode,
+ //eBase64Encode,
+ //eBase64Decode,
eZLibEncode,
eZLibDecode,
eEmtyCodec
void StrBufDecodeQP(StrBuf *Buf);
int StrBufDecodeBase64To(const StrBuf *BufIn, StrBuf *BufOut);
int StrBufDecodeHex(StrBuf *Buf);
-StrBuf *StrBufRFC2047encodeMessage(const StrBuf *EncodeMe);
+StrBuf *StrBufQuotedPrintableEncode(const StrBuf *EncodeMe);
int StrBufRFC2047encode(StrBuf **target, const StrBuf *source);
StrBuf *StrBufSanitizeEmailRecipientVector(const StrBuf *Recp,
StrBuf *UserName,
unsigned long extract_unsigned_long(const char *source, int parmnum);
void CtdlInitBase64Table(void);
size_t CtdlEncodeBase64(char *dest, const char *source, size_t sourcelen, int linebreaks);
-int CtdlDecodeBase64(char *dest, const char *source, size_t length);
+enum {
+ BASE64_NO_LINEBREAKS = 0,
+ BASE64_YES_LINEBREAKS = 1
+};
+size_t CtdlDecodeBase64(char *dest, const char *source, size_t source_len);
unsigned int decode_hex(char *Source);
int CtdlDecodeQuotedPrintable(char *decoded, char *encoded, int sourcelen);
void StripSlashes(char *Dir, int TrailingSlash);
-size_t striplt(char *);
+size_t string_trim(char *);
int haschar(const char *st, int ch);
void remove_token(char *source, int parmnum, char separator);
int is_msg_in_sequence_set(const char *mset, long msgnum);
char *rfc2047encode(const char *line, long length);
int is_msg_in_mset(const char *mset, long msgnum);
int pattern2(char *search, char *patn);
-void stripltlen(char *, int *);
-char *html_to_ascii(const char *inputmsg, int msglen, int screenwidth);
+char *html_to_ascii(const char *inputmsg, int msglen, int screenwidth, int ansi);
void LoadEntityList(char *FileName);
+void utf8ify_rfc822_string(char *buf);
typedef struct {
void *array_get_element_at(Array *arr, int index);
int array_len(Array *arr);
void array_sort(Array *arr, int (*compar)(const void *, const void *));
+void array_delete_element_at(Array *arr, int index);
/* vCard stuff */
void vnote_free(struct vnote *v);
char *vnote_serialize(struct vnote *v);
void vnote_serialize_output_field(char *append_to, char *field, char *label);
+char b64unalphabet(char ch);
#define CFG_SMTP_FROM_NOFILTER 1
#define CFG_SMTP_FROM_CORRECT 2
#define CFG_SMTP_FROM_REJECT 3
+
/*
- * MIME types used in Citadel for configuration stuff
+ * object types used in Citadel for configuration stuff (some of these are obsolete)
*/
#define SPOOLMIME "application/x-citadel-delivery-list"
#define INTERNETCFG "application/x-citadel-internet-config"
#define FILTERLIST "application/x-citadel-filter-list"
#define SIEVECONFIG "application/x-citadel-sieve-config"
#define XMPPMORTUARY "application/x-citadel-xmpp-mortuary"
+#define GLOBAL_ALIASES "global_alias_table"
#define FILE_MAILALIAS "__MAIL_ALIAS__"
#define ERROR 500
#define BINARY_FOLLOWS 600
#define SEND_BINARY 700
-#define START_CHAT_MODE 800
+#define SEND_THEN_RECV 800
#define INTERNAL_ERROR 10
#define TOO_BIG 11