(->namestring
(directory-pathname-as-file (working-directory-pathname))))
(set-working-directory-pathname! inside)
- ((ucode-primitive set-working-directory-pathname! 1)
- (string-for-primitive inside)))
+ ((ucode-primitive set-working-directory-pathname! 1) inside))
thunk
(lambda ()
(set! inside
(->namestring
(directory-pathname-as-file (working-directory-pathname))))
- ((ucode-primitive set-working-directory-pathname! 1)
- (string-for-primitive outside))
+ ((ucode-primitive set-working-directory-pathname! 1) outside)
(set-working-directory-pathname! outside)
(start-thread-timer)))))
(parent ())
(import (runtime)
define-primitives
- string-for-primitive
ucode-primitive
ucode-type)
(import (runtime char-syntax)
(add-boot-deps! '(runtime dynamic))
\f
(define (scheme-program-name)
- (string-from-primitive ((ucode-primitive scheme-program-name 0))))
+ ((ucode-primitive scheme-program-name 0)))
(define (command-line)
- (map string-from-primitive
- (vector->list ((ucode-primitive get-command-line 0)))))
+ (vector->list ((ucode-primitive get-command-line 0))))
(define-deferred param:load-init-file?
(make-settable-parameter #t))
(set! *command-line-arguments* '())
(let ((unused (or ((ucode-primitive get-unused-command-line 0)) '#())))
(parameterize ((param:load-init-file? #t))
- (process-keyword (map string-from-primitive (vector->list unused)) '())
+ (process-keyword (vector->list unused) '())
(for-each (lambda (act) (act))
(reverse after-parsing-actions))
(if (and (param:load-init-file?)
(lambda ()
(let loop ()
(if (not ((ucode-primitive primitive-fasdump)
- object (string-for-primitive filename) dump-option))
+ object filename dump-option))
(begin
(with-simple-restart 'retry "Try again."
(lambda ()
(lambda ()
(values pathname
(lambda ()
- ((ucode-primitive binary-fasload)
- (string-for-primitive (->namestring pathname))))
+ ((ucode-primitive binary-fasload) (->namestring pathname)))
(let ((notifier (loading-notifier pathname)))
(lambda (thunk)
(if (and src-pathname
(begin
(set! %env-cache (os/make-env-cache))
(vector-for-each (lambda (s)
- (let ((s (string-from-primitive s))
- (i (string-find-next-char s #\=)))
+ (let ((i (string-find-next-char s #\=)))
(if i
(let ((var (string-head s i))
(val (string-tail s (fix:+ i 1))))
(let ((channel
(open-channel
(lambda (p)
- (primitive (string-for-primitive filename) p)))))
+ (primitive filename p)))))
(if (or (channel-type=directory? channel)
(channel-type=unknown? channel))
(let ((reason
(lambda ()
(let ((result ((ucode-primitive open-pty-master 0))))
(values (make-channel (vector-ref result 0))
- (string-from-primitive (vector-ref result 1))
- (string-from-primitive (vector-ref result 2)))))))
+ (vector-ref result 1)
+ (vector-ref result 2))))))
(define (pty-master-send-signal channel signal)
((ucode-primitive pty-master-send-signal 2) (channel-descriptor channel)
(lambda ()
(add-to-gc-finalizer! open-directories
(make-directory-channel
- ((ucode-primitive new-directory-open 1)
- (string-for-primitive name)))))))
+ ((ucode-primitive new-directory-open 1) name))))))
(define (directory-channel-close channel)
(remove-from-gc-finalizer! open-directories channel))
(define (directory-channel-read channel)
- (string-from-primitive
- ((ucode-primitive new-directory-read 1)
- (directory-channel/descriptor channel))))
+ ((ucode-primitive new-directory-read 1)
+ (directory-channel/descriptor channel)))
(define (directory-channel-read-matching channel prefix)
- (string-from-primitive
- ((ucode-primitive new-directory-read-matching 2)
- (directory-channel/descriptor channel)
- (string-for-primitive prefix))))
+ ((ucode-primitive new-directory-read-matching 2)
+ (directory-channel/descriptor channel)
+ prefix))
\f
;;;; Select registry
(lambda () unspecific)
(lambda ()
((ucode-primitive dld-load-file 2)
- (and pathname (string-for-primitive (->namestring pathname)))
+ (and pathname (->namestring pathname))
p)
(let ((handle (make-dld-handle pathname (weak-cdr p))))
(with-thread-mutex-lock dld-handles-mutex
(guarantee string? name 'dld-lookup-symbol)
((ucode-primitive dld-lookup-symbol 2)
(dld-handle-address handle)
- (string-for-primitive name)))
+ name))
(define (dld-loaded-file? pathname)
(find-dld-handle
(define (top-level-repl/set-default-directory cmdl pathname)
cmdl
((ucode-primitive set-working-directory-pathname! 1)
- (string-for-primitive (->namestring pathname))))
+ (->namestring pathname)))
\f
;;;; Command Loops
substring?
vector->string ;(scheme base)
)
- (export (runtime)
- string-for-primitive
- string-from-primitive)
(export (runtime symbol)
%ascii-ustring!
%ascii-ustring-allocate
(if (implemented-primitive-procedure? (ucode-primitive dump-band* 2))
(let* ((pathname (merge-pathnames filename))
(namestring (->namestring pathname))
- (primitive (string-for-primitive namestring))
- (n (string-length primitive))
+ (n (string-length namestring))
(cell
(make-gc-finalized-object disk-save-filenames
(lambda (p)
(lambda (s)
(make-cell s))))
(string (cell-contents cell)))
- ((ucode-primitive substring-move-left! 5) primitive 0 n string 0)
+ ((ucode-primitive substring-move-left! 5) namestring 0 n string 0)
cell)
filename))
(->namestring
(if (default-object? filename)
(merge-pathnames
- (let ((filename
- (string-from-primitive
- ((ucode-primitive reload-band-name)))))
+ (let ((filename ((ucode-primitive reload-band-name))))
(if (not filename)
(error "no default band name available"))
filename))
(or (try pathname)
(system-library-pathname pathname))))))))))
(event-distributor/invoke! event:before-exit)
- ((ucode-primitive load-band) (string-for-primitive filename))))
+ ((ucode-primitive load-band) filename)))
(define (identify-world #!optional port)
(let ((port
(define (file-exists-direct? filename)
(let ((result
((ucode-primitive file-exists-direct? 1)
- (string-for-primitive (->namestring (merge-pathnames filename))))))
+ (->namestring (merge-pathnames filename)))))
(if (eq? 0 result)
#t
result)))
(define (file-exists-indirect? filename)
(let ((result
((ucode-primitive file-exists? 1)
- (string-for-primitive (->namestring (merge-pathnames filename))))))
+ (->namestring (merge-pathnames filename)))))
(if (eq? 0 result)
#f
result)))
(lambda (filename)
(let ((n
(procedure
- (string-for-primitive
- (->namestring (merge-pathnames filename))))))
+ (->namestring (merge-pathnames filename)))))
(and n
(let ((types
'#(regular
(eq? 'directory (file-type-indirect filename)))
(define (file-symbolic-link? filename)
- (string-from-primitive
- ((ucode-primitive file-symlink? 1)
- (string-for-primitive (->namestring (merge-pathnames filename))))))
+ ((ucode-primitive file-symlink? 1)
+ (->namestring (merge-pathnames filename))))
(define (file-access filename amode)
((ucode-primitive file-access 2)
- (string-for-primitive (->namestring (merge-pathnames filename)))
+ (->namestring (merge-pathnames filename))
amode))
(define (file-readable? filename)
(define (file-writeable? filename)
((ucode-primitive file-access 2)
(let ((pathname (merge-pathnames filename)))
- (let ((filename (string-for-primitive (->namestring pathname))))
+ (let ((filename (->namestring pathname)))
(if ((ucode-primitive file-exists? 1) filename)
filename
- (string-for-primitive (directory-namestring pathname)))))
+ (directory-namestring pathname))))
2))
(define (file-executable? filename)
\f
(define (file-touch filename)
((ucode-primitive file-touch 1)
- (string-for-primitive (->namestring (merge-pathnames filename)))))
+ (->namestring (merge-pathnames filename))))
(define (make-directory name)
((ucode-primitive directory-make 1)
- (string-for-primitive
- (->namestring (directory-pathname-as-file (merge-pathnames name))))))
+ (->namestring (directory-pathname-as-file (merge-pathnames name)))))
(define (delete-directory name)
((ucode-primitive directory-delete 1)
- (string-for-primitive
- (->namestring (directory-pathname-as-file (merge-pathnames name))))))
+ (->namestring (directory-pathname-as-file (merge-pathnames name)))))
(define (rename-file from to)
((ucode-primitive file-rename)
- (string-for-primitive (->namestring (merge-pathnames from)))
- (string-for-primitive (->namestring (merge-pathnames to)))))
+ (->namestring (merge-pathnames from))
+ (->namestring (merge-pathnames to))))
(define (delete-file filename)
((ucode-primitive file-remove)
- (string-for-primitive (->namestring (merge-pathnames filename)))))
+ (->namestring (merge-pathnames filename))))
(define (hard-link-file from to)
((ucode-primitive file-link-hard 2)
- (string-for-primitive (->namestring (merge-pathnames from)))
- (string-for-primitive (->namestring (merge-pathnames to)))))
+ (->namestring (merge-pathnames from))
+ (->namestring (merge-pathnames to))))
(define (soft-link-file from to)
((ucode-primitive file-link-soft 2)
- (string-for-primitive (->namestring from))
- (string-for-primitive (->namestring (merge-pathnames to)))))
+ (->namestring from)
+ (->namestring (merge-pathnames to))))
(define (delete-file-no-errors filename)
(call-with-current-continuation
(define (file-eq? x y)
((ucode-primitive file-eq?)
- (string-for-primitive (->namestring (merge-pathnames x)))
- (string-for-primitive (->namestring (merge-pathnames y)))))
+ (->namestring (merge-pathnames x))
+ (->namestring (merge-pathnames y))))
(define (current-file-time)
(call-with-temporary-file-pathname file-modification-time))
(define (directory-file-names directory #!optional include-dots?)
(let ((channel
(directory-channel-open
- (string-for-primitive
- (->namestring (pathname-as-directory (merge-pathnames directory))))))
+ (->namestring (pathname-as-directory (merge-pathnames directory)))))
(include-dots?
(if (default-object? include-dots?) #f include-dots?)))
(let loop ((result '()))
(dynamic-wind
(lambda ()
(let ((updater (fixed-objects-updater 'files-to-delete))
- (string (string-for-primitive (->namestring pathname))))
+ (string (->namestring pathname)))
(with-files-to-delete-locked
(lambda ()
(updater (lambda (filenames) (cons string filenames)))))))
(define (allocate-temporary-file pathname)
(and (not (file-exists? pathname))
(let ((updater (fixed-objects-updater 'files-to-delete))
- (filename (string-for-primitive (->namestring pathname))))
+ (filename (->namestring pathname)))
(with-files-to-delete-locked
(lambda ()
(and (file-touch pathname)
(if (file-exists? pathname)
(delete-file-no-errors pathname))
(let ((updater (fixed-objects-updater 'files-to-delete))
- (filename (string-for-primitive (->namestring pathname))))
+ (filename (->namestring pathname)))
(with-files-to-delete-locked
(lambda ()
(updater
(define (tcp-service->port service)
(if (exact-nonnegative-integer? service)
((ucode-primitive get-service-by-number 1) service)
- ((ucode-primitive get-service-by-name 2)
- (string-for-primitive service)
- (string-for-primitive "tcp"))))
+ ((ucode-primitive get-service-by-name 2) service "tcp")))
(define (open-unix-server-socket pathname)
- (let ((filename (string-for-primitive (->namestring pathname))))
+ (let ((filename (->namestring pathname)))
(open-channel
(lambda (p)
((ucode-primitive create-unix-server-socket 2) filename p)
((ucode-primitive new-open-tcp-stream-socket 3) host port p)))))))
(define (open-unix-stream-socket-channel pathname)
- (let ((filename (string-for-primitive (->namestring pathname))))
+ (let ((filename (->namestring pathname)))
(open-channel
(lambda (p)
(with-thread-timer-stopped
(define (get-host-by-name host-name)
(with-thread-timer-stopped
(lambda ()
- ((ucode-primitive get-host-by-name 1) (string-for-primitive host-name)))))
+ ((ucode-primitive get-host-by-name 1) host-name))))
(define (get-host-by-address host-address)
(with-thread-timer-stopped
(with-thread-timer-stopped
(lambda ()
((ucode-primitive canonical-host-name 1)
- (string-for-primitive host-name)))))
+ host-name))))
(define get-host-name
(ucode-primitive get-host-name 0))
((2) (every-loop char-8-bit? ustring2-ref string start end))
(else (every-loop char-8-bit? ustring3-ref string start end))))))
-(define (string-for-primitive string)
- (if (and (or (legacy-string? string)
- (and (ustring? string)
- (fix:= 1 (ustring-cp-size string))))
- (let ((end (string-length string)))
- (every-loop (lambda (cp) (fix:< cp #x80))
- cp1-ref string 0 end)))
- string
- (string->utf8 string)))
-
-(define (string-from-primitive string)
- (if (legacy-string? string)
- (utf8->string (legacy-string->bytevector string))
- string))
-
(define-integrable (every-loop proc ref string start end)
(let loop ((i start))
(if (fix:< i end)
(define (file-eq? p1 p2)
((ucode-primitive file-eq? 2)
- (string-for-primitive (->namestring (merge-pathnames p1)))
- (string-for-primitive (->namestring (merge-pathnames p2)))))
\ No newline at end of file
+ (->namestring (merge-pathnames p1))
+ (->namestring (merge-pathnames p2))))
\ No newline at end of file
\f
(define (file-modes filename)
((ucode-primitive file-modes 1)
- (string-for-primitive (->namestring (merge-pathnames filename)))))
+ (->namestring (merge-pathnames filename))))
(define-integrable (set-file-modes! filename modes)
((ucode-primitive set-file-modes! 2)
- (string-for-primitive (->namestring (merge-pathnames filename)))
+ (->namestring (merge-pathnames filename))
modes))
(define unix/file-access file-access) ;upwards compatability
(error "Can't find temporary directory.")))))
\f
(define (file-attributes-direct filename)
- (let ((v
- ((ucode-primitive file-attributes 1)
- (string-for-primitive (->namestring (merge-pathnames filename))))))
- (and v
- (begin
- (vector-set! v 0 (string-from-primitive (vector-ref v 0)))
- v))))
+ ((ucode-primitive file-attributes 1)
+ (->namestring (merge-pathnames filename))))
(define (file-attributes-indirect filename)
((ucode-primitive file-attributes-indirect 1)
- (string-for-primitive (->namestring (merge-pathnames filename)))))
+ (->namestring (merge-pathnames filename))))
(define-structure (file-attributes
(type vector)
(define (file-modification-time-direct filename)
((ucode-primitive file-mod-time 1)
- (string-for-primitive (->namestring (merge-pathnames filename)))))
+ (->namestring (merge-pathnames filename))))
(define (file-modification-time-indirect filename)
((ucode-primitive file-mod-time-indirect 1)
- (string-for-primitive (->namestring (merge-pathnames filename)))))
+ (->namestring (merge-pathnames filename))))
(define file-modification-time
file-modification-time-indirect)
(define (file-access-time-direct filename)
((ucode-primitive file-access-time 1)
- (string-for-primitive (->namestring (merge-pathnames filename)))))
+ (->namestring (merge-pathnames filename))))
(define (file-access-time-indirect filename)
((ucode-primitive file-access-time-indirect 1)
- (string-for-primitive (->namestring (merge-pathnames filename)))))
+ (->namestring (merge-pathnames filename))))
(define file-access-time
file-access-time-indirect)
(define (set-file-times! filename access-time modification-time)
- (let ((filename
- (string-for-primitive (->namestring (merge-pathnames filename)))))
+ (let ((filename (->namestring (merge-pathnames filename))))
((ucode-primitive set-file-times! 3)
filename
(or access-time (file-access-time-direct filename))
(let ((directory ((ucode-primitive get-user-home-directory 1) user-name)))
(if (not directory)
(error "Can't find user's home directory:" user-name))
- (pathname-as-directory (string-from-primitive directory))))
+ (pathname-as-directory directory)))
(define (current-home-directory)
(let ((home (get-environment-variable "HOME")))
(number->string gid 10)))
(define (unix/system string)
- (let ((wd-inside
- (string-for-primitive (->namestring (working-directory-pathname))))
+ (let ((wd-inside (->namestring (working-directory-pathname)))
(wd-outside)
(ti-outside))
(dynamic-wind
(set! ti-outside (thread-timer-interval))
(set-thread-timer-interval! #f))
(lambda ()
- ((ucode-primitive system 1) (string-for-primitive string)))
+ ((ucode-primitive system 1) string))
(lambda ()
((ucode-primitive set-working-directory-pathname! 1) wd-outside)
(set! wd-outside)
;; Linux kernel), and ISO9660 can be either DOS or unix format.
(let ((type
((ucode-primitive file-system-type 1)
- (string-for-primitive
- (->namestring
- (let loop ((pathname (merge-pathnames pathname)))
- (if (file-exists? pathname)
- pathname
- (loop (directory-pathname-as-file
- (directory-pathname pathname))))))))))
+ (->namestring
+ (let loop ((pathname (merge-pathnames pathname)))
+ (if (file-exists? pathname)
+ pathname
+ (loop (directory-pathname-as-file
+ (directory-pathname pathname)))))))))
(if (or (string-ci=? "fat" type)
(string-ci=? "hpfs" type)
(string-ci=? "iso9660" type)
(define (os/make-subprocess filename arguments environment working-directory
ctty stdin stdout stderr)
((ucode-primitive ux-make-subprocess 8)
- (string-for-primitive filename) arguments environment working-directory
- ctty stdin stdout stderr))
+ filename arguments environment working-directory ctty stdin stdout stderr))
(define (os/find-program program default-directory #!optional exec-path error?)
(let ((namestring
(pathname-simplify
(pathname-as-directory
(parse-namestring
- (string-from-primitive
- ((ucode-primitive working-directory-pathname)))
+ ((ucode-primitive working-directory-pathname))
local-host)))))
(define (set-working-directory-pathname! name)