# cat test.conf define(`readconf',`ifelse($#,0,,`sinclude($1)readconf(shift($*))')') readconf(translit(esyscmd(echo -n *.m4),` ',`,')) # m4 -dtae test.conf m4trace: -1- define(readconf, ifelse($#,0,,`sinclude($1)readconf(shift($*))')) m4trace: -3- esyscmd(echo -n *.m4) -> aa.m4 bb.m4 m4trace: -2- translit(aa.m4 bb.m4, , ,) -> aa.m4,bb.m4 m4trace: -1- readconf(aa.m4, bb.m4) -> ifelse(2,0,,`sinclude(aa.m4)readconf(shift(aa.m4,bb.m4))') m4trace: -1- ifelse(2, 0, , sinclude(aa.m4)readconf(shift(aa.m4,bb.m4))) -> sinclude(aa.m4)readconf(shift(aa.m4,bb.m4)) m4trace: -1- sinclude(aa.m4) m4trace: -1- define(aa, foo) m4trace: -2- shift(aa.m4, bb.m4) -> `bb.m4' m4trace: -1- readconf(bb.m4) -> ifelse(1,0,,`sinclude(bb.m4)readconf(shift(bb.m4))') m4trace: -1- ifelse(1, 0, , sinclude(bb.m4)readconf(shift(bb.m4))) -> sinclude(bb.m4)readconf(shift(bb.m4)) m4trace: -1- sinclude(bb.m4) m4trace: -1- define(bb, bar) m4trace: -2- shift(bb.m4) m4trace: -1- readconf() -> ifelse(1,0,,`sinclude()readconf(shift())') m4trace: -1- ifelse(1, 0, , sinclude()readconf(shift())) -> sinclude()readconf(shift()) m4trace: -1- sinclude() m4trace: -2- shift() m4trace: -1- readconf() -> ifelse(1,0,,`sinclude()readconf(shift())') m4trace: -1- ifelse(1, 0, , sinclude()readconf(shift())) -> sinclude()readconf(shift()) m4trace: -1- sinclude() m4trace: -2- shift() m4trace: -1- readconf() -> ifelse(1,0,,`sinclude()readconf(shift())') m4trace: -1- ifelse(1, 0, , sinclude()readconf(shift())) -> sinclude()readconf(shift()) m4trace: -1- sinclude() m4trace: -2- shift() m4trace: -1- readconf() -> ifelse(1,0,,`sinclude()readconf(shift())') m4trace: -1- ifelse(1, 0, , sinclude()readconf(shift())) -> sinclude()readconf(shift()) ... #
вот такая вот фигня... :(