58 typedef struct MKMAP_DBM {
66 static void mkmap_dbm_after_close(
MKMAP *mp)
68 MKMAP_DBM *mkmap = (MKMAP_DBM *) mp;
70 if (mkmap->lock_fd >= 0 && close(mkmap->lock_fd) < 0)
71 msg_warn(
"close %s: %m", mkmap->lock_file);
79 MKMAP_DBM *mkmap = (MKMAP_DBM *)
mymalloc(
sizeof(*mkmap));
86 mkmap->lock_file =
concatenate(path,
".dir", (
char *) 0);
88 mkmap->mkmap.after_open = 0;
89 mkmap->mkmap.after_close = mkmap_dbm_after_close;
96 if ((mkmap->lock_fd = open(mkmap->lock_file, O_CREAT | O_RDWR, 0644)) < 0)
97 msg_fatal(
"open %s: %m", mkmap->lock_file);
100 if ((pag_fd = open(pag_file, O_CREAT | O_RDWR, 0644)) < 0)
111 msg_fatal(
"lock %s: %m", mkmap->lock_file);
113 return (&mkmap->mkmap);
#define MYFLOCK_OP_EXCLUSIVE
MKMAP * mkmap_dbm_open(const char *)
void msg_warn(const char *fmt,...)
int myflock(int fd, int lock_style, int operation)
NORETURN msg_fatal(const char *fmt,...)
char * concatenate(const char *arg0,...)
DICT * dict_dbm_open(const char *, int, int)
void * mymalloc(ssize_t len)