This is vodz' latest patch. Sorry it took so long...

1) ping cleanup (compile fix from this patch already applied).
    2) traceroute call not spare ntohl() now (and reduce size);
    3) Fix for functions not declared static in insmod, ash, vi and mount.
    4) a more simple API cmdedit :))
    5) adds "stopped jobs" warning to ash on Ctrl-D and fixes "ignoreeof" option
    6) reduce exporting library function index->strchr (traceroute), bzero->memset (syslogd)
This commit is contained in:
Eric Andersen 2001-07-17 01:12:36 +00:00
parent 51ded05b3b
commit 044228d5ec
21 changed files with 216 additions and 258 deletions

View File

@ -67,7 +67,7 @@ static char *license_msg[] = {
#include <string.h>
#include "libbb.h"
FILE *in_file, *out_file;
static FILE *in_file, *out_file;
/* these are freed by gz_close */
static unsigned char *window;
@ -91,9 +91,9 @@ static const int N_MAX = 288; /* maximum number of codes in any set */
static long bytes_out; /* number of output bytes */
static unsigned long outcnt; /* bytes in output buffer */
unsigned hufts; /* track memory usage */
unsigned long bb; /* bit buffer */
unsigned bk; /* bits in bit buffer */
static unsigned hufts; /* track memory usage */
static unsigned long bb; /* bit buffer */
static unsigned bk; /* bits in bit buffer */
typedef struct huft_s {
unsigned char e; /* number of extra bits or operation */
@ -104,7 +104,7 @@ typedef struct huft_s {
} v;
} huft_t;
unsigned short mask_bits[] = {
static const unsigned short mask_bits[] = {
0x0000,
0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
@ -154,7 +154,7 @@ static void make_crc_table()
* Write the output window window[0..outcnt-1] and update crc and bytes_out.
* (Used for the decompressed data only.)
*/
void flush_window()
static void flush_window(void)
{
int n;
@ -1021,10 +1021,6 @@ extern void gz_close(int gunzip_pid)
if (waitpid(gunzip_pid, NULL, 0) == -1) {
printf("Couldnt wait ?");
}
if (window) {
free(window);
}
if (crc_table) {
free(crc_table);
}
}

View File

@ -67,7 +67,7 @@ static char *license_msg[] = {
#include <string.h>
#include "libbb.h"
FILE *in_file, *out_file;
static FILE *in_file, *out_file;
/* these are freed by gz_close */
static unsigned char *window;
@ -91,9 +91,9 @@ static const int N_MAX = 288; /* maximum number of codes in any set */
static long bytes_out; /* number of output bytes */
static unsigned long outcnt; /* bytes in output buffer */
unsigned hufts; /* track memory usage */
unsigned long bb; /* bit buffer */
unsigned bk; /* bits in bit buffer */
static unsigned hufts; /* track memory usage */
static unsigned long bb; /* bit buffer */
static unsigned bk; /* bits in bit buffer */
typedef struct huft_s {
unsigned char e; /* number of extra bits or operation */
@ -104,7 +104,7 @@ typedef struct huft_s {
} v;
} huft_t;
unsigned short mask_bits[] = {
static const unsigned short mask_bits[] = {
0x0000,
0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
@ -154,7 +154,7 @@ static void make_crc_table()
* Write the output window window[0..outcnt-1] and update crc and bytes_out.
* (Used for the decompressed data only.)
*/
void flush_window()
static void flush_window(void)
{
int n;
@ -1021,10 +1021,6 @@ extern void gz_close(int gunzip_pid)
if (waitpid(gunzip_pid, NULL, 0) == -1) {
printf("Couldnt wait ?");
}
if (window) {
free(window);
}
if (crc_table) {
free(crc_table);
}
}

7
ash.c
View File

@ -6204,8 +6204,7 @@ retry:
if (!iflag)
nr = safe_read(parsefile->fd, buf, BUFSIZ - 1);
else {
cmdedit_read_input((char*)cmdedit_prompt, buf);
nr = strlen(buf);
nr = cmdedit_read_input((char*)cmdedit_prompt, buf);
}
}
#else
@ -9445,7 +9444,7 @@ static char *wordtext; /* text of last word returned by readtok
static struct nodelist *backquotelist;
static union node *redirnode;
struct heredoc *heredoc;
static struct heredoc *heredoc;
static int quoteflag; /* set if (part of) last token was quoted */
static int startlinno; /* line # where last token started */
@ -12917,7 +12916,7 @@ findvar(struct var **vpp, const char *name)
/*
* Copyright (c) 1999 Herbert Xu <herbert@debian.org>
* This file contains code for the times builtin.
* $Id: ash.c,v 1.10 2001/07/12 20:26:31 andersen Exp $
* $Id: ash.c,v 1.11 2001/07/17 01:12:35 andersen Exp $
*/
static int timescmd (int argc, char **argv)
{

View File

@ -1153,7 +1153,8 @@ enum {
*
*/
extern void cmdedit_read_input(char *prompt, char command[BUFSIZ])
int cmdedit_read_input(char *prompt, char command[BUFSIZ])
{
int break_out = 0;
@ -1231,10 +1232,15 @@ extern void cmdedit_read_input(char *prompt, char command[BUFSIZ])
* if the len=0 and no chars to delete */
if (len == 0) {
prepare_to_die:
#if !defined(BB_FEATURE_ASH)
printf("exit");
goto_new_line();
/* cmdedit_reset_term() called in atexit */
exit(EXIT_SUCCESS);
#else
break_out = -1; /* for control stoped jobs */
break;
#endif
} else {
input_delete();
}
@ -1455,8 +1461,10 @@ prepare_to_die:
num_ok_lines++;
#endif
}
if(break_out>0) {
command[len++] = '\n'; /* set '\n' */
command[len] = 0;
}
#if defined(BB_FEATURE_CLEAN_UP) && defined(BB_FEATURE_COMMAND_TAB_COMPLETION)
input_tab(0); /* strong free */
#endif
@ -1464,6 +1472,7 @@ prepare_to_die:
free(cmdedit_prompt);
#endif
cmdedit_reset_term();
return len;
}

View File

@ -1,6 +1,6 @@
#ifndef CMDEDIT_H
#define CMDEDIT_H
void cmdedit_read_input(char* promptStr, char* command); /* read a line of input */
int cmdedit_read_input(char* promptStr, char* command);
#endif /* CMDEDIT_H */

View File

@ -18,8 +18,8 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
char *vi_Version =
"$Id: vi.c,v 1.11 2001/07/02 18:06:14 andersen Exp $";
static const char vi_Version[] =
"$Id: vi.c,v 1.12 2001/07/17 01:12:36 andersen Exp $";
/*
* To compile for standalone use:

147
insmod.c
View File

@ -130,7 +130,7 @@
#ifndef MODUTILS_MODULE_H
static const int MODUTILS_MODULE_H = 1;
#ident "$Id: insmod.c,v 1.67 2001/06/28 21:36:06 andersen Exp $"
#ident "$Id: insmod.c,v 1.68 2001/07/17 01:12:36 andersen Exp $"
/* This file contains the structures used by the 2.0 and 2.1 kernels.
We do not use the kernel headers directly because we do not wish
@ -347,7 +347,7 @@ int delete_module(const char *);
#ifndef MODUTILS_OBJ_H
static const int MODUTILS_OBJ_H = 1;
#ident "$Id: insmod.c,v 1.67 2001/06/28 21:36:06 andersen Exp $"
#ident "$Id: insmod.c,v 1.68 2001/07/17 01:12:36 andersen Exp $"
/* The relocatable object is manipulated using elfin types. */
@ -537,78 +537,73 @@ struct obj_symbol_patch
/* Generic object manipulation routines. */
unsigned long obj_elf_hash(const char *);
static unsigned long obj_elf_hash(const char *);
unsigned long obj_elf_hash_n(const char *, unsigned long len);
static unsigned long obj_elf_hash_n(const char *, unsigned long len);
struct obj_symbol *obj_add_symbol (struct obj_file *f, const char *name,
unsigned long symidx, int info, int secidx,
ElfW(Addr) value, unsigned long size);
struct obj_symbol *obj_find_symbol (struct obj_file *f,
static struct obj_symbol *obj_find_symbol (struct obj_file *f,
const char *name);
ElfW(Addr) obj_symbol_final_value(struct obj_file *f,
static ElfW(Addr) obj_symbol_final_value(struct obj_file *f,
struct obj_symbol *sym);
void obj_set_symbol_compare(struct obj_file *f,
static void obj_set_symbol_compare(struct obj_file *f,
int (*cmp)(const char *, const char *),
unsigned long (*hash)(const char *));
struct obj_section *obj_find_section (struct obj_file *f,
static struct obj_section *obj_find_section (struct obj_file *f,
const char *name);
void obj_insert_section_load_order (struct obj_file *f,
static void obj_insert_section_load_order (struct obj_file *f,
struct obj_section *sec);
struct obj_section *obj_create_alloced_section (struct obj_file *f,
static struct obj_section *obj_create_alloced_section (struct obj_file *f,
const char *name,
unsigned long align,
unsigned long size);
struct obj_section *obj_create_alloced_section_first (struct obj_file *f,
static struct obj_section *obj_create_alloced_section_first (struct obj_file *f,
const char *name,
unsigned long align,
unsigned long size);
void *obj_extend_section (struct obj_section *sec, unsigned long more);
static void *obj_extend_section (struct obj_section *sec, unsigned long more);
int obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
static int obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
const char *string);
int obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
static int obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
struct obj_symbol *sym);
int obj_check_undefineds(struct obj_file *f);
static int obj_check_undefineds(struct obj_file *f);
void obj_allocate_commons(struct obj_file *f);
static void obj_allocate_commons(struct obj_file *f);
unsigned long obj_load_size (struct obj_file *f);
static unsigned long obj_load_size (struct obj_file *f);
int obj_relocate (struct obj_file *f, ElfW(Addr) base);
static int obj_relocate (struct obj_file *f, ElfW(Addr) base);
struct obj_file *obj_load(FILE *f, int loadprogbits);
static struct obj_file *obj_load(FILE *f, int loadprogbits);
int obj_create_image (struct obj_file *f, char *image);
static int obj_create_image (struct obj_file *f, char *image);
/* Architecture specific manipulation routines. */
struct obj_file *arch_new_file (void);
static struct obj_file *arch_new_file (void);
struct obj_section *arch_new_section (void);
static struct obj_section *arch_new_section (void);
struct obj_symbol *arch_new_symbol (void);
static struct obj_symbol *arch_new_symbol (void);
enum obj_reloc arch_apply_relocation (struct obj_file *f,
static enum obj_reloc arch_apply_relocation (struct obj_file *f,
struct obj_section *targsec,
struct obj_section *symsec,
struct obj_symbol *sym,
ElfW(RelM) *rel, ElfW(Addr) value);
int arch_create_got (struct obj_file *f);
static int arch_create_got (struct obj_file *f);
struct new_module;
int arch_init_module (struct obj_file *f, struct new_module *);
static int arch_init_module (struct obj_file *f, struct new_module *);
#endif /* obj.h */
//----------------------------------------------------------------------------
@ -624,10 +619,10 @@ static const int STRVERSIONLEN = 32;
/*======================================================================*/
int flag_force_load = 0;
int flag_autoclean = 0;
int flag_verbose = 0;
int flag_export = 1;
static int flag_force_load = 0;
static int flag_autoclean = 0;
static int flag_verbose = 0;
static int flag_export = 1;
/*======================================================================*/
@ -700,12 +695,12 @@ struct external_module {
struct new_module_symbol *syms;
};
struct new_module_symbol *ksyms;
size_t nksyms;
static struct new_module_symbol *ksyms;
static size_t nksyms;
struct external_module *ext_modules;
int n_ext_modules;
int n_ext_modules_used;
static struct external_module *ext_modules;
static int n_ext_modules;
static int n_ext_modules_used;
extern int delete_module(const char *);
static char m_filename[FILENAME_MAX + 1];
@ -740,7 +735,7 @@ static int check_module_name_match(const char *filename, struct stat *statbuf,
/*======================================================================*/
struct obj_file *arch_new_file(void)
static struct obj_file *arch_new_file(void)
{
struct arch_file *f;
f = xmalloc(sizeof(*f));
@ -758,12 +753,12 @@ struct obj_file *arch_new_file(void)
return &f->root;
}
struct obj_section *arch_new_section(void)
static struct obj_section *arch_new_section(void)
{
return xmalloc(sizeof(struct obj_section));
}
struct obj_symbol *arch_new_symbol(void)
static struct obj_symbol *arch_new_symbol(void)
{
struct arch_symbol *sym;
sym = xmalloc(sizeof(*sym));
@ -778,7 +773,7 @@ struct obj_symbol *arch_new_symbol(void)
return &sym->root;
}
enum obj_reloc
static enum obj_reloc
arch_apply_relocation(struct obj_file *f,
struct obj_section *targsec,
struct obj_section *symsec,
@ -1140,7 +1135,7 @@ arch_apply_relocation(struct obj_file *f,
return ret;
}
int arch_create_got(struct obj_file *f)
static int arch_create_got(struct obj_file *f)
{
#if defined(BB_USE_GOT_ENTRIES) || defined(BB_USE_PLT_ENTRIES)
struct arch_file *ifile = (struct arch_file *) f;
@ -1271,7 +1266,7 @@ int arch_create_got(struct obj_file *f)
return 1;
}
int arch_init_module(struct obj_file *f, struct new_module *mod)
static int arch_init_module(struct obj_file *f, struct new_module *mod)
{
return 1;
}
@ -1280,7 +1275,7 @@ int arch_init_module(struct obj_file *f, struct new_module *mod)
/*======================================================================*/
/* Standard ELF hash function. */
inline unsigned long obj_elf_hash_n(const char *name, unsigned long n)
static inline unsigned long obj_elf_hash_n(const char *name, unsigned long n)
{
unsigned long h = 0;
unsigned long g;
@ -1298,7 +1293,7 @@ inline unsigned long obj_elf_hash_n(const char *name, unsigned long n)
return h;
}
unsigned long obj_elf_hash(const char *name)
static unsigned long obj_elf_hash(const char *name)
{
return obj_elf_hash_n(name, strlen(name));
}
@ -1309,25 +1304,15 @@ unsigned long obj_elf_hash(const char *name)
static int get_kernel_version(char str[STRVERSIONLEN])
{
struct utsname uts_info;
char *p, *q;
int a, b, c;
int kv;
if (uname(&uts_info) < 0)
return -1;
strncpy(str, uts_info.release, STRVERSIONLEN);
p = uts_info.release;
a = strtoul(p, &p, 10);
if (*p != '.')
kv = get_kernel_revision();
if(kv==0)
return -1;
b = strtoul(p + 1, &p, 10);
if (*p != '.')
return -1;
c = strtoul(p + 1, &q, 10);
if (p + 1 == q)
return -1;
return a << 16 | b << 8 | c;
}
/* String comparison for non-co-versioned kernel and module. */
@ -1355,7 +1340,7 @@ static unsigned long ncv_symbol_hash(const char *str)
return obj_elf_hash_n(str, len);
}
void
static void
obj_set_symbol_compare(struct obj_file *f,
int (*cmp) (const char *, const char *),
unsigned long (*hash) (const char *))
@ -1383,8 +1368,8 @@ obj_set_symbol_compare(struct obj_file *f,
#endif /* BB_FEATURE_INSMOD_VERSION_CHECKING */
struct obj_symbol *obj_add_symbol(struct obj_file *f, const char *name,
static struct obj_symbol *
obj_add_symbol(struct obj_file *f, const char *name,
unsigned long symidx, int info,
int secidx, ElfW(Addr) value,
unsigned long size)
@ -1478,7 +1463,8 @@ struct obj_symbol *obj_add_symbol(struct obj_file *f, const char *name,
return sym;
}
struct obj_symbol *obj_find_symbol(struct obj_file *f, const char *name)
static struct obj_symbol *
obj_find_symbol(struct obj_file *f, const char *name)
{
struct obj_symbol *sym;
unsigned long hash = f->symbol_hash(name) % HASH_BUCKETS;
@ -1490,7 +1476,7 @@ struct obj_symbol *obj_find_symbol(struct obj_file *f, const char *name)
return NULL;
}
ElfW(Addr)
static ElfW(Addr)
obj_symbol_final_value(struct obj_file * f, struct obj_symbol * sym)
{
if (sym) {
@ -1504,7 +1490,7 @@ ElfW(Addr)
}
}
struct obj_section *obj_find_section(struct obj_file *f, const char *name)
static struct obj_section *obj_find_section(struct obj_file *f, const char *name)
{
int i, n = f->header.e_shnum;
@ -1537,7 +1523,7 @@ static int obj_load_order_prio(struct obj_section *a)
return ac;
}
void
static void
obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec)
{
struct obj_section **p;
@ -1549,7 +1535,7 @@ obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec)
*p = sec;
}
struct obj_section *obj_create_alloced_section(struct obj_file *f,
static struct obj_section *obj_create_alloced_section(struct obj_file *f,
const char *name,
unsigned long align,
unsigned long size)
@ -1575,7 +1561,7 @@ struct obj_section *obj_create_alloced_section(struct obj_file *f,
return sec;
}
struct obj_section *obj_create_alloced_section_first(struct obj_file *f,
static struct obj_section *obj_create_alloced_section_first(struct obj_file *f,
const char *name,
unsigned long align,
unsigned long size)
@ -1604,7 +1590,7 @@ struct obj_section *obj_create_alloced_section_first(struct obj_file *f,
return sec;
}
void *obj_extend_section(struct obj_section *sec, unsigned long more)
static void *obj_extend_section(struct obj_section *sec, unsigned long more)
{
unsigned long oldsize = sec->header.sh_size;
if (more) {
@ -1614,7 +1600,6 @@ void *obj_extend_section(struct obj_section *sec, unsigned long more)
}
/* Conditionally add the symbols from the given symbol set to the
new module. */
@ -2631,7 +2616,7 @@ new_init_module(const char *m_name, struct obj_file *f,
/*======================================================================*/
int
static int
obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
const char *string)
{
@ -2660,7 +2645,7 @@ obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
return 1;
}
int
static int
obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
struct obj_symbol *sym)
{
@ -2676,7 +2661,7 @@ obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
return 1;
}
int obj_check_undefineds(struct obj_file *f)
static int obj_check_undefineds(struct obj_file *f)
{
unsigned long i;
int ret = 1;
@ -2698,7 +2683,7 @@ int obj_check_undefineds(struct obj_file *f)
return ret;
}
void obj_allocate_commons(struct obj_file *f)
static void obj_allocate_commons(struct obj_file *f)
{
struct common_entry {
struct common_entry *next;
@ -2807,7 +2792,7 @@ void obj_allocate_commons(struct obj_file *f)
}
}
unsigned long obj_load_size(struct obj_file *f)
static unsigned long obj_load_size(struct obj_file *f)
{
unsigned long dot = 0;
struct obj_section *sec;
@ -2828,7 +2813,7 @@ unsigned long obj_load_size(struct obj_file *f)
return dot;
}
int obj_relocate(struct obj_file *f, ElfW(Addr) base)
static int obj_relocate(struct obj_file *f, ElfW(Addr) base)
{
int i, n = f->header.e_shnum;
int ret = 1;
@ -2958,7 +2943,7 @@ int obj_relocate(struct obj_file *f, ElfW(Addr) base)
return ret;
}
int obj_create_image(struct obj_file *f, char *image)
static int obj_create_image(struct obj_file *f, char *image)
{
struct obj_section *sec;
ElfW(Addr) base = f->baseaddr;
@ -2980,7 +2965,7 @@ int obj_create_image(struct obj_file *f, char *image)
/*======================================================================*/
struct obj_file *obj_load(FILE * fp, int loadprogbits)
static struct obj_file *obj_load(FILE * fp, int loadprogbits)
{
struct obj_file *f;
ElfW(Shdr) * section_headers;
@ -3186,7 +3171,7 @@ struct obj_file *obj_load(FILE * fp, int loadprogbits)
* kernel for the module
*/
int obj_load_progbits(FILE * fp, struct obj_file* f)
static int obj_load_progbits(FILE * fp, struct obj_file* f)
{
char* imagebase = (char*) f->imagebase;
ElfW(Addr) base = f->baseaddr;

View File

@ -67,7 +67,7 @@ static char *license_msg[] = {
#include <string.h>
#include "libbb.h"
FILE *in_file, *out_file;
static FILE *in_file, *out_file;
/* these are freed by gz_close */
static unsigned char *window;
@ -91,9 +91,9 @@ static const int N_MAX = 288; /* maximum number of codes in any set */
static long bytes_out; /* number of output bytes */
static unsigned long outcnt; /* bytes in output buffer */
unsigned hufts; /* track memory usage */
unsigned long bb; /* bit buffer */
unsigned bk; /* bits in bit buffer */
static unsigned hufts; /* track memory usage */
static unsigned long bb; /* bit buffer */
static unsigned bk; /* bits in bit buffer */
typedef struct huft_s {
unsigned char e; /* number of extra bits or operation */
@ -104,7 +104,7 @@ typedef struct huft_s {
} v;
} huft_t;
unsigned short mask_bits[] = {
static const unsigned short mask_bits[] = {
0x0000,
0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
@ -154,7 +154,7 @@ static void make_crc_table()
* Write the output window window[0..outcnt-1] and update crc and bytes_out.
* (Used for the decompressed data only.)
*/
void flush_window()
static void flush_window(void)
{
int n;
@ -1021,10 +1021,6 @@ extern void gz_close(int gunzip_pid)
if (waitpid(gunzip_pid, NULL, 0) == -1) {
printf("Couldnt wait ?");
}
if (window) {
free(window);
}
if (crc_table) {
free(crc_table);
}
}

View File

@ -130,7 +130,7 @@
#ifndef MODUTILS_MODULE_H
static const int MODUTILS_MODULE_H = 1;
#ident "$Id: insmod.c,v 1.67 2001/06/28 21:36:06 andersen Exp $"
#ident "$Id: insmod.c,v 1.68 2001/07/17 01:12:36 andersen Exp $"
/* This file contains the structures used by the 2.0 and 2.1 kernels.
We do not use the kernel headers directly because we do not wish
@ -347,7 +347,7 @@ int delete_module(const char *);
#ifndef MODUTILS_OBJ_H
static const int MODUTILS_OBJ_H = 1;
#ident "$Id: insmod.c,v 1.67 2001/06/28 21:36:06 andersen Exp $"
#ident "$Id: insmod.c,v 1.68 2001/07/17 01:12:36 andersen Exp $"
/* The relocatable object is manipulated using elfin types. */
@ -537,78 +537,73 @@ struct obj_symbol_patch
/* Generic object manipulation routines. */
unsigned long obj_elf_hash(const char *);
static unsigned long obj_elf_hash(const char *);
unsigned long obj_elf_hash_n(const char *, unsigned long len);
static unsigned long obj_elf_hash_n(const char *, unsigned long len);
struct obj_symbol *obj_add_symbol (struct obj_file *f, const char *name,
unsigned long symidx, int info, int secidx,
ElfW(Addr) value, unsigned long size);
struct obj_symbol *obj_find_symbol (struct obj_file *f,
static struct obj_symbol *obj_find_symbol (struct obj_file *f,
const char *name);
ElfW(Addr) obj_symbol_final_value(struct obj_file *f,
static ElfW(Addr) obj_symbol_final_value(struct obj_file *f,
struct obj_symbol *sym);
void obj_set_symbol_compare(struct obj_file *f,
static void obj_set_symbol_compare(struct obj_file *f,
int (*cmp)(const char *, const char *),
unsigned long (*hash)(const char *));
struct obj_section *obj_find_section (struct obj_file *f,
static struct obj_section *obj_find_section (struct obj_file *f,
const char *name);
void obj_insert_section_load_order (struct obj_file *f,
static void obj_insert_section_load_order (struct obj_file *f,
struct obj_section *sec);
struct obj_section *obj_create_alloced_section (struct obj_file *f,
static struct obj_section *obj_create_alloced_section (struct obj_file *f,
const char *name,
unsigned long align,
unsigned long size);
struct obj_section *obj_create_alloced_section_first (struct obj_file *f,
static struct obj_section *obj_create_alloced_section_first (struct obj_file *f,
const char *name,
unsigned long align,
unsigned long size);
void *obj_extend_section (struct obj_section *sec, unsigned long more);
static void *obj_extend_section (struct obj_section *sec, unsigned long more);
int obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
static int obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
const char *string);
int obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
static int obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
struct obj_symbol *sym);
int obj_check_undefineds(struct obj_file *f);
static int obj_check_undefineds(struct obj_file *f);
void obj_allocate_commons(struct obj_file *f);
static void obj_allocate_commons(struct obj_file *f);
unsigned long obj_load_size (struct obj_file *f);
static unsigned long obj_load_size (struct obj_file *f);
int obj_relocate (struct obj_file *f, ElfW(Addr) base);
static int obj_relocate (struct obj_file *f, ElfW(Addr) base);
struct obj_file *obj_load(FILE *f, int loadprogbits);
static struct obj_file *obj_load(FILE *f, int loadprogbits);
int obj_create_image (struct obj_file *f, char *image);
static int obj_create_image (struct obj_file *f, char *image);
/* Architecture specific manipulation routines. */
struct obj_file *arch_new_file (void);
static struct obj_file *arch_new_file (void);
struct obj_section *arch_new_section (void);
static struct obj_section *arch_new_section (void);
struct obj_symbol *arch_new_symbol (void);
static struct obj_symbol *arch_new_symbol (void);
enum obj_reloc arch_apply_relocation (struct obj_file *f,
static enum obj_reloc arch_apply_relocation (struct obj_file *f,
struct obj_section *targsec,
struct obj_section *symsec,
struct obj_symbol *sym,
ElfW(RelM) *rel, ElfW(Addr) value);
int arch_create_got (struct obj_file *f);
static int arch_create_got (struct obj_file *f);
struct new_module;
int arch_init_module (struct obj_file *f, struct new_module *);
static int arch_init_module (struct obj_file *f, struct new_module *);
#endif /* obj.h */
//----------------------------------------------------------------------------
@ -624,10 +619,10 @@ static const int STRVERSIONLEN = 32;
/*======================================================================*/
int flag_force_load = 0;
int flag_autoclean = 0;
int flag_verbose = 0;
int flag_export = 1;
static int flag_force_load = 0;
static int flag_autoclean = 0;
static int flag_verbose = 0;
static int flag_export = 1;
/*======================================================================*/
@ -700,12 +695,12 @@ struct external_module {
struct new_module_symbol *syms;
};
struct new_module_symbol *ksyms;
size_t nksyms;
static struct new_module_symbol *ksyms;
static size_t nksyms;
struct external_module *ext_modules;
int n_ext_modules;
int n_ext_modules_used;
static struct external_module *ext_modules;
static int n_ext_modules;
static int n_ext_modules_used;
extern int delete_module(const char *);
static char m_filename[FILENAME_MAX + 1];
@ -740,7 +735,7 @@ static int check_module_name_match(const char *filename, struct stat *statbuf,
/*======================================================================*/
struct obj_file *arch_new_file(void)
static struct obj_file *arch_new_file(void)
{
struct arch_file *f;
f = xmalloc(sizeof(*f));
@ -758,12 +753,12 @@ struct obj_file *arch_new_file(void)
return &f->root;
}
struct obj_section *arch_new_section(void)
static struct obj_section *arch_new_section(void)
{
return xmalloc(sizeof(struct obj_section));
}
struct obj_symbol *arch_new_symbol(void)
static struct obj_symbol *arch_new_symbol(void)
{
struct arch_symbol *sym;
sym = xmalloc(sizeof(*sym));
@ -778,7 +773,7 @@ struct obj_symbol *arch_new_symbol(void)
return &sym->root;
}
enum obj_reloc
static enum obj_reloc
arch_apply_relocation(struct obj_file *f,
struct obj_section *targsec,
struct obj_section *symsec,
@ -1140,7 +1135,7 @@ arch_apply_relocation(struct obj_file *f,
return ret;
}
int arch_create_got(struct obj_file *f)
static int arch_create_got(struct obj_file *f)
{
#if defined(BB_USE_GOT_ENTRIES) || defined(BB_USE_PLT_ENTRIES)
struct arch_file *ifile = (struct arch_file *) f;
@ -1271,7 +1266,7 @@ int arch_create_got(struct obj_file *f)
return 1;
}
int arch_init_module(struct obj_file *f, struct new_module *mod)
static int arch_init_module(struct obj_file *f, struct new_module *mod)
{
return 1;
}
@ -1280,7 +1275,7 @@ int arch_init_module(struct obj_file *f, struct new_module *mod)
/*======================================================================*/
/* Standard ELF hash function. */
inline unsigned long obj_elf_hash_n(const char *name, unsigned long n)
static inline unsigned long obj_elf_hash_n(const char *name, unsigned long n)
{
unsigned long h = 0;
unsigned long g;
@ -1298,7 +1293,7 @@ inline unsigned long obj_elf_hash_n(const char *name, unsigned long n)
return h;
}
unsigned long obj_elf_hash(const char *name)
static unsigned long obj_elf_hash(const char *name)
{
return obj_elf_hash_n(name, strlen(name));
}
@ -1309,25 +1304,15 @@ unsigned long obj_elf_hash(const char *name)
static int get_kernel_version(char str[STRVERSIONLEN])
{
struct utsname uts_info;
char *p, *q;
int a, b, c;
int kv;
if (uname(&uts_info) < 0)
return -1;
strncpy(str, uts_info.release, STRVERSIONLEN);
p = uts_info.release;
a = strtoul(p, &p, 10);
if (*p != '.')
kv = get_kernel_revision();
if(kv==0)
return -1;
b = strtoul(p + 1, &p, 10);
if (*p != '.')
return -1;
c = strtoul(p + 1, &q, 10);
if (p + 1 == q)
return -1;
return a << 16 | b << 8 | c;
}
/* String comparison for non-co-versioned kernel and module. */
@ -1355,7 +1340,7 @@ static unsigned long ncv_symbol_hash(const char *str)
return obj_elf_hash_n(str, len);
}
void
static void
obj_set_symbol_compare(struct obj_file *f,
int (*cmp) (const char *, const char *),
unsigned long (*hash) (const char *))
@ -1383,8 +1368,8 @@ obj_set_symbol_compare(struct obj_file *f,
#endif /* BB_FEATURE_INSMOD_VERSION_CHECKING */
struct obj_symbol *obj_add_symbol(struct obj_file *f, const char *name,
static struct obj_symbol *
obj_add_symbol(struct obj_file *f, const char *name,
unsigned long symidx, int info,
int secidx, ElfW(Addr) value,
unsigned long size)
@ -1478,7 +1463,8 @@ struct obj_symbol *obj_add_symbol(struct obj_file *f, const char *name,
return sym;
}
struct obj_symbol *obj_find_symbol(struct obj_file *f, const char *name)
static struct obj_symbol *
obj_find_symbol(struct obj_file *f, const char *name)
{
struct obj_symbol *sym;
unsigned long hash = f->symbol_hash(name) % HASH_BUCKETS;
@ -1490,7 +1476,7 @@ struct obj_symbol *obj_find_symbol(struct obj_file *f, const char *name)
return NULL;
}
ElfW(Addr)
static ElfW(Addr)
obj_symbol_final_value(struct obj_file * f, struct obj_symbol * sym)
{
if (sym) {
@ -1504,7 +1490,7 @@ ElfW(Addr)
}
}
struct obj_section *obj_find_section(struct obj_file *f, const char *name)
static struct obj_section *obj_find_section(struct obj_file *f, const char *name)
{
int i, n = f->header.e_shnum;
@ -1537,7 +1523,7 @@ static int obj_load_order_prio(struct obj_section *a)
return ac;
}
void
static void
obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec)
{
struct obj_section **p;
@ -1549,7 +1535,7 @@ obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec)
*p = sec;
}
struct obj_section *obj_create_alloced_section(struct obj_file *f,
static struct obj_section *obj_create_alloced_section(struct obj_file *f,
const char *name,
unsigned long align,
unsigned long size)
@ -1575,7 +1561,7 @@ struct obj_section *obj_create_alloced_section(struct obj_file *f,
return sec;
}
struct obj_section *obj_create_alloced_section_first(struct obj_file *f,
static struct obj_section *obj_create_alloced_section_first(struct obj_file *f,
const char *name,
unsigned long align,
unsigned long size)
@ -1604,7 +1590,7 @@ struct obj_section *obj_create_alloced_section_first(struct obj_file *f,
return sec;
}
void *obj_extend_section(struct obj_section *sec, unsigned long more)
static void *obj_extend_section(struct obj_section *sec, unsigned long more)
{
unsigned long oldsize = sec->header.sh_size;
if (more) {
@ -1614,7 +1600,6 @@ void *obj_extend_section(struct obj_section *sec, unsigned long more)
}
/* Conditionally add the symbols from the given symbol set to the
new module. */
@ -2631,7 +2616,7 @@ new_init_module(const char *m_name, struct obj_file *f,
/*======================================================================*/
int
static int
obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
const char *string)
{
@ -2660,7 +2645,7 @@ obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
return 1;
}
int
static int
obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
struct obj_symbol *sym)
{
@ -2676,7 +2661,7 @@ obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
return 1;
}
int obj_check_undefineds(struct obj_file *f)
static int obj_check_undefineds(struct obj_file *f)
{
unsigned long i;
int ret = 1;
@ -2698,7 +2683,7 @@ int obj_check_undefineds(struct obj_file *f)
return ret;
}
void obj_allocate_commons(struct obj_file *f)
static void obj_allocate_commons(struct obj_file *f)
{
struct common_entry {
struct common_entry *next;
@ -2807,7 +2792,7 @@ void obj_allocate_commons(struct obj_file *f)
}
}
unsigned long obj_load_size(struct obj_file *f)
static unsigned long obj_load_size(struct obj_file *f)
{
unsigned long dot = 0;
struct obj_section *sec;
@ -2828,7 +2813,7 @@ unsigned long obj_load_size(struct obj_file *f)
return dot;
}
int obj_relocate(struct obj_file *f, ElfW(Addr) base)
static int obj_relocate(struct obj_file *f, ElfW(Addr) base)
{
int i, n = f->header.e_shnum;
int ret = 1;
@ -2958,7 +2943,7 @@ int obj_relocate(struct obj_file *f, ElfW(Addr) base)
return ret;
}
int obj_create_image(struct obj_file *f, char *image)
static int obj_create_image(struct obj_file *f, char *image)
{
struct obj_section *sec;
ElfW(Addr) base = f->baseaddr;
@ -2980,7 +2965,7 @@ int obj_create_image(struct obj_file *f, char *image)
/*======================================================================*/
struct obj_file *obj_load(FILE * fp, int loadprogbits)
static struct obj_file *obj_load(FILE * fp, int loadprogbits)
{
struct obj_file *f;
ElfW(Shdr) * section_headers;
@ -3186,7 +3171,7 @@ struct obj_file *obj_load(FILE * fp, int loadprogbits)
* kernel for the module
*/
int obj_load_progbits(FILE * fp, struct obj_file* f)
static int obj_load_progbits(FILE * fp, struct obj_file* f)
{
char* imagebase = (char*) f->imagebase;
ElfW(Addr) base = f->baseaddr;

View File

@ -233,7 +233,7 @@ parse_mount_options(char *options, int *flags, char *strflags)
}
}
extern int
static int
mount_one(char *blockDevice, char *directory, char *filesystemType,
unsigned long flags, char *string_flags, int useMtab, int fakeIt,
char *mtab_opts, int whineOnErrors, int mount_all)

View File

@ -1,6 +1,6 @@
/* vi: set sw=4 ts=4: */
/*
* $Id: ping.c,v 1.45 2001/07/13 20:56:27 kraai Exp $
* $Id: ping.c,v 1.46 2001/07/17 01:12:36 andersen Exp $
* Mini ping implementation for busybox
*
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
@ -430,7 +430,6 @@ static void ping(const char *host)
if (h->h_addrtype != AF_INET)
error_msg_and_die("unknown address type; only AF_INET is currently supported.");
pingaddr.sin_family = AF_INET; /* h->h_addrtype */
memcpy(&pingaddr.sin_addr, h->h_addr, sizeof(pingaddr.sin_addr));
strncpy(buf, h->h_name, sizeof(buf) - 1);
hostname = buf;

View File

@ -131,40 +131,38 @@ static int nflag; /* print addresses numerically */
* If the nflag has been supplied, give
* numeric value, otherwise try for symbolic name.
*/
static inline char *
inetname(struct in_addr in)
static inline void
inetname(struct sockaddr_in *from)
{
char *cp;
static char line[50];
struct hostent *hp;
static char domain[MAXHOSTNAMELEN + 1];
static int first = 1;
const char *ina;
if (first && !nflag) {
first = 0;
if (gethostname(domain, MAXHOSTNAMELEN) == 0 &&
(cp = index(domain, '.')))
(cp = strchr(domain, '.')))
(void) strcpy(domain, cp + 1);
else
domain[0] = 0;
}
cp = 0;
if (!nflag && in.s_addr != INADDR_ANY) {
hp = gethostbyaddr((char *)&in, sizeof (in), AF_INET);
if (!nflag && from->sin_addr.s_addr != INADDR_ANY) {
hp = gethostbyaddr((char *)&(from->sin_addr), sizeof (from->sin_addr), AF_INET);
if (hp) {
if ((cp = index(hp->h_name, '.')) &&
if ((cp = strchr(hp->h_name, '.')) &&
!strcmp(cp + 1, domain))
*cp = 0;
cp = (char *)hp->h_name;
}
}
if (cp)
(void) strcpy(line, cp);
else {
in.s_addr = ntohl(in.s_addr);
strcpy(line, inet_ntoa(in));
}
return (line);
ina = inet_ntoa(from->sin_addr);
if (nflag)
printf(" %s", ina);
else
printf(" %s (%s)", (cp ? cp : ina), ina);
}
static inline void
@ -177,12 +175,7 @@ print(u_char *buf, int cc, struct sockaddr_in *from)
hlen = ip->ip_hl << 2;
cc -= hlen;
if (nflag)
printf(" %s", inet_ntoa(from->sin_addr));
else
printf(" %s (%s)", inetname(from->sin_addr),
inet_ntoa(from->sin_addr));
inetname(from);
#ifdef BB_FEATURE_TRACEROUTE_VERBOSE
if (verbose)
printf (" %d bytes to %s", cc, inet_ntoa (ip->ip_dst));

3
ping.c
View File

@ -1,6 +1,6 @@
/* vi: set sw=4 ts=4: */
/*
* $Id: ping.c,v 1.45 2001/07/13 20:56:27 kraai Exp $
* $Id: ping.c,v 1.46 2001/07/17 01:12:36 andersen Exp $
* Mini ping implementation for busybox
*
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
@ -430,7 +430,6 @@ static void ping(const char *host)
if (h->h_addrtype != AF_INET)
error_msg_and_die("unknown address type; only AF_INET is currently supported.");
pingaddr.sin_family = AF_INET; /* h->h_addrtype */
memcpy(&pingaddr.sin_addr, h->h_addr, sizeof(pingaddr.sin_addr));
strncpy(buf, h->h_name, sizeof(buf) - 1);
hostname = buf;

View File

@ -6204,8 +6204,7 @@ retry:
if (!iflag)
nr = safe_read(parsefile->fd, buf, BUFSIZ - 1);
else {
cmdedit_read_input((char*)cmdedit_prompt, buf);
nr = strlen(buf);
nr = cmdedit_read_input((char*)cmdedit_prompt, buf);
}
}
#else
@ -9445,7 +9444,7 @@ static char *wordtext; /* text of last word returned by readtok
static struct nodelist *backquotelist;
static union node *redirnode;
struct heredoc *heredoc;
static struct heredoc *heredoc;
static int quoteflag; /* set if (part of) last token was quoted */
static int startlinno; /* line # where last token started */
@ -12917,7 +12916,7 @@ findvar(struct var **vpp, const char *name)
/*
* Copyright (c) 1999 Herbert Xu <herbert@debian.org>
* This file contains code for the times builtin.
* $Id: ash.c,v 1.10 2001/07/12 20:26:31 andersen Exp $
* $Id: ash.c,v 1.11 2001/07/17 01:12:35 andersen Exp $
*/
static int timescmd (int argc, char **argv)
{

View File

@ -1153,7 +1153,8 @@ enum {
*
*/
extern void cmdedit_read_input(char *prompt, char command[BUFSIZ])
int cmdedit_read_input(char *prompt, char command[BUFSIZ])
{
int break_out = 0;
@ -1231,10 +1232,15 @@ extern void cmdedit_read_input(char *prompt, char command[BUFSIZ])
* if the len=0 and no chars to delete */
if (len == 0) {
prepare_to_die:
#if !defined(BB_FEATURE_ASH)
printf("exit");
goto_new_line();
/* cmdedit_reset_term() called in atexit */
exit(EXIT_SUCCESS);
#else
break_out = -1; /* for control stoped jobs */
break;
#endif
} else {
input_delete();
}
@ -1455,8 +1461,10 @@ prepare_to_die:
num_ok_lines++;
#endif
}
if(break_out>0) {
command[len++] = '\n'; /* set '\n' */
command[len] = 0;
}
#if defined(BB_FEATURE_CLEAN_UP) && defined(BB_FEATURE_COMMAND_TAB_COMPLETION)
input_tab(0); /* strong free */
#endif
@ -1464,6 +1472,7 @@ prepare_to_die:
free(cmdedit_prompt);
#endif
cmdedit_reset_term();
return len;
}

View File

@ -1,6 +1,6 @@
#ifndef CMDEDIT_H
#define CMDEDIT_H
void cmdedit_read_input(char* promptStr, char* command); /* read a line of input */
int cmdedit_read_input(char* promptStr, char* command);
#endif /* CMDEDIT_H */

View File

@ -346,7 +346,7 @@ static const int IOV_COUNT = 2;
struct iovec iov[IOV_COUNT];
struct iovec *v = iov;
bzero(&res, sizeof(res));
memset(&res, 0, sizeof(res));
snprintf(res, sizeof(res), "<%d>", pri);
v->iov_base = res ;
v->iov_len = strlen(res);
@ -442,7 +442,7 @@ static void init_RemoteLog (void){
struct hostent *hostinfo;
int len = sizeof(remoteaddr);
bzero(&remoteaddr, len);
memset(&remoteaddr, 0, len);
remotefd = socket(AF_INET, SOCK_DGRAM, 0);

View File

@ -346,7 +346,7 @@ static const int IOV_COUNT = 2;
struct iovec iov[IOV_COUNT];
struct iovec *v = iov;
bzero(&res, sizeof(res));
memset(&res, 0, sizeof(res));
snprintf(res, sizeof(res), "<%d>", pri);
v->iov_base = res ;
v->iov_len = strlen(res);
@ -442,7 +442,7 @@ static void init_RemoteLog (void){
struct hostent *hostinfo;
int len = sizeof(remoteaddr);
bzero(&remoteaddr, len);
memset(&remoteaddr, 0, len);
remotefd = socket(AF_INET, SOCK_DGRAM, 0);

View File

@ -131,40 +131,38 @@ static int nflag; /* print addresses numerically */
* If the nflag has been supplied, give
* numeric value, otherwise try for symbolic name.
*/
static inline char *
inetname(struct in_addr in)
static inline void
inetname(struct sockaddr_in *from)
{
char *cp;
static char line[50];
struct hostent *hp;
static char domain[MAXHOSTNAMELEN + 1];
static int first = 1;
const char *ina;
if (first && !nflag) {
first = 0;
if (gethostname(domain, MAXHOSTNAMELEN) == 0 &&
(cp = index(domain, '.')))
(cp = strchr(domain, '.')))
(void) strcpy(domain, cp + 1);
else
domain[0] = 0;
}
cp = 0;
if (!nflag && in.s_addr != INADDR_ANY) {
hp = gethostbyaddr((char *)&in, sizeof (in), AF_INET);
if (!nflag && from->sin_addr.s_addr != INADDR_ANY) {
hp = gethostbyaddr((char *)&(from->sin_addr), sizeof (from->sin_addr), AF_INET);
if (hp) {
if ((cp = index(hp->h_name, '.')) &&
if ((cp = strchr(hp->h_name, '.')) &&
!strcmp(cp + 1, domain))
*cp = 0;
cp = (char *)hp->h_name;
}
}
if (cp)
(void) strcpy(line, cp);
else {
in.s_addr = ntohl(in.s_addr);
strcpy(line, inet_ntoa(in));
}
return (line);
ina = inet_ntoa(from->sin_addr);
if (nflag)
printf(" %s", ina);
else
printf(" %s (%s)", (cp ? cp : ina), ina);
}
static inline void
@ -177,12 +175,7 @@ print(u_char *buf, int cc, struct sockaddr_in *from)
hlen = ip->ip_hl << 2;
cc -= hlen;
if (nflag)
printf(" %s", inet_ntoa(from->sin_addr));
else
printf(" %s (%s)", inetname(from->sin_addr),
inet_ntoa(from->sin_addr));
inetname(from);
#ifdef BB_FEATURE_TRACEROUTE_VERBOSE
if (verbose)
printf (" %d bytes to %s", cc, inet_ntoa (ip->ip_dst));

View File

@ -233,7 +233,7 @@ parse_mount_options(char *options, int *flags, char *strflags)
}
}
extern int
static int
mount_one(char *blockDevice, char *directory, char *filesystemType,
unsigned long flags, char *string_flags, int useMtab, int fakeIt,
char *mtab_opts, int whineOnErrors, int mount_all)

4
vi.c
View File

@ -18,8 +18,8 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
char *vi_Version =
"$Id: vi.c,v 1.11 2001/07/02 18:06:14 andersen Exp $";
static const char vi_Version[] =
"$Id: vi.c,v 1.12 2001/07/17 01:12:36 andersen Exp $";
/*
* To compile for standalone use: