better algorithm for finding kernel source Reference: /n/atom/patch/applied/acidkdir Date: Wed Feb 19 00:05:28 CET 2014 Signed-off-by: quanstro@quanstro.net --- /sys/lib/acid/kernel Wed Feb 19 00:05:24 2014 +++ /sys/lib/acid/kernel Wed Feb 19 00:05:25 2014 @@ -383,9 +383,30 @@ print("/sys/lib/acid/kernel"); +defn findkdir() { + local file, i, lastslash; + + file = pcfile(main); + if file != {} then { + lastslash = 0; + i = 0; + while file[i] != 0 do { + if file[i] == '/' then lastslash=i; + i = i+1; + } + kdir=""; + i = 0; + while i < lastslash do { + kdir = kdir + file[i]; + i = i+1; + } + } +} + + defn needacid(s){ - print("\trc(\"cd /sys/src/9/", kdir, "; mk ", s, ".acid\")\n"); - print("\tinclude(\"/sys/src/9/", kdir, "/", s, ".acid\")\n"); + print("\trc(\"cd ", kdir, "; mk ", s, ".acid\")\n"); + print("\tinclude(\"", kdir, "/", s, ".acid\")\n"); } defn kinit() { @@ -395,15 +416,11 @@ if objtype == "386" then { map({"*data", KZERO, 0xffffffff, KZERO}); - kdir="pc"; - } - if (objtype == "mips" || objtype == "mips2") then { - kdir = "ch"; } if objtype == "alpha" then { map({"*data", KZERO, 0xffffffff, KZERO}); - kdir = "alpha"; } + findkdir(); needacid("proc"); } }