changeset 16052:e528e99859e3

(insert-directory): If ls fails, get an error.
author Richard M. Stallman <rms@gnu.org>
date Sun, 01 Sep 1996 21:38:48 +0000
parents ccf489f8596e
children 649590c94d41
files lisp/files.el
diffstat 1 files changed, 53 insertions(+), 49 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/files.el	Sun Sep 01 21:04:32 1996 +0000
+++ b/lisp/files.el	Sun Sep 01 21:38:48 1996 +0000
@@ -2631,55 +2631,59 @@
 		 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.