X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/4c436246f048635446353dadaa68174445c58160..83ffa51bdfbcf4e1f93e57fb64d57ddbeeeb2304:/uip/mhcachesbr.c diff --git a/uip/mhcachesbr.c b/uip/mhcachesbr.c index 7e684e1f..7afbadd5 100644 --- a/uip/mhcachesbr.c +++ b/uip/mhcachesbr.c @@ -9,7 +9,6 @@ #include #include -#include #include #include #include @@ -38,7 +37,7 @@ char *cache_private; /* mhmisc.c */ -int part_ok (CT, int); +int part_ok (CT); int type_ok (CT, int); void content_error (char *, CT, char *, ...); void flush_errors (void); @@ -136,7 +135,9 @@ cache_content (CT ct) while ((cc = fread (buffer, sizeof(*buffer), sizeof(buffer), gp)) > 0) - fwrite (buffer, sizeof(*buffer), cc, fp); + if ((int) fwrite (buffer, sizeof(*buffer), cc, fp) < cc) { + advise ("cache_content", "fwrite"); + } fflush (fp); if (ferror (gp)) { @@ -257,7 +258,7 @@ got_it: snprintf (bp, buflen, "\n in file %s? ", buffer); /* Now, check answer */ - if (!getanswer (query)) + if (!read_yes_or_no_if_tty (query)) status = NOTOK; } @@ -279,6 +280,7 @@ find_cache_aux (int writing, char *directory, char *id, int mask, usemap; char mapfile[BUFSIZ], mapname[BUFSIZ]; FILE *fp; + int failed_to_lock = 0; static int partno, pid; static time_t clock = 0; @@ -333,12 +335,15 @@ use_raw: make_intermediates (mapfile); mask = umask (writing == 2 ? 0077 : 0); - if (!(fp = lkfopendata (mapfile, "a")) && errno == ENOENT) { + if (!(fp = lkfopendata (mapfile, "a", &failed_to_lock)) && errno == ENOENT) { int fd; if ((fd = creat (mapfile, 0666)) != NOTOK) { close (fd); - fp = lkfopendata (mapfile, "a"); + fp = lkfopendata (mapfile, "a", &failed_to_lock); + if (failed_to_lock) { + adios (mapfile, "failed to lock"); + } } } umask (mask); @@ -366,8 +371,9 @@ find_cache_aux2 (char *mapfile, char *id, char *mapname, int namelen) char buf[BUFSIZ], name[NAMESZ]; FILE *fp; m_getfld_state_t gstate = 0; + int failed_to_lock = 0; - if (!(fp = lkfopendata (mapfile, "r"))) + if (!(fp = lkfopendata (mapfile, "r", &failed_to_lock))) return NOTOK; for (;;) {