Handle situation in where we have multiple buffers to send at the end.
[citadel.git] / libcitadel / lib / libcitadel.h
index 062ac35206f605db499d27b1d6efbed4e4e21286..cba677a5d0f9763fbe4b4d06d3dca455468da3a9 100644 (file)
@@ -28,7 +28,7 @@
 #include <sys/types.h>
 #include <netinet/in.h>
 
-#define LIBCITADEL_VERSION_NUMBER      820
+#define LIBCITADEL_VERSION_NUMBER      829
 
 /*
  * Here's a bunch of stupid magic to make the MIME parser portable.
@@ -49,16 +49,16 @@ typedef enum AXLevel {
 }eUsrAxlvl;
 
 typedef enum __RoomNetCfg {
-       subpending,
-       unsubpending,
-       lastsent, /* Server internal use only */
-       ignet_push_share,
-       listrecp,
-       digestrecp,
-       pop3client,
-       rssclient,
-       participate,
-       roommailalias,
+       subpending        = 0,
+       unsubpending      = 1,
+       lastsent          = 2, /* Server internal use only */
+       ignet_push_share  = 3,
+       listrecp          = 4,
+       digestrecp        = 5,
+       pop3client        = 6,
+       rssclient         = 7,
+       participate       = 8,
+       roommailalias     = 9,
        maxRoomNetCfg
 } RoomNetCfg;
 
@@ -100,6 +100,7 @@ typedef enum _room_views {
        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;
@@ -337,8 +338,22 @@ void StrBuf_RFC822_2_Utf8(StrBuf *Target,
 /* deprecated old version: */
 void StrBuf_RFC822_to_Utf8(StrBuf *Target, const StrBuf *DecodeMe, const StrBuf* DefaultCharset, StrBuf *FoundCharset);
 
+typedef enum __eStreamType {
+       eBase64Encode,
+       eBase64Decode,
+       eZLibEncode,
+       eZLibDecode,
+       eEmtyCodec
+} eStreamType;
+
+void *StrBufNewStreamContext(eStreamType type);
+void StrBufDestroyStreamContext(eStreamType type, void **Stream);
+int StrBufStreamTranscode(eStreamType type, IOBuffer *Target, IOBuffer *In, const char* pIn, long pInLen, void *Stream, int LastChunk);
+
 int StrBufDecodeBase64(StrBuf *Buf);
+int StrBufDecodeBase64To(const StrBuf *BufIn, StrBuf *BufOut);
 int StrBufDecodeHex(StrBuf *Buf);
+StrBuf *StrBufRFC2047encodeMessage(const StrBuf *EncodeMe);
 int StrBufRFC2047encode(StrBuf **target, const StrBuf *source);
 StrBuf *StrBufSanitizeEmailRecipientVector(const StrBuf *Recp, 
                                           StrBuf *UserName, 
@@ -350,6 +365,7 @@ int StrBufSanitizeAscii(StrBuf *Buf, const char Mute);
 #define QU                     (3)
 void StrBufUrlescAppend(StrBuf *OutBuf, const StrBuf *In, const char *PlainIn);
 void StrBufUrlescUPAppend(StrBuf *OutBuf, const StrBuf *In, const char *PlainIn);
+void StrBufXMLEscAppend(StrBuf *OutBuf, const StrBuf *In, const char *PlainIn, long PlainInLen, int OverrideLowChars);
 void StrBufHexescAppend(StrBuf *OutBuf, const StrBuf *In, const char *PlainIn);
 void StrBufHexEscAppend(StrBuf *OutBuf, const StrBuf *In, const unsigned char *PlainIn, long PlainInLen);
 void StrBufBase64Append(StrBuf *OutBuf, const StrBuf *In, const char *PlainIn, long PlainInLen, int linebreaks);