blob: e79fa49efd71f2b6afa7b06e6dac2d1bdd32c5ff [file] [log] [blame]
Ben Cheng21eab512012-03-13 23:04:57 -07001/*-
2 * Copyright (c) 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 * (c) UNIX System Laboratories, Inc.
5 * All or some portions of this file are derived from material licensed
6 * to the University of California by American Telephone and Telegraph
7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
8 * the permission of UNIX System Laboratories, Inc.
9 *
10 * This code is derived from software contributed to Berkeley by
11 * Hugh Smith at The University of Guelph.
12 *
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
15 * are met:
16 * 1. Redistributions of source code must retain the above copyright
17 * notice, this list of conditions and the following disclaimer.
18 * 2. Redistributions in binary form must reproduce the above copyright
19 * notice, this list of conditions and the following disclaimer in the
20 * documentation and/or other materials provided with the distribution.
21 * 3. Neither the name of the University nor the names of its contributors
22 * may be used to endorse or promote products derived from this software
23 * without specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
26 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35 * SUCH DAMAGE.
36 *
37 * @(#)ar.h 8.2 (Berkeley) 1/21/94
38 */
39
Elliott Hughes462e90c2018-08-21 16:10:48 -070040#pragma once
41
42/**
43 * @file ar.h
44 * @brief Constants for reading/writing `.a` files.
45 */
Ben Cheng21eab512012-03-13 23:04:57 -070046
Elliott Hughes203e13d2016-07-22 14:56:18 -070047#include <sys/cdefs.h>
48
Elliott Hughes462e90c2018-08-21 16:10:48 -070049/** The magic at the beginning of a `.a` file. */
50#define ARMAG "!<arch>\n"
51/** The length of the magic at the beginning of a `.a` file. */
52#define SARMAG 8
Ben Cheng21eab512012-03-13 23:04:57 -070053
Elliott Hughes462e90c2018-08-21 16:10:48 -070054/** The contents of every `ar_hdr::ar_fmag` field.*/
55#define ARFMAG "`\n"
Ben Cheng21eab512012-03-13 23:04:57 -070056
57struct ar_hdr {
Elliott Hughes462e90c2018-08-21 16:10:48 -070058 /* Name. */
59 char ar_name[16];
60 /* Modification time. */
61 char ar_date[12];
62 /** User id. */
63 char ar_uid[6];
64 /** Group id. */
65 char ar_gid[6];
66 /** Octal file permissions. */
67 char ar_mode[8];
68 /** Size in bytes. */
69 char ar_size[10];
70 /** Consistency check. Always contains `ARFMAG`. */
71 char ar_fmag[2];
Ben Cheng21eab512012-03-13 23:04:57 -070072};