tarfn.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. };
  22. typedef enum TarFileType TarFileType;
  23. struct TarInfo {
  24. void * UserData; /* User passed this in as argument */
  25. char * Name; /* File name */
  26. mode_t Mode; /* Unix mode, including device bits. */
  27. size_t Size; /* Size of file */
  28. time_t ModTime; /* Last-modified time */
  29. TarFileType Type; /* Regular, Directory, Special, Link */
  30. char * LinkName; /* Name for symbolic and hard links */
  31. dev_t Device; /* Special device for mknod() */
  32. uid_t UserID; /* Numeric UID */
  33. gid_t GroupID; /* Numeric GID */
  34. };
  35. typedef struct TarInfo TarInfo;
  36. typedef int (*TarReadFunction)(void * userData, char * buffer, int length);
  37. typedef int (*TarFunction)(TarInfo * h);
  38. struct TarFunctions {
  39. TarReadFunction Read;
  40. TarFunction ExtractFile;
  41. TarFunction MakeDirectory;
  42. TarFunction MakeHardLink;
  43. TarFunction MakeSymbolicLink;
  44. TarFunction MakeSpecialFile;
  45. };
  46. typedef struct TarFunctions TarFunctions;
  47. extern int TarExtractor(void * userData, const TarFunctions * functions);
  48. #endif