#include <stdlib.h>
+// Magic value at the beginning of each nsscash file (8 byte, without the
+// trailing NUL)
#define MAGIC "NSS-CASH"
// Defined in Makefile
#endif
+// header describes the on-disk (and, after loading via mmap, in-memory)
+// structure of nsscash files.
struct header {
char magic[8]; // magic string
uint64_t version; // also doubles as byte-order check
- uint64_t count;
+ uint64_t count; // number of entries in this file
// All offsets are relative to data
uint64_t off_orig_index;
char data[];
} __attribute__((packed));
+// file represents an open nsscash file.
struct file {
int fd;
size_t size;
- uint64_t next_index; // used by getpwent (pw.c)
const struct header *header;
+ uint64_t next_index; // used by getpwent (pw.c)
};
bool map_file(const char *path, struct file *f) __attribute__((visibility("hidden")));