emacs-pid for v18 (Re: Maildir message filename containing regexp meta characters)

Shuhei KOBAYASHI shuhei @ aqua.ocn.ne.jp
2001年 4月 18日 (水) 19:39:34 JST


Tick してあった mail を整理していて, 

[Wanderlust:04288] (Date: Fri, 3 Mar 2000 20:50:52 +0900)

という mail から以下のような関数を発掘したのですが, 需要はありますか?

>>>>> In <u66v4z300.wl @ pingu.ak.nines.nec.co.jp>,
>>>>> Mito <mit @ nines.nec.co.jp> wrote:
> Nemacs 用の emacs-pid はこんなんでいいのかな?
> lock file に記述されている getpid() の値を利用しています。

[...]

> lock できないシステムでは動かないだろうし、PATH_LOCK が全然
> 別の場所に指定されて make されたものでも動かないと思いますが、
> これで良かったら、poe-18.el に commit してもらえませんか?

ちょっと調べた限りでは lock-buffer と unlock-buffer は常に定義される
みたいですが, lock file が期待通りにできない環境があるのでしょうか?

PATH_LOCK の方は lock-directory を定義することで対処してみました.

(defvar lock-directory (expand-file-name "../lock/" exec-directory))

(defun emacs-pid ()
  "Return the process ID of Emacs, as an integer."
  (let* ((pid-file-name (concat " emacs-pid "
                                (substring (current-time-string) 11 19)))
         (pid-file (expand-file-name pid-file-name lock-directory)))
    (with-temp-buffer
      (setq buffer-file-name pid-file-name)
      (unwind-protect
          (progn
            (set-buffer-modified-p t)
            (lock-buffer)
            (if (file-exists-p pid-file)
                (progn
                  (erase-buffer)
                  (insert-file-contents pid-file)
                  (read (current-buffer)))
              ;; `emacs-pid' must return some integer.
	      ;; この値では問題があるでしょうか?
	      (` (, (lsh -1 -1)))))
        (unlock-buffer)
        (set-buffer-modified-p nil)))))

;; with-temp-buffer を使っているのが気に入らないのだけど, とりあえず...
;; (installer が 'poe を require しているため, たまたま動いているのです)
-- 
Shuhei KOBAYASHI




More information about the APEL-ja mailing list