# This script is intended as main script for packnl embedding, it # dispatches to the command of the first argument. (context 'MAIN:SITE) (define (set-int K V) (set K (int V 0 10))) (define (set-ints K V) (map (curry set-int K) (clean empty? (parse V "\\s*,?\\s*" 0)))) (define (set-list K V) (map (curry set K) (clean empty? (parse V "\\s*,?\\s*" 0)))) (constant 'FILE "hourglass.conf" 'KEYS '( ("libc" set) ("listener.ports" set-ints) ("listener.ip" set) ("listener.activity.dir" set) ("control.action" set) ("control.dat" set) ("control.net" set) ("control.extra.dat" set) ("control.usage.dat" set) ("control.usage.tmp" set) ("wui.port" set-int) ("wui.roles" set) ("wui.passwd" set) ) ) (define (setting LINE) (when (regex "^\\s([^;#][^=]*)=(.*)" LINE 0) (let ((KV (map trim (list $1 $2)))) (if (lookup (KV 0) KEYS) (apply $it (list (sym (KV 0)) (KV 1))))))) (map setting (parse (or (read-file FILE) "") "\n")) #################### (context MAIN) (if (exists file? (list (main-args 1) (string (main-args 1) ".lsp"))) (load $it) (write-line 2 (string "Unknown command " (main-args 1)))) (exit 0)