57 lines
1.5 KiB
Racket
57 lines
1.5 KiB
Racket
(module file racket/base
|
|
(require racket/file
|
|
racket/path
|
|
(prefix-in mz: (only-in mzscheme
|
|
open-input-file
|
|
open-output-file)))
|
|
(provide find-relative-path
|
|
explode-path
|
|
normalize-path
|
|
build-absolute-path
|
|
build-relative-path
|
|
filename-extension
|
|
file-name-from-path
|
|
path-only
|
|
delete-directory/files
|
|
copy-directory/files
|
|
make-directory*
|
|
make-temporary-file
|
|
find-library
|
|
|
|
get-preference
|
|
put-preferences
|
|
|
|
(rename-out [-call-with-input-file* call-with-input-file*]
|
|
[-call-with-output-file* call-with-output-file*])
|
|
|
|
fold-files
|
|
find-files
|
|
pathlist-closure)
|
|
|
|
(define (build-relative-path p . args)
|
|
(if (relative-path? p)
|
|
(apply build-path p args)
|
|
(error 'build-relative-path "base path ~s is absolute" p)))
|
|
|
|
(define (build-absolute-path p . args)
|
|
(if (relative-path? p)
|
|
(error 'build-absolute-path "base path ~s is relative" p)
|
|
(apply build-path p args)))
|
|
|
|
(define (find-library name . cp)
|
|
(apply collection-file-path name cp))
|
|
|
|
(define (-call-with-input-file* file thunk . flags)
|
|
(let ([p (apply mz:open-input-file file flags)])
|
|
(dynamic-wind
|
|
void
|
|
(lambda () (thunk p))
|
|
(lambda () (close-input-port p)))))
|
|
|
|
(define (-call-with-output-file* file thunk . flags)
|
|
(let ([p (apply mz:open-output-file file flags)])
|
|
(dynamic-wind
|
|
void
|
|
(lambda () (thunk p))
|
|
(lambda () (close-output-port p))))))
|