]> git.eshelyaron.com Git - emacs.git/commitdiff
(insert-directory): If ls fails, get an error.
authorRichard M. Stallman <rms@gnu.org>
Sun, 1 Sep 1996 21:38:48 +0000 (21:38 +0000)
committerRichard M. Stallman <rms@gnu.org>
Sun, 1 Sep 1996 21:38:48 +0000 (21:38 +0000)
lisp/files.el

index 35c430c19426d2cba6b1286360e9c7e2ec7e8bbe..9c848463fe85a53fb1f83caa3c842c1272c9e672 100644 (file)
@@ -2631,55 +2631,59 @@ If WILDCARD, it also runs the shell specified by `shell-file-name'."
                 wildcard full-directory-p)
       (if (eq system-type 'vax-vms)
          (vms-read-directory file switches (current-buffer))
-       (if wildcard
-           ;; Run ls in the directory of the file pattern we asked for.
-           (let ((default-directory
-                   (if (file-name-absolute-p file)
-                       (file-name-directory file)
-                     (file-name-directory (expand-file-name file))))
-                 (pattern (file-name-nondirectory file))
-                 (beg 0))
-             ;; Quote some characters that have special meanings in shells;
-             ;; but don't quote the wildcards--we want them to be special.
-             ;; We also currently don't quote the quoting characters
-             ;; in case people want to use them explicitly to quote
-             ;; wildcard characters.
-             (while (string-match "[ \t\n;<>&|()#$]" pattern beg)
-               (setq pattern
-                     (concat (substring pattern 0 (match-beginning 0))
-                             "\\"
-                             (substring pattern (match-beginning 0)))
-                     beg (1+ (match-end 0))))
-             (call-process shell-file-name nil t nil
-                           "-c" (concat "\\"  ;; Disregard shell aliases!
-                                        insert-directory-program
-                                        " -d "
-                                        (if (stringp switches)
-                                            switches
-                                          (mapconcat 'identity switches " "))
-                                        " "
-                                        pattern)))
-         ;; SunOS 4.1.3, SVr4 and others need the "." to list the
-         ;; directory if FILE is a symbolic link.
-         (apply 'call-process
-                insert-directory-program nil t nil
-                (let (list)
-                  (if (listp switches)
-                      (setq list switches)
-                    (if (not (equal switches ""))
-                        (progn
-                          ;; Split the switches at any spaces
-                          ;; so we can pass separate options as separate args.
-                          (while (string-match " " switches)
-                            (setq list (cons (substring switches 0 (match-beginning 0))
-                                             list)
-                                  switches (substring switches (match-end 0))))
-                          (setq list (nreverse (cons switches list))))))
-                  (append list
-                          (list
-                           (if full-directory-p
-                               (concat (file-name-as-directory file) ".")
-                             file))))))))))
+       (or (= 0
+              (if wildcard
+                  ;; Run ls in the directory of the file pattern we asked for.
+                  (let ((default-directory
+                          (if (file-name-absolute-p file)
+                              (file-name-directory file)
+                            (file-name-directory (expand-file-name file))))
+                        (pattern (file-name-nondirectory file))
+                        (beg 0))
+                    ;; Quote some characters that have special meanings in shells;
+                    ;; but don't quote the wildcards--we want them to be special.
+                    ;; We also currently don't quote the quoting characters
+                    ;; in case people want to use them explicitly to quote
+                    ;; wildcard characters.
+                    (while (string-match "[ \t\n;<>&|()#$]" pattern beg)
+                      (setq pattern
+                            (concat (substring pattern 0 (match-beginning 0))
+                                    "\\"
+                                    (substring pattern (match-beginning 0)))
+                            beg (1+ (match-end 0))))
+                    (call-process shell-file-name nil t nil
+                                  "-c" (concat "\\"  ;; Disregard shell aliases!
+                                               insert-directory-program
+                                               " -d "
+                                               (if (stringp switches)
+                                                   switches
+                                                 (mapconcat 'identity switches " "))
+                                               " "
+                                               pattern)))
+                ;; SunOS 4.1.3, SVr4 and others need the "." to list the
+                ;; directory if FILE is a symbolic link.
+                (apply 'call-process
+                       insert-directory-program nil t nil
+                       (let (list)
+                         (if (listp switches)
+                             (setq list switches)
+                           (if (not (equal switches ""))
+                               (progn
+                                 ;; Split the switches at any spaces
+                                 ;; so we can pass separate options as separate args.
+                                 (while (string-match " " switches)
+                                   (setq list (cons (substring switches 0 (match-beginning 0))
+                                                    list)
+                                         switches (substring switches (match-end 0))))
+                                 (setq list (nreverse (cons switches list))))))
+                         (append list
+                                 (list
+                                  (if full-directory-p
+                                      (concat (file-name-as-directory file) ".")
+                                    file)))))))
+           ;; We get here if ls failed.
+           ;; Access the file to get a suitable error.
+           (access-file file "Reading directory"))))))
 
 (defvar kill-emacs-query-functions nil
   "Functions to call with no arguments to query about killing Emacs.