Changeset 15447


Ignore:
Timestamp:
10/29/20 16:54:43 (3 years ago)
Author:
Mark Evenson
Message:

SYS:MAKE-FILE-STREAM doesn't need a namestring

Manipulation of pathnames should happen (mostly) with the objects
themselves rather than their namestring.

Location:
trunk/abcl/src/org/armedbear/lisp
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/FileStream.java

    r15026 r15447  
    5353    private final int bytesPerUnit;
    5454
    55     public FileStream(Pathname pathname, String namestring,
     55    public FileStream(Pathname pathname,
    5656                      LispObject elementType, LispObject direction,
    5757                      LispObject ifExists, LispObject format)
     
    7272         */
    7373        super(Symbol.FILE_STREAM);
    74         final File file = new File(namestring);
     74        final File file = pathname.getFile();
    7575        String mode = null;
    7676        if (direction == Keyword.INPUT) {
     
    271271    }
    272272
    273     // ### make-file-stream pathname namestring element-type direction if-exists external-format => stream
     273    // ### make-file-stream pathname element-type direction if-exists external-format => stream
    274274    private static final Primitive MAKE_FILE_STREAM =
    275275        new Primitive("make-file-stream", PACKAGE_SYS, true,
    276                       "pathname namestring element-type direction if-exists external-format")
     276                      "pathname element-type direction if-exists external-format")
    277277    {
    278278        @Override
    279279        public LispObject execute(LispObject first, LispObject second,
    280280                                  LispObject third, LispObject fourth,
    281                                   LispObject fifth, LispObject sixth)
     281                                  LispObject fifth)
    282282
    283283        {
     
    289289                return type_error(first, Symbol.PATHNAME);
    290290            }
    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;
    296295           
    297296            if (direction != Keyword.INPUT && direction != Keyword.OUTPUT &&
     
    304303                }
    305304                try {
    306                     return new JarStream(pathname, namestring.getStringValue(),
     305                    return new JarStream(pathname,
    307306                                         elementType, direction, ifExists,
    308307                                         externalFormat);
     
    310309                    return error(new StreamError(null, e));
    311310                }
    312             } else if (pathname.isURL()) {
     311            } else if (pathname instanceof URLPathname
     312                       && !(URLPathname.isFile(pathname))) {
    313313                if (direction != Keyword.INPUT) {
    314314                    error(new FileError("Only direction :INPUT is supported for URLs.", pathname));
    315315                }
    316316                try {
    317                     return new URLStream(pathname, namestring.getStringValue(),
     317                    return new URLStream(pathname,
    318318                                         elementType, direction, ifExists,
    319319                                         externalFormat);
     
    323323            } else {
    324324                try {
    325                     return new FileStream(pathname, namestring.getStringValue(),
     325                    return new FileStream(pathname,
    326326                                          elementType, direction, ifExists,
    327327                                          externalFormat);
  • trunk/abcl/src/org/armedbear/lisp/JarStream.java

    r15391 r15447  
    5656    private final int bytesPerUnit;
    5757
    58     public JarStream(Pathname pathname, String namestring,
    59                           LispObject elementType, LispObject direction,
    60                           LispObject ifExists, LispObject format)
     58    public JarStream(Pathname pathname,
     59                     LispObject elementType, LispObject direction,
     60                     LispObject ifExists, LispObject format)
    6161        throws IOException
    6262    {
  • trunk/abcl/src/org/armedbear/lisp/URLStream.java

    r15252 r15447  
    5656    private final int bytesPerUnit;
    5757
    58     public URLStream(Pathname pathname, String namestring,
     58    public URLStream(Pathname pathname,
    5959                     LispObject elementType, LispObject direction,
    6060                     LispObject ifExists, LispObject format)
  • trunk/abcl/src/org/armedbear/lisp/open.lisp

    r15396 r15447  
    115115                       (t
    116116                        (upgraded-element-type element-type))))
    117   (let* ((pathname (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)))
    121121    (when (wild-pathname-p pathname)
    122122      (error 'file-error
     
    147147                   :pathname pathname
    148148                   :format-control "The file ~S does not exist."
    149                    :format-arguments (list namestring))))
     149                   :format-arguments (list pathname))))
    150150         (:create
    151151          ;; CREATE-NEW-FILE "atomically creates a new, empty file named by
    152152          ;; this abstract pathname if and only if a file with this name does
    153153          ;; not yet exist." See java.io.File.createNewFile().
    154           (create-new-file namestring)))
    155        (make-file-stream pathname namestring element-type :input nil external-format))
     154          (create-new-file (namestring pathname))))
     155       (make-file-stream pathname element-type :input nil external-format))
    156156      (:probe
    157157       (case if-does-not-exist
     
    161161                   :pathname pathname
    162162                   :format-control "The file ~S does not exist."
    163                    :format-arguments (list namestring))))
     163                   :format-arguments (list pathname))))
    164164         (:create
    165165          ;; CREATE-NEW-FILE "atomically creates a new, empty file named by
    166166          ;; this abstract pathname if and only if a file with this name does
    167167          ;; not yet exist." See java.io.File.createNewFile().
    168           (create-new-file namestring)))
    169        (let ((stream (make-file-stream pathname namestring element-type
     168          (create-new-file (namestring pathname))))
     169       (let ((stream (make-file-stream pathname element-type
    170170                                       :input nil external-format)))
    171171         (when stream
     
    179179                   :pathname pathname
    180180                   :format-control "The file ~S does not exist."
    181                    :format-arguments (list namestring))))
     181                   :format-arguments (list pathname))))
    182182         ((nil)
    183183          (unless (probe-file pathname)
     
    189189                   :pathname pathname
    190190                   :format-control "The file ~S already exists."
    191                    :format-arguments (list namestring))))
     191                   :format-arguments (list pathname))))
    192192         ((nil)
    193193          (when (probe-file pathname)
     
    200200                     :pathname pathname
    201201                     :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")))
    204204              (when (probe-file backup-name)
    205205                (when (probe-directory backup-name)
    206206                  (error 'file-error
    207207                         :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)))
    210210                (delete-file backup-name))
    211211              (rename-file pathname backup-name))))
     
    215215                 :format-control "Option not supported: ~S."
    216216                 :format-arguments (list if-exists))))
    217        (let ((stream (make-file-stream pathname namestring element-type
     217       (let ((stream (make-file-stream pathname element-type
    218218                                       direction if-exists external-format)))
    219219         (unless stream
     
    221221                  :pathname pathname
    222222                  :format-control "Unable to open ~S."
    223                   :format-arguments (list namestring)))
     223                  :format-arguments (list pathname)))
    224224         stream))
    225225      (t
Note: See TracChangeset for help on using the changeset viewer.