Home フォーラム AZ-Prologサポート掲示板 CGI呼び出しを受けてパラメータを取得する際に、バイト数によりget_param/2の第2引数の型が変わる

  • このトピックには2件の返信、1人の参加者があり、最後にタナガにより8年、 5ヶ月前に更新されました。
2件の返信スレッドを表示中
  • 投稿者
    投稿
    • #58311
      タナガ
      ゲスト

      お世話になっております。

      CGI呼び出しを受けてパラメータを取得する際は、get_param/2の第2引数を使用しますが、
      こちらの述語の挙動確認をさせてください。

      1つのパラメータのサイズが256バイト以下の場合にはアトムが設定され、
      256バイトを超えた場合には文字列(文字コードを要素に持つリスト)が設定されます。
      こちらは仕様となりますでしょうか。
      純粋にアトムの長さ制限という点で考えますと、「アトムの長さは65,535文字」まで可能との
      記載があります。

      よろしくお願いいたします。
      以上です。

    • #58313
      ソフネック
      ゲスト

      現在の仕様は、確かに256文字未満の文字しかアトムに変換していません。

      次回のバージョンアップでは、65536文字未満に変更しますが、お急ぎのようでしたら、
      prologcgiは、ソースも提供しておりますので、ソースを修正してバイナリを再作成することも出来ます。

      <instdir>/system/pl/prologcgi.plの105行目の
      if_can_atom(After,Atom):- length(After,Lng),Lng<256,!,name(Atom,After).

      if_can_atom(After,Atom):- length(After,Lng),Lng<65536,!,name(Atom,After).
      に変更して、ビルドして再作成して頂けますか。

      Makefileは、 <instdir>/system/makeディレクトリの下にありますので、ご活用下さい。
      (instdirは通常、/usr/local/share/azprologになります)

      以上、宜しくお願いします。

    • #58315
      タナガ
      ゲスト

      ソフネック様 ご対応ありがとうございます。
      現在の仕様とのことで、拝承しました。

      今のところ、複数環境での実行が必要であり、また入力が65,535文字を超える可能性は低いため、
      引数受け取り時にatomicがfailした場合はatom_codesでアトムにしようと考えています。

      prologcgiのソースは初見でした。今後の参考にさせていただきます。

      以上です。

2件の返信スレッドを表示中
  • フォーラム「AZ-Prologサポート掲示板」には新規投稿および返信を追加できません。
上部へスクロール