ログデータベース操作関数使用例(Air C サンプル)

 Air C では、airWeb標準のMail Box形式データベースを操作するための関数群が提供されています。以下に代表的な使用例を記します。
  1. qopen ログデータベースのオープン
  2. qfind ログ番号の検索
  3. qclose ログデータベースのクローズ
  4. qupdate ログデータベースの更新
  5. qgoto ログデータベース内のメッセージ位置の移動
  6. qgetbody ログデータベース内のメッセージの取得
■qopen(ログデータベースのオープン)

 Mail Box形式ファイル C:\testdata.mbx をオープンする。

   1:    QDATA *qd;
   2: 
*  3:     qd=qopen("C:\\testdata.mbx");

■qfind(ログ番号の検索)

 Mail Box形式ファイル C:\testdata.mbx 内のログを Message-ID 20010401000000 で検索し、存在しない場合に何らかの処理をする。

   1:    QDATA *qd;
   2:    char idstr[128];
   3:
   4:    strcpy(idstr,"20010401000000");
   3:    qd=qopen("C:\\testdata.mbx");
*  4:    if(qfind(qd,QFIND_MESSAGEID,(int)idstr)==-1) {
   5:        (メッセージが見つからなかった時の処理)
   6:    }
   7:    qclose(qd);

 Mail Box形式ファイル C:\testdata.mbx 内のログを X-Number 20010401000000 で検索し、メッセージが存在する場合としない場合で処理を振り分ける。

   1:    QDATA *qd;
   2:    char idstr[128];
   3:    int index;
   4:
   5:    strcpy(idstr,"20010401000000");
*  6:    index=qfind(qd,QFIND_NUMBER,atoi(idstr));
   7:    if(index==-1) { {
   8:        (メッセージが見つからなかった時の処理)
   9:    } else {
  10:        (メッセージが見つかった時の処理)
  11:    }
  12:    qclose(qd);

■qclose(ログデータベースのクローズ)

 オープンされたMail Box形式ファイル C:\testdata.mbx をクローズする。

   1:    QDATA *qd;
   2: 
   3:    qd=qopen("C:\\testdata.mbx");
*  4:    qclose(qd);

■qupdate(ログデータベースの更新)

 Mail Box形式ファイルを C:\testdata.mbx を更新する(同じディレクトリィに testdata.g00 等の巡回一時ファイルが存在する時、更新が行われる)。

   1:    QDATA *qd;
   2: 
   3:    qd=qopen("C:\\testdata.mbx");
*  4:    qupdate(qd);
   5:    qclose(qd);

■qgoto(ログデータベース内のメッセージ位置の移動)

 Mail Box形式ファイル C:\testdata.mbx 内のログを X-Number 20010401000000 で検索し、メッセージ位置を合わせる。

   1:    QDATA *qd;
   2:    char idstr[128];
   3:    int index;
   3:    static char textbuf[BUFFER_SIZE];
   4:
   5:    strcpy(idstr,"20010401000000");
   6:    index=qfind(qd,QFIND_NUMBER,atoi(idstr));
   7:    if(index==-1) { {
   8:        (メッセージが見つからなかった時の処理)
   9:    } else {
* 10:        qgoto(qd,index);
  11:        qgetbody(qd,textbuf,BUFFER_SIZE);
  12:    }
  13:    qclose(qd);

■qgetbody(ログデータベース内のメッセージの取得)

 Mail Box形式ファイル C:\testdata.mbx 内のログを X-Number 20010401000000 で検索し、メッセージ内容を変数 textbuf へ転記する。

   1:    QDATA *qd;
   2:    char idstr[128];
   3:    int index;
   3:    static char textbuf[BUFFER_SIZE];
   4:
   5:    strcpy(idstr,"20010401000000");
   6:    index=qfind(qd,QFIND_NUMBER,atoi(idstr));
   7:    if(index==-1) { {
   8:        (メッセージが見つからなかった時の処理)
   9:    } else {
  10:        qgoto(qd,index);
* 11:        qgetbody(qd,textbuf,BUFFER_SIZE);
  12:    }
  13:    qclose(qd);