better cleanup of tmp files

This commit is contained in:
rsc 2005-01-11 20:57:00 +00:00
parent 8f3ba4782d
commit 1c096fa40a

View file

@ -138,10 +138,10 @@ diff(char *f, char *t, int level)
Dir *fsb, *tsb; Dir *fsb, *tsb;
if ((fp = statfile(f, &fsb)) == 0) if ((fp = statfile(f, &fsb)) == 0)
return; goto Return;
if ((tp = statfile(t, &tsb)) == 0){ if ((tp = statfile(t, &tsb)) == 0){
free(fsb); free(fsb);
return; goto Return;
} }
if (DIRECTORY(fsb) && DIRECTORY(tsb)) { if (DIRECTORY(fsb) && DIRECTORY(tsb)) {
if (rflag || level == 0) if (rflag || level == 0)
@ -172,6 +172,9 @@ diff(char *f, char *t, int level)
} }
free(fsb); free(fsb);
free(tsb); free(tsb);
Return:
rmtmpfiles();
} }
void void
@ -186,7 +189,7 @@ main(int argc, char *argv[])
while (--argc && (*++argv)[0] == '-' && (*argv)[1]) { while (--argc && (*++argv)[0] == '-' && (*argv)[1]) {
for (p = *argv+1; *p; p++) { for (p = *argv+1; *p; p++) {
switch (*p) { switch (*p) {
case 'c':
case 'e': case 'e':
case 'f': case 'f':
case 'n': case 'n':
@ -233,10 +236,9 @@ main(int argc, char *argv[])
free(fsb); free(fsb);
} }
free(tsb); free(tsb);
for (i = 0; i < argc-1; i++) { for (i = 0; i < argc-1; i++)
diff(argv[i], argv[argc-1], 0); diff(argv[i], argv[argc-1], 0);
rmtmpfiles();
}
done(anychange); done(anychange);
/*NOTREACHED*/ /*NOTREACHED*/
} }