1
0
mirror of https://github.com/gophernicus/gophernicus.git synced 2024-06-02 06:11:10 +00:00

Filetypes2 (#57)

Re-do filetypes system.

By hb9nks.
This commit is contained in:
Yargo 2020-01-20 22:36:02 +00:00 committed by fosslinux
parent e2856aadf3
commit 87362cd316
7 changed files with 63 additions and 26 deletions

1
.gitignore vendored
View File

@ -3,6 +3,7 @@
#
src/*.o
src/files.h
src/filetypes.h
src/functions.h
README
README.options

View File

@ -181,3 +181,4 @@ on Github and make a pull request!
| Gentoo | up to date |
| Alpine Linux | Edge, 3.9 |
| FreeBSD | 12.0 |
| Darwin (Mac) | OSX 10.7 |

View File

@ -5,7 +5,7 @@ VERSION = 3.1
CODENAME = Dungeon Edition
SOURCES = src/$(NAME).c src/file.c src/menu.c src/string.c src/platform.c src/session.c src/options.c
HEADERS = src/functions.h src/files.h
HEADERS = src/functions.h src/files.h src/filetypes.h
OBJECTS = $(SOURCES:.c=.o)
README = README.md
DOCS = LICENSE README.md INSTALL.md changelog README.Gophermap gophertag
@ -25,7 +25,9 @@ MAP = gophermap
INETD = /etc/inetd.conf
XINETD = /etc/xinetd.d
INETLIN = "gopher stream tcp nowait nobody $(SBINDIR)/$(BINARY) $(BINARY) -h `hostname`"
# get OPTIONS line from gophernicus.env and use that also for inetd
INETOPT = `grep '^OPTIONS=' $(NAME).env | tail -n 1 | sed -e 's/OPTIONS="*//;s/"*$$//'`
INETLIN = "gopher stream tcp nowait nobody $(SBINDIR)/$(BINARY) $(BINARY) $(INETOPT)"
INETPID = /var/run/inetd.pid
LAUNCHD = /Library/LaunchDaemons
PLIST = org.$(NAME).server.plist
@ -74,6 +76,9 @@ src/functions.h:
sed -e "s/ =.*$$//" -e "s/ *$$/;/" >> $@
@echo
src/filetypes.h: src/filetypes.conf
sh src/filetypes.sh < src/filetypes.conf > $@
src/bin2c: src/bin2c.c
$(CC) src/bin2c.c -o $@

View File

@ -6,5 +6,5 @@
# Example:
# OPTIONS="-h full.hostname -D \"I find your lack of gopher disturbing.\""
#
# Uncomment and add your options here:
#OPTIONS=""
# modify and set your options here:
OPTIONS="-h localhost -nv"

29
src/filetypes.conf Normal file
View File

@ -0,0 +1,29 @@
# This file contains definitions of file types which will be created
# during compile time as filetypes.h and included in gophernicus.h.
# If no definitions are found here, filetypes.h will be empty.
# You should keep the defaults, though!
# The syntax is very simple: Each line consists of one character,
# representing a gopher file type, followed by file extensions
# (without dots) of files to be handled as that gopher type.
# Fields must be separated by TAB or SPC.
# Empty lines and lines starting with a lone '#' are ignored.
# (Do not use lines with several '###...' though! Stupid script!)
# No more than MAX_FILETYPES (defined in gophernicus.h) extensions
# should be listed here (that's by default 1000 and should suffice)!
# defaults as included in gophernicus.h until version 3.0:
0 txt pl py sh tcl c cpp h log conf php php3
1 map menu
4 hqx
5 Z gz tgz tar zip bz2 rar sea
7 q qry
9 iso so o rtf ttf bin
c ics ical
g gif
h html htm xhtml css swf rdf rss xml
I jpg jpeg png bmp svg tif tiff ico xbm xpm pcx
M mbox
d pdf ps doc ppt xls xlsx docx pptx
s mp3 wav mid wma flac ogg aiff aac
; avi mp4 mpg mov qt asf mpv m4v webm ogv

21
src/filetypes.sh Normal file
View File

@ -0,0 +1,21 @@
#!/bin/sh
# script for conversion of filetypes.conf into filetypes.h
# (called by Makefile before compilation)
# (2020-1-16 // HB9KNS)
cat <<EOH
/* $outp autogenerated on `date -u` by $0 */
#define FILETYPES \\
EOH
# slurp $inpt and get gopher type and list of extensions
while read gtype exts
do if ! test "$gtype" = "" -o "$gtype" = "#"
# process extensions, removing trailing SPC,
# prepending '"' and appending '","gophertype",' to each,
# and prepending TAB and appending ' \'
then echo $exts | sed -e "s/\([^ ][^ ]*\) */\"\1\",\"$gtype\",/g;s/^/ /;s/\$/ \\\\/"
fi
done
cat <<EOF
NULL, NULL
EOF

View File

@ -278,7 +278,7 @@ size_t strlcat(char *dst, const char *src, size_t siz);
/* Sizes & maximums */
#define BUFSIZE 1024 /* Default size for string buffers */
#define MAX_HIDDEN 32 /* Maximum number of hidden files */
#define MAX_FILETYPES 128 /* Maximum number of suffix to filetype mappings */
#define MAX_FILETYPES 1024 /* Maximum number of suffix to filetype mappings */
#define MAX_FILTERS 16 /* Maximum number of file filters */
#define MAX_SDIRENT 1024 /* Maximum number of files per directory to handle */
#define MAX_REWRITE 32 /* Maximum number of selector rewrite options */
@ -414,27 +414,6 @@ typedef struct {
time_t mtime;
} sdirent;
/* File suffix to gopher filetype mappings */
#define FILETYPES \
"txt","0","pl","0","py","0","sh","0","tcl","0","c","0","cpp","0", "h","0","log","0", \
"conf","0","php","0","php3","0", \
"map","1","menu","1", \
"hqx","4", \
"Z","5","gz","5","tgz","5","tar","5","zip","5","bz2","5","rar","5","sea","5", \
"q","7","qry","7", \
"iso","9","so","9","o","9","rtf","9","ttf","9","bin","9", \
"ics","c","ical","c", \
"gif","g", \
"html","h","htm","h","xhtml","h","css","h","swf","h","rdf","h","rss","h","xml","h", \
"jpg","I","jpeg","I","png","I","bmp","I","svg","I","tif","I","tiff","I", \
"ico","I","xbm","I","xpm","I","pcx","I", \
"mbox","M", \
"pdf","d","ps","d","doc","d","ppt","d","xls","d","xlsx","d","docx","d","pptx","d", \
"mp3","s","wav","s","mid","s","wma","s","flac","s","ogg","s","aiff","s","aac","s", \
"avi",";","mp4",";","mpg",";","mov",";","qt",";","asf",";","mpv",";","m4v",";","webm",";","ogv",";", \
NULL, NULL
/*
* Useful macros
*/
@ -452,5 +431,6 @@ typedef struct {
*/
#include "functions.h"
#include "files.h"
#include "filetypes.h"
#endif