1(module help-startup '#%kernel
2  (#%provide get-linklet
3             get-version-comparisons)
4
5  (define-values (get-lines)
6    (lambda (in)
7      (let-values ([(l) (read-line in 'any)])
8        (if (eof-object? l)
9            null
10            (cons l (get-lines in))))))
11
12  (define-values (get-linklet)
13    (lambda (src)
14      (read
15       (open-input-string
16        (apply
17         string-append
18         (map (lambda (l)
19                (regexp-replace* #rx"\\\\(.)"
20                                 (substring l 1 (sub1 (string-length l)))
21                                 "\\1"))
22              (reverse (cdr (reverse (cddr (call-with-input-file src get-lines)))))))))))
23
24  (define-values (get-version-comparisons)
25    (lambda (vers)
26      (call-with-input-file
27       vers
28       (lambda (in)
29         (letrec-values ([(get-version-comparisons)
30                          (lambda ()
31                            (let-values ([(line) (read-line in 'any)])
32                              (if (eof-object? line)
33                                  ""
34                                  (let-values ([(m) (regexp-match #rx"^#define (MZSCHEME_VERSION_[A-Z]) ([0-9]+)"
35                                                                  line)])
36                                    (if m
37                                        (string-append " || (" (cadr m) " != " (caddr m) ")"
38                                                       (get-version-comparisons))
39                                        (get-version-comparisons))))))])
40           (get-version-comparisons)))))))
41