Index: Makefile ================================================================== --- Makefile +++ Makefile @@ -408,12 +408,12 @@ fi if csi -ne '(use postgresql)';then \ echo "(use postgresql)(hash-table-set! *available-db* 'postgresql #t)" >> altdb.scm;\ fi -portlogger-example : portlogger-example.scm api.o archive.o client.o common.o configf.o dashboard-tests.o dashboard-context-menu.o db.o dcommon.o ezsteps.o filedb.o genexample.o gutils.o http-transport.o items.o keys.o launch.o lock-queue.o margs.o megatest-version.o mt.o ods.o portlogger.o process.o rmt.o runconfig.o runs.o sdb.o server.o synchash.o tasks.o tdb.o tests.o tree.o - csc $(CSCOPTS) portlogger-example.scm api.o archive.o client.o common.o configf.o dashboard-tests.o dashboard-context-menu.o db.o dcommon.o ezsteps.o filedb.o genexample.o gutils.o http-transport.o items.o keys.o launch.o lock-queue.o margs.o megatest-version.o mt.o ods.o portlogger.o process.o rmt.o runconfig.o runs.o sdb.o server.o synchash.o tasks.o tdb.o tests.o tree.o +portlogger-example : portlogger-example.scm portlogger.o + csc $(CSCOPTS) portlogger-example.scm portlogger.o # create a pdf dot graphviz diagram from notations in rmt.scm rmt.pdf : rmt.scm grep ';;DOT' rmt.scm | sed -e 's/.*;;DOT //' > rmt.dot;dot -Tpdf rmt.dot -o rmt.pdf Index: megatest.scm ================================================================== --- megatest.scm +++ megatest.scm @@ -2176,10 +2176,11 @@ (set! *db* dbstruct) (import extras) ;; might not be needed ;; (import csi) (import readline) (import apropos) + (import portlogger) ;; (import (prefix sqlite3 sqlite3:)) ;; doesn't work ... (if *use-new-readline* (begin (install-history-file (get-environment-variable "HOME") ".megatest_history") ;; [homedir] [filename] [nlines]) Index: portlogger-example.scm ================================================================== --- portlogger-example.scm +++ portlogger-example.scm @@ -15,7 +15,15 @@ ;; You should have received a copy of the GNU General Public License ;; along with Megatest. If not, see . (declare (uses portlogger)) +(import portlogger) +(use trace (prefix sqlite3 sqlite3:)) +(trace + portlogger:open-db + portlogger:take-port + portlogger:open-run-close + sqlite3:execute + ) (print (apply portlogger:main (cdr (argv)))) Index: portlogger.scm ================================================================== --- portlogger.scm +++ portlogger.scm @@ -34,30 +34,33 @@ portlogger:set-failed portlogger:is-port-in-use portlogger:main ) -(import scheme posix chicken data-structures) +(import scheme posix chicken data-structures ports) (require-extension (srfi 18) extras tcp s11n) -(import srfi-1 posix srfi-69 hostinfo dot-locking z3 regex) -(import (prefix sqlite3 sqlite3:)) -(import (prefix mtconfigf configf:)) +(use srfi-1 posix srfi-69 hostinfo dot-locking z3 regex) +(use (prefix sqlite3 sqlite3:)) +(use (prefix mtconfigf configf:)) ;; lsof -i (define *configdat* #f) (define (portlogger:set-configdat! cfgdat) (set! *configdat* cfgdat)) -(define (debug:print . params) - (apply print params)) +(define (debug:print level port . params) + (with-output-to-port + port + (lambda ()(apply print params)))) (define debug:print-error debug:print) +(define *default-log-port* (current-error-port)) + (define (portlogger:set-printers! pdebug pdebugerr) (set! debug:print pdebug) (set! debug:print-error pdebugerr)) -(define *default-log-port* (current-error-port)) (define (portlogger:set-default-log-port! port) (set! *default-log-port* port)) (define (portlogger:open-db fname) (let* ((avail #t) ;; for now - assume wait on journal not needed (tasks:wait-on-journal fname 5 remove: #t)) ;; wait up to about 10 seconds for the journal to go away @@ -69,11 +72,11 @@ (sqlite3:open-database fname)))) (handler (sqlite3:make-busy-timeout 136000)) (canwrite (file-write-access? fname))) (sqlite3:set-busy-handler! db handler) (sqlite3:execute db "PRAGMA synchronous = 0;") - (sqlite3:execute + (sqlite3:execute db "CREATE TABLE IF NOT EXISTS ports ( port INTEGER PRIMARY KEY, state TEXT DEFAULT 'not-used', fail_count INTEGER DEFAULT 0, @@ -193,11 +196,11 @@ (let-values (((inp oup pid) (process "netstat" (list "-tulpn" )))) (let loop ((inl (read-line inp))) (if (not (eof-object? inl)) (begin - (if (string-search (regexp (conc ":" port-num)) inl) + (if (string-search (regexp (conc ":" port-num "\\s+")) inl) #t (loop (read-line inp)))))))) ;;====================================================================== ;; MAIN @@ -224,11 +227,12 @@ (state (caddr args))) (portlogger:set-port db (if (number? port) port (string->number port)) state) state)) - ((failed)(portlogger:set-failed db (string->number (cadr args))) 'failed))))) + ((failed)(portlogger:set-failed db (string->number (cadr args))) 'failed) + (else "nosuchcommand"))))) (sqlite3:finalize! db) result)) ;; (print (apply portlogger:main (cdr (argv)))) )