StrBufSipLine(): make input params const; fix several warnings about unused code.
[citadel.git] / libcitadel / lib / libcitadel.h
index d74b9f12d8449cebb8f3991e1d2e9b936de6975f..2f275d7ed99ee0abd0bac66d2eaaab15bad2a3ec 100644 (file)
@@ -14,6 +14,8 @@
 #include <time.h>
 #include <stdlib.h>
 #include <stdarg.h>
+#include <arpa/inet.h>
+
 #define LIBCITADEL_VERSION_NUMBER      789
 
 /*
@@ -107,6 +109,7 @@ typedef enum _room_views {
        VIEW_MAX
 } ROOM_VIEWS;
 
+#define BLOG_EUIDBUF_SIZE      40
 
 #ifndef IsEmptyStr
 #define IsEmptyStr(a) ((a)[0] == '\0')
@@ -239,7 +242,6 @@ int StrBufTCP_read_buffered_line_fast(StrBuf *Line,
                                      const char **Error);
 
 
-int StrBufSipLine(StrBuf *LineBuf, StrBuf *Buf, const char **Ptr);
 
 typedef enum _eReadState {
        eReadFail,
@@ -262,7 +264,7 @@ int StrBuf_write_one_chunk_callback(int fd, short event, IOBuffer *FB);
 eReadState StrBufChunkSipLine(StrBuf *LineBuf, IOBuffer *FB);
 eReadState StrBufCheckBuffer(IOBuffer *FB);
 
-
+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);
@@ -330,6 +332,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);
@@ -352,6 +355,30 @@ int LoadIconDir(const char *DirName);
 const char *GetIconFilename(char *MimeType, size_t len);
 
 
+/* URL parsing & connection data */
+typedef struct ParsedURL ParsedURL;
+struct ParsedURL {
+       StrBuf *URL;
+       StrBuf *UrlWithoutCred;
+       StrBuf *CurlCreds;
+       unsigned Port;
+       const char *Host;
+       const char *User;
+       const char *Pass;
+       const char *LocalPart;
+       const char *PlainUrl;
+       int IsIP;
+       int IPv6;
+       int af;
+       struct hostent *HEnt;
+       struct sockaddr_in6 Addr;
+       ParsedURL *Next;
+};
+
+void FreeURL(ParsedURL** Url);
+int ParseURL(ParsedURL **Url, StrBuf *UrlStr, unsigned short DefaultPort);
+void CurlPrepareURL(ParsedURL *Url);
+
 /* tools */
 
 
@@ -599,4 +626,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