aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-11-16 19:05:21 -0800
committerAlon Zakai <alonzakai@gmail.com>2013-02-06 10:59:47 -0800
commitb133908ab1a00639ceda438f46fc3b2856bd4bc4 (patch)
treea08087af63ae32d4fea0d0e0346bba23fdf1ab52
parent860ee4943367055d76fb0c02649f64e407ab0293 (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.js12
-rw-r--r--src/runtime.js4
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_]);
}