まずソースは/package/uhttpd/srcの中にあり適当に見てみます。
$ grep "index.html" *コンスタントで定義されているのはuhttpd-utils.cの中ということがわかります。
uhttpd-utils.c: "index.html",
static char *uh_index_files[] = {と定義されています。確かに4つデフォルト値が配列として定義されているようです。
"index.html",
"index.htm",
"default.html",
"default.htm"
};
次にuh_index_filesはどこで使われているかというと、
$ grep "uh_index_files" *同ファイルの中で使用されているというのはわかります。
uhttpd-utils.c:static char *uh_index_files[] = {
uhttpd-utils.c: for( i = 0; i < array_size(uh_index_files); i++ )
uhttpd-utils.c: strncat(buffer, uh_index_files[i], sizeof(buffer));
その部分を実際に見てみると
else if( cl->server->conf->index_file )ここで残念なことが発覚します。
{
strncat(buffer, cl->server->conf->index_file, sizeof(buffer));
if( !stat(buffer, &s) && (s.st_mode & S_IFREG) )
{
memcpy(path_phys, buffer, sizeof(path_phys));
memcpy(&p.stat, &s, sizeof(p.stat));
}
}
else
{
for( i = 0; i < array_size(uh_index_files); i++ )
{
strncat(buffer, uh_index_files[i], sizeof(buffer));
if( !stat(buffer, &s) && (s.st_mode & S_IFREG) )
{
memcpy(path_phys, buffer, sizeof(path_phys));
memcpy(&p.stat, &s, sizeof(p.stat));
break;
}
*pathptr = 0;
}
}
定義されているものは配列でcl->server->conf->index_fileが定義されている場合はどうやら一つしか対応できないようです。
必死に複数の指定をしていたのですが残念な結果となりました。
蛇足ですがこの index_fileは2箇所で設定されていてコマンドラインの引数と/etc/httpd.confなどの設定ファイルから取得するようになっているようでした。(細かくは見ていませんが)
やはりソースを見るのが一番早いですね。
0 件のコメント:
コメントを投稿