utils: add uh_htmlescape() helper
[project/uhttpd.git] / utils.h
diff --git a/utils.h b/utils.h
index 0853943..093deff 100644 (file)
--- a/utils.h
+++ b/utils.h
@@ -1,19 +1,20 @@
 /*
- * uhttpd - Tiny single-threaded httpd - Utility header
+ * uhttpd - Tiny single-threaded httpd
  *
- *   Copyright (C) 2010-2012 Jo-Philipp Wich <xm@subsignal.org>
+ *   Copyright (C) 2010-2013 Jo-Philipp Wich <xm@subsignal.org>
+ *   Copyright (C) 2013 Felix Fietkau <nbd@openwrt.org>
  *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
 #ifndef _UHTTPD_UTILS_
 #include <string.h>
 #include <errno.h>
 #include <stdlib.h>
+#include <alloca.h>
+#include <time.h>
 #include <unistd.h>
 
+struct uh_addr {
+       uint8_t family;
+       uint16_t port;
+       union {
+               struct in_addr in;
+               struct in6_addr in6;
+       };
+};
+
 #define min(x, y) (((x) < (y)) ? (x) : (y))
 #define max(x, y) (((x) > (y)) ? (x) : (y))
 
@@ -44,6 +56,9 @@ static inline void clearenv(void)
        extern char **environ;
        *environ = NULL;
 }
+
+time_t timegm (struct tm *tm);
+
 #endif
 
 #ifdef __GNUC__
@@ -54,8 +69,10 @@ static inline void clearenv(void)
 
 int uh_urldecode(char *buf, int blen, const char *src, int slen);
 int uh_urlencode(char *buf, int blen, const char *src, int slen);
-int uh_b64decode(char *buf, int blen, const unsigned char *src, int slen);
+int uh_b64decode(char *buf, int blen, const void *src, int slen);
 bool uh_path_match(const char *prefix, const char *url);
 char *uh_split_header(char *str);
+bool uh_addr_rfc1918(struct uh_addr *addr);
+char *uh_htmlescape(const char *src);
 
 #endif