Move messages.c to libbb. Make each string in messages.c be its own .o file.

This way, we can new get rid of all that tedious #define rubbish we used to
need to enable specific messages.  This way is enormously simpler, and as a
bonus also ends up saving us 96 bytes.
 -Erik
This commit is contained in:
Eric Andersen 2001-04-25 05:39:18 +00:00
parent 3676374915
commit 04095e58fb
46 changed files with 98 additions and 241 deletions

View File

@ -212,7 +212,7 @@ endif
# And option 4:
-include applet_source_list
OBJECTS = $(APPLET_SOURCES:.c=.o) busybox.o messages.o usage.o applets.o
OBJECTS = $(APPLET_SOURCES:.c=.o) busybox.o usage.o applets.o
CFLAGS += $(CROSS_CFLAGS)
CFLAGS += -DBB_VER='"$(VERSION)"'
CFLAGS += -DBB_BT='"$(BUILDTIME)"'
@ -249,13 +249,18 @@ recursive_action.c safe_read.c safe_strncpy.c seek_ared_file.c syscalls.c \
syslog_msg_with_name.c time_string.c trim.c untar.c unzip.c vdprintf.c \
verror_msg.c vperror_msg.c wfopen.c xfuncs.c xgetcwd.c xregcomp.c interface.c \
remove_file.c
LIBBB_OBJS=$(patsubst %.c,$(LIBBB)/%.o, $(LIBBB_CSRC))
LIBBB_CFLAGS = -I$(LIBBB)
ifneq ($(strip $(BB_SRC_DIR)),)
LIBBB_CFLAGS += -I$(BB_SRC_DIR)/$(LIBBB)
endif
LIBBB_MSRC=libbb/messages.c
LIBBB_MESSAGES= full_version name_too_long omitting_directory not_a_directory \
memory_exhausted invalid_date invalid_option io_error dash_dash_help \
write_error too_few_args name_longer_than_foo
LIBBB_MOBJ=$(patsubst %,$(LIBBB)/%.o, $(LIBBB_MESSAGES))
# Put user-supplied flags at the end, where they
# have a chance of winning.
@ -352,10 +357,13 @@ $(LIBBB_OBJS): %.o: %.c Config.h busybox.h applets.h Makefile libbb/libbb.h
- mkdir -p $(LIBBB)
$(CC) $(CFLAGS) $(LIBBB_CFLAGS) -c $< -o $*.o
$(LIBBB_MOBJ): $(LIBBB_MSRC)
$(CC) $(CFLAGS) $(LIBBB_CFLAGS) -DL_$(patsubst libbb/%,%,$*) -c $< -o $*.o
libpwd.a: $(PWD_OBJS)
$(AR) $(ARFLAGS) $@ $^
libbb.a: $(LIBBB_OBJS)
libbb.a: $(LIBBB_MOBJ) $(LIBBB_OBJS)
$(AR) $(ARFLAGS) $@ $^
usage.o: usage.h

View File

@ -35,10 +35,6 @@
#undef PROTOTYPES
#include "applets.h"
#define bb_need_full_version
#define BB_DECLARE_EXTERN
#include "messages.c"
struct BB_applet *applet_using;
/* The -1 arises because of the {0,NULL,0,-1} entry above. */

View File

@ -35,10 +35,6 @@
#undef PROTOTYPES
#include "applets.h"
#define bb_need_full_version
#define BB_DECLARE_EXTERN
#include "messages.c"
struct BB_applet *applet_using;
/* The -1 arises because of the {0,NULL,0,-1} entry above. */

View File

@ -5,11 +5,6 @@
#include <errno.h>
#include <stdlib.h>
#include "busybox.h"
#define bb_need_full_version
#define BB_DECLARE_EXTERN
#include "messages.c"
#ifdef BB_LOCALE_SUPPORT
#include <locale.h>
#endif

View File

@ -65,10 +65,6 @@ static char *license_msg[] = {
#include <unistd.h>
#include <getopt.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_memory_exhausted
#define bb_need_name_too_long
#include "messages.c"
extern int gunzip_main(int argc, char **argv)
{

View File

@ -44,9 +44,6 @@
#include <unistd.h>
#include <errno.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_memory_exhausted
#include "messages.c"
#define memzero(s, n) memset ((void *)(s), 0, (n))

View File

@ -65,10 +65,6 @@ static char *license_msg[] = {
#include <signal.h>
#include <stdlib.h>
#include "libbb.h"
#define BB_DECLARE_EXTERN
#define bb_need_memory_exhausted
#define bb_need_name_too_long
#include "../messages.c"
FILE *in_file, *out_file;

View File

@ -65,10 +65,6 @@ static char *license_msg[] = {
#include <signal.h>
#include <stdlib.h>
#include "libbb.h"
#define BB_DECLARE_EXTERN
#define bb_need_memory_exhausted
#define bb_need_name_too_long
#include "../messages.c"
FILE *in_file, *out_file;

View File

@ -51,10 +51,6 @@
#include <stdlib.h>
#include <unistd.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_io_error
#define bb_need_name_longer_than_foo
#include "messages.c"
/* Tar file constants */
#ifndef MAJOR

View File

@ -5,11 +5,6 @@
#include <errno.h>
#include <stdlib.h>
#include "busybox.h"
#define bb_need_full_version
#define BB_DECLARE_EXTERN
#include "messages.c"
#ifdef BB_LOCALE_SUPPORT
#include <locale.h>
#endif

View File

@ -27,10 +27,6 @@
#include <string.h>
#include <unistd.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_invalid_option
#define bb_need_too_few_args
#include "messages.c"
/* Don't use lchown for libc5 or glibc older then 2.1.x */
#if (__GLIBC__ < 2) && (__GLIBC_MINOR__ < 1)

View File

@ -28,9 +28,6 @@
#include <unistd.h>
#include <getopt.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_too_few_args
#include "messages.c"
struct stat *theMode;

View File

@ -27,10 +27,6 @@
#include <string.h>
#include <unistd.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_too_few_args
#include "messages.c"
/* Don't use lchown for libc5 or glibc older then 2.1.x */
#if (__GLIBC__ < 2) && (__GLIBC_MINOR__ < 1)

View File

@ -27,10 +27,6 @@
#include <string.h>
#include <unistd.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_invalid_option
#define bb_need_too_few_args
#include "messages.c"
/* Don't use lchown for libc5 or glibc older then 2.1.x */
#if (__GLIBC__ < 2) && (__GLIBC_MINOR__ < 1)

View File

@ -28,9 +28,6 @@
#include <unistd.h>
#include <getopt.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_too_few_args
#include "messages.c"
struct stat *theMode;

View File

@ -27,10 +27,6 @@
#include <string.h>
#include <unistd.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_too_few_args
#include "messages.c"
/* Don't use lchown for libc5 or glibc older then 2.1.x */
#if (__GLIBC__ < 2) && (__GLIBC_MINOR__ < 1)

View File

@ -29,10 +29,6 @@
#include <string.h>
#include <getopt.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_invalid_date
#define bb_need_memory_exhausted
#include "messages.c"
/* This 'date' command supports only 2 time setting formats,

View File

@ -31,9 +31,6 @@
#include <string.h>
#include <errno.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_name_too_long
#include "messages.c"
#ifdef BB_FEATURE_HUMAN_READABLE
@ -192,7 +189,7 @@ int du_main(int argc, char **argv)
return status;
}
/* $Id: du.c,v 1.44 2001/04/09 22:48:11 andersen Exp $ */
/* $Id: du.c,v 1.45 2001/04/25 05:39:18 andersen Exp $ */
/*
Local Variables:
c-file-style: "linux"

View File

@ -28,9 +28,6 @@
#include <errno.h>
#include <unistd.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_not_a_directory
#include "messages.c"
static const int LN_SYMLINK = 1;

View File

@ -26,9 +26,6 @@
#include <string.h>
#include <stdlib.h>
#include "busybox.h"
#define bb_need_name_too_long
#define BB_DECLARE_EXTERN
#include "messages.c"
static int parentFlag = FALSE;

View File

@ -38,9 +38,6 @@
#include <stdlib.h>
#include <string.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_help
#include "messages.c"
/* test(1) accepts the following grammar:
oexpr ::= aexpr | aexpr "-o" oexpr ;

View File

@ -30,9 +30,6 @@
#include <unistd.h>
#include <sys/types.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_write_error
#include "messages.c"
static const int ASCII = 0377;

4
date.c
View File

@ -29,10 +29,6 @@
#include <string.h>
#include <getopt.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_invalid_date
#define bb_need_memory_exhausted
#include "messages.c"
/* This 'date' command supports only 2 time setting formats,

5
du.c
View File

@ -31,9 +31,6 @@
#include <string.h>
#include <errno.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_name_too_long
#include "messages.c"
#ifdef BB_FEATURE_HUMAN_READABLE
@ -192,7 +189,7 @@ int du_main(int argc, char **argv)
return status;
}
/* $Id: du.c,v 1.44 2001/04/09 22:48:11 andersen Exp $ */
/* $Id: du.c,v 1.45 2001/04/25 05:39:18 andersen Exp $ */
/*
Local Variables:
c-file-style: "linux"

View File

@ -20,9 +20,6 @@
#include <stdlib.h>
#include <unistd.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_io_error
#include "messages.c"
extern int dutmp_main(int argc, char **argv)
{

View File

@ -65,10 +65,6 @@ static char *license_msg[] = {
#include <unistd.h>
#include <getopt.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_memory_exhausted
#define bb_need_name_too_long
#include "messages.c"
extern int gunzip_main(int argc, char **argv)
{

3
gzip.c
View File

@ -44,9 +44,6 @@
#include <unistd.h>
#include <errno.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_memory_exhausted
#include "messages.c"
#define memzero(s, n) memset ((void *)(s), 0, (n))

View File

@ -264,5 +264,17 @@ enum {
};
extern const char *applet_name;
extern const char *full_version;
extern const char *name_too_long;
extern const char *omitting_directory;
extern const char *not_a_directory;
extern const char *memory_exhausted;
extern const char *invalid_date;
extern const char *invalid_option;
extern const char *io_error;
extern const char *dash_dash_help;
extern const char *write_error;
extern const char *too_few_args;
extern const char *name_longer_than_foo;
#endif /* __LIBBB_H__ */

3
init.c
View File

@ -43,9 +43,6 @@
#include <sys/types.h>
#include <sys/wait.h>
#include "busybox.h"
#define bb_need_full_version
#define BB_DECLARE_EXTERN
#include "messages.c"
#ifdef BB_SYSLOGD
# include <sys/syslog.h>
#endif

View File

@ -43,9 +43,6 @@
#include <sys/types.h>
#include <sys/wait.h>
#include "busybox.h"
#define bb_need_full_version
#define BB_DECLARE_EXTERN
#include "messages.c"
#ifdef BB_SYSLOGD
# include <sys/syslog.h>
#endif

View File

@ -264,5 +264,17 @@ enum {
};
extern const char *applet_name;
extern const char *full_version;
extern const char *name_too_long;
extern const char *omitting_directory;
extern const char *not_a_directory;
extern const char *memory_exhausted;
extern const char *invalid_date;
extern const char *invalid_option;
extern const char *io_error;
extern const char *dash_dash_help;
extern const char *write_error;
extern const char *too_few_args;
extern const char *name_longer_than_foo;
#endif /* __LIBBB_H__ */

61
libbb/messages.c Normal file
View File

@ -0,0 +1,61 @@
/* vi: set sw=4 ts=4: */
/*
* Copyright (C) 2001 by Lineo, inc.
* Written by Erik Andersen <andersen@lineo.com>, <andersee@debian.org>
*
* 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
*
*/
#include "../busybox.h"
#ifdef L_full_version
const char *full_version = BB_BANNER " multi-call binary";
#endif
#ifdef L_name_too_long
const char *name_too_long = "file name too long";
#endif
#ifdef L_omitting_directory
const char *omitting_directory = "%s: omitting directory";
#endif
#ifdef L_not_a_directory
const char *not_a_directory = "%s: not a directory";
#endif
#ifdef L_memory_exhausted
const char *memory_exhausted = "memory exhausted";
#endif
#ifdef L_invalid_date
const char *invalid_date = "invalid date `%s'";
#endif
#ifdef L_invalid_option
const char *invalid_option = "invalid option -- %c";
#endif
#ifdef L_io_error
const char *io_error = "%s: input/output error -- %s";
#endif
#ifdef L_dash_dash_help
const char *dash_dash_help = "--help";
#endif
#ifdef L_write_error
const char *write_error = "Write Error";
#endif
#ifdef L_too_few_args
const char *too_few_args = "too few arguments";
#endif
#ifdef L_name_longer_than_foo
const char *name_longer_than_foo = "Names longer than %d chars not supported.";
#endif

View File

@ -32,12 +32,6 @@
#include <stdlib.h> /* free() */
#include "libbb.h"
/* same conditions as recursive_action */
#define bb_need_name_too_long
#define BB_DECLARE_EXTERN
#include "../messages.c"
#undef DEBUG_RECURS_ACTION

View File

@ -65,10 +65,6 @@ static char *license_msg[] = {
#include <signal.h>
#include <stdlib.h>
#include "libbb.h"
#define BB_DECLARE_EXTERN
#define bb_need_memory_exhausted
#define bb_need_name_too_long
#include "../messages.c"
FILE *in_file, *out_file;

View File

@ -31,11 +31,6 @@
#include <unistd.h>
#include "libbb.h"
/* same conditions as recursive_action */
#define bb_need_memory_exhausted
#define BB_DECLARE_EXTERN
#include "../messages.c"
#ifndef DMALLOC
extern void *xmalloc(size_t size)

3
ln.c
View File

@ -28,9 +28,6 @@
#include <errno.h>
#include <unistd.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_not_a_directory
#include "messages.c"
static const int LN_SYMLINK = 1;

View File

@ -1,89 +0,0 @@
/* vi: set sw=4 ts=4: */
/*
* Copyright (C) 2000 by BitterSweet Enterprises, LLC.
* Written by Karl M. Hegbloom <karlheg@debian.org>
*
* 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
*
*/
/*
* Let's put all of these messages in one place, and link this in as
* a separate object module, so that there are not going to be
* multiple non-unique but very similar strings in the binary.
* Perhaps this will make it simpler to internationalize also, and
* may make the binary slightly smaller.
*/
// To use this header file, include something like this:
//
//#define BB_DECLARE_EXTERN
//#define bb_need_memory_exhausted
//#include "messages.c"
//
//Then just use the string memory_exhausted when it is needed.
//
#include "busybox.h"
#ifndef _BB_MESSAGES_C
#define _BB_MESSAGES_C
#ifdef BB_DECLARE_EXTERN
# define BB_DEF_MESSAGE(symbol, string_const) extern const char *symbol;
#else
# define BB_DEF_MESSAGE(symbol, string_const) const char *symbol = string_const;
#endif
#if defined bb_need_full_version || ! defined BB_DECLARE_EXTERN
BB_DEF_MESSAGE(full_version, BB_BANNER " multi-call binary")
#endif
#if defined bb_need_name_too_long || ! defined BB_DECLARE_EXTERN
BB_DEF_MESSAGE(name_too_long, "file name too long")
#endif
#if defined bb_need_omitting_directory || ! defined BB_DECLARE_EXTERN
BB_DEF_MESSAGE(omitting_directory, "%s: omitting directory")
#endif
#if defined bb_need_not_a_directory || ! defined BB_DECLARE_EXTERN
BB_DEF_MESSAGE(not_a_directory, "%s: not a directory")
#endif
#if defined bb_need_memory_exhausted || ! defined BB_DECLARE_EXTERN
BB_DEF_MESSAGE(memory_exhausted, "memory exhausted")
#endif
#if defined bb_need_invalid_date || ! defined BB_DECLARE_EXTERN
BB_DEF_MESSAGE(invalid_date, "invalid date `%s'")
#endif
#if defined bb_need_invalid_option || ! defined BB_DECLARE_EXTERN
BB_DEF_MESSAGE(invalid_option, "invalid option -- %c")
#endif
#if defined bb_need_io_error || ! defined BB_DECLARE_EXTERN
BB_DEF_MESSAGE(io_error, "%s: input/output error -- %s")
#endif
#if defined bb_need_help || ! defined BB_DECLARE_EXTERN
BB_DEF_MESSAGE(dash_dash_help, "--help")
#endif
#if defined bb_need_write_error || ! defined BB_DECLARE_EXTERN
BB_DEF_MESSAGE(write_error, "Write Error")
#endif
#if defined bb_need_too_few_args || ! defined BB_DECLARE_EXTERN
BB_DEF_MESSAGE(too_few_args, "too few arguments")
#endif
#if defined bb_need_name_longer_than_foo || ! defined BB_DECLARE_EXTERN
BB_DEF_MESSAGE(name_longer_than_foo, "Names longer than %d chars not supported.")
#endif
#endif /* _BB_MESSAGES_C */

View File

@ -20,9 +20,6 @@
#include <stdlib.h>
#include <unistd.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_io_error
#include "messages.c"
extern int dutmp_main(int argc, char **argv)
{

View File

@ -26,9 +26,6 @@
#include <string.h>
#include <stdlib.h>
#include "busybox.h"
#define bb_need_name_too_long
#define BB_DECLARE_EXTERN
#include "messages.c"
static int parentFlag = FALSE;

3
more.c
View File

@ -31,9 +31,6 @@
#include <stdlib.h>
#include <sys/ioctl.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_help
#include "messages.c"
/* ED: sparc termios is broken: revert back to old termio handling. */
#ifdef BB_FEATURE_USE_TERMIOS

View File

@ -38,9 +38,6 @@
#include <string.h>
#include <sys/ioctl.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_help
#include "messages.c"
static const int TERMINAL_WIDTH = 79; /* not 80 in case terminal has linefold bug */

3
ps.c
View File

@ -38,9 +38,6 @@
#include <string.h>
#include <sys/ioctl.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_help
#include "messages.c"
static const int TERMINAL_WIDTH = 79; /* not 80 in case terminal has linefold bug */

4
tar.c
View File

@ -51,10 +51,6 @@
#include <stdlib.h>
#include <unistd.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_io_error
#define bb_need_name_longer_than_foo
#include "messages.c"
/* Tar file constants */
#ifndef MAJOR

3
test.c
View File

@ -38,9 +38,6 @@
#include <stdlib.h>
#include <string.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_help
#include "messages.c"
/* test(1) accepts the following grammar:
oexpr ::= aexpr | aexpr "-o" oexpr ;

3
tr.c
View File

@ -30,9 +30,6 @@
#include <unistd.h>
#include <sys/types.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_write_error
#include "messages.c"
static const int ASCII = 0377;

View File

@ -31,9 +31,6 @@
#include <stdlib.h>
#include <sys/ioctl.h>
#include "busybox.h"
#define BB_DECLARE_EXTERN
#define bb_need_help
#include "messages.c"
/* ED: sparc termios is broken: revert back to old termio handling. */
#ifdef BB_FEATURE_USE_TERMIOS