<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/minix_200/">
    <title>minix_200 @Wiki</title>
    <link>http://w.atwiki.jp/minix_200/</link>
    <atom:link href="https://w.atwiki.jp/minix_200/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>minix_200 @Wiki</description>

    <dc:language>ja</dc:language>
    <dc:date>2005-10-31T16:05:53+09:00</dc:date>
    <utime>1130742353</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/minix_200/pages/11.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/minix_200/pages/10.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/minix_200/pages/9.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/minix_200/pages/8.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/minix_200/pages/7.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/minix_200/pages/6.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/minix_200/pages/5.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/minix_200/pages/4.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/minix_200/pages/3.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/minix_200/pages/2.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/minix_200/pages/11.html">
    <title>make_image()</title>
    <link>https://w.atwiki.jp/minix_200/pages/11.html</link>
    <description>
      &lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
以下全文&lt;br&gt;
&lt;br&gt;
void make_image(char *image, char **procv)&lt;br&gt;
/* Collect a set of files in an image, each &quot;segment&quot; is nicely padded out&lt;br&gt;
* to SECTOR_SIZE, so it may be read from disk into memory without trickery.&lt;br&gt;
*/&lt;br&gt;
{&lt;br&gt;
　 FILE *imagef, *procf;&lt;br&gt;
　 char *proc, *file;&lt;br&gt;
　 int procn;&lt;br&gt;
　 struct image_header ihdr;&lt;br&gt;
　 struct exec phdr;&lt;br&gt;
　 struct stat st;&lt;br&gt;
&lt;br&gt;
　 making_image= 1;&lt;br&gt;
&lt;br&gt;
　 if ((imagef= fopen(image, &quot;w&quot;)) == nil) {&lt;br&gt;
　 　 fatal(image);&lt;br&gt;
　 }&lt;br&gt;
&lt;br&gt;
　 for (procn= 0; (proc= *procv++) != nil; procn++) {&lt;br&gt;
　 　 /* Remove the label from the file name. */&lt;br&gt;
　 　 if ((file= strchr(proc, &#039;:&#039;)) != nil)&lt;br&gt;
　 　 　 file++;&lt;br&gt;
　 　 else&lt;br&gt;
　 　 　 file= proc;&lt;br&gt;
&lt;br&gt;
　 　 /* Real files please, may need to seek. */&lt;br&gt;
　 　 if (stat(file, &amp;amp;st) &amp;lt; 0&lt;br&gt;
　 　 　 || (errno= EISDIR, !S_ISREG(st.st_mode))&lt;br&gt;
　 　 　 || (procf= fopen(file, &quot;r&quot;)) == nil&lt;br&gt;
　 　 ) fatal(proc);&lt;br&gt;
&lt;br&gt;
　 　 /* Read a.out header. */&lt;br&gt;
　 　 read_header(1,    </description>
    <dc:date>2005-10-31T16:05:53+09:00</dc:date>
    <utime>1130742353</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/minix_200/pages/10.html">
    <title>exec</title>
    <link>https://w.atwiki.jp/minix_200/pages/10.html</link>
    <description>
      構造体 exec&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
struct exec {&lt;br&gt;
int e_cnt;&lt;br&gt;
char *e_vec[MAXARG];&lt;br&gt;
};&lt;br&gt;
&lt;br&gt;    </description>
    <dc:date>2005-10-31T15:28:52+09:00</dc:date>
    <utime>1130740132</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/minix_200/pages/9.html">
    <title>basename()</title>
    <link>https://w.atwiki.jp/minix_200/pages/9.html</link>
    <description>
      引数　char* name&lt;br&gt;
&lt;br&gt;
返り値　char*&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
　 static char base[IM_NAME_MAX];&lt;br&gt;
　 char *p, *bp= base;&lt;br&gt;
&lt;br&gt;
　 if ((p= strchr(name, &#039;:&#039;)) != nil) {&lt;br&gt;
　 　 while (name &amp;lt;= p &amp;amp;&amp;amp; bp &amp;lt; base + IM_NAME_MAX - 1) {&lt;br&gt;
　 　 　 *bp++ = *name++;&lt;br&gt;
　 　 }&lt;br&gt;
　 }&lt;br&gt;
&lt;br&gt;
↑&quot;base&quot; に &quot;name&quot;の&#039;:&#039;までの左側をコピー？&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
　 for (;;) {&lt;br&gt;
　 　 if ((p= strrchr(name, &#039;/&#039;)) == nil) {&lt;br&gt;
　 　 　 p= name;&lt;br&gt;
　 　 　 break;&lt;br&gt;
　 　 }&lt;br&gt;
　 　 if (*++p != 0) break;&lt;br&gt;
　 　 *--p= 0;&lt;br&gt;
　 }&lt;br&gt;
&#039;/&#039;が見つかったらその左側を&quot;p&quot;が指す。なければ何もしない&lt;br&gt;

&lt;br&gt;
&lt;br&gt;
　 while (*p != 0 &amp;amp;&amp;amp; bp &amp;lt; base + IM_NAME_MAX - 1) {&lt;br&gt;
　 　 *bp++ = *p++;&lt;br&gt;
　 }&lt;br&gt;
&lt;br&gt;
&#039;/&#039;が見つかったらその左がわを&quot;base&quot;にコピーする&lt;br&gt;
つまり&#039;:&#039; から
&#039;/&#039;までを取り除いたものをbaseにに格納する。&lt;br&gt;
&#039;/&#039;がなければ何もしない。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
　 *bp= 0;&lt;br&gt;
　 return base;&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
語尾に&#039;0&#039;を付与して&quot;base&quot;返す。&lt;br&gt;
&lt;br&gt;
この関数は&lt;br&gt;
　 static char base[IM_NAME_MAX];&lt;br&gt;
を返す。staticなので普通のローカル変数と違って安心なはず。&lt;br&gt;

&lt;br&gt;
&lt;br&gt;
以下全文&lt;br&gt;
&lt;br&gt;
char *basename(char *name)&lt;br&gt;
/* Return the last component of name    </description>
    <dc:date>2005-10-31T15:14:07+09:00</dc:date>
    <utime>1130739247</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/minix_200/pages/8.html">
    <title>bread()</title>
    <link>https://w.atwiki.jp/minix_200/pages/8.html</link>
    <description>
      一文字だけFile fからlen
byte分だけ読み込んでbufに格納する。&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
以下全文&lt;br&gt;
&lt;br&gt;
void bread(FILE *f, char *name, void *buf, size_t len)&lt;br&gt;
/* Read len bytes. Don&#039;t dare return without them. */&lt;br&gt;
{&lt;br&gt;
　 if (len &amp;gt; 0 &amp;amp;&amp;amp; fread(buf, len, 1, f) != 1) {&lt;br&gt;
　 　 if (ferror(f)) fatal(name);&lt;br&gt;
　 　 fprintf(stderr, &quot;installboot: Unsuspected EOF on %s &quot;, name);&lt;br&gt;
　 　 exit(1);&lt;br&gt;
　 }&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;    </description>
    <dc:date>2005-10-31T15:51:50+09:00</dc:date>
    <utime>1130741510</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/minix_200/pages/7.html">
    <title>image_header</title>
    <link>https://w.atwiki.jp/minix_200/pages/7.html</link>
    <description>
      &lt;br&gt;
&lt;br&gt;
&lt;br&gt;
#define IM_NAME_MAX　 63&lt;br&gt;
&lt;br&gt;
struct image_header {&lt;br&gt;
　 char　 　 name[IM_NAME_MAX + 1];　 /* Null terminated. */&lt;br&gt;
　 struct exec　 process;&lt;br&gt;
};&lt;br&gt;    </description>
    <dc:date>2005-10-31T11:44:00+09:00</dc:date>
    <utime>1130726640</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/minix_200/pages/6.html">
    <title>read_header()</title>
    <link>https://w.atwiki.jp/minix_200/pages/6.html</link>
    <description>
      a.outファイルのヘッダを読む関数&lt;br&gt;
&lt;br&gt;
[[strcut exec]] が良く分からない.&lt;br&gt;
&lt;br&gt;
引数ihdrは破壊的に更新される&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
　 if (talk &amp;amp;&amp;amp; !banner) {&lt;br&gt;
　 　 printf(&quot;　 text　 data　　 bss　　 size &quot;);&lt;br&gt;
　 　 banner= 1;&lt;br&gt;
　 }&lt;br&gt;
&lt;br&gt;
　 if (talk) {&lt;br&gt;
　 　 printf(&quot;%8ld%8ld%8ld%9ld %s &quot;,&lt;br&gt;
　 　 　 phdr-&amp;gt;a_text, phdr-&amp;gt;a_data, phdr-&amp;gt;a_bss,&lt;br&gt;
　 　 　 phdr-&amp;gt;a_text + phdr-&amp;gt;a_data + phdr-&amp;gt;a_bss, proc);&lt;br&gt;
　 }&lt;br&gt;
以下のようにセグメントのサイズ表示される？&lt;br&gt;
&lt;br&gt;
　 text　 data　　 bss　　 size&lt;br&gt;
　 xxxx　 xxxx　 xxxx　 xxxx&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
以下全文&lt;br&gt;
void read_header(int talk, char *proc, FILE *procf,
structimage_header*ihdr)&lt;br&gt;
/* Read the a.out header of a program and check it. If procf happens to be&lt;br&gt;
* nil then the header is already in *image_hdr and need only be checked.&lt;br&gt;
*/&lt;br&gt;
{&lt;br&gt;
　 int n, big= 0;&lt;br&gt;
　 static int banner= 0;&lt;br&gt;
　 struct exec *phdr= &amp;amp;ihdr-&amp;gt;process;&lt;br&gt;
&lt;br&gt;
　 if (procf == nil) {&lt;br&gt;
　 　 /* Header already present. */&lt;br&gt;
　 　 n= phdr-&amp;gt;a_hdrlen;&lt;br&gt;
　     </description>
    <dc:date>2005-10-31T17:20:20+09:00</dc:date>
    <utime>1130746820</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/minix_200/pages/5.html">
    <title>stat()</title>
    <link>https://w.atwiki.jp/minix_200/pages/5.html</link>
    <description>
      stat()について&lt;br&gt;
ファイルの状態を取得する &lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br&gt;
&lt;br&gt;&lt;/span&gt;&lt;b&gt;ｓtat&lt;/b&gt;(&lt;b&gt;const char *&lt;/b&gt;&lt;i&gt;path&lt;/i&gt;&lt;b&gt;, struct stat
*&lt;/b&gt;&lt;i&gt;buf&lt;/i&gt;&lt;b&gt;)&lt;/b&gt; は &lt;i&gt;path&lt;/i&gt;
で指定されたファイルの状態を取得して &lt;i&gt;buf&lt;/i&gt;
へ格納する。&lt;br&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;b&gt;&lt;br&gt;
返り値&lt;br&gt;&lt;/b&gt;&lt;/span&gt;成功した場合は 0
を返す。エラーの場合は -1 を返し、 &lt;i&gt;errno&lt;/i&gt;
に適切な値が設定される。&lt;br&gt;
&lt;br&gt;
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/stat.2.html    </description>
    <dc:date>2005-10-31T11:31:07+09:00</dc:date>
    <utime>1130725867</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/minix_200/pages/4.html">
    <title>bootimage.c</title>
    <link>https://w.atwiki.jp/minix_200/pages/4.html</link>
    <description>
      &lt;br&gt;
void report(char *label)&lt;br&gt;
/* installboot: label: No such file or directory */&lt;br&gt;
{&lt;br&gt;
　 fprintf(stderr, &quot;installboot: %s: %s\n&quot;, label, strerror(errno));&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
void fatal(char *label)&lt;br&gt;
{&lt;br&gt;
　 report(label);&lt;br&gt;
　 exit(1);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
上記はエラー関数&lt;br&gt;
&lt;br&gt;    </description>
    <dc:date>2005-10-31T11:15:54+09:00</dc:date>
    <utime>1130724954</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/minix_200/pages/3.html">
    <title>メニュー2</title>
    <link>https://w.atwiki.jp/minix_200/pages/3.html</link>
    <description>
      **更新履歴
#recent(20)
    </description>
    <dc:date>2005-10-31T10:52:03+09:00</dc:date>
    <utime>1130723523</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/minix_200/pages/2.html">
    <title>メニュー</title>
    <link>https://w.atwiki.jp/minix_200/pages/2.html</link>
    <description>
      メニュー
-[[トップページ]]
-[[メニュー]]
-[[メニュー2]]

    </description>
    <dc:date>2005-10-31T10:52:03+09:00</dc:date>
    <utime>1130723523</utime>
  </item>
  </rdf:RDF>
