[Armadillo:00318] Re[2]: Armadillo-J での getenv 関数

Kenji Hirano email@hidden
2005年 5月 27日 (金) 10:06:18 JST


お世話になっております,平野と申します.

On Thu, 26 May 2005 16:53:18 +0900
"nakai" <email@hidden> wrote:

> AJでsetenv、getenvは問題なく動きます。

返答ありがとうございます.
結果から言うと,FTP での転送モードを自動に設定していたので
拡張子が cgi だった為にアップする際 ASCII モードで転送して
いたようでした.初歩的なミスで恥ずかしい限りです...
バイナリモードで転送することで [Armadillo:00291] でのテスト
プログラムもお書きいただいたサンプルも動作しました.

> また、thttpdを使用してcgiによりgetenv、setenvを実行するには問題がありました。
> cgiでgetenvを実行したところ、必ずnullとなります。
> (setenvしてからgetenvでは問題なく変数を取得できます。)

thttpd での動作確認をしたところ,下記のもので動作を確認できました.
参考になれば幸いです.

-- 入力用 html --
//////////////////////
!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=Shift_JIS" http-equiv="content-type">
  <title>Input TEST</title>
  <style type="text/css">
<!--
SPAN.bold{
  font-weight: bold;
  }
-->
  </style>
</head>
<body style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<h1 style="font-family: lucida sans unicode; text-align: right;">Input
TEST</h1>
<hr><span class="bold"></span>
<form method="get" action="get_test.cgi"><input name="mode"
 value="additem" type="hidden"> <span class="bold">テスト</span> <input
 size="24" name="new_item" type="text"> <span class="bold">Value</span>
  <input size="8" name="new_price" type="text"> <input value="Write"
 type="submit">
</form>
<hr>
</body>
</html>

-- 出力用 cgi (get_test.c) --
//////////////////////
#include <stdio.h>
#include <stdlib.h>

char null_str[]="(NULL)";

char *getenv1(const char *str_);

char * getenv1(const char *str_)
{
	char *ans=NULL;
	ans=getenv(str_);
	if (ans==NULL)
		return null_str;
	else
		return ans;
}

main()
{
	int len;
	printf("Content-type: text/html\n\n");
	printf("<HTML><HEAD></HEAD><BODY>\n");
	printf("%s<BR>\n",getenv1("QUERY_STRING"));
	printf("</BODY></HTML>\n");
}

///////////////////////////////
なお,上記のソースは
http://www2k.biglobe.ne.jp/~motoi/cdecgi02.html
を参考にさせていただきました.




armadillo メーリングリストの案内