X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/337b4e616e8f53ba06285b1645e1df9918ed5c16..0b7286788a95dd854d1826b8493eda431d8e8aac:/uip/annosbr.c diff --git a/uip/annosbr.c b/uip/annosbr.c index 63d2ee44..eafcbfc1 100644 --- a/uip/annosbr.c +++ b/uip/annosbr.c @@ -1,15 +1,16 @@ - -/* - * annosbr.c -- prepend annotation to messages +/* annosbr.c -- prepend annotation to messages * * This code is Copyright (c) 2002, by the authors of nmh. See the * COPYRIGHT file in the root directory of the nmh distribution for * complete copyright information. */ -#include -#include -#include +#include "h/mh.h" +#include "sbr/error.h" +#include "h/tws.h" +#include "h/utils.h" +#include "sbr/lock_file.h" +#include "sbr/m_mktemp.h" #include #include @@ -17,7 +18,7 @@ /* * static prototypes */ -static int annosbr (int, char *, char *, char *, int, int, int, int); +static int annosbr (int, char *, char *, char *, bool, bool, int, bool); /* * This "local" global and the annopreserve() function are a hack that allows additional @@ -27,7 +28,7 @@ static int annosbr (int, char *, char *, char *, int, int, int, int); static int preserve_actime_and_modtime = 0; /* set to preserve access and modification times on annotated message */ int -annotate (char *file, char *comp, char *text, int inplace, int datesw, int delete, int append) +annotate (char *file, char *comp, char *text, bool inplace, bool datesw, int delete, bool append) { int i, fd; struct utimbuf b; @@ -52,7 +53,7 @@ annotate (char *file, char *comp, char *text, int inplace, int datesw, int delet } if (stat(file, &s) == -1) { - advise("can't get access and modification times for %s", file); + inform("can't get access and modification times for %s", file); preserve_actime_and_modtime = 0; } @@ -62,7 +63,7 @@ annotate (char *file, char *comp, char *text, int inplace, int datesw, int delet i = annosbr (fd, file, comp, text, inplace, datesw, delete, append); if (preserve_actime_and_modtime && utime(file, &b) == -1) - advise("can't set access and modification times for %s", file); + inform("can't set access and modification times for %s", file); lkclosedata (fd, file); return i; @@ -70,7 +71,7 @@ annotate (char *file, char *comp, char *text, int inplace, int datesw, int delet /* * Produce a listing of all header fields (annotations) whose field name matches - * comp. Number the listing if number is set. Treate the field bodies as path + * comp. Number the listing if number is set. Treat the field bodies as path * names and just output the last component unless text is non-NULL. We don't * care what text is set to. */ @@ -88,7 +89,7 @@ annolist(char *file, char *comp, char *text, int number) int n; /* number of bytes written */ char *sp; /* another miscellaneous character pointer */ - if ((fp = fopen(file, "r")) == (FILE *)0) + if ((fp = fopen(file, "r")) == NULL) adios(file, "unable to open"); /* @@ -96,7 +97,7 @@ annolist(char *file, char *comp, char *text, int number) * This buffer might need to be quite large, so we grow it as needed. */ - field = (char *)mh_xmalloc(field_size = 256); + field = mh_xmalloc(field_size = 256); /* * Get the length of the field name since we use it often. @@ -121,7 +122,7 @@ annolist(char *file, char *comp, char *text, int number) } if (++n >= field_size - 1) { - field = (char *) mh_xrealloc((void *)field, field_size += 256); + field = mh_xrealloc((void *)field, field_size += 256); cp = field + n - 1; } @@ -140,10 +141,10 @@ annolist(char *file, char *comp, char *text, int number) if (number) (void)printf("%d\t", ++count); - if (text == (char *)0 && (sp = strrchr(cp, '/')) != (char *)0) + if (text == NULL && (sp = strrchr(cp, '/'))) cp = sp + 1; - (void)printf("%s\n", cp); + puts(cp); } } while (*field != '\0' && *field != '-'); @@ -155,8 +156,6 @@ annolist(char *file, char *comp, char *text, int number) free(field); (void)fclose(fp); - - return; } /* @@ -167,11 +166,10 @@ void annopreserve(int preserve) { preserve_actime_and_modtime = preserve; - return; } static int -annosbr (int fd, char *file, char *comp, char *text, int inplace, int datesw, int delete, int append) +annosbr (int fd, char *file, char *comp, char *text, bool inplace, bool datesw, int delete, bool append) { int mode, tmpfd; char *cp, *sp; @@ -189,7 +187,7 @@ annosbr (int fd, char *file, char *comp, char *text, int inplace, int datesw, in mode = fstat (fd, &st) != NOTOK ? (int) (st.st_mode & 0777) : m_gmprot (); if ((cp = m_mktemp2(file, "annotate", NULL, &tmp)) == NULL) { - adios(NULL, "unable to create temporary file in %s", get_temp_dir()); + die("unable to create temporary file"); } strncpy (tmpfil, cp, sizeof(tmpfil)); chmod (tmpfil, mode); @@ -202,11 +200,11 @@ annosbr (int fd, char *file, char *comp, char *text, int inplace, int datesw, in * as they're read in. This buffer is grown as needed later. */ - if (delete >= -1 || append != 0) { - if ((fp = fdopen(fd, "r")) == (FILE *)0) - adios(NULL, "unable to fdopen file."); + if (delete >= -1 || append) { + if ((fp = fdopen(fd, "r")) == NULL) + die("unable to fdopen file."); - field = (char *)mh_xmalloc(field_size = 256); + field = mh_xmalloc(field_size = 256); } /* @@ -260,7 +258,7 @@ annosbr (int fd, char *file, char *comp, char *text, int inplace, int datesw, in } if (++n >= field_size - 1) { - field = (char *) mh_xrealloc((void *)field, field_size *= 2); + field = mh_xrealloc((void *)field, field_size *= 2); cp = field + n - 1; } @@ -296,7 +294,7 @@ annosbr (int fd, char *file, char *comp, char *text, int inplace, int datesw, in if (strncasecmp(field, comp, length) == 0 && field[length] == ':') { if (delete == 0) { - if (text == (char *)0) + if (text == NULL) break; for (cp = field + length + 1; *cp == ' ' || *cp == '\t'; cp++) @@ -307,7 +305,7 @@ annosbr (int fd, char *file, char *comp, char *text, int inplace, int datesw, in break; } else { - if ((sp = strrchr(cp, '/')) != (char *)0) + if ((sp = strrchr(cp, '/')) != NULL) cp = sp + 1; if (strcmp(cp, text) == 0) @@ -327,7 +325,7 @@ annosbr (int fd, char *file, char *comp, char *text, int inplace, int datesw, in */ if ((n = fputs(field, tmp)) == EOF || (c == '\n' && fputc('\n', tmp) == EOF)) - adios(NULL, "unable to write temporary file."); + die("unable to write temporary file."); } while (*field != '\0' && *field != '-'); @@ -335,7 +333,7 @@ annosbr (int fd, char *file, char *comp, char *text, int inplace, int datesw, in * Get rid of the field buffer because we're done with it. */ - free((void *)field); + free(field); } else { @@ -395,10 +393,8 @@ annosbr (int fd, char *file, char *comp, char *text, int inplace, int datesw, in * copying routine uses the descriptor, not the pointer. */ - if (append || delete >= -1) { - if (lseek(fd, (off_t)ftell(fp), SEEK_SET) == (off_t)-1) - adios(NULL, "can't seek."); - } + if (fp && lseek(fd, (off_t)ftell(fp), SEEK_SET) == (off_t)-1) + die("can't seek."); cpydata (fd, fileno (tmp), file, tmpfil); fclose (tmp); @@ -407,7 +403,7 @@ annosbr (int fd, char *file, char *comp, char *text, int inplace, int datesw, in if ((tmpfd = open (tmpfil, O_RDONLY)) == NOTOK) adios (tmpfil, "unable to open for re-reading"); - lseek (fd, (off_t) 0, SEEK_SET); + lseek(fd, 0, SEEK_SET); /* * We're making the file shorter if we're deleting a header field @@ -446,7 +442,7 @@ annosbr (int fd, char *file, char *comp, char *text, int inplace, int datesw, in * lkclose() fail, but that failure is ignored so it's not a problem. */ - if (delete >= -1) + if (fp) (void)fclose(fp); return 0;