summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreudoxia <uplink@distress.network>2020-12-01 16:09:46 -0500
committereudoxia <uplink@distress.network>2020-12-01 16:09:46 -0500
commit15c26a6b26b5153023e3e4077f98b80cbb95b634 (patch)
tree838b41ce4e706334ba134f110b5b1fcc4c32db95
parent7727bdb0a4200263c9fed7480df57a8cf06a178b (diff)
URL encoding now uses its own C program; removed Python dependency
-rwxr-xr-xmd.sh11
-rwxr-xr-xsitemap.sh20
-rwxr-xr-xurlencodebin0 -> 16776 bytes
-rw-r--r--urlencode.c24
4 files changed, 32 insertions, 23 deletions
diff --git a/md.sh b/md.sh
index 3441a65..b8d48c1 100755
--- a/md.sh
+++ b/md.sh
@@ -5,8 +5,9 @@ set -e
# ./md.sh <target dir>
# ./md.sh <input md> <output html>
#
-# target dir: input `src.md`, output `index.html`
-# dependencies: lowdown, fzf, python (for now)
+# input: <target dir>/src.md ; ./md-header ; ./md-footer
+# output: <target dir>/index.html
+# dependencies: lowdown, fzf, ./urlencode
# Copyright 2019-2020 DistressNetwork° <uplink@distress.network>
#
@@ -57,8 +58,8 @@ unesc() {
sed -e 's;\\\&;\&;g' -e 's/\\\;/;/g'
}
-encode() ( # TODO: python't
- python -c "import urllib, sys; print urllib.quote(sys.argv[1])" "$1"
+encode() (
+ ./urlencode
)
decode() {
@@ -118,7 +119,7 @@ tmp=$(mktemp -p /tmp) # using a tempfile, more convenient for storage and operat
TOCLIST=$(grep -e '^#' $IN | sed -e 's; ;- ;' -e 's;^#;;' -e 's;#; ;g') # headers from source as md list
echo "$TOCLIST" | while IFS='' read -r data ; do # encode headers as urls
- HEADER=$(echo "$data" | sed 's/^[[:space:]-]*//' | encode "$(cat /dev/stdin)") ;
+ HEADER=$(echo "$data" | sed 's/^[[:space:]-]*//' | encode) ;
echo "$data" | sed "s/^\([[:space:]-]*\)\(.*\)$/\1${HEADER}/" >> $tmp ;
done
diff --git a/sitemap.sh b/sitemap.sh
index c6cfc38..d7c7b37 100755
--- a/sitemap.sh
+++ b/sitemap.sh
@@ -19,23 +19,7 @@ set -e
# along with this program. If not, see <http://www.gnu.org/licenses/>.
urlencode() (
- # urlencode <string>
-
- old_lc_collate=$LC_COLLATE
- LC_COLLATE=C
-
- length="${#1}"
- i=1
- while [ $i -le $length ] ; do
- c=$(expr substr "$1" $i 1) ;
- case $c in
- ([a-zA-Z0-9./~_-]) printf "$c" ;;
- (*) printf '%%%02X' "'$c" ;;
- esac ;
- true $((i=i+1)) ;
- done
-
- LC_COLLATE=$old_lc_collate
+ ./urlencode | sed 's;%2F;/;g'
)
echo '<?xml version="1.0" encoding="UTF-8"?>
@@ -46,7 +30,7 @@ xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' > $2
echo "$(find -L $1 -type d | sort | sed -e 's;^\./;;' -e '\;/\(.git\|css\|error\|favicon\|fonts\|js\|media\);d' -e 's;$;/;')" | \
while IFS='' read -r data ; do
DATE=$(grep "last-modified" ${data}/index.html | cut -f 4 -d \" | sed 's/ /T/' ) ;
- urlencode "$data" | sed -e 's;^;<url><loc>https://;' -e "s;$;</loc><lastmod>${DATE}</lastmod></url>;" ;
+ echo "$data" | urlencode | sed -e 's;^;<url><loc>https://;' -e "s;$;</loc><lastmod>${DATE}</lastmod></url>;" ;
printf "\n" ;
done >> $2
diff --git a/urlencode b/urlencode
new file mode 100755
index 0000000..bd0df16
--- /dev/null
+++ b/urlencode
Binary files differ
diff --git a/urlencode.c b/urlencode.c
new file mode 100644
index 0000000..5a418f2
--- /dev/null
+++ b/urlencode.c
@@ -0,0 +1,24 @@
+#include <stdio.h>
+#include <string.h>
+
+int main() {
+ char str[2047];
+ char safe[] = "ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvwxyz1234567890-._~";
+ char *ret;
+ int i;
+
+ scanf("%[^\n]", str);
+
+ for(i = 0; i < (strlen(str)); i++) {
+
+ ret = strchr(safe, str[i]);
+ if(ret == NULL) {
+ printf("%%%02X", (unsigned)str[i] & 0xffU);
+ } else {
+ printf("%c", str[i]);
+ }
+ }
+
+ printf("\n");
+ return 0;
+}