aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-10-01 18:24:12 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-10-01 18:24:12 -0700
commit412ecd600739f6f27728cf67fb54052292168bd6 (patch)
treed5a350d21916f830213603b03c76ea699e70dcdf /src
parent248b605cbb0d6668a1677348feb61cc98395c625 (diff)
inet_addr
Diffstat (limited to 'src')
-rw-r--r--src/library.js14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/library.js b/src/library.js
index 078bc037..9e70b596 100644
--- a/src/library.js
+++ b/src/library.js
@@ -6315,14 +6315,18 @@ LibraryManager.library = {
ntohl: 'htonl',
ntohs: 'htons',
- inet_pton__deps: ['__setErrNo', '$ERRNO_CODES'],
+ inet_addr: function(ptr) {
+ var b = Pointer_stringify(ptr).split(".");
+ if (b.length !== 4) return -1; // we return -1 for error, and otherwise a uint32. this helps inet_pton differentiate
+ return (Number(b[0]) | (Number(b[1]) << 8) | (Number(b[2]) << 16) | (Number(b[3]) << 24)) >>> 0;
+ },
+
+ inet_pton__deps: ['__setErrNo', '$ERRNO_CODES', 'inet_addr'],
inet_pton: function(af, src, dst) {
// int af, const char *src, void *dst
if ((af ^ {{{ cDefine("AF_INET") }}}) !== 0) { ___setErrNo(ERRNO_CODES.EAFNOSUPPORT); return -1; }
- var b = Pointer_stringify(src).split(".");
- if (b.length !== 4) return 0;
- var ret = Number(b[0]) | (Number(b[1]) << 8) | (Number(b[2]) << 16) | (Number(b[3]) << 24);
- if (isNaN(ret)) return 0;
+ var ret = _inet_addr(src);
+ if (ret == -1 || isNaN(ret)) return 0;
setValue(dst, ret, 'i32');
return 1;
},