X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fannosbr.c;h=99422e6b11ea80e0bf8776127cbc2c9299f2b6af;hp=e8c03e172c208b608736b0d36cdf78128aa2cce5;hb=c8195849d2e366c569271abb0f5f60f4ebf0b4d0;hpb=7b300825615f4d13c2c1a1bd0d05462f9708b7e7 diff --git a/uip/annosbr.c b/uip/annosbr.c index e8c03e1..99422e6 100644 --- a/uip/annosbr.c +++ b/uip/annosbr.c @@ -17,7 +17,7 @@ /* ** static prototypes */ -static int annosbr(int, char *, char *, char *, int, int, int, int); +static int annosbr(int, char *, char *, char *, int, int, int); /* ** This "local" global and the annopreserve() function are a hack that @@ -29,7 +29,7 @@ static int annosbr(int, char *, char *, char *, int, int, int, int); static int preserve_actime_and_modtime = 0; int -annotate(char *file, char *comp, char *text, int inplace, int datesw, +annotate(char *file, char *comp, char *text, int datesw, int delete, int append) { int i, fd; @@ -57,7 +57,7 @@ annotate(char *file, char *comp, char *text, int inplace, int datesw, b.actime = s.st_atime; b.modtime = s.st_mtime; - i = annosbr(fd, file, comp, text, inplace, datesw, delete, append); + i = annosbr(fd, file, comp, text, datesw, delete, append); if (preserve_actime_and_modtime && utime(file, &b) == -1) advise("can't set access and modification times for %s", file); @@ -162,12 +162,12 @@ annopreserve(int preserve) } 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, int datesw, int delete, + int append) { int mode, tmpfd; char *cp, *sp; - char buffer[BUFSIZ], tmpfil[BUFSIZ]; + char tmpfil[BUFSIZ]; struct stat st; FILE *tmp; int c; /* current character */ @@ -406,44 +406,23 @@ annosbr(int fd, char *file, char *comp, char *text, int inplace, cpydata(fd, fileno(tmp), file, tmpfil); fclose(tmp); - if (inplace) { - if ((tmpfd = open(tmpfil, O_RDONLY)) == NOTOK) - adios(tmpfil, "unable to open for re-reading"); + if ((tmpfd = open(tmpfil, O_RDONLY)) == NOTOK) + adios(tmpfil, "unable to open for re-reading"); - lseek(fd, (off_t) 0, SEEK_SET); + lseek(fd, (off_t) 0, SEEK_SET); - /* - ** We're making the file shorter if we're deleting a - ** header field so the file has to be truncated or it - ** will contain garbage. - */ - - if (delete >= -1 && ftruncate(fd, 0) == -1) - adios(tmpfil, "unable to truncate."); + /* + ** We're making the file shorter if we're deleting a + ** header field so the file has to be truncated or it + ** will contain garbage. + */ - cpydata(tmpfd, fd, tmpfil, file); - close(tmpfd); - unlink(tmpfil); - } else { - strncpy(buffer, m_backup(file), sizeof(buffer)); - if (rename(file, buffer) == NOTOK) { - switch (errno) { - case ENOENT: /* unlinked early - no annotations */ - unlink(tmpfil); - break; + if (delete >= -1 && ftruncate(fd, 0) == -1) + adios(tmpfil, "unable to truncate."); - default: - admonish(buffer, "unable to rename %s to", - file); - break; - } - return 1; - } - if (rename(tmpfil, file) == NOTOK) { - admonish(file, "unable to rename %s to", tmpfil); - return 1; - } - } + cpydata(tmpfd, fd, tmpfil, file); + close(tmpfd); + unlink(tmpfil); /* ** Close the delete file so that we don't run out of file pointers if