diff options
author | Jacob Lee <artdent@gmail.com> | 2013-04-06 15:07:58 -0400 |
---|---|---|
committer | Jacob Lee <artdent@gmail.com> | 2013-04-06 15:14:52 -0400 |
commit | 66883355e44a2e671c997a7df2193b585be893d7 (patch) | |
tree | eff0633a09a11b93aff1e8306656c3903e7fb8a3 /src/library.js | |
parent | 8408257cd66435af849f493c10c7f0e8d1d5fa3b (diff) |
scanf: support '*', which matches without assigning to an argument.
For example, sscanf("1 2 3", "%*d %d", &foo) stores 2 into foo.
Diffstat (limited to 'src/library.js')
-rw-r--r-- | src/library.js | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/library.js b/src/library.js index b63ac955..f6b2a31e 100644 --- a/src/library.js +++ b/src/library.js @@ -2513,6 +2513,11 @@ LibraryManager.library = { if (format[formatIndex] === '%') { formatIndex++; + var suppressAssignment = false; + if (format[formatIndex] == '*') { + suppressAssignment = true; + formatIndex++; + } var maxSpecifierStart = formatIndex; while (format[formatIndex].charCodeAt(0) >= {{{ charCode('0') }}} && format[formatIndex].charCodeAt(0) <= {{{ charCode('9') }}}) { @@ -2578,6 +2583,8 @@ LibraryManager.library = { unget(); } if (buffer.length === 0) return 0; // Failure. + if (suppressAssignment) continue; + var text = buffer.join(''); var argPtr = {{{ makeGetValue('varargs', 'argIndex', 'void*') }}}; argIndex += Runtime.getNativeFieldSize('void*'); |