From owner-FreeBSD-users-jp@jp.FreeBSD.org Wed Jul  7 19:11:00 2004
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) id i67AB0d34669;
	Wed, 7 Jul 2004 19:11:00 +0900 (JST)
	(envelope-from owner-FreeBSD-users-jp@jp.FreeBSD.org)
Received: from bonnet.teeda.jp (t106012.ipgw.phs.yoyogi.mopera.ne.jp [220.210.106.12])
	by castle.jp.FreeBSD.org (8.11.6p2+3.4W/8.11.3) with ESMTP/inet id i67AAuI34658
	for <FreeBSD-users-jp@jp.FreeBSD.org>; Wed, 7 Jul 2004 19:10:57 +0900 (JST)
	(envelope-from genta@teeda.jp)
Received: by bonnet.teeda.jp (Postfix, from userid 1001)
	id E78C36162; Wed,  7 Jul 2004 19:10:51 +0900 (JST)
From: genta@teeda.net (IHA, genta)
To: FreeBSD-users-jp@jp.FreeBSD.org
In-Reply-To: Your message of "Wed, 07 Jul 2004 17:28:44 +0900".
	<20040707172844H.harrier@seiryu.cim.hkg.ac.jp>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
X-Mailer: mnews [version 1.22PL7] 2003-09/29(Mon)
Message-ID: <040707191051.M0400871@bonnet.teeda.jp>
Reply-To: FreeBSD-users-jp@jp.FreeBSD.org
Precedence: list
Date: Wed, 7 Jul 2004 19:10:51 +0900
X-Sequence: FreeBSD-users-jp 80068
Subject: [FreeBSD-users-jp 80068] Off topic: mount -rw option (Re:
 =?ISO-2022-JP?B?GyRCREkyQyNII0QjRCQsJV4lJiVzJUg9UE1oJEobKEI=?=
 =?ISO-2022-JP?B?GyRCJCQbKEI=?=
	)
Sender: owner-FreeBSD-users-jp@jp.FreeBSD.org
X-Originator: genta@teeda.net
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+040628

$B0KGH$G$9!%(B($B%*%U%H%T%C%/$G$9(B)

src/sbin/mount$B0J2<$rE,Ev$K<P$aFI$_$7$?$H$3$m!$(B
$B$J$+$J$+LLGr$+$C$?$N$GJs9p$7$^$9!%(B

$B$=$NA0$K!D!D!$(B
$BIT9,$K$J$i$J$$$?$a$N!$F|!9$N?4$,$1(B($BFI$`2ACM$N$"$k=g(B)$B$r(B3$B$D$[$I(B:

    (1) $BIaCJ$O(B mount -t ufs $B$r;H$*$&!%(B
        readonly$B$K$7$?$$;~$@$1(B -r $B$r$D$1$h$&!%(B

    (2) mount -rw $B$H;XDj$9$k$N$O0-$$=,47!%(B
        $B;XDj$7$F$b!$$?$^$?$^F0$/$1$I!$$$$DB-$r$9$/$o$l$F$b$*$+$7$/$J$$$N$G(B
        $B;XDj$7$A$c$@$a!%(Bmount -r -w$B$b$$$C$7$g!%(B

    (3) mount -o rw $B$O$$$$$1$I!$;XDj$7$F$bC1$KL5;k$5$l$k$@$1!%(B
        $B$3$l$O!$@N$+$i$N=,47$G<j$,>!<j$K(B -o rw $B$HBG$C$F$7$^$&?M$`$1$K!$(B
        $B?F@Z$K$b%(%i!<$K$7$J$$$G$*$$$F$/$l$F$$$k!$$H;W$&$Y$-!%(B

$B$G$O!$0J2<!$$*$b$7$m$+$C$?$H$3$m$r(B;

(1) mount -o rw $B%*%W%7%g%s$O!$(Bmount_*$B$KEO$5$:!$C1$KL5;k$5$l$k(B

    "-o rw" $B%*%W%7%g%s$O(Bman$B$K5-:\$5$l$F$$$J$$$?$a!$(B
    $B;XDj$9$k$H%(%i!<$K$J$k$N$+$H;W$$$-$d!$$J$i$J$$!%(B
    ($B$*$=$i$/8_49@-$r0];}$9$k$?$a(B)

    $B$=$7$F!$;XDj$7$?$H$7$F$bC1$KL5;k$5$l$k!%(B

    mount.c$B$N(Bmangle$B4X?t$G!$(Bmount(1)$B$K;XDj$5$l$?(B-o $B%*%W%7%g%s$rFI$_!$(B
    mount_* $B$r(Bfork & exec$B$9$k:]$KEO$9$?$a$N(Bargv, argc$B$r:n$C$F$$$k$,!$(B
    mangle$B$G$O!$(B"-o rw" $B$,;XDj$5$l$F$$$F$b!$(Bargv$B$KF~$l$:C1$KL5;k$7$F$$$k!%(B

---- cut here ---
void
mangle(options, argcp, argv)
{
  : (snip)
        for (s = options; (p = strsep(&s, ",")) != NULL;)
                if (*p != '\0') {
                        if (*p == '-') {
                          : (snip)
                        } else if (strcmp(p, "rw") != 0) {
                                // "rw" $B0J30$r(Bargv$B$X(B
                                argv[argc++] = "-o";
                                argv[argc++] = p;
                        }
                }
---- cut here ----


(2) mount -r $B%*%W%7%g%s(B
    mount.c$BFbIt$G$O(B "-o ro" $B$,;XDj$5$l$?$,$4$H$/?6Iq$&!%(B

(3) mount -w $B%*%W%7%g%s(B
    mount.c$BFbIt$G$O(B "-o noro" $B$,;XDj$5$l$?$,$4$H$/?6Iq$&!%(B

(4) mount -rw $B$H$7$?>l9g$NF0:n(B
    mount.c (main)$B$G$O!$(Bgetopt(3)$B$G(Bargv$B$r$J$a$F$$$k!%(B
    $B$3$N$?$a!$(B-rw $B$O!$(B*$B$?$^$?$^(B* "-r -w" $B$HF1$80UL#$K$J$k!%(B
    $BA0=R$N(B (2)$B!$(B(3) $B$K$h$j!$$3$l$O(B "-o ro -o noro" $B$HE83+$5$l$k!%(B

(5) mount_ufs$B$N!$%*%W%7%g%s$N2r<a$K$D$$$F(B
    mount_ufs$B$O(B *$B$?$^$?$^(B* $BC`<!E*$K(Bargv$B$r$J$a$F$$$k$N$G!$(B
    -o ro -o noro $B$H$$$C$?6q9g$K!$6%9g$9$k%*%W%7%g%s$,;XDj$5$l$k$H!$(B
    $B:G8e$N(B -o noro $B$,!$(B-o ro $B$N7k2L$r>e=q$-$9$k!%(B

    $B$3$NMM;R$O!$(Bmount_ufs.c (mount_ufs) $B$+$i!$(B
    mount(2)$B%7%9%F%`%3!<%k$NBh(B3$B0z?t(Bflags$B$r:n$k$?$a$K8F$P$l$F$$$k!$(B
    getmntopts.c (getmntopts)$B$NF,$"$?$j$G!$(B

        printf("DEBUG: getmntopts: -o option %s specified\n", optbuf);

    $B$H$+!$E,Ev$K$O$5$s$G$_$k$3$H$G4QB,$G$-$k!%(B

    % mount -d -rw /dev/hoge /mnt
    exec: mount_ufs -o ro -o noro /dev/hoge /mnt
    DEBUG: getmntopts: -o option ro specified
    DEBUG: getmntopts: -o option noro specified

    getmntopts$B$G$O!$(Bflags |= MNT_RDONLY $B$7$?8e$K(B
    flags &= MNT_RDONLY $B$9$k$3$H$K$J$k$N$G!$(B
    $B7k2L$O(B -o noro $B$N$_$N>l9g$H$$$C$7$g!%(B

$B$D$^$j!$0J2<$N$h$&$KF0$-$^$9!%(B

    mount -rw        => read / write$B$H$J$k(B
    mount -r -w      => read / write$B$H$J$k(B
    mount -o rw,ro   => readonly$B$H$J$k(B
    mount -o ro,rw   => $BD>46$KH?$7$F!$(Breadonly$B$H$J$k(B
    mount -r -o rw   => $BD>46$KH?$7$F!$(Breadonly$B$H$J$k(B

--
$B0KGH(B $B8;B@(B / IHA, genta
genta@teeda.net
PGP Public Key: http://www.teeda.net/~genta/pgp5.genta.teeda.net.asc
fingerprint = AFDB B5EE 8FF9 D4BF E03B  559F E327 561A BF9E 4E99
