Thread View: fj.editor.emacs
5 messages
5 total messages
Started by Yasushi Shinjo
Mon, 07 May 2007 12:06
Emacs Interlocking mechanism
Author: Yasushi Shinjo
Date: Mon, 07 May 2007 12:06
Date: Mon, 07 May 2007 12:06
13 lines
1323 bytes
1323 bytes
$B?7>k!wC^GHBg3X>pJs$G$9!#$3$s$K$A$O!#(B Emacs $B$K$O!"J#?t$N(B Emacs $B$GF1$8%U%!%$%k$rJT=8$7$h$&$H$7$?7Y(B $B9p$r=P$95!G=$,$"$j$^$9$h$M!#$"$l$O!"$I$&$$$&;E3]$1$K$J$C$F$$(B $B$^$7$?$C$1!)(B $B$I$3$+$N%G%#%l%/%H%j$K%m%C%/%U%!%$%k$,CV$+$l$F$$$?$H;W$C$?$N(B $B$G$9$,!"8+$D$+$j$^$;$s!#(B $B@bL@$O!"(BM-x info $B$N(B Emacs $B$N(B Interlocking $B$K$"$j$^$9!#(B $B!@!@!!?7>k!!Lw!!!J$7$s$8$g$&!!$d$9$7!K!!!@!@(B $B!@!@!!C^GHBg3X!!EE;R!&>pJs!!!!!!!!!!!!!!!@!@(B
Re: Emacs Interlocking mechanism
Author: NAKAJI Hiroyuki
Date: Mon, 07 May 2007 16:15
Date: Mon, 07 May 2007 16:15
33 lines
2127 bytes
2127 bytes
中治@鳥取です。
>>>>> In <YAS.07May7210618@kirk.is.tsukuba.ac.jp>
>>>>> yas@is.tsukuba.ac.jp (Yasushi Shinjo) wrote:
> Emacs には、複数の Emacs で同じファイルを編集しようとした警
> 告を出す機能がありますよね。あれは、どういう仕掛けになってい
> ましたっけ?
詳しくは解読できませんが、src/filelock.c にそれらしいものがあるように
見えます。
> どこかのディレクトリにロックファイルが置かれていたと思ったの
> ですが、見つかりません。
lock_file_1() に、
if (boot_time)
sprintf (lock_info_str, "%s@%s.%lu:%lu", user_name, host_name,
(unsigned long) getpid (), (unsigned long) boot_time);
else
sprintf (lock_info_str, "%s@%s.%lu", user_name, host_name,
(unsigned long) getpid ());
err = symlink (lock_info_str, lfname);
なんてのがあるので、そうかなと思いました。
> 説明は、M-x info の Emacs の Interlocking にあります。
その説明文にある file-locked を grep で探してみました。
--
NAKAJI Hiroyuki (中治 弘行)
Re: Emacs Interlocking mechanism
Author: Katsumi Yamaoka
Date: Tue, 08 May 2007 03:24
Date: Tue, 08 May 2007 03:24
21 lines
1762 bytes
1762 bytes
動作はよくわかりませんが。 >>>>> In <YAS.07May7210618@kirk.is.tsukuba.ac.jp> 新城さん wrote: >> どこかのディレクトリにロックファイルが置かれていたと思ったの >> ですが、見つかりません。 UNIX 系の環境で例えば FILE の編集を始めると、Emacs 20 以上では 同じディレクトリに .#FILE -> user@host.pid:number という symlink ができます。これがそうですね。user@host... という ファイルはありません。ディレクトリが ro だとできないので、ロック もかかりません。XEmacs 21.* も同様です。 Emacs 19 では /usr/local/lib/emacs/lock/ のような場所にロックファ イルができるようなのですが、確認できませんでした。Windows では、 たぶん違うんでしょうね。 -- 山岡
Re: Emacs Interlocking mechanism
Author: Yasushi Shinjo
Date: Tue, 08 May 2007 09:47
Date: Tue, 08 May 2007 09:47
53 lines
3214 bytes
3214 bytes
$B?7>k!wC^GHBg3X>pJs$G$9!#$3$s$K$A$O!#(B
In article <b4mwszkvvyk.fsf@jpl.org>
Katsumi Yamaoka <yamaoka@jpl.org> writes:
> >> $B$I$3$+$N%G%#%l%/%H%j$K%m%C%/%U%!%$%k$,CV$+$l$F$$$?$H;W$C$?$N(B
> >> $B$G$9$,!"8+$D$+$j$^$;$s!#(B
> UNIX $B7O$N4D6-$GNc$($P(B FILE $B$NJT=8$r;O$a$k$H!"(BEmacs 20 $B0J>e$G$O(B
> $BF1$8%G%#%l%/%H%j$K(B
> .#FILE -> user@host.pid:number
> $B$H$$$&(B symlink $B$,$G$-$^$9!#$3$l$,$=$&$G$9$M!#(B
$B>pJs$"$j$,$H$&$4$6$$$^$9!#F1$8%G%#%l%/%H%j$G$7$?$+!#(B19 $B$NOC(B
$B$,>/$7$"$C$?$N$G!"JL$N%G%#%l%/%H%j$+$H;W$C$F$$$?$N$G$9$1$l$I!#(B
> Emacs 19 $B$G$O(B /usr/local/lib/emacs/lock/ $B$N$h$&$J>l=j$K%m%C%/%U%!(B
> $B%$%k$,$G$-$k$h$&$J$N$G$9$,!"3NG'$G$-$^$;$s$G$7$?!#(BWindows $B$G$O!"(B
> $B$?$V$s0c$&$s$G$7$g$&$M!#(B
$B$&$A$N(B Emacs 19.34 (Mule 2.3 (SUETSUMUHANA)) $B$@$H(B
/usr/local/com/emacs/lock/ $B$K%U%!%$%k$,:n$i$l$F$$$^$7$?!#$@(B
$B$$$VN/$C$F$$$k$J$"!#(B
------------------------------------------------------------
% ls -ld /usr/local/com/emacs/lock/
drwxrwxrwx 2 root 9216 May 8 17:24 /usr/local/com/emacs/lock/
% ls /usr/local/com/emacs/lock/|wc
163 163 6908
% ls -lt /usr/local/com/emacs/lock/ | head -2
total 163
-rw-rw-rw- 1 yas 5 May 5 22:42 !home!hlla!yas!.newsrc.el
%
------------------------------------------------------------
In article <866474ehj7.fsf@ra333.heimat.gr.jp>
NAKAJI Hiroyuki <nakaji@kankyo-u.ac.jp> writes:
> $BCf<#!wD;<h$G$9!#(B
> lock_file_1() $B$K!"(B
> if (boot_time)
> sprintf (lock_info_str, "%s@%s.%lu:%lu", user_name, host_name,
> (unsigned long) getpid (), (unsigned long) boot_time);
> else
> sprintf (lock_info_str, "%s@%s.%lu", user_name, host_name,
> (unsigned long) getpid ());
> err = symlink (lock_info_str, lfname);
> $B$J$s$F$N$,$"$k$N$G!"$=$&$+$J$H;W$$$^$7$?!#(B
C$B8@8l$N=j$G$7$?$+!#(BEmacs Lisp $B$O!"C5$7$?$s$@$1$l$I!#(B
lname $B$N>l=j$,F1$8%G%#%l%/%H%j$M!#(B
$B4X78$J$$$G$9$,!"(Bsprintf() $B4m$J$=$&!#(B
$B!@!@!!?7>k!!Lw!!!J$7$s$8$g$&!!$d$9$7!K!!!@!@(B
$B!@!@!!C^GHBg3X!!EE;R!&>pJs!!!!!!!!!!!!!!!@!@(B
Re: Emacs Interlocking mechanism
Author: NAKAJI Hiroyuki
Date: Tue, 08 May 2007 13:52
Date: Tue, 08 May 2007 13:52
31 lines
2316 bytes
2316 bytes
中治@鳥取です。 >>>>> In <YAS.07May8184743@kirk.is.tsukuba.ac.jp> >>>>> yas@is.tsukuba.ac.jp (Yasushi Shinjo) wrote: > > lock_file_1() に、 > > if (boot_time) > > sprintf (lock_info_str, "%s@%s.%lu:%lu", user_name, host_name, > > (unsigned long) getpid (), (unsigned long) boot_time); > > else > > sprintf (lock_info_str, "%s@%s.%lu", user_name, host_name, > > (unsigned long) getpid ()); > > err = symlink (lock_info_str, lfname); > > なんてのがあるので、そうかなと思いました。 > C言語の所でしたか。Emacs Lisp は、探したんだけれど。 > lname の場所が同じディレクトリね。 > 関係ないですが、sprintf() 危なそう。 この前に、 lock_info_str = (char *)alloca (strlen (user_name) + strlen (host_name) + LOCK_PID_MAX + 30); で lock_info_str の領域を確保しているので、長さを超える文字列を突っ込 まれてどうこうという心配はないんではないかと思いたいです。 ## 「危なそう」のココロをよくわかっていませんが。 -- NAKAJI Hiroyuki (中治 弘行)
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads