aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authoraldot <aldot@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-04-13 12:45:04 +0000
committeraldot <aldot@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-04-13 12:45:04 +0000
commitf0bf1ade78b709229cab0801347032478b02ef96 (patch)
tree378b5a002da81f8622913cc6a9aeac873e307ec9 /libbb
parenta39965951155a179f9e8afed70dd5f45ea70f280 (diff)
downloadbusybox-w32-f0bf1ade78b709229cab0801347032478b02ef96.tar.gz
busybox-w32-f0bf1ade78b709229cab0801347032478b02ef96.tar.bz2
busybox-w32-f0bf1ade78b709229cab0801347032478b02ef96.zip
- patch from Denis Vlasenko to add and use bb_xopen3()
git-svn-id: svn://busybox.net/trunk/busybox@14847 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'libbb')
-rw-r--r--libbb/Makefile.in2
-rw-r--r--libbb/xfuncs.c13
2 files changed, 11 insertions, 4 deletions
diff --git a/libbb/Makefile.in b/libbb/Makefile.in
index eac14c60c..102047d73 100644
--- a/libbb/Makefile.in
+++ b/libbb/Makefile.in
@@ -68,7 +68,7 @@ $(LIBBB_MOBJ0):$(LIBBB_MSRC0)
68 68
69LIBBB_MSRC1:=$(srcdir)/xfuncs.c 69LIBBB_MSRC1:=$(srcdir)/xfuncs.c
70LIBBB_MOBJ1:=xmalloc.o xrealloc.o xcalloc.o xstrdup.o xstrndup.o \ 70LIBBB_MOBJ1:=xmalloc.o xrealloc.o xcalloc.o xstrdup.o xstrndup.o \
71 xfopen.o xopen.o xread.o xread_all.o xread_char.o \ 71 xfopen.o xopen.o xopen3.o xread.o xread_all.o xread_char.o \
72 xferror.o xferror_stdout.o xfflush_stdout.o strlen.o 72 xferror.o xferror_stdout.o xfflush_stdout.o strlen.o
73LIBBB_MOBJ1:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ1)) 73LIBBB_MOBJ1:=$(patsubst %,$(LIBBB_DIR)/%, $(LIBBB_MOBJ1))
74$(LIBBB_MOBJ1):$(LIBBB_MSRC1) 74$(LIBBB_MOBJ1):$(LIBBB_MSRC1)
diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c
index 9ee4fcd65..3db526b85 100644
--- a/libbb/xfuncs.c
+++ b/libbb/xfuncs.c
@@ -100,10 +100,17 @@ FILE *bb_xfopen(const char *path, const char *mode)
100#ifdef L_xopen 100#ifdef L_xopen
101int bb_xopen(const char *pathname, int flags) 101int bb_xopen(const char *pathname, int flags)
102{ 102{
103 return bb_xopen3(pathname, flags, 0777);
104}
105#endif
106
107#ifdef L_xopen3
108int bb_xopen3(const char *pathname, int flags, int mode)
109{
103 int ret; 110 int ret;
104 111
105 ret = open(pathname, flags, 0777); 112 ret = open(pathname, flags, mode);
106 if (ret == -1) { 113 if (ret < 0) {
107 bb_perror_msg_and_die("%s", pathname); 114 bb_perror_msg_and_die("%s", pathname);
108 } 115 }
109 return ret; 116 return ret;
@@ -116,7 +123,7 @@ ssize_t bb_xread(int fd, void *buf, size_t count)
116 ssize_t size; 123 ssize_t size;
117 124
118 size = read(fd, buf, count); 125 size = read(fd, buf, count);
119 if (size == -1) { 126 if (size < 0) {
120 bb_perror_msg_and_die(bb_msg_read_error); 127 bb_perror_msg_and_die(bb_msg_read_error);
121 } 128 }
122 return(size); 129 return(size);