]> code.citadel.org Git - citadel.git/blobdiff - libcitadel/lib/libcitadel.h
* libcitadel internal version number is now 7.80
[citadel.git] / libcitadel / lib / libcitadel.h
index 258d76045432e8d7c67d3574c73172ae7ae70865..d89995833bd97cdae305f68c9d25a5a63e19dad2 100644 (file)
@@ -15,7 +15,7 @@
 #include <time.h>
 #include <stdlib.h>
 #include <stdarg.h>
-#define LIBCITADEL_VERSION_NUMBER      766
+#define LIBCITADEL_VERSION_NUMBER      780
 
 /*
  * Here's a bunch of stupid magic to make the MIME parser portable.
@@ -45,6 +45,37 @@ enum LogLevel {
         CTDL_DEBUG     /* debug-level messages */
 };
 
+typedef enum AXLevel {
+       AxDeleted = 0,
+       AxNewU = 1,
+       AxProbU = 2,
+       AxLocU = 3,
+       AxNetU = 4,
+       AxPrefU = 5,
+       AxAideU = 6
+}eUsrAxlvl;
+
+enum RoomNetCfg {
+       subpending,
+       unsubpending,
+       lastsent, /* Server internal use only */
+       ignet_push_share,
+       listrecp,
+       digestrecp,
+       pop3client,
+       rssclient,
+       participate,
+       maxRoomNetCfg
+};
+
+
+typedef enum __GPEXWhichPolicy {
+       roompolicy,
+       floorpolicy,
+       sitepolicy,
+       mailboxespolicy,
+       maxpolicy
+}GPEXWhichPolicy;
 
 /*
  * View definitions.
@@ -59,12 +90,14 @@ enum LogLevel {
 #define        VIEW_WIKI               6       /* Wiki view */
 #define VIEW_CALBRIEF          7       /* Brief Calendar view */
 #define VIEW_JOURNAL           8       /* Journal view */
+#define VIEW_BLOG              9       /* Blog view (not yet implemented) */
 
 
 #ifndef IsEmptyStr
 #define IsEmptyStr(a) ((a)[0] == '\0')
 #endif
 
+
 /*
  * another word to indicate n/a for a pointer if NULL already has a "meaning"
  */
@@ -83,7 +116,7 @@ void ShutDownLibCitadel(void);
  * MIME parser declarations
  */
 
-void extract_key(char *target, char *source, long sourcelen, char *key, long keylen);
+void extract_key(char *target, char *source, long sourcelen, char *key, long keylen, char KeyEnd);
 
 void mime_parser(char *content_start, char *content_end,
                void (*CallBack)
@@ -218,6 +251,8 @@ void the_mime_parser(char *partnum,
 
 typedef struct StrBuf StrBuf;
 
+#define strof(a) #a
+#define CStrOf(a) #a, sizeof(#a) - 1
 typedef struct _ConstStr {
        const char *Key;
        long len;
@@ -243,6 +278,7 @@ const char *ChrPtr(const StrBuf *Str);
 int StrLength(const StrBuf *Str);
 #define SKEY(a) ChrPtr(a), StrLength(a)
 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 StrBufTCP_read_line(StrBuf *buf, int *fd, int append, const char **Error);
 int StrBufReadBLOB(StrBuf *Buf, int *fd, int append, long nBytes, const char **Error);
@@ -271,6 +307,7 @@ int StrBufTCP_read_buffered_line_fast(StrBuf *Line,
                                      const char **Error);
 
 int StrBufSipLine(StrBuf *LineBuf, StrBuf *Buf, const char **Ptr);
+int StrBufReplaceToken(StrBuf *Buf, long where, long HowLong, const char *Repl, long ReplLen);
 int StrBufExtract_token(StrBuf *dest, const StrBuf *Source, int parmnum, char separator);
 int StrBufSub(StrBuf *dest, const StrBuf *Source, unsigned long Offset, size_t nChars);
 
@@ -301,12 +338,14 @@ void StrBufCutLeft(StrBuf *Buf, int nChars);
 void StrBufCutRight(StrBuf *Buf, int nChars);
 void StrBufCutAt(StrBuf *Buf, int AfternChars, const char *At);
 void StrBufTrim(StrBuf *Buf);
+void StrBufStripAllBut(StrBuf *Buf, char leftboundary, char rightboundary);
 void StrBufUpCase(StrBuf *Buf);
 void StrBufLowerCase(StrBuf *Buf);
 void StrBufStripSlashes(StrBuf *Dir, int RemoveTrailingSlash);
 void StrBufEUid_unescapize(StrBuf *target, const StrBuf *source);
 void StrBufEUid_escapize(StrBuf *target, const StrBuf *source);
 
+void StrBufToUnixLF(StrBuf *buf);
 void StrBufReplaceChars(StrBuf *buf, char search, char replace);
 
 int CompressBuffer(StrBuf *Buf);
@@ -321,6 +360,7 @@ int StrBufSanitizeAscii(StrBuf *Buf, const char Mute);
 #define RB                     (2)
 #define QU                     (3)
 void StrBufUrlescAppend(StrBuf *OutBuf, const StrBuf *In, const char *PlainIn);
+void StrBufHexescAppend(StrBuf *OutBuf, const StrBuf *In, const char *PlainIn);
 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);
@@ -364,7 +404,7 @@ int haschar(const char *st, int ch);
 void remove_token(char *source, int parmnum, char separator);
 void fmt_date(char *buf, size_t n, time_t thetime, int seconds);
 int is_msg_in_sequence_set(const char *mset, long msgnum);
-char *memreadline(char *start, char *buf, int maxlen);
+const char *memreadline(const char *start, char *buf, int maxlen);
 char *memreadlinelen(char *start, char *buf, int maxlen, int *retlen);
 #define IsEmptyStr(a) ((a)[0] == '\0')
 #define num_parms(source)              num_tokens(source,(char)'|')
@@ -375,8 +415,8 @@ void urlesc(char *outbuf, size_t oblen, char *strbuf);
 char *CtdlTempFileName(char *prefix1, int prefix2);
 FILE *CtdlTempFile(void);
 void generate_uuid(char *buf);
-char *bmstrcasestr(char *text, char *pattern);
-char *bmstrcasestr_len(char *text, size_t textlen, char *pattern, size_t patlen);
+const char *bmstrcasestr(const char *text, const char *pattern);
+const char *bmstrcasestr_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);
 int is_msg_in_mset(const char *mset, long msgnum);
@@ -447,6 +487,8 @@ 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);
+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 GetNextHashPos(HashList *Hash, HashPos *At, long *HKLen, const char **HashKey, void **Data);