Megatest

Diff
Login

Differences From Artifact [5d37256fc5]:

To Artifact [0b5707be89]:


18
19
20
21
22
23
24
25

26
27
28
29
30
31

32
33
34
35
36
37
38
18
19
20
21
22
23
24

25






26
27
28
29
30
31
32
33







-
+
-
-
-
-
-
-
+







(use sqlite3 srfi-1 posix regex regex-case srfi-69 csv-xml s11n md5 message-digest base64)
(import (prefix sqlite3 sqlite3:))
(import (prefix base64 base64:))

(declare (unit sdb))

;; 
(define (sdb:open #!key (fname #f)) ;;  (conc *toppath* "/megatest.db") (car *configinfo*)))
(define (sdb:open fname)
  (if (not *toppath*)
      (if (not (setup-for-run))
	  (begin
	    (debug:print 0 "ERROR: Attempted to open db when not in megatest area. Exiting.")
	    (exit))))
  (let* ((dbpath    (conc *toppath* "/db/" (if fname fname "sdb.db"))) ;; fname)
  (let* ((dbpath    fname)
	 (dbexists  (let ((fe (file-exists? dbpath)))
		      (if fe 
			  fe
			  (begin
			    (create-directory (conc *toppath* "/db") #t)
			    #f))))
	 (sdb        (sqlite3:open-database dbpath))
75
76
77
78
79
80
81
82
83


84
85
86
87

88
89
90
91
92
93
94
70
71
72
73
74
75
76


77
78
79
80
81

82
83
84
85
86
87
88
89







-
-
+
+



-
+







	   (hash-table-set! id-cache id str))
	 sdb
	 "SELECT str FROM strs WHERE id=?;" id))
    str))

;; Numbers get passed though in both directions
;;
(define (make-sdb:qry #!key (fname #f))
  (let ((sdb    #f) ;; (sdb:open fname: fname))
(define (make-sdb:qry fname)
  (let ((sdb    #f)
	(scache (make-hash-table))
	(icache (make-hash-table)))
    (lambda (cmd var)
      (if (not sdb)(set! sdb (sdb:open fname: fname)))
      (if (not sdb)(set! sdb (sdb:open fname)))
      (case cmd
	((finalize) (if sdb
			(begin
			  (sqlite3:finalize! sdb)
			  (set! sdb #f))))
	((getid)     (let ((id (if (or (number? var)
				       (string->number var))