Changeset 10601
- Timestamp:
- Sep 2, 2008, 11:58:11 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/win64/level-1/linux-files.lisp
r10033 r10601 194 194 (%signal-semaphore-ptr (semaphore-value s))) 195 195 196 (defun %os-getcwd (buf bufsize)196 (defun %os-getcwd (buf noctets) 197 197 ;; Return N < 0, if error 198 ;; N < bufsize: success, string is of length n 199 ;; N > bufsize: buffer needs to be larger. 200 (let* ((p (#+windows-target #__wgetcwd #-windows-target #_getcwd buf bufsize))) 198 ;; N < noctets: success, string is of length N (octets). 199 ;; N >= noctets: buffer needs to be larger. 200 (let* ((p #+windows-target 201 (#__wgetcwd buf (ash noctets -1)) 202 #-windows-target 203 (#_getcwd buf noctets))) 201 204 (declare (dynamic-extent p)) 202 205 (if (%null-ptr-p p) 203 206 (let* ((err (%get-errno))) 204 207 (if (eql err (- #$ERANGE)) 205 (+ bufsize bufsize)208 (+ noctets noctets) 206 209 err)) 207 210 #+windows-target 208 211 (do* ((i 0 (+ i 2))) 209 ((= i bufsize) (+ bufsize))212 ((= i noctets) (+ noctets noctets)) 210 213 (when (eql (%get-unsigned-word buf i) 0) 211 (return (ash i -1))))214 (return i))) 212 215 #-windows-target 213 (dotimes (i bufsize (+ bufsize bufsize))216 (dotimes (i noctets (+ noctets noctets)) 214 217 (when (eql 0 (%get-byte buf i)) 215 218 (return i)))))) … … 222 225 (%stack-block ((buf bufsize)) 223 226 (let* ((len (%os-getcwd buf bufsize))) 224 (cond ((< len 0) (%errno-disp len bufsize))227 (cond ((< len 0) (%errno-disp len)) 225 228 ((< len bufsize) 226 #+windows-target227 (setf (%get-unsigned-word buf (+ len len)) 0)228 #-windows-target229 (setf (%get-unsigned-byte buf len) 0)230 229 (values (get-foreign-namestring buf) len)) 231 230 (t (values nil len))))))) 232 231 (do* ((string nil) 233 (len 64)232 (len #+windows-target 128 #-windows-target 64) 234 233 (bufsize len len)) 235 234 ((multiple-value-setq (string len) (try-getting-dirname bufsize)) … … 646 645 (+ date unix-to-universal-time)))) 647 646 648 #-windows-target649 647 (defun %file-author (namestring) 648 #+windows-target (declare (ignore namestring)) 649 #-windows-target 650 650 (let* ((uid (nth-value 5 (%stat namestring)))) 651 651 (if uid
Note: See TracChangeset
for help on using the changeset viewer.