diff --git a/pkgs/racket-doc/scribblings/reference/filesystem.scrbl b/pkgs/racket-doc/scribblings/reference/filesystem.scrbl index a1a9a69269..0d3edbfdde 100644 --- a/pkgs/racket-doc/scribblings/reference/filesystem.scrbl +++ b/pkgs/racket-doc/scribblings/reference/filesystem.scrbl @@ -52,24 +52,33 @@ by @racket[kind], which must be one of the following: the current executable is used as the home directory.} @item{@indexed-racket['pref-dir] --- the standard directory for - storing the current user's preferences. On Unix, the directory is the - @filepath{racket} subdirectory of the path specified by + storing the current user's preferences. The preferences directory + might not exist. + + On Unix, the preferences directory is normally the @filepath{racket} + subdirectory of the path specified by @indexed-envvar{XDG_CONFIG_HOME}, or @filepath{.config/racket} in the - @tech{user's home directory} if @envvar{XDG_CONFIG_HOME} is not set to - an absolute path. On Windows, - it is @filepath{Racket} in the @tech{user's home directory} if - determined by @envvar{PLTUSERHOME}, otherwise in the user's - application-data folder as specified by the Windows registry; the - application-data folder is usually @filepath{Application Data} in the - user's profile directory. On Mac OS, the preferences directory - is @filepath{Library/Preferences} in the - @tech{user's home directory}. The preferences directory might not exist.} + @tech{user's home directory} if @envvar{XDG_CONFIG_HOME} is not set + to an absolute path or if @envvar{PLTUSERHOME} is set. Either way, if + that directory does not exist but a @filepath{.racket} directory + exists in the @tech{user's home directory}, then that directory is + the preference directory, instead. + + On Windows, the preferences directory is @filepath{Racket} in the + @tech{user's home directory} if determined by @envvar{PLTUSERHOME}, + otherwise in the user's application-data folder as specified by the + Windows registry; the application-data folder is usually + @filepath{Application Data} in the user's profile directory. + + On Mac OS, the preferences directory is + @filepath{Library/Preferences} in the @tech{user's home directory}.} @item{@indexed-racket['pref-file] --- a file that contains a symbol-keyed association list of preference values. The file's directory path always matches the result returned for @racket['pref-dir]. The file name is @filepath{racket-prefs.rktd} on Unix - and Windows, and it is @filepath{org.racket-lang.prefs.rktd} on Mac OS. The file's directory might not exist. See also + and Windows, and it is @filepath{org.racket-lang.prefs.rktd} on Mac OS. + The file's directory might not exist. See also @racket[get-preference].} @item{@indexed-racket['temp-dir] --- the standard directory for @@ -82,22 +91,34 @@ by @racket[kind], which must be one of the following: if it is defined, otherwise it is the current directory.} @item{@indexed-racket['init-dir] --- the directory containing the - initialization file used by the Racket executable. On Unix, it is - the same as the result returned for @racket['pref-dir]; on Mac OS and - Windows, it is the same as the @tech{user's home directory}.} + initialization file used by the Racket executable. + + On Unix, the initialization directory is the same as the result + returned for @racket['pref-dir]---unless that directory does not + exist and a @filepath{.racketrc} file exists in the @tech{user's home + directory}, in which case the home directory is the initialization + directory. + + On Windows, the initialization directory is the same as the + @tech{user's home directory}. + + On Mac OS, the initialization directory is @filepath{Library/Racket} + in the @tech{user's home directory}---unless no + @filepath{racketrc.rktl} exists there and a @filepath{.racketrc} file + does exist in the home directory, in which case the home directory is + the initialization directory.} @item{@indexed-racket['init-file] --- the file loaded at start-up by the Racket executable. The directory part of the - path is the same path as returned for @racket['init-dir]. The file - name is platform-specific: + path is the same path as returned for @racket['init-dir]. - @itemize[ + On Windows, the file part of the name is + @indexed-file{racketrc.rktl}. - @item{Unix and Windows: @indexed-file{racketrc.rktl}} - - @item{Mac OS: @indexed-file{.racketrc}} - - ]} + On Unix and Mac OS, the file part of the name is + @indexed-file{racketrc.rktl}---unless the path returned for + @racket['init-dir] is the @tech{user's home directory}, in which case + the file part of the name is @indexed-file{.racketrc}.} @item{@indexed-racket['config-dir] --- a directory for the installation's configuration. This directory is specified by the @@ -123,21 +144,39 @@ by @racket[kind], which must be one of the following: @indexed-envvar{PLTADDONDIR} environment variable, and it can be overridden by the @DFlag{addon} or @Flag{A} command-line flag. If no environment variable or flag is specified, or if the value is not a - legal path name, then this directory defaults to - @filepath{Library/Racket} in the @tech{user's home directory} on Mac - OS and @racket['pref-dir] on Windows. On Unix, it is the - @filepath{racket} subdirectory of the path specified by - @indexed-envvar{XDG_DATA_HOME}, or @filepath{.local/share/racket} in - the @tech{user's home directory} if @envvar{XDG_CONFIG_HOME} is not - set to an absolute path. The directory might not exist.} + legal path name, then this directory defaults to a platform-specific + locations. The directory might not exist. + + On Unix, the default is normally the @filepath{racket} subdirectory + of the path specified by @indexed-envvar{XDG_DATA_HOME}, or + @filepath{.local/share/racket} in the @tech{user's home directory} if + @envvar{XDG_CONFIG_HOME} is not set to an absolute path or if + @envvar{PLTUSERHOME} is set. If that directory does not exists but a + @filepath{.racket} directory exists in the user's home directory, + that the @filepath{.racket} directory path is the default, instead. + + On Windows, the default is the same as the @racket['pref-dir] directory. + + On Mac OS, the default is @filepath{Library/Racket} within the + @tech{user's home directory}.} @item{@indexed-racket['cache-dir] --- a directory for storing - user-specific caches. On Unix, it is the @filepath{racket} - subdirectory of the path specified by @indexed-envvar{XDG_CACHE_HOME}, - or @filepath{.cache/racket} in the @tech{user's home directory} if - @envvar{XDG_CACHE_HOME} is not set to an absolute path. On Mac OS and - Windows, it is the same as the result returned for @racket['addon-dir]. - The directory might not exists.} + user-specific caches. The directory might not exist. + + On Unix, the cache directory is normally the @filepath{racket} + subdirectory of the path specified by + @indexed-envvar{XDG_CACHE_HOME}, or @filepath{.cache/racket} in the + @tech{user's home directory} if @envvar{XDG_CACHE_HOME} is not set to + an absolute path or if @envvar{PLTUSERHOME} is set. If that directory + does not exist but a @filepath{.racket} directory exists in the home + directory, then the @filepath{.racket} directory is the cache + directory, instead. + + On Windows, the cache directory is the same as the result returned + for @racket['addon-dir]. + + On Mac OS, the cache directory is @filepath{Library/Caches/Racket} + within the @tech{user's home directory}.} @item{@indexed-racket['doc-dir] --- the standard directory for storing the current user's documents. On Unix, it's @@ -206,7 +245,11 @@ by @racket[kind], which must be one of the following: @history[#:changed "6.0.0.3" @elem{Added @envvar{PLTUSERHOME}.} #:changed "6.9.0.1" @elem{Added @racket['host-config-dir] - and @racket['host-collects-dir].}]} + and @racket['host-collects-dir].} + #:changed "7.8.0.9" @elem{Added @racket['cache-dir], and changed + to use XDG directories as preferred on Unix + with the previous paths as a fallback, and + with similar adjustments for Mac OS.}]} @defproc[(path-list-string->path-list [str (or/c string? bytes?)] [default-path-list (listof path?)]) diff --git a/pkgs/racket-test-core/tests/racket/file.rktl b/pkgs/racket-test-core/tests/racket/file.rktl index 3b972e0eaf..5d9303c4db 100644 --- a/pkgs/racket-test-core/tests/racket/file.rktl +++ b/pkgs/racket-test-core/tests/racket/file.rktl @@ -1842,6 +1842,123 @@ (current-directory original-dir) +;; ---------------------------------------- + +(let ([home-dir (path->directory-path (make-temporary-file "test-home~a" 'directory))] + [env (environment-variables-copy (current-environment-variables))] + [racket (find-exe)]) + (environment-variables-set! env + #"PLTUSERHOME" + (path->bytes home-dir)) + (define (get-dirs) + (parameterize ([current-environment-variables env]) + (define-values (s i o e) (subprocess #f #f #f racket "-I" "racket/base" "-e" + (string-append + "(map path->bytes " + " (list (find-system-path 'home-dir)" + " (find-system-path 'pref-dir)" + " (find-system-path 'pref-file)" + " (find-system-path 'init-dir)" + " (find-system-path 'init-file)" + " (find-system-path 'addon-dir)" + " (find-system-path 'cache-dir)))"))) + (begin0 + (cadr (read i)) + (subprocess-wait s)))) + (define (touch f) (close-output-port (open-output-file f #:exists 'truncate))) + + (define dir-syms '(home-dir pref-dir pref-file init-dir init-file addon-dir cache-dir)) + (define expected-default-dirs + (case (system-type) + [(unix) (list home-dir + (build-path home-dir ".config" "racket/") + (build-path home-dir ".config" "racket" "racket-prefs.rktd") + (build-path home-dir ".config" "racket/") + (build-path home-dir ".config" "racket" "racketrc.rktl") + (build-path home-dir ".local" "share" "racket/") + (build-path home-dir ".cache" "racket/"))] + [(macosx) (list home-dir + (build-path home-dir "Library" "Preferences/") + (build-path home-dir "Library" "Preferences" "org.racket-lang.prefs.rktd") + (build-path home-dir "Library" "Racket/") + (build-path home-dir "Library" "Racket" "racketrc.rktl") + (build-path home-dir "Library" "Racket/") + (build-path home-dir "Library" "Caches" "Racket/"))] + [(windows) (list home-dir + (build-path home-dir "Racket\\") + (build-path home-dir "Racket" "racket-prefs.rktd") + home-dir + (build-path home-dir "racketrc.rktl") + (build-path home-dir "Racket\\") + (build-path home-dir "Racket\\"))] + [else (error "unexpected system type")])) + + (define default-dirs (get-dirs)) + (for-each (lambda (name expect got) + (test got `(,name default) expect)) + dir-syms + (map bytes->path default-dirs) + expected-default-dirs) + + ;; Create files/directories that trigger legacy paths: + (case (system-type) + [(unix) + (touch (build-path home-dir ".racketrc")) + (make-directory (build-path home-dir ".racket"))] + [(macosx) + (touch (build-path home-dir ".racketrc")) + ;; Make sure just the existence of the would-be init dir doesn't override legacy: + (make-directory (build-path home-dir "Library")) + (make-directory (build-path home-dir "Library" "Racket"))]) + + (define legacy-dirs (get-dirs)) + (for-each (lambda (name expect got) + (test got `(,name legacy) expect)) + dir-syms + (map bytes->path legacy-dirs) + (case (system-type) + [(unix) (list home-dir + (build-path home-dir ".racket/") + (build-path home-dir ".racket/" "racket-prefs.rktd") + home-dir + (build-path home-dir ".racketrc") + (build-path home-dir ".racket/") + (build-path home-dir ".racket/"))] + [(macosx) (list home-dir + (build-path home-dir "Library" "Preferences/") + (build-path home-dir "Library" "Preferences" "org.racket-lang.prefs.rktd") + home-dir + (build-path home-dir ".racketrc") + (build-path home-dir "Library" "Racket/") + (build-path home-dir "Library" "Caches" "Racket/"))] + [(windows) expected-default-dirs] + [else (error "unexpected system type")])) + + ;; Create files/directories that cause legacy paths to be ignored: + (case (system-type) + [(unix) + (make-directory (build-path home-dir ".config")) + (make-directory (build-path home-dir ".config" "racket")) + (touch (build-path home-dir ".config" "racket" "racketrc.rktl")) + (make-directory (build-path home-dir ".local")) + (make-directory (build-path home-dir ".local" "share")) + (make-directory (build-path home-dir ".local" "share" "racket")) + (make-directory (build-path home-dir ".cache")) + (make-directory (build-path home-dir ".cache" "racket"))] + [(macosx) + (touch (build-path (build-path home-dir "Library" "Racket" "racketrc.rktl")))]) + + (define back-to-default-dirs (get-dirs)) + (for-each (lambda (name expect got) + (test got `(,name back-to-default) expect)) + dir-syms + (map bytes->path back-to-default-dirs) + expected-default-dirs) + + (delete-directory/files home-dir)) + +;; ---------------------------------------- + (unless (eq? 'windows (system-type)) (define can-open-nonblocking-fifo? ;; The general implementation of fifo-write ports requires diff --git a/racket/collects/compiler/private/mach-o.rkt b/racket/collects/compiler/private/mach-o.rkt index bf168beeb0..efad807246 100644 --- a/racket/collects/compiler/private/mach-o.rkt +++ b/racket/collects/compiler/private/mach-o.rkt @@ -7,7 +7,8 @@ (define exe-id (delay - (if (equal? (path->bytes (cross-system-library-subpath #f)) #"x86_64-macosx") + (if (member (path->bytes (cross-system-library-subpath #f)) + (list #"x86_64-macosx" #"x86_64-darwin")) #xFeedFacf #xFeedFace))) diff --git a/racket/src/cs/schemified/io.scm b/racket/src/cs/schemified/io.scm index 9d6b69bffb..508c4ed9f3 100644 --- a/racket/src/cs/schemified/io.scm +++ b/racket/src/cs/schemified/io.scm @@ -358,30 +358,32 @@ (1/write-special-evt write-special-evt) (1/write-string write-string))) (define hash2725 (hash)) -(define hash2337 +(define hash2702 (hasheq 'addon-dir '12 + 'cache-dir + '13 'collects-dir '4 'config-dir '3 'desk-dir - '14 - 'doc-dir '15 + 'doc-dir + '16 'exec-file '1 'home-dir - '13 + '14 'host-collects-dir '6 'host-config-dir '5 'init-dir - '16 - 'init-file '17 + 'init-file + '18 'orig-dir '7 'pref-dir @@ -3077,6 +3079,7 @@ (define RKTIO_PATH_DOC_DIR 7) (define RKTIO_PATH_INIT_DIR 8) (define RKTIO_PATH_INIT_FILE 9) +(define RKTIO_PATH_CACHE_DIR 10) (define RKTIO_OS_SIGNAL_NONE -1) (define RKTIO_OS_SIGNAL_TERM 1) (define RKTIO_OS_SIGNAL_HUP 2) @@ -31792,15 +31795,15 @@ (begin (begin0 (let ((index_0 - (if (symbol? key_0) (hash-ref hash2337 key_0 procz1) 0))) - (if (unsafe-fx< index_0 8) - (if (unsafe-fx< index_0 3) + (if (symbol? key_0) (hash-ref hash2702 key_0 procz1) 0))) + (if (unsafe-fx< index_0 9) + (if (unsafe-fx< index_0 4) (if (unsafe-fx< index_0 1) (raise-argument-error 'find-system-path (string-append "(or/c 'home-dir 'pref-dir 'pref-file 'temp-dir\n" - " 'init-dir 'init-file 'addon-dir\n" + " 'init-dir 'init-file 'addon-dir 'cache-dir\n" " 'doc-dir 'desk-dir 'sys-dir 'exec-file 'run-file\n" " 'collects-dir 'config-dir 'orig-dir\n" " 'host-collects-dir 'host-config-dir)") @@ -31810,25 +31813,25 @@ (if or-part_0 or-part_0 (string->path$1 "/usr/local/bin/racket"))) - (let ((or-part_0 run-file)) - (if or-part_0 - or-part_0 - (1/find-system-path 'exec-file))))) - (if (unsafe-fx< index_0 5) - (if (unsafe-fx< index_0 4) - (let ((p_0 - (let ((or-part_0 config-dir)) - (if or-part_0 - or-part_0 - (string->path$1 "../etc"))))) - (begin (1/path->directory-path p_0))) + (if (unsafe-fx< index_0 3) + (let ((or-part_0 run-file)) + (if or-part_0 + or-part_0 + (1/find-system-path 'exec-file))) + (let ((p_0 + (let ((or-part_0 config-dir)) + (if or-part_0 + or-part_0 + (string->path$1 "../etc"))))) + (begin (1/path->directory-path p_0)))))) + (if (unsafe-fx< index_0 6) + (if (unsafe-fx< index_0 5) (let ((p_0 (let ((or-part_0 collects-dir)) (if or-part_0 or-part_0 (string->path$1 "../collects"))))) - (begin (1/path->directory-path p_0)))) - (if (unsafe-fx< index_0 6) + (begin (1/path->directory-path p_0))) (let ((p_0 (let ((or-part_0 host-config-dir)) (if or-part_0 @@ -31837,46 +31840,49 @@ (if or-part_1 or-part_1 (string->path$1 "../etc"))))))) - (begin (1/path->directory-path p_0))) - (if (unsafe-fx< index_0 7) - (let ((p_0 - (let ((or-part_0 host-collects-dir)) - (if or-part_0 - or-part_0 - (let ((or-part_1 collects-dir)) - (if or-part_1 - or-part_1 - (string->path$1 "../collects"))))))) - (begin (1/path->directory-path p_0))) - (begin (1/path->directory-path orig-dir)))))) - (if (unsafe-fx< index_0 12) - (if (unsafe-fx< index_0 9) - (let ((p_0 (rktio-system-path 'find-system-path 1))) - (begin (1/path->directory-path p_0))) - (if (unsafe-fx< index_0 10) - (let ((p_0 (rktio-system-path 'find-system-path 0))) - (begin (1/path->directory-path p_0))) - (if (unsafe-fx< index_0 11) - (let ((p_0 (rktio-system-path 'find-system-path 2))) - (begin (1/path->directory-path p_0))) - (rktio-system-path 'find-system-path 3)))) - (if (unsafe-fx< index_0 14) - (if (unsafe-fx< index_0 13) + (begin (1/path->directory-path p_0)))) + (if (unsafe-fx< index_0 7) (let ((p_0 - (let ((or-part_0 addon-dir)) + (let ((or-part_0 host-collects-dir)) (if or-part_0 or-part_0 - (rktio-system-path 'find-system-path 4))))) + (let ((or-part_1 collects-dir)) + (if or-part_1 + or-part_1 + (string->path$1 "../collects"))))))) + (begin (1/path->directory-path p_0))) + (if (unsafe-fx< index_0 8) + (begin (1/path->directory-path orig-dir)) + (let ((p_0 (rktio-system-path 'find-system-path 1))) + (begin (1/path->directory-path p_0))))))) + (if (unsafe-fx< index_0 13) + (if (unsafe-fx< index_0 10) + (let ((p_0 (rktio-system-path 'find-system-path 0))) + (begin (1/path->directory-path p_0))) + (if (unsafe-fx< index_0 11) + (let ((p_0 (rktio-system-path 'find-system-path 2))) + (begin (1/path->directory-path p_0))) + (if (unsafe-fx< index_0 12) + (rktio-system-path 'find-system-path 3) + (let ((p_0 + (let ((or-part_0 addon-dir)) + (if or-part_0 + or-part_0 + (rktio-system-path 'find-system-path 4))))) + (begin (1/path->directory-path p_0)))))) + (if (unsafe-fx< index_0 15) + (if (unsafe-fx< index_0 14) + (let ((p_0 (rktio-system-path 'find-system-path 10))) (begin (1/path->directory-path p_0))) (let ((p_0 (rktio-system-path 'find-system-path 5))) (begin (1/path->directory-path p_0)))) - (if (unsafe-fx< index_0 15) + (if (unsafe-fx< index_0 16) (let ((p_0 (rktio-system-path 'find-system-path 6))) (begin (1/path->directory-path p_0))) - (if (unsafe-fx< index_0 16) + (if (unsafe-fx< index_0 17) (let ((p_0 (rktio-system-path 'find-system-path 7))) (begin (1/path->directory-path p_0))) - (if (unsafe-fx< index_0 17) + (if (unsafe-fx< index_0 18) (let ((p_0 (rktio-system-path 'find-system-path 8))) (begin (1/path->directory-path p_0))) (rktio-system-path 'find-system-path 9)))))))) @@ -31961,7 +31967,7 @@ (begin (current-directory$1 orig-dir) (current-directory-for-user$1 orig-dir)))) -(define effect3242 (begin (void (init-current-directory!)) (void))) +(define effect3243 (begin (void (init-current-directory!)) (void))) (define 1/path->complete-path (|#%name| path->complete-path @@ -33152,7 +33158,7 @@ len_0) (1/get-output-string o_0))))))))) (lambda () (error-value->string-handler procz1)))) -(define effect3421 +(define effect3422 (begin (void (install-error-value->string-handler!)) (void))) (define 1/srcloc->string (|#%name| @@ -33175,7 +33181,7 @@ (lambda (p_0) (let ((dir_0 (current-directory-for-user$1))) p_0))) (define struct:logger (make-record-type-descriptor* 'logger #f #f #f #f 11 2047)) -(define effect3423 +(define effect3424 (struct-type-install-properties! struct:logger 'logger @@ -33193,192 +33199,192 @@ logger (record-constructor (make-record-constructor-descriptor struct:logger #f #f)))) -(define 1/logger?3422 (|#%name| logger? (record-predicate struct:logger))) +(define 1/logger?3423 (|#%name| logger? (record-predicate struct:logger))) (define 1/logger? (|#%name| logger? (lambda (v) - (if (1/logger?3422 v) + (if (1/logger?3423 v) #t ($value - (if (impersonator? v) (1/logger?3422 (impersonator-val v)) #f)))))) -(define logger-topic3424 + (if (impersonator? v) (1/logger?3423 (impersonator-val v)) #f)))))) +(define logger-topic3425 (|#%name| logger-topic (record-accessor struct:logger 0))) (define logger-topic (|#%name| logger-topic (lambda (s) - (if (1/logger?3422 s) - (logger-topic3424 s) + (if (1/logger?3423 s) + (logger-topic3425 s) ($value (impersonate-ref - logger-topic3424 + logger-topic3425 struct:logger 0 s 'logger 'topic)))))) -(define logger-parent3425 +(define logger-parent3426 (|#%name| logger-parent (record-accessor struct:logger 1))) (define logger-parent (|#%name| logger-parent (lambda (s) - (if (1/logger?3422 s) - (logger-parent3425 s) + (if (1/logger?3423 s) + (logger-parent3426 s) ($value (impersonate-ref - logger-parent3425 + logger-parent3426 struct:logger 1 s 'logger 'parent)))))) -(define logger-propagate-filters3426 +(define logger-propagate-filters3427 (|#%name| logger-propagate-filters (record-accessor struct:logger 2))) (define logger-propagate-filters (|#%name| logger-propagate-filters (lambda (s) - (if (1/logger?3422 s) - (logger-propagate-filters3426 s) + (if (1/logger?3423 s) + (logger-propagate-filters3427 s) ($value (impersonate-ref - logger-propagate-filters3426 + logger-propagate-filters3427 struct:logger 2 s 'logger 'propagate-filters)))))) -(define logger-receiver-box+backrefs3427 +(define logger-receiver-box+backrefs3428 (|#%name| logger-receiver-box+backrefs (record-accessor struct:logger 3))) (define logger-receiver-box+backrefs (|#%name| logger-receiver-box+backrefs (lambda (s) - (if (1/logger?3422 s) - (logger-receiver-box+backrefs3427 s) + (if (1/logger?3423 s) + (logger-receiver-box+backrefs3428 s) ($value (impersonate-ref - logger-receiver-box+backrefs3427 + logger-receiver-box+backrefs3428 struct:logger 3 s 'logger 'receiver-box+backrefs)))))) -(define logger-prune-counter3428 +(define logger-prune-counter3429 (|#%name| logger-prune-counter (record-accessor struct:logger 4))) (define logger-prune-counter (|#%name| logger-prune-counter (lambda (s) - (if (1/logger?3422 s) - (logger-prune-counter3428 s) + (if (1/logger?3423 s) + (logger-prune-counter3429 s) ($value (impersonate-ref - logger-prune-counter3428 + logger-prune-counter3429 struct:logger 4 s 'logger 'prune-counter)))))) -(define logger-permanent-receivers3429 +(define logger-permanent-receivers3430 (|#%name| logger-permanent-receivers (record-accessor struct:logger 5))) (define logger-permanent-receivers (|#%name| logger-permanent-receivers (lambda (s) - (if (1/logger?3422 s) - (logger-permanent-receivers3429 s) + (if (1/logger?3423 s) + (logger-permanent-receivers3430 s) ($value (impersonate-ref - logger-permanent-receivers3429 + logger-permanent-receivers3430 struct:logger 5 s 'logger 'permanent-receivers)))))) -(define logger-max-receiver-level3430 +(define logger-max-receiver-level3431 (|#%name| logger-max-receiver-level (record-accessor struct:logger 6))) (define logger-max-receiver-level (|#%name| logger-max-receiver-level (lambda (s) - (if (1/logger?3422 s) - (logger-max-receiver-level3430 s) + (if (1/logger?3423 s) + (logger-max-receiver-level3431 s) ($value (impersonate-ref - logger-max-receiver-level3430 + logger-max-receiver-level3431 struct:logger 6 s 'logger 'max-receiver-level)))))) -(define logger-topic-level-cache3431 +(define logger-topic-level-cache3432 (|#%name| logger-topic-level-cache (record-accessor struct:logger 7))) (define logger-topic-level-cache (|#%name| logger-topic-level-cache (lambda (s) - (if (1/logger?3422 s) - (logger-topic-level-cache3431 s) + (if (1/logger?3423 s) + (logger-topic-level-cache3432 s) ($value (impersonate-ref - logger-topic-level-cache3431 + logger-topic-level-cache3432 struct:logger 7 s 'logger 'topic-level-cache)))))) -(define logger-local-level-timestamp3432 +(define logger-local-level-timestamp3433 (|#%name| logger-local-level-timestamp (record-accessor struct:logger 8))) (define logger-local-level-timestamp (|#%name| logger-local-level-timestamp (lambda (s) - (if (1/logger?3422 s) - (logger-local-level-timestamp3432 s) + (if (1/logger?3423 s) + (logger-local-level-timestamp3433 s) ($value (impersonate-ref - logger-local-level-timestamp3432 + logger-local-level-timestamp3433 struct:logger 8 s 'logger 'local-level-timestamp)))))) -(define logger-root-level-timestamp-box3433 +(define logger-root-level-timestamp-box3434 (|#%name| logger-root-level-timestamp-box (record-accessor struct:logger 9))) (define logger-root-level-timestamp-box (|#%name| logger-root-level-timestamp-box (lambda (s) - (if (1/logger?3422 s) - (logger-root-level-timestamp-box3433 s) + (if (1/logger?3423 s) + (logger-root-level-timestamp-box3434 s) ($value (impersonate-ref - logger-root-level-timestamp-box3433 + logger-root-level-timestamp-box3434 struct:logger 9 s 'logger 'root-level-timestamp-box)))))) -(define logger-level-sema-box3434 +(define logger-level-sema-box3435 (|#%name| logger-level-sema-box (record-accessor struct:logger 10))) (define logger-level-sema-box (|#%name| logger-level-sema-box (lambda (s) - (if (1/logger?3422 s) - (logger-level-sema-box3434 s) + (if (1/logger?3423 s) + (logger-level-sema-box3435 s) ($value (impersonate-ref - logger-level-sema-box3434 + logger-level-sema-box3435 struct:logger 10 s 'logger 'level-sema-box)))))) -(define set-logger-receiver-box+backrefs!3435 +(define set-logger-receiver-box+backrefs!3436 (|#%name| set-logger-receiver-box+backrefs! (record-mutator struct:logger 3))) @@ -33386,11 +33392,11 @@ (|#%name| set-logger-receiver-box+backrefs! (lambda (s v) - (if (1/logger?3422 s) - (set-logger-receiver-box+backrefs!3435 s v) + (if (1/logger?3423 s) + (set-logger-receiver-box+backrefs!3436 s v) ($value (impersonate-set! - set-logger-receiver-box+backrefs!3435 + set-logger-receiver-box+backrefs!3436 struct:logger 3 3 @@ -33398,17 +33404,17 @@ v 'logger 'receiver-box+backrefs)))))) -(define set-logger-prune-counter!3436 +(define set-logger-prune-counter!3437 (|#%name| set-logger-prune-counter! (record-mutator struct:logger 4))) (define set-logger-prune-counter! (|#%name| set-logger-prune-counter! (lambda (s v) - (if (1/logger?3422 s) - (set-logger-prune-counter!3436 s v) + (if (1/logger?3423 s) + (set-logger-prune-counter!3437 s v) ($value (impersonate-set! - set-logger-prune-counter!3436 + set-logger-prune-counter!3437 struct:logger 4 4 @@ -33416,17 +33422,17 @@ v 'logger 'prune-counter)))))) -(define set-logger-permanent-receivers!3437 +(define set-logger-permanent-receivers!3438 (|#%name| set-logger-permanent-receivers! (record-mutator struct:logger 5))) (define set-logger-permanent-receivers! (|#%name| set-logger-permanent-receivers! (lambda (s v) - (if (1/logger?3422 s) - (set-logger-permanent-receivers!3437 s v) + (if (1/logger?3423 s) + (set-logger-permanent-receivers!3438 s v) ($value (impersonate-set! - set-logger-permanent-receivers!3437 + set-logger-permanent-receivers!3438 struct:logger 5 5 @@ -33434,17 +33440,17 @@ v 'logger 'permanent-receivers)))))) -(define set-logger-max-receiver-level!3438 +(define set-logger-max-receiver-level!3439 (|#%name| set-logger-max-receiver-level! (record-mutator struct:logger 6))) (define set-logger-max-receiver-level! (|#%name| set-logger-max-receiver-level! (lambda (s v) - (if (1/logger?3422 s) - (set-logger-max-receiver-level!3438 s v) + (if (1/logger?3423 s) + (set-logger-max-receiver-level!3439 s v) ($value (impersonate-set! - set-logger-max-receiver-level!3438 + set-logger-max-receiver-level!3439 struct:logger 6 6 @@ -33452,7 +33458,7 @@ v 'logger 'max-receiver-level)))))) -(define set-logger-local-level-timestamp!3439 +(define set-logger-local-level-timestamp!3440 (|#%name| set-logger-local-level-timestamp! (record-mutator struct:logger 8))) @@ -33460,11 +33466,11 @@ (|#%name| set-logger-local-level-timestamp! (lambda (s v) - (if (1/logger?3422 s) - (set-logger-local-level-timestamp!3439 s v) + (if (1/logger?3423 s) + (set-logger-local-level-timestamp!3440 s v) ($value (impersonate-set! - set-logger-local-level-timestamp!3439 + set-logger-local-level-timestamp!3440 struct:logger 8 8 @@ -33472,7 +33478,7 @@ v 'logger 'local-level-timestamp)))))) -(define effect3440 +(define effect3441 (begin (register-struct-constructor! logger1.1) (register-struct-predicate! 1/logger?) @@ -33682,7 +33688,7 @@ (define level->user-representation (lambda (lvl_0) (if (eq? lvl_0 'none) #f lvl_0))) (define struct:queue (make-record-type-descriptor* 'queue #f #f #f #f 2 3)) -(define effect3460 +(define effect3461 (struct-type-install-properties! struct:queue 'queue @@ -33707,7 +33713,7 @@ (|#%name| set-queue-start! (record-mutator struct:queue 0))) (define set-queue-end! (|#%name| set-queue-end! (record-mutator struct:queue 1))) -(define effect3461 +(define effect3462 (begin (register-struct-constructor! queue1.1) (register-struct-predicate! queue?) @@ -33717,7 +33723,7 @@ (register-struct-field-mutator! set-queue-end! struct:queue 1) (void))) (define struct:node (make-record-type-descriptor* 'node #f #f #f #f 3 7)) -(define effect3462 +(define effect3463 (struct-type-install-properties! struct:node 'node @@ -33743,7 +33749,7 @@ (|#%name| set-node-prev! (record-mutator struct:node 1))) (define set-node-next! (|#%name| set-node-next! (record-mutator struct:node 2))) -(define effect3463 +(define effect3464 (begin (register-struct-constructor! node2.1) (register-struct-predicate! node?) @@ -33784,7 +33790,7 @@ (set-queue-end! q_0 (node-prev n_0)))))) (define struct:log-receiver (make-record-type-descriptor* 'log-receiver #f #f #f #f 1 1)) -(define effect3472 +(define effect3473 (struct-type-install-properties! struct:log-receiver 'log-receiver @@ -33802,35 +33808,35 @@ log-receiver (record-constructor (make-record-constructor-descriptor struct:log-receiver #f #f)))) -(define 1/log-receiver?3471 +(define 1/log-receiver?3472 (|#%name| log-receiver? (record-predicate struct:log-receiver))) (define 1/log-receiver? (|#%name| log-receiver? (lambda (v) - (if (1/log-receiver?3471 v) + (if (1/log-receiver?3472 v) #t ($value (if (impersonator? v) - (1/log-receiver?3471 (impersonator-val v)) + (1/log-receiver?3472 (impersonator-val v)) #f)))))) -(define log-receiver-filters3473 +(define log-receiver-filters3474 (|#%name| log-receiver-filters (record-accessor struct:log-receiver 0))) (define log-receiver-filters (|#%name| log-receiver-filters (lambda (s) - (if (1/log-receiver?3471 s) - (log-receiver-filters3473 s) + (if (1/log-receiver?3472 s) + (log-receiver-filters3474 s) ($value (impersonate-ref - log-receiver-filters3473 + log-receiver-filters3474 struct:log-receiver 0 s 'log-receiver 'filters)))))) -(define effect3474 +(define effect3475 (begin (register-struct-constructor! log-receiver1.1) (register-struct-predicate! 1/log-receiver?) @@ -33851,7 +33857,7 @@ #f 3 7)) -(define effect3476 +(define effect3477 (struct-type-install-properties! struct:queue-log-receiver 'log-receiver @@ -33919,35 +33925,35 @@ queue-log-receiver (record-constructor (make-record-constructor-descriptor struct:queue-log-receiver #f #f)))) -(define queue-log-receiver?3475 +(define queue-log-receiver?3476 (|#%name| log-receiver? (record-predicate struct:queue-log-receiver))) (define queue-log-receiver? (|#%name| log-receiver? (lambda (v) - (if (queue-log-receiver?3475 v) + (if (queue-log-receiver?3476 v) #t ($value (if (impersonator? v) - (queue-log-receiver?3475 (impersonator-val v)) + (queue-log-receiver?3476 (impersonator-val v)) #f)))))) -(define queue-log-receiver-msgs3500 +(define queue-log-receiver-msgs3501 (|#%name| log-receiver-msgs (record-accessor struct:queue-log-receiver 0))) (define queue-log-receiver-msgs (|#%name| log-receiver-msgs (lambda (s) - (if (queue-log-receiver?3475 s) - (queue-log-receiver-msgs3500 s) + (if (queue-log-receiver?3476 s) + (queue-log-receiver-msgs3501 s) ($value (impersonate-ref - queue-log-receiver-msgs3500 + queue-log-receiver-msgs3501 struct:queue-log-receiver 0 s 'log-receiver 'msgs)))))) -(define queue-log-receiver-waiters3501 +(define queue-log-receiver-waiters3502 (|#%name| log-receiver-waiters (record-accessor struct:queue-log-receiver 1))) @@ -33955,17 +33961,17 @@ (|#%name| log-receiver-waiters (lambda (s) - (if (queue-log-receiver?3475 s) - (queue-log-receiver-waiters3501 s) + (if (queue-log-receiver?3476 s) + (queue-log-receiver-waiters3502 s) ($value (impersonate-ref - queue-log-receiver-waiters3501 + queue-log-receiver-waiters3502 struct:queue-log-receiver 1 s 'log-receiver 'waiters)))))) -(define queue-log-receiver-backref3502 +(define queue-log-receiver-backref3503 (|#%name| log-receiver-backref (record-accessor struct:queue-log-receiver 2))) @@ -33973,17 +33979,17 @@ (|#%name| log-receiver-backref (lambda (s) - (if (queue-log-receiver?3475 s) - (queue-log-receiver-backref3502 s) + (if (queue-log-receiver?3476 s) + (queue-log-receiver-backref3503 s) ($value (impersonate-ref - queue-log-receiver-backref3502 + queue-log-receiver-backref3503 struct:queue-log-receiver 2 s 'log-receiver 'backref)))))) -(define effect3503 +(define effect3504 (begin (register-struct-constructor! queue-log-receiver2.1) (register-struct-predicate! queue-log-receiver?) @@ -34045,7 +34051,7 @@ #f 2 3)) -(define effect3516 +(define effect3517 (struct-type-install-properties! struct:stdio-log-receiver 'stdio-log-receiver @@ -34098,19 +34104,19 @@ stdio-log-receiver (record-constructor (make-record-constructor-descriptor struct:stdio-log-receiver #f #f)))) -(define stdio-log-receiver?3515 +(define stdio-log-receiver?3516 (|#%name| stdio-log-receiver? (record-predicate struct:stdio-log-receiver))) (define stdio-log-receiver? (|#%name| stdio-log-receiver? (lambda (v) - (if (stdio-log-receiver?3515 v) + (if (stdio-log-receiver?3516 v) #t ($value (if (impersonator? v) - (stdio-log-receiver?3515 (impersonator-val v)) + (stdio-log-receiver?3516 (impersonator-val v)) #f)))))) -(define stdio-log-receiver-rktio3520 +(define stdio-log-receiver-rktio3521 (|#%name| stdio-log-receiver-rktio (record-accessor struct:stdio-log-receiver 0))) @@ -34118,17 +34124,17 @@ (|#%name| stdio-log-receiver-rktio (lambda (s) - (if (stdio-log-receiver?3515 s) - (stdio-log-receiver-rktio3520 s) + (if (stdio-log-receiver?3516 s) + (stdio-log-receiver-rktio3521 s) ($value (impersonate-ref - stdio-log-receiver-rktio3520 + stdio-log-receiver-rktio3521 struct:stdio-log-receiver 0 s 'stdio-log-receiver 'rktio)))))) -(define stdio-log-receiver-which3521 +(define stdio-log-receiver-which3522 (|#%name| stdio-log-receiver-which (record-accessor struct:stdio-log-receiver 1))) @@ -34136,17 +34142,17 @@ (|#%name| stdio-log-receiver-which (lambda (s) - (if (stdio-log-receiver?3515 s) - (stdio-log-receiver-which3521 s) + (if (stdio-log-receiver?3516 s) + (stdio-log-receiver-which3522 s) ($value (impersonate-ref - stdio-log-receiver-which3521 + stdio-log-receiver-which3522 struct:stdio-log-receiver 1 s 'stdio-log-receiver 'which)))))) -(define effect3522 +(define effect3523 (begin (register-struct-constructor! stdio-log-receiver3.1) (register-struct-predicate! stdio-log-receiver?) @@ -34204,7 +34210,7 @@ #f 2 3)) -(define effect3527 +(define effect3528 (struct-type-install-properties! struct:syslog-log-receiver 'syslog-log-receiver @@ -34246,7 +34252,7 @@ syslog-log-receiver (record-constructor (make-record-constructor-descriptor struct:syslog-log-receiver #f #f)))) -(define syslog-log-receiver?3526 +(define syslog-log-receiver?3527 (|#%name| syslog-log-receiver? (record-predicate struct:syslog-log-receiver))) @@ -34254,13 +34260,13 @@ (|#%name| syslog-log-receiver? (lambda (v) - (if (syslog-log-receiver?3526 v) + (if (syslog-log-receiver?3527 v) #t ($value (if (impersonator? v) - (syslog-log-receiver?3526 (impersonator-val v)) + (syslog-log-receiver?3527 (impersonator-val v)) #f)))))) -(define syslog-log-receiver-rktio3531 +(define syslog-log-receiver-rktio3532 (|#%name| syslog-log-receiver-rktio (record-accessor struct:syslog-log-receiver 0))) @@ -34268,17 +34274,17 @@ (|#%name| syslog-log-receiver-rktio (lambda (s) - (if (syslog-log-receiver?3526 s) - (syslog-log-receiver-rktio3531 s) + (if (syslog-log-receiver?3527 s) + (syslog-log-receiver-rktio3532 s) ($value (impersonate-ref - syslog-log-receiver-rktio3531 + syslog-log-receiver-rktio3532 struct:syslog-log-receiver 0 s 'syslog-log-receiver 'rktio)))))) -(define syslog-log-receiver-cmd3532 +(define syslog-log-receiver-cmd3533 (|#%name| syslog-log-receiver-cmd (record-accessor struct:syslog-log-receiver 1))) @@ -34286,17 +34292,17 @@ (|#%name| syslog-log-receiver-cmd (lambda (s) - (if (syslog-log-receiver?3526 s) - (syslog-log-receiver-cmd3532 s) + (if (syslog-log-receiver?3527 s) + (syslog-log-receiver-cmd3533 s) ($value (impersonate-ref - syslog-log-receiver-cmd3532 + syslog-log-receiver-cmd3533 struct:syslog-log-receiver 1 s 'syslog-log-receiver 'cmd)))))) -(define effect3533 +(define effect3534 (begin (register-struct-constructor! syslog-log-receiver4.1) (register-struct-predicate! syslog-log-receiver?) @@ -35190,7 +35196,7 @@ (void)))))) (define struct:fs-change-evt (make-record-type-descriptor* 'filesystem-change-evt #f #f #f #f 2 3)) -(define effect3655 +(define effect3656 (struct-type-install-properties! struct:fs-change-evt 'filesystem-change-evt @@ -35233,19 +35239,19 @@ fs-change-evt (record-constructor (make-record-constructor-descriptor struct:fs-change-evt #f #f)))) -(define fs-change-evt?3654 +(define fs-change-evt?3655 (|#%name| filesystem-change-evt? (record-predicate struct:fs-change-evt))) (define fs-change-evt? (|#%name| filesystem-change-evt? (lambda (v) - (if (fs-change-evt?3654 v) + (if (fs-change-evt?3655 v) #t ($value (if (impersonator? v) - (fs-change-evt?3654 (impersonator-val v)) + (fs-change-evt?3655 (impersonator-val v)) #f)))))) -(define fs-change-evt-rfc3660 +(define fs-change-evt-rfc3661 (|#%name| filesystem-change-evt-rfc (record-accessor struct:fs-change-evt 0))) @@ -35253,17 +35259,17 @@ (|#%name| filesystem-change-evt-rfc (lambda (s) - (if (fs-change-evt?3654 s) - (fs-change-evt-rfc3660 s) + (if (fs-change-evt?3655 s) + (fs-change-evt-rfc3661 s) ($value (impersonate-ref - fs-change-evt-rfc3660 + fs-change-evt-rfc3661 struct:fs-change-evt 0 s 'filesystem-change-evt 'rfc)))))) -(define fs-change-evt-cust-ref3661 +(define fs-change-evt-cust-ref3662 (|#%name| filesystem-change-evt-cust-ref (record-accessor struct:fs-change-evt 1))) @@ -35271,17 +35277,17 @@ (|#%name| filesystem-change-evt-cust-ref (lambda (s) - (if (fs-change-evt?3654 s) - (fs-change-evt-cust-ref3661 s) + (if (fs-change-evt?3655 s) + (fs-change-evt-cust-ref3662 s) ($value (impersonate-ref - fs-change-evt-cust-ref3661 + fs-change-evt-cust-ref3662 struct:fs-change-evt 1 s 'filesystem-change-evt 'cust-ref)))))) -(define set-fs-change-evt-rfc!3662 +(define set-fs-change-evt-rfc!3663 (|#%name| set-filesystem-change-evt-rfc! (record-mutator struct:fs-change-evt 0))) @@ -35289,11 +35295,11 @@ (|#%name| set-filesystem-change-evt-rfc! (lambda (s v) - (if (fs-change-evt?3654 s) - (set-fs-change-evt-rfc!3662 s v) + (if (fs-change-evt?3655 s) + (set-fs-change-evt-rfc!3663 s v) ($value (impersonate-set! - set-fs-change-evt-rfc!3662 + set-fs-change-evt-rfc!3663 struct:fs-change-evt 0 0 @@ -35301,7 +35307,7 @@ v 'filesystem-change-evt 'rfc)))))) -(define set-fs-change-evt-cust-ref!3663 +(define set-fs-change-evt-cust-ref!3664 (|#%name| set-filesystem-change-evt-cust-ref! (record-mutator struct:fs-change-evt 1))) @@ -35309,11 +35315,11 @@ (|#%name| set-filesystem-change-evt-cust-ref! (lambda (s v) - (if (fs-change-evt?3654 s) - (set-fs-change-evt-cust-ref!3663 s v) + (if (fs-change-evt?3655 s) + (set-fs-change-evt-cust-ref!3664 s v) ($value (impersonate-set! - set-fs-change-evt-cust-ref!3663 + set-fs-change-evt-cust-ref!3664 struct:fs-change-evt 1 1 @@ -35321,7 +35327,7 @@ v 'filesystem-change-evt 'cust-ref)))))) -(define effect3664 +(define effect3665 (begin (register-struct-constructor! fs-change-evt1.1) (register-struct-predicate! fs-change-evt?) @@ -35492,7 +35498,7 @@ (unsafe-place-local-ref cell.1) rfc_0)) (void))))) -(define effect3685 +(define effect3686 (begin (void (|#%app| @@ -35713,7 +35719,7 @@ (begin (|#%app| final_0 p_0 bstr_0) bstr_0)))))))))) (define struct:subprocess (make-record-type-descriptor* 'subprocess #f #f #f #f 3 7)) -(define effect3696 +(define effect3697 (struct-type-install-properties! struct:subprocess 'subprocess @@ -35753,75 +35759,75 @@ make-subprocess (record-constructor (make-record-constructor-descriptor struct:subprocess #f #f)))) -(define 1/subprocess?3695 +(define 1/subprocess?3696 (|#%name| subprocess? (record-predicate struct:subprocess))) (define 1/subprocess? (|#%name| subprocess? (lambda (v) - (if (1/subprocess?3695 v) + (if (1/subprocess?3696 v) #t ($value - (if (impersonator? v) (1/subprocess?3695 (impersonator-val v)) #f)))))) -(define subprocess-process3704 + (if (impersonator? v) (1/subprocess?3696 (impersonator-val v)) #f)))))) +(define subprocess-process3705 (|#%name| subprocess-process (record-accessor struct:subprocess 0))) (define subprocess-process (|#%name| subprocess-process (lambda (s) - (if (1/subprocess?3695 s) - (subprocess-process3704 s) + (if (1/subprocess?3696 s) + (subprocess-process3705 s) ($value (impersonate-ref - subprocess-process3704 + subprocess-process3705 struct:subprocess 0 s 'subprocess 'process)))))) -(define subprocess-cust-ref3705 +(define subprocess-cust-ref3706 (|#%name| subprocess-cust-ref (record-accessor struct:subprocess 1))) (define subprocess-cust-ref (|#%name| subprocess-cust-ref (lambda (s) - (if (1/subprocess?3695 s) - (subprocess-cust-ref3705 s) + (if (1/subprocess?3696 s) + (subprocess-cust-ref3706 s) ($value (impersonate-ref - subprocess-cust-ref3705 + subprocess-cust-ref3706 struct:subprocess 1 s 'subprocess 'cust-ref)))))) -(define subprocess-is-group?3706 +(define subprocess-is-group?3707 (|#%name| subprocess-is-group? (record-accessor struct:subprocess 2))) (define subprocess-is-group? (|#%name| subprocess-is-group? (lambda (s) - (if (1/subprocess?3695 s) - (subprocess-is-group?3706 s) + (if (1/subprocess?3696 s) + (subprocess-is-group?3707 s) ($value (impersonate-ref - subprocess-is-group?3706 + subprocess-is-group?3707 struct:subprocess 2 s 'subprocess 'is-group?)))))) -(define set-subprocess-process!3707 +(define set-subprocess-process!3708 (|#%name| set-subprocess-process! (record-mutator struct:subprocess 0))) (define set-subprocess-process! (|#%name| set-subprocess-process! (lambda (s v) - (if (1/subprocess?3695 s) - (set-subprocess-process!3707 s v) + (if (1/subprocess?3696 s) + (set-subprocess-process!3708 s v) ($value (impersonate-set! - set-subprocess-process!3707 + set-subprocess-process!3708 struct:subprocess 0 0 @@ -35829,17 +35835,17 @@ v 'subprocess 'process)))))) -(define set-subprocess-cust-ref!3708 +(define set-subprocess-cust-ref!3709 (|#%name| set-subprocess-cust-ref! (record-mutator struct:subprocess 1))) (define set-subprocess-cust-ref! (|#%name| set-subprocess-cust-ref! (lambda (s v) - (if (1/subprocess?3695 s) - (set-subprocess-cust-ref!3708 s v) + (if (1/subprocess?3696 s) + (set-subprocess-cust-ref!3709 s v) ($value (impersonate-set! - set-subprocess-cust-ref!3708 + set-subprocess-cust-ref!3709 struct:subprocess 1 1 @@ -35847,7 +35853,7 @@ v 'subprocess 'cust-ref)))))) -(define effect3709 +(define effect3710 (begin (register-struct-constructor! make-subprocess) (register-struct-predicate! 1/subprocess?) @@ -35920,11 +35926,11 @@ 'subprocess "(or/c (and/c output-port? file-stream-port?) #f 'stdout)" stderr_0)) - (let ((lr3713 unsafe-undefined) + (let ((lr3714 unsafe-undefined) (group_0 unsafe-undefined) (command_0 unsafe-undefined) (exact/args_0 unsafe-undefined)) - (set! lr3713 + (set! lr3714 (call-with-values (lambda () (if (path-string? group/command_0) @@ -35979,9 +35985,9 @@ ((group_1 command_1 exact/args_1) (vector group_1 command_1 exact/args_1)) (args (raise-binding-result-arity-error 3 args))))) - (set! group_0 (unsafe-vector*-ref lr3713 0)) - (set! command_0 (unsafe-vector*-ref lr3713 1)) - (set! exact/args_0 (unsafe-vector*-ref lr3713 2)) + (set! group_0 (unsafe-vector*-ref lr3714 0)) + (set! command_0 (unsafe-vector*-ref lr3714 1)) + (set! exact/args_0 (unsafe-vector*-ref lr3714 2)) (call-with-values (lambda () (if (if (pair? exact/args_0) @@ -36529,7 +36535,7 @@ (current-continuation-marks))))) (void)) #f)))))))))))) -(define effect3787 +(define effect3788 (begin (void (|#%app| @@ -36601,7 +36607,7 @@ #f 1 1)) -(define effect3807 +(define effect3808 (struct-type-install-properties! struct:tcp-input-port 'tcp-input-port @@ -36633,7 +36639,7 @@ (|#%name| set-tcp-input-port-abandon?! (record-mutator struct:tcp-input-port 0))) -(define effect3808 +(define effect3809 (begin (register-struct-constructor! create-tcp-input-port) (register-struct-predicate! tcp-input-port?) @@ -36655,7 +36661,7 @@ #f 0 0)) -(define effect3810 +(define effect3811 (struct-type-install-properties! struct:tcp-input-port-methods.1 'tcp-input-port-methods @@ -36676,7 +36682,7 @@ struct:tcp-input-port-methods.1 #f #f)))) -(define tcp-input-port-methods?.13809 +(define tcp-input-port-methods?.13810 (|#%name| tcp-input-port-methods? (record-predicate struct:tcp-input-port-methods.1))) @@ -36684,13 +36690,13 @@ (|#%name| tcp-input-port-methods? (lambda (v) - (if (tcp-input-port-methods?.13809 v) + (if (tcp-input-port-methods?.13810 v) #t ($value (if (impersonator? v) - (tcp-input-port-methods?.13809 (impersonator-val v)) + (tcp-input-port-methods?.13810 (impersonator-val v)) #f)))))) -(define effect3811 +(define effect3812 (begin (register-struct-constructor! tcp-input-port-methods1.1) (register-struct-predicate! tcp-input-port-methods?.1) @@ -36795,7 +36801,7 @@ #f 1 1)) -(define effect3827 +(define effect3828 (struct-type-install-properties! struct:tcp-output-port 'tcp-output-port @@ -36829,7 +36835,7 @@ (|#%name| set-tcp-output-port-abandon?! (record-mutator struct:tcp-output-port 0))) -(define effect3828 +(define effect3829 (begin (register-struct-constructor! create-tcp-output-port) (register-struct-predicate! tcp-output-port?) @@ -36851,7 +36857,7 @@ #f 0 0)) -(define effect3830 +(define effect3831 (struct-type-install-properties! struct:tcp-output-port-methods.1 'tcp-output-port-methods @@ -36872,7 +36878,7 @@ struct:tcp-output-port-methods.1 #f #f)))) -(define tcp-output-port-methods?.13829 +(define tcp-output-port-methods?.13830 (|#%name| tcp-output-port-methods? (record-predicate struct:tcp-output-port-methods.1))) @@ -36880,13 +36886,13 @@ (|#%name| tcp-output-port-methods? (lambda (v) - (if (tcp-output-port-methods?.13829 v) + (if (tcp-output-port-methods?.13830 v) #t ($value (if (impersonator? v) - (tcp-output-port-methods?.13829 (impersonator-val v)) + (tcp-output-port-methods?.13830 (impersonator-val v)) #f)))))) -(define effect3831 +(define effect3832 (begin (register-struct-constructor! tcp-output-port-methods7.1) (register-struct-predicate! tcp-output-port-methods?.1) @@ -37005,7 +37011,7 @@ (void)))))))) (define struct:rktio-evt (make-record-type-descriptor* 'rktio-evt #f #f #f #f 2 3)) -(define effect3847 +(define effect3848 (struct-type-install-properties! struct:rktio-evt 'rktio-evt @@ -37041,7 +37047,7 @@ (|#%name| rktio-evt-poll (record-accessor struct:rktio-evt 0))) (define rktio-evt-add-to-poll-set (|#%name| rktio-evt-add-to-poll-set (record-accessor struct:rktio-evt 1))) -(define effect3854 +(define effect3855 (begin (register-struct-constructor! rktio-evt1.1) (register-struct-predicate! rktio-evt?) @@ -37197,7 +37203,7 @@ (void)))) (define struct:connect-progress (make-record-type-descriptor* 'connect-progress #f #f #f #f 2 3)) -(define effect3868 +(define effect3869 (struct-type-install-properties! struct:connect-progress 'connect-progress @@ -37231,7 +37237,7 @@ (|#%name| set-connect-progress-trying-fd! (record-mutator struct:connect-progress 1))) -(define effect3869 +(define effect3870 (begin (register-struct-constructor! connect-progress1.1) (register-struct-predicate! connect-progress?) @@ -37620,7 +37626,7 @@ (void))))) (define struct:tcp-listener (make-record-type-descriptor* 'tcp-listener #f #f #f #f 3 7)) -(define effect3882 +(define effect3883 (struct-type-install-properties! struct:tcp-listener 'tcp-listener @@ -37641,51 +37647,51 @@ tcp-listener (record-constructor (make-record-constructor-descriptor struct:tcp-listener #f #f)))) -(define 1/tcp-listener?3881 +(define 1/tcp-listener?3882 (|#%name| tcp-listener? (record-predicate struct:tcp-listener))) (define 1/tcp-listener? (|#%name| tcp-listener? (lambda (v) - (if (1/tcp-listener?3881 v) + (if (1/tcp-listener?3882 v) #t ($value (if (impersonator? v) - (1/tcp-listener?3881 (impersonator-val v)) + (1/tcp-listener?3882 (impersonator-val v)) #f)))))) -(define tcp-listener-lnr3886 +(define tcp-listener-lnr3887 (|#%name| tcp-listener-lnr (record-accessor struct:tcp-listener 0))) (define tcp-listener-lnr (|#%name| tcp-listener-lnr (lambda (s) - (if (1/tcp-listener?3881 s) - (tcp-listener-lnr3886 s) + (if (1/tcp-listener?3882 s) + (tcp-listener-lnr3887 s) ($value (impersonate-ref - tcp-listener-lnr3886 + tcp-listener-lnr3887 struct:tcp-listener 0 s 'tcp-listener 'lnr)))))) -(define tcp-listener-closed3887 +(define tcp-listener-closed3888 (|#%name| tcp-listener-closed (record-accessor struct:tcp-listener 1))) (define tcp-listener-closed (|#%name| tcp-listener-closed (lambda (s) - (if (1/tcp-listener?3881 s) - (tcp-listener-closed3887 s) + (if (1/tcp-listener?3882 s) + (tcp-listener-closed3888 s) ($value (impersonate-ref - tcp-listener-closed3887 + tcp-listener-closed3888 struct:tcp-listener 1 s 'tcp-listener 'closed)))))) -(define tcp-listener-custodian-reference3888 +(define tcp-listener-custodian-reference3889 (|#%name| tcp-listener-custodian-reference (record-accessor struct:tcp-listener 2))) @@ -37693,17 +37699,17 @@ (|#%name| tcp-listener-custodian-reference (lambda (s) - (if (1/tcp-listener?3881 s) - (tcp-listener-custodian-reference3888 s) + (if (1/tcp-listener?3882 s) + (tcp-listener-custodian-reference3889 s) ($value (impersonate-ref - tcp-listener-custodian-reference3888 + tcp-listener-custodian-reference3889 struct:tcp-listener 2 s 'tcp-listener 'custodian-reference)))))) -(define effect3889 +(define effect3890 (begin (register-struct-constructor! tcp-listener1.1) (register-struct-predicate! 1/tcp-listener?) @@ -38016,7 +38022,7 @@ (accept-evt6.1 listener_0)))))) (define struct:accept-evt (make-record-type-descriptor* 'tcp-accept-evt #f #f #f #f 1 1)) -(define effect3918 +(define effect3919 (struct-type-install-properties! struct:accept-evt 'tcp-accept-evt @@ -38101,33 +38107,33 @@ accept-evt (record-constructor (make-record-constructor-descriptor struct:accept-evt #f #f)))) -(define accept-evt?3917 +(define accept-evt?3918 (|#%name| tcp-accept-evt? (record-predicate struct:accept-evt))) (define accept-evt? (|#%name| tcp-accept-evt? (lambda (v) - (if (accept-evt?3917 v) + (if (accept-evt?3918 v) #t ($value - (if (impersonator? v) (accept-evt?3917 (impersonator-val v)) #f)))))) -(define accept-evt-listener3938 + (if (impersonator? v) (accept-evt?3918 (impersonator-val v)) #f)))))) +(define accept-evt-listener3939 (|#%name| tcp-accept-evt-listener (record-accessor struct:accept-evt 0))) (define accept-evt-listener (|#%name| tcp-accept-evt-listener (lambda (s) - (if (accept-evt?3917 s) - (accept-evt-listener3938 s) + (if (accept-evt?3918 s) + (accept-evt-listener3939 s) ($value (impersonate-ref - accept-evt-listener3938 + accept-evt-listener3939 struct:accept-evt 0 s 'tcp-accept-evt 'listener)))))) -(define effect3939 +(define effect3940 (begin (register-struct-constructor! accept-evt6.1) (register-struct-predicate! accept-evt?) @@ -38185,7 +38191,7 @@ (for-loop_0 0 0)))) (args (raise-binding-result-arity-error 2 args)))))) (define struct:udp (make-record-type-descriptor* 'udp #f #f #f #f 3 7)) -(define effect3947 +(define effect3948 (struct-type-install-properties! struct:udp 'udp @@ -38212,7 +38218,7 @@ (|#%name| set-udp-is-bound?! (record-mutator struct:udp 1))) (define set-udp-is-connected?! (|#%name| set-udp-is-connected?! (record-mutator struct:udp 2))) -(define effect3948 +(define effect3949 (begin (register-struct-constructor! udp1.1) (register-struct-predicate! 1/udp?) @@ -39392,7 +39398,7 @@ who59_0))))))) (define struct:udp-sending-evt (make-record-type-descriptor* 'udp-send-evt #f #f #f #f 2 3)) -(define effect4004 +(define effect4005 (struct-type-install-properties! struct:udp-sending-evt 'udp-send-evt @@ -39439,7 +39445,7 @@ (|#%name| udp-send-evt-u (record-accessor struct:udp-sending-evt 0))) (define udp-sending-evt-try (|#%name| udp-send-evt-try (record-accessor struct:udp-sending-evt 1))) -(define effect4012 +(define effect4013 (begin (register-struct-constructor! udp-sending-evt66.1) (register-struct-predicate! udp-sending-evt?) @@ -39461,7 +39467,7 @@ #f 0 0)) -(define effect4013 +(define effect4014 (struct-type-install-properties! struct:udp-sending-ready-evt 'udp-send-ready-evt @@ -39483,7 +39489,7 @@ (|#%name| udp-send-ready-evt? (record-predicate struct:udp-sending-ready-evt))) -(define effect4014 +(define effect4015 (begin (register-struct-constructor! udp-sending-ready-evt67.1) (register-struct-predicate! udp-sending-ready-evt?) @@ -39814,7 +39820,7 @@ (define cell.2 (unsafe-make-place-local "")) (define struct:udp-receiving-evt (make-record-type-descriptor* 'udp-receive-evt #f #f #f #f 2 3)) -(define effect4037 +(define effect4038 (struct-type-install-properties! struct:udp-receiving-evt 'udp-receive-evt @@ -39866,7 +39872,7 @@ (|#%name| udp-receive-evt-u (record-accessor struct:udp-receiving-evt 0))) (define udp-receiving-evt-try (|#%name| udp-receive-evt-try (record-accessor struct:udp-receiving-evt 1))) -(define effect4045 +(define effect4046 (begin (register-struct-constructor! udp-receiving-evt39.1) (register-struct-predicate! udp-receiving-evt?) @@ -39888,7 +39894,7 @@ #f 0 0)) -(define effect4046 +(define effect4047 (struct-type-install-properties! struct:udp-receiving-ready-evt 'udp-receive-ready-evt @@ -39913,7 +39919,7 @@ (|#%name| udp-receive-ready-evt? (record-predicate struct:udp-receiving-ready-evt))) -(define effect4047 +(define effect4048 (begin (register-struct-constructor! udp-receiving-ready-evt40.1) (register-struct-predicate! udp-receiving-ready-evt?) diff --git a/racket/src/rktio/rktio_fs.c b/racket/src/rktio/rktio_fs.c index 0631e12c6c..79e379c518 100644 --- a/racket/src/rktio/rktio_fs.c +++ b/racket/src/rktio/rktio_fs.c @@ -1914,6 +1914,20 @@ static char *append_paths(char *a, char *b, int free_a, int free_b) return s; } +#ifdef RKTIO_SYSTEM_UNIX +static int directory_or_file_exists(rktio_t *rktio, char *dir, char *maybe_file) +{ + if (maybe_file) { + int r; + char *path = append_paths(dir, maybe_file, 0, 0); + r = rktio_file_exists(rktio, path); + free(path); + return r; + } else + return rktio_directory_exists(rktio, dir); +} +#endif + char *rktio_system_path(rktio_t *rktio, int which) { #ifdef RKTIO_SYSTEM_UNIX @@ -1943,10 +1957,13 @@ char *rktio_system_path(rktio_t *rktio, int which) return rktio_get_current_directory(rktio); } -#define USE_XDG_BASEDIR 1 { /* Everything else is in ~: */ - char *home_str, *alt_home, *home; + char *home_str, *alt_home, *home, *prefer_home_str = NULL, *prefer_home; + char *home_file = NULL, *prefer_home_file = NULL; + int free_prefer_home_str = 0; + + alt_home = rktio_getenv(rktio, "PLTUSERHOME"); if ((which == RKTIO_PATH_PREF_DIR) || (which == RKTIO_PATH_PREF_FILE) @@ -1954,53 +1971,52 @@ char *rktio_system_path(rktio_t *rktio, int which) || (which == RKTIO_PATH_CACHE_DIR) || (which == RKTIO_PATH_INIT_DIR) || (which == RKTIO_PATH_INIT_FILE)) { -#if defined(OS_X) && !defined(XONX) - if ((which == RKTIO_PATH_ADDON_DIR) - || (which == RKTIO_PATH_CACHE_DIR)) +#if defined(OS_X) && !defined(RACKET_XONX) && !defined(XONX) + if (which == RKTIO_PATH_ADDON_DIR) home_str = "~/Library/Racket/"; + else if (which == RKTIO_PATH_CACHE_DIR) + home_str = "~/Library/Caches/Racket/"; else if ((which == RKTIO_PATH_INIT_DIR) - || (which == RKTIO_PATH_INIT_FILE)) + || (which == RKTIO_PATH_INIT_FILE)) { + prefer_home_str = "~/Library/Racket/"; + prefer_home_file = "racketrc.rktl"; home_str = "~/"; - else + home_file = ".racketrc"; + } else home_str = "~/Library/Preferences/"; -#elif USE_XDG_BASEDIR - char *envvar, *xdg_dir, *suffix; +#else + char *envvar, *xdg_dir; if (which == RKTIO_PATH_ADDON_DIR) { - home_str = "~/.local/share/racket/"; + prefer_home_str = "~/.local/share/racket/"; envvar = "XDG_DATA_HOME"; - suffix = "racket/"; } else if (which == RKTIO_PATH_CACHE_DIR) { - home_str = "~/.cache/racket/"; + prefer_home_str = "~/.cache/racket/"; envvar = "XDG_CACHE_HOME"; - suffix = "racket/"; } else { - home_str = "~/.config/racket/"; + prefer_home_str = "~/.config/racket/"; envvar = "XDG_CONFIG_HOME"; - if ((which == RKTIO_PATH_PREF_DIR) - || (which == RKTIO_PATH_INIT_DIR)) { - suffix = "racket/"; - } else if (which == RKTIO_PATH_PREF_FILE) { - suffix = "racket/racket-prefs.rktd"; - } else { /* (which == RKTIO_PATH_INIT_FILE) */ - suffix = "racket/racketrc.rktl"; - } } - xdg_dir = rktio_getenv(rktio, envvar); + if (alt_home) + xdg_dir = NULL; + else + xdg_dir = rktio_getenv(rktio, envvar); /* xdg_dir is invalid if it is not an absolute path */ if (xdg_dir && (strlen(xdg_dir) > 0) && (xdg_dir[0] == '/')) { - return append_paths(xdg_dir, suffix, 1, 0); + prefer_home_str = append_paths(xdg_dir, "racket/", 1, 0); + free_prefer_home_str = 1; } else { - free(xdg_dir); + if (xdg_dir) free(xdg_dir); } -#else - if ((which == RKTIO_PATH_INIT_DIR) || (which == RKTIO_INIT_FILE)) { + + if ((which == RKTIO_PATH_INIT_DIR) || (which == RKTIO_PATH_INIT_FILE)) { home_str = "~/"; - } else { /* RKTIO_PATH_{ADDON_DIR,PREF_DIR,PREF_FILE} */ + home_file = ".racketrc"; + } else { /* RKTIO_PATH_{ADDON_DIR,PREF_DIR,PREF_FILE,CACHE_DIR} */ home_str = "~/.racket/"; } -#endif +#endif } else { -#if defined(OS_X) && !defined(XONX) +#if defined(OS_X) && !defined(RACKET_XONX) && !defined(XONX) if (which == RKTIO_PATH_DESK_DIR) home_str = "~/Desktop/"; else if (which == RKTIO_PATH_DOC_DIR) @@ -2010,20 +2026,43 @@ char *rktio_system_path(rktio_t *rktio, int which) home_str = "~/"; } - alt_home = rktio_getenv(rktio, "PLTUSERHOME"); - if (alt_home) - home = append_paths(alt_home, home_str + 2, 1, 0); - else { - home = rktio_expand_user_tilde(rktio, home_str); - - if (!home) { - /* Something went wrong with the user lookup. Just drop "~'. */ - int h_len = strlen(home_str); - home = (char *)malloc(h_len - 2 + 1); - strcpy(home, home_str+2); + /* If `prefer_home_str` is non-NULL, it must be `malloc`ed */ + + if (prefer_home_str) { + if (alt_home) + prefer_home = append_paths(alt_home, prefer_home_str + 2, 0, 0); + else + prefer_home = rktio_expand_user_tilde(rktio, prefer_home_str); + if (free_prefer_home_str) + free(prefer_home_str); + + if (directory_or_file_exists(rktio, prefer_home, prefer_home_file)) + home_str = NULL; + } else + prefer_home = NULL; + + if (home_str) { + if (alt_home) + home = append_paths(alt_home, home_str + 2, 1, 0); + else + home = rktio_expand_user_tilde(rktio, home_str); + + if (prefer_home) { + if (!directory_or_file_exists(rktio, home, home_file)) { + free(home); + home = prefer_home; + } else { + free(prefer_home); + prefer_home = NULL; + } } - } - + } else + home = prefer_home; + + /* At this point, we're using `home`, but `prefer_home` can still + be non-NULL and equal to `home` to mean that we should use + XDG-style file names. */ + if ((which == RKTIO_PATH_PREF_DIR) || (which == RKTIO_PATH_INIT_DIR) || (which == RKTIO_PATH_HOME_DIR) || (which == RKTIO_PATH_ADDON_DIR) || (which == RKTIO_PATH_DESK_DIR) || (which == RKTIO_PATH_DOC_DIR) @@ -2031,18 +2070,16 @@ char *rktio_system_path(rktio_t *rktio, int which) return home; if (which == RKTIO_PATH_INIT_FILE) { -#if defined(OS_X) && !defined(XONX) - return append_paths(home, ".racketrc", 1, 0); -#elif USE_XDG_BASEDIR - return append_paths(home, "racketrc.rktl", 1, 0); -#else - return append_paths(home, ".racketrc", 1, 0); -#endif + if (prefer_home) + return append_paths(prefer_home, "racketrc.rktl", 1, 0); + else + return append_paths(home, ".racketrc", 1, 0); } + if (which == RKTIO_PATH_PREF_FILE) { -#if defined(OS_X) && !defined(XONX) +#if defined(OS_X) && !defined(RACKET_XONX) && !defined(XONX) return append_paths(home, "org.racket-lang.prefs.rktd", 1, 0); -#else +#else return append_paths(home, "racket-prefs.rktd", 1, 0); #endif } else {