Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /* archive file definition for GNU software
  2.  
  3.    Copyright 2001, 2008, 2010 Free Software Foundation, Inc.
  4.  
  5.    This program is free software; you can redistribute it and/or modify
  6.    it under the terms of the GNU General Public License as published by
  7.    the Free Software Foundation; either version 3 of the License, or
  8.    (at your option) any later version.
  9.    
  10.    This program is distributed in the hope that it will be useful,
  11.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.    GNU General Public License for more details.
  14.    
  15.    You should have received a copy of the GNU General Public License
  16.    along with this program; if not, write to the Free Software
  17.    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
  18.    MA 02110-1301, USA.  */
  19.  
  20. /* So far this is correct for BSDish archives.  Don't forget that
  21.    files must begin on an even byte boundary. */
  22.  
  23. #ifndef __GNU_AR_H__
  24. #define __GNU_AR_H__
  25.  
  26. /* Note that the usual '\n' in magic strings may translate to different
  27.    characters, as allowed by ANSI.  '\012' has a fixed value, and remains
  28.    compatible with existing BSDish archives. */
  29.  
  30. #define ARMAG  "!<arch>\012"    /* For COFF and a.out archives.  */
  31. #define ARMAGB "!<bout>\012"    /* For b.out archives.  */
  32. #define ARMAGT "!<thin>\012"    /* For thin archives.  */
  33. #define SARMAG 8
  34. #define ARFMAG "`\012"
  35.  
  36. /* The ar_date field of the armap (__.SYMDEF) member of an archive
  37.    must be greater than the modified date of the entire file, or
  38.    BSD-derived linkers complain.  We originally write the ar_date with
  39.    this offset from the real file's mod-time.  After finishing the
  40.    file, we rewrite ar_date if it's not still greater than the mod date.  */
  41.  
  42. #define ARMAP_TIME_OFFSET       60
  43.  
  44. struct ar_hdr
  45. {
  46.   char ar_name[16];             /* Name of this member.  */
  47.   char ar_date[12];             /* File mtime.  */
  48.   char ar_uid[6];               /* Owner uid; printed as decimal.  */
  49.   char ar_gid[6];               /* Owner gid; printed as decimal.  */
  50.   char ar_mode[8];              /* File mode, printed as octal.   */
  51.   char ar_size[10];             /* File size, printed as decimal.  */
  52.   char ar_fmag[2];              /* Should contain ARFMAG.  */
  53. };
  54.  
  55. #endif /* __GNU_AR_H__ */
  56.