Updated build system and now bundle libb64
This commit is contained in:
parent
3304fbf0fa
commit
7afb34fc61
5
.gitignore
vendored
5
.gitignore
vendored
@ -12,8 +12,8 @@ illusion/*
|
|||||||
scripts/*
|
scripts/*
|
||||||
logs/*
|
logs/*
|
||||||
*.a
|
*.a
|
||||||
lua/lua
|
deps/lua/lua
|
||||||
lua/luac
|
deps/lua/luac
|
||||||
netmail.out
|
netmail.out
|
||||||
echomail.out
|
echomail.out
|
||||||
utils/magiedit/odoors/libs-*
|
utils/magiedit/odoors/libs-*
|
||||||
@ -23,3 +23,4 @@ utils/magiedit/magiedit
|
|||||||
msgserial
|
msgserial
|
||||||
whitelist.ip
|
whitelist.ip
|
||||||
blacklist.ip
|
blacklist.ip
|
||||||
|
.DS_Store
|
||||||
|
@ -1,9 +1,20 @@
|
|||||||
CC=cc
|
CC=cc
|
||||||
CFLAGS=-I/usr/local/include
|
CFLAGS=-I/usr/local/include -I./deps/
|
||||||
DEPS = bbs.h
|
DEPS = bbs.h
|
||||||
JAMLIB = jamlib/jamlib.a
|
JAMLIB = deps/jamlib/jamlib.a
|
||||||
ZMODEM = Xmodem/libzmodem.a
|
ZMODEM = deps/Xmodem/libzmodem.a
|
||||||
LUA = lua/liblua.a
|
LUA = deps/lua/liblua.a
|
||||||
|
|
||||||
|
all: magicka
|
||||||
|
|
||||||
|
${LUA}:
|
||||||
|
cd deps/lua && $(MAKE) -f Makefile freebsd MAKEFLAGS=
|
||||||
|
|
||||||
|
${JAMLIB}:
|
||||||
|
cd deps/jamlib && $(MAKE) -f Makefile.linux MAKEFLAGS=
|
||||||
|
|
||||||
|
${ZMODEM}:
|
||||||
|
cd deps/Xmodem && $(MAKE) MAKEFLAGS=
|
||||||
|
|
||||||
OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o bluewave.o hashmap/hashmap.o
|
OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o bluewave.o hashmap/hashmap.o
|
||||||
%.o: %.c $(DEPS)
|
%.o: %.c $(DEPS)
|
||||||
@ -16,3 +27,6 @@ magicka: $(OBJ)
|
|||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(OBJ) magicka
|
rm -f $(OBJ) magicka
|
||||||
|
cd deps/lua && $(MAKE) clean
|
||||||
|
cd deps/jamlib && $(MAKE) -f Makefile.linux clean
|
||||||
|
cd deps/Xmodem && $(MAKE) clean
|
||||||
|
@ -1,19 +1,38 @@
|
|||||||
CC=cc
|
CC=cc
|
||||||
CFLAGS=-I/usr/local/include -DENABLE_WWW=1
|
CFLAGS=-I/usr/local/include -I./deps/ -DENABLE_WWW=1
|
||||||
DEPS = bbs.h
|
DEPS = bbs.h
|
||||||
JAMLIB = jamlib/jamlib.a
|
JAMLIB = deps/jamlib/jamlib.a
|
||||||
ZMODEM = Xmodem/libzmodem.a
|
ZMODEM = deps/Xmodem/libzmodem.a
|
||||||
LUA = lua/liblua.a
|
LUA = deps/lua/liblua.a
|
||||||
MICROHTTPD=-lmicrohttpd -lb64
|
B64 = deps/libb64-1.2/src/libb64.a
|
||||||
|
MICROHTTPD=-lmicrohttpd
|
||||||
|
|
||||||
|
all: magicka
|
||||||
|
|
||||||
|
${LUA}:
|
||||||
|
cd deps/lua && $(MAKE) -f Makefile freebsd MAKEFLAGS=
|
||||||
|
|
||||||
|
${JAMLIB}:
|
||||||
|
cd deps/jamlib && $(MAKE) -f Makefile.linux MAKEFLAGS=
|
||||||
|
|
||||||
|
${ZMODEM}:
|
||||||
|
cd deps/Xmodem && $(MAKE) MAKEFLAGS=
|
||||||
|
|
||||||
|
${B64}:
|
||||||
|
cd deps/libb64-1.2 && $(MAKE) MAKEFLAGS=
|
||||||
|
|
||||||
OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o bluewave.o www.o www_email.o www_msgs.o www_last10.o hashmap/hashmap.o
|
OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o bluewave.o www.o www_email.o www_msgs.o www_last10.o hashmap/hashmap.o
|
||||||
%.o: %.c $(DEPS)
|
%.o: %.c $(DEPS)
|
||||||
$(CC) -c -o $@ $< $(CFLAGS)
|
$(CC) -c -o $@ $< $(CFLAGS)
|
||||||
|
|
||||||
magicka: $(OBJ)
|
magicka: $(OBJ) ${LUA} ${ZMODEM} ${JAMLIB} ${B64}
|
||||||
$(CC) -o magicka -o $@ $^ $(CFLAGS) -L/usr/local/lib -lsqlite3 $(JAMLIB) $(ZMODEM) $(LUA) -lutil -lm -lssl -lcrypto -lssh $(MICROHTTPD)
|
$(CC) -o magicka -o $@ $^ $(CFLAGS) -L/usr/local/lib -lsqlite3 $(JAMLIB) $(ZMODEM) $(LUA) $(B64) -lutil -lm -lssl -lcrypto -lssh $(MICROHTTPD)
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(OBJ) magicka
|
rm -f $(OBJ) magicka
|
||||||
|
cd deps/lua && $(MAKE) clean
|
||||||
|
cd deps/jamlib && $(MAKE) -f Makefile.linux clean
|
||||||
|
cd deps/Xmodem && $(MAKE) clean
|
||||||
|
cd deps/libb64-1.2 && $(MAKE) clean
|
||||||
|
@ -1,18 +1,33 @@
|
|||||||
CC=cc
|
CC=cc
|
||||||
CFLAGS=-I/usr/local/include
|
CFLAGS=-I/usr/local/include -I./deps/
|
||||||
DEPS = bbs.h
|
DEPS = bbs.h
|
||||||
JAMLIB = jamlib/jamlib.a
|
JAMLIB = deps/jamlib/jamlib.a
|
||||||
ZMODEM = Xmodem/libzmodem.a
|
ZMODEM = deps/Xmodem/libzmodem.a
|
||||||
LUA = lua/liblua.a
|
LUA = deps/lua/liblua.a
|
||||||
|
|
||||||
|
|
||||||
|
all: magicka
|
||||||
|
|
||||||
|
${LUA}:
|
||||||
|
cd deps/lua && $(MAKE) -f Makefile linux MAKEFLAGS=
|
||||||
|
|
||||||
|
${JAMLIB}:
|
||||||
|
cd deps/jamlib && $(MAKE) -f Makefile.linux MAKEFLAGS=
|
||||||
|
|
||||||
|
${ZMODEM}:
|
||||||
|
cd deps/Xmodem && $(MAKE) MAKEFLAGS=
|
||||||
|
|
||||||
OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o bluewave.o hashmap/hashmap.o
|
OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o bluewave.o hashmap/hashmap.o
|
||||||
%.o: %.c $(DEPS)
|
%.o: %.c $(DEPS)
|
||||||
$(CC) -c -o $@ $< $(CFLAGS)
|
$(CC) -c -o $@ $< $(CFLAGS)
|
||||||
|
|
||||||
magicka: $(OBJ)
|
magicka: $(OBJ) ${LUA} ${ZMODEM} ${JAMLIB}
|
||||||
$(CC) -o magicka -o $@ $^ $(CFLAGS) -L/usr/local/lib -lsqlite3 $(JAMLIB) $(ZMODEM) $(LUA) -lutil -lm -ldl -lssl -lcrypto -lssh
|
$(CC) -o magicka -o $@ $^ $(CFLAGS) -L/usr/local/lib -lsqlite3 $(JAMLIB) $(ZMODEM) $(LUA) -lutil -lm -ldl -lssl -lcrypto -lssh
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(OBJ) magicka
|
rm -f $(OBJ) magicka
|
||||||
|
cd deps/lua && $(MAKE) clean
|
||||||
|
cd deps/jamlib && $(MAKE) -f Makefile.linux clean
|
||||||
|
cd deps/Xmodem && $(MAKE) clean
|
||||||
|
@ -1,19 +1,40 @@
|
|||||||
CC=cc
|
CC=cc
|
||||||
CFLAGS=-I/usr/local/include -DENABLE_WWW=1
|
CFLAGS=-I/usr/local/include -I./deps/ -DENABLE_WWW=1
|
||||||
DEPS = bbs.h
|
DEPS = bbs.h
|
||||||
JAMLIB = jamlib/jamlib.a
|
JAMLIB = deps/jamlib/jamlib.a
|
||||||
ZMODEM = Xmodem/libzmodem.a
|
ZMODEM = deps/Xmodem/libzmodem.a
|
||||||
LUA = lua/liblua.a
|
LUA = deps/lua/liblua.a
|
||||||
MICROHTTPD=-lmicrohttpd -lb64
|
LUA = deps/libb64-1.2/src/libb64.a
|
||||||
|
MICROHTTPD=-lmicrohttpd
|
||||||
|
|
||||||
|
all: magicka
|
||||||
|
|
||||||
|
${LUA}:
|
||||||
|
cd deps/lua && $(MAKE) -f Makefile linux MAKEFLAGS=
|
||||||
|
|
||||||
|
${JAMLIB}:
|
||||||
|
cd deps/jamlib && $(MAKE) -f Makefile.linux MAKEFLAGS=
|
||||||
|
|
||||||
|
${ZMODEM}:
|
||||||
|
cd deps/Xmodem && $(MAKE) MAKEFLAGS=
|
||||||
|
|
||||||
|
${B64}:
|
||||||
|
cd deps/libb64-1.2 && $(MAKE) MAKEFLAGS=
|
||||||
|
|
||||||
|
|
||||||
OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o www.o www_email.o www_msgs.o www_last10.o bluewave.o hashmap/hashmap.o
|
OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o www.o www_email.o www_msgs.o www_last10.o bluewave.o hashmap/hashmap.o
|
||||||
%.o: %.c $(DEPS)
|
%.o: %.c $(DEPS)
|
||||||
$(CC) -c -o $@ $< $(CFLAGS)
|
$(CC) -c -o $@ $< $(CFLAGS)
|
||||||
|
|
||||||
magicka: $(OBJ)
|
magicka: $(OBJ) ${LUA} ${JAMLIB} ${ZMODEM} ${B64}
|
||||||
$(CC) -o magicka -o $@ $^ $(CFLAGS) -L/usr/local/lib -lsqlite3 $(JAMLIB) $(ZMODEM) $(LUA) -lutil -lm -ldl -lssl -lcrypto -lssh $(MICROHTTPD)
|
$(CC) -o magicka -o $@ $^ $(CFLAGS) -L/usr/local/lib -lsqlite3 $(JAMLIB) $(ZMODEM) $(LUA) $(B64) -lutil -lm -ldl -lssl -lcrypto -lssh $(MICROHTTPD)
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(OBJ) magicka
|
rm -f $(OBJ) magicka
|
||||||
|
cd deps/lua && $(MAKE) clean
|
||||||
|
cd deps/jamlib && $(MAKE) -f Makefile.linux clean
|
||||||
|
cd deps/Xmodem && $(MAKE) clean
|
||||||
|
cd deps/libb64-1.2 && $(MAKE) clean
|
||||||
|
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
CC=clang
|
|
||||||
CFLAGS=-I/usr/pkg/include
|
|
||||||
DEPS = bbs.h
|
|
||||||
JAMLIB = jamlib/jamlib.a
|
|
||||||
ZMODEM = Xmodem/libzmodem.a
|
|
||||||
LUA = lua/liblua.a
|
|
||||||
|
|
||||||
OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o
|
|
||||||
%.o: %.c $(DEPS)
|
|
||||||
$(CC) -c -o $@ $< $(CFLAGS)
|
|
||||||
|
|
||||||
magicka: $(OBJ)
|
|
||||||
$(CC) -o magicka -o $@ $^ $(CFLAGS) -L/usr/pkg/lib -lsqlite3 $(JAMLIB) $(ZMODEM) $(LUA) -lutil -lm -lssl -lcrypto -lssh
|
|
||||||
|
|
||||||
.PHONY: clean
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f $(OBJ) magicka
|
|
25
Makefile.osx
25
Makefile.osx
@ -1,18 +1,33 @@
|
|||||||
CC=cc
|
CC=cc
|
||||||
CFLAGS=-I/opt/local/include
|
CFLAGS=-I/opt/local/include -I./deps/
|
||||||
DEPS = bbs.h
|
DEPS = bbs.h
|
||||||
JAMLIB = jamlib/jamlib.a
|
JAMLIB = deps/jamlib/jamlib.a
|
||||||
ZMODEM = Xmodem/libzmodem.a
|
ZMODEM = deps/Xmodem/libzmodem.a
|
||||||
LUA = lua/liblua.a
|
LUA = deps/lua/liblua.a
|
||||||
|
|
||||||
OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o bluewave.o hashmap/hashmap.o
|
OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o bluewave.o hashmap/hashmap.o
|
||||||
|
|
||||||
|
all: magicka
|
||||||
|
|
||||||
|
${LUA}:
|
||||||
|
cd deps/lua && $(MAKE) -f Makefile macosx MAKEFLAGS=
|
||||||
|
|
||||||
|
${JAMLIB}:
|
||||||
|
cd deps/jamlib && $(MAKE) -f Makefile.linux MAKEFLAGS=
|
||||||
|
|
||||||
|
${ZMODEM}:
|
||||||
|
cd deps/Xmodem && $(MAKE) MAKEFLAGS=
|
||||||
|
|
||||||
%.o: %.c $(DEPS)
|
%.o: %.c $(DEPS)
|
||||||
$(CC) -c -o $@ $< $(CFLAGS)
|
$(CC) -c -o $@ $< $(CFLAGS)
|
||||||
|
|
||||||
magicka: $(OBJ)
|
magicka: $(OBJ) ${LUA} ${ZMODEM} ${JAMLIB}
|
||||||
$(CC) -o magicka -o $@ $^ $(CFLAGS) -L/opt/local/lib -lsqlite3 $(JAMLIB) $(ZMODEM) $(LUA) -lutil -lm -ldl -lssl -lcrypto -lssh
|
$(CC) -o magicka -o $@ $^ $(CFLAGS) -L/opt/local/lib -lsqlite3 $(JAMLIB) $(ZMODEM) $(LUA) -lutil -lm -ldl -lssl -lcrypto -lssh
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(OBJ) magicka
|
rm -f $(OBJ) magicka
|
||||||
|
cd deps/lua && $(MAKE) clean
|
||||||
|
cd deps/jamlib && $(MAKE) -f Makefile.linux clean
|
||||||
|
cd deps/Xmodem && $(MAKE) clean
|
||||||
|
@ -1,19 +1,38 @@
|
|||||||
CC=cc
|
CC=cc
|
||||||
CFLAGS=-I/opt/local/include -DENABLE_WWW=1
|
CFLAGS=-I/opt/local/include -I./deps/ -DENABLE_WWW=1
|
||||||
DEPS = bbs.h
|
DEPS = bbs.h
|
||||||
JAMLIB = jamlib/jamlib.a
|
JAMLIB = deps/jamlib/jamlib.a
|
||||||
ZMODEM = Xmodem/libzmodem.a
|
ZMODEM = deps/Xmodem/libzmodem.a
|
||||||
LUA = lua/liblua.a
|
LUA = deps/lua/liblua.a
|
||||||
MICROHTTPD=-lmicrohttpd -lb64
|
B64 = deps/libb64-1.2/src/libb64.a
|
||||||
|
MICROHTTPD=-lmicrohttpd
|
||||||
|
|
||||||
|
|
||||||
|
all: magicka
|
||||||
|
|
||||||
|
${LUA}:
|
||||||
|
cd deps/lua && $(MAKE) -f Makefile macosx MAKEFLAGS=
|
||||||
|
|
||||||
|
${JAMLIB}:
|
||||||
|
cd deps/jamlib && $(MAKE) -f Makefile.linux MAKEFLAGS=
|
||||||
|
|
||||||
|
${ZMODEM}:
|
||||||
|
cd deps/Xmodem && $(MAKE) MAKEFLAGS=
|
||||||
|
|
||||||
|
${B64}:
|
||||||
|
cd deps/libb64-1.2 && $(MAKE) MAKEFLAGS=
|
||||||
|
|
||||||
OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o www.o www_email.o www_msgs.o www_last10.o bluewave.o hashmap/hashmap.o
|
OBJ = inih/ini.o bbs.o main.o users.o main_menu.o mail_menu.o doors.o bbs_list.o chat_system.o email.o files.o settings.o lua_glue.o strings.o www.o www_email.o www_msgs.o www_last10.o bluewave.o hashmap/hashmap.o
|
||||||
%.o: %.c $(DEPS)
|
%.o: %.c $(DEPS)
|
||||||
$(CC) -c -o $@ $< $(CFLAGS)
|
$(CC) -c -o $@ $< $(CFLAGS)
|
||||||
|
|
||||||
magicka: $(OBJ)
|
magicka: $(OBJ) ${LUA} ${ZMODEM} ${JAMLIB} ${B64}
|
||||||
$(CC) -o magicka -o $@ $^ $(CFLAGS) -L/opt/local/lib -lsqlite3 $(JAMLIB) $(ZMODEM) $(LUA) -lutil -lm -ldl -lssl -lcrypto -lssh $(MICROHTTPD)
|
$(CC) -o magicka -o $@ $^ $(CFLAGS) -L/opt/local/lib -lsqlite3 $(JAMLIB) $(ZMODEM) $(LUA) $(B64) -lutil -lm -ldl -lssl -lcrypto -lssh $(MICROHTTPD)
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(OBJ) magicka
|
rm -f $(OBJ) magicka
|
||||||
|
cd deps/lua && $(MAKE) clean
|
||||||
|
cd deps/jamlib && $(MAKE) -f Makefile.linux clean
|
||||||
|
cd deps/Xmodem && $(MAKE) clean
|
||||||
|
0
Xmodem/LICENSE → deps/Xmodem/LICENSE
vendored
0
Xmodem/LICENSE → deps/Xmodem/LICENSE
vendored
0
Xmodem/Makefile → deps/Xmodem/Makefile
vendored
0
Xmodem/Makefile → deps/Xmodem/Makefile
vendored
0
Xmodem/crc.c → deps/Xmodem/crc.c
vendored
0
Xmodem/crc.c → deps/Xmodem/crc.c
vendored
0
Xmodem/crctab.c → deps/Xmodem/crctab.c
vendored
0
Xmodem/crctab.c → deps/Xmodem/crctab.c
vendored
0
Xmodem/crctab.h → deps/Xmodem/crctab.h
vendored
0
Xmodem/crctab.h → deps/Xmodem/crctab.h
vendored
0
Xmodem/main.c → deps/Xmodem/main.c
vendored
0
Xmodem/main.c → deps/Xmodem/main.c
vendored
0
Xmodem/send.c → deps/Xmodem/send.c
vendored
0
Xmodem/send.c → deps/Xmodem/send.c
vendored
0
Xmodem/utils.c → deps/Xmodem/utils.c
vendored
0
Xmodem/utils.c → deps/Xmodem/utils.c
vendored
0
Xmodem/xmodem.h → deps/Xmodem/xmodem.h
vendored
0
Xmodem/xmodem.h → deps/Xmodem/xmodem.h
vendored
0
Xmodem/zmodem.c → deps/Xmodem/zmodem.c
vendored
0
Xmodem/zmodem.c → deps/Xmodem/zmodem.c
vendored
0
Xmodem/zmodem.h → deps/Xmodem/zmodem.h
vendored
0
Xmodem/zmodem.h → deps/Xmodem/zmodem.h
vendored
0
Xmodem/zmutil.c → deps/Xmodem/zmutil.c
vendored
0
Xmodem/zmutil.c → deps/Xmodem/zmutil.c
vendored
0
jamlib/LICENSE → deps/jamlib/LICENSE
vendored
0
jamlib/LICENSE → deps/jamlib/LICENSE
vendored
0
jamlib/crc32.c → deps/jamlib/crc32.c
vendored
0
jamlib/crc32.c → deps/jamlib/crc32.c
vendored
0
jamlib/jam.h → deps/jamlib/jam.h
vendored
0
jamlib/jam.h → deps/jamlib/jam.h
vendored
0
jamlib/mbase.c → deps/jamlib/mbase.c
vendored
0
jamlib/mbase.c → deps/jamlib/mbase.c
vendored
7
deps/libb64-1.2/AUTHORS
vendored
Executable file
7
deps/libb64-1.2/AUTHORS
vendored
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
libb64: Base64 Encoding/Decoding Routines
|
||||||
|
======================================
|
||||||
|
|
||||||
|
Authors:
|
||||||
|
-------
|
||||||
|
|
||||||
|
Chris Venter chris.venter@gmail.com http://rocketpod.blogspot.com
|
85
deps/libb64-1.2/BENCHMARKS
vendored
Executable file
85
deps/libb64-1.2/BENCHMARKS
vendored
Executable file
@ -0,0 +1,85 @@
|
|||||||
|
-- Intro
|
||||||
|
|
||||||
|
Some people have expressed opinions about how
|
||||||
|
fast libb64's encoding and decoding routines
|
||||||
|
are, as compared to some other BASE64 packages
|
||||||
|
out there.
|
||||||
|
|
||||||
|
This document shows the result of a short and sweet
|
||||||
|
benchmark, which takes a large-ish file and
|
||||||
|
encodes/decodes it a number of times.
|
||||||
|
The winner is the executable that does this task the quickest.
|
||||||
|
|
||||||
|
-- Platform
|
||||||
|
|
||||||
|
The tests were all run on a Fujitsu-Siemens laptop,
|
||||||
|
with a Pentium M processor running at 2GHz, with
|
||||||
|
1GB of RAM, running Ubuntu 10.4.
|
||||||
|
|
||||||
|
-- Packages
|
||||||
|
|
||||||
|
The following BASE64 packages were used in this benchmark:
|
||||||
|
|
||||||
|
- libb64-1.2 (libb64-base64)
|
||||||
|
From libb64.sourceforge.net
|
||||||
|
Size of executable: 18808 bytes
|
||||||
|
Compiled with:
|
||||||
|
CFLAGS += -O3
|
||||||
|
BUFFERSIZE = 16777216
|
||||||
|
|
||||||
|
- base64-1.5 (fourmilab-base64)
|
||||||
|
From http://www.fourmilab.ch/webtools/base64/
|
||||||
|
Size of executable: 20261 bytes
|
||||||
|
Compiled with Default package settings
|
||||||
|
|
||||||
|
- coreutils 7.4-2ubuntu2 (coreutils-base64)
|
||||||
|
From http://www.gnu.org/software/coreutils/
|
||||||
|
Size of executable: 38488 bytes
|
||||||
|
Default binary distributed with Ubuntu 10.4
|
||||||
|
|
||||||
|
-- Input File
|
||||||
|
|
||||||
|
Using blender-2.49b-linux-glibc236-py25-i386.tar.bz2
|
||||||
|
from http://www.blender.org/download/get-blender/
|
||||||
|
Size: 18285329 bytes
|
||||||
|
(approx. 18MB)
|
||||||
|
|
||||||
|
-- Method
|
||||||
|
|
||||||
|
Encode and Decode the Input file 50 times in a loop,
|
||||||
|
using a simple shell script, and get the running time.
|
||||||
|
|
||||||
|
-- Results
|
||||||
|
|
||||||
|
$ time ./benchmark-libb64.sh
|
||||||
|
real 0m28.389s
|
||||||
|
user 0m14.077s
|
||||||
|
sys 0m12.309s
|
||||||
|
|
||||||
|
$ time ./benchmark-fourmilab.sh
|
||||||
|
real 1m43.160s
|
||||||
|
user 1m23.769s
|
||||||
|
sys 0m8.737s
|
||||||
|
|
||||||
|
$ time ./benchmark-coreutils.sh
|
||||||
|
real 0m36.288s
|
||||||
|
user 0m24.746s
|
||||||
|
sys 0m8.181s
|
||||||
|
|
||||||
|
28.389 for 18MB * 50
|
||||||
|
= 28.389 for 900
|
||||||
|
|
||||||
|
-- Conclusion
|
||||||
|
|
||||||
|
libb64 is the fastest encoder/decoder, and
|
||||||
|
has the smallest executable size.
|
||||||
|
|
||||||
|
On average it will encode and decode at roughly 31.7MB/second.
|
||||||
|
|
||||||
|
The closest "competitor" is base64 from GNU coreutils, which
|
||||||
|
reaches only 24.8MB/second.
|
||||||
|
|
||||||
|
--
|
||||||
|
14/06/2010
|
||||||
|
chris.venter@gmail.com
|
||||||
|
|
25
deps/libb64-1.2/CHANGELOG
vendored
Executable file
25
deps/libb64-1.2/CHANGELOG
vendored
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
libb64: Base64 Encoding/Decoding Routines
|
||||||
|
======================================
|
||||||
|
|
||||||
|
## Changelog ##
|
||||||
|
|
||||||
|
Version 1.2 Release
|
||||||
|
-------------------
|
||||||
|
Removed the b64dec, b64enc, encoder and decoder programs in favour of
|
||||||
|
a better example, called base64, which encodes and decodes
|
||||||
|
depending on its arguments.
|
||||||
|
|
||||||
|
Created a solution for Microsoft Visual Studio C++ Express 2010
|
||||||
|
edition, which simply builds the base64 example as a console application.
|
||||||
|
|
||||||
|
Version 1.1 Release
|
||||||
|
-------------------
|
||||||
|
Modified encode.h to (correctly) read from the iostream argument,
|
||||||
|
instead of std::cin.
|
||||||
|
Thanks to Peter K. Lee for the heads-up.
|
||||||
|
|
||||||
|
No API changes.
|
||||||
|
|
||||||
|
Version 1.0 Release
|
||||||
|
-------------------
|
||||||
|
The current content is the changeset.
|
44
deps/libb64-1.2/INSTALL
vendored
Executable file
44
deps/libb64-1.2/INSTALL
vendored
Executable file
@ -0,0 +1,44 @@
|
|||||||
|
libb64: Base64 Encoding/Decoding Routines
|
||||||
|
======================================
|
||||||
|
|
||||||
|
Requirements:
|
||||||
|
------------
|
||||||
|
This piece of software has minimal requirements.
|
||||||
|
|
||||||
|
I have tested it on the following systems:
|
||||||
|
|
||||||
|
- a Linux machine, with the following specs:
|
||||||
|
(this was the original development machine)
|
||||||
|
* FedoraCore 4
|
||||||
|
* kernel v. 2.6.11 (stock FC4 kernel)
|
||||||
|
* gcc version 4.0.1 20050727 (Red Hat 4.0.1-5)
|
||||||
|
* glibc-2.3.5-10
|
||||||
|
* make v. 3.80
|
||||||
|
* some arb version of makedepend
|
||||||
|
|
||||||
|
- Windows XP machine
|
||||||
|
* MSYS 1.0
|
||||||
|
* MinGW 5.1.4
|
||||||
|
* gcc version 3.4.5 (mingw-vista special r3)
|
||||||
|
|
||||||
|
- Windows XP machine (same as above)
|
||||||
|
* Microsoft Visual Studio 2010, Version 10.0.30319.1 RTMRel
|
||||||
|
|
||||||
|
Barring any serious screwups on my part, this code should compile and run sweetly
|
||||||
|
under Cygwin and other systems too. If you DO get it running under some weird arch/os setup,
|
||||||
|
send me a mail, please.
|
||||||
|
|
||||||
|
Compiling:
|
||||||
|
---------
|
||||||
|
There is no configure. It would be overkill for something so simple...
|
||||||
|
Run make in the root directory.
|
||||||
|
|
||||||
|
Installing:
|
||||||
|
----------
|
||||||
|
Since the current targets are a standalone executable and a static library
|
||||||
|
(fancy name for archive) with some headers, an install script has not been implemented yet.
|
||||||
|
Simply copy the executable into your path, and use it.
|
||||||
|
|
||||||
|
--
|
||||||
|
peace out
|
||||||
|
Chris
|
29
deps/libb64-1.2/LICENSE
vendored
Executable file
29
deps/libb64-1.2/LICENSE
vendored
Executable file
@ -0,0 +1,29 @@
|
|||||||
|
Copyright-Only Dedication (based on United States law)
|
||||||
|
or Public Domain Certification
|
||||||
|
|
||||||
|
The person or persons who have associated work with this document (the
|
||||||
|
"Dedicator" or "Certifier") hereby either (a) certifies that, to the best of
|
||||||
|
his knowledge, the work of authorship identified is in the public domain of the
|
||||||
|
country from which the work is published, or (b) hereby dedicates whatever
|
||||||
|
copyright the dedicators holds in the work of authorship identified below (the
|
||||||
|
"Work") to the public domain. A certifier, moreover, dedicates any copyright
|
||||||
|
interest he may have in the associated work, and for these purposes, is
|
||||||
|
described as a "dedicator" below.
|
||||||
|
|
||||||
|
A certifier has taken reasonable steps to verify the copyright status of this
|
||||||
|
work. Certifier recognizes that his good faith efforts may not shield him from
|
||||||
|
liability if in fact the work certified is not in the public domain.
|
||||||
|
|
||||||
|
Dedicator makes this dedication for the benefit of the public at large and to
|
||||||
|
the detriment of the Dedicator's heirs and successors. Dedicator intends this
|
||||||
|
dedication to be an overt act of relinquishment in perpetuity of all present
|
||||||
|
and future rights under copyright law, whether vested or contingent, in the
|
||||||
|
Work. Dedicator understands that such relinquishment of all rights includes
|
||||||
|
the relinquishment of all rights to enforce (by lawsuit or otherwise) those
|
||||||
|
copyrights in the Work.
|
||||||
|
|
||||||
|
Dedicator recognizes that, once placed in the public domain, the Work may be
|
||||||
|
freely reproduced, distributed, transmitted, used, modified, built upon, or
|
||||||
|
otherwise exploited by anyone for any purpose, commercial or non-commercial,
|
||||||
|
and in any way, including by methods that have not yet been invented or
|
||||||
|
conceived.
|
25
deps/libb64-1.2/Makefile
vendored
Executable file
25
deps/libb64-1.2/Makefile
vendored
Executable file
@ -0,0 +1,25 @@
|
|||||||
|
all: all_src all_base64
|
||||||
|
|
||||||
|
all_src:
|
||||||
|
$(MAKE) -C src
|
||||||
|
all_base64: all_src
|
||||||
|
$(MAKE) -C base64
|
||||||
|
|
||||||
|
clean: clean_src clean_base64 clean_include
|
||||||
|
rm -f *~ *.bak
|
||||||
|
|
||||||
|
clean_include:
|
||||||
|
rm -f include/b64/*~
|
||||||
|
|
||||||
|
clean_src:
|
||||||
|
$(MAKE) -C src clean;
|
||||||
|
clean_base64:
|
||||||
|
$(MAKE) -C base64 clean;
|
||||||
|
|
||||||
|
distclean: clean distclean_src distclean_base64
|
||||||
|
|
||||||
|
distclean_src:
|
||||||
|
$(MAKE) -C src distclean;
|
||||||
|
distclean_base64:
|
||||||
|
$(MAKE) -C base64 distclean;
|
||||||
|
|
138
deps/libb64-1.2/README
vendored
Executable file
138
deps/libb64-1.2/README
vendored
Executable file
@ -0,0 +1,138 @@
|
|||||||
|
b64: Base64 Encoding/Decoding Routines
|
||||||
|
======================================
|
||||||
|
|
||||||
|
Overview:
|
||||||
|
--------
|
||||||
|
libb64 is a library of ANSI C routines for fast encoding/decoding data into and
|
||||||
|
from a base64-encoded format. C++ wrappers are included, as well as the source
|
||||||
|
code for standalone encoding and decoding executables.
|
||||||
|
|
||||||
|
base64 consists of ASCII text, and is therefore a useful encoding for storing
|
||||||
|
binary data in a text file, such as xml, or sending binary data over text-only
|
||||||
|
email.
|
||||||
|
|
||||||
|
References:
|
||||||
|
----------
|
||||||
|
* Wikipedia article:
|
||||||
|
http://en.wikipedia.org/wiki/Base64
|
||||||
|
* base64, another implementation of a commandline en/decoder:
|
||||||
|
http://www.fourmilab.ch/webtools/base64/
|
||||||
|
|
||||||
|
Why?
|
||||||
|
---
|
||||||
|
I did this because I need an implementation of base64 encoding and decoding,
|
||||||
|
without any licensing problems. Most OS implementations are released under
|
||||||
|
either the GNU/GPL, or a BSD-variant, which is not what I require.
|
||||||
|
|
||||||
|
Also, the chance to actually use the co-routine implementation in code is rare,
|
||||||
|
and its use here is fitting. I couldn't pass up the chance.
|
||||||
|
For more information on this technique, see "Coroutines in C", by Simon Tatham,
|
||||||
|
which can be found online here:
|
||||||
|
http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
|
||||||
|
|
||||||
|
So then, under which license do I release this code? On to the next section...
|
||||||
|
|
||||||
|
License:
|
||||||
|
-------
|
||||||
|
This work is released under into the Public Domain.
|
||||||
|
It basically boils down to this: I put this work in the public domain, and you
|
||||||
|
can take it and do whatever you want with it.
|
||||||
|
|
||||||
|
An example of this "license" is the Creative Commons Public Domain License, a
|
||||||
|
copy of which can be found in the LICENSE file, and also online at
|
||||||
|
http://creativecommons.org/licenses/publicdomain/
|
||||||
|
|
||||||
|
Commandline Use:
|
||||||
|
---------------
|
||||||
|
There is a new executable available, it is simply called base64.
|
||||||
|
It can encode and decode files, as instructed by the user.
|
||||||
|
|
||||||
|
To encode a file:
|
||||||
|
$ ./base64 -e filea fileb
|
||||||
|
fileb will now be the base64-encoded version of filea.
|
||||||
|
|
||||||
|
To decode a file:
|
||||||
|
$ ./base64 -d fileb filec
|
||||||
|
filec will now be identical to filea.
|
||||||
|
|
||||||
|
Programming:
|
||||||
|
-----------
|
||||||
|
Some C++ wrappers are provided as well, so you don't have to get your hands
|
||||||
|
dirty. Encoding from standard input to standard output is as simple as
|
||||||
|
|
||||||
|
#include <b64/encode.h>
|
||||||
|
#include <iostream>
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
base64::encoder E;
|
||||||
|
E.encode(std::cin, std::cout);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Both standalone executables and a static library is provided in the package,
|
||||||
|
|
||||||
|
Implementation:
|
||||||
|
--------------
|
||||||
|
It is DAMN fast, if I may say so myself. The C code uses a little trick which
|
||||||
|
has been used to implement coroutines, of which one can say that this
|
||||||
|
implementation is an example.
|
||||||
|
|
||||||
|
(To see how the libb64 codebase compares with some other BASE64 implementations
|
||||||
|
available, see the BENCHMARKS file)
|
||||||
|
|
||||||
|
The trick involves the fact that a switch-statement may legally cross into
|
||||||
|
sub-blocks. A very thorough and enlightening essay on co-routines in C, using
|
||||||
|
this method, can be found in the above mentioned "Coroutines in C", by Simon
|
||||||
|
Tatham: http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
|
||||||
|
|
||||||
|
For example, an RLE decompressing routine, adapted from the article:
|
||||||
|
1 static int STATE = 0;
|
||||||
|
2 static int len, c;
|
||||||
|
3 switch (STATE)
|
||||||
|
4 {
|
||||||
|
5 while (1)
|
||||||
|
6 {
|
||||||
|
7 c = getchar();
|
||||||
|
8 if (c == EOF) return EOF;
|
||||||
|
9 if (c == 0xFF) {
|
||||||
|
10 len = getchar();
|
||||||
|
11 c = getchar();
|
||||||
|
12 while (len--)
|
||||||
|
13 {
|
||||||
|
14 STATE = 0;
|
||||||
|
15 return c;
|
||||||
|
16 case 0:
|
||||||
|
17 }
|
||||||
|
18 } else
|
||||||
|
19 STATE = 1;
|
||||||
|
20 return c;
|
||||||
|
21 case 1:
|
||||||
|
22 }
|
||||||
|
23 }
|
||||||
|
24 }
|
||||||
|
|
||||||
|
As can be seen from this example, a coroutine depends on a state variable,
|
||||||
|
which it sets directly before exiting (lines 14 and 119). The next time the
|
||||||
|
routine is entered, the switch moves control to the specific point directly
|
||||||
|
after the previous exit (lines 16 and 21).hands
|
||||||
|
|
||||||
|
(As an aside, in the mentioned article the combination of the top-level switch,
|
||||||
|
the various setting of the state, the return of a value, and the labelling of
|
||||||
|
the exit point is wrapped in #define macros, making the structure of the
|
||||||
|
routine even clearer.)
|
||||||
|
|
||||||
|
The obvious problem with any such routine is the static keyword.
|
||||||
|
Any static variables in a function spell doom for multithreaded applications.
|
||||||
|
Also, in situations where this coroutine is used by more than one other
|
||||||
|
coroutines, the consistency is disturbed.
|
||||||
|
|
||||||
|
What is needed is a structure for storing these variabled, which is passed to
|
||||||
|
the routine seperately. This obviously breaks the modularity of the function,
|
||||||
|
since now the caller has to worry about and care for the internal state of the
|
||||||
|
routine (the callee). This allows for a fast, multithreading-enabled
|
||||||
|
implementation, which may (obviously) be wrapped in a C++ object for ease of
|
||||||
|
use.
|
||||||
|
|
||||||
|
The base64 encoding and decoding functionality in this package is implemented
|
||||||
|
in exactly this way, providing both a high-speed high-maintanence C interface,
|
||||||
|
and a wrapped C++ which is low-maintanence and only slightly less performant.
|
0
deps/libb64-1.2/TODO
vendored
Executable file
0
deps/libb64-1.2/TODO
vendored
Executable file
56
deps/libb64-1.2/base64/Makefile
vendored
Executable file
56
deps/libb64-1.2/base64/Makefile
vendored
Executable file
@ -0,0 +1,56 @@
|
|||||||
|
BINARIES = base64
|
||||||
|
|
||||||
|
# Build flags (uncomment one)
|
||||||
|
#############################
|
||||||
|
# Release build flags
|
||||||
|
CFLAGS += -O3
|
||||||
|
#############################
|
||||||
|
# Debug build flags
|
||||||
|
#CFLAGS += -g
|
||||||
|
#############################
|
||||||
|
|
||||||
|
# select a buffersize
|
||||||
|
# a larger size should be faster, but takes more runtime memory
|
||||||
|
#BUFFERSIZE = 4096
|
||||||
|
#BUFFERSIZE = 65536
|
||||||
|
BUFFERSIZE = 16777216
|
||||||
|
|
||||||
|
SOURCES = base64.cc
|
||||||
|
|
||||||
|
TARGETS = $(BINARIES)
|
||||||
|
|
||||||
|
LINK.o = g++
|
||||||
|
|
||||||
|
CFLAGS += -Werror -pedantic
|
||||||
|
CFLAGS += -DBUFFERSIZE=$(BUFFERSIZE)
|
||||||
|
CFLAGS += -I../include
|
||||||
|
|
||||||
|
CXXFLAGS += $(CFLAGS)
|
||||||
|
|
||||||
|
vpath %.h ../include/b64
|
||||||
|
vpath %.a ../src
|
||||||
|
|
||||||
|
.PHONY : clean
|
||||||
|
|
||||||
|
all: $(TARGETS) #strip
|
||||||
|
|
||||||
|
base64: libb64.a
|
||||||
|
|
||||||
|
strip:
|
||||||
|
strip $(BINARIES) *.exe
|
||||||
|
|
||||||
|
clean: clean_VisualStudioProject
|
||||||
|
rm -f *.exe* *.o $(TARGETS) *.bak *~
|
||||||
|
clean_VisualStudioProject:
|
||||||
|
$(MAKE) -C VisualStudioProject clean
|
||||||
|
|
||||||
|
distclean: clean distclean_VisualStudioProject
|
||||||
|
rm -f depend
|
||||||
|
distclean_VisualStudioProject: clean_VisualStudioProject
|
||||||
|
$(MAKE) -C VisualStudioProject distclean
|
||||||
|
|
||||||
|
depend: $(SOURCES)
|
||||||
|
makedepend -f- $(CFLAGS) $(SOURCES) 2> /dev/null 1> depend
|
||||||
|
|
||||||
|
-include depend
|
||||||
|
|
11
deps/libb64-1.2/base64/VisualStudioProject/Makefile
vendored
Executable file
11
deps/libb64-1.2/base64/VisualStudioProject/Makefile
vendored
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
DEBRIS = base64.sdf base64.suo base64.vcxproj.user
|
||||||
|
|
||||||
|
all:
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf Debug Release
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f $(DEBRIS)
|
||||||
|
|
||||||
|
|
20
deps/libb64-1.2/base64/VisualStudioProject/base64.sln
vendored
Executable file
20
deps/libb64-1.2/base64/VisualStudioProject/base64.sln
vendored
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||||
|
# Visual C++ Express 2010
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "base64", "base64.vcxproj", "{0B094121-DC64-4D74-AFA0-750B83F800D0}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Win32 = Debug|Win32
|
||||||
|
Release|Win32 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{0B094121-DC64-4D74-AFA0-750B83F800D0}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{0B094121-DC64-4D74-AFA0-750B83F800D0}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{0B094121-DC64-4D74-AFA0-750B83F800D0}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{0B094121-DC64-4D74-AFA0-750B83F800D0}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
92
deps/libb64-1.2/base64/VisualStudioProject/base64.vcxproj
vendored
Executable file
92
deps/libb64-1.2/base64/VisualStudioProject/base64.vcxproj
vendored
Executable file
@ -0,0 +1,92 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{0B094121-DC64-4D74-AFA0-750B83F800D0}</ProjectGuid>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<RootNamespace>base64</RootNamespace>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<LinkIncremental>true</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>BUFFERSIZE=16777216;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>H:\builds\libb64\working.libb64\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<Optimization>MaxSpeed</Optimization>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<PreprocessorDefinitions>BUFFERSIZE=16777216;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>H:\builds\libb64\working.libb64\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\src\cdecode.c" />
|
||||||
|
<ClCompile Include="..\..\src\cencode.c" />
|
||||||
|
<ClCompile Include="..\base64.cc" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\..\include\b64\cdecode.h" />
|
||||||
|
<ClInclude Include="..\..\include\b64\cencode.h" />
|
||||||
|
<ClInclude Include="..\..\include\b64\decode.h" />
|
||||||
|
<ClInclude Include="..\..\include\b64\encode.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
36
deps/libb64-1.2/base64/VisualStudioProject/base64.vcxproj.filters
vendored
Executable file
36
deps/libb64-1.2/base64/VisualStudioProject/base64.vcxproj.filters
vendored
Executable file
@ -0,0 +1,36 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{12b9f2a2-b899-409a-a507-8cefe9c39b25}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{ce5598bd-67f3-430f-890b-cefa880e9405}</UniqueIdentifier>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\base64.cc">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\cencode.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\cdecode.c">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\..\include\b64\encode.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\include\b64\cdecode.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\include\b64\cencode.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="..\..\include\b64\decode.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
BIN
deps/libb64-1.2/base64/base64
vendored
Executable file
BIN
deps/libb64-1.2/base64/base64
vendored
Executable file
Binary file not shown.
94
deps/libb64-1.2/base64/base64.cc
vendored
Executable file
94
deps/libb64-1.2/base64/base64.cc
vendored
Executable file
@ -0,0 +1,94 @@
|
|||||||
|
/*
|
||||||
|
base64.cc - c++ source to a base64 reference encoder and decoder
|
||||||
|
|
||||||
|
This is part of the libb64 project, and has been placed in the public domain.
|
||||||
|
For details, see http://sourceforge.net/projects/libb64
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <b64/encode.h>
|
||||||
|
#include <b64/decode.h>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <fstream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
// Function which prints the usage of this executable
|
||||||
|
void usage()
|
||||||
|
{
|
||||||
|
std::cerr<< \
|
||||||
|
"base64: Encodes and Decodes files using base64\n" \
|
||||||
|
"Usage: base64 [-e|-d] [input] [output]\n" \
|
||||||
|
" Where [-e] will encode the input file into the output file,\n" \
|
||||||
|
" [-d] will decode the input file into the output file, and\n" \
|
||||||
|
" [input] and [output] are the input and output files, respectively.\n";
|
||||||
|
}
|
||||||
|
// Function which prints the usage of this executable, plus a short message
|
||||||
|
void usage(const std::string& message)
|
||||||
|
{
|
||||||
|
usage();
|
||||||
|
std::cerr<<"Incorrect invocation of base64:\n";
|
||||||
|
std::cerr<<message<<std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
// Quick check for valid arguments
|
||||||
|
if (argc == 1)
|
||||||
|
{
|
||||||
|
usage();
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
if (argc != 4)
|
||||||
|
{
|
||||||
|
usage("Wrong number of arguments!");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// So far so good; try to open the input file
|
||||||
|
std::string input = argv[2];
|
||||||
|
// Note that we have to open the input in binary mode.
|
||||||
|
// This is due to some operating systems not using binary mode by default.
|
||||||
|
// Since we will most likely be dealing with binary files when encoding, we
|
||||||
|
// have to be able to deal with zeros (and other invalid chars) in the input stream.
|
||||||
|
std::ifstream instream(input.c_str(), std::ios_base::in | std::ios_base::binary);
|
||||||
|
if (!instream.is_open())
|
||||||
|
{
|
||||||
|
usage("Could not open input file!");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now try to open the output file
|
||||||
|
std::string output = argv[3];
|
||||||
|
// Again, note that we have to open the ouput in binary mode.
|
||||||
|
// Similiarly, we will most likely need to deal with zeros in the output stream when we
|
||||||
|
// are decoding, and the output stream has to be able to use these invalid text chars.
|
||||||
|
std::ofstream outstream(output.c_str(), std::ios_base::out | std::ios_base::binary);
|
||||||
|
if (!outstream.is_open())
|
||||||
|
{
|
||||||
|
usage("Could not open output file!");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// determine whether we need to encode or decode:
|
||||||
|
std::string choice = argv[1];
|
||||||
|
if (choice == "-d")
|
||||||
|
{
|
||||||
|
base64::decoder D;
|
||||||
|
D.decode(instream, outstream);
|
||||||
|
}
|
||||||
|
else if (choice == "-e")
|
||||||
|
{
|
||||||
|
base64::encoder E;
|
||||||
|
E.encode(instream, outstream);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::cout<<"["<<choice<<"]"<<std::endl;
|
||||||
|
usage("Please specify -d or -e as first argument!");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
0
deps/libb64-1.2/base64/depend
vendored
Normal file
0
deps/libb64-1.2/base64/depend
vendored
Normal file
28
deps/libb64-1.2/include/b64/cdecode.h
vendored
Executable file
28
deps/libb64-1.2/include/b64/cdecode.h
vendored
Executable file
@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
cdecode.h - c header for a base64 decoding algorithm
|
||||||
|
|
||||||
|
This is part of the libb64 project, and has been placed in the public domain.
|
||||||
|
For details, see http://sourceforge.net/projects/libb64
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BASE64_CDECODE_H
|
||||||
|
#define BASE64_CDECODE_H
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
step_a, step_b, step_c, step_d
|
||||||
|
} base64_decodestep;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
base64_decodestep step;
|
||||||
|
char plainchar;
|
||||||
|
} base64_decodestate;
|
||||||
|
|
||||||
|
void base64_init_decodestate(base64_decodestate* state_in);
|
||||||
|
|
||||||
|
int base64_decode_value(char value_in);
|
||||||
|
|
||||||
|
int base64_decode_block(const char* code_in, const int length_in, char* plaintext_out, base64_decodestate* state_in);
|
||||||
|
|
||||||
|
#endif /* BASE64_CDECODE_H */
|
31
deps/libb64-1.2/include/b64/cencode.h
vendored
Executable file
31
deps/libb64-1.2/include/b64/cencode.h
vendored
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
cencode.h - c header for a base64 encoding algorithm
|
||||||
|
|
||||||
|
This is part of the libb64 project, and has been placed in the public domain.
|
||||||
|
For details, see http://sourceforge.net/projects/libb64
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BASE64_CENCODE_H
|
||||||
|
#define BASE64_CENCODE_H
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
step_A, step_B, step_C
|
||||||
|
} base64_encodestep;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
base64_encodestep step;
|
||||||
|
char result;
|
||||||
|
int stepcount;
|
||||||
|
} base64_encodestate;
|
||||||
|
|
||||||
|
void base64_init_encodestate(base64_encodestate* state_in);
|
||||||
|
|
||||||
|
char base64_encode_value(char value_in);
|
||||||
|
|
||||||
|
int base64_encode_block(const char* plaintext_in, int length_in, char* code_out, base64_encodestate* state_in);
|
||||||
|
|
||||||
|
int base64_encode_blockend(char* code_out, base64_encodestate* state_in);
|
||||||
|
|
||||||
|
#endif /* BASE64_CENCODE_H */
|
70
deps/libb64-1.2/include/b64/decode.h
vendored
Executable file
70
deps/libb64-1.2/include/b64/decode.h
vendored
Executable file
@ -0,0 +1,70 @@
|
|||||||
|
// :mode=c++:
|
||||||
|
/*
|
||||||
|
decode.h - c++ wrapper for a base64 decoding algorithm
|
||||||
|
|
||||||
|
This is part of the libb64 project, and has been placed in the public domain.
|
||||||
|
For details, see http://sourceforge.net/projects/libb64
|
||||||
|
*/
|
||||||
|
#ifndef BASE64_DECODE_H
|
||||||
|
#define BASE64_DECODE_H
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
namespace base64
|
||||||
|
{
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#include "cdecode.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
struct decoder
|
||||||
|
{
|
||||||
|
base64_decodestate _state;
|
||||||
|
int _buffersize;
|
||||||
|
|
||||||
|
decoder(int buffersize_in = BUFFERSIZE)
|
||||||
|
: _buffersize(buffersize_in)
|
||||||
|
{}
|
||||||
|
|
||||||
|
int decode(char value_in)
|
||||||
|
{
|
||||||
|
return base64_decode_value(value_in);
|
||||||
|
}
|
||||||
|
|
||||||
|
int decode(const char* code_in, const int length_in, char* plaintext_out)
|
||||||
|
{
|
||||||
|
return base64_decode_block(code_in, length_in, plaintext_out, &_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
void decode(std::istream& istream_in, std::ostream& ostream_in)
|
||||||
|
{
|
||||||
|
base64_init_decodestate(&_state);
|
||||||
|
//
|
||||||
|
const int N = _buffersize;
|
||||||
|
char* code = new char[N];
|
||||||
|
char* plaintext = new char[N];
|
||||||
|
int codelength;
|
||||||
|
int plainlength;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
istream_in.read((char*)code, N);
|
||||||
|
codelength = istream_in.gcount();
|
||||||
|
plainlength = decode(code, codelength, plaintext);
|
||||||
|
ostream_in.write((const char*)plaintext, plainlength);
|
||||||
|
}
|
||||||
|
while (istream_in.good() && codelength > 0);
|
||||||
|
//
|
||||||
|
base64_init_decodestate(&_state);
|
||||||
|
|
||||||
|
delete [] code;
|
||||||
|
delete [] plaintext;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace base64
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif // BASE64_DECODE_H
|
||||||
|
|
77
deps/libb64-1.2/include/b64/encode.h
vendored
Executable file
77
deps/libb64-1.2/include/b64/encode.h
vendored
Executable file
@ -0,0 +1,77 @@
|
|||||||
|
// :mode=c++:
|
||||||
|
/*
|
||||||
|
encode.h - c++ wrapper for a base64 encoding algorithm
|
||||||
|
|
||||||
|
This is part of the libb64 project, and has been placed in the public domain.
|
||||||
|
For details, see http://sourceforge.net/projects/libb64
|
||||||
|
*/
|
||||||
|
#ifndef BASE64_ENCODE_H
|
||||||
|
#define BASE64_ENCODE_H
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
namespace base64
|
||||||
|
{
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#include "cencode.h"
|
||||||
|
}
|
||||||
|
|
||||||
|
struct encoder
|
||||||
|
{
|
||||||
|
base64_encodestate _state;
|
||||||
|
int _buffersize;
|
||||||
|
|
||||||
|
encoder(int buffersize_in = BUFFERSIZE)
|
||||||
|
: _buffersize(buffersize_in)
|
||||||
|
{}
|
||||||
|
|
||||||
|
int encode(char value_in)
|
||||||
|
{
|
||||||
|
return base64_encode_value(value_in);
|
||||||
|
}
|
||||||
|
|
||||||
|
int encode(const char* code_in, const int length_in, char* plaintext_out)
|
||||||
|
{
|
||||||
|
return base64_encode_block(code_in, length_in, plaintext_out, &_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
int encode_end(char* plaintext_out)
|
||||||
|
{
|
||||||
|
return base64_encode_blockend(plaintext_out, &_state);
|
||||||
|
}
|
||||||
|
|
||||||
|
void encode(std::istream& istream_in, std::ostream& ostream_in)
|
||||||
|
{
|
||||||
|
base64_init_encodestate(&_state);
|
||||||
|
//
|
||||||
|
const int N = _buffersize;
|
||||||
|
char* plaintext = new char[N];
|
||||||
|
char* code = new char[2*N];
|
||||||
|
int plainlength;
|
||||||
|
int codelength;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
istream_in.read(plaintext, N);
|
||||||
|
plainlength = istream_in.gcount();
|
||||||
|
//
|
||||||
|
codelength = encode(plaintext, plainlength, code);
|
||||||
|
ostream_in.write(code, codelength);
|
||||||
|
}
|
||||||
|
while (istream_in.good() && plainlength > 0);
|
||||||
|
|
||||||
|
codelength = encode_end(code);
|
||||||
|
ostream_in.write(code, codelength);
|
||||||
|
//
|
||||||
|
base64_init_encodestate(&_state);
|
||||||
|
|
||||||
|
delete [] code;
|
||||||
|
delete [] plaintext;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace base64
|
||||||
|
|
||||||
|
#endif // BASE64_ENCODE_H
|
||||||
|
|
43
deps/libb64-1.2/src/Makefile
vendored
Executable file
43
deps/libb64-1.2/src/Makefile
vendored
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
LIBRARIES = libb64.a
|
||||||
|
|
||||||
|
# Build flags (uncomment one)
|
||||||
|
#############################
|
||||||
|
# Release build flags
|
||||||
|
CFLAGS += -O3
|
||||||
|
#############################
|
||||||
|
# Debug build flags
|
||||||
|
#CFLAGS += -g
|
||||||
|
#############################
|
||||||
|
|
||||||
|
SOURCES = cdecode.c cencode.c
|
||||||
|
|
||||||
|
TARGETS = $(LIBRARIES)
|
||||||
|
|
||||||
|
LINK.o = gcc
|
||||||
|
|
||||||
|
CFLAGS += -Werror -pedantic
|
||||||
|
CFLAGS += -I../include
|
||||||
|
|
||||||
|
vpath %.h ../include/b64
|
||||||
|
|
||||||
|
.PHONY : clean
|
||||||
|
|
||||||
|
all: $(TARGETS) #strip
|
||||||
|
|
||||||
|
libb64.a: cencode.o cdecode.o
|
||||||
|
$(AR) $(ARFLAGS) $@ $^
|
||||||
|
|
||||||
|
strip:
|
||||||
|
strip $(BINARIES) *.exe
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.exe* *.o $(TARGETS) *.bak *~
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f depend
|
||||||
|
|
||||||
|
depend: $(SOURCES)
|
||||||
|
makedepend -f- $(CFLAGS) $(SOURCES) 2> /dev/null 1> depend
|
||||||
|
|
||||||
|
-include depend
|
||||||
|
|
88
deps/libb64-1.2/src/cdecode.c
vendored
Executable file
88
deps/libb64-1.2/src/cdecode.c
vendored
Executable file
@ -0,0 +1,88 @@
|
|||||||
|
/*
|
||||||
|
cdecoder.c - c source to a base64 decoding algorithm implementation
|
||||||
|
|
||||||
|
This is part of the libb64 project, and has been placed in the public domain.
|
||||||
|
For details, see http://sourceforge.net/projects/libb64
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <b64/cdecode.h>
|
||||||
|
|
||||||
|
int base64_decode_value(char value_in)
|
||||||
|
{
|
||||||
|
static const char decoding[] = {62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-2,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51};
|
||||||
|
static const char decoding_size = sizeof(decoding);
|
||||||
|
value_in -= 43;
|
||||||
|
if (value_in < 0 || value_in > decoding_size) return -1;
|
||||||
|
return decoding[(int)value_in];
|
||||||
|
}
|
||||||
|
|
||||||
|
void base64_init_decodestate(base64_decodestate* state_in)
|
||||||
|
{
|
||||||
|
state_in->step = step_a;
|
||||||
|
state_in->plainchar = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int base64_decode_block(const char* code_in, const int length_in, char* plaintext_out, base64_decodestate* state_in)
|
||||||
|
{
|
||||||
|
const char* codechar = code_in;
|
||||||
|
char* plainchar = plaintext_out;
|
||||||
|
char fragment;
|
||||||
|
|
||||||
|
*plainchar = state_in->plainchar;
|
||||||
|
|
||||||
|
switch (state_in->step)
|
||||||
|
{
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
case step_a:
|
||||||
|
do {
|
||||||
|
if (codechar == code_in+length_in)
|
||||||
|
{
|
||||||
|
state_in->step = step_a;
|
||||||
|
state_in->plainchar = *plainchar;
|
||||||
|
return plainchar - plaintext_out;
|
||||||
|
}
|
||||||
|
fragment = (char)base64_decode_value(*codechar++);
|
||||||
|
} while (fragment < 0);
|
||||||
|
*plainchar = (fragment & 0x03f) << 2;
|
||||||
|
case step_b:
|
||||||
|
do {
|
||||||
|
if (codechar == code_in+length_in)
|
||||||
|
{
|
||||||
|
state_in->step = step_b;
|
||||||
|
state_in->plainchar = *plainchar;
|
||||||
|
return plainchar - plaintext_out;
|
||||||
|
}
|
||||||
|
fragment = (char)base64_decode_value(*codechar++);
|
||||||
|
} while (fragment < 0);
|
||||||
|
*plainchar++ |= (fragment & 0x030) >> 4;
|
||||||
|
*plainchar = (fragment & 0x00f) << 4;
|
||||||
|
case step_c:
|
||||||
|
do {
|
||||||
|
if (codechar == code_in+length_in)
|
||||||
|
{
|
||||||
|
state_in->step = step_c;
|
||||||
|
state_in->plainchar = *plainchar;
|
||||||
|
return plainchar - plaintext_out;
|
||||||
|
}
|
||||||
|
fragment = (char)base64_decode_value(*codechar++);
|
||||||
|
} while (fragment < 0);
|
||||||
|
*plainchar++ |= (fragment & 0x03c) >> 2;
|
||||||
|
*plainchar = (fragment & 0x003) << 6;
|
||||||
|
case step_d:
|
||||||
|
do {
|
||||||
|
if (codechar == code_in+length_in)
|
||||||
|
{
|
||||||
|
state_in->step = step_d;
|
||||||
|
state_in->plainchar = *plainchar;
|
||||||
|
return plainchar - plaintext_out;
|
||||||
|
}
|
||||||
|
fragment = (char)base64_decode_value(*codechar++);
|
||||||
|
} while (fragment < 0);
|
||||||
|
*plainchar++ |= (fragment & 0x03f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* control should not reach here */
|
||||||
|
return plainchar - plaintext_out;
|
||||||
|
}
|
||||||
|
|
109
deps/libb64-1.2/src/cencode.c
vendored
Executable file
109
deps/libb64-1.2/src/cencode.c
vendored
Executable file
@ -0,0 +1,109 @@
|
|||||||
|
/*
|
||||||
|
cencoder.c - c source to a base64 encoding algorithm implementation
|
||||||
|
|
||||||
|
This is part of the libb64 project, and has been placed in the public domain.
|
||||||
|
For details, see http://sourceforge.net/projects/libb64
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <b64/cencode.h>
|
||||||
|
|
||||||
|
const int CHARS_PER_LINE = 72;
|
||||||
|
|
||||||
|
void base64_init_encodestate(base64_encodestate* state_in)
|
||||||
|
{
|
||||||
|
state_in->step = step_A;
|
||||||
|
state_in->result = 0;
|
||||||
|
state_in->stepcount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
char base64_encode_value(char value_in)
|
||||||
|
{
|
||||||
|
static const char* encoding = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
||||||
|
if (value_in > 63) return '=';
|
||||||
|
return encoding[(int)value_in];
|
||||||
|
}
|
||||||
|
|
||||||
|
int base64_encode_block(const char* plaintext_in, int length_in, char* code_out, base64_encodestate* state_in)
|
||||||
|
{
|
||||||
|
const char* plainchar = plaintext_in;
|
||||||
|
const char* const plaintextend = plaintext_in + length_in;
|
||||||
|
char* codechar = code_out;
|
||||||
|
char result;
|
||||||
|
char fragment;
|
||||||
|
|
||||||
|
result = state_in->result;
|
||||||
|
|
||||||
|
switch (state_in->step)
|
||||||
|
{
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
case step_A:
|
||||||
|
if (plainchar == plaintextend)
|
||||||
|
{
|
||||||
|
state_in->result = result;
|
||||||
|
state_in->step = step_A;
|
||||||
|
return codechar - code_out;
|
||||||
|
}
|
||||||
|
fragment = *plainchar++;
|
||||||
|
result = (fragment & 0x0fc) >> 2;
|
||||||
|
*codechar++ = base64_encode_value(result);
|
||||||
|
result = (fragment & 0x003) << 4;
|
||||||
|
case step_B:
|
||||||
|
if (plainchar == plaintextend)
|
||||||
|
{
|
||||||
|
state_in->result = result;
|
||||||
|
state_in->step = step_B;
|
||||||
|
return codechar - code_out;
|
||||||
|
}
|
||||||
|
fragment = *plainchar++;
|
||||||
|
result |= (fragment & 0x0f0) >> 4;
|
||||||
|
*codechar++ = base64_encode_value(result);
|
||||||
|
result = (fragment & 0x00f) << 2;
|
||||||
|
case step_C:
|
||||||
|
if (plainchar == plaintextend)
|
||||||
|
{
|
||||||
|
state_in->result = result;
|
||||||
|
state_in->step = step_C;
|
||||||
|
return codechar - code_out;
|
||||||
|
}
|
||||||
|
fragment = *plainchar++;
|
||||||
|
result |= (fragment & 0x0c0) >> 6;
|
||||||
|
*codechar++ = base64_encode_value(result);
|
||||||
|
result = (fragment & 0x03f) >> 0;
|
||||||
|
*codechar++ = base64_encode_value(result);
|
||||||
|
|
||||||
|
++(state_in->stepcount);
|
||||||
|
if (state_in->stepcount == CHARS_PER_LINE/4)
|
||||||
|
{
|
||||||
|
*codechar++ = '\n';
|
||||||
|
state_in->stepcount = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* control should not reach here */
|
||||||
|
return codechar - code_out;
|
||||||
|
}
|
||||||
|
|
||||||
|
int base64_encode_blockend(char* code_out, base64_encodestate* state_in)
|
||||||
|
{
|
||||||
|
char* codechar = code_out;
|
||||||
|
|
||||||
|
switch (state_in->step)
|
||||||
|
{
|
||||||
|
case step_B:
|
||||||
|
*codechar++ = base64_encode_value(state_in->result);
|
||||||
|
*codechar++ = '=';
|
||||||
|
*codechar++ = '=';
|
||||||
|
break;
|
||||||
|
case step_C:
|
||||||
|
*codechar++ = base64_encode_value(state_in->result);
|
||||||
|
*codechar++ = '=';
|
||||||
|
break;
|
||||||
|
case step_A:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*codechar++ = '\n';
|
||||||
|
|
||||||
|
return codechar - code_out;
|
||||||
|
}
|
||||||
|
|
0
deps/libb64-1.2/src/depend
vendored
Normal file
0
deps/libb64-1.2/src/depend
vendored
Normal file
0
lua/Makefile → deps/lua/Makefile
vendored
0
lua/Makefile → deps/lua/Makefile
vendored
0
lua/lapi.c → deps/lua/lapi.c
vendored
0
lua/lapi.c → deps/lua/lapi.c
vendored
0
lua/lapi.h → deps/lua/lapi.h
vendored
0
lua/lapi.h → deps/lua/lapi.h
vendored
0
lua/lauxlib.c → deps/lua/lauxlib.c
vendored
0
lua/lauxlib.c → deps/lua/lauxlib.c
vendored
0
lua/lauxlib.h → deps/lua/lauxlib.h
vendored
0
lua/lauxlib.h → deps/lua/lauxlib.h
vendored
0
lua/lbaselib.c → deps/lua/lbaselib.c
vendored
0
lua/lbaselib.c → deps/lua/lbaselib.c
vendored
0
lua/lbitlib.c → deps/lua/lbitlib.c
vendored
0
lua/lbitlib.c → deps/lua/lbitlib.c
vendored
0
lua/lcode.c → deps/lua/lcode.c
vendored
0
lua/lcode.c → deps/lua/lcode.c
vendored
0
lua/lcode.h → deps/lua/lcode.h
vendored
0
lua/lcode.h → deps/lua/lcode.h
vendored
0
lua/lcorolib.c → deps/lua/lcorolib.c
vendored
0
lua/lcorolib.c → deps/lua/lcorolib.c
vendored
0
lua/lctype.c → deps/lua/lctype.c
vendored
0
lua/lctype.c → deps/lua/lctype.c
vendored
0
lua/lctype.h → deps/lua/lctype.h
vendored
0
lua/lctype.h → deps/lua/lctype.h
vendored
0
lua/ldblib.c → deps/lua/ldblib.c
vendored
0
lua/ldblib.c → deps/lua/ldblib.c
vendored
0
lua/ldebug.c → deps/lua/ldebug.c
vendored
0
lua/ldebug.c → deps/lua/ldebug.c
vendored
0
lua/ldebug.h → deps/lua/ldebug.h
vendored
0
lua/ldebug.h → deps/lua/ldebug.h
vendored
0
lua/ldo.c → deps/lua/ldo.c
vendored
0
lua/ldo.c → deps/lua/ldo.c
vendored
0
lua/ldo.h → deps/lua/ldo.h
vendored
0
lua/ldo.h → deps/lua/ldo.h
vendored
0
lua/ldump.c → deps/lua/ldump.c
vendored
0
lua/ldump.c → deps/lua/ldump.c
vendored
0
lua/lfunc.c → deps/lua/lfunc.c
vendored
0
lua/lfunc.c → deps/lua/lfunc.c
vendored
0
lua/lfunc.h → deps/lua/lfunc.h
vendored
0
lua/lfunc.h → deps/lua/lfunc.h
vendored
0
lua/lgc.c → deps/lua/lgc.c
vendored
0
lua/lgc.c → deps/lua/lgc.c
vendored
0
lua/lgc.h → deps/lua/lgc.h
vendored
0
lua/lgc.h → deps/lua/lgc.h
vendored
0
lua/linit.c → deps/lua/linit.c
vendored
0
lua/linit.c → deps/lua/linit.c
vendored
0
lua/liolib.c → deps/lua/liolib.c
vendored
0
lua/liolib.c → deps/lua/liolib.c
vendored
0
lua/llex.c → deps/lua/llex.c
vendored
0
lua/llex.c → deps/lua/llex.c
vendored
0
lua/llex.h → deps/lua/llex.h
vendored
0
lua/llex.h → deps/lua/llex.h
vendored
0
lua/llimits.h → deps/lua/llimits.h
vendored
0
lua/llimits.h → deps/lua/llimits.h
vendored
0
lua/lmathlib.c → deps/lua/lmathlib.c
vendored
0
lua/lmathlib.c → deps/lua/lmathlib.c
vendored
0
lua/lmem.c → deps/lua/lmem.c
vendored
0
lua/lmem.c → deps/lua/lmem.c
vendored
0
lua/lmem.h → deps/lua/lmem.h
vendored
0
lua/lmem.h → deps/lua/lmem.h
vendored
0
lua/loadlib.c → deps/lua/loadlib.c
vendored
0
lua/loadlib.c → deps/lua/loadlib.c
vendored
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user