X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Ffb-file.c;h=ac25dcf3e954b1c663dcc5b288ba33625302abd4;hb=0eea3757c0ee4462a641562ba03c893548971d8f;hp=07b4ec5ddf2d5f79343c979468d60053717724f2;hpb=5b53087fa5a07ff89d34cf3bf3bc1b28809f05c2;p=libucw.git diff --git a/lib/fb-file.c b/lib/fb-file.c index 07b4ec5d..ac25dcf3 100644 --- a/lib/fb-file.c +++ b/lib/fb-file.c @@ -4,15 +4,15 @@ * (c) 1997--2000 Martin Mares */ +#include "lib/lib.h" +#include "lib/fastbuf.h" +#include "lib/lfs.h" + #include #include #include #include -#include "lib/lib.h" -#include "lib/fastbuf.h" -#include "lib/lfs.h" - static int bfd_refill(struct fastbuf *f) { @@ -64,13 +64,15 @@ static void bfd_close(struct fastbuf *f) { close(f->fd); + if (f->is_temp_file && unlink(f->name) < 0) + die("unlink(%s): %m", f->name); } static struct fastbuf * bfdopen_internal(int fd, uns buflen, byte *name) { int namelen = strlen(name) + 1; - struct fastbuf *b = xmalloc(sizeof(struct fastbuf) + buflen + namelen); + struct fastbuf *b = xmalloc_zero(sizeof(struct fastbuf) + buflen + namelen); b->buflen = buflen; b->buffer = (char *)(b+1); @@ -78,7 +80,6 @@ bfdopen_internal(int fd, uns buflen, byte *name) b->bufend = b->buffer + buflen; b->name = b->bufend; strcpy(b->name, name); - b->pos = b->fdpos = 0; b->fd = fd; b->refill = bfd_refill; b->spout = bfd_spout;