Changeset 15447
- Timestamp:
- 10/29/20 16:54:43 (3 years ago)
- Location:
- trunk/abcl/src/org/armedbear/lisp
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/FileStream.java
r15026 r15447 53 53 private final int bytesPerUnit; 54 54 55 public FileStream(Pathname pathname, String namestring,55 public FileStream(Pathname pathname, 56 56 LispObject elementType, LispObject direction, 57 57 LispObject ifExists, LispObject format) … … 72 72 */ 73 73 super(Symbol.FILE_STREAM); 74 final File file = new File(namestring);74 final File file = pathname.getFile(); 75 75 String mode = null; 76 76 if (direction == Keyword.INPUT) { … … 271 271 } 272 272 273 // ### make-file-stream pathname namestringelement-type direction if-exists external-format => stream273 // ### make-file-stream pathname element-type direction if-exists external-format => stream 274 274 private static final Primitive MAKE_FILE_STREAM = 275 275 new Primitive("make-file-stream", PACKAGE_SYS, true, 276 "pathname namestringelement-type direction if-exists external-format")276 "pathname element-type direction if-exists external-format") 277 277 { 278 278 @Override 279 279 public LispObject execute(LispObject first, LispObject second, 280 280 LispObject third, LispObject fourth, 281 LispObject fifth , LispObject sixth)281 LispObject fifth) 282 282 283 283 { … … 289 289 return type_error(first, Symbol.PATHNAME); 290 290 } 291 final LispObject namestring = checkString(second); 292 LispObject elementType = third; 293 LispObject direction = fourth; 294 LispObject ifExists = fifth; 295 LispObject externalFormat = sixth; 291 LispObject elementType = second; 292 LispObject direction = third; 293 LispObject ifExists = fourth; 294 LispObject externalFormat = fifth; 296 295 297 296 if (direction != Keyword.INPUT && direction != Keyword.OUTPUT && … … 304 303 } 305 304 try { 306 return new JarStream(pathname, namestring.getStringValue(),305 return new JarStream(pathname, 307 306 elementType, direction, ifExists, 308 307 externalFormat); … … 310 309 return error(new StreamError(null, e)); 311 310 } 312 } else if (pathname.isURL()) { 311 } else if (pathname instanceof URLPathname 312 && !(URLPathname.isFile(pathname))) { 313 313 if (direction != Keyword.INPUT) { 314 314 error(new FileError("Only direction :INPUT is supported for URLs.", pathname)); 315 315 } 316 316 try { 317 return new URLStream(pathname, namestring.getStringValue(),317 return new URLStream(pathname, 318 318 elementType, direction, ifExists, 319 319 externalFormat); … … 323 323 } else { 324 324 try { 325 return new FileStream(pathname, namestring.getStringValue(),325 return new FileStream(pathname, 326 326 elementType, direction, ifExists, 327 327 externalFormat); -
trunk/abcl/src/org/armedbear/lisp/JarStream.java
r15391 r15447 56 56 private final int bytesPerUnit; 57 57 58 public JarStream(Pathname pathname, String namestring,59 60 58 public JarStream(Pathname pathname, 59 LispObject elementType, LispObject direction, 60 LispObject ifExists, LispObject format) 61 61 throws IOException 62 62 { -
trunk/abcl/src/org/armedbear/lisp/URLStream.java
r15252 r15447 56 56 private final int bytesPerUnit; 57 57 58 public URLStream(Pathname pathname, String namestring,58 public URLStream(Pathname pathname, 59 59 LispObject elementType, LispObject direction, 60 60 LispObject ifExists, LispObject format) -
trunk/abcl/src/org/armedbear/lisp/open.lisp
r15396 r15447 115 115 (t 116 116 (upgraded-element-type element-type)))) 117 (let* ((p athname(merge-pathnames filename))118 ( namestring (namestring (if (typep pathname'logical-pathname)119 (translate-logical-pathname pathname)120 pathname))))117 (let* ((p (merge-pathnames filename)) 118 (pathname (if (typep p 'logical-pathname) 119 (translate-logical-pathname p) 120 p))) 121 121 (when (wild-pathname-p pathname) 122 122 (error 'file-error … … 147 147 :pathname pathname 148 148 :format-control "The file ~S does not exist." 149 :format-arguments (list namestring))))149 :format-arguments (list pathname)))) 150 150 (:create 151 151 ;; CREATE-NEW-FILE "atomically creates a new, empty file named by 152 152 ;; this abstract pathname if and only if a file with this name does 153 153 ;; not yet exist." See java.io.File.createNewFile(). 154 (create-new-file namestring)))155 (make-file-stream pathname namestringelement-type :input nil external-format))154 (create-new-file (namestring pathname)))) 155 (make-file-stream pathname element-type :input nil external-format)) 156 156 (:probe 157 157 (case if-does-not-exist … … 161 161 :pathname pathname 162 162 :format-control "The file ~S does not exist." 163 :format-arguments (list namestring))))163 :format-arguments (list pathname)))) 164 164 (:create 165 165 ;; CREATE-NEW-FILE "atomically creates a new, empty file named by 166 166 ;; this abstract pathname if and only if a file with this name does 167 167 ;; not yet exist." See java.io.File.createNewFile(). 168 (create-new-file namestring)))169 (let ((stream (make-file-stream pathname namestringelement-type168 (create-new-file (namestring pathname)))) 169 (let ((stream (make-file-stream pathname element-type 170 170 :input nil external-format))) 171 171 (when stream … … 179 179 :pathname pathname 180 180 :format-control "The file ~S does not exist." 181 :format-arguments (list namestring))))181 :format-arguments (list pathname)))) 182 182 ((nil) 183 183 (unless (probe-file pathname) … … 189 189 :pathname pathname 190 190 :format-control "The file ~S already exists." 191 :format-arguments (list namestring))))191 :format-arguments (list pathname)))) 192 192 ((nil) 193 193 (when (probe-file pathname) … … 200 200 :pathname pathname 201 201 :format-control "The file ~S is a directory." 202 :format-arguments (list namestring)))203 (let ((backup-name (concatenate 'string namestring".bak")))202 :format-arguments (list pathname))) 203 (let ((backup-name (concatenate 'string (namestring pathname) ".bak"))) 204 204 (when (probe-file backup-name) 205 205 (when (probe-directory backup-name) 206 206 (error 'file-error 207 207 :pathname pathname 208 :format-control "Unable to rename ~S ."209 :format-arguments (list namestring)))208 :format-control "Unable to rename ~S to ~S." 209 :format-arguments (list pathname backup-name))) 210 210 (delete-file backup-name)) 211 211 (rename-file pathname backup-name)))) … … 215 215 :format-control "Option not supported: ~S." 216 216 :format-arguments (list if-exists)))) 217 (let ((stream (make-file-stream pathname namestringelement-type217 (let ((stream (make-file-stream pathname element-type 218 218 direction if-exists external-format))) 219 219 (unless stream … … 221 221 :pathname pathname 222 222 :format-control "Unable to open ~S." 223 :format-arguments (list namestring)))223 :format-arguments (list pathname))) 224 224 stream)) 225 225 (t
Note: See TracChangeset
for help on using the changeset viewer.