aboutsummaryrefslogtreecommitdiff
path: root/src/libbio/binit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libbio/binit.c')
-rw-r--r--src/libbio/binit.c19
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;
}