/*
* Header file for libcitadel
*
- * Copyright (c) 1987-2012 by the citadel.org team
+ * Copyright (c) 1987-2013 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.
#include <sys/types.h>
#include <netinet/in.h>
-#define LIBCITADEL_VERSION_NUMBER 813
+#define LIBCITADEL_VERSION_NUMBER 829
/*
* Here's a bunch of stupid magic to make the MIME parser portable.
AxAideU = 6
}eUsrAxlvl;
-enum RoomNetCfg {
- subpending,
- unsubpending,
- lastsent, /* Server internal use only */
- ignet_push_share,
- listrecp,
- digestrecp,
- pop3client,
- rssclient,
- participate,
+typedef enum __RoomNetCfg {
+ 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;
enum GNET_POP3_PARTS { /* pop3client splits into these columns: */
GNET_POP3_HOST = 1,
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;
const char *ChrPtr(const StrBuf *Str);
int StrLength(const StrBuf *Str);
#define SKEY(a) ChrPtr(a), StrLength(a)
+void StrBufAsciify(StrBuf *Buf, const char repl);
long StrBufPeek(StrBuf *Buf, const char* ptr, long nThChar, char PeekValue);
long StrBufPook(StrBuf *Buf, const char* ptr, long nThChar, long nChars, char PookValue);
int SplicePipe[2];
int PipeSize;
long TotalSendSize;
- long TotalSentAlready;
- long TotalReadAlready;
+ loff_t TotalSentAlready;
+ loff_t TotalReadAlready;
long ChunkSize;
long ChunkSendRemain;
StrBuf *ChunkBuffer; /* just used if we don't have sendfile */
/* 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);
+void 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,
#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);
long StrEscAppend(StrBuf *Target, const StrBuf *Source, const char *PlainIn, int nbsp, int nolinebreaks);
long StrECMAEscAppend(StrBuf *Target, const StrBuf *Source, const char *PlainIn);
long StrHtmlEcmaEscAppend(StrBuf *Target, const StrBuf *Source, const char *PlainIn, int nbsp, int nolinebreaks);
const char *cbmstrcasestr(const char *text, const char *pattern);
const char *cbmstrcasestr_len(const char *text, size_t textlen, const char *pattern, size_t patlen);
void CtdlMakeTempFileName(char *name, int len);
-char *rfc2047encode(char *line, long length);
+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 *);
int GetHashKeys(HashList *Hash, char ***List);
int dbg_PrintHash(HashList *Hash, PrintHashContent first, PrintHashContent Second);
int PrintHash(HashList *Hash, TransitionFunc Trans, PrintHashDataFunc PrintEntry);
-HashPos *GetNewHashPos(HashList *Hash, int StepWidth);
+HashPos *GetNewHashPos(const HashList *Hash, int StepWidth);
+void RewindHashPos(const HashList *Hash, HashPos *it, int StepWidth);
int GetHashPosFromKey(HashList *Hash, const char *HKey, long HKLen, HashPos *At);
int DeleteEntryFromHash(HashList *Hash, HashPos *At);
int GetHashPosCounter(HashList *Hash, HashPos *At);
void DeleteHashPos(HashPos **DelMe);
int NextHashPos(HashList *Hash, HashPos *At);
int GetHashPos(HashList *Hash, HashPos *At, long *HKLen, const char **HashKey, void **Data);
-int GetNextHashPos(HashList *Hash, HashPos *At, long *HKLen, const char **HashKey, void **Data);
+int GetNextHashPos(const HashList *Hash, HashPos *At, long *HKLen, const char **HashKey, void **Data);
int GetHashAt(HashList *Hash,long At, long *HKLen, const char **HashKey, void **Data);
void SortByHashKey(HashList *Hash, int Order);
void SortByHashKeyStr(HashList *Hash);
#define XMPPMORTUARY "application/x-citadel-xmpp-mortuary"
#define INTERNETCFG "application/x-citadel-internet-config"
+#define FILE_MAILALIAS "__MAIL_ALIAS__"
+
#define LISTING_FOLLOWS 100
#define CIT_OK 200
#define MORE_DATA 300