- if (!idcount)
- unlink(idfile);
- else
- if ((tmpfp = fopen(idfile, "w")) != (FILE *)NULL) {
- for (hostp = hostlist; hostp; hostp = hostp->next) {
- for (idp = hostp->oldsaved; idp; idp = idp->next)
- fprintf(tmpfp, "%s %s\n", hostp->servername, idp->id);
+ if (!idcount && !scratchlist)
+ {
+ if (outlevel >= O_DEBUG) {
+ if (access(idfile, F_OK) == 0)
+ report(stdout, GT_("Deleting fetchids file.\n"));
+ }
+ if (unlink(idfile) && errno != ENOENT)
+ report(stderr, GT_("Error deleting %s: %s\n"), idfile, strerror(errno));
+ } else {
+ char *newnam = (char *)xmalloc(strlen(idfile) + 2);
+ strcpy(newnam, idfile);
+ strcat(newnam, "_");
+ if (outlevel >= O_DEBUG)
+ report(stdout, GT_("Writing fetchids file.\n"));
+ (void)unlink(newnam); /* remove file/link first */
+ if ((tmpfp = fopen(newnam, "w")) != (FILE *)NULL) {
+ int errflg = 0;
+ for (ctl = hostlist; ctl; ctl = ctl->next) {
+ for (idp = ctl->oldsaved; idp; idp = idp->next)
+ if (idp->val.status.mark == UID_SEEN
+ || idp->val.status.mark == UID_DELETED)
+ if (fprintf(tmpfp, "%s@%s %s\n",
+ ctl->remotename, ctl->server.queryname, idp->id) < 0) {
+ int e = errno;
+ report(stderr, GT_("Write error on fetchids file %s: %s\n"), newnam, strerror(e));
+ errflg = 1;
+ goto bailout;
+ }