Re: Report on package efs 1.5
sandy@ibm550.sissa.it
Wed, 23 Feb 1994 02:24:33 +0100
Ken,
Try changing the respective hunk of code in efs.el.
;; Matches the file modes, link number, and owner string.
;; The + is for Apollos.
(defvar efs-modes-links-owner-regexp
(concat
"\\([^ ][-r][-w][^ ][-r][-w][^ ][-r][-w][^ ]\\)[-+]? *\\([0-9]+\\)"
" +\\([^ ]+\\) "))
and similarly in dired.el:
(defun dired-move-to-end-of-filename (&optional no-error bol eol)
;; Assumes point is at beginning of filename,
;; thus the rwx bit re-search-backward below will succeed in *this*
;; line if at all. So, it should be called only after
;; (dired-move-to-filename t).
;; On failure, signals an error (with non-nil NO-ERROR just returns nil).
;; This is the UNIX version.
(let ((bof (point))
file-type modes-start case-fold-search)
(or eol (setq eol (save-excursion (skip-chars-forward "^\r\n") (point))))
(or bol (setq bol (save-excursion (skip-chars-backward "^\r\n") (point))))
(and
(null no-error)
selective-display
(eq (char-after (1- bol)) ?\r)
(cond
((dired-subdir-hidden-p (dired-current-directory))
(error
(substitute-command-keys
"File line is hidden. Type \\[dired-hide-subdir] to unhide.")))
((error
(substitute-command-keys
"File line is omitted. Type \\[dired-omit-toggle] to un-omit.")))))
(if (or (memq ?l dired-internal-switches)
(memq ?g dired-internal-switches))
(if (save-excursion
(goto-char bol)
(re-search-forward
"[^ ][-r][-w][^ ][-r][-w][^ ][-r][-w][^ ][-+ 0-9]"
bof t))
(progn
(setq modes-start (match-beginning 0)
file-type (char-after modes-start))
;; Move point to end of name:
(if (eq file-type ?l) ; symlink
(progn
(if (search-forward " -> " eol t)
(goto-char (match-beginning 0))
(goto-char eol))
(and dired-ls-F-marks-symlinks
(eq (preceding-char) ?@) ; link really marked?
(memq ?F dired-internal-switches)
(forward-char -1))
(point))
;; else not a symbolic link
(goto-char eol)
;; ls -lF marks dirs, sockets and executables with exactly
;; one trailing character. -F may not actually be honored,
;; e.g. by an FTP ls in efs
(and
(memq ?F dired-internal-switches)
(let ((char (preceding-char)))
(or (and (eq char ?/) (eq file-type ?d))
(and (eq char ?*) (or
(memq
(char-after (+ modes-start 3))
'(?x ?s ?t))
(memq
(char-after (+ modes-start 6))
'(?x ?s ?t))
(memq
(char-after (+ modes-start 9))
'(?x ?s ?t))))
(and (eq char ?=) (eq file-type ?s))))
(forward-char -1))
(point)))
(and (null no-error)
(error "No file on this line")))
;; A brief listing
(if (eq (point) eol)
(and (null no-error)
(error "No file on this line"))
(goto-char eol)
(if (and (memq (preceding-char) '(?/ ?@ ?* ?=))
(memq ?F dired-internal-switches))
;; A guess, since without a long listing, we can't be sure.
(forward-char -1))
(point)))))
This should fix your "No file on this line" problem.
--sandy