~ chicken-core (chicken-5) a8a9c1dd21be5cfbcff78671782f4f6101f2479d
commit a8a9c1dd21be5cfbcff78671782f4f6101f2479d Author: felix <felix@call-with-current-continuation.org> AuthorDate: Mon Aug 4 13:29:57 2025 +0100 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Mon Aug 4 13:29:57 2025 +0100 we just use "/" everywhere diff --git a/egg-environment.scm b/egg-environment.scm index 1dbda373..ee68df7c 100644 --- a/egg-environment.scm +++ b/egg-environment.scm @@ -75,7 +75,7 @@ EOF (string-append default-bindir "/" (foreign-value "C_CSI_PROGRAM" c-string))) (define default-builder - (make-pathname default-bindir (foreign-value "C_CHICKEN_DO_PROGRAM" c-string))) + (string-append default-bindir "/" (foreign-value "C_CHICKEN_DO_PROGRAM" c-string))) (define target-librarian (foreign-value "C_TARGET_LIBRARIAN" c-string)) (define target-librarian-options (foreign-value "C_TARGET_LIBRARIAN_FLAGS" c-string)) @@ -120,14 +120,15 @@ EOF (define cache-directory (or (get-environment-variable "CHICKEN_EGG_CACHE") - (make-pathname (or (system-cache-directory) - (current-directory)) - chicken-install-program))) + (string-append (or (system-cache-directory) + (current-directory)) + "/" + chicken-install-program))) (define cache-metadata-directory ;; Directory where the VERSION, TIMESTAMP and STATUS files are ;; stored (under their corresponding egg directory). - (make-pathname cache-directory ".cache-metadata")) + (string-append cache-directory "/.cache-metadata")) (define +version-file+ "VERSION") (define +timestamp-file+ "TIMESTAMP") diff --git a/manual/Module (chicken pathname) b/manual/Module (chicken pathname) index 13b3e2e2..a1bd95ec 100644 --- a/manual/Module (chicken pathname) +++ b/manual/Module (chicken pathname) @@ -31,8 +31,7 @@ For any component that is not contained in {{PATHNAME}}, {{#f}} is returned. Returns a string that names the file with the components {{DIRECTORY, FILENAME}} and (optionally) {{EXTENSION}} with {{SEPARATOR}} being the directory separation indicator -(usually {{/}} on UNIX systems and {{\}} on Windows, defaulting to whatever -platform this is running on). +({{/}}). {{DIRECTORY}} can be {{#f}} (meaning no directory component), a string or a list of strings. {{FILENAME}} and {{EXTENSION}} should be strings or {{#f}}. @@ -78,7 +77,7 @@ Performs a simple "normalization" on the {{PATHNAME}}, suitably for or {{unix}} and defaults to on whatever platform is currently in use. All relative path elements and duplicate separators are processed and removed. If {{NAME}} ends with -a {{/}} or is empty, the appropriate slash is appended to the tail. +a {{/}} or is empty, a slash is appended to the tail. No directories or files are actually tested for existence; this procedure only canonicalises path syntax. diff --git a/pathname.scm b/pathname.scm index b8ab39be..3edf5f01 100644 --- a/pathname.scm +++ b/pathname.scm @@ -83,9 +83,7 @@ (irregex-match-data? (absolute-pathname-root pn))) (define-inline (*char-pds? ch) - (if ##sys#windows-platform - (memq ch '(#\\ #\/)) - (eq? #\/ ch))) + (eq? #\/ ch)) (define (chop-pds str) (and str @@ -100,7 +98,7 @@ (define make-pathname) (define make-absolute-pathname) -(let ((pds (if ##sys#windows-platform "\\" "/"))) +(let () (define (conc-dirs dirs) (##sys#check-list dirs 'make-pathname) @@ -112,7 +110,7 @@ (loop (cdr strs)) (string-append (chop-pds (car strs)) - pds + "/" (loop (cdr strs)))))))) (define (canonicalize-dirs dirs) @@ -150,7 +148,7 @@ (let ((dir (canonicalize-dirs dirs))) (if (absolute-pathname? dir) dir - (##sys#string-append pds dir))) + (##sys#string-append "/" dir))) file ext)))) (define decompose-pathname @@ -240,11 +238,8 @@ (cdr parts))) (else (cons part parts)))) (lambda (path #!optional (platform bldplt)) - (let ((sep (if (eq? platform 'windows) #\\ #\/))) - (define (pds? c) - (if (eq? platform 'windows) - (memq c '(#\/ #\\)) - (eq? c #\/))) + (let ((sep #\/)) + (define (pds? c) (eq? c #\/)) (##sys#check-string path 'normalize-pathname) (let ((len (string-length path)) (type #f)Trap