aboutsummaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-08-12 20:58:27 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-08-12 20:58:27 +0000
commit6ca409e0e4c198fe3081346eebbae3f068fe605a (patch)
tree060cb05d99220a1eda399194d1209c269f0e8cd8 /shell
parent4185548984357df91311f30c8e43d95f33922576 (diff)
downloadbusybox-w32-6ca409e0e4c198fe3081346eebbae3f068fe605a.tar.gz
busybox-w32-6ca409e0e4c198fe3081346eebbae3f068fe605a.tar.bz2
busybox-w32-6ca409e0e4c198fe3081346eebbae3f068fe605a.zip
trylink: produce even more info about final link stage
trylink: explain how to modify link and drastically decrease amount of padding (unfortunately, needs hand editing ATM). *: add ALIGN1 / ALIGN2 to global strings and arrays of bytes and shorts size saving: 0.5k
Diffstat (limited to 'shell')
-rw-r--r--shell/ash.c58
-rw-r--r--shell/hush.c5
-rw-r--r--shell/lash.c2
-rw-r--r--shell/msh.c9
4 files changed, 39 insertions, 35 deletions
diff --git a/shell/ash.c b/shell/ash.c
index d34f5207f..9aec8ee0a 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -91,10 +91,10 @@ static const char *const optletters_optnames[] = {
91 "a" "allexport", 91 "a" "allexport",
92 "b" "notify", 92 "b" "notify",
93 "u" "nounset", 93 "u" "nounset",
94 "\0" "vi", 94 "\0" "vi"
95#if DEBUG 95#if DEBUG
96 "\0" "nolog", 96 ,"\0" "nolog"
97 "\0" "debug", 97 ,"\0" "debug"
98#endif 98#endif
99}; 99};
100 100
@@ -103,7 +103,7 @@ static const char *const optletters_optnames[] = {
103 103
104enum { NOPTS = ARRAY_SIZE(optletters_optnames) }; 104enum { NOPTS = ARRAY_SIZE(optletters_optnames) };
105 105
106static char optlist[NOPTS]; 106static char optlist[NOPTS] ALIGN1;
107 107
108#define eflag optlist[0] 108#define eflag optlist[0]
109#define fflag optlist[1] 109#define fflag optlist[1]
@@ -127,12 +127,12 @@ static char optlist[NOPTS];
127 127
128/* ============ Misc data */ 128/* ============ Misc data */
129 129
130static char nullstr[1]; /* zero length string */ 130static char nullstr[1] ALIGN1; /* zero length string */
131static const char homestr[] = "HOME"; 131static const char homestr[] ALIGN1 = "HOME";
132static const char snlfmt[] = "%s\n"; 132static const char snlfmt[] ALIGN1 = "%s\n";
133static const char illnum[] = "Illegal number: %s"; 133static const char illnum[] ALIGN1 = "Illegal number: %s";
134 134
135static char *minusc; /* argument to -c option */ 135static char *minusc; /* argument to -c option */
136 136
137/* pid of main shell */ 137/* pid of main shell */
138static int rootpid; 138static int rootpid;
@@ -447,7 +447,9 @@ out2str(const char *p)
447#define VSTRIMLEFTMAX 0x9 /* ${var##pattern} */ 447#define VSTRIMLEFTMAX 0x9 /* ${var##pattern} */
448#define VSLENGTH 0xa /* ${#var} */ 448#define VSLENGTH 0xa /* ${#var} */
449 449
450static const char dolatstr[] = { CTLVAR, VSNORMAL|VSQUOTE, '@', '=', '\0' }; 450static const char dolatstr[] ALIGN1 = {
451 CTLVAR, VSNORMAL|VSQUOTE, '@', '=', '\0'
452};
451 453
452#define NCMD 0 454#define NCMD 0
453#define NPIPE 1 455#define NPIPE 1
@@ -1583,10 +1585,10 @@ static unsigned long rseed;
1583#endif 1585#endif
1584 1586
1585#ifdef IFS_BROKEN 1587#ifdef IFS_BROKEN
1586static const char defifsvar[] = "IFS= \t\n"; 1588static const char defifsvar[] ALIGN1 = "IFS= \t\n";
1587#define defifs (defifsvar + 4) 1589#define defifs (defifsvar + 4)
1588#else 1590#else
1589static const char defifs[] = " \t\n"; 1591static const char defifs[] ALIGN1 = " \t\n";
1590#endif 1592#endif
1591 1593
1592struct shparam { 1594struct shparam {
@@ -2548,16 +2550,16 @@ static const char S_I_T[][3] = {
2548static int 2550static int
2549SIT(int c, int syntax) 2551SIT(int c, int syntax)
2550{ 2552{
2551 static const char spec_symbls[] = "\t\n !\"$&'()*-/:;<=>?[\\]`|}~"; 2553 static const char spec_symbls[] ALIGN1 = "\t\n !\"$&'()*-/:;<=>?[\\]`|}~";
2552#if ENABLE_ASH_ALIAS 2554#if ENABLE_ASH_ALIAS
2553 static const char syntax_index_table[] = { 2555 static const char syntax_index_table[] ALIGN1 = {
2554 1, 2, 1, 3, 4, 5, 1, 6, /* "\t\n !\"$&'" */ 2556 1, 2, 1, 3, 4, 5, 1, 6, /* "\t\n !\"$&'" */
2555 7, 8, 3, 3, 3, 3, 1, 1, /* "()*-/:;<" */ 2557 7, 8, 3, 3, 3, 3, 1, 1, /* "()*-/:;<" */
2556 3, 1, 3, 3, 9, 3, 10, 1, /* "=>?[\\]`|" */ 2558 3, 1, 3, 3, 9, 3, 10, 1, /* "=>?[\\]`|" */
2557 11, 3 /* "}~" */ 2559 11, 3 /* "}~" */
2558 }; 2560 };
2559#else 2561#else
2560 static const char syntax_index_table[] = { 2562 static const char syntax_index_table[] ALIGN1 = {
2561 0, 1, 0, 2, 3, 4, 0, 5, /* "\t\n !\"$&'" */ 2563 0, 1, 0, 2, 3, 4, 0, 5, /* "\t\n !\"$&'" */
2562 6, 7, 2, 2, 2, 2, 0, 0, /* "()*-/:;<" */ 2564 6, 7, 2, 2, 2, 2, 0, 0, /* "()*-/:;<" */
2563 2, 0, 2, 2, 8, 2, 9, 0, /* "=>?[\\]`|" */ 2565 2, 0, 2, 2, 8, 2, 9, 0, /* "=>?[\\]`|" */
@@ -5003,7 +5005,7 @@ esclen(const char *start, const char *p)
5003static char * 5005static char *
5004_rmescapes(char *str, int flag) 5006_rmescapes(char *str, int flag)
5005{ 5007{
5006 static const char qchars[] = { CTLESC, CTLQUOTEMARK, '\0' }; 5008 static const char qchars[] ALIGN1 = { CTLESC, CTLQUOTEMARK, '\0' };
5007 5009
5008 char *p, *q, *r; 5010 char *p, *q, *r;
5009 unsigned inquotes; 5011 unsigned inquotes;
@@ -5420,7 +5422,7 @@ static char *evalvar(char *p, int flag);
5420static void 5422static void
5421argstr(char *p, int flag) 5423argstr(char *p, int flag)
5422{ 5424{
5423 static const char spclchars[] = { 5425 static const char spclchars[] ALIGN1 = {
5424 '=', 5426 '=',
5425 ':', 5427 ':',
5426 CTLQUOTEMARK, 5428 CTLQUOTEMARK,
@@ -6266,7 +6268,7 @@ expsort(struct strlist *str)
6266static void 6268static void
6267expandmeta(struct strlist *str, int flag) 6269expandmeta(struct strlist *str, int flag)
6268{ 6270{
6269 static const char metachars[] = { 6271 static const char metachars[] ALIGN1 = {
6270 '*', '?', '[', 0 6272 '*', '?', '[', 0
6271 }; 6273 };
6272 /* TODO - EXP_REDIR */ 6274 /* TODO - EXP_REDIR */
@@ -10200,7 +10202,7 @@ parsesub: {
10200 int typeloc; 10202 int typeloc;
10201 int flags; 10203 int flags;
10202 char *p; 10204 char *p;
10203 static const char types[] = "}-+?="; 10205 static const char types[] ALIGN1 = "}-+?=";
10204 10206
10205 c = pgetc(); 10207 c = pgetc();
10206 if ( 10208 if (
@@ -10496,13 +10498,15 @@ parsearith: {
10496#define NEW_xxreadtoken 10498#define NEW_xxreadtoken
10497#ifdef NEW_xxreadtoken 10499#ifdef NEW_xxreadtoken
10498/* singles must be first! */ 10500/* singles must be first! */
10499static const char xxreadtoken_chars[7] = { '\n', '(', ')', '&', '|', ';', 0 }; 10501static const char xxreadtoken_chars[7] ALIGN1 = {
10502 '\n', '(', ')', '&', '|', ';', 0
10503};
10500 10504
10501static const char xxreadtoken_tokens[] = { 10505static const char xxreadtoken_tokens[] ALIGN1 = {
10502 TNL, TLP, TRP, /* only single occurrence allowed */ 10506 TNL, TLP, TRP, /* only single occurrence allowed */
10503 TBACKGND, TPIPE, TSEMI, /* if single occurrence */ 10507 TBACKGND, TPIPE, TSEMI, /* if single occurrence */
10504 TEOF, /* corresponds to trailing nul */ 10508 TEOF, /* corresponds to trailing nul */
10505 TAND, TOR, TENDCASE, /* if double occurrence */ 10509 TAND, TOR, TENDCASE /* if double occurrence */
10506}; 10510};
10507 10511
10508#define xxreadtoken_doubles \ 10512#define xxreadtoken_doubles \
@@ -11379,7 +11383,7 @@ unsetcmd(int argc, char **argv)
11379 11383
11380#include <sys/times.h> 11384#include <sys/times.h>
11381 11385
11382static const unsigned char timescmd_str[] = { 11386static const unsigned char timescmd_str[] ALIGN1 = {
11383 ' ', offsetof(struct tms, tms_utime), 11387 ' ', offsetof(struct tms, tms_utime),
11384 '\n', offsetof(struct tms, tms_stime), 11388 '\n', offsetof(struct tms, tms_stime),
11385 ' ', offsetof(struct tms, tms_cutime), 11389 ' ', offsetof(struct tms, tms_cutime),
@@ -11659,9 +11663,9 @@ readcmd(int argc, char **argv)
11659static int 11663static int
11660umaskcmd(int argc, char **argv) 11664umaskcmd(int argc, char **argv)
11661{ 11665{
11662 static const char permuser[3] = "ugo"; 11666 static const char permuser[3] ALIGN1 = "ugo";
11663 static const char permmode[3] = "rwx"; 11667 static const char permmode[3] ALIGN1 = "rwx";
11664 static const short int permmask[] = { 11668 static const short permmask[] ALIGN2 = {
11665 S_IRUSR, S_IWUSR, S_IXUSR, 11669 S_IRUSR, S_IWUSR, S_IXUSR,
11666 S_IRGRP, S_IWGRP, S_IXGRP, 11670 S_IRGRP, S_IWGRP, S_IXGRP,
11667 S_IROTH, S_IWOTH, S_IXOTH 11671 S_IROTH, S_IWOTH, S_IXOTH
@@ -12318,7 +12322,7 @@ arith_apply(operator op, v_n_t *numstack, v_n_t **numstackptr)
12318} 12322}
12319 12323
12320/* longest must be first */ 12324/* longest must be first */
12321static const char op_tokens[] = { 12325static const char op_tokens[] ALIGN1 = {
12322 '<','<','=',0, TOK_LSHIFT_ASSIGN, 12326 '<','<','=',0, TOK_LSHIFT_ASSIGN,
12323 '>','>','=',0, TOK_RSHIFT_ASSIGN, 12327 '>','>','=',0, TOK_RSHIFT_ASSIGN,
12324 '<','<', 0, TOK_LSHIFT, 12328 '<','<', 0, TOK_LSHIFT,
diff --git a/shell/hush.c b/shell/hush.c
index 275b69ef3..5796f1127 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -126,7 +126,8 @@ extern char **environ; /* This is in <unistd.h>, but protected with __USE_GNU */
126/* broken, of course, but OK for testing */ 126/* broken, of course, but OK for testing */
127static const char *indenter(int i) 127static const char *indenter(int i)
128{ 128{
129 static const char blanks[] = " "; 129 static const char blanks[] ALIGN1 =
130 " ";
130 return &blanks[sizeof(blanks) - i - 1]; 131 return &blanks[sizeof(blanks) - i - 1];
131} 132}
132#define debug_printf_clean(...) fprintf(stderr, __VA_ARGS__) 133#define debug_printf_clean(...) fprintf(stderr, __VA_ARGS__)
@@ -3656,7 +3657,7 @@ static void setup_job_control(void)
3656int hush_main(int argc, char **argv); 3657int hush_main(int argc, char **argv);
3657int hush_main(int argc, char **argv) 3658int hush_main(int argc, char **argv)
3658{ 3659{
3659 static const char version_str[] = "HUSH_VERSION="HUSH_VER_STR; 3660 static const char version_str[] ALIGN1 = "HUSH_VERSION="HUSH_VER_STR;
3660 static const struct variable const_shell_ver = { 3661 static const struct variable const_shell_ver = {
3661 .next = NULL, 3662 .next = NULL,
3662 .varstr = (char*)version_str, 3663 .varstr = (char*)version_str,
diff --git a/shell/lash.c b/shell/lash.c
index e5c7ef670..c28a1034a 100644
--- a/shell/lash.c
+++ b/shell/lash.c
@@ -711,7 +711,7 @@ static char * strsep_space(char *string, int * ix)
711 711
712static int expand_arguments(char *command) 712static int expand_arguments(char *command)
713{ 713{
714 static const char out_of_space[] = "out of space during expansion"; 714 static const char out_of_space[] ALIGN1 = "out of space during expansion";
715 715
716 int total_length = 0, length, i, retval, ix = 0; 716 int total_length = 0, length, i, retval, ix = 0;
717 expand_t expand_result; 717 expand_t expand_result;
diff --git a/shell/msh.c b/shell/msh.c
index effdc0107..f1b3f0525 100644
--- a/shell/msh.c
+++ b/shell/msh.c
@@ -280,7 +280,7 @@ struct brkcon {
280 * -x: trace 280 * -x: trace
281 * -u: unset variables net diagnostic 281 * -u: unset variables net diagnostic
282 */ 282 */
283static char flags['z' - 'a' + 1]; 283static char flags['z' - 'a' + 1] ALIGN1;
284/* this looks weird, but is OK ... we index FLAG with 'a'...'z' */ 284/* this looks weird, but is OK ... we index FLAG with 'a'...'z' */
285#define FLAG (flags - 'a') 285#define FLAG (flags - 'a')
286 286
@@ -577,7 +577,7 @@ struct here {
577 struct here *h_next; 577 struct here *h_next;
578}; 578};
579 579
580static const char * const signame[] = { 580static const char *const signame[] = {
581 "Signal 0", 581 "Signal 0",
582 "Hangup", 582 "Hangup",
583 NULL, /* interrupt */ 583 NULL, /* interrupt */
@@ -593,11 +593,10 @@ static const char * const signame[] = {
593 "SIGUSR2", 593 "SIGUSR2",
594 NULL, /* broken pipe */ 594 NULL, /* broken pipe */
595 "Alarm clock", 595 "Alarm clock",
596 "Terminated", 596 "Terminated"
597}; 597};
598 598
599 599
600
601struct res { 600struct res {
602 const char *r_name; 601 const char *r_name;
603 int r_val; 602 int r_val;
@@ -4209,7 +4208,7 @@ static char *unquote(char *as)
4209#define NDENT ((BLKSIZ+sizeof(struct dirent)-1)/sizeof(struct dirent)) 4208#define NDENT ((BLKSIZ+sizeof(struct dirent)-1)/sizeof(struct dirent))
4210 4209
4211static struct wdblock *cl, *nl; 4210static struct wdblock *cl, *nl;
4212static char spcl[] = "[?*"; 4211static const char spcl[] ALIGN1= "[?*";
4213 4212
4214static struct wdblock *glob(char *cp, struct wdblock *wb) 4213static struct wdblock *glob(char *cp, struct wdblock *wb)
4215{ 4214{