File: matching-platform.rkt

package info (click to toggle)
racket 7.9%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 178,684 kB
  • sloc: ansic: 282,112; lisp: 234,887; pascal: 70,954; sh: 27,112; asm: 16,268; makefile: 4,613; cpp: 2,715; ada: 1,681; javascript: 1,244; cs: 879; exp: 499; csh: 422; python: 274; xml: 106; perl: 104
file content (36 lines) | stat: -rw-r--r-- 1,278 bytes parent folder | download | duplicates (8)
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
#lang racket/base
(require setup/cross-system)

(provide platform-spec?
         matching-platform?)

(define (platform-spec? p)
  (or (symbol? p) (string? p) (regexp? p)))

(define (matching-platform? p
                            #:cross? [cross? #f]
                            #:system-type [sys-type #f]
                            #:system-library-subpath [sys-lib-subpath #f])
  (unless (platform-spec? p)
    (raise-argument-error 'matching-platform? "platform-spec?" p))
  (unless (or (not sys-type) (symbol? sys-type))
    (raise-argument-error 'matching-platform? "(or/c symbol? #f)" sys-type))
  (unless (or (not sys-lib-subpath) (path-for-some-system? sys-lib-subpath))
    (raise-argument-error 'matching-platform? "(or/c path-for-some-system? #f)" sys-lib-subpath))
  (cond
   [(symbol? p)
    (eq? p (or sys-type (if cross?
                            (cross-system-type)
                            (system-type))))]
   [else
    (define s (bytes->string/utf-8
               (path->bytes
                (or sys-lib-subpath
                    (if cross?
                        (cross-system-library-subpath #f)
                        (system-library-subpath #f))))))
    (cond
     [(regexp? p)
      (regexp-match? p s)]
     [else
      (equal? p s)])]))