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:
parent
51ded05b3b
commit
044228d5ec
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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
7
ash.c
@ -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)
|
||||
{
|
||||
|
11
cmdedit.c
11
cmdedit.c
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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
147
insmod.c
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
2
mount.c
2
mount.c
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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
3
ping.c
@ -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;
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
33
traceroute.c
33
traceroute.c
@ -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));
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user