/* vi: set sw=4 ts=4: */
/*
 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.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"
#include "libbb.h"

#ifdef L_full_version
#ifndef BB_EXTRA_VERSION
#define LIBBB_BANNER "BusyBox's library v" BB_VER " (" BB_BT ")"
#else
#define LIBBB_BANNER "BusyBox's library v" BB_VER " (" BB_EXTRA_VERSION ")"
#endif
	const char * const libbb_msg_full_version = LIBBB_BANNER;
#endif
#ifdef L_memory_exhausted
	const char * const bb_msg_memory_exhausted = "memory exhausted";
#endif
#ifdef L_invalid_date
	const char * const bb_msg_invalid_date = "invalid date `%s'";
#endif
#ifdef L_io_error
	const char * const bb_msg_io_error = "%s: input/output error -- %m";
#endif
#ifdef L_write_error
	const char * const bb_msg_write_error = "Write Error";
#endif
#ifdef L_read_error
	const char * const bb_msg_read_error = "Read Error";
#endif
#ifdef L_name_longer_than_foo
	const char * const bb_msg_name_longer_than_foo = "Names longer than %d chars not supported.";
#endif
#ifdef L_unknown
	const char * const bb_msg_unknown = "(unknown)";
#endif
#ifdef L_can_not_create_raw_socket
	const char * const bb_msg_can_not_create_raw_socket = "can`t create raw socket";
#endif
#ifdef L_perm_denied_are_you_root
	const char * const bb_msg_perm_denied_are_you_root = "permission denied. (are you root?)";
#endif
#ifdef L_msg_standard_input
	const char * const bb_msg_standard_input = "standard input";
#endif
#ifdef L_msg_standard_output
	const char * const bb_msg_standard_output = "standard output";
#endif

#ifdef L_passwd_file
#define PASSWD_FILE        "/etc/passwd"
const char * const bb_path_passwd_file = PASSWD_FILE;
#endif

#ifdef L_shadow_file
#define SHADOW_FILE        "/etc/shadow"
const char * const bb_path_shadow_file = SHADOW_FILE;
#endif

#ifdef L_group_file
#define GROUP_FILE         "/etc/group"
const char * const bb_path_group_file = GROUP_FILE;
#endif

#ifdef L_gshadow_file
#define GSHADOW_FILE       "/etc/gshadow"
const char * const bb_path_gshadow_file = GSHADOW_FILE;
#endif

#ifdef L_nologin_file
#define NOLOGIN_FILE       "/etc/nologin"
const char * const bb_path_nologin_file = NOLOGIN_FILE;
#endif

#ifdef L_securetty_file
#define SECURETTY_FILE     "/etc/securetty"
const char * const bb_path_securetty_file = SECURETTY_FILE;
#endif

#ifdef L_motd_file
#define MOTD_FILE          "/etc/motd"
const char * const bb_path_motd_file = MOTD_FILE;
#endif

#ifdef L_shell_file
const char * const bb_default_login_shell = LIBBB_DEFAULT_LOGIN_SHELL;
#endif

#ifdef L_bb_dev_null
const char * const bb_dev_null = "/dev/null";
#endif

#ifdef L_bb_common_bufsiz1
char bb_common_bufsiz1[BUFSIZ+1];
#endif
