changeset 40187:85c9805cd237

(file-name-sans-extension, file-name-extension): Don't count the leading dots in file names as signaling an extension.
author Eli Zaretskii <eliz@gnu.org>
date Mon, 22 Oct 2001 16:11:12 +0000
parents e6f3d0e02726
children cd1cd95ca64e
files lisp/files.el
diffstat 1 files changed, 8 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/files.el	Mon Oct 22 14:53:30 2001 +0000
+++ b/lisp/files.el	Mon Oct 22 16:11:12 2001 +0000
@@ -2238,11 +2238,13 @@
 
 (defun file-name-sans-extension (filename)
   "Return FILENAME sans final \"extension\".
-The extension, in a file name, is the part that follows the last `.'."
+The extension, in a file name, is the part that follows the last `.',
+except that a leading `.', if any, doesn't count."
   (save-match-data
     (let ((file (file-name-sans-versions (file-name-nondirectory filename)))
 	  directory)
-      (if (string-match "\\.[^.]*\\'" file)
+      (if (and (string-match "\\.[^.]*\\'" file)
+	       (not (eq 0 (match-beginning 0))))
 	  (if (setq directory (file-name-directory filename))
 	      (expand-file-name (substring file 0 (match-beginning 0))
 				directory)
@@ -2251,7 +2253,8 @@
 
 (defun file-name-extension (filename &optional period)
   "Return FILENAME's final \"extension\".
-The extension, in a file name, is the part that follows the last `.'.
+The extension, in a file name, is the part that follows the last `.',
+except that a leading `.', if any, doesn't count.
 Return nil for extensionless file names such as `foo'.
 Return the empty string for file names such as `foo.'.
 
@@ -2260,7 +2263,8 @@
 the value is \"\"."
   (save-match-data
     (let ((file (file-name-sans-versions (file-name-nondirectory filename))))
-      (if (string-match "\\.[^.]*\\'" file)
+      (if (and (string-match "\\.[^.]*\\'" file)
+	       (not (eq 0 (match-beginning 0))))
           (substring file (+ (match-beginning 0) (if period 0 1)))
         (if period
             "")))))