2009年1月19日

[Apache-Users 7268] Re:[apachemljp] output_filterの中で、出力データを書き換えたい

** Apache ユーザーズメーリングリスト **
** 注意:このメールへの返信は Apache-Users へ行きます **

岡本さん
アドバイスありがとうございました。

コーディングのミスもあり手間取りましたが、
以下のようにして成功しました。

bbに対する処置は、不要なんですね。
参考まで。

static int my_output_filter(ap_filter_t *f,
apr_bucket_brigade *bb)
{
request_rec *r = f->r;

(中略)


apr_bucket_brigade* out_bb = apr_brigade_create(r->pool, f->c->bucket_alloc);
apr_brigade_printf(out_bb, NULL, NULL, "%s\n", "変換後のHTMLソース");
apr_bucket *b = apr_bucket_eos_create(f->c->bucket_alloc);

APR_BRIGADE_INSERT_TAIL(out_bb, b);
return ap_pass_brigade(f->next, out_bb);
}


  ⌒ヽ⌒ヽ⌒ヽ⌒ヽ⌒ヽ⌒ヽ⌒ヽ⌒ヽ⌒ヽ⌒ヽ⌒ヽ⌒ヽ⌒ヽ⌒ヽ⌒ヽ⌒
   ( Okamoto Toshiaki <okamoto3@xxxxx> さんのメール
O   〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜Fri, 16 Jan 2009 23:19:56 +0900
・°
───────────────────────────────────
Subject : [Apache-Users 7263] Re: [apachemljp] output_filterの中で、出力データを書き換えたい
───────────────────────────────────

> ** Apache ユーザーズメーリングリスト **
> ** 注意:このメールへの返信は Apache-Users へ行きます **
>
> 岡本です。
> output_filterの書き方は以下のページが参考になると思います。
> http://httpd.apache.org/docs/trunk/developer/output-filters.html
>
> apache-users@xxxxx さんは書きました:
> > ** Apache ユーザーズメーリングリスト **
> > ** 注意:このメールへの返信は Apache-Users へ行きます **
> >
> > output_filterの中で、出力データを書き換えたいと思います。
> > (1)bucket_brigade の中の bucket を入れ替えたりすればできる
> > (2)bucket_brigade を新しく作成し、bucket_brigade を入れ替える
> > (3)その他
> > どういう方法が考えられ、一番シンプルでしょうか。
> >
> > 恐らく(2)だと思うのですが、このように簡単にはいきませんでした。
> >
> >
> > static int hoge_output_filter(ap_filter_t *f,
> > apr_bucket_brigade *bb)
> > {
> >
> > apr_bucket *b;
> > char *cnv_text = apr_pcalloc(r->pool, HUGE_STRING_LEN);
> >
> > (中略:cnv_textに、変更したいHTMLソースをいれています。)
> >
> > apr_bucket_brigade* out_bb = apr_brigade_create(r->pool, f->c->bucket_alloc);
> > apr_bucket *nb = apr_bucket_pool_create(cnv_text, sizeof(cnv_text), r->pool, out_bb->bucket_alloc);
> >
> > APR_BRIGADE_INSERT_TAIL(out_bb, nb);
> > b = apr_bucket_eos_create(f->c->bucket_alloc);
> > APR_BRIGADE_INSERT_TAIL(out_bb, b);
> > apr_brigade_destroy(bb);
> > return ap_pass_brigade(f->next, out_bb);
> > }
> >
> >
> > --
> > 入退会・変更・配送一時停止は以下へ
> > http://mm.apache.jp/mailman/listinfo/apache-users
> >
>
> --
> 入退会・変更・配送一時停止は以下へ
> http://mm.apache.jp/mailman/listinfo/apache-users


───────────────── 北島 知司 <kitajima@xxxxx> ――
◇◇    株式会社ヴイワン                    ◇◇
 ◇◇◇ 〒213-0012 川崎市高津区坂戸3-2-1 KSPビル西棟 300-A1 ◇◇◇ 
  ◇◇  Phone 044-820-8164 / Fax 044-820-8165        ◇◇  
━━━◇━━━━━━━━━━━━━━━━━━━━━━━━━━━◇━━━


--
入退会・変更・配送一時停止は以下へ
http://mm.apache.jp/mailman/listinfo/apache-users


投稿者 xml-rpc : 2009年1月19日 09:41
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/81167
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。