aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man1/mkstr.1
blob: 118fcb8526af669c83125b26f6ceade8c91a2984 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
.\" Copyright (c) 1980, 1990, 1993
.\"	The Regents of the University of California.  All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\" 3. All advertising materials mentioning features or use of this software
.\"    must display the following acknowledgement:
.\"	This product includes software developed by the University of
.\"	California, Berkeley and its contributors.
.\" 4. Neither the name of the University nor the names of its contributors
.\"    may be used to endorse or promote products derived from this software
.\"    without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\"     @(#)mkstr.1	8.1 (Berkeley) 6/6/93
.\" %FreeBSD: src/usr.bin/mkstr/mkstr.1,v 1.7.2.3 2002/07/15 07:10:07 keramida Exp %
.\" $FreeBSD$
.\"
.Dd June 6, 1993
.Dt MKSTR 1
.Os
.Sh 名称
.Nm mkstr
.Nd C 言語ソースファイルからエラーメッセージファイルを作成する
.Sh 書式
.Nm
.Op Fl
.Ar messagefile
.Ar prefix Ar
.Sh 解説
.Nm
ユーティリティは、C 言語ソースファイルからエラーメッセージを抽出し、
これを格納するファイルを作成します。また作成され
たエラーメッセージファイルを使用するように、そのソースファイルを修正し
ます。mkstr は巨大なプログラムのサイズを減少させ、スワップを減らすこと
を目的としています
(
.Sx バグ
の項を参照)
。
.Pp
.Nm
ユーティリティは、
コマンドラインで指定されたファイルを処理し、修正した入力ファイルを、
指定されたファイル名に、指定されたプレフィックスをつけた名前のファイル
で出力します。以下の使用例は典型的なものです。
.Bd -literal -offset indent
mkstr pistrings xx *.c
.Ed
.Pp
.Nm
は、カレントディレクトリにあるすべての C 言語ソースから集めた
エラーメッセージを、ファイル
.Ar pistrings
に出力し、修正されたソースファイルを、ファイル名の先頭に
.Ar \&xx
をつけたファイルに出力します。
.Pp
オプション
.Bl -tag -width indent
.It Fl
指定されたエラーメッセージファイルの最後に、エラーメッセージが置かれます。
これは、
.Nm
で処理された巨大なプログラムの一部を再コンパイルするために使用します。
.El
.Pp
.Nm
ユーティリティは、ソースファイル中の
.Li \&`error("'
という文字列をもとにエラーメッセージを検索します。この文字列が出現すると、
.Sq \&"\&
から開始される文字列および
その後にヌル文字と改行文字をメッセージファイルに出力します;
変更前のソースにおいて文字列であった部分は、
メッセージファイルのオフセットに置き換えられ
.Xr lseek 2
によって対応するメッセージを取り出すことができます。
実際にメッセージを取り出す場合には、以下のようなコードを使用します。
.Bd -literal -offset indent
char efilname = "/usr/lib/pi_strings";
int efil = -1;

error(a1, a2, a3, a4)
\&{
	char buf[256];

	if (efil < 0) {
		efil = open(efilname, 0);
		if (efil < 0)
			err(1, "%s", efilname);
	}
	if (lseek(efil, (off_t)a1, SEEK_SET) < 0 ||
	    read(efil, buf, 256) <= 0)
		err(1, "%s", efilname);
	printf(buf, a2, a3, a4);
}
.Ed
.Sh 関連項目
.Xr xstr 1 ,
.Xr lseek 2
.Sh 歴史
.Nm
ユーティリティは
.Bx 3.0
で登場しました。
.Sh バグ
.Nm
ユーティリティは、
PDP 11 ファミリーの制限されたアーキテクチャのために開発されました。
ごく一部のプログラムしか mkstr を使用していません。
Pascal インタプリタ
.Xr \&pi 1
とエディタ
.Xr \&ex 1
が
.Nm
により作成されています。
.Nm
の方法は効率的なものとはいえないので、
エラーメッセージはプログラムテキストのなかに埋め込まれているべきです
.Pq (訳注) 最近はメッセージの国際化等のために、プログラム中にメッセージを埋め込まない方法もよく用いられます
。
.\" 上記(訳注)は翻訳時からあったが、現状確かにそうなので残しました。
.\" 2.1.5-2.2-RELEASE 対象
.\" By horikawa@jp.freebsd.org (Mar 29 1997)