Use standard POSIX "ustar" format for the scratch disk.
[pintos-anon] / src / lib / ustar.h
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. */
13 enum 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
23 bool ustar_make_header (const char *file_name, enum ustar_type,
24                         int size, char header[USTAR_HEADER_SIZE]);
25 const 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 */