Overview
Comment: | Porting mutils.scm to chicken 5, wip |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | chicken-5 |
Files: | files | file ages | folders |
SHA1: |
21bfa4f2392210958628f106250d7ce6 |
User & Date: | matt on 2024-09-26 02:11:26 |
Other Links: | branch diff | manifest | tags |
Context
2024-09-26
| ||
02:11 | Porting mutils.scm to chicken 5, wip Leaf check-in: 21bfa4f239 user: matt tags: chicken-5 | |
02:10 | Ported adjutant.scm to chicken 5 check-in: 1597d0801e user: matt tags: trunk | |
Changes
Modified mutils/mutils.scm from [9fa9e34972] to [8c48eb6edc].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ;; Copyright 2006-2011, Matthew Welland. ;; ;; This program is made available under the GNU GPL version 2.0 or ;; greater. See the accompanying file COPYING for details. ;; ;; This program is distributed WITHOUT ANY WARRANTY; without even the ;; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ;; PURPOSE. ;; This is from the perl world, a hash of hashes is a super easy way to keep a handle on ;; lots of disparate data ;; (module mutils * | > > > > > > > > > > > | > > | > > > > > > > > > > > > > > > > > > > > | | | < < | < < | > | | 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 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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | ;; Copyright 2006-2011, Matthew Welland. ;; ;; This program is made available under the GNU GPL version 2.0 or ;; greater. See the accompanying file COPYING for details. ;; ;; This program is distributed WITHOUT ANY WARRANTY; without even the ;; implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ;; PURPOSE. ;; This is from the perl world, a hash of hashes is a super easy way to keep a handle on ;; lots of disparate data ;; (cond-expand (chicken-4 (use sheme chicken)) (chicken-5 (import scheme chicken.base))) (module mutils * (import scheme) (cond-expand (chicken-4 (import chicken scheme) (use chicken) (import posix data-structures ports extras) (define pseudo-random-integer random) (define file-writable? file-write-access?)) (chicken-5 (import scheme chicken.base chicken.file chicken.process-context chicken.process chicken.port chicken.io system-information chicken.string chicken.time chicken.condition chicken.random ))) (import srfi-1 ;; srfi-13 srfi-69 regex matchable sparse-vectors ) (define (mutils:hierhash-ref hh . keys) (if (null? keys) #f (let loop ((ht hh) (key (car keys)) (tail (cdr keys))) |
︙ | ︙ | |||
88 89 90 91 92 93 94 | (if (eof-object? l) (reverse res) (if (or (string-match comment l) (string-match blank l)) (loop (read-line fh) res) (loop (read-line fh) (cons l res))))))) | < < | 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | (if (eof-object? l) (reverse res) (if (or (string-match comment l) (string-match blank l)) (loop (read-line fh) res) (loop (read-line fh) (cons l res))))))) ;; this is a simple two dimensional sparse array ;; ONLY TWO DIMENSIONS!!! SEE ARRAY-LIB IF YOUR NEEDS ARE GREATER!! ;; (define (mutils:make-sparse-array) (let ((a (make-sparse-vector))) (sparse-vector-set! a 0 (make-sparse-vector)) |
︙ | ︙ | |||
187 188 189 190 191 192 193 | (apply mutils:hier-list-get @hierlist @path)))) ;;====================================================================== ;; Other utils ;;====================================================================== (define (check-write-create fpath) | | | | 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 | (apply mutils:hier-list-get @hierlist @path)))) ;;====================================================================== ;; Other utils ;;====================================================================== (define (check-write-create fpath) (and (file-writable? fpath) (let ((fname (conc fpath "/.junk-" (current-seconds) "-" (pseudo-random-integer 10000)))) ;;(print "trying to create/remove " fname) (handle-exceptions exn #f (begin (with-output-to-file fname (lambda () |
︙ | ︙ |