From 03e230cc54103d18e9c8a18208c7d27805400a71 Mon Sep 17 00:00:00 2001 From: Tanaka Akira Date: Wed, 15 Dec 1999 21:29:55 +0000 Subject: manual:9047 --- Src/Builtins/rlimits.c | 8 +-- Src/Builtins/rlimits.mdd | 2 - Src/Builtins/sched.c | 8 +-- Src/Builtins/sched.mdd | 2 - Src/Makemod.in.in | 15 +++- Src/Modules/cap.c | 8 +-- Src/Modules/cap.mdd | 2 - Src/Modules/clone.c | 8 +-- Src/Modules/clone.mdd | 2 - Src/Modules/example.c | 10 +-- Src/Modules/example.mdd | 2 - Src/Modules/files.c | 8 +-- Src/Modules/files.mdd | 2 - Src/Modules/mapfile.c | 8 +-- Src/Modules/mapfile.mdd | 2 - Src/Modules/mathfunc.c | 8 +-- Src/Modules/mathfunc.mdd | 2 - Src/Modules/parameter.c | 8 +-- Src/Modules/parameter.mdd | 2 - Src/Modules/stat.c | 8 +-- Src/Modules/stat.mdd | 2 - Src/Modules/zftp.c | 8 +-- Src/Modules/zftp.mdd | 2 - Src/Modules/zprof.c | 8 +-- Src/Modules/zprof.mdd | 2 - Src/Modules/zutil.c | 8 +-- Src/Modules/zutil.mdd | 2 - Src/Zle/compcore.c | 2 +- Src/Zle/compctl.c | 8 +-- Src/Zle/compctl.mdd | 4 +- Src/Zle/complete.c | 8 +-- Src/Zle/complete.mdd | 6 +- Src/Zle/complist.c | 8 +-- Src/Zle/complist.mdd | 4 +- Src/Zle/compresult.c | 2 +- Src/Zle/computil.c | 8 +-- Src/Zle/computil.mdd | 4 +- Src/Zle/deltochar.c | 8 +-- Src/Zle/deltochar.mdd | 4 +- Src/Zle/zle.mdd | 2 - Src/Zle/zle_main.c | 8 +-- Src/Zle/zle_thingy.c | 4 +- Src/Zle/zle_tricky.c | 2 +- Src/Zle/zleparameter.c | 8 +-- Src/Zle/zleparameter.mdd | 4 +- Src/init.c | 16 ++--- Src/makepro.awk | 9 +++ Src/mkbltnmlst.sh | 24 +++---- Src/mkmakemod.sh | 177 +++++++++++++++++++--------------------------- Src/mkmodindex.sh | 39 +++++----- Src/module.c | 144 +++++++++++++++++++++---------------- Src/xmods.conf | 20 +++--- Src/zsh.mdd | 13 ++-- 53 files changed, 331 insertions(+), 352 deletions(-) (limited to 'Src') diff --git a/Src/Builtins/rlimits.c b/Src/Builtins/rlimits.c index f81ce2412..8a13fefdf 100644 --- a/Src/Builtins/rlimits.c +++ b/Src/Builtins/rlimits.c @@ -625,21 +625,21 @@ static struct builtin bintab[] = { /**/ int -setup_(Module m) +setup_rlimits(Module m) { return 0; } /**/ int -boot_(Module m) +boot_rlimits(Module m) { return !addbuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); } /**/ int -cleanup_(Module m) +cleanup_rlimits(Module m) { deletebuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); return 0; @@ -647,7 +647,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_rlimits(Module m) { return 0; } diff --git a/Src/Builtins/rlimits.mdd b/Src/Builtins/rlimits.mdd index 44a92906c..129adf901 100644 --- a/Src/Builtins/rlimits.mdd +++ b/Src/Builtins/rlimits.mdd @@ -1,5 +1,3 @@ -name=zsh/rlimits - autobins="limit ulimit unlimit" objects="rlimits.o" diff --git a/Src/Builtins/sched.c b/Src/Builtins/sched.c index 9dcdd9ece..77cc27261 100644 --- a/Src/Builtins/sched.c +++ b/Src/Builtins/sched.c @@ -185,14 +185,14 @@ static struct builtin bintab[] = { /**/ int -setup_(Module m) +setup_sched(Module m) { return 0; } /**/ int -boot_(Module m) +boot_sched(Module m) { if(!addbuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab))) return 1; @@ -202,7 +202,7 @@ boot_(Module m) /**/ int -cleanup_(Module m) +cleanup_sched(Module m) { struct schedcmd *sch, *schn; @@ -218,7 +218,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_sched(Module m) { return 0; } diff --git a/Src/Builtins/sched.mdd b/Src/Builtins/sched.mdd index 7f150f4a7..6ed749f32 100644 --- a/Src/Builtins/sched.mdd +++ b/Src/Builtins/sched.mdd @@ -1,5 +1,3 @@ -name=zsh/sched - autobins="sched" objects="sched.o" diff --git a/Src/Makemod.in.in b/Src/Makemod.in.in index 6d6e6af05..050a0682e 100644 --- a/Src/Makemod.in.in +++ b/Src/Makemod.in.in @@ -128,7 +128,20 @@ install.modules: install.modules-here uninstall.modules: uninstall.modules-here install.bin-here uninstall.bin-here: -install.modules-here uninstall.modules-here: + +install.modules-here: + modules='$(MODULES)'; \ + if test -n "$$modules"; then $(sdir_top)/mkinstalldirs $(DESTDIR)$(MODDIR); fi; \ + for mod in $$modules; do \ + $(INSTALL_PROGRAM) $$mod $(DESTDIR)$(MODDIR)/$$mod; \ + done + +uninstall.modules-here: + modules='$(MODULES)'; for mod in $$modules; do \ + if test -f $(DESTDIR)$(MODDIR)/$$mod; then \ + rm -f $(DESTDIR)$(MODDIR)/$$mod; \ + else :; fi; \ + done # ========== DEPENDENCIES FOR CLEANUP ========== diff --git a/Src/Modules/cap.c b/Src/Modules/cap.c index bc8fb5b8c..e2f01ddee 100644 --- a/Src/Modules/cap.c +++ b/Src/Modules/cap.c @@ -124,21 +124,21 @@ static struct builtin bintab[] = { /**/ int -setup_(Module m) +setup_cap(Module m) { return 0; } /**/ int -boot_(Module m) +boot_cap(Module m) { return !addbuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); } /**/ int -cleanup_(Module m) +cleanup_cap(Module m) { deletebuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); return 0; @@ -146,7 +146,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_cap(Module m) { return 0; } diff --git a/Src/Modules/cap.mdd b/Src/Modules/cap.mdd index 07d46f252..97f377e9d 100644 --- a/Src/Modules/cap.mdd +++ b/Src/Modules/cap.mdd @@ -1,5 +1,3 @@ -name=zsh/cap - autobins="cap getcap setcap" objects="cap.o" diff --git a/Src/Modules/clone.c b/Src/Modules/clone.c index 112c5a51a..59f66e1b5 100644 --- a/Src/Modules/clone.c +++ b/Src/Modules/clone.c @@ -98,21 +98,21 @@ static struct builtin bintab[] = { /**/ int -setup_(Module m) +setup_clone(Module m) { return 0; } /**/ int -boot_(Module m) +boot_clone(Module m) { return !addbuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); } /**/ int -cleanup_(Module m) +cleanup_clone(Module m) { deletebuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); return 0; @@ -120,7 +120,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_clone(Module m) { return 0; } diff --git a/Src/Modules/clone.mdd b/Src/Modules/clone.mdd index f5c673977..5277d3151 100644 --- a/Src/Modules/clone.mdd +++ b/Src/Modules/clone.mdd @@ -1,5 +1,3 @@ -name=zsh/clone - autobins="clone" objects="clone.o" diff --git a/Src/Modules/example.c b/Src/Modules/example.c index bf4ad60fb..43199e350 100644 --- a/Src/Modules/example.c +++ b/Src/Modules/example.c @@ -159,7 +159,7 @@ ex_wrapper(List list, FuncWrap w, char *name) } /* - * boot_ is executed when the module is loaded. + * boot_example is executed when the module is loaded. */ static struct builtin bintab[] = { @@ -188,7 +188,7 @@ static struct funcwrap wrapper[] = { /**/ int -setup_(Module m) +setup_example(Module m) { printf("The example module has now been set up.\n"); fflush(stdout); @@ -197,7 +197,7 @@ setup_(Module m) /**/ int -boot_(Module m) +boot_example(Module m) { intparam = 42; strparam = ztrdup("example"); @@ -214,7 +214,7 @@ boot_(Module m) /**/ int -cleanup_(Module m) +cleanup_example(Module m) { deletebuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); deleteconddefs(m->nam, cotab, sizeof(cotab)/sizeof(*cotab)); @@ -226,7 +226,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_example(Module m) { printf("Thank you for using the example module. Have a nice day.\n"); fflush(stdout); diff --git a/Src/Modules/example.mdd b/Src/Modules/example.mdd index fdaf01888..e32e8182e 100644 --- a/Src/Modules/example.mdd +++ b/Src/Modules/example.mdd @@ -1,5 +1,3 @@ -name=zsh/example - autobins="example" autoinfixconds="ex" diff --git a/Src/Modules/files.c b/Src/Modules/files.c index 24cc66a2b..ac3bedd04 100644 --- a/Src/Modules/files.c +++ b/Src/Modules/files.c @@ -714,21 +714,21 @@ static struct builtin bintab[] = { /**/ int -setup_(Module m) +setup_files(Module m) { return 0; } /**/ int -boot_(Module m) +boot_files(Module m) { return !addbuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); } /**/ int -cleanup_(Module m) +cleanup_files(Module m) { deletebuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); return 0; @@ -736,7 +736,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_files(Module m) { return 0; } diff --git a/Src/Modules/files.mdd b/Src/Modules/files.mdd index 508f6b9b5..171790b43 100644 --- a/Src/Modules/files.mdd +++ b/Src/Modules/files.mdd @@ -1,5 +1,3 @@ -name=zsh/files - autobins="chgrp chown ln mkdir mv rm rmdir sync" objects="files.o" diff --git a/Src/Modules/mapfile.c b/Src/Modules/mapfile.c index 5bbc17eca..11553609c 100644 --- a/Src/Modules/mapfile.c +++ b/Src/Modules/mapfile.c @@ -329,14 +329,14 @@ scanpmmapfile(HashTable ht, ScanFunc func, int flags) /**/ int -setup_(Module m) +setup_mapfile(Module m) { return 0; } /**/ int -boot_(Module m) +boot_mapfile(Module m) { /* Create the special associative array. */ @@ -348,7 +348,7 @@ boot_(Module m) /**/ int -cleanup_(Module m) +cleanup_mapfile(Module m) { Param pm; @@ -364,7 +364,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_mapfile(Module m) { return 0; } diff --git a/Src/Modules/mapfile.mdd b/Src/Modules/mapfile.mdd index 6bdd26afc..9adb36162 100644 --- a/Src/Modules/mapfile.mdd +++ b/Src/Modules/mapfile.mdd @@ -1,5 +1,3 @@ -name=zsh/mapfile - autoparams="mapfile" objects="mapfile.o" diff --git a/Src/Modules/mathfunc.c b/Src/Modules/mathfunc.c index 392424a48..06184fd96 100644 --- a/Src/Modules/mathfunc.c +++ b/Src/Modules/mathfunc.c @@ -450,21 +450,21 @@ math_func(char *name, int argc, mnumber *argv, int id) /**/ int -setup_(Module m) +setup_mathfunc(Module m) { return 0; } /**/ int -boot_(Module m) +boot_mathfunc(Module m) { return !addmathfuncs(m->nam, mftab, sizeof(mftab)/sizeof(*mftab)); } /**/ int -cleanup_(Module m) +cleanup_mathfunc(Module m) { deletemathfuncs(m->nam, mftab, sizeof(mftab)/sizeof(*mftab)); return 0; @@ -472,7 +472,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_mathfunc(Module m) { return 0; } diff --git a/Src/Modules/mathfunc.mdd b/Src/Modules/mathfunc.mdd index a06d20c6d..33a861f77 100644 --- a/Src/Modules/mathfunc.mdd +++ b/Src/Modules/mathfunc.mdd @@ -1,5 +1,3 @@ -name=zsh/mathfunc - autobins="mathfunc" objects="mathfunc.o" diff --git a/Src/Modules/parameter.c b/Src/Modules/parameter.c index cd5b580ce..0169b4654 100644 --- a/Src/Modules/parameter.c +++ b/Src/Modules/parameter.c @@ -1940,7 +1940,7 @@ static struct funcwrap wrapper[] = { /**/ int -setup_(Module m) +setup_parameter(Module m) { incleanup = 0; @@ -1949,7 +1949,7 @@ setup_(Module m) /**/ int -boot_(Module m) +boot_parameter(Module m) { /* Create the special associative arrays. * As an example for autoloaded parameters, this is probably a bad @@ -1987,7 +1987,7 @@ boot_(Module m) /**/ int -cleanup_(Module m) +cleanup_parameter(Module m) { Param pm; struct pardef *def; @@ -2009,7 +2009,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_parameter(Module m) { return 0; } diff --git a/Src/Modules/parameter.mdd b/Src/Modules/parameter.mdd index 122f72bd2..1ee48f859 100644 --- a/Src/Modules/parameter.mdd +++ b/Src/Modules/parameter.mdd @@ -1,5 +1,3 @@ -name=zsh/parameter - autoparams="parameters commands functions dis_functions funcstack builtins dis_builtins reswords dis_reswords options modules dirstack history historywords jobtexts jobdirs jobstates nameddirs userdirs aliases dis_aliases galiases dis_galiases" objects="parameter.o" diff --git a/Src/Modules/stat.c b/Src/Modules/stat.c index 7e7463bb7..3a98db0e3 100644 --- a/Src/Modules/stat.c +++ b/Src/Modules/stat.c @@ -590,21 +590,21 @@ static struct builtin bintab[] = { /**/ int -setup_(Module m) +setup_stat(Module m) { return 0; } /**/ int -boot_(Module m) +boot_stat(Module m) { return !addbuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); } /**/ int -cleanup_(Module m) +cleanup_stat(Module m) { deletebuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); return 0; @@ -612,7 +612,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_stat(Module m) { return 0; } diff --git a/Src/Modules/stat.mdd b/Src/Modules/stat.mdd index 81f73f482..b775fda09 100644 --- a/Src/Modules/stat.mdd +++ b/Src/Modules/stat.mdd @@ -1,5 +1,3 @@ -name=zsh/stat - autobins="stat" objects="stat.o" diff --git a/Src/Modules/zftp.c b/Src/Modules/zftp.c index debb1a6bb..cf024643d 100644 --- a/Src/Modules/zftp.c +++ b/Src/Modules/zftp.c @@ -3201,14 +3201,14 @@ bin_zftp(char *name, char **args, char *ops, int func) /**/ int -setup_(Module m) +setup_zftp(Module m) { return 0; } /**/ int -boot_(Module m) +boot_zftp(Module m) { int ret; if ((ret = addbuiltins(m->nam, bintab, @@ -3232,7 +3232,7 @@ boot_(Module m) /**/ int -cleanup_(Module m) +cleanup_zftp(Module m) { /* * There are various parameters hanging around, but they're @@ -3260,7 +3260,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_zftp(Module m) { return 0; } diff --git a/Src/Modules/zftp.mdd b/Src/Modules/zftp.mdd index 98f29b13f..83051ae54 100644 --- a/Src/Modules/zftp.mdd +++ b/Src/Modules/zftp.mdd @@ -1,5 +1,3 @@ -name=zsh/zftp - autobins="zftp" objects="zftp.o" diff --git a/Src/Modules/zprof.c b/Src/Modules/zprof.c index 276ada4d6..2dacd45a2 100644 --- a/Src/Modules/zprof.c +++ b/Src/Modules/zprof.c @@ -291,14 +291,14 @@ static struct funcwrap wrapper[] = { /**/ int -setup_(Module m) +setup_zprof(Module m) { return 0; } /**/ int -boot_(Module m) +boot_zprof(Module m) { calls = NULL; ncalls = 0; @@ -311,7 +311,7 @@ boot_(Module m) /**/ int -cleanup_(Module m) +cleanup_zprof(Module m) { freepfuncs(calls); freeparcs(arcs); @@ -322,7 +322,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_zprof(Module m) { return 0; } diff --git a/Src/Modules/zprof.mdd b/Src/Modules/zprof.mdd index fad9a1dbf..de473cbba 100644 --- a/Src/Modules/zprof.mdd +++ b/Src/Modules/zprof.mdd @@ -1,5 +1,3 @@ -name=zsh/zprof - autobins="zprof" objects="zprof.o" diff --git a/Src/Modules/zutil.c b/Src/Modules/zutil.c index 065b027ce..590678f98 100644 --- a/Src/Modules/zutil.c +++ b/Src/Modules/zutil.c @@ -729,7 +729,7 @@ static struct builtin bintab[] = { /**/ int -setup_(Module m) +setup_zutil(Module m) { zstyles = NULL; @@ -738,14 +738,14 @@ setup_(Module m) /**/ int -boot_(Module m) +boot_zutil(Module m) { return !addbuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); } /**/ int -cleanup_(Module m) +cleanup_zutil(Module m) { deletebuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); return 0; @@ -753,7 +753,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_zutil(Module m) { freestypat(zstyles); diff --git a/Src/Modules/zutil.mdd b/Src/Modules/zutil.mdd index 30cd1576a..edc1f0d32 100644 --- a/Src/Modules/zutil.mdd +++ b/Src/Modules/zutil.mdd @@ -1,5 +1,3 @@ -name=zsh/zutil - objects="zutil.o" autobins="zformat zstyle" diff --git a/Src/Zle/compcore.c b/Src/Zle/compcore.c index acf1799f6..8356ad5a5 100644 --- a/Src/Zle/compcore.c +++ b/Src/Zle/compcore.c @@ -145,7 +145,7 @@ int permmnum, permgnum, lastpermmnum, lastpermgnum; /**/ mod_export int nmatches; /**/ -int smatches; +mod_export int smatches; /* != 0 if only explanation strings should be printed */ diff --git a/Src/Zle/compctl.c b/Src/Zle/compctl.c index 69db9e04a..d13bc2252 100644 --- a/Src/Zle/compctl.c +++ b/Src/Zle/compctl.c @@ -3732,7 +3732,7 @@ static struct builtin bintab[] = { /**/ int -setup_(Module m) +setup_compctl(Module m) { compctlreadptr = compctlread; createcompctltable(); @@ -3752,7 +3752,7 @@ setup_(Module m) /**/ int -boot_(Module m) +boot_compctl(Module m) { addhookfunc("compctl_make", (Hookfn) ccmakehookfn); addhookfunc("compctl_before", (Hookfn) ccbeforehookfn); @@ -3762,7 +3762,7 @@ boot_(Module m) /**/ int -cleanup_(Module m) +cleanup_compctl(Module m) { deletehookfunc("compctl_make", (Hookfn) ccmakehookfn); deletehookfunc("compctl_before", (Hookfn) ccbeforehookfn); @@ -3773,7 +3773,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_compctl(Module m) { deletehashtable(compctltab); diff --git a/Src/Zle/compctl.mdd b/Src/Zle/compctl.mdd index 6da7e002b..a76fef3a0 100644 --- a/Src/Zle/compctl.mdd +++ b/Src/Zle/compctl.mdd @@ -1,6 +1,4 @@ -name=zsh/compctl - -moddeps="zsh/complete zsh/zle" +moddeps="complete zle" autobins="compctl" diff --git a/Src/Zle/complete.c b/Src/Zle/complete.c index bf3102972..a78a12058 100644 --- a/Src/Zle/complete.c +++ b/Src/Zle/complete.c @@ -1350,7 +1350,7 @@ struct hookdef comphooks[] = { /**/ int -setup_(Module m) +setup_complete(Module m) { hasperm = 0; @@ -1371,7 +1371,7 @@ setup_(Module m) /**/ int -boot_(Module m) +boot_complete(Module m) { addhookfunc("complete", (Hookfn) do_completion); addhookfunc("before_complete", (Hookfn) before_complete); @@ -1391,7 +1391,7 @@ boot_(Module m) /**/ int -cleanup_(Module m) +cleanup_complete(Module m) { deletehookfunc("complete", (Hookfn) do_completion); deletehookfunc("before_complete", (Hookfn) before_complete); @@ -1410,7 +1410,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_complete(Module m) { if (compwords) freearray(compwords); diff --git a/Src/Zle/complete.mdd b/Src/Zle/complete.mdd index 8e9796d86..70e275b4e 100644 --- a/Src/Zle/complete.mdd +++ b/Src/Zle/complete.mdd @@ -1,8 +1,6 @@ -name=zsh/complete +moddeps="zle" -moddeps="zsh/zle" - -autobins="compadd compset" +autobins="compgen compadd compset" autoprefixconds="prefix suffix between after" diff --git a/Src/Zle/complist.c b/Src/Zle/complist.c index ce00ed240..32a2d99f3 100644 --- a/Src/Zle/complist.c +++ b/Src/Zle/complist.c @@ -1196,14 +1196,14 @@ menuselect(char **args) /**/ int -setup_(Module m) +setup_complist(Module m) { return 0; } /**/ int -boot_(Module m) +boot_complist(Module m) { mtab = NULL; mgtab = NULL; @@ -1237,7 +1237,7 @@ boot_(Module m) /**/ int -cleanup_(Module m) +cleanup_complist(Module m) { free(mtab); free(mgtab); @@ -1251,7 +1251,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_complist(Module m) { return 0; } diff --git a/Src/Zle/complist.mdd b/Src/Zle/complist.mdd index a7d85fad7..4b6a5afe8 100644 --- a/Src/Zle/complist.mdd +++ b/Src/Zle/complist.mdd @@ -1,5 +1,3 @@ -name=zsh/complist - -moddeps="zsh/complete zsh/zle" +moddeps="complete zle" objects="complist.o" diff --git a/Src/Zle/compresult.c b/Src/Zle/compresult.c index 3bb7c60ce..9e66bab15 100644 --- a/Src/Zle/compresult.c +++ b/Src/Zle/compresult.c @@ -1491,7 +1491,7 @@ calclist(int showall) } /**/ -int asklist(void) +mod_export int asklist(void) { /* Set the cursor below the prompt. */ trashzle(); diff --git a/Src/Zle/computil.c b/Src/Zle/computil.c index 6b946de93..bb69e5bf8 100644 --- a/Src/Zle/computil.c +++ b/Src/Zle/computil.c @@ -2444,7 +2444,7 @@ static struct builtin bintab[] = { /**/ int -setup_(Module m) +setup_computil(Module m) { memset(cadef_cache, 0, sizeof(cadef_cache)); memset(cvdef_cache, 0, sizeof(cvdef_cache)); @@ -2458,14 +2458,14 @@ setup_(Module m) /**/ int -boot_(Module m) +boot_computil(Module m) { return !addbuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); } /**/ int -cleanup_(Module m) +cleanup_computil(Module m) { deletebuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); return 0; @@ -2473,7 +2473,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_computil(Module m) { int i; diff --git a/Src/Zle/computil.mdd b/Src/Zle/computil.mdd index d8190580b..cf2a13b60 100644 --- a/Src/Zle/computil.mdd +++ b/Src/Zle/computil.mdd @@ -1,6 +1,4 @@ -name=zsh/computil - -moddeps="zsh/complete zsh/zle" +moddeps="complete zle" objects="computil.o" diff --git a/Src/Zle/deltochar.c b/Src/Zle/deltochar.c index 5badca411..e3f9def0c 100644 --- a/Src/Zle/deltochar.c +++ b/Src/Zle/deltochar.c @@ -75,14 +75,14 @@ deltochar(char **args) /**/ int -setup_(Module m) +setup_deltochar(Module m) { return 0; } /**/ int -boot_(Module m) +boot_deltochar(Module m) { w_deletetochar = addzlefunction("delete-to-char", deltochar, ZLE_KILL | ZLE_KEEPSUFFIX); @@ -100,7 +100,7 @@ boot_(Module m) /**/ int -cleanup_(Module m) +cleanup_deltochar(Module m) { deletezlefunction(w_deletetochar); deletezlefunction(w_zaptochar); @@ -109,7 +109,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_deltochar(Module m) { return 0; } diff --git a/Src/Zle/deltochar.mdd b/Src/Zle/deltochar.mdd index 38cedb2a7..4d1f89d1c 100644 --- a/Src/Zle/deltochar.mdd +++ b/Src/Zle/deltochar.mdd @@ -1,5 +1,3 @@ -name=zsh/deltochar - -moddeps="zsh/zle" +moddeps="zle" objects="deltochar.o" diff --git a/Src/Zle/zle.mdd b/Src/Zle/zle.mdd index 23292dfb3..a5307084a 100644 --- a/Src/Zle/zle.mdd +++ b/Src/Zle/zle.mdd @@ -1,5 +1,3 @@ -name=zsh/zle - autobins="bindkey vared zle" objects="zle_bindings.o zle_hist.o zle_keymap.o zle_main.o \ diff --git a/Src/Zle/zle_main.c b/Src/Zle/zle_main.c index 4b572be25..420494a52 100644 --- a/Src/Zle/zle_main.c +++ b/Src/Zle/zle_main.c @@ -1003,7 +1003,7 @@ mod_export struct hookdef zlehooks[] = { /**/ int -setup_(Module m) +setup_zle(Module m) { /* Set up editor entry points */ trashzleptr = trashzle; @@ -1036,7 +1036,7 @@ setup_(Module m) /**/ int -boot_(Module m) +boot_zle(Module m) { addbuiltins(m->nam, bintab, sizeof(bintab)/sizeof(*bintab)); addhookdefs(m->nam, zlehooks, sizeof(zlehooks)/sizeof(*zlehooks)); @@ -1045,7 +1045,7 @@ boot_(Module m) /**/ int -cleanup_(Module m) +cleanup_zle(Module m) { if(zleactive) { zerrnam(m->nam, "can't unload the zle module while zle is active", @@ -1059,7 +1059,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_zle(Module m) { int i; diff --git a/Src/Zle/zle_thingy.c b/Src/Zle/zle_thingy.c index 2066fe2ed..84555d20b 100644 --- a/Src/Zle/zle_thingy.c +++ b/Src/Zle/zle_thingy.c @@ -49,7 +49,7 @@ /* Hashtable of thingies. Enabled nodes are those that refer to widgets. */ /**/ -HashTable thingytab; +mod_export HashTable thingytab; /**********************************/ /* hashtable management functions */ @@ -546,7 +546,7 @@ bin_zle_complete(char *name, char **args, char *ops, char func) Thingy t; Widget w, cw; - if (!require_module(name, "zsh/complete", 0, 0)) { + if (!require_module(name, "complete", 0, 0)) { zerrnam(name, "can't load complete module", NULL, 0); return 1; } diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c index 264b2f06d..9d6c925b8 100644 --- a/Src/Zle/zle_tricky.c +++ b/Src/Zle/zle_tricky.c @@ -334,7 +334,7 @@ mod_export int insubscr; /* Parameter pointer for completing keys of an assoc array. */ /**/ -Param keypm; +mod_export Param keypm; /* 1 if we are completing in a quoted string (or inside `...`) */ diff --git a/Src/Zle/zleparameter.c b/Src/Zle/zleparameter.c index d10fe99b1..c4347de6b 100644 --- a/Src/Zle/zleparameter.c +++ b/Src/Zle/zleparameter.c @@ -198,14 +198,14 @@ static struct pardef partab[] = { /**/ int -setup_(Module m) +setup_zleparameter(Module m) { return 0; } /**/ int -boot_(Module m) +boot_zleparameter(Module m) { struct pardef *def; @@ -232,7 +232,7 @@ boot_(Module m) /**/ int -cleanup_(Module m) +cleanup_zleparameter(Module m) { Param pm; struct pardef *def; @@ -249,7 +249,7 @@ cleanup_(Module m) /**/ int -finish_(Module m) +finish_zleparameter(Module m) { return 0; } diff --git a/Src/Zle/zleparameter.mdd b/Src/Zle/zleparameter.mdd index 6c88db966..d18b89662 100644 --- a/Src/Zle/zleparameter.mdd +++ b/Src/Zle/zleparameter.mdd @@ -1,6 +1,4 @@ -name=zsh/zleparameter - -moddeps="zsh/zle" +moddeps="zle" autoparams="widgets keymaps" diff --git a/Src/init.c b/Src/init.c index 5c2a68728..c53c81622 100644 --- a/Src/init.c +++ b/Src/init.c @@ -943,7 +943,7 @@ init_bltinmods(void) #include "bltinmods.list" - load_module("zsh/main"); + load_module("zsh"); } /**/ @@ -965,7 +965,7 @@ noop_function_int(int nothing) * avoid wasting space with the fallback functions. No other source * * file needs to know which modules are linked in. */ -#ifdef LINKED_XMOD_zshQszle +#ifdef LINKED_XMOD_zle /**/ mod_export ZleVoidFn trashzleptr = noop_function; @@ -978,26 +978,26 @@ mod_export ZleVoidIntFn spaceinlineptr = noop_function_int; /**/ mod_export ZleReadFn zlereadptr = autoload_zleread; -#else /* !LINKED_XMOD_zshQszle */ +#else /* !LINKED_XMOD_zle */ mod_export ZleVoidFn trashzleptr = noop_function; mod_export ZleVoidFn gotwordptr = noop_function; mod_export ZleVoidFn refreshptr = noop_function; mod_export ZleVoidIntFn spaceinlineptr = noop_function_int; -# ifdef UNLINKED_XMOD_zshQszle +# ifdef UNLINKED_XMOD_zle mod_export ZleReadFn zlereadptr = autoload_zleread; -# else /* !UNLINKED_XMOD_zshQszle */ +# else /* !UNLINKED_XMOD_zle */ mod_export ZleReadFn zlereadptr = fallback_zleread; -# endif /* !UNLINKED_XMOD_zshQszle */ +# endif /* !UNLINKED_XMOD_zle */ -#endif /* !LINKED_XMOD_zshQszle */ +#endif /* !LINKED_XMOD_zle */ /**/ unsigned char * autoload_zleread(char *lp, char *rp, int ha) { zlereadptr = fallback_zleread; - load_module("zsh/zle"); + load_module("zle"); return zleread(lp, rp, ha); } diff --git a/Src/makepro.awk b/Src/makepro.awk index eb063f092..350b2f9c8 100644 --- a/Src/makepro.awk +++ b/Src/makepro.awk @@ -109,6 +109,15 @@ BEGIN { gsub(/@>/, ")", dcltor) gsub(/@!/, ",", dcltor) + # If this is a module boot/cleanup function, conditionally rename it. + if(" " dtype " " ~ / int / && dcltor ~ / *@\+(boot|cleanup|setup|finish)_[_0-9A-Za-z]+@- *_\(\( *Module +[_0-9A-Za-z]+ *\)\) */) { + modtype = dnam + sub(/_.*$/, "", modtype) + printf "%s# if defined(DYNAMIC_NAME_CLASH_OK) && defined(MODULE)\n", locality + printf "%s# define " dnam " " modtype "_\n", locality + printf "%s# endif\n", locality + } + # If this is exported, add it to the exported symbol list. if(exported) printf "X%s\n", dnam diff --git a/Src/mkbltnmlst.sh b/Src/mkbltnmlst.sh index 94043cb9c..8e970d45e 100644 --- a/Src/mkbltnmlst.sh +++ b/Src/mkbltnmlst.sh @@ -11,7 +11,7 @@ test "x$srcdir" = "x" && srcdir=. MODBINS=${MODBINS-modules-bltin} XMODCF=${XMODCF-$srcdir/xmods.conf} -bin_mods=" zsh/main "`sed 's/^/ /;s/$/ /' $MODBINS` +bin_mods=" zsh "`sed 's/^/ /;s/$/ /' $MODBINS` x_mods=`cat $XMODCF` . ./modules.index @@ -20,7 +20,6 @@ trap "rm -f $1; exit 1" 1 2 15 exec > $1 for x_mod in $x_mods; do - q_x_mod=`echo $x_mod | sed 's,Q,Qq,g;s,_,Qu,g;s,/,Qs,g'` case "$bin_mods" in *" $x_mod "*) echo "/* linked-in known module \`$x_mod' */" @@ -31,10 +30,10 @@ for x_mod in $x_mods; do echo "/* non-linked-in known module \`$x_mod' */" linked=no esac - eval "modfile=\$modfile_$q_x_mod" + eval "loc=\$loc_$x_mod" unset moddeps autobins autoinfixconds autoprefixconds autoparams unset automathfuncs - . $srcdir/../$modfile + . $srcdir/../$loc/${x_mod}.mdd for bin in $autobins; do echo " add_autobin(\"$bin\", \"$x_mod\");" done @@ -59,11 +58,10 @@ done echo done_mods=" " for bin_mod in $bin_mods; do - q_bin_mod=`echo $bin_mod | sed 's,Q,Qq,g;s,_,Qu,g;s,/,Qs,g'` echo "/* linked-in module \`$bin_mod' */" - eval "modfile=\$modfile_$q_bin_mod" + eval "loc=\$loc_$bin_mod" unset moddeps - . $srcdir/../$modfile + . $srcdir/../$loc/${bin_mod}.mdd for dep in $moddeps; do case $done_mods in *" $dep "*) @@ -74,14 +72,14 @@ for bin_mod in $bin_mods; do esac done echo " {" - echo " extern int setup_${q_bin_mod} _((Module));" - echo " extern int boot_${q_bin_mod} _((Module));" - echo " extern int cleanup_${q_bin_mod} _((Module));" - echo " extern int finish_${q_bin_mod} _((Module));" + echo " extern int setup_${bin_mod} _((Module));" + echo " extern int boot_${bin_mod} _((Module));" + echo " extern int cleanup_${bin_mod} _((Module));" + echo " extern int finish_${bin_mod} _((Module));" echo echo " register_module(\"$bin_mod\"," - echo " setup_${q_bin_mod}, boot_${q_bin_mod}," - echo " cleanup_${q_bin_mod}, finish_${q_bin_mod});" + echo " setup_${bin_mod}, boot_${bin_mod}," + echo " cleanup_${bin_mod}, finish_${bin_mod});" echo " }" done_mods="$done_mods$bin_mod " done diff --git a/Src/mkmakemod.sh b/Src/mkmakemod.sh index e8005dea7..6807649fc 100644 --- a/Src/mkmakemod.sh +++ b/Src/mkmakemod.sh @@ -17,9 +17,8 @@ # defines one module. The .mdd file is actually a shell script, which will # be sourced. It may define the following shell variables: # -# name name of this module # moddeps modules on which this module depends (default none) -# nozshdep non-empty indicates no dependence on the `zsh/main' pseudo-module +# nozshdep non-empty indicates no dependence on the `zsh' pseudo-module # alwayslink if non-empty, always link the module into the executable # autobins builtins defined by the module, for autoloading # autoinfixconds infix condition codes defined by the module, for @@ -104,14 +103,14 @@ if $first_stage; then echo . Src/modules.index - bin_mods=" zsh/main "`sed 's/^/ /;s/$/ /' Src/modules-bltin` + bin_mods=" zsh "`sed 's/^/ /;s/$/ /' Src/modules-bltin` if grep '%@D@%D%' config.status >/dev/null; then is_dynamic=true else is_dynamic=false fi - here_mddnames= + here_modules= all_subdirs= all_modobjs= all_modules= @@ -120,31 +119,30 @@ if $first_stage; then all_proto= lastsub=// for module in $module_list; do - q_module=`echo $module | sed 's,Q,Qq,g;s,_,Qu,g;s,/,Qs,g'` - eval "modfile=\$modfile_$q_module" - case $modfile in - $the_subdir/$lastsub/*) ;; - $the_subdir/*/*) - lastsub=`echo $modfile | sed 's,^'$the_subdir'/,,;s,/[^/]*$,,'` - all_subdirs="$all_subdirs $lastsub" - ;; - $the_subdir/*) - mddname=`echo $modfile | sed 's,^.*/,,;s,\.mdd$,,'` - here_mddnames="$here_mddnames $mddname" + eval "loc=\$loc_$module" + case $loc in + $the_subdir) + here_modules="$here_modules $module" build=$is_dynamic case $is_dynamic@$bin_mods in *" $module "*) build=true - all_modobjs="$all_modobjs modobjs.${mddname}" ;; + all_modobjs="$all_modobjs modobjs.${module}" ;; true@*) - all_modules="$all_modules ${mddname}.\$(DL_EXT)" ;; + all_modules="$all_modules ${module}.\$(DL_EXT)" ;; esac - all_mdds="$all_mdds ${mddname}.mdd" - $build && all_mdhs="$all_mdhs ${mddname}.mdh" - $build && all_proto="$all_proto proto.${mddname}" + all_mdds="$all_mdds ${module}.mdd" + $build && all_mdhs="$all_mdhs ${module}.mdh" + $build && all_proto="$all_proto proto.${module}" + ;; + $lastsub | $lastsub/*) ;; + $the_subdir/*) + all_subdirs="$all_subdirs $loc" + lastsub=$loc ;; esac done + all_subdirs=`echo "$all_subdirs" | sed "s' $the_subdir/' 'g"` echo "MODOBJS =$all_modobjs" echo "MODULES =$all_modules" echo "MDDS =$all_mdds" @@ -171,41 +169,39 @@ if $first_stage; then other_mdhs= remote_mdhs= - for mddname in $here_mddnames; do + for module in $here_modules; do - unset name moddeps nozshdep alwayslink hasexport + unset moddeps nozshdep alwayslink hasexport unset autobins autoinfixconds autoprefixconds autoparams automathfuncs unset objects proto headers hdrdeps otherincs - . $top_srcdir/$the_subdir/${mddname}.mdd - q_name=`echo $name | sed 's,Q,Qq,g;s,_,Qu,g;s,/,Qs,g'` + . $top_srcdir/$the_subdir/${module}.mdd test -n "${moddeps+set}" || moddeps= - test -n "$nozshdep" || moddeps="$moddeps zsh/main" + test -n "$nozshdep" || moddeps="$moddeps zsh" test -n "${proto+set}" || proto=`echo $objects '' | sed 's,\.o ,.syms ,g'` dobjects=`echo $objects '' | sed 's,\.o ,..o ,g'` modhdeps= imports= - q_moddeps= + depimports= for dep in $moddeps; do - q_dep=`echo $dep | sed 's,Q,Qq,g;s,_,Qu,g;s,/,Qs,g'` - q_moddeps="$q_moddeps $q_dep" - eval "depfile=\$modfile_$q_dep" - eval `echo $depfile | sed 's,/\([^/]*\)\.mdd$,;depbase=\1,;s,^,loc=,'` - imports="$imports \$(IMPOPT)\$(dir_top)/$loc/${depbase}.export" + eval "loc=\$loc_$dep" + imports="$imports \$(IMPOPT)\$(dir_top)/$loc/$dep.export" + test "$loc" = "$the_subdir" && + depimports="$depimports $dep.export" case $the_subdir in $loc) - mdh="${depbase}.mdh" + mdh="${dep}.mdh" ;; $loc/*) - mdh="\$(dir_top)/$loc/${depbase}.mdh" + mdh="\$(dir_top)/$loc/${dep}.mdh" case "$other_mdhs " in *" $mdh "*) ;; *) other_mdhs="$other_mdhs $mdh" ;; esac ;; *) - mdh="\$(dir_top)/$loc/${depbase}.mdh" + mdh="\$(dir_top)/$loc/${dep}.mdh" case "$remote_mdhs " in *" $mdh "*) ;; *) remote_mdhs="$remote_mdhs $mdh" ;; @@ -215,91 +211,64 @@ if $first_stage; then modhdeps="$modhdeps $mdh" done - echo "##### ===== DEPENDENCIES GENERATED FROM ${mddname}.mdd ===== #####" + echo "##### ===== DEPENDENCIES GENERATED FROM ${module}.mdd ===== #####" echo - echo "MODOBJS_${mddname} = $objects" - echo "MODDOBJS_${mddname} = $dobjects \$(@E@NTRYOBJ)" - echo "SYMS_${mddname} = $proto" - echo "EPRO_${mddname} = "`echo $proto '' | sed 's,\.syms ,.epro ,g'` - echo "INCS_${mddname} = \$(EPRO_${mddname}) $otherincs" - echo "EXPIMP_${mddname} = $imports \$(EXPOPT)$mddname.export" - echo "NXPIMP_${mddname} =" + echo "MODOBJS_${module} = $objects" + echo "MODDOBJS_${module} = $dobjects \$(@E@NTRYOBJ)" + echo "SYMS_${module} = $proto" + echo "EPRO_${module} = "`echo $proto '' | sed 's,\.syms ,.epro ,g'` + echo "INCS_${module} = \$(EPRO_${module}) $otherincs" + echo "EXPIMP_${module} = $imports \$(EXPOPT)$module.export" + echo "NXPIMP_${module} =" echo - echo "proto.${mddname}: \$(EPRO_${mddname})" - echo "\$(SYMS_${mddname}): \$(PROTODEPS)" + echo "proto.${module}: \$(EPRO_${module})" + echo "\$(SYMS_${module}): \$(PROTODEPS)" echo - echo "${mddname}.export: \$(SYMS_${mddname})" - echo " ( echo '#!'; cat \$(SYMS_${mddname}) | sed -n '/^X/{s/^X//;p;}' | sort -u ) > \$@" + echo "${module}.export: \$(SYMS_${module})" + echo " ( echo '#!'; cat \$(SYMS_${module}) | sed -n '/^X/{s/^X//;p;}' | sort -u ) > \$@" echo - echo "modobjs.${mddname}: \$(MODOBJS_${mddname})" - echo " echo '' \$(MODOBJS_${mddname}) $modobjs_sed>> \$(dir_src)/stamp-modobjs.tmp" + echo "modobjs.${module}: \$(MODOBJS_${module})" + echo " echo '' \$(MODOBJS_${module}) $modobjs_sed>> \$(dir_src)/stamp-modobjs.tmp" echo if test -z "$alwayslink"; then - case " $all_modules" in *" ${mddname}."*) - echo "install.modules-here: install.modules.${mddname}" - echo "uninstall.modules-here: uninstall.modules.${mddname}" - echo - ;; esac - instsubdir=`echo $name | sed 's,^,/,;s,/[^/]*$,,'` - echo "install.modules.${mddname}: ${mddname}.\$(DL_EXT)" - echo " \$(sdir_top)/mkinstalldirs \$(DESTDIR)\$(MODDIR)${instsubdir}" - echo " \$(INSTALL_PROGRAM) ${mddname}.\$(DL_EXT) \$(DESTDIR)\$(MODDIR)/${name}.\$(DL_EXT)" - echo - echo "uninstall.modules.${mddname}:" - echo " rm -f \$(DESTDIR)\$(MODDIR)/${name}.\$(DL_EXT)" - echo - echo "${mddname}.\$(DL_EXT): \$(MODDOBJS_${mddname}) ${mddname}.export" + echo "${module}.\$(DL_EXT): \$(MODDOBJS_${module}) ${module}.export $depimports" echo ' rm -f $@' - echo " \$(DLLINK) \$(@E@XPIMP_$mddname) \$(@E@NTRYOPT) \$(MODDOBJS_${mddname}) \$(LIBS)" + echo " \$(DLLINK) \$(@E@XPIMP_$module) \$(@E@NTRYOPT) \$(MODDOBJS_${module}) \$(LIBS)" echo fi - echo "${mddname}.mdhi: ${mddname}.mdhs \$(INCS_${mddname})" + echo "${module}.mdhi: ${module}.mdhs \$(INCS_${module})" echo " @test -f \$@ || echo 'do not delete this file' > \$@" echo - echo "${mddname}.mdhs: ${mddname}.mdd" - echo " @\$(MAKE) -f \$(makefile) \$(MAKEDEFS) ${mddname}.mdh.tmp" - echo " @if cmp -s ${mddname}.mdh ${mddname}.mdh.tmp; then \\" - echo " rm -f ${mddname}.mdh.tmp; \\" - echo " echo \"\\\`${mddname}.mdh' is up to date.\"; \\" + echo "${module}.mdhs: ${module}.mdd" + echo " @\$(MAKE) -f \$(makefile) \$(MAKEDEFS) ${module}.mdh.tmp" + echo " @if cmp -s ${module}.mdh ${module}.mdh.tmp; then \\" + echo " rm -f ${module}.mdh.tmp; \\" + echo " echo \"\\\`${module}.mdh' is up to date.\"; \\" echo " else \\" - echo " mv -f ${mddname}.mdh.tmp ${mddname}.mdh; \\" - echo " echo \"Updated \\\`${mddname}.mdh'.\"; \\" + echo " mv -f ${module}.mdh.tmp ${module}.mdh; \\" + echo " echo \"Updated \\\`${module}.mdh'.\"; \\" echo " fi" - echo " echo 'timestamp for ${mddname}.mdh against ${mddname}.mdd' > \$@" + echo " echo 'timestamp for ${module}.mdh against ${module}.mdd' > \$@" echo - echo "${mddname}.mdh: ${modhdeps} ${headers} ${hdrdeps} ${mddname}.mdhi" - echo " @\$(MAKE) -f \$(makefile) \$(MAKEDEFS) ${mddname}.mdh.tmp" - echo " @mv -f ${mddname}.mdh.tmp ${mddname}.mdh" - echo " @echo \"Updated \\\`${mddname}.mdh'.\"" + echo "${module}.mdh: ${modhdeps} ${headers} ${hdrdeps} ${module}.mdhi" + echo " @\$(MAKE) -f \$(makefile) \$(MAKEDEFS) ${module}.mdh.tmp" + echo " @mv -f ${module}.mdh.tmp ${module}.mdh" + echo " @echo \"Updated \\\`${module}.mdh'.\"" echo - echo "${mddname}.mdh.tmp:" + echo "${module}.mdh.tmp:" echo " @( \\" - echo " echo '#ifndef have_${q_name}_module'; \\" - echo " echo '#define have_${q_name}_module'; \\" - echo " echo; \\" - echo " echo '# ifndef IMPORTING_MODULE_${q_name}'; \\" - echo " if test @SHORTBOOTNAMES@ = yes; then \\" - echo " echo '# ifndef MODULE'; \\" - echo " fi; \\" - echo " echo '# define boot_ boot_${q_name}'; \\" - echo " echo '# define cleanup_ cleanup_${q_name}'; \\" - echo " echo '# define setup_ setup_${q_name}'; \\" - echo " echo '# define finish_ finish_${q_name}'; \\" - echo " if test @SHORTBOOTNAMES@ = yes; then \\" - echo " echo '# endif /* !MODULE */'; \\" - echo " fi; \\" - echo " echo '# endif /* !IMPORTING_MODULE_${q_name} */'; \\" + echo " echo '#ifndef have_${module}_module'; \\" + echo " echo '#define have_${module}_module'; \\" echo " echo; \\" - if test -n "$moddeps"; then ( - set x $q_moddeps + if test -n "$moddeps"; then echo " echo '/* Module dependencies */'; \\" - for hdep in $modhdeps; do - shift - echo " echo '# define IMPORTING_MODULE_${1} 1'; \\" - echo " echo '# include \"${hdep}\"'; \\" - done + echo " for mod in $modhdeps; do \\" + echo " echo '# define USING_MODULE'; \\" + echo " echo '# include \"'\$\$mod'\"'; \\" + echo " done; \\" + echo " echo '# undef USING_MODULE'; \\" echo " echo; \\" - ) fi + fi if test -n "$headers"; then echo " echo '/* Extra headers for this module */'; \\" echo " for hdr in $headers; do \\" @@ -312,18 +281,18 @@ if $first_stage; then echo " echo; \\" fi if test -n "$proto"; then - echo " for epro in \$(EPRO_${mddname}); do \\" + echo " for epro in \$(EPRO_${module}); do \\" echo " echo '# include \"'\$\$epro'\"'; \\" echo " done; \\" echo " echo; \\" fi - echo " echo '#endif /* !have_${q_name}_module */'; \\" + echo " echo '#endif /* !have_${module}_module */'; \\" echo " ) > \$@" echo - echo "\$(MODOBJS_${mddname}) \$(MODDOBJS_${mddname}): ${mddname}.mdh" + echo "\$(MODOBJS_${module}) \$(MODDOBJS_${module}): ${module}.mdh" sed -e '/^ *: *<< *\\Make *$/,/^Make$/!d' \ -e 's/^ *: *<< *\\Make *$//; /^Make$/d' \ - < $top_srcdir/$the_subdir/${mddname}.mdd + < $top_srcdir/$the_subdir/${module}.mdd echo done diff --git a/Src/mkmodindex.sh b/Src/mkmodindex.sh index 75a7e43bc..b4616f638 100644 --- a/Src/mkmodindex.sh +++ b/Src/mkmodindex.sh @@ -13,25 +13,28 @@ while test $# -ne 0; do dir=$1 shift ( set $dir/*.mdd; test -f $1 ) || continue - for modfile in $dir/*.mdd; do - name=`( . $modfile; echo $name )` - case "$name" in *[!/_0-9A-Za-z]* | /* | */ | *//*) - echo >&2 "WARNING: illegally named module \`$name' in $modfile" - echo >&2 " (ignoring it)" - continue - ;; esac - q_name=`echo $name | sed 's,Q,Qq,g;s,_,Qu,g;s,/,Qs,g'` - case " $module_list " in *" $name "*) - eval "omodfile=\$modfile_$q_name" - echo >&2 "WARNING: module \`$name' (in $omodfile) duplicated in $modfile" - echo >&2 " (ignoring duplicate)" - continue - ;; esac - module_list="$module_list$name " - echo "modfile_$q_name=$modfile" - eval "modfile_$q_name=\$modfile" + dosubs=false + for mod in `echo '' $dir/*.mdd '' | sed 's, [^ ]*/, ,g;s,\.mdd , ,g'`; do + case `echo "$mod@ $module_list " | sed 's,^.*[^_0-9A-Za-z].*@,@@,'` in + @@*) + echo >&2 "WARNING: illegally named module \`$mod' in $dir" + echo >&2 " (ignoring it)" + ;; + *@*" $mod "*) + eval "loc=\$loc_$mod" + echo >&2 "WARNING: module \`$mod' (in $loc) duplicated in $dir" + echo >&2 " (ignoring duplicate)" + dosubs=true + ;; + *) + module_list="$module_list$mod " + echo "loc_$mod=$dir" + eval "loc_$mod=\$dir" + dosubs=true + ;; + esac done - set `echo $dir/*/. '' | sed 's,/\. , ,g'` "$@" + $dosubs && set `echo $dir/*/. '' | sed 's,/\. , ,g'` "$@" done echo diff --git a/Src/module.c b/Src/module.c index fc7f7a722..09507d73f 100644 --- a/Src/module.c +++ b/Src/module.c @@ -36,34 +36,34 @@ LinkList linkedmodules; -/* The `zsh/main' module contains all the base code that can't actually be * - * built as a separate module. It is initialised by main(), so there's * - * nothing for the boot function to do. */ +/* The `zsh' module contains all the base code that can't actually be built * + * as a separate module. It is initialised by main(), so there's nothing * + * for the boot function to do. */ /**/ int -setup_(Module m) +setup_zsh(Module m) { return 0; } /**/ int -boot_(Module m) +boot_zsh(Module m) { return 0; } /**/ int -cleanup_(Module m) +cleanup_zsh(Module m) { return 0; } /**/ int -finish_(Module m) +finish_zsh(Module m) { return 0; } @@ -358,14 +358,22 @@ hpux_dlsym(void *handle, char *name) #ifdef DLSYM_NEEDS_UNDERSCORE # define STR_SETUP "_setup_" +# define STR_SETUP_S "_setup_%s" # define STR_BOOT "_boot_" +# define STR_BOOT_S "_boot_%s" # define STR_CLEANUP "_cleanup_" +# define STR_CLEANUP_S "_cleanup_%s" # define STR_FINISH "_finish_" +# define STR_FINISH_S "_finish_%s" #else /* !DLSYM_NEEDS_UNDERSCORE */ # define STR_SETUP "setup_" +# define STR_SETUP_S "setup_%s" # define STR_BOOT "boot_" +# define STR_BOOT_S "boot_%s" # define STR_CLEANUP "cleanup_" +# define STR_CLEANUP_S "cleanup_%s" # define STR_FINISH "finish_" +# define STR_FINISH_S "finish_%s" #endif /* !DLSYM_NEEDS_UNDERSCORE */ /**/ @@ -387,11 +395,21 @@ try_load_module(char const *name) void *ret = NULL; int l; - l = 1 + strlen(name) + 1 + strlen(DL_EXT); + if (strchr(name, '/')) { + ret = dlopen(unmeta(name), RTLD_LAZY | RTLD_GLOBAL); + if (ret || + unset(PATHDIRS) || + (*name == '/') || + (*name == '.' && name[1] == '/') || + (*name == '.' && name[1] == '.' && name[2] == '/')) + return ret; + } + + l = strlen(name) + 1; for (pp = module_path; !ret && *pp; pp++) { if (l + (**pp ? strlen(*pp) : 1) > PATH_MAX) continue; - sprintf(buf, "%s/%s.%s", **pp ? *pp : ".", name, DL_EXT); + sprintf(buf, "%s/%s", **pp ? *pp : ".", name); ret = dlopen(unmeta(buf), RTLD_LAZY | RTLD_GLOBAL); } @@ -402,9 +420,15 @@ try_load_module(char const *name) static void * do_load_module(char const *name) { - void *ret; + void *ret = NULL; + char buf[PATH_MAX + 1]; - ret = try_load_module(name); + if (strlen(name) + strlen(DL_EXT) < PATH_MAX) { + sprintf(buf, "%s.%s", name, DL_EXT); + ret = try_load_module(buf); + } + if (!ret) + ret = try_load_module(name); if (!ret) { int waserr = errflag; zerr("failed to load module: %s", name, 0); @@ -481,39 +505,37 @@ dyn_finish_module(Module m) #else static Module_func -module_func(Module m, char *name) +module_func(Module m, char *name, char *name_s) { + char *s, *t; +#ifndef DYNAMIC_NAME_CLASH_OK + char buf[PATH_MAX + 1]; +#endif + Module_func fn; + + s = strrchr(m->nam, '/'); + if (s) + s = dupstring(++s); + else + s = m->nam; + if ((t = strrchr(s, '.'))) + *t = '\0'; #ifdef DYNAMIC_NAME_CLASH_OK - return (Module_func) dlsym(m->u.handle, name); + fn = (Module_func) dlsym(m->u.handle, name); #else /* !DYNAMIC_NAME_CLASH_OK */ - VARARR(char, buf, strlen(name) + strlen(m->nam)*2 + 1); - char const *p; - char *q; - strcpy(buf, name); - q = strchr(buf, 0); - for(p = m->nam; *p; p++) { - if(*p == '/') { - *q++ = 'Q'; - *q++ = 's'; - } else if(*p == '_') { - *q++ = 'Q'; - *q++ = 'u'; - } else if(*p == 'Q') { - *q++ = 'Q'; - *q++ = 'q'; - } else - *q++ = *p; - } - *q = 0; - return (Module_func) dlsym(m->u.handle, buf); + if (strlen(s) + 6 > PATH_MAX) + return NULL; + sprintf(buf, name_s, s); + fn = (Module_func) dlsym(m->u.handle, buf); #endif /* !DYNAMIC_NAME_CLASH_OK */ + return fn; } /**/ static int dyn_setup_module(Module m) { - Module_func fn = module_func(m, STR_SETUP); + Module_func fn = module_func(m, STR_SETUP, STR_SETUP_S); if (fn) return fn(m); @@ -525,7 +547,7 @@ dyn_setup_module(Module m) static int dyn_boot_module(Module m) { - Module_func fn = module_func(m, STR_BOOT); + Module_func fn = module_func(m, STR_BOOT, STR_BOOT_S); if(fn) return fn(m); @@ -537,7 +559,7 @@ dyn_boot_module(Module m) static int dyn_cleanup_module(Module m) { - Module_func fn = module_func(m, STR_CLEANUP); + Module_func fn = module_func(m, STR_CLEANUP, STR_CLEANUP_S); if(fn) return fn(m); @@ -552,7 +574,7 @@ dyn_cleanup_module(Module m) static int dyn_finish_module(Module m) { - Module_func fn = module_func(m, STR_FINISH); + Module_func fn = module_func(m, STR_FINISH, STR_FINISH_S); int r; if (fn) @@ -634,22 +656,6 @@ finish_module(Module m) /**/ #endif /* !DYNAMIC */ -/**/ -static int -modname_ok(char const *p) -{ - do { - if(*p != '_' && !ialnum(*p)) - return 0; - do { - p++; - } while(*p == '_' || ialnum(*p)); - if(!*p) - return 1; - } while(*p++ == '/'); - return 0; -} - /**/ int load_module(char const *name) @@ -660,10 +666,6 @@ load_module(char const *name) LinkNode node, n; int set; - if (!modname_ok(name)) { - zerr("invalid module name `%s'", name, 0); - return 0; - } if (!(node = find_module(name))) { if (!(linked = module_linked(name)) && !(handle = do_load_module(name))) @@ -776,6 +778,9 @@ require_module(char *nam, char *module, int res, int test) zwarnnam(nam, "module %s already loaded.", module, 0); return 0; } + } else if (res && isset(RESTRICTED) && strchr(module, '/')) { + zwarnnam(nam, "%s: restricted", module, 0); + return 0; } else return load_module(module); @@ -979,8 +984,13 @@ bin_zmodload_dep(char *nam, char **args, char *ops) int ret = 0; char *tnam = *args++; - for(; *args; args++) - add_dep(tnam, *args); + for(; *args; args++) { + if(isset(RESTRICTED) && strchr(*args, '/')) { + zwarnnam(nam, "%s: restricted", *args, 0); + ret = 1; + } else + add_dep(tnam, *args); + } return ret; } } @@ -1015,6 +1025,10 @@ bin_zmodload_auto(char *nam, char **args, char *ops) /* add autoloaded builtins */ char *modnam; modnam = *args++; + if(isset(RESTRICTED) && strchr(modnam, '/')) { + zwarnnam(nam, "%s: restricted", modnam, 0); + return 1; + } do { char *bnam = *args ? *args++ : modnam; if (strchr(bnam, '/')) { @@ -1078,6 +1092,10 @@ bin_zmodload_cond(char *nam, char **args, char *ops) char *modnam; modnam = *args++; + if(isset(RESTRICTED) && strchr(modnam, '/')) { + zwarnnam(nam, "%s: restricted", modnam, 0); + return 1; + } do { char *cnam = *args ? *args++ : modnam; if (strchr(cnam, '/')) { @@ -1134,6 +1152,10 @@ bin_zmodload_math(char *nam, char **args, char *ops) char *modnam; modnam = *args++; + if(isset(RESTRICTED) && strchr(modnam, '/')) { + zwarnnam(nam, "%s: restricted", modnam, 0); + return 1; + } do { char *fnam = *args ? *args++ : modnam; if (strchr(fnam, '/')) { @@ -1193,6 +1215,10 @@ bin_zmodload_param(char *nam, char **args, char *ops) char *modnam; modnam = *args++; + if(isset(RESTRICTED) && strchr(modnam, '/')) { + zwarnnam(nam, "%s: restricted", modnam, 0); + return 1; + } do { char *pnam = *args ? *args++ : modnam; if (strchr(pnam, '/')) { diff --git a/Src/xmods.conf b/Src/xmods.conf index a26e22d6b..ed7769dbc 100644 --- a/Src/xmods.conf +++ b/Src/xmods.conf @@ -1,10 +1,10 @@ -zsh/rlimits -zsh/zle -zsh/complete -zsh/compctl -zsh/sched -zsh/complist -zsh/zutil -zsh/computil -zsh/parameter -zsh/zleparameter +rlimits +zle +complete +compctl +sched +complist +zutil +computil +parameter +zleparameter diff --git a/Src/zsh.mdd b/Src/zsh.mdd index e93b6d00f..61672611b 100644 --- a/Src/zsh.mdd +++ b/Src/zsh.mdd @@ -1,5 +1,3 @@ -name=zsh/main - nozshdep=1 alwayslink=1 @@ -63,15 +61,18 @@ zshxmods.h: modules-bltin xmods.conf @( \ binmods=`sed 's/^/ /;s/$$/ /' modules-bltin`; \ for mod in `cat $(sdir_src)/xmods.conf`; do \ - q_mod=`echo $$mod | sed 's,Q,Qq,g;s,_,Qu,g;s,/,Qs,g'`; \ case $$binmods in \ *" $$mod "*) \ - echo "#define LINKED_XMOD_$$q_mod 1" ;; \ + echo "#define LINKED_XMOD_$$mod 1" ;; \ *) echo "#ifdef DYNAMIC"; \ - echo "# define UNLINKED_XMOD_$$q_mod 1"; \ + echo "# define UNLINKED_XMOD_$$mod 1"; \ echo "#endif" ;; \ esac; \ - done \ + done; \ + echo; \ + for mod in $$binmods; do \ + echo "int boot_$$mod _((Module));"; \ + done; \ ) > $@ clean-here: clean.zsh -- cgit 1.4.1