summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorforsyth <forsyth@vitanuova.com>2012-04-24 15:59:48 +0100
committerforsyth <forsyth@vitanuova.com>2012-04-24 15:59:48 +0100
commita6b3238f419e5f5ccc08dd86121c357264e54987 (patch)
tree3853b35c797c2397cfd2f6936d7efbd54395bb66
parent415df4d7bdb1e1b37f2571ff3a63c9b13d1f5cc2 (diff)
20120424-1559
-rw-r--r--CHANGES3
-rw-r--r--include/version.h2
-rw-r--r--libbio/bprint.c5
-rw-r--r--utils/c2l/Posix.c2
-rw-r--r--utils/cc/Posix.c2
5 files changed, 11 insertions, 3 deletions
diff --git a/CHANGES b/CHANGES
index fca5303b..dc0113d2 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+20120424
+ utils/cc/Posix.c and utils/c2l/Posix.c: correct definition of mydup for POSIX dup/dup2
+ libbio/bprint.c error handling if flush or print fails
20120305
add -I$ROOT/(Plan9|Inferno)/include to CFLAGS in mkfiles/^(mkfile-Plan9* mkfile-Inferno*)
change specific object type to $OBJTYPE in the same
diff --git a/include/version.h b/include/version.h
index 9e6e5057..165d7f94 100644
--- a/include/version.h
+++ b/include/version.h
@@ -1 +1 @@
-#define VERSION "Fourth Edition (20120421)"
+#define VERSION "Fourth Edition (20120424)"
diff --git a/libbio/bprint.c b/libbio/bprint.c
index 6e21e444..26870024 100644
--- a/libbio/bprint.c
+++ b/libbio/bprint.c
@@ -14,12 +14,13 @@ Bprint(Biobuf *bp, char *fmt, ...)
out = vseprint(ip, ep, fmt, ap);
va_end(ap);
if(out == nil || out >= ep-5) {
- Bflush(bp);
+ if(Bflush(bp) < 0)
+ return Beof;
ip = ep + bp->ocount;
va_start(ap, fmt);
out = vseprint(ip, ep, fmt, ap);
va_end(ap);
- if(out >= ep-5)
+ if(out == nil || out >= ep-5)
return Beof;
}
n = out-ip;
diff --git a/utils/c2l/Posix.c b/utils/c2l/Posix.c
index 065f1e20..e572e5da 100644
--- a/utils/c2l/Posix.c
+++ b/utils/c2l/Posix.c
@@ -22,6 +22,8 @@ mywait(int *s)
int
mydup(int f1, int f2)
{
+ if(f2 < 0)
+ return dup(f1);
return dup2(f1,f2);
}
diff --git a/utils/cc/Posix.c b/utils/cc/Posix.c
index dfe28d60..f651bf56 100644
--- a/utils/cc/Posix.c
+++ b/utils/cc/Posix.c
@@ -23,6 +23,8 @@ mywait(int *s)
int
mydup(int f1, int f2)
{
+ if(f2 < 0)
+ return dup(f1);
return dup2(f1,f2);
}