X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fdropsbr.c;fp=uip%2Fdropsbr.c;h=a857a1a86d5b2e3e42077327103fbe20c46046a0;hp=40de7638eda2685e55f91ab3425a2849a31601fa;hb=714b5c530ece27ea2835a313013f5b770163403c;hpb=ced6090a330d3d83d0bce709f756aa3d7d65fea4 diff --git a/uip/dropsbr.c b/uip/dropsbr.c index 40de763..a857a1a 100644 --- a/uip/dropsbr.c +++ b/uip/dropsbr.c @@ -30,9 +30,9 @@ /* ** static prototypes */ -static int mbx_chk_mbox (int); -static int mbx_chk_mmdf (int); -static int map_open (char *, int); +static int mbx_chk_mbox(int); +static int mbx_chk_mmdf(int); +static int map_open(char *, int); /* @@ -41,7 +41,7 @@ static int map_open (char *, int); */ int -mbx_open (char *file, int mbx_style, uid_t uid, gid_t gid, mode_t mode) +mbx_open(char *file, int mbx_style, uid_t uid, gid_t gid, mode_t mode) { int j, count, fd; struct stat st; @@ -50,7 +50,8 @@ mbx_open (char *file, int mbx_style, uid_t uid, gid_t gid, mode_t mode) /* attempt to open and lock file */ for (count = 4; count > 0; count--) { - if ((fd = lkopen (file, O_RDWR | O_CREAT | O_NONBLOCK, mode)) == NOTOK) { + if ((fd = lkopen(file, O_RDWR | O_CREAT | O_NONBLOCK, mode)) + == NOTOK) { switch (errno) { #if defined(FCNTL_LOCKING) || defined(LOCKF_LOCKING) case EACCES: @@ -62,7 +63,7 @@ mbx_open (char *file, int mbx_style, uid_t uid, gid_t gid, mode_t mode) #endif case ETXTBSY: j = errno; - sleep (5); + sleep(5); break; default: @@ -87,13 +88,13 @@ mbx_open (char *file, int mbx_style, uid_t uid, gid_t gid, mode_t mode) /* ** Do sanity checks on maildrop. */ - if (fstat (fd, &st) == NOTOK) { + if (fstat(fd, &st) == NOTOK) { /* ** The stat failed. So we make sure file ** has right ownership/modes */ - chown (file, uid, gid); - chmod (file, mode); + chown(file, uid, gid); + chmod(file, mode); } else if (st.st_size > (off_t) 0) { int status; @@ -101,17 +102,17 @@ mbx_open (char *file, int mbx_style, uid_t uid, gid_t gid, mode_t mode) switch (mbx_style) { case MMDF_FORMAT: default: - status = mbx_chk_mmdf (fd); + status = mbx_chk_mmdf(fd); break; case MBOX_FORMAT: - status = mbx_chk_mbox (fd); + status = mbx_chk_mbox(fd); break; } /* if error, attempt to close it */ if (status == NOTOK) { - close (fd); + close(fd); return NOTOK; } } @@ -125,10 +126,10 @@ mbx_open (char *file, int mbx_style, uid_t uid, gid_t gid, mode_t mode) */ static int -mbx_chk_mbox (int fd) +mbx_chk_mbox(int fd) { /* just seek to the end */ - if (lseek (fd, (off_t) 0, SEEK_END) == (off_t) NOTOK) + if (lseek(fd, (off_t) 0, SEEK_END) == (off_t) NOTOK) return NOTOK; return OK; @@ -140,24 +141,23 @@ mbx_chk_mbox (int fd) */ static int -mbx_chk_mmdf (int fd) +mbx_chk_mmdf(int fd) { size_t count; char ldelim[BUFSIZ]; - count = strlen (mmdlm2); + count = strlen(mmdlm2); /* casting -count to off_t, seem to break FreeBSD 2.2.6 */ - if (lseek (fd, (long) (-count), SEEK_END) == (off_t) NOTOK) + if (lseek(fd, (long) (-count), SEEK_END) == (off_t) NOTOK) return NOTOK; - if (read (fd, ldelim, count) != count) + if (read(fd, ldelim, count) != count) return NOTOK; ldelim[count] = 0; - if (strcmp (ldelim, mmdlm2) - && write (fd, "\n", 1) != 1 - && write (fd, mmdlm2, count) != count) + if (strcmp(ldelim, mmdlm2) && write(fd, "\n", 1) != 1 + && write(fd, mmdlm2, count) != count) return NOTOK; return OK; @@ -165,7 +165,7 @@ mbx_chk_mmdf (int fd) int -mbx_read (FILE *fp, long pos, struct drop **drops, int noisy) +mbx_read(FILE *fp, long pos, struct drop **drops, int noisy) { register int len, size; register long ld1, ld2; @@ -173,33 +173,33 @@ mbx_read (FILE *fp, long pos, struct drop **drops, int noisy) char buffer[BUFSIZ]; register struct drop *cp, *dp, *ep, *pp; - pp = (struct drop *) calloc ((size_t) (len = MAXFOLDER), sizeof(*dp)); + pp = (struct drop *) calloc((size_t) (len = MAXFOLDER), sizeof(*dp)); if (pp == NULL) { if (noisy) - admonish (NULL, "unable to allocate drop storage"); + admonish(NULL, "unable to allocate drop storage"); return NOTOK; } - ld1 = (long) strlen (mmdlm1); - ld2 = (long) strlen (mmdlm2); + ld1 = (long) strlen(mmdlm1); + ld2 = (long) strlen(mmdlm2); - fseek (fp, pos, SEEK_SET); - for (ep = (dp = pp) + len - 1; fgets (buffer, sizeof(buffer), fp);) { + fseek(fp, pos, SEEK_SET); + for (ep = (dp = pp) + len - 1; fgets(buffer, sizeof(buffer), fp);) { size = 0; - if (strcmp (buffer, mmdlm1) == 0) + if (strcmp(buffer, mmdlm1) == 0) pos += ld1, dp->d_start = (long) pos; else { - dp->d_start = (long)pos , pos += (long) strlen (buffer); + dp->d_start = (long)pos , pos += (long) strlen(buffer); for (bp = buffer; *bp; bp++, size++) if (*bp == '\n') size++; } - while (fgets (buffer, sizeof(buffer), fp) != NULL) - if (strcmp (buffer, mmdlm2) == 0) + while (fgets(buffer, sizeof(buffer), fp) != NULL) + if (strcmp(buffer, mmdlm2) == 0) break; else { - pos += (long) strlen (buffer); + pos += (long) strlen(buffer); for (bp = buffer; *bp; bp++, size++) if (*bp == '\n') size++; @@ -216,17 +216,18 @@ mbx_read (FILE *fp, long pos, struct drop **drops, int noisy) if (dp >= ep) { register int curlen = dp - pp; - cp = (struct drop *) mh_xrealloc ((char *) pp, - (size_t) (len += MAXFOLDER) * sizeof(*pp)); + cp = (struct drop *) mh_xrealloc((char *) pp, + (size_t) (len += MAXFOLDER) * + sizeof(*pp)); dp = cp + curlen, ep = (pp = cp) + len - 1; } } if (dp == pp) - free ((char *) pp); + free((char *) pp); else *drops = pp; - return (dp - pp); + return(dp - pp); } @@ -240,21 +241,21 @@ mbx_write(char *mailbox, int md, FILE *fp, int id, long last, register char *cp; char buffer[BUFSIZ]; - off = (long) lseek (md, (off_t) 0, SEEK_CUR); - j = strlen (mmdlm1); - if (write (md, mmdlm1, j) != j) + off = (long) lseek(md, (off_t) 0, SEEK_CUR); + j = strlen(mmdlm1); + if (write(md, mmdlm1, j) != j) return NOTOK; - start = lseek (md, (off_t) 0, SEEK_CUR); + start = lseek(md, (off_t) 0, SEEK_CUR); size = 0; - fseek (fp, pos, SEEK_SET); - while (fgets (buffer, sizeof(buffer), fp) && (pos < stop)) { - i = strlen (buffer); - for (j = 0; (j = stringdex (mmdlm1, buffer)) >= 0; buffer[j]++) + fseek(fp, pos, SEEK_SET); + while (fgets(buffer, sizeof(buffer), fp) && (pos < stop)) { + i = strlen(buffer); + for (j = 0; (j = stringdex(mmdlm1, buffer)) >= 0; buffer[j]++) continue; - for (j = 0; (j = stringdex (mmdlm2, buffer)) >= 0; buffer[j]++) + for (j = 0; (j = stringdex(mmdlm2, buffer)) >= 0; buffer[j]++) continue; - if (write (md, buffer, i) != i) + if (write(md, buffer, i) != i) return NOTOK; pos += (long) i; if (mapping) @@ -263,12 +264,13 @@ mbx_write(char *mailbox, int md, FILE *fp, int id, long last, size++; } - stop = lseek (md, (off_t) 0, SEEK_CUR); - j = strlen (mmdlm2); - if (write (md, mmdlm2, j) != j) + stop = lseek(md, (off_t) 0, SEEK_CUR); + j = strlen(mmdlm2); + if (write(md, mmdlm2, j) != j) return NOTOK; if (mapping) - map_write (mailbox, md, id, last, start, stop, off, size, noisy); + map_write(mailbox, md, id, last, start, stop, off, size, + noisy); return OK; } @@ -279,8 +281,8 @@ mbx_write(char *mailbox, int md, FILE *fp, int id, long last, */ int -mbx_copy (char *mailbox, int mbx_style, int md, int fd, - int mapping, char *text, int noisy) +mbx_copy(char *mailbox, int mbx_style, int md, int fd, int mapping, + char *text, int noisy) { int i, j, size; off_t start, stop; @@ -288,36 +290,32 @@ mbx_copy (char *mailbox, int mbx_style, int md, int fd, char *cp, buffer[BUFSIZ]; FILE *fp; - pos = (long) lseek (md, (off_t) 0, SEEK_CUR); + pos = (long) lseek(md, (off_t) 0, SEEK_CUR); size = 0; switch (mbx_style) { case MMDF_FORMAT: default: - j = strlen (mmdlm1); - if (write (md, mmdlm1, j) != j) + j = strlen(mmdlm1); + if (write(md, mmdlm1, j) != j) return NOTOK; - start = lseek (md, (off_t) 0, SEEK_CUR); + start = lseek(md, (off_t) 0, SEEK_CUR); if (text) { - i = strlen (text); - if (write (md, text, i) != i) + i = strlen(text); + if (write(md, text, i) != i) return NOTOK; for (cp = text; *cp++; size++) if (*cp == '\n') size++; } - while ((i = read (fd, buffer, sizeof(buffer))) > 0) { - for (j = 0; - (j = stringdex (mmdlm1, buffer)) >= 0; - buffer[j]++) + while ((i = read(fd, buffer, sizeof(buffer))) > 0) { + for (j = 0; (j = stringdex(mmdlm1, buffer)) >= 0; buffer[j]++) continue; - for (j = 0; - (j = stringdex (mmdlm2, buffer)) >= 0; - buffer[j]++) + for (j = 0; (j = stringdex(mmdlm2, buffer)) >= 0; buffer[j]++) continue; - if (write (md, buffer, i) != i) + if (write(md, buffer, i) != i) return NOTOK; if (mapping) for (cp = buffer; i-- > 0; size++) @@ -325,35 +323,37 @@ mbx_copy (char *mailbox, int mbx_style, int md, int fd, size++; } - stop = lseek (md, (off_t) 0, SEEK_CUR); - j = strlen (mmdlm2); - if (write (md, mmdlm2, j) != j) + stop = lseek(md, (off_t) 0, SEEK_CUR); + j = strlen(mmdlm2); + if (write(md, mmdlm2, j) != j) return NOTOK; if (mapping) - map_write (mailbox, md, 0, (long) 0, start, stop, pos, size, noisy); + map_write(mailbox, md, 0, (long) 0, start, + stop, pos, size, noisy); return (i != NOTOK ? OK : NOTOK); case MBOX_FORMAT: - if ((j = dup (fd)) == NOTOK) + if ((j = dup(fd)) == NOTOK) return NOTOK; - if ((fp = fdopen (j, "r")) == NULL) { - close (j); + if ((fp = fdopen(j, "r")) == NULL) { + close(j); return NOTOK; } - start = lseek (md, (off_t) 0, SEEK_CUR); + start = lseek(md, (off_t) 0, SEEK_CUR); /* If text is given, we add it to top of message */ if (text) { - i = strlen (text); - if (write (md, text, i) != i) + i = strlen(text); + if (write(md, text, i) != i) return NOTOK; for (cp = text; *cp++; size++) if (*cp == '\n') size++; } - for (j = 0; fgets (buffer, sizeof(buffer), fp) != NULL; j++) { + for (j = 0; fgets(buffer, sizeof(buffer), fp) != NULL; + j++) { /* ** Check the first line, and make some changes. @@ -363,7 +363,8 @@ mbx_copy (char *mailbox, int mbx_style, int md, int fd, ** Change the "Return-Path:" field ** (if in first line) back to "From ". */ - if (!strncmp (buffer, "Return-Path:", 12)) { + if (!strncmp(buffer, "Return-Path:", + 12)) { char tmpbuffer[BUFSIZ]; char *tp, *ep, *fp; @@ -372,9 +373,8 @@ mbx_copy (char *mailbox, int mbx_style, int md, int fd, if (!(fp = strchr(ep + 1, ' '))) fp = strchr(ep + 1, '\n'); tp = dctime(dlocaltimenow()); - snprintf (buffer, sizeof(buffer), "From %.*s %s", - (int)(fp - ep), ep, tp); - } else if (!strncmp (buffer, "X-Envelope-From:", 16)) { + snprintf(buffer, sizeof(buffer), "From %.*s %s", (int)(fp - ep), ep, tp); + } else if (!strncmp(buffer, "X-Envelope-From:", 16)) { /* ** Change the "X-Envelope-From:" ** field (if first line) back @@ -385,8 +385,8 @@ mbx_copy (char *mailbox, int mbx_style, int md, int fd, strncpy(tmpbuffer, buffer, sizeof(tmpbuffer)); ep = tmpbuffer + 17; - snprintf (buffer, sizeof(buffer), "From %s", ep); - } else if (strncmp (buffer, "From ", 5)) { + snprintf(buffer, sizeof(buffer), "From %s", ep); + } else if (strncmp(buffer, "From ", 5)) { /* ** If there is already a "From " ** line, then leave it alone. @@ -398,7 +398,7 @@ mbx_copy (char *mailbox, int mbx_style, int md, int fd, strncpy(tmpbuffer, buffer, sizeof(tmpbuffer)); ep = "nobody@nowhere"; tp = dctime(dlocaltimenow()); - snprintf (buffer, sizeof(buffer), "From %s %s%s", ep, tp, tmpbuffer); + snprintf(buffer, sizeof(buffer), "From %s %s%s", ep, tp, tmpbuffer); } } @@ -406,13 +406,13 @@ mbx_copy (char *mailbox, int mbx_style, int md, int fd, ** If this is not first line, and begins with ** "From ", then prepend line with ">". */ - if (j != 0 && strncmp (buffer, "From ", 5) == 0) { - write (md, ">", 1); + if (j != 0 && strncmp(buffer, "From ", 5) == 0) { + write(md, ">", 1); size++; } - i = strlen (buffer); - if (write (md, buffer, i) != i) { - fclose (fp); + i = strlen(buffer); + if (write(md, buffer, i) != i) { + fclose(fp); return NOTOK; } if (mapping) @@ -420,18 +420,18 @@ mbx_copy (char *mailbox, int mbx_style, int md, int fd, if (*cp++ == '\n') size++; } - if (write (md, "\n", 1) != 1) { - fclose (fp); + if (write(md, "\n", 1) != 1) { + fclose(fp); return NOTOK; } if (mapping) size += 2; - fclose (fp); - lseek (fd, (off_t) 0, SEEK_END); - stop = lseek (md, (off_t) 0, SEEK_CUR); + fclose(fp); + lseek(fd, (off_t) 0, SEEK_END); + stop = lseek(md, (off_t) 0, SEEK_CUR); if (mapping) - map_write (mailbox, md, 0, (long) 0, start, + map_write(mailbox, md, 0, (long) 0, start, stop, pos, size, noisy); return OK; @@ -440,24 +440,24 @@ mbx_copy (char *mailbox, int mbx_style, int md, int fd, int -mbx_size (int md, off_t start, off_t stop) +mbx_size(int md, off_t start, off_t stop) { register int i, fd; register long pos; register FILE *fp; - if ((fd = dup (md)) == NOTOK || (fp = fdopen (fd, "r")) == NULL) { + if ((fd = dup(md)) == NOTOK || (fp = fdopen(fd, "r")) == NULL) { if (fd != NOTOK) - close (fd); + close(fd); return NOTOK; } - fseek (fp, start, SEEK_SET); + fseek(fp, start, SEEK_SET); for (i = 0, pos = stop - start; pos-- > 0; i++) - if (fgetc (fp) == '\n') + if (fgetc(fp) == '\n') i++; - fclose (fp); + fclose(fp); return i; } @@ -467,9 +467,9 @@ mbx_size (int md, off_t start, off_t stop) */ int -mbx_close (char *mailbox, int md) +mbx_close(char *mailbox, int md) { - if (lkclose (md, mailbox) == 0) + if (lkclose(md, mailbox) == 0) return OK; return NOTOK; } @@ -477,55 +477,58 @@ mbx_close (char *mailbox, int md) /* ** This function is performed implicitly by getbbent.c: -** bb->bb_map = map_name (bb->bb_file); +** bb->bb_map = map_name(bb->bb_file); */ char * -map_name (char *file) +map_name(char *file) { register char *cp, *dp; static char buffer[BUFSIZ]; - if ((dp = strchr(cp = r1bindex (file, '/'), '.')) == NULL) - dp = cp + strlen (cp); + if ((dp = strchr(cp = r1bindex(file, '/'), '.')) == NULL) + dp = cp + strlen(cp); if (cp == file) - snprintf (buffer, sizeof(buffer), ".%.*s%s", (int)(dp - cp), cp, ".map"); + snprintf(buffer, sizeof(buffer), ".%.*s%s", + (int)(dp - cp), cp, ".map"); else snprintf (buffer, sizeof(buffer), "%.*s.%.*s%s", - (int)(cp - file), file, (int)(dp - cp), cp, ".map"); + (int)(cp - file), file, (int)(dp - cp), + cp, ".map"); return buffer; } int -map_read (char *file, long pos, struct drop **drops, int noisy) +map_read(char *file, long pos, struct drop **drops, int noisy) { register int i, md, msgp; register char *cp; struct drop d; register struct drop *mp, *dp; - if ((md = open (cp = map_name (file), O_RDONLY)) == NOTOK - || map_chk (cp, md, mp = &d, pos, noisy)) { + if ((md = open(cp = map_name(file), O_RDONLY)) == NOTOK + || map_chk(cp, md, mp = &d, pos, noisy)) { if (md != NOTOK) - close (md); + close(md); return 0; } msgp = mp->d_id; - dp = (struct drop *) calloc ((size_t) (msgp + 1), sizeof(*dp)); + dp = (struct drop *) calloc((size_t) (msgp + 1), sizeof(*dp)); if (dp == NULL) { - close (md); + close(md); return 0; } memcpy((char *) dp, (char *) mp, sizeof(*dp)); - lseek (md, (off_t) sizeof(*mp), SEEK_SET); - if ((i = read (md, (char *) (dp + 1), msgp * sizeof(*dp))) < sizeof(*dp)) { + lseek(md, (off_t) sizeof(*mp), SEEK_SET); + if ((i = read(md, (char *) (dp + 1), msgp * sizeof(*dp))) < + sizeof(*dp)) { i = 0; - free ((char *) dp); + free((char *) dp); } else { #ifdef NTOHLSWAP register struct drop *tdp; @@ -541,14 +544,14 @@ map_read (char *file, long pos, struct drop **drops, int noisy) *drops = dp; } - close (md); + close(md); return (i / sizeof(*dp)); } int -map_write (char *mailbox, int md, int id, long last, off_t start, +map_write(char *mailbox, int md, int id, long last, off_t start, off_t stop, long pos, int size, int noisy) { register int i; @@ -559,40 +562,42 @@ map_write (char *mailbox, int md, int id, long last, off_t start, register FILE *fp; struct stat st; - if ((fd = map_open (file = map_name (mailbox), md)) == NOTOK) + if ((fd = map_open(file = map_name(mailbox), md)) == NOTOK) return NOTOK; - if ((fstat (fd, &st) == OK) && (st.st_size > 0)) + if ((fstat(fd, &st) == OK) && (st.st_size > 0)) clear = 0; else clear = 1; - if (!clear && map_chk (file, fd, &d1, pos, noisy)) { - unlink (file); - mbx_close (file, fd); - if ((fd = map_open (file, md)) == NOTOK) + if (!clear && map_chk(file, fd, &d1, pos, noisy)) { + unlink(file); + mbx_close(file, fd); + if ((fd = map_open(file, md)) == NOTOK) return NOTOK; clear++; } if (clear) { - if ((td = dup (md)) == NOTOK || (fp = fdopen (td, "r")) == NULL) { + if ((td = dup(md)) == NOTOK || + (fp = fdopen(td, "r")) == NULL) { if (noisy) - admonish (file, "unable to %s", td != NOTOK ? "fdopen" : "dup"); + admonish(file, "unable to %s", td != NOTOK ? + "fdopen" : "dup"); if (td != NOTOK) - close (td); - mbx_close (file, fd); + close(td); + mbx_close(file, fd); return NOTOK; } - switch (i = mbx_read (fp, 0, &rp, noisy)) { + switch (i = mbx_read(fp, 0, &rp, noisy)) { case NOTOK: - fclose (fp); - mbx_close (file, fd); + fclose(fp); + mbx_close(file, fd); return NOTOK; case OK: - fclose (fp); + fclose(fp); break; default: @@ -600,17 +605,17 @@ map_write (char *mailbox, int md, int id, long last, off_t start, for (dp = rp; i-- >0; dp++) { if (dp->d_start == start) dp->d_id = id; - lseek (fd, (off_t) (++d1.d_id * sizeof(*dp)), SEEK_SET); - if (write (fd, (char *) dp, sizeof(*dp)) != sizeof(*dp)) { + lseek(fd, (off_t) (++d1.d_id * sizeof(*dp)), SEEK_SET); + if (write(fd, (char *) dp, sizeof(*dp)) != sizeof(*dp)) { if (noisy) - admonish (file, "write error"); - mbx_close (file, fd); - fclose (fp); + admonish(file, "write error"); + mbx_close(file, fd); + fclose(fp); return NOTOK; } } - free ((char *) rp); - fclose (fp); + free((char *) rp); + fclose(fp); break; } } @@ -619,14 +624,14 @@ map_write (char *mailbox, int md, int id, long last, off_t start, last = d1.d_start; dp = &d2; dp->d_id = id; - dp->d_size = (long) (size ? size : mbx_size (fd, start, stop)); + dp->d_size = (long) (size ? size : mbx_size(fd, start, stop)); dp->d_start = start; dp->d_stop = stop; - lseek (fd, (off_t) (++d1.d_id * sizeof(*dp)), SEEK_SET); - if (write (fd, (char *) dp, sizeof(*dp)) != sizeof(*dp)) { + lseek(fd, (off_t) (++d1.d_id * sizeof(*dp)), SEEK_SET); + if (write(fd, (char *) dp, sizeof(*dp)) != sizeof(*dp)) { if (noisy) - admonish (file, "write error"); - mbx_close (file, fd); + admonish(file, "write error"); + mbx_close(file, fd); return NOTOK; } } @@ -634,43 +639,44 @@ map_write (char *mailbox, int md, int id, long last, off_t start, dp = &d1; dp->d_size = DRVRSN; dp->d_start = (long) last; - dp->d_stop = lseek (md, (off_t) 0, SEEK_CUR); + dp->d_stop = lseek(md, (off_t) 0, SEEK_CUR); - lseek (fd, (off_t) 0, SEEK_SET); - if (write (fd, (char *) dp, sizeof(*dp)) != sizeof(*dp)) { + lseek(fd, (off_t) 0, SEEK_SET); + if (write(fd, (char *) dp, sizeof(*dp)) != sizeof(*dp)) { if (noisy) - admonish (file, "write error"); - mbx_close (file, fd); + admonish(file, "write error"); + mbx_close(file, fd); return NOTOK; } - mbx_close (file, fd); + mbx_close(file, fd); return OK; } static int -map_open (char *file, int md) +map_open(char *file, int md) { mode_t mode; struct stat st; - mode = fstat (md, &st) != NOTOK ? (mode_t) (st.st_mode & 0777) : m_gmprot (); - return mbx_open (file, OTHER_FORMAT, st.st_uid, st.st_gid, mode); + mode = fstat(md, &st) != NOTOK ? + (mode_t) (st.st_mode & 0777) : m_gmprot(); + return mbx_open(file, OTHER_FORMAT, st.st_uid, st.st_gid, mode); } int -map_chk (char *file, int fd, struct drop *dp, long pos, int noisy) +map_chk(char *file, int fd, struct drop *dp, long pos, int noisy) { long count; struct drop d, tmpd; register struct drop *dl; - if (read (fd, (char *) &tmpd, sizeof(*dp)) != sizeof(*dp)) { + if (read(fd, (char *) &tmpd, sizeof(*dp)) != sizeof(*dp)) { #ifdef notdef - admonish (NULL, "%s: missing or partial index", file); + admonish(NULL, "%s: missing or partial index", file); #endif /* notdef */ return NOTOK; } @@ -685,33 +691,31 @@ map_chk (char *file, int fd, struct drop *dp, long pos, int noisy) if (dp->d_size != DRVRSN) { if (noisy) - admonish (NULL, "%s: version mismatch (%d != %d)", - file, dp->d_size, DRVRSN); + admonish(NULL, "%s: version mismatch (%d != %d)", + file, dp->d_size, DRVRSN); return NOTOK; } if (dp->d_stop != pos) { if (noisy && pos != (long) 0) - admonish (NULL, - "%s: pointer mismatch or incomplete index (%ld!=%ld)", - file, dp->d_stop, (long) pos); + admonish(NULL, "%s: pointer mismatch or incomplete index (%ld!=%ld)", file, dp->d_stop, (long) pos); return NOTOK; } - if ((long) ((dp->d_id + 1) * sizeof(*dp)) != (long) lseek (fd, (off_t) 0, SEEK_END)) { + if ((long) ((dp->d_id + 1) * sizeof(*dp)) != (long) lseek(fd, (off_t) 0, SEEK_END)) { if (noisy) - admonish (NULL, "%s: corrupt index(1)", file); + admonish(NULL, "%s: corrupt index(1)", file); return NOTOK; } dl = &d; - count = (long) strlen (mmdlm2); - lseek (fd, (off_t) (dp->d_id * sizeof(*dp)), SEEK_SET); - if (read (fd, (char *) dl, sizeof(*dl)) != sizeof(*dl) + count = (long) strlen(mmdlm2); + lseek(fd, (off_t) (dp->d_id * sizeof(*dp)), SEEK_SET); + if (read(fd, (char *) dl, sizeof(*dl)) != sizeof(*dl) || (ntohl(dl->d_stop) != dp->d_stop && ntohl(dl->d_stop) + count != dp->d_stop)) { if (noisy) - admonish (NULL, "%s: corrupt index(2)", file); + admonish(NULL, "%s: corrupt index(2)", file); return NOTOK; }