aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2006-01-22 22:55:11 +0000
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2006-01-22 22:55:11 +0000
commit86f5c9906beac527f3d7966f24811b571a589e08 (patch)
tree1c9eba853c728b5d734506e1c66c269d96fe46ea /include
parent2edf52643d3eb3d13f26d31f9678cf122f2063bc (diff)
downloadbusybox-86f5c9906beac527f3d7966f24811b571a589e08.tar.gz
- add platform.h.
- use shorter boilerplate while at it.
Diffstat (limited to 'include')
-rw-r--r--include/busybox.h23
-rw-r--r--include/libbb.h43
-rw-r--r--include/platform.h82
3 files changed, 93 insertions, 55 deletions
diff --git a/include/busybox.h b/include/busybox.h
index f16be706d..9fb95036e 100644
--- a/include/busybox.h
+++ b/include/busybox.h
@@ -2,24 +2,7 @@
/*
* Busybox main internal header file
*
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * Based in part on code from sash, Copyright (c) 1999 by David I. Bell
- * Permission has been granted to redistribute this code under the GPL.
- *
+ * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
*/
#ifndef _BB_INTERNAL_H_
#define _BB_INTERNAL_H_ 1
@@ -66,8 +49,8 @@ enum SUIDRoot {
struct BB_applet {
const char *name;
int (*main) (int argc, char **argv);
- enum Location location:4;
- enum SUIDRoot need_suid:4;
+ __extension__ enum Location location:4;
+ __extension__ enum SUIDRoot need_suid:4;
};
/* From busybox.c */
diff --git a/include/libbb.h b/include/libbb.h
index 2e697a350..8ec1a24c0 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -2,27 +2,14 @@
/*
* Busybox main internal header file
*
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
*
* Based in part on code from sash, Copyright (c) 1999 by David I. Bell
* Permission has been granted to redistribute this code under the GPL.
*
*/
-#ifndef __LIBCONFIG_H__
-#define __LIBCONFIG_H__ 1
+#ifndef __LIBBUSYBOX_H__
+#define __LIBBUSYBOX_H__ 1
#include <stdio.h>
#include <stdlib.h>
@@ -36,6 +23,7 @@
#include <features.h>
+#include "platform.h"
#include "bb_config.h"
#ifdef CONFIG_SELINUX
#include <selinux/selinux.h>
@@ -50,21 +38,6 @@
# include "sha1.h"
#endif
-/* Convenience macros to test the version of gcc. */
-#if defined __GNUC__ && defined __GNUC_MINOR__
-# define __GNUC_PREREQ(maj, min) \
- ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
-#else
-# define __GNUC_PREREQ(maj, min) 0
-#endif
-
-/* __restrict is known in EGCS 1.2 and above. */
-#if !__GNUC_PREREQ (2,92)
-# define __restrict /* Ignore */
-#endif
-
-#define attribute_noreturn __attribute__ ((__noreturn__))
-
/* Some useful definitions */
#define FALSE ((int) 0)
#define TRUE ((int) 1)
@@ -86,7 +59,7 @@
#define MAX(a,b) (((a)>(b))?(a):(b))
#endif
-extern void bb_show_usage(void) __attribute__ ((noreturn, externally_visible));
+extern void bb_show_usage(void) ATTRIBUTE_NORETURN ATTRIBUTE_EXTERNALLY_VISIBLE;
extern void bb_error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
extern void bb_error_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
extern void bb_perror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
@@ -95,7 +68,7 @@ extern void bb_vherror_msg(const char *s, va_list p);
extern void bb_herror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
extern void bb_herror_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
-extern void bb_perror_nomsg_and_die(void) __attribute__ ((noreturn));
+extern void bb_perror_nomsg_and_die(void) ATTRIBUTE_NORETURN;
extern void bb_perror_nomsg(void);
/* These two are used internally -- you shouldn't need to use them */
@@ -147,7 +120,7 @@ extern FILE *bb_wfopen_input(const char *filename);
extern FILE *bb_xfopen(const char *path, const char *mode);
extern int bb_fclose_nonstdin(FILE *f);
-extern void bb_fflush_stdout_and_exit(int retval) __attribute__ ((noreturn));
+extern void bb_fflush_stdout_and_exit(int retval) ATTRIBUTE_NORETURN;
#define BB_GETOPT_ERROR 0x80000000UL
extern const char *bb_opt_complementally;
@@ -498,4 +471,4 @@ extern int hash_fd(int fd, const size_t size, const uint8_t hash_algo, uint8_t *
#include <dmalloc.h>
#endif
-#endif /* __LIBCONFIG_H__ */
+#endif /* __LIBBUSYBOX_H__ */
diff --git a/include/platform.h b/include/platform.h
new file mode 100644
index 000000000..763292d7a
--- /dev/null
+++ b/include/platform.h
@@ -0,0 +1,82 @@
+/*
+ Copyright 2006, Bernhard Fischer
+
+ Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
+*/
+#ifndef __PLATFORM_H
+#define __PLATFORM_H 1
+
+/* Convenience macros to test the version of gcc. */
+#undef __GNUC_PREREQ
+#if defined __GNUC__ && defined __GNUC_MINOR__
+# define __GNUC_PREREQ(maj, min) \
+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+#else
+# define __GNUC_PREREQ(maj, min) 0
+#endif
+
+/* __restrict is known in EGCS 1.2 and above. */
+#if !__GNUC_PREREQ (2,92)
+# ifndef __restrict
+# define __restrict /* Ignore */
+# endif
+#endif
+
+/* Define macros for some gcc attributes. This permits us to use the
+ macros freely, and know that they will come into play for the
+ version of gcc in which they are supported. */
+
+#if !__GNUC_PREREQ (2,7)
+# ifndef __attribute__
+# define __attribute__(x)
+# endif
+#endif
+
+#if 0
+/* Attribute __malloc__ on functions was valid as of gcc 2.96. */
+#ifndef ATTRIBUTE_MALLOC
+# if __GNUC_PREREQ (2,96)
+# define ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+# else
+# define ATTRIBUTE_MALLOC
+# endif /* GNUC >= 2.96 */
+#endif /* ATTRIBUTE_MALLOC */
+#endif
+
+#ifndef ATTRIBUTE_UNUSED
+#define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+#endif /* ATTRIBUTE_UNUSED */
+
+#ifndef ATTRIBUTE_NORETURN
+#define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
+#endif /* ATTRIBUTE_NORETURN */
+
+#ifndef ATTRIBUTE_PACKED
+#define ATTRIBUTE_PACKED __attribute__ ((__packed__))
+#endif /* ATTRIBUTE_NORETURN */
+
+/* -fwhole-program makes all symbols local. The attribute externally_visible
+ forces a symbol global. */
+#ifndef ATTRIBUTE_EXTERNALLY_VISIBLE
+# if __GNUC_PREREQ (4,1)
+# define ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((__externally_visible__))
+# else
+# define ATTRIBUTE_EXTERNALLY_VISIBLE
+# endif /* GNUC >= 4.1 */
+#endif /* ATTRIBUTE_EXTERNALLY_VISIBLE */
+
+/* We use __extension__ in some places to suppress -pedantic warnings
+ about GCC extensions. This feature didn't work properly before
+ gcc 2.8. */
+#if !__GNUC_PREREQ (2,8)
+# ifndef __extension__
+# define __extension__
+# endif
+#endif
+
+
+/* include USAGE_APPLET_x helper macros for usage.h. */
+/*
+#include "_usage.h"
+*/
+#endif /* platform.h */