#define GETSTRING_DELIM '&' #define MAX_QUERY_STRING 200 #define MAX_GETSTRING_VALUE_LEN 1023 /* nul文字を含めない長さ */ /* '&' を改行文字とし、複数行が格納された zz_query_string グローバル変数の中から * 行頭が tgt に一致する行を探し、それに1文字あけて続く文字列を dstにコピーする */ char *zz_GetString(char *dst,char *tgt) { int i; char *line = zz_query_string; char *delim_ptr; int tgt_len = strlen(tgt); int line_len; int value_len; int value_start; for(i=0;i<MAX_QUERY_STRING;i++) { delim_ptr = strchr( line, GETSTRING_DELIM ); if ( delim_ptr ) line_len = delim_ptr - line; else line_len = strlen(line); /* 行の長さが tgt より長く、かつ行頭が tgt と一致した場合 */ if ( line_len > tgt_len /* && line[tgt_len] == '=' */ && !strncmp(line, tgt, tgt_len) ) { /* 値部分の開始位置と長さ */ value_start = tgt_len + 1; /* tgt '=' value */ value_len = line_len - value_start; /* 長さを丸める */ if ( value_len > MAX_GETSTRING_VALUE_LEN ) value_len = MAX_GETSTRING_VALUE_LEN; /* 値をコピー */ memcpy( dst, line + value_start, value_len ); dst[value_len] = '\0'; return dst; } if ( !delim_ptr ) break; line += line_len; line += line_len + 1; /* skip delim */ } *dst = '\0'; return dst; }
YukiWiki 1.6.2 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by aki.