]> git.eshelyaron.com Git - emacs.git/commitdiff
(file-name-sans-extension, file-name-extension): Don't
authorEli Zaretskii <eliz@gnu.org>
Mon, 22 Oct 2001 16:11:12 +0000 (16:11 +0000)
committerEli Zaretskii <eliz@gnu.org>
Mon, 22 Oct 2001 16:11:12 +0000 (16:11 +0000)
count the leading dots in file names as signaling an extension.

lisp/files.el

index 2decbe51530be46329610b61777d7fd1b73e4adf..19ae4625625d61830ce2427341018752027c75b7 100644 (file)
@@ -2238,11 +2238,13 @@ we do not remove backup version numbers, only true file version numbers."
 
 (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 @@ The extension, in a file name, is the part that follows the last `.'."
 
 (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 @@ that delimits the extension, and if FILENAME has no extension,
 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
             "")))))