From: Kenichi Handa Date: Tue, 3 Mar 1998 01:35:39 +0000 (+0000) Subject: (insert-directory): Bind coding-system-for-read to X-Git-Tag: emacs-20.3~2033 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=73ba53dc85bde59ad3682dc6af9b7ecf5f425576;p=emacs.git (insert-directory): Bind coding-system-for-read to file-name-coding-system or default-file-name-coding-system if enable-multibyte-characters is non-nil --- diff --git a/lisp/files.el b/lisp/files.el index a3ea8adac28..c25799990d7 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -2984,65 +2984,70 @@ 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)) - (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 " ")) - " -- " - (encode-coding-string - pattern - file-name-coding-system t)))) - ;; 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 - ;; Avoid lossage if FILE starts with `-'. - '("--") - (list - (encode-coding-string - (if full-directory-p - (concat (file-name-as-directory file) ".") - file) - file-name-coding-system t))))))) - ;; We get here if ls failed. - ;; Access the file to get a suitable error. - (access-file file "Reading directory")))))) + (let* ((coding-system-for-read + (and enable-multibyte-characters + (or file-name-coding-system + default-file-name-coding-system))) + (result + (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 " ")) + " -- " + (encode-coding-string + pattern + file-name-coding-system t)))) + ;; 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 + ;; Avoid lossage if FILE starts with `-'. + '("--") + (list + (encode-coding-string + (if full-directory-p + (concat (file-name-as-directory file) ".") + file) + file-name-coding-system t)))))))) + (if (/= result 0) + ;; 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.