/* $VER: ar ar.h V0.1 (31.01.98)
 *
 * This file is part of ar, a portable archive maintanance
 * utility for normal and BSD-style archives.
 * Copyright (c) 1999  Frank Wille
 *
 * ar is freeware and part of the portable and retargetable ANSI C
 * compiler vbcc, copyright (c) 1995-99 by Volker Barthelmann.
 * ar may be freely redistributed as long as no modifications are
 * made and nothing is charged for it. Non-commercial usage is allowed
 * without any restrictions.
 * EVERY PRODUCT OR PROGRAM DERIVED DIRECTLY FROM MY SOURCE MAY NOT BE
 * SOLD COMMERCIALLY WITHOUT PERMISSION FROM THE AUTHOR.
 *
 *
 * v0.1  (31.01.99) phx
 *       First working version, which only supports 'q' (quick append)
 *       and 't' (table of contents), reads and writes normals and
 *       BSD-style archives. Symbol table will not be created!
 * v0.0  (29.01.99) phx
 *       File created.
 */

/* version/revision */
#define PNAME "ar"
#define VERSION 0
#define REVISION 1
#define PLEVEL 0


/* integer types */
#if defined (TYPES32BIT)
typedef signed char int8;
typedef unsigned char uint8;
typedef signed short int int16;
typedef unsigned short int uint16;
typedef signed long int int32;
typedef unsigned long int uint32;
typedef signed char bool;
#elif defined (TYPES64BIT)
typedef signed char int8;
typedef unsigned char uint8;
typedef signed short int16;
typedef unsigned short uint16;
typedef signed int int32;
typedef unsigned int uint32;
typedef int bool;
#else
#error Unsupported architecture! Define either TYPES32BIT or TYPES64BIT.
#endif


#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef NULL
#define NULL 0
#endif


/* modifier flags */
#define AR_BEFORE       0x0001  /* insert before position */
#define AR_AFTER        0x0002  /* insert after position */
#define AR_UPDATE       0x0004  /* replace/extract only when newer */
#define AR_PRESERVE     0x0008  /* preserve permissions and time on extract */
#define AR_CREATIGN     0x0010  /* no message when creating a new archive */
#define AR_TRUNC        0x0100  /* truncate file names > 15 chars */
#define AR_BSD          0x0200  /* write BSD format symbol names */
#define AR_VERBOSE      0x8000  /* verbose output  */
#define AR_POS          0x0003  /* position mask */

struct Args {
  char *arname;                 /* archive name */
  char **files;                 /* ptr to filecnt file names (may be NULL) */
  char *position;               /* position file name (may be NULL) */
  uint32 modifier;              /* modifier flags */
  int filecnt;                  /* number of files */
};
