[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/files.el
From: |
Richard M. Stallman |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/files.el |
Date: |
Sun, 02 Dec 2001 19:02:52 -0500 |
Index: emacs/lisp/files.el
diff -c emacs/lisp/files.el:1.539 emacs/lisp/files.el:1.540
*** emacs/lisp/files.el:1.539 Sat Nov 24 18:59:28 2001
--- emacs/lisp/files.el Sun Dec 2 19:02:52 2001
***************
*** 3576,3647 ****
;; We need the directory in order to find the right handler.
(let ((handler (find-file-name-handler (expand-file-name file)
'insert-directory)))
! (if handler
(funcall handler 'insert-directory file switches
wildcard full-directory-p)
(if (eq system-type 'vax-vms)
(vms-read-directory file switches (current-buffer))
! (let* ((coding-system-for-read
! (and enable-multibyte-characters
! (or file-name-coding-system
! default-file-name-coding-system)))
! ;; This is to control encoding the arguments in call-process.
! (coding-system-for-write coding-system-for-read)
! (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)))
! (call-process
! shell-file-name nil t nil
! "-c" (concat (if (memq system-type '(ms-dos windows-nt))
! ""
! "\\") ; Disregard Unix shell aliases!
! insert-directory-program
! " -d "
! (if (stringp switches)
! switches
! (mapconcat 'identity switches " "))
! " -- "
! ;; 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.
! (shell-quote-wildcard-pattern 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
! (append
! (if (listp switches) switches
! (unless (equal switches "")
! ;; Split the switches at any spaces so we can
! ;; pass separate options as separate args.
! (split-string switches)))
! ;; Avoid lossage if FILE starts with `-'.
! '("--")
! (progn
! (if (string-match "\\`~" file)
! (setq file (expand-file-name file)))
! (list
! (if full-directory-p
! (concat (file-name-as-directory file) ".")
! file))))))))
(if (/= result 0)
- ;; We get here if `insert-directory-program' failed.
;; On non-Posix systems, we cannot open a directory, so
;; don't even try, because that will always result in
! ;; the ubiquitous "Access denied". Instead, show them
! ;; the `ls' command line and let them guess what went
! ;; wrong.
(if (and (file-directory-p file)
(memq system-type '(ms-dos windows-nt)))
(error
--- 3576,3652 ----
;; We need the directory in order to find the right handler.
(let ((handler (find-file-name-handler (expand-file-name file)
'insert-directory)))
! (if handler
(funcall handler 'insert-directory file switches
wildcard full-directory-p)
(if (eq system-type 'vax-vms)
(vms-read-directory file switches (current-buffer))
! (let (result available)
!
! ;; Read the actual directory using `insert-directory-program'.
! ;; RESULT gets the status code.
! (let ((coding-system-for-read
! (and enable-multibyte-characters
! (or file-name-coding-system
! default-file-name-coding-system)))
! ;; This is to control encoding the arguments in call-process.
! (coding-system-for-write coding-system-for-read))
! (setq result
! (if wildcard
! ;; Run ls in the directory part of the file pattern
! ;; using the last component as argument.
! (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)))
! (call-process
! shell-file-name nil t nil
! "-c"
! (concat (if (memq system-type '(ms-dos windows-nt))
! ""
! "\\") ; Disregard Unix shell aliases!
! insert-directory-program
! " -d "
! (if (stringp switches)
! switches
! (mapconcat 'identity switches " "))
! " -- "
! ;; 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.
! (shell-quote-wildcard-pattern 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
! (append
! (if (listp switches) switches
! (unless (equal switches "")
! ;; Split the switches at any spaces so we can
! ;; pass separate options as separate args.
! (split-string switches)))
! ;; Avoid lossage if FILE starts with `-'.
! '("--")
! (progn
! (if (string-match "\\`~" file)
! (setq file (expand-file-name file)))
! (list
! (if full-directory-p
! (concat (file-name-as-directory file) ".")
! file))))))))
!
! ;; If `insert-directory-program' failed, signal an error.
(if (/= result 0)
;; On non-Posix systems, we cannot open a directory, so
;; don't even try, because that will always result in
! ;; the ubiquitous "Access denied". Instead, show the
! ;; command line so the user can try to guess what went wrong.
(if (and (file-directory-p file)
(memq system-type '(ms-dos windows-nt)))
(error
***************
*** 3650,3674 ****
(if (listp switches) (concat switches) switches)
file result)
;; Unix. Access the file to get a suitable error.
! (access-file file "Reading directory"))
! ;; Replace "total" with "used", to avoid confusion.
! ;; Add in the amount of free space.
! (save-excursion
! (goto-char (point-min))
! (when (re-search-forward "^total" nil t)
(replace-match "used")
(end-of-line)
! (let (available)
! (with-temp-buffer
! (call-process "df" nil t nil ".")
! (goto-char (point-min))
! (forward-line 1)
! (skip-chars-forward "^ \t")
! (forward-word 3)
! (let ((end (point)))
! (forward-word -1)
! (setq available (buffer-substring (point) end))))
! (insert " available " available))))))))))
(defun insert-directory-safely (file switches
&optional wildcard full-directory-p)
--- 3655,3690 ----
(if (listp switches) (concat switches) switches)
file result)
;; Unix. Access the file to get a suitable error.
! (access-file file "Reading directory")
! (error "Listing directory failed but `access-file' worked")))
!
! ;; Try to insert the amount of free space.
! (save-excursion
! (goto-char (point-min))
! ;; First find the line to put it on.
! (when (re-search-forward "^total" nil t)
! ;; Try to find the number of free blocks.
! (save-match-data
! (with-temp-buffer
! (call-process "df" nil t nil ".")
! ;; Usual format is a header line
! ;; followed by a line of numbers.
! (goto-char (point-min))
! (forward-line 1)
! (if (not (eobp))
! (progn
! ;; Move to the end of the "available blocks" number.
! (skip-chars-forward "^ \t")
! (forward-word 3)
! ;; Copy it into AVAILABLE.
! (let ((end (point)))
! (forward-word -1)
! (setq available (buffer-substring (point) end)))))))
! (when available
! ;; Replace "total" with "used", to avoid confusion.
(replace-match "used")
(end-of-line)
! (insert " available " available)))))))))
(defun insert-directory-safely (file switches
&optional wildcard full-directory-p)
- [Emacs-diffs] Changes to emacs/lisp/files.el,
Richard M. Stallman <=
- [Emacs-diffs] Changes to emacs/lisp/files.el, Eli Zaretskii, 2001/12/04
- [Emacs-diffs] Changes to emacs/lisp/files.el, Richard M. Stallman, 2001/12/11
- [Emacs-diffs] Changes to emacs/lisp/files.el, Richard M. Stallman, 2001/12/13
- [Emacs-diffs] Changes to emacs/lisp/files.el, Richard M. Stallman, 2001/12/18
- [Emacs-diffs] Changes to emacs/lisp/files.el, Eli Zaretskii, 2001/12/21
- [Emacs-diffs] Changes to emacs/lisp/files.el, Richard M. Stallman, 2001/12/29