diff options
author | Bernhard Reutner-Fischer | 2006-01-22 22:55:11 +0000 |
---|---|---|
committer | Bernhard Reutner-Fischer | 2006-01-22 22:55:11 +0000 |
commit | 86f5c9906beac527f3d7966f24811b571a589e08 (patch) | |
tree | 1c9eba853c728b5d734506e1c66c269d96fe46ea /include | |
parent | 2edf52643d3eb3d13f26d31f9678cf122f2063bc (diff) | |
download | busybox-86f5c9906beac527f3d7966f24811b571a589e08.zip busybox-86f5c9906beac527f3d7966f24811b571a589e08.tar.gz |
- add platform.h.
- use shorter boilerplate while at it.
Diffstat (limited to 'include')
-rw-r--r-- | include/busybox.h | 23 | ||||
-rw-r--r-- | include/libbb.h | 43 | ||||
-rw-r--r-- | include/platform.h | 82 |
3 files changed, 93 insertions, 55 deletions
diff --git a/include/busybox.h b/include/busybox.h index f16be70..9fb9503 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 2e697a3..8ec1a24 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 0000000..763292d --- /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 */ |