本文に進む 日本−日本語
日本HPホーム 製品とサービス お客様サポート/ ダウンロード ソリューション ご購入の方法
≫ お問い合わせ
詳細検索オプション
日本HPホーム
HP-UX リファレンス: セクション 1 : ユーザーコマンド (A~M) > m

mkstr(1)

HP-UX 11i Version 2: September 2004
≫ 

テクニカル ドキュメント

PDF版
フィードバック
ここから本文が始まります

 ≫ 目次

 ≫ 索引

名称

mkstr ― C ソースからファイルへのエラーメッセージの抽出

構文

mkstr [-] messagefile prefix file ...

説明

mkstr は C プログラムを検査し、プログラムによって使用されるエラーメッセージ文字列を含むファイルを作成します。 ファイル中の場所を参照することで、多くのエラー診断があるプログラムをはるかに小さくし、プログラムを実行する際のシステムオーバヘッドを低減できます。

mkstr は、指定した file のそれぞれを処理し、その名前を元の名前の前に連結した指定 prefix で構成されるファイルに、それぞれの改訂バージョンを書き込みます。 典型的な mkstr の使用法は以下のとおりです。

mkstr mystrings xx *.c 

このコマンドにより、カレントディレクトリにある C ソースファイルからのエラーメッセージは、全てファイル mystrings に置かれ、それらのファイルのソースの改訂されたコピーは、名前が xx のプレフィックスを付けられたファイルに置かれます。

メッセージファイルへ移すためにソースのエラーメッセージを処理する際、 mkstr は入力ファイルの文字列 error( を検索します。 その文字列を発見するたびに、先行する引用符の後から始まる C 文字列はメッセージファイルに置かれ、その後にヌル文字および改行文字が続きます。 読み出す際に簡単に使えるように、ヌル文字がメッセージを終了させ、改行文字により、その内容を調べるために ( cat, more などを使って ― cat(1) および more(1) を参照) エラーメッセージファイルをリストすることができます。

入力ファイルを修正したコピーはオリジナルと同一です。ただし、エラーメッセージファイルに移された任意の文字列が現れるたびに、メッセージを読み出すために lseek によって使用可能なオフセットポインタで置き換えられる点は異なります。

コマンド行がオプション - を含む場合、抽出されたエラーメッセージは、それをオーバライトするのではなく、指定したメッセージファイルの終端に置かれます (追加)。 これにより、すべてのファイルを再処理せずに、 mkstr によって以前に処理されたより大きなプログラムに含まれる個々のファイルを処理することができます。

最初の引き数として定数文字列をとることもできる、名前が"error"で終了する元のプログラムによって使われるすべての関数は、エラーメッセージファイルから文字列を検索するために書き直さなければなりません。

例えば、前例の使用法に基づくプログラムは、以下のようになります。

#include <stdio.h> 
#include <sys/types.h> 
#include <fcntl.h> 
 
char errfile[] = "mystrings"; 
 
error(offset, a2, a3, a4) 
int offset, a1, a2, a3; 
{" 
    char msg[256]; 
    static int fd = -1; 
 
    if (fd < 0) { 
        fd = open(errfile, O_RDONLY); 
        if (fd < 0) { 
     perror(errfile); 
     exit(1); 
        } 
    } 
 
    if (lseek(fd, (off_t) offset, 0) || read(fd, msg, 256) <= 0) { 
        printf("? Can't find error message in %s:\n", errfile); 
        perror(errfile); 
        exit(1); 
    } 
 
    printf(msg, a1, a2, a3); 
} 

多言語化対応

環境変数

LC_CTYPE は、コメントおよび文字列リテラルを、シングルおよびマルチバイト文字、またはその一方として解釈するかを決定します。

LC_CTYPE をその環境で指定しないか、または空の文字列に設定した場合、 LANG の値はそれぞれ未指定または空の変数に対してデフォルトとして使用されます。 LANG を指定しないかまたは空の文字列を設定した場合、デフォルトの"C"( lang(5) を参照) が LANG の代わりに使用されます。 どのような国際変数でも、無効な設定を含んでいる場合には、国際変数はすべて"C"に設定されたものとして、 mkstr は動作します。 environ(5) を参照してください。

サポートされるコードセット

シングル/マルチバイトの文字コードセットが、ファイル名、コメント、および文字列リテラル内でサポートされています。

参照

lseek(2), perror(3C), xstr(1)

バグ

名前が error で終了する関数の呼び出しの文字列、特に perror() は、 mkstr によってオフセットに置き換えられる可能性があります。

最初の引き数が文字列定数でないエラー関数の呼び出しは、警告なしで未修正のままです。

印刷用画面へ
プライバシー 本サイト利用時の合意事項
© 1983-2004 Hewlett-Packard Development Company, L.P.