diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-11-16 19:05:21 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-02-06 10:59:47 -0800 |
commit | b133908ab1a00639ceda438f46fc3b2856bd4bc4 (patch) | |
tree | a08087af63ae32d4fea0d0e0346bba23fdf1ab52 | |
parent | 860ee4943367055d76fb0c02649f64e407ab0293 (diff) |
fix struct.utsname and allow simple bN syntax in struct definitions for fields of N bytes
Conflicts:
src/library.js
-rw-r--r-- | src/library.js | 12 | ||||
-rw-r--r-- | src/runtime.js | 4 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/library.js b/src/library.js index bf5f1250..afd7262a 100644 --- a/src/library.js +++ b/src/library.js @@ -626,7 +626,7 @@ LibraryManager.library = { __dirent_struct_layout: Runtime.generateStructInfo([ ['i32', 'd_ino'], - ['[1024 x i8]', 'd_name'], + ['b1024', 'd_name'], ['i32', 'd_off'], ['i32', 'd_reclen'], ['i32', 'd_type']]), @@ -5629,11 +5629,11 @@ LibraryManager.library = { // ========================================================================== __utsname_struct_layout: Runtime.generateStructInfo([ - 'sysname', - 'nodename', - 'release', - 'version', - 'machine'], '%struct.utsname'), + ['b32', 'sysname'], + ['b32', 'nodename'], + ['b32', 'release'], + ['b32', 'version'], + ['b32', 'machine']]), uname__deps: ['__utsname_struct_layout'], uname: function(name) { // int uname(struct utsname *name); diff --git a/src/runtime.js b/src/runtime.js index e5b86065..95c74647 100644 --- a/src/runtime.js +++ b/src/runtime.js @@ -242,6 +242,10 @@ var Runtime = { } else if (Runtime.isStructType(field)) { size = Types.types[field].flatSize; alignSize = Types.types[field].alignSize; + } else if (field[0] == 'b') { + // bN, large number field, like a [N x i8] + size = field.substr(1)|0; + alignSize = 1; } else { throw 'Unclear type in struct: ' + field + ', in ' + type.name_ + ' :: ' + dump(Types.types[type.name_]); } |