diff options
| author | Eric Andersen <andersen@codepoet.org> | 2001-07-17 01:12:36 +0000 |
|---|---|---|
| committer | Eric Andersen <andersen@codepoet.org> | 2001-07-17 01:12:36 +0000 |
| commit | 044228d5ecb9b79397f9fc915d046cf4538281e2 (patch) | |
| tree | 4c43e4947b0196d807249f8f6e1c9c679b6bbcde | |
| parent | 51ded05b3bf4df6f126420d39a40d27ea0728aa9 (diff) | |
| download | busybox-w32-044228d5ecb9b79397f9fc915d046cf4538281e2.tar.gz busybox-w32-044228d5ecb9b79397f9fc915d046cf4538281e2.tar.bz2 busybox-w32-044228d5ecb9b79397f9fc915d046cf4538281e2.zip | |
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)
| -rw-r--r-- | archival/libunarchive/decompress_unzip.c | 16 | ||||
| -rw-r--r-- | archival/libunarchive/unzip.c | 16 | ||||
| -rw-r--r-- | ash.c | 7 | ||||
| -rw-r--r-- | cmdedit.c | 11 | ||||
| -rw-r--r-- | cmdedit.h | 2 | ||||
| -rw-r--r-- | editors/vi.c | 4 | ||||
| -rw-r--r-- | insmod.c | 147 | ||||
| -rw-r--r-- | libbb/unzip.c | 16 | ||||
| -rw-r--r-- | modutils/insmod.c | 147 | ||||
| -rw-r--r-- | mount.c | 2 | ||||
| -rw-r--r-- | networking/ping.c | 3 | ||||
| -rw-r--r-- | networking/traceroute.c | 33 | ||||
| -rw-r--r-- | ping.c | 3 | ||||
| -rw-r--r-- | shell/ash.c | 7 | ||||
| -rw-r--r-- | shell/cmdedit.c | 11 | ||||
| -rw-r--r-- | shell/cmdedit.h | 2 | ||||
| -rw-r--r-- | sysklogd/syslogd.c | 4 | ||||
| -rw-r--r-- | syslogd.c | 4 | ||||
| -rw-r--r-- | traceroute.c | 33 | ||||
| -rw-r--r-- | util-linux/mount.c | 2 | ||||
| -rw-r--r-- | vi.c | 4 |
21 files changed, 216 insertions, 258 deletions
diff --git a/archival/libunarchive/decompress_unzip.c b/archival/libunarchive/decompress_unzip.c index 359957196..ee746216d 100644 --- a/archival/libunarchive/decompress_unzip.c +++ b/archival/libunarchive/decompress_unzip.c | |||
| @@ -67,7 +67,7 @@ static char *license_msg[] = { | |||
| 67 | #include <string.h> | 67 | #include <string.h> |
| 68 | #include "libbb.h" | 68 | #include "libbb.h" |
| 69 | 69 | ||
| 70 | FILE *in_file, *out_file; | 70 | static FILE *in_file, *out_file; |
| 71 | 71 | ||
| 72 | /* these are freed by gz_close */ | 72 | /* these are freed by gz_close */ |
| 73 | static unsigned char *window; | 73 | static unsigned char *window; |
| @@ -91,9 +91,9 @@ static const int N_MAX = 288; /* maximum number of codes in any set */ | |||
| 91 | static long bytes_out; /* number of output bytes */ | 91 | static long bytes_out; /* number of output bytes */ |
| 92 | static unsigned long outcnt; /* bytes in output buffer */ | 92 | static unsigned long outcnt; /* bytes in output buffer */ |
| 93 | 93 | ||
| 94 | unsigned hufts; /* track memory usage */ | 94 | static unsigned hufts; /* track memory usage */ |
| 95 | unsigned long bb; /* bit buffer */ | 95 | static unsigned long bb; /* bit buffer */ |
| 96 | unsigned bk; /* bits in bit buffer */ | 96 | static unsigned bk; /* bits in bit buffer */ |
| 97 | 97 | ||
| 98 | typedef struct huft_s { | 98 | typedef struct huft_s { |
| 99 | unsigned char e; /* number of extra bits or operation */ | 99 | unsigned char e; /* number of extra bits or operation */ |
| @@ -104,7 +104,7 @@ typedef struct huft_s { | |||
| 104 | } v; | 104 | } v; |
| 105 | } huft_t; | 105 | } huft_t; |
| 106 | 106 | ||
| 107 | unsigned short mask_bits[] = { | 107 | static const unsigned short mask_bits[] = { |
| 108 | 0x0000, | 108 | 0x0000, |
| 109 | 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, | 109 | 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, |
| 110 | 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff | 110 | 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff |
| @@ -154,7 +154,7 @@ static void make_crc_table() | |||
| 154 | * Write the output window window[0..outcnt-1] and update crc and bytes_out. | 154 | * Write the output window window[0..outcnt-1] and update crc and bytes_out. |
| 155 | * (Used for the decompressed data only.) | 155 | * (Used for the decompressed data only.) |
| 156 | */ | 156 | */ |
| 157 | void flush_window() | 157 | static void flush_window(void) |
| 158 | { | 158 | { |
| 159 | int n; | 159 | int n; |
| 160 | 160 | ||
| @@ -1021,10 +1021,6 @@ extern void gz_close(int gunzip_pid) | |||
| 1021 | if (waitpid(gunzip_pid, NULL, 0) == -1) { | 1021 | if (waitpid(gunzip_pid, NULL, 0) == -1) { |
| 1022 | printf("Couldnt wait ?"); | 1022 | printf("Couldnt wait ?"); |
| 1023 | } | 1023 | } |
| 1024 | if (window) { | ||
| 1025 | free(window); | 1024 | free(window); |
| 1026 | } | ||
| 1027 | if (crc_table) { | ||
| 1028 | free(crc_table); | 1025 | free(crc_table); |
| 1029 | } | ||
| 1030 | } | 1026 | } |
diff --git a/archival/libunarchive/unzip.c b/archival/libunarchive/unzip.c index 359957196..ee746216d 100644 --- a/archival/libunarchive/unzip.c +++ b/archival/libunarchive/unzip.c | |||
| @@ -67,7 +67,7 @@ static char *license_msg[] = { | |||
| 67 | #include <string.h> | 67 | #include <string.h> |
| 68 | #include "libbb.h" | 68 | #include "libbb.h" |
| 69 | 69 | ||
| 70 | FILE *in_file, *out_file; | 70 | static FILE *in_file, *out_file; |
| 71 | 71 | ||
| 72 | /* these are freed by gz_close */ | 72 | /* these are freed by gz_close */ |
| 73 | static unsigned char *window; | 73 | static unsigned char *window; |
| @@ -91,9 +91,9 @@ static const int N_MAX = 288; /* maximum number of codes in any set */ | |||
| 91 | static long bytes_out; /* number of output bytes */ | 91 | static long bytes_out; /* number of output bytes */ |
| 92 | static unsigned long outcnt; /* bytes in output buffer */ | 92 | static unsigned long outcnt; /* bytes in output buffer */ |
| 93 | 93 | ||
| 94 | unsigned hufts; /* track memory usage */ | 94 | static unsigned hufts; /* track memory usage */ |
| 95 | unsigned long bb; /* bit buffer */ | 95 | static unsigned long bb; /* bit buffer */ |
| 96 | unsigned bk; /* bits in bit buffer */ | 96 | static unsigned bk; /* bits in bit buffer */ |
| 97 | 97 | ||
| 98 | typedef struct huft_s { | 98 | typedef struct huft_s { |
| 99 | unsigned char e; /* number of extra bits or operation */ | 99 | unsigned char e; /* number of extra bits or operation */ |
| @@ -104,7 +104,7 @@ typedef struct huft_s { | |||
| 104 | } v; | 104 | } v; |
| 105 | } huft_t; | 105 | } huft_t; |
| 106 | 106 | ||
| 107 | unsigned short mask_bits[] = { | 107 | static const unsigned short mask_bits[] = { |
| 108 | 0x0000, | 108 | 0x0000, |
| 109 | 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, | 109 | 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, |
| 110 | 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff | 110 | 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff |
| @@ -154,7 +154,7 @@ static void make_crc_table() | |||
| 154 | * Write the output window window[0..outcnt-1] and update crc and bytes_out. | 154 | * Write the output window window[0..outcnt-1] and update crc and bytes_out. |
| 155 | * (Used for the decompressed data only.) | 155 | * (Used for the decompressed data only.) |
| 156 | */ | 156 | */ |
| 157 | void flush_window() | 157 | static void flush_window(void) |
| 158 | { | 158 | { |
| 159 | int n; | 159 | int n; |
| 160 | 160 | ||
| @@ -1021,10 +1021,6 @@ extern void gz_close(int gunzip_pid) | |||
| 1021 | if (waitpid(gunzip_pid, NULL, 0) == -1) { | 1021 | if (waitpid(gunzip_pid, NULL, 0) == -1) { |
| 1022 | printf("Couldnt wait ?"); | 1022 | printf("Couldnt wait ?"); |
| 1023 | } | 1023 | } |
| 1024 | if (window) { | ||
| 1025 | free(window); | 1024 | free(window); |
| 1026 | } | ||
| 1027 | if (crc_table) { | ||
| 1028 | free(crc_table); | 1025 | free(crc_table); |
| 1029 | } | ||
| 1030 | } | 1026 | } |
| @@ -6204,8 +6204,7 @@ retry: | |||
| 6204 | if (!iflag) | 6204 | if (!iflag) |
| 6205 | nr = safe_read(parsefile->fd, buf, BUFSIZ - 1); | 6205 | nr = safe_read(parsefile->fd, buf, BUFSIZ - 1); |
| 6206 | else { | 6206 | else { |
| 6207 | cmdedit_read_input((char*)cmdedit_prompt, buf); | 6207 | nr = cmdedit_read_input((char*)cmdedit_prompt, buf); |
| 6208 | nr = strlen(buf); | ||
| 6209 | } | 6208 | } |
| 6210 | } | 6209 | } |
| 6211 | #else | 6210 | #else |
| @@ -9445,7 +9444,7 @@ static char *wordtext; /* text of last word returned by readtok | |||
| 9445 | 9444 | ||
| 9446 | static struct nodelist *backquotelist; | 9445 | static struct nodelist *backquotelist; |
| 9447 | static union node *redirnode; | 9446 | static union node *redirnode; |
| 9448 | struct heredoc *heredoc; | 9447 | static struct heredoc *heredoc; |
| 9449 | static int quoteflag; /* set if (part of) last token was quoted */ | 9448 | static int quoteflag; /* set if (part of) last token was quoted */ |
| 9450 | static int startlinno; /* line # where last token started */ | 9449 | static int startlinno; /* line # where last token started */ |
| 9451 | 9450 | ||
| @@ -12917,7 +12916,7 @@ findvar(struct var **vpp, const char *name) | |||
| 12917 | /* | 12916 | /* |
| 12918 | * Copyright (c) 1999 Herbert Xu <herbert@debian.org> | 12917 | * Copyright (c) 1999 Herbert Xu <herbert@debian.org> |
| 12919 | * This file contains code for the times builtin. | 12918 | * This file contains code for the times builtin. |
| 12920 | * $Id: ash.c,v 1.10 2001/07/12 20:26:31 andersen Exp $ | 12919 | * $Id: ash.c,v 1.11 2001/07/17 01:12:35 andersen Exp $ |
| 12921 | */ | 12920 | */ |
| 12922 | static int timescmd (int argc, char **argv) | 12921 | static int timescmd (int argc, char **argv) |
| 12923 | { | 12922 | { |
| @@ -1153,7 +1153,8 @@ enum { | |||
| 1153 | * | 1153 | * |
| 1154 | */ | 1154 | */ |
| 1155 | 1155 | ||
| 1156 | extern void cmdedit_read_input(char *prompt, char command[BUFSIZ]) | 1156 | |
| 1157 | int cmdedit_read_input(char *prompt, char command[BUFSIZ]) | ||
| 1157 | { | 1158 | { |
| 1158 | 1159 | ||
| 1159 | int break_out = 0; | 1160 | int break_out = 0; |
| @@ -1231,10 +1232,15 @@ extern void cmdedit_read_input(char *prompt, char command[BUFSIZ]) | |||
| 1231 | * if the len=0 and no chars to delete */ | 1232 | * if the len=0 and no chars to delete */ |
| 1232 | if (len == 0) { | 1233 | if (len == 0) { |
| 1233 | prepare_to_die: | 1234 | prepare_to_die: |
| 1235 | #if !defined(BB_FEATURE_ASH) | ||
| 1234 | printf("exit"); | 1236 | printf("exit"); |
| 1235 | goto_new_line(); | 1237 | goto_new_line(); |
| 1236 | /* cmdedit_reset_term() called in atexit */ | 1238 | /* cmdedit_reset_term() called in atexit */ |
| 1237 | exit(EXIT_SUCCESS); | 1239 | exit(EXIT_SUCCESS); |
| 1240 | #else | ||
| 1241 | break_out = -1; /* for control stoped jobs */ | ||
| 1242 | break; | ||
| 1243 | #endif | ||
| 1238 | } else { | 1244 | } else { |
| 1239 | input_delete(); | 1245 | input_delete(); |
| 1240 | } | 1246 | } |
| @@ -1455,8 +1461,10 @@ prepare_to_die: | |||
| 1455 | num_ok_lines++; | 1461 | num_ok_lines++; |
| 1456 | #endif | 1462 | #endif |
| 1457 | } | 1463 | } |
| 1464 | if(break_out>0) { | ||
| 1458 | command[len++] = '\n'; /* set '\n' */ | 1465 | command[len++] = '\n'; /* set '\n' */ |
| 1459 | command[len] = 0; | 1466 | command[len] = 0; |
| 1467 | } | ||
| 1460 | #if defined(BB_FEATURE_CLEAN_UP) && defined(BB_FEATURE_COMMAND_TAB_COMPLETION) | 1468 | #if defined(BB_FEATURE_CLEAN_UP) && defined(BB_FEATURE_COMMAND_TAB_COMPLETION) |
| 1461 | input_tab(0); /* strong free */ | 1469 | input_tab(0); /* strong free */ |
| 1462 | #endif | 1470 | #endif |
| @@ -1464,6 +1472,7 @@ prepare_to_die: | |||
| 1464 | free(cmdedit_prompt); | 1472 | free(cmdedit_prompt); |
| 1465 | #endif | 1473 | #endif |
| 1466 | cmdedit_reset_term(); | 1474 | cmdedit_reset_term(); |
| 1475 | return len; | ||
| 1467 | } | 1476 | } |
| 1468 | 1477 | ||
| 1469 | 1478 | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | #ifndef CMDEDIT_H | 1 | #ifndef CMDEDIT_H |
| 2 | #define CMDEDIT_H | 2 | #define CMDEDIT_H |
| 3 | 3 | ||
| 4 | void cmdedit_read_input(char* promptStr, char* command); /* read a line of input */ | 4 | int cmdedit_read_input(char* promptStr, char* command); |
| 5 | 5 | ||
| 6 | #endif /* CMDEDIT_H */ | 6 | #endif /* CMDEDIT_H */ |
diff --git a/editors/vi.c b/editors/vi.c index 9e3355685..f75c884eb 100644 --- a/editors/vi.c +++ b/editors/vi.c | |||
| @@ -18,8 +18,8 @@ | |||
| 18 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 18 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
| 19 | */ | 19 | */ |
| 20 | 20 | ||
| 21 | char *vi_Version = | 21 | static const char vi_Version[] = |
| 22 | "$Id: vi.c,v 1.11 2001/07/02 18:06:14 andersen Exp $"; | 22 | "$Id: vi.c,v 1.12 2001/07/17 01:12:36 andersen Exp $"; |
| 23 | 23 | ||
| 24 | /* | 24 | /* |
| 25 | * To compile for standalone use: | 25 | * To compile for standalone use: |
| @@ -130,7 +130,7 @@ | |||
| 130 | #ifndef MODUTILS_MODULE_H | 130 | #ifndef MODUTILS_MODULE_H |
| 131 | static const int MODUTILS_MODULE_H = 1; | 131 | static const int MODUTILS_MODULE_H = 1; |
| 132 | 132 | ||
| 133 | #ident "$Id: insmod.c,v 1.67 2001/06/28 21:36:06 andersen Exp $" | 133 | #ident "$Id: insmod.c,v 1.68 2001/07/17 01:12:36 andersen Exp $" |
| 134 | 134 | ||
| 135 | /* This file contains the structures used by the 2.0 and 2.1 kernels. | 135 | /* This file contains the structures used by the 2.0 and 2.1 kernels. |
| 136 | We do not use the kernel headers directly because we do not wish | 136 | We do not use the kernel headers directly because we do not wish |
| @@ -347,7 +347,7 @@ int delete_module(const char *); | |||
| 347 | #ifndef MODUTILS_OBJ_H | 347 | #ifndef MODUTILS_OBJ_H |
| 348 | static const int MODUTILS_OBJ_H = 1; | 348 | static const int MODUTILS_OBJ_H = 1; |
| 349 | 349 | ||
| 350 | #ident "$Id: insmod.c,v 1.67 2001/06/28 21:36:06 andersen Exp $" | 350 | #ident "$Id: insmod.c,v 1.68 2001/07/17 01:12:36 andersen Exp $" |
| 351 | 351 | ||
| 352 | /* The relocatable object is manipulated using elfin types. */ | 352 | /* The relocatable object is manipulated using elfin types. */ |
| 353 | 353 | ||
| @@ -537,78 +537,73 @@ struct obj_symbol_patch | |||
| 537 | 537 | ||
| 538 | /* Generic object manipulation routines. */ | 538 | /* Generic object manipulation routines. */ |
| 539 | 539 | ||
| 540 | unsigned long obj_elf_hash(const char *); | 540 | static unsigned long obj_elf_hash(const char *); |
| 541 | 541 | ||
| 542 | unsigned long obj_elf_hash_n(const char *, unsigned long len); | 542 | static unsigned long obj_elf_hash_n(const char *, unsigned long len); |
| 543 | 543 | ||
| 544 | struct obj_symbol *obj_add_symbol (struct obj_file *f, const char *name, | 544 | static struct obj_symbol *obj_find_symbol (struct obj_file *f, |
| 545 | unsigned long symidx, int info, int secidx, | ||
| 546 | ElfW(Addr) value, unsigned long size); | ||
| 547 | |||
| 548 | struct obj_symbol *obj_find_symbol (struct obj_file *f, | ||
| 549 | const char *name); | 545 | const char *name); |
| 550 | 546 | ||
| 551 | ElfW(Addr) obj_symbol_final_value(struct obj_file *f, | 547 | static ElfW(Addr) obj_symbol_final_value(struct obj_file *f, |
| 552 | struct obj_symbol *sym); | 548 | struct obj_symbol *sym); |
| 553 | 549 | ||
| 554 | void obj_set_symbol_compare(struct obj_file *f, | 550 | static void obj_set_symbol_compare(struct obj_file *f, |
| 555 | int (*cmp)(const char *, const char *), | 551 | int (*cmp)(const char *, const char *), |
| 556 | unsigned long (*hash)(const char *)); | 552 | unsigned long (*hash)(const char *)); |
| 557 | 553 | ||
| 558 | struct obj_section *obj_find_section (struct obj_file *f, | 554 | static struct obj_section *obj_find_section (struct obj_file *f, |
| 559 | const char *name); | 555 | const char *name); |
| 560 | 556 | ||
| 561 | void obj_insert_section_load_order (struct obj_file *f, | 557 | static void obj_insert_section_load_order (struct obj_file *f, |
| 562 | struct obj_section *sec); | 558 | struct obj_section *sec); |
| 563 | 559 | ||
| 564 | struct obj_section *obj_create_alloced_section (struct obj_file *f, | 560 | static struct obj_section *obj_create_alloced_section (struct obj_file *f, |
| 565 | const char *name, | 561 | const char *name, |
| 566 | unsigned long align, | 562 | unsigned long align, |
| 567 | unsigned long size); | 563 | unsigned long size); |
| 568 | 564 | ||
| 569 | struct obj_section *obj_create_alloced_section_first (struct obj_file *f, | 565 | static struct obj_section *obj_create_alloced_section_first (struct obj_file *f, |
| 570 | const char *name, | 566 | const char *name, |
| 571 | unsigned long align, | 567 | unsigned long align, |
| 572 | unsigned long size); | 568 | unsigned long size); |
| 573 | 569 | ||
| 574 | void *obj_extend_section (struct obj_section *sec, unsigned long more); | 570 | static void *obj_extend_section (struct obj_section *sec, unsigned long more); |
| 575 | 571 | ||
| 576 | int obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, | 572 | static int obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, |
| 577 | const char *string); | 573 | const char *string); |
| 578 | 574 | ||
| 579 | int obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, | 575 | static int obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, |
| 580 | struct obj_symbol *sym); | 576 | struct obj_symbol *sym); |
| 581 | 577 | ||
| 582 | int obj_check_undefineds(struct obj_file *f); | 578 | static int obj_check_undefineds(struct obj_file *f); |
| 583 | 579 | ||
| 584 | void obj_allocate_commons(struct obj_file *f); | 580 | static void obj_allocate_commons(struct obj_file *f); |
| 585 | 581 | ||
| 586 | unsigned long obj_load_size (struct obj_file *f); | 582 | static unsigned long obj_load_size (struct obj_file *f); |
| 587 | 583 | ||
| 588 | int obj_relocate (struct obj_file *f, ElfW(Addr) base); | 584 | static int obj_relocate (struct obj_file *f, ElfW(Addr) base); |
| 589 | 585 | ||
| 590 | struct obj_file *obj_load(FILE *f, int loadprogbits); | 586 | static struct obj_file *obj_load(FILE *f, int loadprogbits); |
| 591 | 587 | ||
| 592 | int obj_create_image (struct obj_file *f, char *image); | 588 | static int obj_create_image (struct obj_file *f, char *image); |
| 593 | 589 | ||
| 594 | /* Architecture specific manipulation routines. */ | 590 | /* Architecture specific manipulation routines. */ |
| 595 | 591 | ||
| 596 | struct obj_file *arch_new_file (void); | 592 | static struct obj_file *arch_new_file (void); |
| 597 | 593 | ||
| 598 | struct obj_section *arch_new_section (void); | 594 | static struct obj_section *arch_new_section (void); |
| 599 | 595 | ||
| 600 | struct obj_symbol *arch_new_symbol (void); | 596 | static struct obj_symbol *arch_new_symbol (void); |
| 601 | 597 | ||
| 602 | enum obj_reloc arch_apply_relocation (struct obj_file *f, | 598 | static enum obj_reloc arch_apply_relocation (struct obj_file *f, |
| 603 | struct obj_section *targsec, | 599 | struct obj_section *targsec, |
| 604 | struct obj_section *symsec, | 600 | struct obj_section *symsec, |
| 605 | struct obj_symbol *sym, | 601 | struct obj_symbol *sym, |
| 606 | ElfW(RelM) *rel, ElfW(Addr) value); | 602 | ElfW(RelM) *rel, ElfW(Addr) value); |
| 607 | 603 | ||
| 608 | int arch_create_got (struct obj_file *f); | 604 | static int arch_create_got (struct obj_file *f); |
| 609 | 605 | ||
| 610 | struct new_module; | 606 | static int arch_init_module (struct obj_file *f, struct new_module *); |
| 611 | int arch_init_module (struct obj_file *f, struct new_module *); | ||
| 612 | 607 | ||
| 613 | #endif /* obj.h */ | 608 | #endif /* obj.h */ |
| 614 | //---------------------------------------------------------------------------- | 609 | //---------------------------------------------------------------------------- |
| @@ -624,10 +619,10 @@ static const int STRVERSIONLEN = 32; | |||
| 624 | 619 | ||
| 625 | /*======================================================================*/ | 620 | /*======================================================================*/ |
| 626 | 621 | ||
| 627 | int flag_force_load = 0; | 622 | static int flag_force_load = 0; |
| 628 | int flag_autoclean = 0; | 623 | static int flag_autoclean = 0; |
| 629 | int flag_verbose = 0; | 624 | static int flag_verbose = 0; |
| 630 | int flag_export = 1; | 625 | static int flag_export = 1; |
| 631 | 626 | ||
| 632 | 627 | ||
| 633 | /*======================================================================*/ | 628 | /*======================================================================*/ |
| @@ -700,12 +695,12 @@ struct external_module { | |||
| 700 | struct new_module_symbol *syms; | 695 | struct new_module_symbol *syms; |
| 701 | }; | 696 | }; |
| 702 | 697 | ||
| 703 | struct new_module_symbol *ksyms; | 698 | static struct new_module_symbol *ksyms; |
| 704 | size_t nksyms; | 699 | static size_t nksyms; |
| 705 | 700 | ||
| 706 | struct external_module *ext_modules; | 701 | static struct external_module *ext_modules; |
| 707 | int n_ext_modules; | 702 | static int n_ext_modules; |
| 708 | int n_ext_modules_used; | 703 | static int n_ext_modules_used; |
| 709 | extern int delete_module(const char *); | 704 | extern int delete_module(const char *); |
| 710 | 705 | ||
| 711 | static char m_filename[FILENAME_MAX + 1]; | 706 | static char m_filename[FILENAME_MAX + 1]; |
| @@ -740,7 +735,7 @@ static int check_module_name_match(const char *filename, struct stat *statbuf, | |||
| 740 | 735 | ||
| 741 | /*======================================================================*/ | 736 | /*======================================================================*/ |
| 742 | 737 | ||
| 743 | struct obj_file *arch_new_file(void) | 738 | static struct obj_file *arch_new_file(void) |
| 744 | { | 739 | { |
| 745 | struct arch_file *f; | 740 | struct arch_file *f; |
| 746 | f = xmalloc(sizeof(*f)); | 741 | f = xmalloc(sizeof(*f)); |
| @@ -758,12 +753,12 @@ struct obj_file *arch_new_file(void) | |||
| 758 | return &f->root; | 753 | return &f->root; |
| 759 | } | 754 | } |
| 760 | 755 | ||
| 761 | struct obj_section *arch_new_section(void) | 756 | static struct obj_section *arch_new_section(void) |
| 762 | { | 757 | { |
| 763 | return xmalloc(sizeof(struct obj_section)); | 758 | return xmalloc(sizeof(struct obj_section)); |
| 764 | } | 759 | } |
| 765 | 760 | ||
| 766 | struct obj_symbol *arch_new_symbol(void) | 761 | static struct obj_symbol *arch_new_symbol(void) |
| 767 | { | 762 | { |
| 768 | struct arch_symbol *sym; | 763 | struct arch_symbol *sym; |
| 769 | sym = xmalloc(sizeof(*sym)); | 764 | sym = xmalloc(sizeof(*sym)); |
| @@ -778,7 +773,7 @@ struct obj_symbol *arch_new_symbol(void) | |||
| 778 | return &sym->root; | 773 | return &sym->root; |
| 779 | } | 774 | } |
| 780 | 775 | ||
| 781 | enum obj_reloc | 776 | static enum obj_reloc |
| 782 | arch_apply_relocation(struct obj_file *f, | 777 | arch_apply_relocation(struct obj_file *f, |
| 783 | struct obj_section *targsec, | 778 | struct obj_section *targsec, |
| 784 | struct obj_section *symsec, | 779 | struct obj_section *symsec, |
| @@ -1140,7 +1135,7 @@ arch_apply_relocation(struct obj_file *f, | |||
| 1140 | return ret; | 1135 | return ret; |
| 1141 | } | 1136 | } |
| 1142 | 1137 | ||
| 1143 | int arch_create_got(struct obj_file *f) | 1138 | static int arch_create_got(struct obj_file *f) |
| 1144 | { | 1139 | { |
| 1145 | #if defined(BB_USE_GOT_ENTRIES) || defined(BB_USE_PLT_ENTRIES) | 1140 | #if defined(BB_USE_GOT_ENTRIES) || defined(BB_USE_PLT_ENTRIES) |
| 1146 | struct arch_file *ifile = (struct arch_file *) f; | 1141 | struct arch_file *ifile = (struct arch_file *) f; |
| @@ -1271,7 +1266,7 @@ int arch_create_got(struct obj_file *f) | |||
| 1271 | return 1; | 1266 | return 1; |
| 1272 | } | 1267 | } |
| 1273 | 1268 | ||
| 1274 | int arch_init_module(struct obj_file *f, struct new_module *mod) | 1269 | static int arch_init_module(struct obj_file *f, struct new_module *mod) |
| 1275 | { | 1270 | { |
| 1276 | return 1; | 1271 | return 1; |
| 1277 | } | 1272 | } |
| @@ -1280,7 +1275,7 @@ int arch_init_module(struct obj_file *f, struct new_module *mod) | |||
| 1280 | /*======================================================================*/ | 1275 | /*======================================================================*/ |
| 1281 | 1276 | ||
| 1282 | /* Standard ELF hash function. */ | 1277 | /* Standard ELF hash function. */ |
| 1283 | inline unsigned long obj_elf_hash_n(const char *name, unsigned long n) | 1278 | static inline unsigned long obj_elf_hash_n(const char *name, unsigned long n) |
| 1284 | { | 1279 | { |
| 1285 | unsigned long h = 0; | 1280 | unsigned long h = 0; |
| 1286 | unsigned long g; | 1281 | unsigned long g; |
| @@ -1298,7 +1293,7 @@ inline unsigned long obj_elf_hash_n(const char *name, unsigned long n) | |||
| 1298 | return h; | 1293 | return h; |
| 1299 | } | 1294 | } |
| 1300 | 1295 | ||
| 1301 | unsigned long obj_elf_hash(const char *name) | 1296 | static unsigned long obj_elf_hash(const char *name) |
| 1302 | { | 1297 | { |
| 1303 | return obj_elf_hash_n(name, strlen(name)); | 1298 | return obj_elf_hash_n(name, strlen(name)); |
| 1304 | } | 1299 | } |
| @@ -1309,25 +1304,15 @@ unsigned long obj_elf_hash(const char *name) | |||
| 1309 | static int get_kernel_version(char str[STRVERSIONLEN]) | 1304 | static int get_kernel_version(char str[STRVERSIONLEN]) |
| 1310 | { | 1305 | { |
| 1311 | struct utsname uts_info; | 1306 | struct utsname uts_info; |
| 1312 | char *p, *q; | 1307 | int kv; |
| 1313 | int a, b, c; | ||
| 1314 | 1308 | ||
| 1315 | if (uname(&uts_info) < 0) | 1309 | if (uname(&uts_info) < 0) |
| 1316 | return -1; | 1310 | return -1; |
| 1317 | strncpy(str, uts_info.release, STRVERSIONLEN); | 1311 | strncpy(str, uts_info.release, STRVERSIONLEN); |
| 1318 | p = uts_info.release; | ||
| 1319 | 1312 | ||
| 1320 | a = strtoul(p, &p, 10); | 1313 | kv = get_kernel_revision(); |
| 1321 | if (*p != '.') | 1314 | if(kv==0) |
| 1322 | return -1; | ||
| 1323 | b = strtoul(p + 1, &p, 10); | ||
| 1324 | if (*p != '.') | ||
| 1325 | return -1; | 1315 | return -1; |
| 1326 | c = strtoul(p + 1, &q, 10); | ||
| 1327 | if (p + 1 == q) | ||
| 1328 | return -1; | ||
| 1329 | |||
| 1330 | return a << 16 | b << 8 | c; | ||
| 1331 | } | 1316 | } |
| 1332 | 1317 | ||
| 1333 | /* String comparison for non-co-versioned kernel and module. */ | 1318 | /* String comparison for non-co-versioned kernel and module. */ |
| @@ -1355,7 +1340,7 @@ static unsigned long ncv_symbol_hash(const char *str) | |||
| 1355 | return obj_elf_hash_n(str, len); | 1340 | return obj_elf_hash_n(str, len); |
| 1356 | } | 1341 | } |
| 1357 | 1342 | ||
| 1358 | void | 1343 | static void |
| 1359 | obj_set_symbol_compare(struct obj_file *f, | 1344 | obj_set_symbol_compare(struct obj_file *f, |
| 1360 | int (*cmp) (const char *, const char *), | 1345 | int (*cmp) (const char *, const char *), |
| 1361 | unsigned long (*hash) (const char *)) | 1346 | unsigned long (*hash) (const char *)) |
| @@ -1383,8 +1368,8 @@ obj_set_symbol_compare(struct obj_file *f, | |||
| 1383 | 1368 | ||
| 1384 | #endif /* BB_FEATURE_INSMOD_VERSION_CHECKING */ | 1369 | #endif /* BB_FEATURE_INSMOD_VERSION_CHECKING */ |
| 1385 | 1370 | ||
| 1386 | 1371 | static struct obj_symbol * | |
| 1387 | struct obj_symbol *obj_add_symbol(struct obj_file *f, const char *name, | 1372 | obj_add_symbol(struct obj_file *f, const char *name, |
| 1388 | unsigned long symidx, int info, | 1373 | unsigned long symidx, int info, |
| 1389 | int secidx, ElfW(Addr) value, | 1374 | int secidx, ElfW(Addr) value, |
| 1390 | unsigned long size) | 1375 | unsigned long size) |
| @@ -1478,7 +1463,8 @@ struct obj_symbol *obj_add_symbol(struct obj_file *f, const char *name, | |||
| 1478 | return sym; | 1463 | return sym; |
| 1479 | } | 1464 | } |
| 1480 | 1465 | ||
| 1481 | struct obj_symbol *obj_find_symbol(struct obj_file *f, const char *name) | 1466 | static struct obj_symbol * |
| 1467 | obj_find_symbol(struct obj_file *f, const char *name) | ||
| 1482 | { | 1468 | { |
| 1483 | struct obj_symbol *sym; | 1469 | struct obj_symbol *sym; |
| 1484 | unsigned long hash = f->symbol_hash(name) % HASH_BUCKETS; | 1470 | 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) | |||
| 1490 | return NULL; | 1476 | return NULL; |
| 1491 | } | 1477 | } |
| 1492 | 1478 | ||
| 1493 | ElfW(Addr) | 1479 | static ElfW(Addr) |
| 1494 | obj_symbol_final_value(struct obj_file * f, struct obj_symbol * sym) | 1480 | obj_symbol_final_value(struct obj_file * f, struct obj_symbol * sym) |
| 1495 | { | 1481 | { |
| 1496 | if (sym) { | 1482 | if (sym) { |
| @@ -1504,7 +1490,7 @@ ElfW(Addr) | |||
| 1504 | } | 1490 | } |
| 1505 | } | 1491 | } |
| 1506 | 1492 | ||
| 1507 | struct obj_section *obj_find_section(struct obj_file *f, const char *name) | 1493 | static struct obj_section *obj_find_section(struct obj_file *f, const char *name) |
| 1508 | { | 1494 | { |
| 1509 | int i, n = f->header.e_shnum; | 1495 | int i, n = f->header.e_shnum; |
| 1510 | 1496 | ||
| @@ -1537,7 +1523,7 @@ static int obj_load_order_prio(struct obj_section *a) | |||
| 1537 | return ac; | 1523 | return ac; |
| 1538 | } | 1524 | } |
| 1539 | 1525 | ||
| 1540 | void | 1526 | static void |
| 1541 | obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec) | 1527 | obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec) |
| 1542 | { | 1528 | { |
| 1543 | struct obj_section **p; | 1529 | struct obj_section **p; |
| @@ -1549,7 +1535,7 @@ obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec) | |||
| 1549 | *p = sec; | 1535 | *p = sec; |
| 1550 | } | 1536 | } |
| 1551 | 1537 | ||
| 1552 | struct obj_section *obj_create_alloced_section(struct obj_file *f, | 1538 | static struct obj_section *obj_create_alloced_section(struct obj_file *f, |
| 1553 | const char *name, | 1539 | const char *name, |
| 1554 | unsigned long align, | 1540 | unsigned long align, |
| 1555 | unsigned long size) | 1541 | unsigned long size) |
| @@ -1575,7 +1561,7 @@ struct obj_section *obj_create_alloced_section(struct obj_file *f, | |||
| 1575 | return sec; | 1561 | return sec; |
| 1576 | } | 1562 | } |
| 1577 | 1563 | ||
| 1578 | struct obj_section *obj_create_alloced_section_first(struct obj_file *f, | 1564 | static struct obj_section *obj_create_alloced_section_first(struct obj_file *f, |
| 1579 | const char *name, | 1565 | const char *name, |
| 1580 | unsigned long align, | 1566 | unsigned long align, |
| 1581 | unsigned long size) | 1567 | unsigned long size) |
| @@ -1604,7 +1590,7 @@ struct obj_section *obj_create_alloced_section_first(struct obj_file *f, | |||
| 1604 | return sec; | 1590 | return sec; |
| 1605 | } | 1591 | } |
| 1606 | 1592 | ||
| 1607 | void *obj_extend_section(struct obj_section *sec, unsigned long more) | 1593 | static void *obj_extend_section(struct obj_section *sec, unsigned long more) |
| 1608 | { | 1594 | { |
| 1609 | unsigned long oldsize = sec->header.sh_size; | 1595 | unsigned long oldsize = sec->header.sh_size; |
| 1610 | if (more) { | 1596 | if (more) { |
| @@ -1614,7 +1600,6 @@ void *obj_extend_section(struct obj_section *sec, unsigned long more) | |||
| 1614 | } | 1600 | } |
| 1615 | 1601 | ||
| 1616 | 1602 | ||
| 1617 | |||
| 1618 | /* Conditionally add the symbols from the given symbol set to the | 1603 | /* Conditionally add the symbols from the given symbol set to the |
| 1619 | new module. */ | 1604 | new module. */ |
| 1620 | 1605 | ||
| @@ -2631,7 +2616,7 @@ new_init_module(const char *m_name, struct obj_file *f, | |||
| 2631 | 2616 | ||
| 2632 | /*======================================================================*/ | 2617 | /*======================================================================*/ |
| 2633 | 2618 | ||
| 2634 | int | 2619 | static int |
| 2635 | obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, | 2620 | obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, |
| 2636 | const char *string) | 2621 | const char *string) |
| 2637 | { | 2622 | { |
| @@ -2660,7 +2645,7 @@ obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, | |||
| 2660 | return 1; | 2645 | return 1; |
| 2661 | } | 2646 | } |
| 2662 | 2647 | ||
| 2663 | int | 2648 | static int |
| 2664 | obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, | 2649 | obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, |
| 2665 | struct obj_symbol *sym) | 2650 | struct obj_symbol *sym) |
| 2666 | { | 2651 | { |
| @@ -2676,7 +2661,7 @@ obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, | |||
| 2676 | return 1; | 2661 | return 1; |
| 2677 | } | 2662 | } |
| 2678 | 2663 | ||
| 2679 | int obj_check_undefineds(struct obj_file *f) | 2664 | static int obj_check_undefineds(struct obj_file *f) |
| 2680 | { | 2665 | { |
| 2681 | unsigned long i; | 2666 | unsigned long i; |
| 2682 | int ret = 1; | 2667 | int ret = 1; |
| @@ -2698,7 +2683,7 @@ int obj_check_undefineds(struct obj_file *f) | |||
| 2698 | return ret; | 2683 | return ret; |
| 2699 | } | 2684 | } |
| 2700 | 2685 | ||
| 2701 | void obj_allocate_commons(struct obj_file *f) | 2686 | static void obj_allocate_commons(struct obj_file *f) |
| 2702 | { | 2687 | { |
| 2703 | struct common_entry { | 2688 | struct common_entry { |
| 2704 | struct common_entry *next; | 2689 | struct common_entry *next; |
| @@ -2807,7 +2792,7 @@ void obj_allocate_commons(struct obj_file *f) | |||
| 2807 | } | 2792 | } |
| 2808 | } | 2793 | } |
| 2809 | 2794 | ||
| 2810 | unsigned long obj_load_size(struct obj_file *f) | 2795 | static unsigned long obj_load_size(struct obj_file *f) |
| 2811 | { | 2796 | { |
| 2812 | unsigned long dot = 0; | 2797 | unsigned long dot = 0; |
| 2813 | struct obj_section *sec; | 2798 | struct obj_section *sec; |
| @@ -2828,7 +2813,7 @@ unsigned long obj_load_size(struct obj_file *f) | |||
| 2828 | return dot; | 2813 | return dot; |
| 2829 | } | 2814 | } |
| 2830 | 2815 | ||
| 2831 | int obj_relocate(struct obj_file *f, ElfW(Addr) base) | 2816 | static int obj_relocate(struct obj_file *f, ElfW(Addr) base) |
| 2832 | { | 2817 | { |
| 2833 | int i, n = f->header.e_shnum; | 2818 | int i, n = f->header.e_shnum; |
| 2834 | int ret = 1; | 2819 | int ret = 1; |
| @@ -2958,7 +2943,7 @@ int obj_relocate(struct obj_file *f, ElfW(Addr) base) | |||
| 2958 | return ret; | 2943 | return ret; |
| 2959 | } | 2944 | } |
| 2960 | 2945 | ||
| 2961 | int obj_create_image(struct obj_file *f, char *image) | 2946 | static int obj_create_image(struct obj_file *f, char *image) |
| 2962 | { | 2947 | { |
| 2963 | struct obj_section *sec; | 2948 | struct obj_section *sec; |
| 2964 | ElfW(Addr) base = f->baseaddr; | 2949 | ElfW(Addr) base = f->baseaddr; |
| @@ -2980,7 +2965,7 @@ int obj_create_image(struct obj_file *f, char *image) | |||
| 2980 | 2965 | ||
| 2981 | /*======================================================================*/ | 2966 | /*======================================================================*/ |
| 2982 | 2967 | ||
| 2983 | struct obj_file *obj_load(FILE * fp, int loadprogbits) | 2968 | static struct obj_file *obj_load(FILE * fp, int loadprogbits) |
| 2984 | { | 2969 | { |
| 2985 | struct obj_file *f; | 2970 | struct obj_file *f; |
| 2986 | ElfW(Shdr) * section_headers; | 2971 | ElfW(Shdr) * section_headers; |
| @@ -3186,7 +3171,7 @@ struct obj_file *obj_load(FILE * fp, int loadprogbits) | |||
| 3186 | * kernel for the module | 3171 | * kernel for the module |
| 3187 | */ | 3172 | */ |
| 3188 | 3173 | ||
| 3189 | int obj_load_progbits(FILE * fp, struct obj_file* f) | 3174 | static int obj_load_progbits(FILE * fp, struct obj_file* f) |
| 3190 | { | 3175 | { |
| 3191 | char* imagebase = (char*) f->imagebase; | 3176 | char* imagebase = (char*) f->imagebase; |
| 3192 | ElfW(Addr) base = f->baseaddr; | 3177 | ElfW(Addr) base = f->baseaddr; |
diff --git a/libbb/unzip.c b/libbb/unzip.c index 359957196..ee746216d 100644 --- a/libbb/unzip.c +++ b/libbb/unzip.c | |||
| @@ -67,7 +67,7 @@ static char *license_msg[] = { | |||
| 67 | #include <string.h> | 67 | #include <string.h> |
| 68 | #include "libbb.h" | 68 | #include "libbb.h" |
| 69 | 69 | ||
| 70 | FILE *in_file, *out_file; | 70 | static FILE *in_file, *out_file; |
| 71 | 71 | ||
| 72 | /* these are freed by gz_close */ | 72 | /* these are freed by gz_close */ |
| 73 | static unsigned char *window; | 73 | static unsigned char *window; |
| @@ -91,9 +91,9 @@ static const int N_MAX = 288; /* maximum number of codes in any set */ | |||
| 91 | static long bytes_out; /* number of output bytes */ | 91 | static long bytes_out; /* number of output bytes */ |
| 92 | static unsigned long outcnt; /* bytes in output buffer */ | 92 | static unsigned long outcnt; /* bytes in output buffer */ |
| 93 | 93 | ||
| 94 | unsigned hufts; /* track memory usage */ | 94 | static unsigned hufts; /* track memory usage */ |
| 95 | unsigned long bb; /* bit buffer */ | 95 | static unsigned long bb; /* bit buffer */ |
| 96 | unsigned bk; /* bits in bit buffer */ | 96 | static unsigned bk; /* bits in bit buffer */ |
| 97 | 97 | ||
| 98 | typedef struct huft_s { | 98 | typedef struct huft_s { |
| 99 | unsigned char e; /* number of extra bits or operation */ | 99 | unsigned char e; /* number of extra bits or operation */ |
| @@ -104,7 +104,7 @@ typedef struct huft_s { | |||
| 104 | } v; | 104 | } v; |
| 105 | } huft_t; | 105 | } huft_t; |
| 106 | 106 | ||
| 107 | unsigned short mask_bits[] = { | 107 | static const unsigned short mask_bits[] = { |
| 108 | 0x0000, | 108 | 0x0000, |
| 109 | 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, | 109 | 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, |
| 110 | 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff | 110 | 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff |
| @@ -154,7 +154,7 @@ static void make_crc_table() | |||
| 154 | * Write the output window window[0..outcnt-1] and update crc and bytes_out. | 154 | * Write the output window window[0..outcnt-1] and update crc and bytes_out. |
| 155 | * (Used for the decompressed data only.) | 155 | * (Used for the decompressed data only.) |
| 156 | */ | 156 | */ |
| 157 | void flush_window() | 157 | static void flush_window(void) |
| 158 | { | 158 | { |
| 159 | int n; | 159 | int n; |
| 160 | 160 | ||
| @@ -1021,10 +1021,6 @@ extern void gz_close(int gunzip_pid) | |||
| 1021 | if (waitpid(gunzip_pid, NULL, 0) == -1) { | 1021 | if (waitpid(gunzip_pid, NULL, 0) == -1) { |
| 1022 | printf("Couldnt wait ?"); | 1022 | printf("Couldnt wait ?"); |
| 1023 | } | 1023 | } |
| 1024 | if (window) { | ||
| 1025 | free(window); | 1024 | free(window); |
| 1026 | } | ||
| 1027 | if (crc_table) { | ||
| 1028 | free(crc_table); | 1025 | free(crc_table); |
| 1029 | } | ||
| 1030 | } | 1026 | } |
diff --git a/modutils/insmod.c b/modutils/insmod.c index 4b0051594..b457fa81c 100644 --- a/modutils/insmod.c +++ b/modutils/insmod.c | |||
| @@ -130,7 +130,7 @@ | |||
| 130 | #ifndef MODUTILS_MODULE_H | 130 | #ifndef MODUTILS_MODULE_H |
| 131 | static const int MODUTILS_MODULE_H = 1; | 131 | static const int MODUTILS_MODULE_H = 1; |
| 132 | 132 | ||
| 133 | #ident "$Id: insmod.c,v 1.67 2001/06/28 21:36:06 andersen Exp $" | 133 | #ident "$Id: insmod.c,v 1.68 2001/07/17 01:12:36 andersen Exp $" |
| 134 | 134 | ||
| 135 | /* This file contains the structures used by the 2.0 and 2.1 kernels. | 135 | /* This file contains the structures used by the 2.0 and 2.1 kernels. |
| 136 | We do not use the kernel headers directly because we do not wish | 136 | We do not use the kernel headers directly because we do not wish |
| @@ -347,7 +347,7 @@ int delete_module(const char *); | |||
| 347 | #ifndef MODUTILS_OBJ_H | 347 | #ifndef MODUTILS_OBJ_H |
| 348 | static const int MODUTILS_OBJ_H = 1; | 348 | static const int MODUTILS_OBJ_H = 1; |
| 349 | 349 | ||
| 350 | #ident "$Id: insmod.c,v 1.67 2001/06/28 21:36:06 andersen Exp $" | 350 | #ident "$Id: insmod.c,v 1.68 2001/07/17 01:12:36 andersen Exp $" |
| 351 | 351 | ||
| 352 | /* The relocatable object is manipulated using elfin types. */ | 352 | /* The relocatable object is manipulated using elfin types. */ |
| 353 | 353 | ||
| @@ -537,78 +537,73 @@ struct obj_symbol_patch | |||
| 537 | 537 | ||
| 538 | /* Generic object manipulation routines. */ | 538 | /* Generic object manipulation routines. */ |
| 539 | 539 | ||
| 540 | unsigned long obj_elf_hash(const char *); | 540 | static unsigned long obj_elf_hash(const char *); |
| 541 | 541 | ||
| 542 | unsigned long obj_elf_hash_n(const char *, unsigned long len); | 542 | static unsigned long obj_elf_hash_n(const char *, unsigned long len); |
| 543 | 543 | ||
| 544 | struct obj_symbol *obj_add_symbol (struct obj_file *f, const char *name, | 544 | static struct obj_symbol *obj_find_symbol (struct obj_file *f, |
| 545 | unsigned long symidx, int info, int secidx, | ||
| 546 | ElfW(Addr) value, unsigned long size); | ||
| 547 | |||
| 548 | struct obj_symbol *obj_find_symbol (struct obj_file *f, | ||
| 549 | const char *name); | 545 | const char *name); |
| 550 | 546 | ||
| 551 | ElfW(Addr) obj_symbol_final_value(struct obj_file *f, | 547 | static ElfW(Addr) obj_symbol_final_value(struct obj_file *f, |
| 552 | struct obj_symbol *sym); | 548 | struct obj_symbol *sym); |
| 553 | 549 | ||
| 554 | void obj_set_symbol_compare(struct obj_file *f, | 550 | static void obj_set_symbol_compare(struct obj_file *f, |
| 555 | int (*cmp)(const char *, const char *), | 551 | int (*cmp)(const char *, const char *), |
| 556 | unsigned long (*hash)(const char *)); | 552 | unsigned long (*hash)(const char *)); |
| 557 | 553 | ||
| 558 | struct obj_section *obj_find_section (struct obj_file *f, | 554 | static struct obj_section *obj_find_section (struct obj_file *f, |
| 559 | const char *name); | 555 | const char *name); |
| 560 | 556 | ||
| 561 | void obj_insert_section_load_order (struct obj_file *f, | 557 | static void obj_insert_section_load_order (struct obj_file *f, |
| 562 | struct obj_section *sec); | 558 | struct obj_section *sec); |
| 563 | 559 | ||
| 564 | struct obj_section *obj_create_alloced_section (struct obj_file *f, | 560 | static struct obj_section *obj_create_alloced_section (struct obj_file *f, |
| 565 | const char *name, | 561 | const char *name, |
| 566 | unsigned long align, | 562 | unsigned long align, |
| 567 | unsigned long size); | 563 | unsigned long size); |
| 568 | 564 | ||
| 569 | struct obj_section *obj_create_alloced_section_first (struct obj_file *f, | 565 | static struct obj_section *obj_create_alloced_section_first (struct obj_file *f, |
| 570 | const char *name, | 566 | const char *name, |
| 571 | unsigned long align, | 567 | unsigned long align, |
| 572 | unsigned long size); | 568 | unsigned long size); |
| 573 | 569 | ||
| 574 | void *obj_extend_section (struct obj_section *sec, unsigned long more); | 570 | static void *obj_extend_section (struct obj_section *sec, unsigned long more); |
| 575 | 571 | ||
| 576 | int obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, | 572 | static int obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, |
| 577 | const char *string); | 573 | const char *string); |
| 578 | 574 | ||
| 579 | int obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, | 575 | static int obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, |
| 580 | struct obj_symbol *sym); | 576 | struct obj_symbol *sym); |
| 581 | 577 | ||
| 582 | int obj_check_undefineds(struct obj_file *f); | 578 | static int obj_check_undefineds(struct obj_file *f); |
| 583 | 579 | ||
| 584 | void obj_allocate_commons(struct obj_file *f); | 580 | static void obj_allocate_commons(struct obj_file *f); |
| 585 | 581 | ||
| 586 | unsigned long obj_load_size (struct obj_file *f); | 582 | static unsigned long obj_load_size (struct obj_file *f); |
| 587 | 583 | ||
| 588 | int obj_relocate (struct obj_file *f, ElfW(Addr) base); | 584 | static int obj_relocate (struct obj_file *f, ElfW(Addr) base); |
| 589 | 585 | ||
| 590 | struct obj_file *obj_load(FILE *f, int loadprogbits); | 586 | static struct obj_file *obj_load(FILE *f, int loadprogbits); |
| 591 | 587 | ||
| 592 | int obj_create_image (struct obj_file *f, char *image); | 588 | static int obj_create_image (struct obj_file *f, char *image); |
| 593 | 589 | ||
| 594 | /* Architecture specific manipulation routines. */ | 590 | /* Architecture specific manipulation routines. */ |
| 595 | 591 | ||
| 596 | struct obj_file *arch_new_file (void); | 592 | static struct obj_file *arch_new_file (void); |
| 597 | 593 | ||
| 598 | struct obj_section *arch_new_section (void); | 594 | static struct obj_section *arch_new_section (void); |
| 599 | 595 | ||
| 600 | struct obj_symbol *arch_new_symbol (void); | 596 | static struct obj_symbol *arch_new_symbol (void); |
| 601 | 597 | ||
| 602 | enum obj_reloc arch_apply_relocation (struct obj_file *f, | 598 | static enum obj_reloc arch_apply_relocation (struct obj_file *f, |
| 603 | struct obj_section *targsec, | 599 | struct obj_section *targsec, |
| 604 | struct obj_section *symsec, | 600 | struct obj_section *symsec, |
| 605 | struct obj_symbol *sym, | 601 | struct obj_symbol *sym, |
| 606 | ElfW(RelM) *rel, ElfW(Addr) value); | 602 | ElfW(RelM) *rel, ElfW(Addr) value); |
| 607 | 603 | ||
| 608 | int arch_create_got (struct obj_file *f); | 604 | static int arch_create_got (struct obj_file *f); |
| 609 | 605 | ||
| 610 | struct new_module; | 606 | static int arch_init_module (struct obj_file *f, struct new_module *); |
| 611 | int arch_init_module (struct obj_file *f, struct new_module *); | ||
| 612 | 607 | ||
| 613 | #endif /* obj.h */ | 608 | #endif /* obj.h */ |
| 614 | //---------------------------------------------------------------------------- | 609 | //---------------------------------------------------------------------------- |
| @@ -624,10 +619,10 @@ static const int STRVERSIONLEN = 32; | |||
| 624 | 619 | ||
| 625 | /*======================================================================*/ | 620 | /*======================================================================*/ |
| 626 | 621 | ||
| 627 | int flag_force_load = 0; | 622 | static int flag_force_load = 0; |
| 628 | int flag_autoclean = 0; | 623 | static int flag_autoclean = 0; |
| 629 | int flag_verbose = 0; | 624 | static int flag_verbose = 0; |
| 630 | int flag_export = 1; | 625 | static int flag_export = 1; |
| 631 | 626 | ||
| 632 | 627 | ||
| 633 | /*======================================================================*/ | 628 | /*======================================================================*/ |
| @@ -700,12 +695,12 @@ struct external_module { | |||
| 700 | struct new_module_symbol *syms; | 695 | struct new_module_symbol *syms; |
| 701 | }; | 696 | }; |
| 702 | 697 | ||
| 703 | struct new_module_symbol *ksyms; | 698 | static struct new_module_symbol *ksyms; |
| 704 | size_t nksyms; | 699 | static size_t nksyms; |
| 705 | 700 | ||
| 706 | struct external_module *ext_modules; | 701 | static struct external_module *ext_modules; |
| 707 | int n_ext_modules; | 702 | static int n_ext_modules; |
| 708 | int n_ext_modules_used; | 703 | static int n_ext_modules_used; |
| 709 | extern int delete_module(const char *); | 704 | extern int delete_module(const char *); |
| 710 | 705 | ||
| 711 | static char m_filename[FILENAME_MAX + 1]; | 706 | static char m_filename[FILENAME_MAX + 1]; |
| @@ -740,7 +735,7 @@ static int check_module_name_match(const char *filename, struct stat *statbuf, | |||
| 740 | 735 | ||
| 741 | /*======================================================================*/ | 736 | /*======================================================================*/ |
| 742 | 737 | ||
| 743 | struct obj_file *arch_new_file(void) | 738 | static struct obj_file *arch_new_file(void) |
| 744 | { | 739 | { |
| 745 | struct arch_file *f; | 740 | struct arch_file *f; |
| 746 | f = xmalloc(sizeof(*f)); | 741 | f = xmalloc(sizeof(*f)); |
| @@ -758,12 +753,12 @@ struct obj_file *arch_new_file(void) | |||
| 758 | return &f->root; | 753 | return &f->root; |
| 759 | } | 754 | } |
| 760 | 755 | ||
| 761 | struct obj_section *arch_new_section(void) | 756 | static struct obj_section *arch_new_section(void) |
| 762 | { | 757 | { |
| 763 | return xmalloc(sizeof(struct obj_section)); | 758 | return xmalloc(sizeof(struct obj_section)); |
| 764 | } | 759 | } |
| 765 | 760 | ||
| 766 | struct obj_symbol *arch_new_symbol(void) | 761 | static struct obj_symbol *arch_new_symbol(void) |
| 767 | { | 762 | { |
| 768 | struct arch_symbol *sym; | 763 | struct arch_symbol *sym; |
| 769 | sym = xmalloc(sizeof(*sym)); | 764 | sym = xmalloc(sizeof(*sym)); |
| @@ -778,7 +773,7 @@ struct obj_symbol *arch_new_symbol(void) | |||
| 778 | return &sym->root; | 773 | return &sym->root; |
| 779 | } | 774 | } |
| 780 | 775 | ||
| 781 | enum obj_reloc | 776 | static enum obj_reloc |
| 782 | arch_apply_relocation(struct obj_file *f, | 777 | arch_apply_relocation(struct obj_file *f, |
| 783 | struct obj_section *targsec, | 778 | struct obj_section *targsec, |
| 784 | struct obj_section *symsec, | 779 | struct obj_section *symsec, |
| @@ -1140,7 +1135,7 @@ arch_apply_relocation(struct obj_file *f, | |||
| 1140 | return ret; | 1135 | return ret; |
| 1141 | } | 1136 | } |
| 1142 | 1137 | ||
| 1143 | int arch_create_got(struct obj_file *f) | 1138 | static int arch_create_got(struct obj_file *f) |
| 1144 | { | 1139 | { |
| 1145 | #if defined(BB_USE_GOT_ENTRIES) || defined(BB_USE_PLT_ENTRIES) | 1140 | #if defined(BB_USE_GOT_ENTRIES) || defined(BB_USE_PLT_ENTRIES) |
| 1146 | struct arch_file *ifile = (struct arch_file *) f; | 1141 | struct arch_file *ifile = (struct arch_file *) f; |
| @@ -1271,7 +1266,7 @@ int arch_create_got(struct obj_file *f) | |||
| 1271 | return 1; | 1266 | return 1; |
| 1272 | } | 1267 | } |
| 1273 | 1268 | ||
| 1274 | int arch_init_module(struct obj_file *f, struct new_module *mod) | 1269 | static int arch_init_module(struct obj_file *f, struct new_module *mod) |
| 1275 | { | 1270 | { |
| 1276 | return 1; | 1271 | return 1; |
| 1277 | } | 1272 | } |
| @@ -1280,7 +1275,7 @@ int arch_init_module(struct obj_file *f, struct new_module *mod) | |||
| 1280 | /*======================================================================*/ | 1275 | /*======================================================================*/ |
| 1281 | 1276 | ||
| 1282 | /* Standard ELF hash function. */ | 1277 | /* Standard ELF hash function. */ |
| 1283 | inline unsigned long obj_elf_hash_n(const char *name, unsigned long n) | 1278 | static inline unsigned long obj_elf_hash_n(const char *name, unsigned long n) |
| 1284 | { | 1279 | { |
| 1285 | unsigned long h = 0; | 1280 | unsigned long h = 0; |
| 1286 | unsigned long g; | 1281 | unsigned long g; |
| @@ -1298,7 +1293,7 @@ inline unsigned long obj_elf_hash_n(const char *name, unsigned long n) | |||
| 1298 | return h; | 1293 | return h; |
| 1299 | } | 1294 | } |
| 1300 | 1295 | ||
| 1301 | unsigned long obj_elf_hash(const char *name) | 1296 | static unsigned long obj_elf_hash(const char *name) |
| 1302 | { | 1297 | { |
| 1303 | return obj_elf_hash_n(name, strlen(name)); | 1298 | return obj_elf_hash_n(name, strlen(name)); |
| 1304 | } | 1299 | } |
| @@ -1309,25 +1304,15 @@ unsigned long obj_elf_hash(const char *name) | |||
| 1309 | static int get_kernel_version(char str[STRVERSIONLEN]) | 1304 | static int get_kernel_version(char str[STRVERSIONLEN]) |
| 1310 | { | 1305 | { |
| 1311 | struct utsname uts_info; | 1306 | struct utsname uts_info; |
| 1312 | char *p, *q; | 1307 | int kv; |
| 1313 | int a, b, c; | ||
| 1314 | 1308 | ||
| 1315 | if (uname(&uts_info) < 0) | 1309 | if (uname(&uts_info) < 0) |
| 1316 | return -1; | 1310 | return -1; |
| 1317 | strncpy(str, uts_info.release, STRVERSIONLEN); | 1311 | strncpy(str, uts_info.release, STRVERSIONLEN); |
| 1318 | p = uts_info.release; | ||
| 1319 | 1312 | ||
| 1320 | a = strtoul(p, &p, 10); | 1313 | kv = get_kernel_revision(); |
| 1321 | if (*p != '.') | 1314 | if(kv==0) |
| 1322 | return -1; | ||
| 1323 | b = strtoul(p + 1, &p, 10); | ||
| 1324 | if (*p != '.') | ||
| 1325 | return -1; | 1315 | return -1; |
| 1326 | c = strtoul(p + 1, &q, 10); | ||
| 1327 | if (p + 1 == q) | ||
| 1328 | return -1; | ||
| 1329 | |||
| 1330 | return a << 16 | b << 8 | c; | ||
| 1331 | } | 1316 | } |
| 1332 | 1317 | ||
| 1333 | /* String comparison for non-co-versioned kernel and module. */ | 1318 | /* String comparison for non-co-versioned kernel and module. */ |
| @@ -1355,7 +1340,7 @@ static unsigned long ncv_symbol_hash(const char *str) | |||
| 1355 | return obj_elf_hash_n(str, len); | 1340 | return obj_elf_hash_n(str, len); |
| 1356 | } | 1341 | } |
| 1357 | 1342 | ||
| 1358 | void | 1343 | static void |
| 1359 | obj_set_symbol_compare(struct obj_file *f, | 1344 | obj_set_symbol_compare(struct obj_file *f, |
| 1360 | int (*cmp) (const char *, const char *), | 1345 | int (*cmp) (const char *, const char *), |
| 1361 | unsigned long (*hash) (const char *)) | 1346 | unsigned long (*hash) (const char *)) |
| @@ -1383,8 +1368,8 @@ obj_set_symbol_compare(struct obj_file *f, | |||
| 1383 | 1368 | ||
| 1384 | #endif /* BB_FEATURE_INSMOD_VERSION_CHECKING */ | 1369 | #endif /* BB_FEATURE_INSMOD_VERSION_CHECKING */ |
| 1385 | 1370 | ||
| 1386 | 1371 | static struct obj_symbol * | |
| 1387 | struct obj_symbol *obj_add_symbol(struct obj_file *f, const char *name, | 1372 | obj_add_symbol(struct obj_file *f, const char *name, |
| 1388 | unsigned long symidx, int info, | 1373 | unsigned long symidx, int info, |
| 1389 | int secidx, ElfW(Addr) value, | 1374 | int secidx, ElfW(Addr) value, |
| 1390 | unsigned long size) | 1375 | unsigned long size) |
| @@ -1478,7 +1463,8 @@ struct obj_symbol *obj_add_symbol(struct obj_file *f, const char *name, | |||
| 1478 | return sym; | 1463 | return sym; |
| 1479 | } | 1464 | } |
| 1480 | 1465 | ||
| 1481 | struct obj_symbol *obj_find_symbol(struct obj_file *f, const char *name) | 1466 | static struct obj_symbol * |
| 1467 | obj_find_symbol(struct obj_file *f, const char *name) | ||
| 1482 | { | 1468 | { |
| 1483 | struct obj_symbol *sym; | 1469 | struct obj_symbol *sym; |
| 1484 | unsigned long hash = f->symbol_hash(name) % HASH_BUCKETS; | 1470 | 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) | |||
| 1490 | return NULL; | 1476 | return NULL; |
| 1491 | } | 1477 | } |
| 1492 | 1478 | ||
| 1493 | ElfW(Addr) | 1479 | static ElfW(Addr) |
| 1494 | obj_symbol_final_value(struct obj_file * f, struct obj_symbol * sym) | 1480 | obj_symbol_final_value(struct obj_file * f, struct obj_symbol * sym) |
| 1495 | { | 1481 | { |
| 1496 | if (sym) { | 1482 | if (sym) { |
| @@ -1504,7 +1490,7 @@ ElfW(Addr) | |||
| 1504 | } | 1490 | } |
| 1505 | } | 1491 | } |
| 1506 | 1492 | ||
| 1507 | struct obj_section *obj_find_section(struct obj_file *f, const char *name) | 1493 | static struct obj_section *obj_find_section(struct obj_file *f, const char *name) |
| 1508 | { | 1494 | { |
| 1509 | int i, n = f->header.e_shnum; | 1495 | int i, n = f->header.e_shnum; |
| 1510 | 1496 | ||
| @@ -1537,7 +1523,7 @@ static int obj_load_order_prio(struct obj_section *a) | |||
| 1537 | return ac; | 1523 | return ac; |
| 1538 | } | 1524 | } |
| 1539 | 1525 | ||
| 1540 | void | 1526 | static void |
| 1541 | obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec) | 1527 | obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec) |
| 1542 | { | 1528 | { |
| 1543 | struct obj_section **p; | 1529 | struct obj_section **p; |
| @@ -1549,7 +1535,7 @@ obj_insert_section_load_order(struct obj_file *f, struct obj_section *sec) | |||
| 1549 | *p = sec; | 1535 | *p = sec; |
| 1550 | } | 1536 | } |
| 1551 | 1537 | ||
| 1552 | struct obj_section *obj_create_alloced_section(struct obj_file *f, | 1538 | static struct obj_section *obj_create_alloced_section(struct obj_file *f, |
| 1553 | const char *name, | 1539 | const char *name, |
| 1554 | unsigned long align, | 1540 | unsigned long align, |
| 1555 | unsigned long size) | 1541 | unsigned long size) |
| @@ -1575,7 +1561,7 @@ struct obj_section *obj_create_alloced_section(struct obj_file *f, | |||
| 1575 | return sec; | 1561 | return sec; |
| 1576 | } | 1562 | } |
| 1577 | 1563 | ||
| 1578 | struct obj_section *obj_create_alloced_section_first(struct obj_file *f, | 1564 | static struct obj_section *obj_create_alloced_section_first(struct obj_file *f, |
| 1579 | const char *name, | 1565 | const char *name, |
| 1580 | unsigned long align, | 1566 | unsigned long align, |
| 1581 | unsigned long size) | 1567 | unsigned long size) |
| @@ -1604,7 +1590,7 @@ struct obj_section *obj_create_alloced_section_first(struct obj_file *f, | |||
| 1604 | return sec; | 1590 | return sec; |
| 1605 | } | 1591 | } |
| 1606 | 1592 | ||
| 1607 | void *obj_extend_section(struct obj_section *sec, unsigned long more) | 1593 | static void *obj_extend_section(struct obj_section *sec, unsigned long more) |
| 1608 | { | 1594 | { |
| 1609 | unsigned long oldsize = sec->header.sh_size; | 1595 | unsigned long oldsize = sec->header.sh_size; |
| 1610 | if (more) { | 1596 | if (more) { |
| @@ -1614,7 +1600,6 @@ void *obj_extend_section(struct obj_section *sec, unsigned long more) | |||
| 1614 | } | 1600 | } |
| 1615 | 1601 | ||
| 1616 | 1602 | ||
| 1617 | |||
| 1618 | /* Conditionally add the symbols from the given symbol set to the | 1603 | /* Conditionally add the symbols from the given symbol set to the |
| 1619 | new module. */ | 1604 | new module. */ |
| 1620 | 1605 | ||
| @@ -2631,7 +2616,7 @@ new_init_module(const char *m_name, struct obj_file *f, | |||
| 2631 | 2616 | ||
| 2632 | /*======================================================================*/ | 2617 | /*======================================================================*/ |
| 2633 | 2618 | ||
| 2634 | int | 2619 | static int |
| 2635 | obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, | 2620 | obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, |
| 2636 | const char *string) | 2621 | const char *string) |
| 2637 | { | 2622 | { |
| @@ -2660,7 +2645,7 @@ obj_string_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, | |||
| 2660 | return 1; | 2645 | return 1; |
| 2661 | } | 2646 | } |
| 2662 | 2647 | ||
| 2663 | int | 2648 | static int |
| 2664 | obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, | 2649 | obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, |
| 2665 | struct obj_symbol *sym) | 2650 | struct obj_symbol *sym) |
| 2666 | { | 2651 | { |
| @@ -2676,7 +2661,7 @@ obj_symbol_patch(struct obj_file *f, int secidx, ElfW(Addr) offset, | |||
| 2676 | return 1; | 2661 | return 1; |
| 2677 | } | 2662 | } |
| 2678 | 2663 | ||
| 2679 | int obj_check_undefineds(struct obj_file *f) | 2664 | static int obj_check_undefineds(struct obj_file *f) |
| 2680 | { | 2665 | { |
| 2681 | unsigned long i; | 2666 | unsigned long i; |
| 2682 | int ret = 1; | 2667 | int ret = 1; |
| @@ -2698,7 +2683,7 @@ int obj_check_undefineds(struct obj_file *f) | |||
| 2698 | return ret; | 2683 | return ret; |
| 2699 | } | 2684 | } |
| 2700 | 2685 | ||
| 2701 | void obj_allocate_commons(struct obj_file *f) | 2686 | static void obj_allocate_commons(struct obj_file *f) |
| 2702 | { | 2687 | { |
| 2703 | struct common_entry { | 2688 | struct common_entry { |
| 2704 | struct common_entry *next; | 2689 | struct common_entry *next; |
| @@ -2807,7 +2792,7 @@ void obj_allocate_commons(struct obj_file *f) | |||
| 2807 | } | 2792 | } |
| 2808 | } | 2793 | } |
| 2809 | 2794 | ||
| 2810 | unsigned long obj_load_size(struct obj_file *f) | 2795 | static unsigned long obj_load_size(struct obj_file *f) |
| 2811 | { | 2796 | { |
| 2812 | unsigned long dot = 0; | 2797 | unsigned long dot = 0; |
| 2813 | struct obj_section *sec; | 2798 | struct obj_section *sec; |
| @@ -2828,7 +2813,7 @@ unsigned long obj_load_size(struct obj_file *f) | |||
| 2828 | return dot; | 2813 | return dot; |
| 2829 | } | 2814 | } |
| 2830 | 2815 | ||
| 2831 | int obj_relocate(struct obj_file *f, ElfW(Addr) base) | 2816 | static int obj_relocate(struct obj_file *f, ElfW(Addr) base) |
| 2832 | { | 2817 | { |
| 2833 | int i, n = f->header.e_shnum; | 2818 | int i, n = f->header.e_shnum; |
| 2834 | int ret = 1; | 2819 | int ret = 1; |
| @@ -2958,7 +2943,7 @@ int obj_relocate(struct obj_file *f, ElfW(Addr) base) | |||
| 2958 | return ret; | 2943 | return ret; |
| 2959 | } | 2944 | } |
| 2960 | 2945 | ||
| 2961 | int obj_create_image(struct obj_file *f, char *image) | 2946 | static int obj_create_image(struct obj_file *f, char *image) |
| 2962 | { | 2947 | { |
| 2963 | struct obj_section *sec; | 2948 | struct obj_section *sec; |
| 2964 | ElfW(Addr) base = f->baseaddr; | 2949 | ElfW(Addr) base = f->baseaddr; |
| @@ -2980,7 +2965,7 @@ int obj_create_image(struct obj_file *f, char *image) | |||
| 2980 | 2965 | ||
| 2981 | /*======================================================================*/ | 2966 | /*======================================================================*/ |
| 2982 | 2967 | ||
| 2983 | struct obj_file *obj_load(FILE * fp, int loadprogbits) | 2968 | static struct obj_file *obj_load(FILE * fp, int loadprogbits) |
| 2984 | { | 2969 | { |
| 2985 | struct obj_file *f; | 2970 | struct obj_file *f; |
| 2986 | ElfW(Shdr) * section_headers; | 2971 | ElfW(Shdr) * section_headers; |
| @@ -3186,7 +3171,7 @@ struct obj_file *obj_load(FILE * fp, int loadprogbits) | |||
| 3186 | * kernel for the module | 3171 | * kernel for the module |
| 3187 | */ | 3172 | */ |
| 3188 | 3173 | ||
| 3189 | int obj_load_progbits(FILE * fp, struct obj_file* f) | 3174 | static int obj_load_progbits(FILE * fp, struct obj_file* f) |
| 3190 | { | 3175 | { |
| 3191 | char* imagebase = (char*) f->imagebase; | 3176 | char* imagebase = (char*) f->imagebase; |
| 3192 | ElfW(Addr) base = f->baseaddr; | 3177 | ElfW(Addr) base = f->baseaddr; |
| @@ -233,7 +233,7 @@ parse_mount_options(char *options, int *flags, char *strflags) | |||
| 233 | } | 233 | } |
| 234 | } | 234 | } |
| 235 | 235 | ||
| 236 | extern int | 236 | static int |
| 237 | mount_one(char *blockDevice, char *directory, char *filesystemType, | 237 | mount_one(char *blockDevice, char *directory, char *filesystemType, |
| 238 | unsigned long flags, char *string_flags, int useMtab, int fakeIt, | 238 | unsigned long flags, char *string_flags, int useMtab, int fakeIt, |
| 239 | char *mtab_opts, int whineOnErrors, int mount_all) | 239 | char *mtab_opts, int whineOnErrors, int mount_all) |
diff --git a/networking/ping.c b/networking/ping.c index 620a29dc9..5ca5dd9e0 100644 --- a/networking/ping.c +++ b/networking/ping.c | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* vi: set sw=4 ts=4: */ | 1 | /* vi: set sw=4 ts=4: */ |
| 2 | /* | 2 | /* |
| 3 | * $Id: ping.c,v 1.45 2001/07/13 20:56:27 kraai Exp $ | 3 | * $Id: ping.c,v 1.46 2001/07/17 01:12:36 andersen Exp $ |
| 4 | * Mini ping implementation for busybox | 4 | * Mini ping implementation for busybox |
| 5 | * | 5 | * |
| 6 | * Copyright (C) 1999 by Randolph Chung <tausq@debian.org> | 6 | * Copyright (C) 1999 by Randolph Chung <tausq@debian.org> |
| @@ -430,7 +430,6 @@ static void ping(const char *host) | |||
| 430 | if (h->h_addrtype != AF_INET) | 430 | if (h->h_addrtype != AF_INET) |
| 431 | error_msg_and_die("unknown address type; only AF_INET is currently supported."); | 431 | error_msg_and_die("unknown address type; only AF_INET is currently supported."); |
| 432 | 432 | ||
| 433 | pingaddr.sin_family = AF_INET; /* h->h_addrtype */ | ||
| 434 | memcpy(&pingaddr.sin_addr, h->h_addr, sizeof(pingaddr.sin_addr)); | 433 | memcpy(&pingaddr.sin_addr, h->h_addr, sizeof(pingaddr.sin_addr)); |
| 435 | strncpy(buf, h->h_name, sizeof(buf) - 1); | 434 | strncpy(buf, h->h_name, sizeof(buf) - 1); |
| 436 | hostname = buf; | 435 | hostname = buf; |
diff --git a/networking/traceroute.c b/networking/traceroute.c index 106cf043b..a3af5f698 100644 --- a/networking/traceroute.c +++ b/networking/traceroute.c | |||
| @@ -131,40 +131,38 @@ static int nflag; /* print addresses numerically */ | |||
| 131 | * If the nflag has been supplied, give | 131 | * If the nflag has been supplied, give |
| 132 | * numeric value, otherwise try for symbolic name. | 132 | * numeric value, otherwise try for symbolic name. |
| 133 | */ | 133 | */ |
| 134 | static inline char * | 134 | static inline void |
| 135 | inetname(struct in_addr in) | 135 | inetname(struct sockaddr_in *from) |
| 136 | { | 136 | { |
| 137 | char *cp; | 137 | char *cp; |
| 138 | static char line[50]; | ||
| 139 | struct hostent *hp; | 138 | struct hostent *hp; |
| 140 | static char domain[MAXHOSTNAMELEN + 1]; | 139 | static char domain[MAXHOSTNAMELEN + 1]; |
| 141 | static int first = 1; | 140 | static int first = 1; |
| 141 | const char *ina; | ||
| 142 | 142 | ||
| 143 | if (first && !nflag) { | 143 | if (first && !nflag) { |
| 144 | first = 0; | 144 | first = 0; |
| 145 | if (gethostname(domain, MAXHOSTNAMELEN) == 0 && | 145 | if (gethostname(domain, MAXHOSTNAMELEN) == 0 && |
| 146 | (cp = index(domain, '.'))) | 146 | (cp = strchr(domain, '.'))) |
| 147 | (void) strcpy(domain, cp + 1); | 147 | (void) strcpy(domain, cp + 1); |
| 148 | else | 148 | else |
| 149 | domain[0] = 0; | 149 | domain[0] = 0; |
| 150 | } | 150 | } |
| 151 | cp = 0; | 151 | cp = 0; |
| 152 | if (!nflag && in.s_addr != INADDR_ANY) { | 152 | if (!nflag && from->sin_addr.s_addr != INADDR_ANY) { |
| 153 | hp = gethostbyaddr((char *)&in, sizeof (in), AF_INET); | 153 | hp = gethostbyaddr((char *)&(from->sin_addr), sizeof (from->sin_addr), AF_INET); |
| 154 | if (hp) { | 154 | if (hp) { |
| 155 | if ((cp = index(hp->h_name, '.')) && | 155 | if ((cp = strchr(hp->h_name, '.')) && |
| 156 | !strcmp(cp + 1, domain)) | 156 | !strcmp(cp + 1, domain)) |
| 157 | *cp = 0; | 157 | *cp = 0; |
| 158 | cp = (char *)hp->h_name; | 158 | cp = (char *)hp->h_name; |
| 159 | } | 159 | } |
| 160 | } | 160 | } |
| 161 | if (cp) | 161 | ina = inet_ntoa(from->sin_addr); |
| 162 | (void) strcpy(line, cp); | 162 | if (nflag) |
| 163 | else { | 163 | printf(" %s", ina); |
| 164 | in.s_addr = ntohl(in.s_addr); | 164 | else |
| 165 | strcpy(line, inet_ntoa(in)); | 165 | printf(" %s (%s)", (cp ? cp : ina), ina); |
| 166 | } | ||
| 167 | return (line); | ||
| 168 | } | 166 | } |
| 169 | 167 | ||
| 170 | static inline void | 168 | static inline void |
| @@ -177,12 +175,7 @@ print(u_char *buf, int cc, struct sockaddr_in *from) | |||
| 177 | hlen = ip->ip_hl << 2; | 175 | hlen = ip->ip_hl << 2; |
| 178 | cc -= hlen; | 176 | cc -= hlen; |
| 179 | 177 | ||
| 180 | if (nflag) | 178 | inetname(from); |
| 181 | printf(" %s", inet_ntoa(from->sin_addr)); | ||
| 182 | else | ||
| 183 | printf(" %s (%s)", inetname(from->sin_addr), | ||
| 184 | inet_ntoa(from->sin_addr)); | ||
| 185 | |||
| 186 | #ifdef BB_FEATURE_TRACEROUTE_VERBOSE | 179 | #ifdef BB_FEATURE_TRACEROUTE_VERBOSE |
| 187 | if (verbose) | 180 | if (verbose) |
| 188 | printf (" %d bytes to %s", cc, inet_ntoa (ip->ip_dst)); | 181 | printf (" %d bytes to %s", cc, inet_ntoa (ip->ip_dst)); |
| @@ -1,6 +1,6 @@ | |||
| 1 | /* vi: set sw=4 ts=4: */ | 1 | /* vi: set sw=4 ts=4: */ |
| 2 | /* | 2 | /* |
| 3 | * $Id: ping.c,v 1.45 2001/07/13 20:56:27 kraai Exp $ | 3 | * $Id: ping.c,v 1.46 2001/07/17 01:12:36 andersen Exp $ |
| 4 | * Mini ping implementation for busybox | 4 | * Mini ping implementation for busybox |
| 5 | * | 5 | * |
| 6 | * Copyright (C) 1999 by Randolph Chung <tausq@debian.org> | 6 | * Copyright (C) 1999 by Randolph Chung <tausq@debian.org> |
| @@ -430,7 +430,6 @@ static void ping(const char *host) | |||
| 430 | if (h->h_addrtype != AF_INET) | 430 | if (h->h_addrtype != AF_INET) |
| 431 | error_msg_and_die("unknown address type; only AF_INET is currently supported."); | 431 | error_msg_and_die("unknown address type; only AF_INET is currently supported."); |
| 432 | 432 | ||
| 433 | pingaddr.sin_family = AF_INET; /* h->h_addrtype */ | ||
| 434 | memcpy(&pingaddr.sin_addr, h->h_addr, sizeof(pingaddr.sin_addr)); | 433 | memcpy(&pingaddr.sin_addr, h->h_addr, sizeof(pingaddr.sin_addr)); |
| 435 | strncpy(buf, h->h_name, sizeof(buf) - 1); | 434 | strncpy(buf, h->h_name, sizeof(buf) - 1); |
| 436 | hostname = buf; | 435 | hostname = buf; |
diff --git a/shell/ash.c b/shell/ash.c index 334d2fddd..d16da82db 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
| @@ -6204,8 +6204,7 @@ retry: | |||
| 6204 | if (!iflag) | 6204 | if (!iflag) |
| 6205 | nr = safe_read(parsefile->fd, buf, BUFSIZ - 1); | 6205 | nr = safe_read(parsefile->fd, buf, BUFSIZ - 1); |
| 6206 | else { | 6206 | else { |
| 6207 | cmdedit_read_input((char*)cmdedit_prompt, buf); | 6207 | nr = cmdedit_read_input((char*)cmdedit_prompt, buf); |
| 6208 | nr = strlen(buf); | ||
| 6209 | } | 6208 | } |
| 6210 | } | 6209 | } |
| 6211 | #else | 6210 | #else |
| @@ -9445,7 +9444,7 @@ static char *wordtext; /* text of last word returned by readtok | |||
| 9445 | 9444 | ||
| 9446 | static struct nodelist *backquotelist; | 9445 | static struct nodelist *backquotelist; |
| 9447 | static union node *redirnode; | 9446 | static union node *redirnode; |
| 9448 | struct heredoc *heredoc; | 9447 | static struct heredoc *heredoc; |
| 9449 | static int quoteflag; /* set if (part of) last token was quoted */ | 9448 | static int quoteflag; /* set if (part of) last token was quoted */ |
| 9450 | static int startlinno; /* line # where last token started */ | 9449 | static int startlinno; /* line # where last token started */ |
| 9451 | 9450 | ||
| @@ -12917,7 +12916,7 @@ findvar(struct var **vpp, const char *name) | |||
| 12917 | /* | 12916 | /* |
| 12918 | * Copyright (c) 1999 Herbert Xu <herbert@debian.org> | 12917 | * Copyright (c) 1999 Herbert Xu <herbert@debian.org> |
| 12919 | * This file contains code for the times builtin. | 12918 | * This file contains code for the times builtin. |
| 12920 | * $Id: ash.c,v 1.10 2001/07/12 20:26:31 andersen Exp $ | 12919 | * $Id: ash.c,v 1.11 2001/07/17 01:12:35 andersen Exp $ |
| 12921 | */ | 12920 | */ |
| 12922 | static int timescmd (int argc, char **argv) | 12921 | static int timescmd (int argc, char **argv) |
| 12923 | { | 12922 | { |
diff --git a/shell/cmdedit.c b/shell/cmdedit.c index 540eb7ea7..69f833747 100644 --- a/shell/cmdedit.c +++ b/shell/cmdedit.c | |||
| @@ -1153,7 +1153,8 @@ enum { | |||
| 1153 | * | 1153 | * |
| 1154 | */ | 1154 | */ |
| 1155 | 1155 | ||
| 1156 | extern void cmdedit_read_input(char *prompt, char command[BUFSIZ]) | 1156 | |
| 1157 | int cmdedit_read_input(char *prompt, char command[BUFSIZ]) | ||
| 1157 | { | 1158 | { |
| 1158 | 1159 | ||
| 1159 | int break_out = 0; | 1160 | int break_out = 0; |
| @@ -1231,10 +1232,15 @@ extern void cmdedit_read_input(char *prompt, char command[BUFSIZ]) | |||
| 1231 | * if the len=0 and no chars to delete */ | 1232 | * if the len=0 and no chars to delete */ |
| 1232 | if (len == 0) { | 1233 | if (len == 0) { |
| 1233 | prepare_to_die: | 1234 | prepare_to_die: |
| 1235 | #if !defined(BB_FEATURE_ASH) | ||
| 1234 | printf("exit"); | 1236 | printf("exit"); |
| 1235 | goto_new_line(); | 1237 | goto_new_line(); |
| 1236 | /* cmdedit_reset_term() called in atexit */ | 1238 | /* cmdedit_reset_term() called in atexit */ |
| 1237 | exit(EXIT_SUCCESS); | 1239 | exit(EXIT_SUCCESS); |
| 1240 | #else | ||
| 1241 | break_out = -1; /* for control stoped jobs */ | ||
| 1242 | break; | ||
| 1243 | #endif | ||
| 1238 | } else { | 1244 | } else { |
| 1239 | input_delete(); | 1245 | input_delete(); |
| 1240 | } | 1246 | } |
| @@ -1455,8 +1461,10 @@ prepare_to_die: | |||
| 1455 | num_ok_lines++; | 1461 | num_ok_lines++; |
| 1456 | #endif | 1462 | #endif |
| 1457 | } | 1463 | } |
| 1464 | if(break_out>0) { | ||
| 1458 | command[len++] = '\n'; /* set '\n' */ | 1465 | command[len++] = '\n'; /* set '\n' */ |
| 1459 | command[len] = 0; | 1466 | command[len] = 0; |
| 1467 | } | ||
| 1460 | #if defined(BB_FEATURE_CLEAN_UP) && defined(BB_FEATURE_COMMAND_TAB_COMPLETION) | 1468 | #if defined(BB_FEATURE_CLEAN_UP) && defined(BB_FEATURE_COMMAND_TAB_COMPLETION) |
| 1461 | input_tab(0); /* strong free */ | 1469 | input_tab(0); /* strong free */ |
| 1462 | #endif | 1470 | #endif |
| @@ -1464,6 +1472,7 @@ prepare_to_die: | |||
| 1464 | free(cmdedit_prompt); | 1472 | free(cmdedit_prompt); |
| 1465 | #endif | 1473 | #endif |
| 1466 | cmdedit_reset_term(); | 1474 | cmdedit_reset_term(); |
| 1475 | return len; | ||
| 1467 | } | 1476 | } |
| 1468 | 1477 | ||
| 1469 | 1478 | ||
diff --git a/shell/cmdedit.h b/shell/cmdedit.h index 1482da3b8..83893572a 100644 --- a/shell/cmdedit.h +++ b/shell/cmdedit.h | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | #ifndef CMDEDIT_H | 1 | #ifndef CMDEDIT_H |
| 2 | #define CMDEDIT_H | 2 | #define CMDEDIT_H |
| 3 | 3 | ||
| 4 | void cmdedit_read_input(char* promptStr, char* command); /* read a line of input */ | 4 | int cmdedit_read_input(char* promptStr, char* command); |
| 5 | 5 | ||
| 6 | #endif /* CMDEDIT_H */ | 6 | #endif /* CMDEDIT_H */ |
diff --git a/sysklogd/syslogd.c b/sysklogd/syslogd.c index d334c50c9..8ae70a1ed 100644 --- a/sysklogd/syslogd.c +++ b/sysklogd/syslogd.c | |||
| @@ -346,7 +346,7 @@ static const int IOV_COUNT = 2; | |||
| 346 | struct iovec iov[IOV_COUNT]; | 346 | struct iovec iov[IOV_COUNT]; |
| 347 | struct iovec *v = iov; | 347 | struct iovec *v = iov; |
| 348 | 348 | ||
| 349 | bzero(&res, sizeof(res)); | 349 | memset(&res, 0, sizeof(res)); |
| 350 | snprintf(res, sizeof(res), "<%d>", pri); | 350 | snprintf(res, sizeof(res), "<%d>", pri); |
| 351 | v->iov_base = res ; | 351 | v->iov_base = res ; |
| 352 | v->iov_len = strlen(res); | 352 | v->iov_len = strlen(res); |
| @@ -442,7 +442,7 @@ static void init_RemoteLog (void){ | |||
| 442 | struct hostent *hostinfo; | 442 | struct hostent *hostinfo; |
| 443 | int len = sizeof(remoteaddr); | 443 | int len = sizeof(remoteaddr); |
| 444 | 444 | ||
| 445 | bzero(&remoteaddr, len); | 445 | memset(&remoteaddr, 0, len); |
| 446 | 446 | ||
| 447 | remotefd = socket(AF_INET, SOCK_DGRAM, 0); | 447 | remotefd = socket(AF_INET, SOCK_DGRAM, 0); |
| 448 | 448 | ||
| @@ -346,7 +346,7 @@ static const int IOV_COUNT = 2; | |||
| 346 | struct iovec iov[IOV_COUNT]; | 346 | struct iovec iov[IOV_COUNT]; |
| 347 | struct iovec *v = iov; | 347 | struct iovec *v = iov; |
| 348 | 348 | ||
| 349 | bzero(&res, sizeof(res)); | 349 | memset(&res, 0, sizeof(res)); |
| 350 | snprintf(res, sizeof(res), "<%d>", pri); | 350 | snprintf(res, sizeof(res), "<%d>", pri); |
| 351 | v->iov_base = res ; | 351 | v->iov_base = res ; |
| 352 | v->iov_len = strlen(res); | 352 | v->iov_len = strlen(res); |
| @@ -442,7 +442,7 @@ static void init_RemoteLog (void){ | |||
| 442 | struct hostent *hostinfo; | 442 | struct hostent *hostinfo; |
| 443 | int len = sizeof(remoteaddr); | 443 | int len = sizeof(remoteaddr); |
| 444 | 444 | ||
| 445 | bzero(&remoteaddr, len); | 445 | memset(&remoteaddr, 0, len); |
| 446 | 446 | ||
| 447 | remotefd = socket(AF_INET, SOCK_DGRAM, 0); | 447 | remotefd = socket(AF_INET, SOCK_DGRAM, 0); |
| 448 | 448 | ||
diff --git a/traceroute.c b/traceroute.c index 106cf043b..a3af5f698 100644 --- a/traceroute.c +++ b/traceroute.c | |||
| @@ -131,40 +131,38 @@ static int nflag; /* print addresses numerically */ | |||
| 131 | * If the nflag has been supplied, give | 131 | * If the nflag has been supplied, give |
| 132 | * numeric value, otherwise try for symbolic name. | 132 | * numeric value, otherwise try for symbolic name. |
| 133 | */ | 133 | */ |
| 134 | static inline char * | 134 | static inline void |
| 135 | inetname(struct in_addr in) | 135 | inetname(struct sockaddr_in *from) |
| 136 | { | 136 | { |
| 137 | char *cp; | 137 | char *cp; |
| 138 | static char line[50]; | ||
| 139 | struct hostent *hp; | 138 | struct hostent *hp; |
| 140 | static char domain[MAXHOSTNAMELEN + 1]; | 139 | static char domain[MAXHOSTNAMELEN + 1]; |
| 141 | static int first = 1; | 140 | static int first = 1; |
| 141 | const char *ina; | ||
| 142 | 142 | ||
| 143 | if (first && !nflag) { | 143 | if (first && !nflag) { |
| 144 | first = 0; | 144 | first = 0; |
| 145 | if (gethostname(domain, MAXHOSTNAMELEN) == 0 && | 145 | if (gethostname(domain, MAXHOSTNAMELEN) == 0 && |
| 146 | (cp = index(domain, '.'))) | 146 | (cp = strchr(domain, '.'))) |
| 147 | (void) strcpy(domain, cp + 1); | 147 | (void) strcpy(domain, cp + 1); |
| 148 | else | 148 | else |
| 149 | domain[0] = 0; | 149 | domain[0] = 0; |
| 150 | } | 150 | } |
| 151 | cp = 0; | 151 | cp = 0; |
| 152 | if (!nflag && in.s_addr != INADDR_ANY) { | 152 | if (!nflag && from->sin_addr.s_addr != INADDR_ANY) { |
| 153 | hp = gethostbyaddr((char *)&in, sizeof (in), AF_INET); | 153 | hp = gethostbyaddr((char *)&(from->sin_addr), sizeof (from->sin_addr), AF_INET); |
| 154 | if (hp) { | 154 | if (hp) { |
| 155 | if ((cp = index(hp->h_name, '.')) && | 155 | if ((cp = strchr(hp->h_name, '.')) && |
| 156 | !strcmp(cp + 1, domain)) | 156 | !strcmp(cp + 1, domain)) |
| 157 | *cp = 0; | 157 | *cp = 0; |
| 158 | cp = (char *)hp->h_name; | 158 | cp = (char *)hp->h_name; |
| 159 | } | 159 | } |
| 160 | } | 160 | } |
| 161 | if (cp) | 161 | ina = inet_ntoa(from->sin_addr); |
| 162 | (void) strcpy(line, cp); | 162 | if (nflag) |
| 163 | else { | 163 | printf(" %s", ina); |
| 164 | in.s_addr = ntohl(in.s_addr); | 164 | else |
| 165 | strcpy(line, inet_ntoa(in)); | 165 | printf(" %s (%s)", (cp ? cp : ina), ina); |
| 166 | } | ||
| 167 | return (line); | ||
| 168 | } | 166 | } |
| 169 | 167 | ||
| 170 | static inline void | 168 | static inline void |
| @@ -177,12 +175,7 @@ print(u_char *buf, int cc, struct sockaddr_in *from) | |||
| 177 | hlen = ip->ip_hl << 2; | 175 | hlen = ip->ip_hl << 2; |
| 178 | cc -= hlen; | 176 | cc -= hlen; |
| 179 | 177 | ||
| 180 | if (nflag) | 178 | inetname(from); |
| 181 | printf(" %s", inet_ntoa(from->sin_addr)); | ||
| 182 | else | ||
| 183 | printf(" %s (%s)", inetname(from->sin_addr), | ||
| 184 | inet_ntoa(from->sin_addr)); | ||
| 185 | |||
| 186 | #ifdef BB_FEATURE_TRACEROUTE_VERBOSE | 179 | #ifdef BB_FEATURE_TRACEROUTE_VERBOSE |
| 187 | if (verbose) | 180 | if (verbose) |
| 188 | printf (" %d bytes to %s", cc, inet_ntoa (ip->ip_dst)); | 181 | printf (" %d bytes to %s", cc, inet_ntoa (ip->ip_dst)); |
diff --git a/util-linux/mount.c b/util-linux/mount.c index 9c438bf6c..eb6091f30 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c | |||
| @@ -233,7 +233,7 @@ parse_mount_options(char *options, int *flags, char *strflags) | |||
| 233 | } | 233 | } |
| 234 | } | 234 | } |
| 235 | 235 | ||
| 236 | extern int | 236 | static int |
| 237 | mount_one(char *blockDevice, char *directory, char *filesystemType, | 237 | mount_one(char *blockDevice, char *directory, char *filesystemType, |
| 238 | unsigned long flags, char *string_flags, int useMtab, int fakeIt, | 238 | unsigned long flags, char *string_flags, int useMtab, int fakeIt, |
| 239 | char *mtab_opts, int whineOnErrors, int mount_all) | 239 | char *mtab_opts, int whineOnErrors, int mount_all) |
| @@ -18,8 +18,8 @@ | |||
| 18 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 18 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
| 19 | */ | 19 | */ |
| 20 | 20 | ||
| 21 | char *vi_Version = | 21 | static const char vi_Version[] = |
| 22 | "$Id: vi.c,v 1.11 2001/07/02 18:06:14 andersen Exp $"; | 22 | "$Id: vi.c,v 1.12 2001/07/17 01:12:36 andersen Exp $"; |
| 23 | 23 | ||
| 24 | /* | 24 | /* |
| 25 | * To compile for standalone use: | 25 | * To compile for standalone use: |
