]> code.citadel.org Git - citadel.git/blobdiff - libcitadel/lib/libcitadel.h
Add ability to hex encode binary strings
[citadel.git] / libcitadel / lib / libcitadel.h
index 557280edd7b38b1f8cdf6057cc4ab5eaa0020547..2ca28bb7686bea528ebce20363665f27e5829194 100644 (file)
 #endif
 
 
-/* Logging levels - correspond to syslog(3) */
-enum LogLevel {
-       /* When about to exit the server for an unrecoverable error */
-        CTDL_EMERG,    /* system is unusable */
-       /* Manual intervention is required to avoid an abnormal exit */
-        CTDL_ALERT,    /* action must be taken immediately */
-       /* The server can continue to run with degraded functionality */
-        CTDL_CRIT,     /* critical conditions */
-       /* An error occurs but the server continues to run normally */
-        CTDL_ERR,      /* error conditions */
-       /* An abnormal condition was detected; server will continue normally */
-        CTDL_WARNING,  /* warning conditions */
-       /* Normal messages (login/out, activity, etc.) */
-        CTDL_NOTICE,   /* normal but significant condition */
-       /* Unimportant progress messages, etc. */
-        CTDL_INFO,     /* informational */
-       /* Debugging messages */
-        CTDL_DEBUG     /* debug-level messages */
-};
-
 typedef enum AXLevel {
        AxDeleted = 0,
        AxNewU = 1,
@@ -107,6 +87,7 @@ typedef enum _room_views {
        VIEW_MAX
 } ROOM_VIEWS;
 
+#define BLOG_EUIDBUF_SIZE      40
 
 #ifndef IsEmptyStr
 #define IsEmptyStr(a) ((a)[0] == '\0')
@@ -131,7 +112,7 @@ void ShutDownLibCitadel(void);
  * MIME parser declarations
  */
 
-void extract_key(char *target, char *source, long sourcelen, char *key, long keylen, char KeyEnd);
+long extract_key(char *target, char *source, long sourcelen, char *key, long keylen, char KeyEnd);
 
 
 typedef void (*MimeParserCallBackType)(char *cbname,
@@ -167,6 +148,11 @@ void mime_decode(char *partnum,
                 MimeParserCallBackType PostMultiPartCallBack,
                 void *userdata,
                 int dont_decode);
+int mime_decode_now (char *part_start, 
+                    size_t length,
+                    char *encoding,
+                    char **decoded,
+                    size_t *bytes_decoded);
 void the_mime_parser(char *partnum,
                     char *content_start, char *content_end,
                     MimeParserCallBackType CallBack,
@@ -233,7 +219,7 @@ int StrBufTCP_read_buffered_line_fast(StrBuf *Line,
                                      int selectresolution, 
                                      const char **Error);
 
-int StrBufSipLine(StrBuf *LineBuf, StrBuf *Buf, const char **Ptr);
+int StrBufSipLine(StrBuf *LineBuf, const 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,6 +287,7 @@ int StrBufSanitizeAscii(StrBuf *Buf, const char Mute);
 #define QU                     (3)
 void StrBufUrlescAppend(StrBuf *OutBuf, const StrBuf *In, const char *PlainIn);
 void StrBufHexescAppend(StrBuf *OutBuf, const StrBuf *In, const char *PlainIn);
+void StrBufHexEscAppend(StrBuf *OutBuf, const StrBuf *In, const unsigned char *PlainIn, long PlainInLen);
 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);
@@ -351,7 +338,7 @@ const char *cmemreadlinelen(const char *start, char *buf, int maxlen, int *retle
 #define IsEmptyStr(a) ((a)[0] == '\0')
 #define num_parms(source)              num_tokens(source,(char)'|')
 int stripout(char *str, char leftboundary, char rightboundary);
-void stripallbut(char *str, char leftboundary, char rightboundary);
+long stripallbut(char *str, char leftboundary, char rightboundary);
 char *myfgets(char *s, int size, FILE *stream);
 void urlesc(char *outbuf, size_t oblen, char *strbuf);
 char *CtdlTempFileName(char *prefix1, int prefix2);
@@ -569,4 +556,7 @@ void WildFireSerializePayload(StrBuf *JsonBuffer, StrBuf *OutBuf, int *MsgCount,
 
 extern ConstStr RoomNetCfgStrs[maxRoomNetCfg];
 
+/* Convenience function to "perform a function and cut a log record if result != 0" */
+#define CtdlLogResult(x) if (x) syslog(LOG_CRIT, "%s:%d %s", __FILE__, __LINE__, strerror(errno))
+
 #endif // LIBCITADEL_H