aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man5/ar.5
blob: 3576cd36bd00314f4b026bd03c408a4a2df37023 (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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
.\" Copyright (c) 1990, 1991, 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.
.\"
.\"     @(#)ar.5.5	8.1 (Berkeley) 6/9/93
.\" %FreeBSD: src/usr.bin/ar/ar.5,v 1.5.2.1 2000/12/08 15:13:18 ru Exp %
.\" $FreeBSD$
.\"
.\" WORD: archive	アーカイブ
.\"
.Dd June 9, 1993
.Dt AR 5
.Os
.Sh 名称
.Nm ar
.Nd アーカイブ (ライブラリ) ファイルフォーマット
.Sh 書式
.Fd #include <ar.h>
.Sh 解説
アーカイブコマンド
.Nm
は複数のファイルをひとつにまとめます。
アーカイブは主にリンクエディタ
.Xr ld 1
を使ってロードするための
オブジェクトファイルのライブラリとして使用します。
.Pp
.Nm
によって作成されたファイルは ``マジック'' ストリング "!<arch>\en" で
始まっています。
アーカイブの残りはオブジェクトからなり、その各々はファイルのヘッダと
ファイル名 (オプション) とファイルの中身から構成されます。
ヘッダは異なるマシンアーキテクチャ間で互換性のあるもので、
ファイルの内容が印字可能なものであれば
アーカイブそのものも印字可能となります。
.Pp
ヘッダは、可変長の
.Tn ASCII
のフィールド 6 つとそれに続く2 文字の終端から構成されます。
フィールドはオブジェクトの名前 (16 文字)、
ファイルの最終更新時間 (12 文字)、
ユーザとグループ ID (各々 6 文字)、
ファイルモード (8文字)、
それにファイルサイズ (10 文字) です。
全ての数字フィールドは 10 進数ですが、ファイルモードだけは 8 進数です。
.Pp
更新時間はファイルの
.Fa st_mtime
フィールドです。すなわち
基準時点 (epoch) からの時間
.Dv CUT
秒です。
ユーザ ID とグループ ID はファイルの
.Fa st_uid
と
.Fa st_gid
フィールドです。
ファイルモードはファイルの
.Fa st_mode
フィールドです。
ファイルサイズはファイルの
.Fa st_size
フィールドです。
最後の 2 バイトは文字列 "\`\en" となります。
.Pp
名前のフィールドに限りあふれることが考えられるため、以下のよ
うに対応しています。
もしファイル名の長さが 16 文字を超えるかスペースを含む場合は、
名前のフィールドには文字列 "#1/" に続いてその名前の
.Tn ASCII
での長さが書き込まれます。
ファイルサイズ (アーカイブヘッダに書き込まれているもの) には
その名前の長さが加算されます。
そして名前はアーカイブヘッダの直後に書かれます。
.Pp
これらのフィールドにおいて使用されていない部分には
空白文字が書き込まれます。
もしフィールドにその最長の文字数が書き込まれていると、
フィールドの間の区切りはないことになります。
.Pp
アーカイブ中のオブジェクトは常に偶数バイトの長さとなります。
ファイルの長さが奇数バイトである場合は
改行 (``\en'') 文字でパディングされます。
その場合、ヘッダ中のファイルサイズにはパディングの分は反映されません。
.Sh 関連項目
.Xr ar 1 ,
.Xr stat 2
.Sh 歴史
これまでに少なくとも 4 つの
.Nm
フォーマットがありました。
最初のものは先頭の ``マジック'' ナンバー 0177555 (int 型で書かれていた)
で示されていました。
これらのアーカイブはほとんどが 16 ビットマシン上で作られたものであり、
ヘッダは 5 つのフィールドから構成されていました。
ヘッダのフィールドにはオブジェクト名 (8 文字)、
ファイルの最終更新時間 (long 型)、
ユーザ ID (char 型)、
ファイルモード (char 型)、
そしてファイルサイズ (符号なし int 型) がありました。
ファイルはバイト数で偶数長となるようにパディングされていました。
.Pp
2 つ目のものは先頭の ``マジック'' ナンバー 0177545 (int 型で書かれていた)
で示されていました。
これらのアーカイブは 16 もしくは 32 ビットマシンで作られたものであり、
ヘッダは 6 つのフィールドから構成されていました。
フィールドにはオブジェクト名 (14 文字)、
ファイルの最終更新時間 (long 型)、
ユーザおよびグループ ID (各々 char 型)、
ファイルモード (int 型)、
そしてファイルサイズ (long 型) がありました。
ファイルはバイト数で偶数長となるようにパディングされていました。
.\" For more information on converting from this format see
.\" .Xr arcv 8 .
.Pp
現在のアーカイブフォーマット
(長い名前とスペースを含む名前をサポートしていないもの) は
.Bx 4.0
で導入されました。
ヘッダは現在のフォーマットと同じですが、
16 文字以上の名前は切り捨てられ、
スペースを含む名前 (および名前の末尾にスペースがつくもの)
はサポートされていません。
これらの理由により、このフォーマットに前述の拡張がなされました。
現在のこのフォーマットは
.Bx 4.4
で最初に出現しました。
.Sh 互換性
現在アーカイブフォーマットは標準では規定されていません。
.At V
では、昔から上述のいずれとも異なるフォーマットの
アーカイブで配布されています。