2 * Copyright (C) 1994-1995, Index Data I/S
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.1 1995-11-15 14:46:20 adam
8 * Started work on better record management system.
21 #define REC_HEAD_MAGIC "rechead"
23 static void rec_write_head (Records p)
29 if (lseek (p->fd, (off_t) 0, SEEK_SET) == -1)
31 logf (LOG_FATAL|LOG_ERRNO, "lseek to 0 in %s", p->fname);
34 r = write (p->fd, &p->head, sizeof(p->head));
38 logf (LOG_FATAL|LOG_ERRNO, "write head of %s", p->fname);
43 logf (LOG_FATAL, "write head of %s. wrote %d", p->fname, r);
48 Records rec_open (int rw)
53 if (!(p = malloc (sizeof(*p))))
55 logf (LOG_FATAL|LOG_ERRNO, "malloc");
58 p->fname = "recindex";
59 p->fd = open (p->fname, rw ? (O_RDWR|O_CREAT) : O_RDONLY, 0666);
62 logf (LOG_FATAL|LOG_ERRNO, "open %s", p->fname);
65 r = read (p->fd, &p->head, sizeof(p->head));
69 logf (LOG_FATAL|LOG_ERRNO, "read %s", p->fname);
72 p->head.no_records = 0;
78 if (memcmp (p->head.magic, REC_HEAD_MAGIC, sizeof(p->head.magic)))
80 logf (LOG_FATAL, "read %s. bad header", p->fname);
85 logf (LOG_FATAL, "read head of %s. expected %d. got %d",
86 p->fname, sizeof(p->head), r);
92 void rec_close (Records p)
99 Record rec_get (Records p, int sysno)
105 Record rec_new (Records p)
111 void rec_put (Records p, Record rec)