home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / live / usr / include / dpkg / tarfn.h < prev   
C/C++ Source or Header  |  1999-03-02  |  2KB  |  58 lines

  1. #ifndef    _TAR_FUNCTION_H_
  2. #define    _TAR_FUNCTION_H_
  3.  
  4. /*
  5.  * Functions for extracting tar archives.
  6.  * Bruce Perens, April-May 1995
  7.  * Copyright (C) 1995 Bruce Perens
  8.  * This is free software under the GNU General Public License.
  9.  */
  10.  
  11. #include <stdlib.h>
  12. #include <unistd.h>
  13. #include <sys/types.h>
  14.  
  15. enum TarFileType {
  16.     NormalFile0 = '\0',    /* For compatibility with decades-old bug */
  17.     NormalFile1 = '0',
  18.     HardLink = '1',
  19.     SymbolicLink = '2',
  20.     CharacterDevice = '3',
  21.     BlockDevice = '4',
  22.     Directory = '5',
  23.     FIFO = '6'
  24. };
  25. typedef enum TarFileType    TarFileType;
  26.  
  27. struct    TarInfo {
  28.     void *        UserData;    /* User passed this in as argument */
  29.     char *        Name;        /* File name */
  30.     mode_t        Mode;        /* Unix mode, including device bits. */
  31.     size_t        Size;        /* Size of file */
  32.     time_t        ModTime;    /* Last-modified time */
  33.     TarFileType    Type;        /* Regular, Directory, Special, Link */
  34.     char *        LinkName;    /* Name for symbolic and hard links */
  35.     dev_t        Device;        /* Special device for mknod() */
  36.     uid_t        UserID;        /* Numeric UID */
  37.     gid_t        GroupID;    /* Numeric GID */
  38. };
  39. typedef struct TarInfo    TarInfo;
  40.  
  41. typedef    int    (*TarReadFunction)(void * userData, char * buffer, int length);
  42.  
  43. typedef int    (*TarFunction)(TarInfo * h);
  44.  
  45. struct TarFunctions {
  46.     TarReadFunction    Read;
  47.     TarFunction    ExtractFile;
  48.     TarFunction    MakeDirectory;
  49.     TarFunction    MakeHardLink;
  50.     TarFunction    MakeSymbolicLink;
  51.     TarFunction    MakeSpecialFile;
  52. };
  53. typedef struct TarFunctions    TarFunctions;
  54.  
  55. extern int    TarExtractor(void * userData, const TarFunctions * functions);
  56.  
  57. #endif
  58.