summaryrefslogtreecommitdiffstats
path: root/lib/ustar.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ustar.h')
-rw-r--r--lib/ustar.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/ustar.h b/lib/ustar.h
new file mode 100644
index 0000000..43a5513
--- /dev/null
+++ b/lib/ustar.h
@@ -0,0 +1,29 @@
1#ifndef __LIB_USTAR_H
2#define __LIB_USTAR_H
3
4/* Support for the standard Posix "ustar" format. See the
5 documentation of the "pax" utility in [SUSv3] for the the
6 "ustar" format specification. */
7
8#include <stdbool.h>
9
10/* Type of a file entry in an archive.
11 The values here are the bytes that appear in the file format.
12 Only types of interest to Pintos are listed here. */
13enum ustar_type
14 {
15 USTAR_REGULAR = '0', /* Ordinary file. */
16 USTAR_DIRECTORY = '5', /* Directory. */
17 USTAR_EOF = -1 /* End of archive (not an official value). */
18 };
19
20/* Size of a ustar archive header, in bytes. */
21#define USTAR_HEADER_SIZE 512
22
23bool ustar_make_header (const char *file_name, enum ustar_type,
24 int size, char header[USTAR_HEADER_SIZE]);
25const char *ustar_parse_header (const char header[USTAR_HEADER_SIZE],
26 const char **file_name,
27 enum ustar_type *, int *size);
28
29#endif /* lib/ustar.h */