[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

長いURLでのtextarea入力が失敗



こんにちは、青田です。

URLが長いページでtextareaを編集して、C-cC-cを押して入力を確定しようとすると、

w3m-form-input-textarea-save: Opening output file: file name too long, /home/hoge/.w3m/.textarea/file____home_hoge_website_too_long_file_nameid=1.txt

と出て入力を確定できず、*w3m form textarea*を閉じることができませんでした。
(too_long_file_nameの部分はもっと長いのですが省略しています)
また、C-cC-qでも同様のことがおこります。

textareaの保存に使っているファイル名が長過ぎるようで、
試してみたところ少なくとも私の環境ではディレクトリパスを除いたフォイル名が
254文字を超えるとこのエラーがでるようです。

ファイル名が長い時にURLから決まる部分を切り詰めるパッチを書きましたので添付します。

Index: w3m-form.el
===================================================================
RCS file: /storage/cvsroot/emacs-w3m/w3m-form.el,v
retrieving revision 1.156
diff -u -r1.156 w3m-form.el
--- w3m-form.el	9 Dec 2006 14:53:44 -0000	1.156
+++ w3m-form.el	14 Apr 2007 14:06:51 -0000
@@ -1068,7 +1068,8 @@
 (defun w3m-form-input-textarea-filename (url id)
   (let ((file "")
 	;; Interdit chars of Windows
-	(replace (regexp-opt '("\\" "/" ":" "*" "?" "\"" "<" ">" "|"))))
+	(replace (regexp-opt '("\\" "/" ":" "*" "?" "\"" "<" ">" "|")))
+	(max-file-path 254))
     (while (string-match replace url)
       (setq file (concat file (substring url 0 (match-beginning 0)) "_"))
       (setq url (substring url (match-end 0))))
@@ -1076,6 +1077,8 @@
     (while (string-match replace id)
       (setq file (concat file (substring id 0 (match-beginning 0)) "_"))
       (setq id (substring id (match-end 0))))
+    (if (< (- max-file-path 4) (length file))
+	(setq file (substring file 0 (- max-file-path 4 (length id)))))
     (setq file (concat file id ".txt"))
     (convert-standard-filename file)))