By Harry Coin: make IsEmptyStr NULL-pointer-safe.
[citadel.git] / libcitadel / lib / libcitadel.h
index 7dd18e64cb351f465aaa9499a8db2ec41a8f1dcc..d7da488f10c7a7ab48dbc265924b7da184f96417 100644 (file)
@@ -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;
 
@@ -108,7 +108,7 @@ typedef enum _room_views {
 #define BLOG_EUIDBUF_SIZE      40
 
 #ifndef IsEmptyStr
-#define IsEmptyStr(a) ((a)[0] == '\0')
+#define IsEmptyStr(a) ( ( (a) == NULL ) || ((a)[0] == '\0') )
 #endif
 
 
@@ -339,12 +339,17 @@ void StrBuf_RFC822_2_Utf8(StrBuf *Target,
 void StrBuf_RFC822_to_Utf8(StrBuf *Target, const StrBuf *DecodeMe, const StrBuf* DefaultCharset, StrBuf *FoundCharset);
 
 typedef enum __eStreamType {
-       eBase64Decode
+       eBase64Encode,
+       eBase64Decode,
+       eZLibEncode,
+       eZLibDecode,
+       eEmtyCodec
 } eStreamType;
 
-void *StrBufNewStreamContext(eStreamType type);
-void StrBufDestroyStreamContext(eStreamType type, void **Stream);
-void StrBufStreamDecodeTo(StrBuf *Target, const StrBuf *In, const char* pIn, long pInLen, void *Stream);
+typedef struct vStreamT vStreamT;
+vStreamT *StrBufNewStreamContext(eStreamType type, const char **Err);
+int StrBufDestroyStreamContext(eStreamType type, vStreamT **Stream, const char **Err);
+int StrBufStreamTranscode(eStreamType type, IOBuffer *Target, IOBuffer *In, const char* pIn, long pInLen, vStreamT *Stream, int LastChunk, const char **Err);
 
 int StrBufDecodeBase64(StrBuf *Buf);
 int StrBufDecodeBase64To(const StrBuf *BufIn, StrBuf *BufOut);