diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index 6d8ace7..cb1c5ec 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2333,7 +2333,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) #ifdef _FREEBSD // Helper to locate installed libraries. Currently only supports FreeBSD - duk_peval_string_noresult(ctx, "addCompressedModule('lib-finder', Buffer.from('eJytVVFv2zYQfrYA/YebUIBSq8px3pbAA7w0xYwGDhCnCwrbGGiJtonIpEZSdoIk/30fJc1w0m4vmx9M83j33Xd3H+n++zC40NWjkeuNo9OTwc80Vk6UdKFNpQ13UqswCIMrmQtlRUG1KoQhtxE0qniOpTtJ6XdhLLzpNDuh2DtE3VGUnIfBo65pyx9JaUe1FUCQllayFCQeclE5kopyva1KyVUuaC/dpsnSYWRh8K1D0EvH4czhXmG3OnYj7jxbwmfjXHXW7+/3+4w3TDNt1v2y9bP9q/HF5WR6+RFsfcRXVQpryYg/a2lQ5vKReAUyOV+CYsn3pA3xtRE4c9qT3RvppFqnZPXK7bkRYVBI64xc1u5Vn/6mhnqPHdAprigaTWk8jejX0XQ8TcPgbnz72/XXW7ob3dyMJrfjyyld39DF9eTT+HZ8PcHuM40m3+jLePIpJYEuIYt4qIxnD4rSd1AUaNdUiFfpV7qlYyuRy5XMUZRa13wtaK13wijUQpUwW2n9FC3IFWFQyq10jQjs9xUhyfu+b96qVrn3wTxVESu+FUkYPIVBz2KM+SaujM7BL6tK7kBji9OeP+7lHMTYCl1d2oKdeVNvxw3G4GhIs8X5wZJvZFnA1g0oZo3hjw6ZJZl4EPlnyClm/aVUfbthKc0YlkXSojQBmXWFrh0WAzDGfnCkVcwK7jjiD3XFeUJPjWSbyA9DyjOnp5ilWsfJOb28zSFV5vUh4qi6X0MtK00RfSDfGiwRPRNg2HyumP9+ZjDw/T0xZOFDixG6+N1JSi6leTTdcK/IK7m0hHp3shDF2RyXiuQq5sPhqefWxrjZ6SKlUi59XOtTgaPzptlgAaL0wg7Jn1lHoUv+5AG75IMUrbYeJrMaQL8MfJYW7N2gBZor8SDdXEWvqt9z6S5hj5Pzo3latPvtBDL0bxsnWZsScKwLgUZiHyb9PUNs0lgbxfR64PgTbDO5AAY3zt7hEsRdZxnYssRTzbXC9awFqLZxHnAHFk/e9YxaiJc2Ye+/y+vf9PX/CewHCmMHhX0sIaCDyPxY8V5VjW2XHVn9sOfsSGkYttP3KUX9TlXYzfhiOIxex0bfaWB+EAF7zfCtCnq7rNR585L8sxI6V9z+rKrtJt51lnaCMNdGxVha89IIfu9/4fjFP0NbXdSlwKjwx+W84PxzBIe/ALtaHGg=', 'base64'));"); + duk_peval_string_noresult(ctx, "addCompressedModule('lib-finder', Buffer.from('eJylVV1v2kgUfQaJ/3DXqjSmdU3I2yaiEk1TLdqISCFtVAFaDfYYRjEz3pkxJEr473vGdikku6tKzUMcn7kf595zxum97bQvdPFo5HLl6PSk/zuNlBM5XWhTaMOd1KrT7rSvZCKUFSmVKhWG3ErQsOAJHs1JRF+FsYim0/iEQh8QNEdB97zTftQlrfkjKe2otAIVpKVM5oLEQyIKR1JRotdFLrlKBG2lW1Vdmhpxp/2tqaAXjiOYI7zAW3YYRtx5toSflXPFWa+33W5jXjGNtVn28jrO9q5GF5fjyeV7sPUZX1QurCUj/i6lwZiLR+IFyCR8AYo535I2xJdG4MxpT3ZrpJNqGZHVmdtyIzrtVFpn5KJ0R3v6Tg3zHgZgU1xRMJzQaBLQx+FkNIk67bvR7R/XX27pbnhzMxzfji4ndH1DF9fjT6Pb0fUYb59pOP5Gf47GnyIS2BK6iIfCePagKP0GRYp1TYQ4ap/pmo4tRCIzmWAotSz5UtBSb4RRmIUKYdbSehUtyKWddi7X0lUmsK8nQpO3Pb+8rFSJjyHr0oIbK0yYdDvtp1oImXk7SBtjdhoMSJV53qUn+oERY+e0q6P36LsBJbHTEyxMLUNvod1Rr0yqNFR8LepOLQvLJKuwMDrBLuIi5w4jr3Ha8sethGMJLIOCC5uyMw+1NtxAcgcG0/n5HklWMk+BNWYIWQX81VRm3Vg8iOQzrBuy3kKqnl2xiKYMj3m3rlIlYIpUl+7HiK+PtApZyh1H/n51L0tIFXuriTAo7pcwXqYpoHfkJ8cjoGdCfTabKeZ/PzMAfHtPDBvmAws3uPDNSUQuolkwWXFv7iu5sIRxNjIV6dkM9xMihXwwOPW61DluejqPKJcLn1fHFFDCeWjan0Mv2rF982fWUGiaP/mCTfN+hE1aXya2GoU+9H2Xutibfl1opsSDdDMVHE2/5dJdAg+75wdyWWzz5YJjuGQdduO6JcqxJgUWCH2a9FcWud0KrQzRaoHjb8Cmco4a3Dh7h/sUNptlYMu6nmqiFW56KSqPthoeG7B48qFnVJfY1Q1bv+6e/7PPT/vnXwzE9gZ6n8Mfew951fBlKypsEx+gXssZOzAStHT6PqKg15gGb1M+HwyC49zglcSzvcbsmOFLkVubONdJ9c35b6GbUNzduCjtKtw0SC0Q4NKoEI8aXhjB7/1fu+YjstZpmQsogX9xzvvJf0wQ8A/21ie7', 'base64'));"); #endif // monitor-info: Refer to modules/monitor-info.js diff --git a/modules/lib-finder.js b/modules/lib-finder.js index 8d9cd42..e19106d 100644 --- a/modules/lib-finder.js +++ b/modules/lib-finder.js @@ -14,6 +14,12 @@ See the License for the specific language governing permissions and limitations under the License. */ +function stdparser(c) +{ + if (this.str == null) { this.str = ''; } + this.str += c.toString(); +} + function find(name) { switch(process.platform) @@ -22,7 +28,7 @@ function find(name) var ret = []; var child = require('child_process').execFile('/bin/sh', ['sh']); child.stdout.str = ''; - child.stdout.on('data', function (c) { this.str += c.toString(); }); + child.stdout.on('data', stdparser); child.stdin.write("pkg info " + name + " | tr '\\n' '\\|' | awk ' { a=split($0, t, \"Shared Libs provided:\"); if(a==2) { split(t[2], lib, \":\"); print lib[1]; } }' | tr '\\|' '\\n' | awk '{ if(split($1, res, \".so\")>1) { print $1; } }'\nexit\n"); child.waitExit(); var res = child.stdout.str.trim().split('\n'); @@ -32,7 +38,7 @@ function find(name) var v = {name: res[i]}; child = require('child_process').execFile('/bin/sh', ['sh']); child.stdout.str = ''; - child.stdout.on('data', function (c) { this.str += c.toString(); }); + child.stdout.on('data', stdparser); child.stdin.write('pkg info -l ' + name + ' | grep ' + v.name + ' | awk \'{ a=split($1, tok, "/"); if(tok[a]=="' + v.name + '") { print $1; } }\'\nexit\n'); child.waitExit(); v.location = child.stdout.str.trim();