]> code.citadel.org Git - citadel.git/blobdiff - libcitadel/lib/libcitadel.h
* Fixed striplt() to only remove leading and trailing blanks, but no others. It...
[citadel.git] / libcitadel / lib / libcitadel.h
index 330184cabe12939113bceba8de32863d9649cb0d..12be21c1c6c14dc90114a147b52910c385a9e2de 100644 (file)
@@ -15,7 +15,7 @@
 #include <time.h>
 #include <stdlib.h>
 #include <stdarg.h>
-#define LIBCITADEL_VERSION_NUMBER      739
+#define LIBCITADEL_VERSION_NUMBER      760
 
 /*
  * Here's a bunch of stupid magic to make the MIME parser portable.
@@ -71,13 +71,13 @@ enum LogLevel {
 
 char *libcitadel_version_string(void);
 int libcitadel_version_number(void);
-
+void ShutDownLibCitadel(void);
 
 /*
  * MIME parser declarations
  */
 
-void extract_key(char *target, char *source, char *key);
+void extract_key(char *target, char *source, long sourcelen, char *key, long keylen);
 
 void mime_parser(char *content_start, char *content_end,
                void (*CallBack)
@@ -118,7 +118,7 @@ void mime_parser(char *content_start, char *content_end,
                        void *cbuserdata),
                void *userdata,
                int dont_decode
-               );
+);
 
 
 
@@ -235,12 +235,26 @@ long StrBufPeek(StrBuf *Buf, const char* ptr, long nThChar, char PeekValue);
 
 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);
+int StrBufReadBLOBBuffered(StrBuf *Buf, 
+                          StrBuf *IOBuf, 
+                          const char **BufPos,
+                          int *fd, 
+                          int append, 
+                          long nBytes, 
+                          const char **Error);
 int StrBufTCP_read_buffered_line(StrBuf *Line, 
                                 StrBuf *buf, 
                                 int *fd, 
                                 int timeout, 
                                 int selectresolution, 
                                 const char **Error);
+int StrBufTCP_read_buffered_line_fast(StrBuf *Line, 
+                                     StrBuf *buf, 
+                                     const char **Pos,
+                                     int *fd, 
+                                     int timeout, 
+                                     int selectresolution, 
+                                     const char **Error);
 
 int StrBufSipLine(StrBuf *LineBuf, StrBuf *Buf, const char **Ptr);
 int StrBufExtract_token(StrBuf *dest, const StrBuf *Source, int parmnum, char separator);
@@ -249,7 +263,7 @@ int StrBufSub(StrBuf *dest, const StrBuf *Source, unsigned long Offset, size_t n
 unsigned long StrBufExtract_unsigned_long(const StrBuf* Source, int parmnum, char separator);
 long StrBufExtract_long(const StrBuf* Source, int parmnum, char separator);
 int StrBufExtract_int(const StrBuf* Source, int parmnum, char separator);
-inline int StrBufNum_tokens(const StrBuf *source, char tok);
+int StrBufNum_tokens(const StrBuf *source, char tok);
 int StrBufRemove_token(StrBuf *Source, int parmnum, char separator);
 
 int StrBufExtract_NextToken(StrBuf *dest, const StrBuf *Source, const char **pStart, char separator);
@@ -308,8 +322,6 @@ int LoadIconDir(const char *DirName);
 /* Select the icon for a given MIME type */
 const char *GetIconFilename(char *MimeType, size_t len);
 
-void ShutDownLibCitadel(void);
-
 
 /* tools */
 
@@ -329,8 +341,9 @@ 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);
+unsigned int decode_hex(char *Source);
 int CtdlDecodeQuotedPrintable(char *decoded, char *encoded, int sourcelen);
-void striplt(char *);
+size_t striplt(char *);
 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);
@@ -347,6 +360,7 @@ 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);
 void CtdlMakeTempFileName(char *name, int len);
 char *rfc2047encode(char *line, long length);
 int is_msg_in_mset(const char *mset, long msgnum);
@@ -388,6 +402,7 @@ long StrBufUnescape(StrBuf *Buf, int StripBlanks);
  * Hash list implementation for Citadel
  */
 #define HKEY(a) a, (sizeof(a) - 1)
+
 typedef struct HashList HashList;
 
 typedef struct HashKey HashKey;
@@ -425,6 +440,7 @@ const void *GetSearchPayload(const void *HashVoid);
 void SortByPayload(HashList *Hash, CompareFunc SortBy);
 void generic_free_handler(void *ptr);
 void reference_free_handler(void *ptr);
+int HashLittle(const void *key, size_t length);
 
 
 void convert_spaces_to_underscores(char *str);