commit 016ef388c9056d9a8057f6f9497647a726ac4f03
parent e19deed169c371c8f6b36124caeb0f05a87c8786
Author: Matsuda Kenji <info@mtkn.jp>
Date: Tue, 5 Nov 2024 21:06:15 +0900
update
Diffstat:
3 files changed, 168 insertions(+), 12 deletions(-)
diff --git a/man/draft/9p.html b/man/draft/9p.html
@@ -383,13 +383,108 @@ size[4] Rwalk tag[2] nwqid[2] nwqid*(qid[13])
<code>nwname</code>と<code>nwqid</code>が一致した場合は\
最後まで移動できたことになる。\
</p>
+<p>
+<code>walk</code>は<code>fid</code>を増殖させる唯一の方法である。\
+</p>
+
+<h3>open、create</h3>
+<p>
+<code>fid</code>を開いて(作成して)読み書きできる状態にする。
+</p>
+<pre><code>\
+size[4] Topen tag[2] fid[4] mode[1]
+size[4] Ropen tag[2] qid[13] iounit[4]
+
+size[4] Tcreate tag[2] fid[4] name[s] perm[4] mode[1]
+size[4] Rcreate tag[2] qid[13] iounit[4]
+</code></pre>
+<p>
+<code>open</code>は<code>fid</code>と紐付いたファイルを開く。\
+<code>mode</code>は読み込み専用の<code>OREAD</code>、\
+書き込み専用の<code>OWRITE</code>、\
+読み書きの<code>ORDWR</code>等である。\
+ファイルを開く手順は以下の通り:
+<ol>
+<li><code>attach</code>でルートディレクトリの<code>fid</code>を取得</li>
+<li>ルートディレクトリの<code>fid</code>から\
+<code>walk</code>で開きたいファイルの<code>fid</code>を取得</li>
+<li>その<code>fid</code>を<code>open</code>で開く</li>
+</ol>
+</p>
+<p>
+<code>create</code>は<code>fid</code>と紐付いたディレクトリに\
+新しいファイルを作成する。\
+<code>creat</code>ではなく<code>create</code>である。\
+作成が成功したら<code>fid</code>は新しく作成されたファイルに紐付く。\
+</p>
+
+<h3>read、write</h3>
+<p>
+ファイルを読み書きする。
+</p>
+<pre><code>\
+size[4] Tread tag[2] fid[4] offset[8] count[4]
+size[4] Rread tag[2] count[4] data[count]
+
+size[4] Twrite tag[2] fid[4] offset[8] count[4] data[count]
+size[4] Rwrite tag[2] count[4]
+</code></pre>
+<p>
+<code>read</code>は<code>fid</code>の<code>offset</code>バイト目\
+から<code>count</code>バイト読む。\
+読んだデータと、読めたデータサイズが\
+<code>data</code>、<code>count</code>ととして返される。\
+<code>write</code>は<code>fid</code>の<code>offset</code>バイト目\
+に<code>count</code>バイトのデータ<code>data</code>を書く。\
+書きこめたサイズが<code>count</code>として返される。\
+ファイルを読み書きするためには\
+あらかじめ<code>fid</code>を<code>open</code>する必要がある。\
+</p>
-<h3>open, create</h3>
-<h3>create</h3>
-<h3>read</h3>
-<h3>write</h3>
<h3>clunk</h3>
+<p>
+<code>fid</code>を忘れる。
+</p>
+<pre><code>\
+size[4] Tclunk tag[2] fid[4]
+size[4] Rclunk tag[2]
+</code></pre>
+<p>
+いらなくなった<code>fid</code>を忘れる。\
+一度忘れた<code>fid</code>は<code>walk</code>で別のファイルを取得する際に\
+再利用できる。\
+</p>
+
<h3>remove</h3>
-<h3>stat, wstat</h3>
+<p>
+ファイルを削除する。
+</p>
+<pre><code>\
+size[4] Tremove tag[2] fid[4]
+size[4] Rremove tag[2]
+</code></pre>
+<p>
+<code>fid</code>と紐付いたサーバー上のファイルを削除する。\
+<code>fid</code>は<code>clunk</code>したのと同様に忘れられる。\
+</p>
+
+<h3>stat、wstat</h3>
+<p>
+ファイルの属性を読み書きする。
+</p>
+<pre><code>\
+size[4] Tstat tag[2] fid[4]
+size[4] Rstat tag[2] stat[n]
+
+size[4] Twstat tag[2] fid[4] stat[n]
+size[4] Rwstat tag[2]
+</code></pre>
+<p>
+<code>stat</code>はファイルの属性を読む。\
+読めた情報は<code>stat</code>として返される。\
+<code>wstat</code>はファイルの属性を<code>stat</code>に変更する。\
+<code>stat</code>はファイルの名前や<code>qid</code>、サイズ、\
+作成日、更新日等の情報がバイト列になったものである。\
+</p>
<h2>Goによる実装</h2>
diff --git a/pub/draft/9p.html b/pub/draft/9p.html
@@ -238,14 +238,75 @@ size[4] Rwalk tag[2] nwqid[2] nwqid*(qid[13])
<code>fid</code>を起点に移動する。移動先のファイルを<code>newfid</code>にセットする。移動するディレクトリの数を<code>nwname</code>に、移動するディレクトリの名前を移動する順に<code>wname</code>にそれぞれセットする。例えばカレントディレクトリから<code>./dir1/dir2/</code>に移動する場合、<code>nwname</code>は<code>2</code>、<code>wname</code>は<code>{"dir1", "dir2"}</code>となる。<code>wname</code>の最後の要素はディレクトリでなくファイルでもいい。</p>
<p>
<code>wname</code>の最初の要素への移動が失敗した場合は<code>Rerror</code>が返される。それ以外の場合は<code>Rwalk</code>が返され、<code>qid</code>は移動が成功した順番にそのファイルの<code>qid</code>がセットされる。<code>nwname</code>と<code>nwqid</code>が一致した場合は最後まで移動できたことになる。</p>
+<p>
+<code>walk</code>は<code>fid</code>を増殖させる唯一の方法である。</p>
+
+<h3>open、create</h3>
+<p>
+<code>fid</code>を開いて(作成して)読み書きできる状態にする。
+</p>
+<pre><code>size[4] Topen tag[2] fid[4] mode[1]
+size[4] Ropen tag[2] qid[13] iounit[4]
+
+size[4] Tcreate tag[2] fid[4] name[s] perm[4] mode[1]
+size[4] Rcreate tag[2] qid[13] iounit[4]
+</code></pre>
+<p>
+<code>open</code>は<code>fid</code>と紐付いたファイルを開く。<code>mode</code>は読み込み専用の<code>OREAD</code>、書き込み専用の<code>OWRITE</code>、読み書きの<code>ORDWR</code>等である。ファイルを開く手順は以下の通り:
+<ol>
+<li><code>attach</code>でルートディレクトリの<code>fid</code>を取得</li>
+<li>ルートディレクトリの<code>fid</code>から<code>walk</code>で開きたいファイルの<code>fid</code>を取得</li>
+<li>その<code>fid</code>を<code>open</code>で開く</li>
+</ol>
+</p>
+<p>
+<code>create</code>は<code>fid</code>と紐付いたディレクトリに新しいファイルを作成する。<code>creat</code>ではなく<code>create</code>である。作成が成功したら<code>fid</code>は新しく作成されたファイルに紐付く。</p>
+
+<h3>read、write</h3>
+<p>
+ファイルを読み書きする。
+</p>
+<pre><code>size[4] Tread tag[2] fid[4] offset[8] count[4]
+size[4] Rread tag[2] count[4] data[count]
+
+size[4] Twrite tag[2] fid[4] offset[8] count[4] data[count]
+size[4] Rwrite tag[2] count[4]
+</code></pre>
+<p>
+<code>read</code>は<code>fid</code>の<code>offset</code>バイト目から<code>count</code>バイト読む。読んだデータと、読めたデータサイズが<code>data</code>、<code>count</code>ととして返される。<code>write</code>は<code>fid</code>の<code>offset</code>バイト目に<code>count</code>バイトのデータ<code>data</code>を書く。書きこめたサイズが<code>count</code>として返される。ファイルを読み書きするためにはあらかじめ<code>fid</code>を<code>open</code>する必要がある。</p>
-<h3>open, create</h3>
-<h3>create</h3>
-<h3>read</h3>
-<h3>write</h3>
<h3>clunk</h3>
+<p>
+<code>fid</code>を忘れる。
+</p>
+<pre><code>size[4] Tclunk tag[2] fid[4]
+size[4] Rclunk tag[2]
+</code></pre>
+<p>
+いらなくなった<code>fid</code>を忘れる。一度忘れた<code>fid</code>は<code>walk</code>で別のファイルを取得する際に再利用できる。</p>
+
<h3>remove</h3>
-<h3>stat, wstat</h3>
+<p>
+ファイルを削除する。
+</p>
+<pre><code>size[4] Tremove tag[2] fid[4]
+size[4] Rremove tag[2]
+</code></pre>
+<p>
+<code>fid</code>と紐付いたサーバー上のファイルを削除する。<code>fid</code>は<code>clunk</code>したのと同様に忘れられる。</p>
+
+<h3>stat、wstat</h3>
+<p>
+ファイルの属性を読み書きする。
+</p>
+<pre><code>size[4] Tstat tag[2] fid[4]
+size[4] Rstat tag[2] stat[n]
+
+size[4] Twstat tag[2] fid[4] stat[n]
+size[4] Rwstat tag[2]
+</code></pre>
+<p>
+<code>stat</code>はファイルの属性を読む。読めた情報は<code>stat</code>として返される。<code>wstat</code>はファイルの属性を<code>stat</code>に変更する。<code>stat</code>はファイルの名前や<code>qid</code>、サイズ、作成日、更新日等の情報がバイト列になったものである。</p>
<h2>Goによる実装</h2>
</article>
diff --git a/pub/rss.xml b/pub/rss.xml
@@ -5,8 +5,8 @@
<description>ウェブページの更新履歴</description>
<language>ja-jp</language>
<link>https://www.mtkn.jp</link>
-<lastBuildDate>Mon, 4 Nov 2024 21:10:24 +0900</lastBuildDate>
-<pubDate>Mon, 4 Nov 2024 21:10:24 +0900</pubDate>
+<lastBuildDate>Tue, 5 Nov 2024 21:02:53 +0900</lastBuildDate>
+<pubDate>Tue, 5 Nov 2024 21:02:53 +0900</pubDate>
<docs>https://www.rssboard.org/rss-specification</docs>
<item>
<title>麻婆豆腐</title>