svn commit: trunk/busybox: applets archival/libunarchive coreutils etc...
vda at busybox.net
vda at busybox.net
Thu May 31 22:16:42 UTC 2007
Author: vda
Date: 2007-05-31 15:16:38 -0700 (Thu, 31 May 2007)
New Revision: 18716
Log:
use "glibc errno" trick not only for ash, but for entire busybox
(add/remove: 1/1 grow/shrink: 37/37 up/down: 139/-228) Total: -89 bytes
Modified:
trunk/busybox/applets/applets.c
trunk/busybox/archival/libunarchive/data_skip.c
trunk/busybox/archival/libunarchive/seek_by_jump.c
trunk/busybox/coreutils/mv.c
trunk/busybox/debianutils/mktemp.c
trunk/busybox/include/libbb.h
trunk/busybox/libbb/error_msg.c
trunk/busybox/libbb/perror_msg.c
trunk/busybox/libbb/run_shell.c
trunk/busybox/libbb/safe_write.c
trunk/busybox/loginutils/login.c
trunk/busybox/miscutils/devfsd.c
trunk/busybox/networking/libiproute/libnetlink.c
trunk/busybox/shell/ash.c
trunk/busybox/util-linux/ipcs.c
trunk/busybox/util-linux/setarch.c
Changeset:
Modified: trunk/busybox/applets/applets.c
===================================================================
--- trunk/busybox/applets/applets.c 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/applets/applets.c 2007-05-31 22:16:38 UTC (rev 18716)
@@ -641,10 +641,19 @@
}
+#ifdef __GLIBC__
+/* Make it reside in R/W memory: */
+int *const bb_errno __attribute__ ((section (".data")));
+#endif
+
int main(int argc, char **argv)
{
const char *s;
+#ifdef __GLIBC__
+ (*(int **)&bb_errno) = __errno_location();
+#endif
+
#if !BB_MMU
/* NOMMU re-exec trick sets high-order bit in first byte of name */
if (argv[0][0] & 0x80) {
Modified: trunk/busybox/archival/libunarchive/data_skip.c
===================================================================
--- trunk/busybox/archival/libunarchive/data_skip.c 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/archival/libunarchive/data_skip.c 2007-05-31 22:16:38 UTC (rev 18716)
@@ -3,12 +3,8 @@
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*/
-#include <sys/types.h>
-#include <errno.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include "unarchive.h"
#include "libbb.h"
+#include "unarchive.h"
void data_skip(archive_handle_t *archive_handle)
{
Modified: trunk/busybox/archival/libunarchive/seek_by_jump.c
===================================================================
--- trunk/busybox/archival/libunarchive/seek_by_jump.c 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/archival/libunarchive/seek_by_jump.c 2007-05-31 22:16:38 UTC (rev 18716)
@@ -3,11 +3,6 @@
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*/
-#include <sys/types.h>
-#include <errno.h>
-#include <unistd.h>
-#include <stdlib.h>
-
#include "libbb.h"
#include "unarchive.h"
Modified: trunk/busybox/coreutils/mv.c
===================================================================
--- trunk/busybox/coreutils/mv.c 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/coreutils/mv.c 2007-05-31 22:16:38 UTC (rev 18716)
@@ -15,10 +15,7 @@
#include <sys/types.h>
#include <sys/stat.h>
-#include <unistd.h>
#include <dirent.h>
-#include <errno.h>
-#include <stdlib.h>
#include <getopt.h> /* struct option */
#include "libbb.h"
#include "libcoreutils/coreutils.h"
Modified: trunk/busybox/debianutils/mktemp.c
===================================================================
--- trunk/busybox/debianutils/mktemp.c 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/debianutils/mktemp.c 2007-05-31 22:16:38 UTC (rev 18716)
@@ -10,11 +10,6 @@
*/
#include "libbb.h"
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdlib.h>
int mktemp_main(int argc, char **argv);
int mktemp_main(int argc, char **argv)
Modified: trunk/busybox/include/libbb.h
===================================================================
--- trunk/busybox/include/libbb.h 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/include/libbb.h 2007-05-31 22:16:38 UTC (rev 18716)
@@ -165,6 +165,14 @@
#endif
+#if defined(__GLIBC__)
+/* glibc uses __errno_location() to get a ptr to errno */
+/* We can just memorize it once - no multithreading in busybox :) */
+extern int *const bb_errno;
+#undef errno
+#define errno (*bb_errno)
+#endif
+
#if defined(__GLIBC__) && __GLIBC__ < 2
int vdprintf(int d, const char *format, va_list ap);
#endif
Modified: trunk/busybox/libbb/error_msg.c
===================================================================
--- trunk/busybox/libbb/error_msg.c 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/libbb/error_msg.c 2007-05-31 22:16:38 UTC (rev 18716)
@@ -7,10 +7,6 @@
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*/
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
#include "libbb.h"
void bb_error_msg(const char *s, ...)
Modified: trunk/busybox/libbb/perror_msg.c
===================================================================
--- trunk/busybox/libbb/perror_msg.c 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/libbb/perror_msg.c 2007-05-31 22:16:38 UTC (rev 18716)
@@ -7,10 +7,6 @@
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*/
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
#include "libbb.h"
void bb_perror_msg(const char *s, ...)
Modified: trunk/busybox/libbb/run_shell.c
===================================================================
--- trunk/busybox/libbb/run_shell.c 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/libbb/run_shell.c 2007-05-31 22:16:38 UTC (rev 18716)
@@ -28,19 +28,12 @@
* SUCH DAMAGE.
*/
-#include <stdio.h>
-#include <errno.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdlib.h>
-#include <syslog.h>
-#include <ctype.h>
#include "libbb.h"
-#ifdef CONFIG_SELINUX
+#if ENABLE_SELINUX
#include <selinux/selinux.h> /* for setexeccon */
#endif
-#ifdef CONFIG_SELINUX
+#if ENABLE_SELINUX
static security_context_t current_sid;
void
@@ -90,7 +83,7 @@
args[argno++] = *additional_args;
}
args[argno] = NULL;
-#ifdef CONFIG_SELINUX
+#if ENABLE_SELINUX
if (current_sid && !setexeccon(current_sid)) {
freecon(current_sid);
execve(shell, (char **) args, environ);
Modified: trunk/busybox/libbb/safe_write.c
===================================================================
--- trunk/busybox/libbb/safe_write.c 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/libbb/safe_write.c 2007-05-31 22:16:38 UTC (rev 18716)
@@ -7,13 +7,8 @@
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*/
-#include <stdio.h>
-#include <errno.h>
-#include <unistd.h>
#include "libbb.h"
-
-
ssize_t safe_write(int fd, const void *buf, size_t count)
{
ssize_t n;
Modified: trunk/busybox/loginutils/login.c
===================================================================
--- trunk/busybox/loginutils/login.c 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/loginutils/login.c 2007-05-31 22:16:38 UTC (rev 18716)
@@ -12,7 +12,6 @@
#include <selinux/selinux.h> /* for is_selinux_enabled() */
#include <selinux/get_context_list.h> /* for get_default_context() */
#include <selinux/flask.h> /* for security class definitions */
-#include <errno.h>
#endif
enum {
Modified: trunk/busybox/miscutils/devfsd.c
===================================================================
--- trunk/busybox/miscutils/devfsd.c 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/miscutils/devfsd.c 2007-05-31 22:16:38 UTC (rev 18716)
@@ -56,23 +56,12 @@
#include "libbb.h"
#include "xregex.h"
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <ctype.h>
-#include <sys/stat.h>
-#include <sys/types.h>
#include <sys/wait.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <dirent.h>
-#include <fcntl.h>
#include <syslog.h>
-#include <signal.h>
-#include <errno.h>
#include <sys/sysmacros.h>
Modified: trunk/busybox/networking/libiproute/libnetlink.c
===================================================================
--- trunk/busybox/networking/libiproute/libnetlink.c 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/networking/libiproute/libnetlink.c 2007-05-31 22:16:38 UTC (rev 18716)
@@ -11,16 +11,10 @@
*
*/
-#include "libbb.h"
#include <sys/socket.h>
-
-#include <errno.h>
-#include <string.h>
-#include <time.h>
-#include <unistd.h>
-
#include <sys/uio.h>
+#include "libbb.h"
#include "libnetlink.h"
void rtnl_close(struct rtnl_handle *rth)
Modified: trunk/busybox/shell/ash.c
===================================================================
--- trunk/busybox/shell/ash.c 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/shell/ash.c 2007-05-31 22:16:38 UTC (rev 18716)
@@ -127,13 +127,6 @@
/* ============ Misc data */
-#ifdef __GLIBC__
-/* glibc sucks */
-static int *dash_errno;
-#undef errno
-#define errno (*dash_errno)
-#endif
-
static char nullstr[1]; /* zero length string */
static const char homestr[] = "HOME";
static const char snlfmt[] = "%s\n";
@@ -12734,10 +12727,6 @@
struct jmploc jmploc;
struct stackmark smark;
-#ifdef __GLIBC__
- dash_errno = __errno_location();
-#endif
-
#if PROFILE
monitor(4, etext, profile_buf, sizeof(profile_buf), 50);
#endif
Modified: trunk/busybox/util-linux/ipcs.c
===================================================================
--- trunk/busybox/util-linux/ipcs.c 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/util-linux/ipcs.c 2007-05-31 22:16:38 UTC (rev 18716)
@@ -8,12 +8,6 @@
* Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*/
-#include "libbb.h"
-#include <errno.h>
-#include <time.h>
-#include <pwd.h>
-#include <grp.h>
-
/* X/OPEN tells us to use <sys/{types,ipc,sem}.h> for semctl() */
/* X/OPEN tells us to use <sys/{types,ipc,msg}.h> for msgctl() */
/* X/OPEN tells us to use <sys/{types,ipc,shm}.h> for shmctl() */
@@ -23,8 +17,8 @@
#include <sys/msg.h>
#include <sys/shm.h>
+#include "libbb.h"
-
/*-------------------------------------------------------------------*/
/* SHM_DEST and SHM_LOCKED are defined in kernel headers,
but inside #ifdef __KERNEL__ ... #endif */
Modified: trunk/busybox/util-linux/setarch.c
===================================================================
--- trunk/busybox/util-linux/setarch.c 2007-05-31 21:31:56 UTC (rev 18715)
+++ trunk/busybox/util-linux/setarch.c 2007-05-31 22:16:38 UTC (rev 18716)
@@ -7,11 +7,6 @@
* Licensed under GPL v2 or later, see file License for details.
*/
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <errno.h>
-#include <stdio.h>
#include <sys/personality.h>
#include "libbb.h"
More information about the busybox-cvs
mailing list