tarfn.h 1.5 KB

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