C言語でCGI: 環境変数一覧

| コメント(0) | トラックバック(0)

組み込みの関係で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 == '"' ){
        /* 置換 " → &quot; */
        fputs("&quot;", stdout);
      } else if ( *cptr == '<' ) {
        /* 置換 < → &lt; */
        fputs("&lt;", stdout);
      } else if ( *cptr == '>' ) {
        /* 置換 > → &gt; */
        fputs("&gt;", stdout);
      } else if ( *cptr == '&' ) {
        /* 置換 & → &amp; */
        fputs("&amp;", 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);
}

トラックバック(0)

トラックバックURL: http://uwi.but.jp/mt/mt-tb.cgi/199

コメントする

このブログ記事について

このページは、uwiが2007年12月10日 13:53に書いたブログ記事です。

ひとつ前のブログ記事は「Movable Type version 4.01 に変えてみた その後」です。

次のブログ記事は「何かCaptcha」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。