組み込みの関係でC(C++)でCGIを作る羽目に。
で、getenvで環境変数をとるのはいいとして、存在する環境変数一覧て出せないものかと。
CGI Program in Language Cで見つけた。
#include <stdio.h>
#include <ctype.h>
int main(int argc, char **argv, char **envv)
{
char **env, *cptr;
/* httpヘッダ */
fputs("Pragma: no-cache\r\n"
"Content-Type: text/html; charset=us-ascii\r\n\r\n",
stdout);
fputs("<!DOCTYPE html\n"
"PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\n"
"\"http://www.w3.org/TR/html4/loose.dtd\">\n"
"<html>\n"
"<head><title>Env Checker</title></head>\n"
"<body>\n"
"<ul>\n",
stdout);
for( env = envv; *env != NULL; env++ ){
fputs("\t<li>", stdout);
for( cptr = *env; *cptr != '\0'; cptr++ ){
if( *cptr == '"' ){
/* 置換 " → " */
fputs(""", stdout);
} else if ( *cptr == '<' ) {
/* 置換 < → < */
fputs("<", stdout);
} else if ( *cptr == '>' ) {
/* 置換 > → > */
fputs(">", stdout);
} else if ( *cptr == '&' ) {
/* 置換 & → & */
fputs("&", stdout);
} else if ( !( !isgraph(*cptr) && (*cptr != ' ') ) ) {
/* 表示可能文字ならそのまま出力 */
fputc( *cptr, stdout );
} else {
/* その他はコード */
fprintf( stdout, "<code>[<var>%02X</var>]</code>", *cptr );
}
}
fputs("</li>\n", stdout);
}
fputs("</ul>\n"
"</body>\n"
"</html>\n",
stdout);
return (0);
}
コメントする