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

View File

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

7
ash.c
View File

@ -6204,8 +6204,7 @@ retry:
if (!iflag) if (!iflag)
nr = safe_read(parsefile->fd, buf, BUFSIZ - 1); nr = safe_read(parsefile->fd, buf, BUFSIZ - 1);
else { else {
cmdedit_read_input((char*)cmdedit_prompt, buf); nr = cmdedit_read_input((char*)cmdedit_prompt, buf);
nr = strlen(buf);
} }
} }
#else #else
@ -9445,7 +9444,7 @@ static char *wordtext; /* text of last word returned by readtok
static struct nodelist *backquotelist; static struct nodelist *backquotelist;
static union node *redirnode; static union node *redirnode;
struct heredoc *heredoc; static struct heredoc *heredoc;
static int quoteflag; /* set if (part of) last token was quoted */ static int quoteflag; /* set if (part of) last token was quoted */
static int startlinno; /* line # where last token started */ 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> * Copyright (c) 1999 Herbert Xu <herbert@debian.org>
* This file contains code for the times builtin. * 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) 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; 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 the len=0 and no chars to delete */
if (len == 0) { if (len == 0) {
prepare_to_die: prepare_to_die:
#if !defined(BB_FEATURE_ASH)
printf("exit"); printf("exit");
goto_new_line(); goto_new_line();
/* cmdedit_reset_term() called in atexit */ /* cmdedit_reset_term() called in atexit */
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
#else
break_out = -1; /* for control stoped jobs */
break;
#endif
} else { } else {
input_delete(); input_delete();
} }
@ -1455,8 +1461,10 @@ prepare_to_die:
num_ok_lines++; num_ok_lines++;
#endif #endif
} }
if(break_out>0) {
command[len++] = '\n'; /* set '\n' */ command[len++] = '\n'; /* set '\n' */
command[len] = 0; command[len] = 0;
}
#if defined(BB_FEATURE_CLEAN_UP) && defined(BB_FEATURE_COMMAND_TAB_COMPLETION) #if defined(BB_FEATURE_CLEAN_UP) && defined(BB_FEATURE_COMMAND_TAB_COMPLETION)
input_tab(0); /* strong free */ input_tab(0); /* strong free */
#endif #endif
@ -1464,6 +1472,7 @@ prepare_to_die:
free(cmdedit_prompt); free(cmdedit_prompt);
#endif #endif
cmdedit_reset_term(); cmdedit_reset_term();
return len;
} }

View File

@ -1,6 +1,6 @@
#ifndef CMDEDIT_H #ifndef CMDEDIT_H
#define 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 */ #endif /* CMDEDIT_H */

View File

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

147
insmod.c
View File

@ -130,7 +130,7 @@
#ifndef MODUTILS_MODULE_H #ifndef MODUTILS_MODULE_H
static const int MODUTILS_MODULE_H = 1; 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. /* 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 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 #ifndef MODUTILS_OBJ_H
static const int MODUTILS_OBJ_H = 1; 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. */ /* The relocatable object is manipulated using elfin types. */
@ -537,78 +537,73 @@ struct obj_symbol_patch
/* Generic object manipulation routines. */ /* 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, static struct obj_symbol *obj_find_symbol (struct obj_file *f,
unsigned long symidx, int info, int secidx,
ElfW(Addr) value, unsigned long size);
struct obj_symbol *obj_find_symbol (struct obj_file *f,
const char *name); 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); 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 *), int (*cmp)(const char *, const char *),
unsigned long (*hash)(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); 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 *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, const char *name,
unsigned long align, unsigned long align,
unsigned long size); 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, const char *name,
unsigned long align, unsigned long align,
unsigned long size); 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); 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); 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. */ /* 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 *targsec,
struct obj_section *symsec, struct obj_section *symsec,
struct obj_symbol *sym, struct obj_symbol *sym,
ElfW(RelM) *rel, ElfW(Addr) value); 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; static int arch_init_module (struct obj_file *f, struct new_module *);
int arch_init_module (struct obj_file *f, struct new_module *);
#endif /* obj.h */ #endif /* obj.h */
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@ -624,10 +619,10 @@ static const int STRVERSIONLEN = 32;
/*======================================================================*/ /*======================================================================*/
int flag_force_load = 0; static int flag_force_load = 0;
int flag_autoclean = 0; static int flag_autoclean = 0;
int flag_verbose = 0; static int flag_verbose = 0;
int flag_export = 1; static int flag_export = 1;
/*======================================================================*/ /*======================================================================*/
@ -700,12 +695,12 @@ struct external_module {
struct new_module_symbol *syms; struct new_module_symbol *syms;
}; };
struct new_module_symbol *ksyms; static struct new_module_symbol *ksyms;
size_t nksyms; static size_t nksyms;
struct external_module *ext_modules; static struct external_module *ext_modules;
int n_ext_modules; static int n_ext_modules;
int n_ext_modules_used; static int n_ext_modules_used;
extern int delete_module(const char *); extern int delete_module(const char *);
static char m_filename[FILENAME_MAX + 1]; 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; struct arch_file *f;
f = xmalloc(sizeof(*f)); f = xmalloc(sizeof(*f));
@ -758,12 +753,12 @@ struct obj_file *arch_new_file(void)
return &f->root; return &f->root;
} }
struct obj_section *arch_new_section(void) static struct obj_section *arch_new_section(void)
{ {
return xmalloc(sizeof(struct obj_section)); 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; struct arch_symbol *sym;
sym = xmalloc(sizeof(*sym)); sym = xmalloc(sizeof(*sym));
@ -778,7 +773,7 @@ struct obj_symbol *arch_new_symbol(void)
return &sym->root; return &sym->root;
} }
enum obj_reloc static enum obj_reloc
arch_apply_relocation(struct obj_file *f, arch_apply_relocation(struct obj_file *f,
struct obj_section *targsec, struct obj_section *targsec,
struct obj_section *symsec, struct obj_section *symsec,
@ -1140,7 +1135,7 @@ arch_apply_relocation(struct obj_file *f,
return ret; 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) #if defined(BB_USE_GOT_ENTRIES) || defined(BB_USE_PLT_ENTRIES)
struct arch_file *ifile = (struct arch_file *) f; struct arch_file *ifile = (struct arch_file *) f;
@ -1271,7 +1266,7 @@ int arch_create_got(struct obj_file *f)
return 1; 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; return 1;
} }
@ -1280,7 +1275,7 @@ int arch_init_module(struct obj_file *f, struct new_module *mod)
/*======================================================================*/ /*======================================================================*/
/* Standard ELF hash function. */ /* 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 h = 0;
unsigned long g; unsigned long g;
@ -1298,7 +1293,7 @@ inline unsigned long obj_elf_hash_n(const char *name, unsigned long n)
return h; 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)); 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]) static int get_kernel_version(char str[STRVERSIONLEN])
{ {
struct utsname uts_info; struct utsname uts_info;
char *p, *q; int kv;
int a, b, c;
if (uname(&uts_info) < 0) if (uname(&uts_info) < 0)
return -1; return -1;
strncpy(str, uts_info.release, STRVERSIONLEN); strncpy(str, uts_info.release, STRVERSIONLEN);
p = uts_info.release;
a = strtoul(p, &p, 10); kv = get_kernel_revision();
if (*p != '.') if(kv==0)
return -1; 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. */ /* 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); return obj_elf_hash_n(str, len);
} }
void static void
obj_set_symbol_compare(struct obj_file *f, obj_set_symbol_compare(struct obj_file *f,
int (*cmp) (const char *, const char *), int (*cmp) (const char *, const char *),
unsigned long (*hash) (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 */ #endif /* BB_FEATURE_INSMOD_VERSION_CHECKING */
static struct obj_symbol *
struct obj_symbol *obj_add_symbol(struct obj_file *f, const char *name, obj_add_symbol(struct obj_file *f, const char *name,
unsigned long symidx, int info, unsigned long symidx, int info,
int secidx, ElfW(Addr) value, int secidx, ElfW(Addr) value,
unsigned long size) unsigned long size)
@ -1478,7 +1463,8 @@ struct obj_symbol *obj_add_symbol(struct obj_file *f, const char *name,
return sym; 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; struct obj_symbol *sym;
unsigned long hash = f->symbol_hash(name) % HASH_BUCKETS; 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; return NULL;
} }
ElfW(Addr) static ElfW(Addr)
obj_symbol_final_value(struct obj_file * f, struct obj_symbol * sym) obj_symbol_final_value(struct obj_file * f, struct obj_symbol * sym)
{ {
if (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; int i, n = f->header.e_shnum;
@ -1537,7 +1523,7 @@ static int obj_load_order_prio(struct obj_section *a)
return ac; return ac;
} }
void static void
obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec) obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec)
{ {
struct obj_section **p; struct obj_section **p;
@ -1549,7 +1535,7 @@ obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec)
*p = 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, const char *name,
unsigned long align, unsigned long align,
unsigned long size) unsigned long size)
@ -1575,7 +1561,7 @@ struct obj_section *obj_create_alloced_section(struct obj_file *f,
return sec; 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, const char *name,
unsigned long align, unsigned long align,
unsigned long size) unsigned long size)
@ -1604,7 +1590,7 @@ struct obj_section *obj_create_alloced_section_first(struct obj_file *f,
return sec; 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; unsigned long oldsize = sec->header.sh_size;
if (more) { 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 /* Conditionally add the symbols from the given symbol set to the
new module. */ 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, obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
const char *string) const char *string)
{ {
@ -2660,7 +2645,7 @@ obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
return 1; return 1;
} }
int static int
obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
struct obj_symbol *sym) struct obj_symbol *sym)
{ {
@ -2676,7 +2661,7 @@ obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
return 1; return 1;
} }
int obj_check_undefineds(struct obj_file *f) static int obj_check_undefineds(struct obj_file *f)
{ {
unsigned long i; unsigned long i;
int ret = 1; int ret = 1;
@ -2698,7 +2683,7 @@ int obj_check_undefineds(struct obj_file *f)
return ret; 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 {
struct common_entry *next; 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; unsigned long dot = 0;
struct obj_section *sec; struct obj_section *sec;
@ -2828,7 +2813,7 @@ unsigned long obj_load_size(struct obj_file *f)
return dot; 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 i, n = f->header.e_shnum;
int ret = 1; int ret = 1;
@ -2958,7 +2943,7 @@ int obj_relocate(struct obj_file *f, ElfW(Addr) base)
return ret; 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; struct obj_section *sec;
ElfW(Addr) base = f->baseaddr; 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; struct obj_file *f;
ElfW(Shdr) * section_headers; ElfW(Shdr) * section_headers;
@ -3186,7 +3171,7 @@ struct obj_file *obj_load(FILE * fp, int loadprogbits)
* kernel for the module * 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; char* imagebase = (char*) f->imagebase;
ElfW(Addr) base = f->baseaddr; ElfW(Addr) base = f->baseaddr;

View File

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

View File

@ -130,7 +130,7 @@
#ifndef MODUTILS_MODULE_H #ifndef MODUTILS_MODULE_H
static const int MODUTILS_MODULE_H = 1; 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. /* 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 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 #ifndef MODUTILS_OBJ_H
static const int MODUTILS_OBJ_H = 1; 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. */ /* The relocatable object is manipulated using elfin types. */
@ -537,78 +537,73 @@ struct obj_symbol_patch
/* Generic object manipulation routines. */ /* 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, static struct obj_symbol *obj_find_symbol (struct obj_file *f,
unsigned long symidx, int info, int secidx,
ElfW(Addr) value, unsigned long size);
struct obj_symbol *obj_find_symbol (struct obj_file *f,
const char *name); 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); 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 *), int (*cmp)(const char *, const char *),
unsigned long (*hash)(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); 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 *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, const char *name,
unsigned long align, unsigned long align,
unsigned long size); 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, const char *name,
unsigned long align, unsigned long align,
unsigned long size); 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); 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); 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. */ /* 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 *targsec,
struct obj_section *symsec, struct obj_section *symsec,
struct obj_symbol *sym, struct obj_symbol *sym,
ElfW(RelM) *rel, ElfW(Addr) value); 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; static int arch_init_module (struct obj_file *f, struct new_module *);
int arch_init_module (struct obj_file *f, struct new_module *);
#endif /* obj.h */ #endif /* obj.h */
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
@ -624,10 +619,10 @@ static const int STRVERSIONLEN = 32;
/*======================================================================*/ /*======================================================================*/
int flag_force_load = 0; static int flag_force_load = 0;
int flag_autoclean = 0; static int flag_autoclean = 0;
int flag_verbose = 0; static int flag_verbose = 0;
int flag_export = 1; static int flag_export = 1;
/*======================================================================*/ /*======================================================================*/
@ -700,12 +695,12 @@ struct external_module {
struct new_module_symbol *syms; struct new_module_symbol *syms;
}; };
struct new_module_symbol *ksyms; static struct new_module_symbol *ksyms;
size_t nksyms; static size_t nksyms;
struct external_module *ext_modules; static struct external_module *ext_modules;
int n_ext_modules; static int n_ext_modules;
int n_ext_modules_used; static int n_ext_modules_used;
extern int delete_module(const char *); extern int delete_module(const char *);
static char m_filename[FILENAME_MAX + 1]; 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; struct arch_file *f;
f = xmalloc(sizeof(*f)); f = xmalloc(sizeof(*f));
@ -758,12 +753,12 @@ struct obj_file *arch_new_file(void)
return &f->root; return &f->root;
} }
struct obj_section *arch_new_section(void) static struct obj_section *arch_new_section(void)
{ {
return xmalloc(sizeof(struct obj_section)); 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; struct arch_symbol *sym;
sym = xmalloc(sizeof(*sym)); sym = xmalloc(sizeof(*sym));
@ -778,7 +773,7 @@ struct obj_symbol *arch_new_symbol(void)
return &sym->root; return &sym->root;
} }
enum obj_reloc static enum obj_reloc
arch_apply_relocation(struct obj_file *f, arch_apply_relocation(struct obj_file *f,
struct obj_section *targsec, struct obj_section *targsec,
struct obj_section *symsec, struct obj_section *symsec,
@ -1140,7 +1135,7 @@ arch_apply_relocation(struct obj_file *f,
return ret; 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) #if defined(BB_USE_GOT_ENTRIES) || defined(BB_USE_PLT_ENTRIES)
struct arch_file *ifile = (struct arch_file *) f; struct arch_file *ifile = (struct arch_file *) f;
@ -1271,7 +1266,7 @@ int arch_create_got(struct obj_file *f)
return 1; 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; return 1;
} }
@ -1280,7 +1275,7 @@ int arch_init_module(struct obj_file *f, struct new_module *mod)
/*======================================================================*/ /*======================================================================*/
/* Standard ELF hash function. */ /* 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 h = 0;
unsigned long g; unsigned long g;
@ -1298,7 +1293,7 @@ inline unsigned long obj_elf_hash_n(const char *name, unsigned long n)
return h; 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)); 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]) static int get_kernel_version(char str[STRVERSIONLEN])
{ {
struct utsname uts_info; struct utsname uts_info;
char *p, *q; int kv;
int a, b, c;
if (uname(&uts_info) < 0) if (uname(&uts_info) < 0)
return -1; return -1;
strncpy(str, uts_info.release, STRVERSIONLEN); strncpy(str, uts_info.release, STRVERSIONLEN);
p = uts_info.release;
a = strtoul(p, &p, 10); kv = get_kernel_revision();
if (*p != '.') if(kv==0)
return -1; 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. */ /* 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); return obj_elf_hash_n(str, len);
} }
void static void
obj_set_symbol_compare(struct obj_file *f, obj_set_symbol_compare(struct obj_file *f,
int (*cmp) (const char *, const char *), int (*cmp) (const char *, const char *),
unsigned long (*hash) (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 */ #endif /* BB_FEATURE_INSMOD_VERSION_CHECKING */
static struct obj_symbol *
struct obj_symbol *obj_add_symbol(struct obj_file *f, const char *name, obj_add_symbol(struct obj_file *f, const char *name,
unsigned long symidx, int info, unsigned long symidx, int info,
int secidx, ElfW(Addr) value, int secidx, ElfW(Addr) value,
unsigned long size) unsigned long size)
@ -1478,7 +1463,8 @@ struct obj_symbol *obj_add_symbol(struct obj_file *f, const char *name,
return sym; 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; struct obj_symbol *sym;
unsigned long hash = f->symbol_hash(name) % HASH_BUCKETS; 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; return NULL;
} }
ElfW(Addr) static ElfW(Addr)
obj_symbol_final_value(struct obj_file * f, struct obj_symbol * sym) obj_symbol_final_value(struct obj_file * f, struct obj_symbol * sym)
{ {
if (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; int i, n = f->header.e_shnum;
@ -1537,7 +1523,7 @@ static int obj_load_order_prio(struct obj_section *a)
return ac; return ac;
} }
void static void
obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec) obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec)
{ {
struct obj_section **p; struct obj_section **p;
@ -1549,7 +1535,7 @@ obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec)
*p = 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, const char *name,
unsigned long align, unsigned long align,
unsigned long size) unsigned long size)
@ -1575,7 +1561,7 @@ struct obj_section *obj_create_alloced_section(struct obj_file *f,
return sec; 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, const char *name,
unsigned long align, unsigned long align,
unsigned long size) unsigned long size)
@ -1604,7 +1590,7 @@ struct obj_section *obj_create_alloced_section_first(struct obj_file *f,
return sec; 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; unsigned long oldsize = sec->header.sh_size;
if (more) { 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 /* Conditionally add the symbols from the given symbol set to the
new module. */ 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, obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
const char *string) const char *string)
{ {
@ -2660,7 +2645,7 @@ obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
return 1; return 1;
} }
int static int
obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
struct obj_symbol *sym) struct obj_symbol *sym)
{ {
@ -2676,7 +2661,7 @@ obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset,
return 1; return 1;
} }
int obj_check_undefineds(struct obj_file *f) static int obj_check_undefineds(struct obj_file *f)
{ {
unsigned long i; unsigned long i;
int ret = 1; int ret = 1;
@ -2698,7 +2683,7 @@ int obj_check_undefineds(struct obj_file *f)
return ret; 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 {
struct common_entry *next; 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; unsigned long dot = 0;
struct obj_section *sec; struct obj_section *sec;
@ -2828,7 +2813,7 @@ unsigned long obj_load_size(struct obj_file *f)
return dot; 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 i, n = f->header.e_shnum;
int ret = 1; int ret = 1;
@ -2958,7 +2943,7 @@ int obj_relocate(struct obj_file *f, ElfW(Addr) base)
return ret; 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; struct obj_section *sec;
ElfW(Addr) base = f->baseaddr; 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; struct obj_file *f;
ElfW(Shdr) * section_headers; ElfW(Shdr) * section_headers;
@ -3186,7 +3171,7 @@ struct obj_file *obj_load(FILE * fp, int loadprogbits)
* kernel for the module * 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; char* imagebase = (char*) f->imagebase;
ElfW(Addr) base = f->baseaddr; 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, mount_one(char *blockDevice, char *directory, char *filesystemType,
unsigned long flags, char *string_flags, int useMtab, int fakeIt, unsigned long flags, char *string_flags, int useMtab, int fakeIt,
char *mtab_opts, int whineOnErrors, int mount_all) char *mtab_opts, int whineOnErrors, int mount_all)

View File

@ -1,6 +1,6 @@
/* vi: set sw=4 ts=4: */ /* 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 * Mini ping implementation for busybox
* *
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org> * 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) if (h->h_addrtype != AF_INET)
error_msg_and_die("unknown address type; only AF_INET is currently supported."); 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)); memcpy(&pingaddr.sin_addr, h->h_addr, sizeof(pingaddr.sin_addr));
strncpy(buf, h->h_name, sizeof(buf) - 1); strncpy(buf, h->h_name, sizeof(buf) - 1);
hostname = buf; hostname = buf;

View File

@ -131,40 +131,38 @@ static int nflag; /* print addresses numerically */
* If the nflag has been supplied, give * If the nflag has been supplied, give
* numeric value, otherwise try for symbolic name. * numeric value, otherwise try for symbolic name.
*/ */
static inline char * static inline void
inetname(struct in_addr in) inetname(struct sockaddr_in *from)
{ {
char *cp; char *cp;
static char line[50];
struct hostent *hp; struct hostent *hp;
static char domain[MAXHOSTNAMELEN + 1]; static char domain[MAXHOSTNAMELEN + 1];
static int first = 1; static int first = 1;
const char *ina;
if (first && !nflag) { if (first && !nflag) {
first = 0; first = 0;
if (gethostname(domain, MAXHOSTNAMELEN) == 0 && if (gethostname(domain, MAXHOSTNAMELEN) == 0 &&
(cp = index(domain, '.'))) (cp = strchr(domain, '.')))
(void) strcpy(domain, cp + 1); (void) strcpy(domain, cp + 1);
else else
domain[0] = 0; domain[0] = 0;
} }
cp = 0; cp = 0;
if (!nflag && in.s_addr != INADDR_ANY) { if (!nflag && from->sin_addr.s_addr != INADDR_ANY) {
hp = gethostbyaddr((char *)&in, sizeof (in), AF_INET); hp = gethostbyaddr((char *)&(from->sin_addr), sizeof (from->sin_addr), AF_INET);
if (hp) { if (hp) {
if ((cp = index(hp->h_name, '.')) && if ((cp = strchr(hp->h_name, '.')) &&
!strcmp(cp + 1, domain)) !strcmp(cp + 1, domain))
*cp = 0; *cp = 0;
cp = (char *)hp->h_name; cp = (char *)hp->h_name;
} }
} }
if (cp) ina = inet_ntoa(from->sin_addr);
(void) strcpy(line, cp); if (nflag)
else { printf(" %s", ina);
in.s_addr = ntohl(in.s_addr); else
strcpy(line, inet_ntoa(in)); printf(" %s (%s)", (cp ? cp : ina), ina);
}
return (line);
} }
static inline void static inline void
@ -177,12 +175,7 @@ print(u_char *buf, int cc, struct sockaddr_in *from)
hlen = ip->ip_hl << 2; hlen = ip->ip_hl << 2;
cc -= hlen; cc -= hlen;
if (nflag) inetname(from);
printf(" %s", inet_ntoa(from->sin_addr));
else
printf(" %s (%s)", inetname(from->sin_addr),
inet_ntoa(from->sin_addr));
#ifdef BB_FEATURE_TRACEROUTE_VERBOSE #ifdef BB_FEATURE_TRACEROUTE_VERBOSE
if (verbose) if (verbose)
printf (" %d bytes to %s", cc, inet_ntoa (ip->ip_dst)); 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: */ /* 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 * Mini ping implementation for busybox
* *
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org> * 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) if (h->h_addrtype != AF_INET)
error_msg_and_die("unknown address type; only AF_INET is currently supported."); 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)); memcpy(&pingaddr.sin_addr, h->h_addr, sizeof(pingaddr.sin_addr));
strncpy(buf, h->h_name, sizeof(buf) - 1); strncpy(buf, h->h_name, sizeof(buf) - 1);
hostname = buf; hostname = buf;

View File

@ -6204,8 +6204,7 @@ retry:
if (!iflag) if (!iflag)
nr = safe_read(parsefile->fd, buf, BUFSIZ - 1); nr = safe_read(parsefile->fd, buf, BUFSIZ - 1);
else { else {
cmdedit_read_input((char*)cmdedit_prompt, buf); nr = cmdedit_read_input((char*)cmdedit_prompt, buf);
nr = strlen(buf);
} }
} }
#else #else
@ -9445,7 +9444,7 @@ static char *wordtext; /* text of last word returned by readtok
static struct nodelist *backquotelist; static struct nodelist *backquotelist;
static union node *redirnode; static union node *redirnode;
struct heredoc *heredoc; static struct heredoc *heredoc;
static int quoteflag; /* set if (part of) last token was quoted */ static int quoteflag; /* set if (part of) last token was quoted */
static int startlinno; /* line # where last token started */ 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> * Copyright (c) 1999 Herbert Xu <herbert@debian.org>
* This file contains code for the times builtin. * 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) 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; 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 the len=0 and no chars to delete */
if (len == 0) { if (len == 0) {
prepare_to_die: prepare_to_die:
#if !defined(BB_FEATURE_ASH)
printf("exit"); printf("exit");
goto_new_line(); goto_new_line();
/* cmdedit_reset_term() called in atexit */ /* cmdedit_reset_term() called in atexit */
exit(EXIT_SUCCESS); exit(EXIT_SUCCESS);
#else
break_out = -1; /* for control stoped jobs */
break;
#endif
} else { } else {
input_delete(); input_delete();
} }
@ -1455,8 +1461,10 @@ prepare_to_die:
num_ok_lines++; num_ok_lines++;
#endif #endif
} }
if(break_out>0) {
command[len++] = '\n'; /* set '\n' */ command[len++] = '\n'; /* set '\n' */
command[len] = 0; command[len] = 0;
}
#if defined(BB_FEATURE_CLEAN_UP) && defined(BB_FEATURE_COMMAND_TAB_COMPLETION) #if defined(BB_FEATURE_CLEAN_UP) && defined(BB_FEATURE_COMMAND_TAB_COMPLETION)
input_tab(0); /* strong free */ input_tab(0); /* strong free */
#endif #endif
@ -1464,6 +1472,7 @@ prepare_to_die:
free(cmdedit_prompt); free(cmdedit_prompt);
#endif #endif
cmdedit_reset_term(); cmdedit_reset_term();
return len;
} }

View File

@ -1,6 +1,6 @@
#ifndef CMDEDIT_H #ifndef CMDEDIT_H
#define 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 */ #endif /* CMDEDIT_H */

View File

@ -346,7 +346,7 @@ static const int IOV_COUNT = 2;
struct iovec iov[IOV_COUNT]; struct iovec iov[IOV_COUNT];
struct iovec *v = iov; struct iovec *v = iov;
bzero(&res, sizeof(res)); memset(&res, 0, sizeof(res));
snprintf(res, sizeof(res), "<%d>", pri); snprintf(res, sizeof(res), "<%d>", pri);
v->iov_base = res ; v->iov_base = res ;
v->iov_len = strlen(res); v->iov_len = strlen(res);
@ -442,7 +442,7 @@ static void init_RemoteLog (void){
struct hostent *hostinfo; struct hostent *hostinfo;
int len = sizeof(remoteaddr); int len = sizeof(remoteaddr);
bzero(&remoteaddr, len); memset(&remoteaddr, 0, len);
remotefd = socket(AF_INET, SOCK_DGRAM, 0); 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 iov[IOV_COUNT];
struct iovec *v = iov; struct iovec *v = iov;
bzero(&res, sizeof(res)); memset(&res, 0, sizeof(res));
snprintf(res, sizeof(res), "<%d>", pri); snprintf(res, sizeof(res), "<%d>", pri);
v->iov_base = res ; v->iov_base = res ;
v->iov_len = strlen(res); v->iov_len = strlen(res);
@ -442,7 +442,7 @@ static void init_RemoteLog (void){
struct hostent *hostinfo; struct hostent *hostinfo;
int len = sizeof(remoteaddr); int len = sizeof(remoteaddr);
bzero(&remoteaddr, len); memset(&remoteaddr, 0, len);
remotefd = socket(AF_INET, SOCK_DGRAM, 0); 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 * If the nflag has been supplied, give
* numeric value, otherwise try for symbolic name. * numeric value, otherwise try for symbolic name.
*/ */
static inline char * static inline void
inetname(struct in_addr in) inetname(struct sockaddr_in *from)
{ {
char *cp; char *cp;
static char line[50];
struct hostent *hp; struct hostent *hp;
static char domain[MAXHOSTNAMELEN + 1]; static char domain[MAXHOSTNAMELEN + 1];
static int first = 1; static int first = 1;
const char *ina;
if (first && !nflag) { if (first && !nflag) {
first = 0; first = 0;
if (gethostname(domain, MAXHOSTNAMELEN) == 0 && if (gethostname(domain, MAXHOSTNAMELEN) == 0 &&
(cp = index(domain, '.'))) (cp = strchr(domain, '.')))
(void) strcpy(domain, cp + 1); (void) strcpy(domain, cp + 1);
else else
domain[0] = 0; domain[0] = 0;
} }
cp = 0; cp = 0;
if (!nflag && in.s_addr != INADDR_ANY) { if (!nflag && from->sin_addr.s_addr != INADDR_ANY) {
hp = gethostbyaddr((char *)&in, sizeof (in), AF_INET); hp = gethostbyaddr((char *)&(from->sin_addr), sizeof (from->sin_addr), AF_INET);
if (hp) { if (hp) {
if ((cp = index(hp->h_name, '.')) && if ((cp = strchr(hp->h_name, '.')) &&
!strcmp(cp + 1, domain)) !strcmp(cp + 1, domain))
*cp = 0; *cp = 0;
cp = (char *)hp->h_name; cp = (char *)hp->h_name;
} }
} }
if (cp) ina = inet_ntoa(from->sin_addr);
(void) strcpy(line, cp); if (nflag)
else { printf(" %s", ina);
in.s_addr = ntohl(in.s_addr); else
strcpy(line, inet_ntoa(in)); printf(" %s (%s)", (cp ? cp : ina), ina);
}
return (line);
} }
static inline void static inline void
@ -177,12 +175,7 @@ print(u_char *buf, int cc, struct sockaddr_in *from)
hlen = ip->ip_hl << 2; hlen = ip->ip_hl << 2;
cc -= hlen; cc -= hlen;
if (nflag) inetname(from);
printf(" %s", inet_ntoa(from->sin_addr));
else
printf(" %s (%s)", inetname(from->sin_addr),
inet_ntoa(from->sin_addr));
#ifdef BB_FEATURE_TRACEROUTE_VERBOSE #ifdef BB_FEATURE_TRACEROUTE_VERBOSE
if (verbose) if (verbose)
printf (" %d bytes to %s", cc, inet_ntoa (ip->ip_dst)); 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, mount_one(char *blockDevice, char *directory, char *filesystemType,
unsigned long flags, char *string_flags, int useMtab, int fakeIt, unsigned long flags, char *string_flags, int useMtab, int fakeIt,
char *mtab_opts, int whineOnErrors, int mount_all) 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. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
char *vi_Version = static const char vi_Version[] =
"$Id: vi.c,v 1.11 2001/07/02 18:06:14 andersen Exp $"; "$Id: vi.c,v 1.12 2001/07/17 01:12:36 andersen Exp $";
/* /*
* To compile for standalone use: * To compile for standalone use: