(elmo-safe-filename): Rewrite to replace
authorhmurata <hmurata>
Sat, 30 Jul 2005 08:36:14 +0000 (08:36 +0000)
committerhmurata <hmurata>
Sat, 30 Jul 2005 08:36:14 +0000 (08:36 +0000)
`"' (double quote) into "_Q_".

elmo/ChangeLog
elmo/elmo-util.el

index 9c1d4d9..a6f9a81 100644 (file)
@@ -1,3 +1,8 @@
+2005-07-30  Hiroya Murata  <lapis-lazuli@pop06.odn.ne.jp>
+
+       * elmo-util.el (elmo-safe-filename): Rewrite to replace
+       `"' (double quote) into "_Q_".
+
 2005-07-18  Hiroya Murata  <lapis-lazuli@pop06.odn.ne.jp>
 
        * elmo-net.el (elmo-net-quote-chars): Abolish.
index 8953d0f..877fe51 100644 (file)
@@ -1041,12 +1041,25 @@ Emacs 19.28 or earlier does not have `unintern'."
            (setq dest (cons (cons name body) dest))))
       dest)))
 
-(defun elmo-safe-filename (folder)
-  (elmo-replace-in-string
-   (elmo-replace-in-string
-    (elmo-replace-in-string folder "/" " ")
-    ":" "__")
-   "|" "_or_"))
+(defun elmo-safe-filename (filename)
+  (let* ((replace-alist '(("/" . " ")
+                         (":" . "__")
+                         ("|" . "_or_")
+                         ("\"" . "_Q_")))
+        (regexp (concat "["
+                        (regexp-quote (mapconcat 'car replace-alist ""))
+                        "]"))
+        (rest filename)
+        converted)
+    (while (string-match regexp rest)
+      (setq converted (concat converted
+                             (substring rest 0 (match-beginning 0))
+                             (cdr (assoc (substring rest
+                                                    (match-beginning 0)
+                                                    (match-end 0))
+                                         replace-alist)))
+           rest (substring rest (match-end 0))))
+    (concat converted rest)))
 
 (defvar elmo-filename-replace-chars nil)