This is vodz' latest patch. Sorry it took so long...
authorEric Andersen <andersen@codepoet.org>
Tue, 17 Jul 2001 01:12:36 +0000 (01:12 -0000)
committerEric Andersen <andersen@codepoet.org>
Tue, 17 Jul 2001 01:12:36 +0000 (01:12 -0000)
    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)

21 files changed:
archival/libunarchive/decompress_unzip.c
archival/libunarchive/unzip.c
ash.c
cmdedit.c
cmdedit.h
editors/vi.c
insmod.c
libbb/unzip.c
modutils/insmod.c
mount.c
networking/ping.c
networking/traceroute.c
ping.c
shell/ash.c
shell/cmdedit.c
shell/cmdedit.h
sysklogd/syslogd.c
syslogd.c
traceroute.c
util-linux/mount.c
vi.c

index 3599571..ee74621 100644 (file)
@@ -67,7 +67,7 @@ static char *license_msg[] = {
 #include <string.h>
 #include "libbb.h"
 
-FILE *in_file, *out_file;
+static FILE *in_file, *out_file;
 
 /* these are freed by gz_close */
 static unsigned char *window;
@@ -91,9 +91,9 @@ static const int N_MAX = 288;         /* maximum number of codes in any set */
 static long bytes_out;         /* number of output bytes */
 static unsigned long outcnt;   /* bytes in output buffer */
 
-unsigned hufts;                /* track memory usage */
-unsigned long bb;                      /* bit buffer */
-unsigned bk;           /* bits in bit buffer */
+static unsigned hufts;         /* track memory usage */
+static unsigned long bb;                       /* bit buffer */
+static unsigned bk;            /* bits in bit buffer */
 
 typedef struct huft_s {
        unsigned char e;                /* number of extra bits or operation */
@@ -104,7 +104,7 @@ typedef struct huft_s {
        } v;
 } huft_t;
 
-unsigned short mask_bits[] = {
+static const unsigned short mask_bits[] = {
        0x0000,
        0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
        0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
@@ -154,7 +154,7 @@ static void make_crc_table()
  * Write the output window window[0..outcnt-1] and update crc and bytes_out.
  * (Used for the decompressed data only.)
  */
-void flush_window()
+static void flush_window(void)
 {
        int n;
 
@@ -1021,10 +1021,6 @@ extern void gz_close(int gunzip_pid)
        if (waitpid(gunzip_pid, NULL, 0) == -1) {
                printf("Couldnt wait ?");
        }
-       if (window) {
                free(window);
-       }
-       if (crc_table) {
                free(crc_table);
-       }
 }
index 3599571..ee74621 100644 (file)
@@ -67,7 +67,7 @@ static char *license_msg[] = {
 #include <string.h>
 #include "libbb.h"
 
-FILE *in_file, *out_file;
+static FILE *in_file, *out_file;
 
 /* these are freed by gz_close */
 static unsigned char *window;
@@ -91,9 +91,9 @@ static const int N_MAX = 288;         /* maximum number of codes in any set */
 static long bytes_out;         /* number of output bytes */
 static unsigned long outcnt;   /* bytes in output buffer */
 
-unsigned hufts;                /* track memory usage */
-unsigned long bb;                      /* bit buffer */
-unsigned bk;           /* bits in bit buffer */
+static unsigned hufts;         /* track memory usage */
+static unsigned long bb;                       /* bit buffer */
+static unsigned bk;            /* bits in bit buffer */
 
 typedef struct huft_s {
        unsigned char e;                /* number of extra bits or operation */
@@ -104,7 +104,7 @@ typedef struct huft_s {
        } v;
 } huft_t;
 
-unsigned short mask_bits[] = {
+static const unsigned short mask_bits[] = {
        0x0000,
        0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
        0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
@@ -154,7 +154,7 @@ static void make_crc_table()
  * Write the output window window[0..outcnt-1] and update crc and bytes_out.
  * (Used for the decompressed data only.)
  */
-void flush_window()
+static void flush_window(void)
 {
        int n;
 
@@ -1021,10 +1021,6 @@ extern void gz_close(int gunzip_pid)
        if (waitpid(gunzip_pid, NULL, 0) == -1) {
                printf("Couldnt wait ?");
        }
-       if (window) {
                free(window);
-       }
-       if (crc_table) {
                free(crc_table);
-       }
 }
diff --git a/ash.c b/ash.c
index 334d2fd..d16da82 100644 (file)
--- a/ash.c
+++ b/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)
 {
index 540eb7e..69f8337 100644 (file)
--- a/cmdedit.c
+++ b/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;
 }
 
 
index 1482da3..8389357 100644 (file)
--- a/cmdedit.h
+++ b/cmdedit.h
@@ -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 */
index 9e33556..f75c884 100644 (file)
@@ -18,8 +18,8 @@
  *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 
-char *vi_Version =
-       "$Id: vi.c,v 1.11 2001/07/02 18:06:14 andersen Exp $";
+static const char vi_Version[] =
+       "$Id: vi.c,v 1.12 2001/07/17 01:12:36 andersen Exp $";
 
 /*
  * To compile for standalone use:
index 4b00515..b457fa8 100644 (file)
--- a/insmod.c
+++ b/insmod.c
 #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 != '.')
-               return -1;
-       b = strtoul(p + 1, &p, 10);
-       if (*p != '.')
+       kv = get_kernel_revision();
+       if(kv==0)
                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;
index 3599571..ee74621 100644 (file)
@@ -67,7 +67,7 @@ static char *license_msg[] = {
 #include <string.h>
 #include "libbb.h"
 
-FILE *in_file, *out_file;
+static FILE *in_file, *out_file;
 
 /* these are freed by gz_close */
 static unsigned char *window;
@@ -91,9 +91,9 @@ static const int N_MAX = 288;         /* maximum number of codes in any set */
 static long bytes_out;         /* number of output bytes */
 static unsigned long outcnt;   /* bytes in output buffer */
 
-unsigned hufts;                /* track memory usage */
-unsigned long bb;                      /* bit buffer */
-unsigned bk;           /* bits in bit buffer */
+static unsigned hufts;         /* track memory usage */
+static unsigned long bb;                       /* bit buffer */
+static unsigned bk;            /* bits in bit buffer */
 
 typedef struct huft_s {
        unsigned char e;                /* number of extra bits or operation */
@@ -104,7 +104,7 @@ typedef struct huft_s {
        } v;
 } huft_t;
 
-unsigned short mask_bits[] = {
+static const unsigned short mask_bits[] = {
        0x0000,
        0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
        0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
@@ -154,7 +154,7 @@ static void make_crc_table()
  * Write the output window window[0..outcnt-1] and update crc and bytes_out.
  * (Used for the decompressed data only.)
  */
-void flush_window()
+static void flush_window(void)
 {
        int n;
 
@@ -1021,10 +1021,6 @@ extern void gz_close(int gunzip_pid)
        if (waitpid(gunzip_pid, NULL, 0) == -1) {
                printf("Couldnt wait ?");
        }
-       if (window) {
                free(window);
-       }
-       if (crc_table) {
                free(crc_table);
-       }
 }
index 4b00515..b457fa8 100644 (file)
 #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 != '.')
-               return -1;
-       b = strtoul(p + 1, &p, 10);
-       if (*p != '.')
+       kv = get_kernel_revision();
+       if(kv==0)
                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;
diff --git a/mount.c b/mount.c
index 9c438bf..eb6091f 100644 (file)
--- a/mount.c
+++ b/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)
index 620a29d..5ca5dd9 100644 (file)
@@ -1,6 +1,6 @@
 /* vi: set sw=4 ts=4: */
 /*
- * $Id: ping.c,v 1.45 2001/07/13 20:56:27 kraai Exp $
+ * $Id: ping.c,v 1.46 2001/07/17 01:12:36 andersen Exp $
  * Mini ping implementation for busybox
  *
  * Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
@@ -430,7 +430,6 @@ static void ping(const char *host)
        if (h->h_addrtype != AF_INET)
                error_msg_and_die("unknown address type; only AF_INET is currently supported.");
 
-       pingaddr.sin_family = AF_INET;  /* h->h_addrtype */
        memcpy(&pingaddr.sin_addr, h->h_addr, sizeof(pingaddr.sin_addr));
        strncpy(buf, h->h_name, sizeof(buf) - 1);
        hostname = buf;
index 106cf04..a3af5f6 100644 (file)
@@ -131,40 +131,38 @@ static int nflag;                      /* print addresses numerically */
  * If the nflag has been supplied, give
  * numeric value, otherwise try for symbolic name.
  */
-static inline char *
-inetname(struct in_addr in)
+static inline void
+inetname(struct sockaddr_in *from)
 {
        char *cp;
-       static char line[50];
        struct hostent *hp;
        static char domain[MAXHOSTNAMELEN + 1];
        static int first = 1;
+       const char *ina;
 
        if (first && !nflag) {
                first = 0;
                if (gethostname(domain, MAXHOSTNAMELEN) == 0 &&
-                   (cp = index(domain, '.')))
+                   (cp = strchr(domain, '.')))
                        (void) strcpy(domain, cp + 1);
                else
                        domain[0] = 0;
        }
        cp = 0;
-       if (!nflag && in.s_addr != INADDR_ANY) {
-               hp = gethostbyaddr((char *)&in, sizeof (in), AF_INET);
+       if (!nflag && from->sin_addr.s_addr != INADDR_ANY) {
+               hp = gethostbyaddr((char *)&(from->sin_addr), sizeof (from->sin_addr), AF_INET);
                if (hp) {
-                       if ((cp = index(hp->h_name, '.')) &&
+                       if ((cp = strchr(hp->h_name, '.')) &&
                            !strcmp(cp + 1, domain))
                                *cp = 0;
                        cp = (char *)hp->h_name;
                }
        }
-       if (cp)
-               (void) strcpy(line, cp);
-       else {
-               in.s_addr = ntohl(in.s_addr);
-               strcpy(line, inet_ntoa(in));
-       }
-       return (line);
+       ina = inet_ntoa(from->sin_addr);
+       if (nflag)
+               printf(" %s", ina);
+       else
+               printf(" %s (%s)", (cp ? cp : ina), ina);
 }
 
 static inline void
@@ -177,12 +175,7 @@ print(u_char *buf, int cc, struct sockaddr_in *from)
        hlen = ip->ip_hl << 2;
        cc -= hlen;
 
-       if (nflag)
-               printf(" %s", inet_ntoa(from->sin_addr));
-       else
-               printf(" %s (%s)", inetname(from->sin_addr),
-                      inet_ntoa(from->sin_addr));
-
+       inetname(from);
 #ifdef BB_FEATURE_TRACEROUTE_VERBOSE
        if (verbose)
                printf (" %d bytes to %s", cc, inet_ntoa (ip->ip_dst));
diff --git a/ping.c b/ping.c
index 620a29d..5ca5dd9 100644 (file)
--- a/ping.c
+++ b/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;
index 334d2fd..d16da82 100644 (file)
@@ -6204,8 +6204,7 @@ retry:
            if (!iflag)
                    nr = safe_read(parsefile->fd, buf, BUFSIZ - 1);
            else {
-                   cmdedit_read_input((char*)cmdedit_prompt, buf);
-                   nr = strlen(buf);
+                   nr = cmdedit_read_input((char*)cmdedit_prompt, buf);
            }
        }
 #else
@@ -9445,7 +9444,7 @@ static char *wordtext;                  /* text of last word returned by readtok
 
 static struct nodelist *backquotelist;
 static union node *redirnode;
-struct heredoc *heredoc;
+static struct heredoc *heredoc;
 static int quoteflag;                   /* set if (part of) last token was quoted */
 static int startlinno;                  /* line # where last token started */
 
@@ -12917,7 +12916,7 @@ findvar(struct var **vpp, const char *name)
 /*
  * Copyright (c) 1999 Herbert Xu <herbert@debian.org>
  * This file contains code for the times builtin.
- * $Id: ash.c,v 1.10 2001/07/12 20:26:31 andersen Exp $
+ * $Id: ash.c,v 1.11 2001/07/17 01:12:35 andersen Exp $
  */
 static int timescmd (int argc, char **argv)
 {
index 540eb7e..69f8337 100644 (file)
@@ -1153,7 +1153,8 @@ enum {
  *
  */
  
-extern void cmdedit_read_input(char *prompt, char command[BUFSIZ])
+
+int cmdedit_read_input(char *prompt, char command[BUFSIZ])
 {
 
        int break_out = 0;
@@ -1231,10 +1232,15 @@ extern void cmdedit_read_input(char *prompt, char command[BUFSIZ])
                         * if the len=0 and no chars to delete */
                        if (len == 0) {
 prepare_to_die:
+#if !defined(BB_FEATURE_ASH)
                                printf("exit");
                                goto_new_line();
                                /* cmdedit_reset_term() called in atexit */
                                exit(EXIT_SUCCESS);
+#else
+                               break_out = -1; /* for control stoped jobs */
+                               break;
+#endif
                        } else {
                                input_delete();
                        }
@@ -1455,8 +1461,10 @@ prepare_to_die:
                num_ok_lines++;
 #endif
        }
+       if(break_out>0) {
        command[len++] = '\n';          /* set '\n' */
        command[len] = 0;
+       }
 #if defined(BB_FEATURE_CLEAN_UP) && defined(BB_FEATURE_COMMAND_TAB_COMPLETION)
        input_tab(0);                           /* strong free */
 #endif
@@ -1464,6 +1472,7 @@ prepare_to_die:
        free(cmdedit_prompt);
 #endif
        cmdedit_reset_term();
+       return len;
 }
 
 
index 1482da3..8389357 100644 (file)
@@ -1,6 +1,6 @@
 #ifndef CMDEDIT_H
 #define CMDEDIT_H
 
-void cmdedit_read_input(char* promptStr, char* command);               /* read a line of input */
+int     cmdedit_read_input(char* promptStr, char* command);
 
 #endif /* CMDEDIT_H */
index d334c50..8ae70a1 100644 (file)
@@ -346,7 +346,7 @@ static const int IOV_COUNT = 2;
                struct iovec iov[IOV_COUNT];
                struct iovec *v = iov;
 
-               bzero(&res, sizeof(res));
+               memset(&res, 0, sizeof(res));
                snprintf(res, sizeof(res), "<%d>", pri);
                v->iov_base = res ;
                v->iov_len = strlen(res);          
@@ -442,7 +442,7 @@ static void init_RemoteLog (void){
   struct hostent *hostinfo;
   int len = sizeof(remoteaddr);
 
-  bzero(&remoteaddr, len);
+  memset(&remoteaddr, 0, len);
 
   remotefd = socket(AF_INET, SOCK_DGRAM, 0);
 
index d334c50..8ae70a1 100644 (file)
--- a/syslogd.c
+++ b/syslogd.c
@@ -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);
 
index 106cf04..a3af5f6 100644 (file)
@@ -131,40 +131,38 @@ static int nflag;                      /* print addresses numerically */
  * If the nflag has been supplied, give
  * numeric value, otherwise try for symbolic name.
  */
-static inline char *
-inetname(struct in_addr in)
+static inline void
+inetname(struct sockaddr_in *from)
 {
        char *cp;
-       static char line[50];
        struct hostent *hp;
        static char domain[MAXHOSTNAMELEN + 1];
        static int first = 1;
+       const char *ina;
 
        if (first && !nflag) {
                first = 0;
                if (gethostname(domain, MAXHOSTNAMELEN) == 0 &&
-                   (cp = index(domain, '.')))
+                   (cp = strchr(domain, '.')))
                        (void) strcpy(domain, cp + 1);
                else
                        domain[0] = 0;
        }
        cp = 0;
-       if (!nflag && in.s_addr != INADDR_ANY) {
-               hp = gethostbyaddr((char *)&in, sizeof (in), AF_INET);
+       if (!nflag && from->sin_addr.s_addr != INADDR_ANY) {
+               hp = gethostbyaddr((char *)&(from->sin_addr), sizeof (from->sin_addr), AF_INET);
                if (hp) {
-                       if ((cp = index(hp->h_name, '.')) &&
+                       if ((cp = strchr(hp->h_name, '.')) &&
                            !strcmp(cp + 1, domain))
                                *cp = 0;
                        cp = (char *)hp->h_name;
                }
        }
-       if (cp)
-               (void) strcpy(line, cp);
-       else {
-               in.s_addr = ntohl(in.s_addr);
-               strcpy(line, inet_ntoa(in));
-       }
-       return (line);
+       ina = inet_ntoa(from->sin_addr);
+       if (nflag)
+               printf(" %s", ina);
+       else
+               printf(" %s (%s)", (cp ? cp : ina), ina);
 }
 
 static inline void
@@ -177,12 +175,7 @@ print(u_char *buf, int cc, struct sockaddr_in *from)
        hlen = ip->ip_hl << 2;
        cc -= hlen;
 
-       if (nflag)
-               printf(" %s", inet_ntoa(from->sin_addr));
-       else
-               printf(" %s (%s)", inetname(from->sin_addr),
-                      inet_ntoa(from->sin_addr));
-
+       inetname(from);
 #ifdef BB_FEATURE_TRACEROUTE_VERBOSE
        if (verbose)
                printf (" %d bytes to %s", cc, inet_ntoa (ip->ip_dst));
index 9c438bf..eb6091f 100644 (file)
@@ -233,7 +233,7 @@ parse_mount_options(char *options, int *flags, char *strflags)
        }
 }
 
-extern int
+static int
 mount_one(char *blockDevice, char *directory, char *filesystemType,
                  unsigned long flags, char *string_flags, int useMtab, int fakeIt,
                  char *mtab_opts, int whineOnErrors, int mount_all)
diff --git a/vi.c b/vi.c
index 9e33556..f75c884 100644 (file)
--- a/vi.c
+++ b/vi.c
@@ -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: