_ Apacheには、次のようなコードが意外に見つかります。HTTPというプロトコルの性質上、文字列比較処理が多くなります。僅かでもstrcmp(3)系の関数呼び出しを減らそうという意図です。 httpd-2.2.0/modules/ssl/ssl_engine_vars.c:96-102,118-123 96: switch (var[0]) { 97: case 'H': 98: case 'h': 99: if (strcEQ(var, "HTTP_USER_AGENT")) 100: result = apr_table_get(r->headers_in, "User-Agent"); 101: else if (strcEQ(var, "HTTP_REFERER")) 102: result = apr_table_get(r->headers_in, "Referer");
r->headers_in は apr_table_t 型で、apr_table_elts() という関数を使うと apr_array_header_t 型の値が取得できる。 これが先頭のデータになる。 const apr_array_header_t *arr = apr_table_elts(r->headers_in);で、apr_array_header_t は下記のような構造体になってる。 struct apr_array_header_t { apr_pool_t *pool; int elt_size; int nelts; int nalloc; char *elts; };この elts は char * なんだけど、apr_table_entry_t になっているっぽい。 なので、 apr_table_entry_t *elts = (apr_table_entry_t
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く