aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2020-06-20 12:13:21 +0100
committerRon Yorston <rmy@pobox.com>2020-06-20 12:13:21 +0100
commit6f8b2f4508610e9bd443f60535cc06df653f3c83 (patch)
tree7af90cdd74db5a98b0cbb8732e6e5de4c8c74150
parentf41697493de1a25d0f56930d81cf9560172ce7b7 (diff)
downloadbusybox-w32-6f8b2f4508610e9bd443f60535cc06df653f3c83.tar.gz
busybox-w32-6f8b2f4508610e9bd443f60535cc06df653f3c83.tar.bz2
busybox-w32-6f8b2f4508610e9bd443f60535cc06df653f3c83.zip
ash: forkshell code shrink
Don't pass global pointers to forkshell_size()/forkshell_copy() via the forkshell structure, just reference them directly.
-rw-r--r--shell/ash.c26
1 files changed, 8 insertions, 18 deletions
diff --git a/shell/ash.c b/shell/ash.c
index d76d3f571..beadca68c 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -16047,14 +16047,12 @@ forkshell_size(struct forkshell *fs)
16047{ 16047{
16048 struct datasize ds = {0, 0}; 16048 struct datasize ds = {0, 0};
16049 16049
16050 ds = globals_var_size(ds, fs->gvp); 16050 ds = globals_var_size(ds, ash_ptr_to_globals_var);
16051 ds = globals_misc_size(ds, fs->gmp); 16051 ds = globals_misc_size(ds, ash_ptr_to_globals_misc);
16052 ds = cmdtable_size(ds, fs->cmdtable); 16052 ds = cmdtable_size(ds, cmdtable);
16053#if ENABLE_ASH_ALIAS 16053#if ENABLE_ASH_ALIAS
16054 ds = atab_size(ds, fs->atab); 16054 ds = atab_size(ds, atab);
16055#endif 16055#endif
16056 /* optlist_transfer(sending, fd); */
16057 /* misc_transfer(sending, fd); */
16058 16056
16059 ds.funcblocksize = calcsize(ds.funcblocksize, fs->n); 16057 ds.funcblocksize = calcsize(ds.funcblocksize, fs->n);
16060 ds = argv_size(ds, fs->argv); 16058 ds = argv_size(ds, fs->argv);
@@ -16072,15 +16070,15 @@ static void
16072forkshell_copy(struct forkshell *fs, struct forkshell *new) 16070forkshell_copy(struct forkshell *fs, struct forkshell *new)
16073{ 16071{
16074 memcpy(new, fs, sizeof(struct forkshell)); /* non-pointer stuff */ 16072 memcpy(new, fs, sizeof(struct forkshell)); /* non-pointer stuff */
16075 new->gvp = globals_var_copy(fs->gvp); 16073 new->gvp = globals_var_copy(ash_ptr_to_globals_var);
16076 new->gmp = globals_misc_copy(fs->gmp); 16074 new->gmp = globals_misc_copy(ash_ptr_to_globals_misc);
16077 new->cmdtable = cmdtable_copy(fs->cmdtable); 16075 new->cmdtable = cmdtable_copy(cmdtable);
16078 SAVE_PTR3(new->gvp, "gvp", NO_FREE, 16076 SAVE_PTR3(new->gvp, "gvp", NO_FREE,
16079 new->gmp, "gmp", NO_FREE, 16077 new->gmp, "gmp", NO_FREE,
16080 new->cmdtable, "cmdtable", NO_FREE); 16078 new->cmdtable, "cmdtable", NO_FREE);
16081 16079
16082#if ENABLE_ASH_ALIAS 16080#if ENABLE_ASH_ALIAS
16083 new->atab = atab_copy(fs->atab); 16081 new->atab = atab_copy(atab);
16084 SAVE_PTR(new->atab, "atab", NO_FREE); 16082 SAVE_PTR(new->atab, "atab", NO_FREE);
16085#endif 16083#endif
16086 16084
@@ -16226,14 +16224,6 @@ forkshell_prepare(struct forkshell *fs)
16226 static int num = 0; 16224 static int num = 0;
16227#endif 16225#endif
16228 16226
16229 /* Calculate size of "new" */
16230 fs->gvp = ash_ptr_to_globals_var;
16231 fs->gmp = ash_ptr_to_globals_misc;
16232 fs->cmdtable = cmdtable;
16233#if ENABLE_ASH_ALIAS
16234 fs->atab = atab;
16235#endif
16236
16237 /* calculate size of structure, funcblock and funcstring */ 16227 /* calculate size of structure, funcblock and funcstring */
16238 ds = forkshell_size(fs); 16228 ds = forkshell_size(fs);
16239 size = sizeof(struct forkshell) + ds.funcblocksize + ds.funcstringsize; 16229 size = sizeof(struct forkshell) + ds.funcblocksize + ds.funcstringsize;