00:12:39  <CIA-52>libuv: Ryan Dahl master * rb47fa77 / src/unix/fs.c : unix/fs.c: Apply macro magic, implement symlink, link, chown, fchown - http://git.io/x6bdCw
00:20:45  * isaacsquit (Quit: isaacs)
00:41:05  <CIA-52>libuv: Ryan Dahl master * rb89f4f3 / src/unix/fs.c : implement uv_fs_utime - http://git.io/86mhDg
00:43:09  * isaacsjoined
01:11:02  * isaacsquit (Quit: isaacs)
01:28:34  <piscisaureus>hey
01:28:44  <piscisaureus>how's everything looking for the release?
01:29:26  <bnoordhuis>hey, got home?
01:30:01  <piscisaureus>no, I gave up
01:30:16  <piscisaureus>ok kidding yes I got home
01:34:47  <CIA-52>node: koichik v0.4 * r96ede8c / (src/node_buffer.cc test/simple/test-buffer.js):
01:34:47  <CIA-52>node: buffer: Avoid overrun with 'binary' encoding.
01:34:47  <CIA-52>node: Fixes #1624. - http://git.io/sm5sQQ
01:36:28  <bnoordhuis>okay, good
01:37:36  <piscisaureus>igorzi: +1 for figuring out the xp64 issue. You saved me a lot of time :-)
01:43:15  <bnoordhuis>we should probably add something like ev_feed_event to libuv...
01:43:28  <bnoordhuis>something to wake up the event loop from another thread
01:43:41  <piscisaureus>uv_async_send?
01:44:11  <piscisaureus>ev_feed_event wakes up the event loop but can't be used from another thread afaik
01:44:53  <bnoordhuis>yes, but it'd be very convenient
01:45:01  <bnoordhuis>this guy in #node.js was asking me about it
01:45:19  <piscisaureus>what do you think it should do?
01:45:19  <bnoordhuis>he has an app that listens for stuff in thread A and bindings to nsapi in thread B
01:45:40  <bnoordhuis>hmm, on unix it'd use the pipe trick
01:45:50  <piscisaureus>I think uv_async is exactly that
01:45:56  <bnoordhuis>but is it thread-safe?
01:45:59  <piscisaureus>yes
01:46:02  <piscisaureus>that's the whole point
01:46:08  <piscisaureus>libev is totally not thread-safe
01:46:21  <piscisaureus>except for ev_async_send
01:46:29  <piscisaureus>we copied this in libuv
01:47:03  <bnoordhuis>okay, cool
01:47:16  <bnoordhuis>i was looking at the windows implementation but couldn't decide if it was safe or not
01:47:50  <piscisaureus>PostQueuedCompletionStatus is thread-safe
01:48:03  <DrPizza>yup
01:48:04  <piscisaureus>the caveat is that you can't uv_async_init from another thread
01:48:24  <piscisaureus>so you have to do that first before you can use uv_async_send
01:52:18  <bnoordhuis>okay, nappy time
01:52:23  <bnoordhuis>sleep tight, guys
01:52:40  <piscisaureus>bnoordhuis: not fixing node.php today? ;D
01:52:43  <piscisaureus>good night
01:52:54  <piscisaureus>I'm checking out too
01:58:05  * bnoordhuisquit (Ping timeout: 252 seconds)
02:06:09  * brsonquit (Ping timeout: 252 seconds)
03:40:37  <CIA-52>node: Ryan Dahl master * r2b0a7d6 / (3 files in 2 dirs): Upgrade libuv to b89f4f3 - http://git.io/Q8fJmA
04:50:41  * piscisaureusquit (Quit: ~ Trillian Astra - www.trillian.im ~)
05:52:27  * rmustaccpart
08:31:27  * mralephjoined
09:14:22  * mralephquit (Quit: Leaving.)
09:16:58  * mralephjoined
09:23:36  * mralephquit (Quit: Leaving.)
12:00:53  * felixgejoined
12:00:53  * felixgequit (Changing host)
12:00:53  * felixgejoined
12:40:39  * piscisaureusjoined
12:51:11  * bnoordhuisjoined
13:33:15  * felixgequit (Read error: Connection reset by peer)
13:33:33  * felixgejoined
15:30:01  <CIA-52>node: Nathan Rajlich master * rcafcc7e / test/simple/test-util-inspect.js : test: add test case for util.isDate() behavior - http://git.io/ZtA1Ow
15:30:03  <CIA-52>node: Nathan Rajlich master * r44574bc / lib/util.js :
15:30:03  <CIA-52>node: util: improve util.isDate() function
15:30:03  <CIA-52>node: The old implementation was fragile. i.e. node-time is an example of a user-land
15:30:03  <CIA-52>node: module that exports an extended Date object (with a few added functions on it's
15:30:03  <CIA-52>node: own Date object's prototype). In that case, the old check fails. - http://git.io/pD27Kg
15:46:08  * bnoordhuisquit (Ping timeout: 240 seconds)
16:01:37  * felixgequit (Quit: http://www.debuggable.com/)
16:06:05  * isaacsjoined
16:09:17  <CIA-52>node: Niclas Hoyer master * r7b2536a / (src/node_crypto.cc src/node_crypto.h):
16:09:17  <CIA-52>node: Added additional properties to getPeerCertificate, now includes subjectAltName, Exponent and Modulus (FOAF+SSL friendly).
16:09:17  <CIA-52>node: Patch written by Nathan,
16:09:17  <CIA-52>node: http://groups.google.com/group/nodejs/browse_thread/thread/1d42da4cb2e51536 - http://git.io/3sAKCQ
16:09:17  <CIA-52>node: Niclas Hoyer master * rb7e36f8 / (3 files in 2 dirs): added test case for foaf+ssl client certificate - http://git.io/Foao4Q
16:09:18  <CIA-52>node: Ben Noordhuis master * r5ded5e2 / src/node_crypto.cc : crypto: use X509_get_ext_by_NID(NID_subject_alt_name) - http://git.io/Um4IHw
16:09:19  <CIA-52>node: koichik master * r28a9084 / (src/node_crypto.cc test/simple/test-https-foafssl.js):
16:09:19  <CIA-52>node: crypto: Fix BIO's usage.
16:09:20  <CIA-52>node: Fixes #1612.
16:09:20  <CIA-52>node: Fixes #1296. - http://git.io/0qKVxA
16:13:26  * igorziquit (Ping timeout: 252 seconds)
16:13:33  <ryah>what is this bug fix from koichik?
16:13:41  <ryah>does that test actually break node?
16:25:55  <CIA-52>libuv: Luis Lavena master * r30ca028 / (Makefile config-mingw.mk):
16:25:55  <CIA-52>libuv: Fix MinGW build
16:25:55  <CIA-52>libuv: Allow `make all` work under MinGW. Remove references to eio for MinGW.
16:25:55  <CIA-52>libuv: Fixes #170
16:25:55  <CIA-52>libuv: Fixes #171 - http://git.io/pmph9Q
16:47:16  <piscisaureus>ryah: seems that is just a test for added functionality
16:47:43  <piscisaureus>are you not supposed to talk etc now?
16:47:48  <CIA-52>node: koichik master * rc28f20f / doc/api/stdio.markdown : docs: console.log() refer to util.format(). - http://git.io/NrOK1g
16:48:51  <DrPizza>ryah: lol
16:49:03  <DrPizza>ryah: simple solution, have "scheme" and "protocol", one with colon, one without
16:50:51  <ryah>piscisaureus: me?
16:51:31  <piscisaureus>ryah: yes
16:51:49  <piscisaureus>oh hmm nodecamp is next week
16:51:50  <piscisaureus>sorry
16:52:03  <piscisaureus>it's good that igor is there too
16:53:59  <ryah>im 70% done with src/domain.h
16:54:01  <ryah>:)
16:55:03  <piscisaureus>demo it next week?
16:55:14  <piscisaureus>oh wait you still are 0% with domain.c?
17:24:33  * brsonjoined
17:39:28  * graydonjoined
18:00:07  * isaacsquit (Quit: isaacs)
18:58:37  <piscisaureus>are we having the call at nine?
19:00:22  <piscisaureus>Apparently no
19:00:36  <piscisaureus>I'm going to call someone else now for 15 minutes
19:08:01  * igorzijoined
19:10:09  <ryah>hey
19:10:21  <ryah>sorry im was talking to rmusacc in RL
19:10:42  <ryah>piscisaureus, igorzi: can we call now?
19:12:05  <igorzi>yep
19:13:41  <piscisaureus>I can't - sorry
19:14:15  <ryah>piscisaureus: ok
19:16:09  <ryah>igorzi: lost connectin - we can just chat here
19:16:37  <igorzi>yep
19:16:50  <ryah>igorzi: so i thought maybe leaving the symlink stuff for you
19:16:55  <ryah>since its strange on windows
19:17:04  <ryah>and i guess we might need to modify the api
19:17:13  <ryah>but i can do utime
19:17:17  <igorzi>ryah: yeah, that sounds good
19:17:46  <ryah>hm i think there are a few other easy ones fdatasync and what not
19:17:48  <DrPizza>the difficult case on windows is "symlink to file that doesn't exist", but the API should be the same
19:17:51  <ryah>im not sure how to test that
19:18:03  <DrPizza>fsync and friends are a pain, getting exact semantic matches is hard
19:18:08  <igorzi>what about chown and fchown?
19:18:16  <ryah>yeah that's hard too
19:18:35  <ryah>maybe we dont need to be have 100% coverage
19:18:41  <ryah>i think in node we don't test chown
19:18:43  <DrPizza>chown/fchown/chmod/fchmod should just be silently ignored on windows
19:19:08  <DrPizza>the CRT implementations aren't worthwhile IMO
19:20:50  <igorzi>ryah: if we do that - then would chown/fchown/chmod/fchmod still be part of fs API in node? or maybe they should be moved to process.platform (or something like that)?
19:21:59  <DrPizza>the problem with doing that is that it means program authors will have to feature detect and test
19:21:59  <ryah>i guess the chmod is useful on windows?
19:22:17  <DrPizza>ryah: windows doesn't use permission bits, and you can't really map from permission bits to ACLs
19:22:21  <DrPizza>CRT does something for chmod
19:22:25  <DrPizza>but it's not useful AFAICT
19:22:36  <ryah>i think its just read/write access for current user
19:23:03  <igorzi>yeah, that's probably useful
19:23:15  <DrPizza>is it just attrib +r?
19:23:54  <DrPizza>or does it modify ACLs?
19:24:15  <igorzi>no, it's GetFileAttributes/SetFileAttributes
19:24:25  <DrPizza>so attrib +r
19:24:45  <igorzi>right
19:24:59  <DrPizza>that leaves a bad taste in my mouth, it's not really doing the same thing as unix chmod
19:25:01  <igorzi>i think we should just let CRT do FILE_ATTRIBUTE_READONLY and not do any more
19:25:37  <igorzi>i don't think our goal is to match the behavior 100%.. we need to do what's reasonable for each platform
19:25:48  <DrPizza>well...
19:25:58  <DrPizza>modifying ACLs isn't "unreasonable"
19:26:10  <DrPizza>it's just a pain to do
19:26:50  <igorzi>yeah, but if CRT decided that they weren't doing it then it's probably not very useful (just guessing here, i've never had to use CRT's chmod)
19:27:44  <DrPizza>igorzi: so maybe unix chmod's S_IRUSR and S_IWUSR could be mapped to _S_IREAD and _S_IWRITE
19:28:02  <ryah>igorzi: i think that's what _chmod does?
19:28:05  <DrPizza>and ignore the rest?
19:28:08  <ryah>sorry that waas meant for DrPizza
19:28:19  <DrPizza>ryah: windows _chmod doesn't use the unix defines at all
19:28:31  <DrPizza>instead of having user/group/other read/write/execute, it just has "read" and "write"
19:28:41  <ryah>DrPizza, igorzi: https://github.com/joyent/libuv/blob/master/test/test-fs.c#L652-715
19:28:54  <igorzi>yeah, CRT's chmod just looks at _S_IWRITE, and maps it to FILE_ATTRIBUTE_READONLY
19:29:15  <DrPizza>ryah: 0200 is world write?
19:29:25  <DrPizza>I don't remember which way round it is
19:29:27  <ryah>DrPizza: user write
19:29:30  <DrPizza>is it ogu or ugo
19:29:31  <DrPizza>oh, ugo
19:29:42  <ryah>ugo
19:29:53  <ryah>rwx-rwx-rwx
19:29:57  <DrPizza>this system also doesn't have write-only
19:30:02  <DrPizza>er, windows doesn't
19:30:07  <DrPizza>so there's no way to round trip that
19:30:40  <ryah>hm
19:30:49  <DrPizza>it can do read-only and read-write
19:31:00  <DrPizza>sorry
19:31:02  <DrPizza>that's wrong
19:31:08  <igorzi>ryah: oh right, i actually already implemented uv_fs_chmod (using _chmod), we're missing uv_fs_fchmod
19:31:12  <DrPizza>it can do read-execute and read-write-execute
19:31:34  <DrPizza>(ACLs can do more than this, but if we just stick with CRT SetFileAttributes, that's all we can set)
19:32:08  <DrPizza>ryah: now we could change the test so it only tries read-execute and read-write-execute
19:32:48  <piscisaureus>chmod modifies only the readonly bit on windows
19:32:52  <piscisaureus>it's completely pointless
19:33:17  <piscisaureus>(should we have an attrib binding btw)
19:33:59  <DrPizza>piscisaureus: an attrib binding to do setfileattributes (etc.)?
19:34:11  <ryah>DrPizza: that's fine
19:34:32  <piscisaureus>set hidden, readonly, archive, system, compress, encrypt flags
19:34:39  <igorzi>ok, so do we keep CRT's chmod (and modify the test)? implement our own? or not provide one for windows at all?
19:34:57  <ryah>igorzi: crt, modify test
19:35:00  <DrPizza>piscisaureus: compress and encrypt aren't flags. they're reported as flags, but they're not flags. ditto sparse, reparse point.
19:35:32  <ryah>the issue here is just to get off eio
19:35:49  <ryah>these are not very important issues i think
19:35:59  <igorzi>ok, i'll get the test modified to work on windows
19:37:30  <DrPizza>igorzi: what about chown
19:38:12  <igorzi>not provide it on windows?
19:38:31  <DrPizza>is it better to not provide it at all, or to provide it as a no-op stub?
19:38:42  <DrPizza>no-op stub seems easier
19:38:47  <ryah>what does python do?
19:39:31  <DrPizza>raise OSError, I guess
19:39:42  <ryah>it doesn't have those methods
19:40:01  <ryah>os.fchmod does not exist
19:40:22  <igorzi>ryah: would it make sense to move those out of fs?
19:40:36  <DrPizza>ryah: that makes sense for python, I'm not sure it makes sense for node
19:40:50  <DrPizza>in node, developers want to be able to say
19:41:14  <DrPizza>fs.chown(file, owner, function() { callback that does the next thing that needs doing });
19:41:38  <DrPizza>take away chown on windows
19:41:58  <DrPizza>and they have to hoist the function out, give it name, test for chown's existence, and either pass teh function as a callback or run it directly
19:42:06  <DrPizza>that seems less satisfactory
19:45:09  <ryah>yeah i think we should no-op this
19:45:22  <ryah>at least for now
19:54:25  <CIA-52>node: Ryan Dahl master * r1976288 / (node.gyp src/platform_win32.cc wscript):
19:54:25  <CIA-52>node: win: link to psapi.lib
19:54:25  <CIA-52>node: broke in 65c2763 - http://git.io/jed4lw
20:01:33  <CIA-52>node: Michael Jackson master * r3bf20e4 / doc/api/readline.markdown : Fixes #1635. Fixed typo - http://git.io/BgyKrw
20:07:52  * isaacsjoined
20:22:09  * brsonquit (Quit: leaving)
20:22:26  * brsonjoined
20:35:00  <piscisaureus>^-- he's alive.
20:39:15  * mralephjoined
20:52:51  * DrMcKayjoined
20:53:36  * dmkbotjoined
21:57:56  * dmkbotquit (Remote host closed the connection)
21:58:14  * dmkbotjoined
22:01:35  * dmkbotquit (Remote host closed the connection)
22:01:52  * dmkbotjoined
22:05:12  * dmkbotquit (Remote host closed the connection)
22:05:30  * dmkbotjoined
22:18:02  <ryah>piscisaureus: who's alive?
22:18:36  * dmkbotquit (Remote host closed the connection)
22:18:51  * dmkbotjoined
22:21:18  <piscisaureus>oh
22:21:27  <piscisaureus>MJ -- never mind
22:21:46  <piscisaureus>ryah: can we rename uv_getsockname to uv_tcp_getsockname and uv_udp_getsockname
22:21:51  <piscisaureus>?
22:22:18  <piscisaureus>or is that not worth it?
22:22:50  * bnoordhuisjoined
22:23:19  <piscisaureus>we're gonna need uv_pipe_getsockname I think?
22:25:15  <piscisaureus>And I don't like to use sockaddr_un on windows
22:25:58  <ryah>piscisaureus: yes
22:26:05  <ryah>piscisaureus: i want that rename too
22:26:16  <piscisaureus>ok nice
22:26:50  <piscisaureus>I am doing https://github.com/joyent/node/issues/1345
22:27:22  <ryah>piscisaureus: can you gist a "make test >& out" for node master
22:27:31  <piscisaureus>okay
22:27:36  <piscisaureus>it will take a few minutes tho
22:27:55  <ryah>that's fine, i just want it added to the topic
22:28:05  <ryah>for easy access :)
22:32:13  <igorzi>piscisaureus: btw, you can do "vcbuilt test"
22:34:20  <piscisaureus>yes
22:34:24  <piscisaureus>I am using that
22:34:46  <piscisaureus>was just rebasing a patch that autodetects the vcvarsall.bat location so I can just run it from cmd
22:35:29  <igorzi>oh nice
22:35:35  <piscisaureus>igorzi: how is the test cluster setup going btw?
22:35:43  <piscisaureus>I want to benchmark a prefork server strategy
22:35:53  <piscisaureus>(after the release)
22:36:16  <igorzi>last i heard all the hw is finally here.. so hopefully next week :)
22:36:24  * DrMcKayquit (Quit: BRB)
22:36:58  <igorzi>ryah: piscisaureus: btw, are we going to do something about the slab allocator? or are we punting it for now?
22:37:15  <piscisaureus>I don't think we're doing it before the release
22:37:18  <dmkbot>joyent/node: scunningham: Support ssl session get/set in tls. Useful for client side session resume. - https://github.com/joyent/node/issues/1606
22:37:38  <piscisaureus>but imho we should address this before 0.6
22:38:38  <piscisaureus>what does dmkbot do?
22:38:52  <igorzi>piscisaureus: yeah, i agree
22:38:54  <bnoordhuis>report on new or updated github issues
22:39:03  <piscisaureus>it should say what was changed
22:39:19  <piscisaureus>who created that btw?
22:39:52  <bnoordhuis>drmckay
22:39:58  <bnoordhuis>i think he's adding that
22:40:21  <piscisaureus>never seen drmckay around here
22:40:55  <bnoordhuis>he idles in #node.js
22:41:15  <bnoordhuis>i suspect ryah's asked him to have dmkbot join this channel as well
22:41:18  <dmkbot>joyent/node: chowey: http.js parser uses "this" and fails - https://github.com/joyent/node/issues/1614
22:42:11  <piscisaureus>hmm
22:42:22  <piscisaureus>vcbuild.bat test >out doesn't work
22:42:47  <igorzi>hmm, what does it do?
22:42:59  <igorzi>(or doesn't do?)
22:43:03  <piscisaureus>Can't find shell executable: 'D:\nodejs\node3\out\Debug\node.exe'
22:43:30  <igorzi>did it skip msbuild?
22:43:58  <piscisaureus>hmm
22:44:03  <dmkbot>joyent/libuv: luislavena: Correct a preprocessor typo - https://github.com/joyent/libuv/issues/174
22:45:20  <piscisaureus>igorzi: it looks in the 'out/Debug' folder :-/
22:45:48  <dmkbot>joyent/node: chowey: http.js parser uses "this" and fails - https://github.com/joyent/node/issues/1614
22:45:51  <igorzi>it just calls "python tools/test.py"
22:46:11  <piscisaureus>weird
22:46:14  * isaacsquit (Quit: isaacs)
22:46:30  <piscisaureus>"vcbuild.bat test" <-- works fine
22:46:36  <piscisaureus>"vcbuild.bat test >out" <-- fails
22:48:54  <piscisaureus>D:\nodejs\node3>python tools/test.py --mode=debug
22:48:55  <piscisaureus>Can't find shell executable: 'D:\nodejs\node3\out\Debug\node.exe'
22:50:45  <piscisaureus>igorzi: ryah: where are the output files *supposed* to go now? Debug\node.exe or out\Debug\node.exe?
22:51:15  <piscisaureus>ah!
22:51:36  <piscisaureus>test.py:
22:51:37  <piscisaureus>if not exists(out_dir):
22:51:37  <piscisaureus> if mode == 'debug':
22:51:37  <piscisaureus> name = os.path.abspath('Debug/node.exe')
22:51:52  <piscisaureus>redirect to >out and out_dir suddenly exists
22:53:13  <piscisaureus>bnoordhuis: 1am press conference about diginotar
22:53:17  <igorzi>oh :)
22:53:20  <piscisaureus>by donner
22:53:28  <piscisaureus>sounds like serious
22:53:42  <bnoordhuis>did they mitm my tax form?
22:54:09  <bnoordhuis>where did you read that btw?
22:54:32  <piscisaureus>bnoordhuis: http://twitter.com/#!/wol/status/109759064665374722
22:55:02  <bnoordhuis>ah, jeroen wollaars
22:55:41  <piscisaureus>igorzi: does running tests also give you spurious "unlink(): file in use" errors?
22:55:48  <bnoordhuis>bet a sixpack they're revoking the govt certs?
22:56:22  <igorzi>piscisaureus: i haven't seen those.. i'll try
22:56:22  * isaacsjoined
22:56:49  * isaacsquit (Client Quit)
22:57:07  <piscisaureus>igorzi: seems that node.exe processes that don't terminate after their parent died keep some temp file captive
22:58:39  * isaacsjoined
23:08:30  <bnoordhuis>ryah: https://github.com/joyent/node/commit/e3c1cf3b5be6a2d3e3b8999a5c8e63560bf4dce8#commitcomment-567055 <- is the logos page supposed to have no toc? looks odd
23:11:20  <DrPizza>piscisaureus: yes I have seen thos
23:13:14  <piscisaureus>ryah: I can't run make test-all :-(
23:13:41  <piscisaureus>test.py crashes all the time
23:14:06  * mralephquit (Quit: Leaving.)
23:21:03  <isaacs>piscisaureus, DrPizza: where do you usually put node.exe to make it runnable
23:21:04  <isaacs>?
23:21:20  <piscisaureus>isaacs: you don't
23:21:25  <DrPizza>at the moment, BUILD_ROOT/Debug
23:21:35  <isaacs>hahah
23:21:36  <isaacs>ok
23:21:39  <piscisaureus>I think isaacs has a different interest
23:21:44  <isaacs>yeah
23:21:52  <isaacs>i just wanna make npm work as fast as possible
23:21:57  <isaacs>as soon as possible
23:21:57  <piscisaureus>isaacs: you add the directory to the path
23:22:01  <isaacs>k
23:22:16  <DrPizza>isaacs: I guess really to answer your question someone would need to create an installer package that included adding the node dir to the path
23:22:26  <DrPizza>because without that, there's no typical location
23:22:31  <isaacs>ok
23:22:35  <piscisaureus>yeah
23:22:46  <isaacs>so i can just make %HOME%\node or something, and then add thatto the %PATH%
23:22:58  <piscisaureus>yeah somethink like that
23:23:18  <piscisaureus>Usually people instasll to %PROGRAMFILES%\node
23:24:19  <isaacs>ok
23:24:31  <piscisaureus>but if you want to install it more privately
23:24:46  <piscisaureus>use %appdata%\node
23:24:49  <piscisaureus>like chrome does
23:25:21  <piscisaureus>igorzi, DrPizza: ^ agree?
23:25:33  <DrPizza>yeahhhh maybe
23:25:38  <DrPizza>not sure if it should go in roaming or local
23:26:51  <piscisaureus>roaming :_)
23:27:53  <piscisaureus>although chrome uses local ok
23:28:09  <piscisaureus>I prefer "program files"
23:28:22  <piscisaureus>but this has issues with uac etc
23:28:27  <DrPizza>well yes
23:28:28  <DrPizza>but
23:29:15  <DrPizza>you kind of want the ability to do both
23:29:25  <DrPizza>isaacs: how does npm deal with permissions on unix?
23:29:31  <DrPizza>do packages get installed into ~?
23:29:40  <DrPizza>or do you have to be root/setuid/sudo/etc.
23:30:01  <isaacs>DrPizza: either
23:30:35  <DrPizza>how does it discern which to do?
23:30:37  <isaacs>DrPizza: if you'er root, and it's a global install, then the package dir is owned by "nobody" (the --user config var), and scripts are run as that user
23:30:38  <DrPizza>does the user have to specify
23:30:43  <DrPizza>or does it just know whether it's root or not
23:30:48  <isaacs>DrPizza: if you're not root, then it does everythign as the current user
23:30:53  <DrPizza>ok
23:30:55  <DrPizza>so
23:31:01  <isaacs>DrPizza: isroot = process.getuid() === 0
23:31:14  <DrPizza>isaacs: yes, ok
23:31:22  <isaacs>DrPizza: if it's a local install, then it does the same thing, but as the owner of the closest folder (typically the $USER)
23:31:42  <DrPizza>piscisaureus: we could have %appdata%\node\npm for per-user packages and %programfiles%\node\npm for global installs
23:31:50  <DrPizza>it's not quite as easy as testing if uid == 0
23:31:58  <DrPizza>but the same decision can be made
23:31:59  <isaacs>DrPizza: i think the current logic will probably be ok on that front
23:32:11  <isaacs>DrPizza: but yeah, testing the process.getuid() will be not enough to know
23:32:32  <piscisaureus>DrPizza: you can should global stuff in %ProgramData% I think
23:32:44  <isaacs>> process.getuid()
23:32:44  <isaacs>TypeError: Object [object Object] has no method 'getuid'
23:32:45  <DrPizza>piscisaureus: on vista/7, is that on 2003?
23:32:57  <piscisaureus>DrPizza: it exists
23:33:01  <DrPizza>isaacs: right, there are going to be things to deal with
23:33:10  <DrPizza>oh, where does it point? program files\common files or something?
23:33:11  <isaacs>but even that much aside...
23:33:22  <piscisaureus>DrPizza: I think on 2003 it is in c:\documents and settings\all users\application data
23:33:26  <DrPizza>aah
23:33:32  <piscisaureus>maybe the env var doesn't exist
23:33:32  <isaacs>i think the path logic is one of the easier aspects of this problem.
23:33:38  <piscisaureus>yes
23:33:42  <piscisaureus>isaacs: yeah, do whatever
23:33:46  <piscisaureus>I'll tell you if it sucks
23:33:49  <isaacs>haha
23:33:51  <isaacs>right
23:33:51  <DrPizza>isaacs: well it's path + permissions
23:33:53  <piscisaureus>UAC is going to be a problem
23:33:56  <isaacs>uac?
23:34:02  <DrPizza>piscisaureus: no, if you run unelevated it's just user
23:34:11  <DrPizza>"root" == elevated
23:34:23  <piscisaureus>DrPizza: you can't install global stuff
23:34:31  <DrPizza>what do you mean
23:34:38  <piscisaureus>but you have to mark your .exe for elevation to do that
23:34:45  <DrPizza>what
23:34:45  <DrPizza>no
23:34:49  <piscisaureus>sure
23:34:49  <DrPizza>you can elevate anything
23:34:54  <piscisaureus>yeah ok
23:35:02  <piscisaureus>maybe if you run an elevated cmd
23:35:02  <DrPizza>right click, run as administrator
23:35:09  <piscisaureus>yeah
23:35:11  <DrPizza>or right click command prompt, run as administrator
23:35:21  <igorzi>piscisaureus: DrPizza: isaacs: why does uac matter here? it should be up to people where they want to place node.exe and npm.. if they place it into somewhere that requires elevation - then they'll just need to run elevated
23:35:42  <DrPizza>igorzi: no, I don't think it does, it would matter if we wanted some kind of auto-elevation but I don't think we do
23:35:55  <piscisaureus>well
23:36:06  <piscisaureus>this discussion is getting out of hand
23:36:11  <piscisaureus>let isaacs do his thing
23:36:15  <isaacs>i don't know what uac is...
23:36:18  <isaacs>will i have to?
23:36:18  <piscisaureus>we'll patch up the minor issues later
23:36:23  <DrPizza>isaacs: no, you don't have to
23:36:27  <isaacs>ok, great
23:36:31  * isaacsback to blissful ignorance
23:36:33  <DrPizza>isaacs: all you need is a good way of detecting if the user is privileged or not
23:36:34  <DrPizza>but
23:36:37  <DrPizza>at the moment you don't have that
23:36:58  <isaacs>dum dadum dadum dum da dummmm...
23:37:02  <isaacs>windows is so soothing
23:37:10  <isaacs>os x only has one "dummm" when it starts up
23:37:20  <piscisaureus>yes
23:37:27  <piscisaureus>that "dummm" is pretty ugly
23:37:37  <piscisaureus>they should have bikeshedded a better sound
23:37:40  <bnoordhuis>piscisaureus: http://nos.nl/artikel/269586-donner-zegt-vertrouwen-in-diginotar-op.html <- that
23:37:40  <DrPizza>isaacs: is there other information you need to know?
23:37:49  <isaacs>DrPizza: nono, that's enough for now, thanks :)
23:38:42  <bnoordhuis>Dat bedrijf is vorige maand gehackt in Iran. <- no they weren't, they didn't do due diligence
23:39:13  <DrPizza>bnoordhuis: what's that saying, that diginotar are idiots and/or their "auditors" are morons?
23:39:48  <bnoordhuis>the website of the dutch bbc says that diginotar was hacked by iran last month
23:39:51  <bnoordhuis>nuh-uh
23:40:03  <DrPizza>hacked in july and numerous times previous
23:40:37  <bnoordhuis>yes, but the real problem is of course that they handed out certificates to the wrong people
23:41:03  <bnoordhuis>the article is about the dutch government revoking diginotar's intermediate certs btw
23:41:09  <bnoordhuis>killing blow!
23:41:12  <DrPizza>piscisaureus: ryah: what would you say to implementing getuid on Windows, making it return 0 if the user is in the Administrators group, and some other number (maybe the same number every time) for regular users
23:41:30  <piscisaureus>hmm
23:41:31  <DrPizza>piscisaureus: it seems kind of awful, but I think is the easiest thing for isaacs
23:41:37  <DrPizza>or as an alternative
23:41:42  <DrPizza>have an is_superuser() method
23:41:43  <piscisaureus>it's overly optimizing for the npm use case
23:41:50  <DrPizza>that returns true for root || administrators
23:41:52  <DrPizza>false otherwise
23:41:58  <DrPizza>then isaacs could call that instead of testing the uid
23:42:13  <piscisaureus>just have some require('platform').fubar function
23:42:48  <DrPizza>I thought the objective was to remove all platform-dependent code from node though
23:43:15  <piscisaureus>DrPizza: that's utopia
23:43:19  <DrPizza>heh
23:43:34  <piscisaureus>DrPizza: but it seems unreasonable to have a least common denominator policy
23:43:48  <igorzi>[18:40|% 100|+ 199|- 55]: Done
23:43:52  <igorzi>vcbuild test
23:44:07  <DrPizza>piscisaureus: an "am I a superuser" function seems reasonably general
23:44:08  <isaacs>is there a shell for windows that isn't so....
23:44:12  <isaacs>um... cmd?
23:44:16  <isaacs>like, a bash or something?
23:44:32  <piscisaureus>if you install mingw w/ msys you can use bash
23:44:54  <piscisaureus>heh
23:44:56  <piscisaureus>[14:15|% 100|+ 227|- 50]: Done
23:45:06  <piscisaureus>^-- igorzi: some stuff doesn't add up here
23:46:13  <igorzi>piscisaureus: did you run test or test-all?
23:46:27  <piscisaureus>test-all
23:46:35  <igorzi>aha.. i ran test.. running test-all now
23:48:53  * graydonquit (Quit: Leaving.)