diff options
Diffstat (limited to 'src/libbio/binit.c')
-rw-r--r-- | src/libbio/binit.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/libbio/binit.c b/src/libbio/binit.c index d76168b7..33bf5812 100644 --- a/src/libbio/binit.c +++ b/src/libbio/binit.c @@ -98,6 +98,19 @@ Binit(Biobuf *bp, int f, int mode) } Biobuf* +Bfdopen(int f, int mode) +{ + Biobuf *bp; + + bp = malloc(sizeof(Biobuf)); + if(bp == 0) + return 0; + Binits(bp, f, mode, bp->b, sizeof(bp->b)); + bp->flag = Bmagic; + return bp; +} + +Biobuf* Bopen(char *name, int mode) { Biobuf *bp; @@ -119,11 +132,9 @@ Bopen(char *name, int mode) if(f < 0) return 0; } - bp = malloc(sizeof(Biobuf)); + bp = Bfdopen(f, mode); if(bp == 0) - return 0; - Binits(bp, f, mode, bp->b, sizeof(bp->b)); - bp->flag = Bmagic; + close(f); return bp; } |