summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2018-04-17 15:38:28 +0200
committerJo-Philipp Wich <jo@mein.io>2018-04-18 16:21:27 +0200
commit1d5a3123ed63777e2d40250fba99cf8cf2f58476 (patch)
treee81b138521354ed42e5dfaf9f88af703d9652699
parent59dea0230cbbea75459c4e61d1da64629d1da31b (diff)
Revert "luci-base: add urldecode() and urlencode() C implementations"
This reverts commit ad7dc4a4928e77ae142d0fe040f9e9e64b530e82. Since we're using liblucihttp now, that library is the appropriate place to add such decoding helper functions. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
-rw-r--r--modules/luci-base/src/template_lualib.c49
-rw-r--r--modules/luci-base/src/template_utils.c124
-rw-r--r--modules/luci-base/src/template_utils.h6
3 files changed, 3 insertions, 176 deletions
diff --git a/modules/luci-base/src/template_lualib.c b/modules/luci-base/src/template_lualib.c
index 45e23966e9..d5c8dd6b4c 100644
--- a/modules/luci-base/src/template_lualib.c
+++ b/modules/luci-base/src/template_lualib.c
@@ -1,7 +1,7 @@
/*
* LuCI Template - Lua binding
*
- * Copyright (C) 2009-2018 Jo-Philipp Wich <jo@mein.io>
+ * Copyright (C) 2009 Jo-Philipp Wich <jow@openwrt.org>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -110,51 +110,6 @@ int template_L_striptags(lua_State *L)
return 0;
}
-int template_L_urlencode(lua_State *L)
-{
- size_t len = 0;
- const char *str = luaL_checkstring(L, 1);
- char *res = urlencode(str, &len);
-
- if (res != NULL)
- {
- lua_pushlstring(L, res, len);
- free(res);
-
- return 1;
- }
- else if (len == 0)
- {
- lua_pushvalue(L, 1);
- return 1;
- }
-
- return 0;
-}
-
-int template_L_urldecode(lua_State *L)
-{
- size_t len = 0;
- const char *str = luaL_checkstring(L, 1);
- int keep_plus = lua_toboolean(L, 2);
- char *res = urldecode(str, &len, keep_plus == 1);
-
- if (res != NULL)
- {
- lua_pushlstring(L, res, len);
- free(res);
-
- return 1;
- }
- else if (len == 0)
- {
- lua_pushvalue(L, 1);
- return 1;
- }
-
- return 0;
-}
-
static int template_L_load_catalog(lua_State *L) {
const char *lang = luaL_optstring(L, 1, "en");
const char *dir = luaL_optstring(L, 2, NULL);
@@ -210,8 +165,6 @@ static const luaL_reg R[] = {
{ "utf8", template_L_utf8 },
{ "pcdata", template_L_pcdata },
{ "striptags", template_L_striptags },
- { "urlencode", template_L_urlencode },
- { "urldecode", template_L_urldecode },
{ "load_catalog", template_L_load_catalog },
{ "close_catalog", template_L_close_catalog },
{ "change_catalog", template_L_change_catalog },
diff --git a/modules/luci-base/src/template_utils.c b/modules/luci-base/src/template_utils.c
index eefdd17008..3979487f12 100644
--- a/modules/luci-base/src/template_utils.c
+++ b/modules/luci-base/src/template_utils.c
@@ -1,7 +1,7 @@
/*
* LuCI Template - Utility functions
*
- * Copyright (C) 2010-2018 Jo-Philipp Wich <jo@mein.io>
+ * Copyright (C) 2010 Jo-Philipp Wich <jow@openwrt.org>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -428,128 +428,6 @@ char * striptags(const char *s, unsigned int l)
return buf_destroy(buf);
}
-
-static inline bool is_urlencode_char(char c)
-{
- return !((c >= 'a' && c <= 'z') ||
- (c >= 'A' && c <= 'Z') ||
- (c >= '0' && c <= '9') ||
- (c == '$') || (c == '_') ||
- (c == '-') || (c == '.') ||
- (c == '~'));
-}
-
-/*
- * URL-encode all special characters in given string and return
- * encoded copy.
- *
- * If no encoding was required, returns NULL. If an encoded_len
- * pointer is passed, it is set to the length of the encoded string.
- *
- * Sets encoded_len and returns NULL if memory allocation failed.
- */
-char *urlencode(const char *s, size_t *encoded_len)
-{
- size_t i, enc_len;
- char *enc, *ptr;
-
- for (i = 0, enc_len = 0; s[i]; i++)
- if (is_urlencode_char(s[i]))
- enc_len += 3;
- else
- enc_len++;
-
- if (i != enc_len)
- {
- if (encoded_len)
- *encoded_len = enc_len;
-
- enc = calloc(1, enc_len + 1);
-
- if (!enc)
- return NULL;
-
- for (i = 0, ptr = enc; s[i]; i++)
- if (is_urlencode_char(s[i]))
- ptr += snprintf(ptr, 4, "%%%02x", (unsigned char)s[i]);
- else
- *ptr++ = s[i];
-
- return enc;
- }
-
- return NULL;
-}
-
-/*
- * URL-decode given string and return decoded copy.
- *
- * If no decoding was required, returns NULL. If an decoded_len
- * pointer is passed, it is set to the length of the decoded string.
- *
- * When keep_plus is true, skip decoding of plus ("+") signs into
- * space (0x20) characters.
- *
- * Sets decoded_len and returns NULL if memory allocation failed.
- */
-
-#define hex(x) \
- (((x) <= '9') ? ((x) - '0') : \
- (((x) <= 'F') ? ((x) - 'A' + 10) : \
- ((x) - 'a' + 10)))
-
-char *urldecode(const char *s, size_t *decoded_len, bool keep_plus)
-{
- bool changed = false;
- size_t i, dec_len;
- char *dec, *ptr;
-
- for (i = 0, dec_len = 0; s[i]; i++, dec_len++)
- {
- if (s[i] == '%' && isxdigit(s[i+1]) && isxdigit(s[i+2]))
- {
- changed = true;
- i += 2;
- }
- else if (!keep_plus && s[i] == '+')
- {
- changed = true;
- }
- }
-
- if (changed)
- {
- if (decoded_len)
- *decoded_len = dec_len;
-
- dec = calloc(1, dec_len + 1);
-
- if (!dec)
- return NULL;
-
- for (i = 0, ptr = dec; s[i]; i++)
- {
- if (s[i] == '%' && isxdigit(s[i+1]) && isxdigit(s[i+2]))
- {
- *ptr++ = (char)(16 * hex(s[i+1]) + hex(s[i+2]));
- i += 2;
- }
- else if (!keep_plus && s[i] == '+')
- {
- *ptr++ = ' ';
- }
- else
- {
- *ptr++ = s[i];
- }
- }
-
- return dec;
- }
-
- return NULL;
-}
-
void luastr_escape(struct template_buffer *out, const char *s, unsigned int l,
int escape_xml)
{
diff --git a/modules/luci-base/src/template_utils.h b/modules/luci-base/src/template_utils.h
index 872ecb072f..32a79f93bc 100644
--- a/modules/luci-base/src/template_utils.h
+++ b/modules/luci-base/src/template_utils.h
@@ -1,7 +1,7 @@
/*
* LuCI Template - Utility header
*
- * Copyright (C) 2010-2018 Jo-Philipp Wich <jo@mein.io>
+ * Copyright (C) 2010-2012 Jo-Philipp Wich <jow@openwrt.org>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,8 +22,6 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#include <stdbool.h>
-#include <ctype.h>
/* buffer object */
@@ -44,8 +42,6 @@ char * buf_destroy(struct template_buffer *buf);
char * utf8(const char *s, unsigned int l);
char * pcdata(const char *s, unsigned int l);
char * striptags(const char *s, unsigned int l);
-char * urlencode(const char *s, size_t *encoded_len);
-char * urldecode(const char *s, size_t *decoded_len, bool keep_plus);
void luastr_escape(struct template_buffer *out, const char *s, unsigned int l, int escape_xml);
void luastr_translate(struct template_buffer *out, const char *s, unsigned int l, int escape_xml);