diff options
author | Denis Vlasenko | 2008-07-09 09:50:33 +0000 |
---|---|---|
committer | Denis Vlasenko | 2008-07-09 09:50:33 +0000 |
commit | f62ab2d77455ca42e1300e72b70d06e8a16db53b (patch) | |
tree | 7a5391066d647ecec698214773eee8504c7a041a /modutils | |
parent | dbef1173b00f0877a63121c40bf607155ac1e9a7 (diff) | |
download | busybox-f62ab2d77455ca42e1300e72b70d06e8a16db53b.zip busybox-f62ab2d77455ca42e1300e72b70d06e8a16db53b.tar.gz |
libbb: use improved xmalloc_read() from modprobe-small
who: fix compile breakage on some systems
modprobe-small: improve Config help text wording
Diffstat (limited to 'modutils')
-rw-r--r-- | modutils/Config.in | 2 | ||||
-rw-r--r-- | modutils/modprobe-small.c | 48 |
2 files changed, 1 insertions, 49 deletions
diff --git a/modutils/Config.in b/modutils/Config.in index 25841b8..2e7f9b6 100644 --- a/modutils/Config.in +++ b/modutils/Config.in @@ -31,7 +31,7 @@ config MODPROBE_SMALL than "non-small" modutils. config FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE - bool "module options on cmdline" + bool "Accept module options on modprobe command line" default n depends on MODPROBE_SMALL help diff --git a/modutils/modprobe-small.c b/modutils/modprobe-small.c index 4f07353..1096ba7 100644 --- a/modutils/modprobe-small.c +++ b/modutils/modprobe-small.c @@ -14,54 +14,6 @@ #include <sys/utsname.h> /* uname() */ #include <fnmatch.h> -/* libbb candidate */ -static void *xmalloc_read(int fd, size_t *sizep) -{ - char *buf; - size_t size, rd_size, total; - off_t to_read; - struct stat st; - - to_read = sizep ? *sizep : INT_MAX; /* max to read */ - - /* Estimate file size */ - st.st_size = 0; /* in case fstat fails, assume 0 */ - fstat(fd, &st); - /* /proc/N/stat files report st_size 0 */ - /* In order to make such files readable, we add small const */ - size = (st.st_size | 0x3ff) + 1; - - total = 0; - buf = NULL; - while (1) { - if (to_read < size) - size = to_read; - buf = xrealloc(buf, total + size + 1); - rd_size = full_read(fd, buf + total, size); - if ((ssize_t)rd_size < 0) { /* error */ - free(buf); - return NULL; - } - total += rd_size; - if (rd_size < size) /* EOF */ - break; - to_read -= rd_size; - if (to_read <= 0) - break; - /* grow by 1/8, but in [1k..64k] bounds */ - size = ((total / 8) | 0x3ff) + 1; - if (size > 64*1024) - size = 64*1024; - } - xrealloc(buf, total + 1); - buf[total] = '\0'; - - if (sizep) - *sizep = total; - return buf; -} - - #define dbg1_error_msg(...) ((void)0) #define dbg2_error_msg(...) ((void)0) //#define dbg1_error_msg(...) bb_error_msg(__VA_ARGS__) |