Skip to content
Browse files

Add os module and getHostname

  • Loading branch information...
1 parent dc65cbd commit f1762ff815da22aaafffab7f9eba8aa2cd88604e @mscdex mscdex committed with ry
Showing with 70 additions and 0 deletions.
  1. +1 −0 cmake/node_build.cmake
  2. +1 −0 doc/api/_toc.markdown
  3. +7 −0 doc/api/os.markdown
  4. +3 −0 lib/os.js
  5. +1 −0 src/node_extensions.h
  6. +34 −0 src/node_os.cc
  7. +17 −0 src/node_os.h
  8. +5 −0 test/simple/test-os-hostname.js
  9. +1 −0 wscript
View
1 cmake/node_build.cmake
@@ -32,6 +32,7 @@ set(node_sources
src/node_stdio.cc
src/node_timer.cc
src/node_script.cc
+ src/node_os.cc
src/node_natives.h
${node_extra_src})
View
1 doc/api/_toc.markdown
@@ -28,6 +28,7 @@
* [Child Processes](child_processes.html)
* [Assertion Testing](assert.html)
* [TTY](tty.html)
+* [OS](os.html)
* Appendixes
* [Appendix 1: Recommended Third-party Modules](appendix_1.html)
* [Appendix 2: Deprecated API's](appendix_2.html)
View
7 doc/api/os.markdown
@@ -0,0 +1,7 @@
+## os Module
+
+Use `require('os')` to access this module.
+
+### tls.getHostname
@pquerna
pquerna added a note

shouldn't this be os?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
+
+Returns the hostname of the operating system.
View
3 lib/os.js
@@ -0,0 +1,3 @@
+var binding = process.binding('os');
+
+exports.getHostname = binding.getHostname;
View
1 src/node_extensions.h
@@ -12,5 +12,6 @@ NODE_EXT_LIST_ITEM(node_net)
NODE_EXT_LIST_ITEM(node_http_parser)
NODE_EXT_LIST_ITEM(node_signal_watcher)
NODE_EXT_LIST_ITEM(node_stdio)
+NODE_EXT_LIST_ITEM(node_os)
NODE_EXT_LIST_END
View
34 src/node_os.cc
@@ -0,0 +1,34 @@
+#include <node_os.h>
+
+#include <node.h>
+#include <v8.h>
+
+#include <errno.h>
+#include <unistd.h> // gethostname
+
+namespace node {
+
+using namespace v8;
+
+static Handle<Value> GetHostname(const Arguments& args) {
+ HandleScope scope;
+ char s[255];
+ int r = gethostname(s, 255);
+
+ if (r < 0) {
+ return ThrowException(ErrnoException(errno, "gethostname"));
+ }
+
+ return scope.Close(String::New(s));
+}
+
+void OS::Initialize(v8::Handle<v8::Object> target) {
+ HandleScope scope;
+
+ NODE_SET_METHOD(target, "getHostname", GetHostname);
+}
+
+
+} // namespace node
+
+NODE_MODULE(node_os, node::OS::Initialize);
View
17 src/node_os.h
@@ -0,0 +1,17 @@
+#ifndef node_os_h
+#define node_os_h
+
+#include <node.h>
+#include <v8.h>
+
+namespace node {
+
+class OS {
+public:
+ static void Initialize (v8::Handle<v8::Object> target);
+};
+
+
+} // namespace node
+
+#endif // node_os_h
View
5 test/simple/test-os-hostname.js
@@ -0,0 +1,5 @@
+var common = require('../common');
+var assert = require('assert');
+var os = require('os');
+
+assert.ok(os.getHostname().length > 0);
View
1 wscript
@@ -598,6 +598,7 @@ def build(bld):
src/node_stdio.cc
src/node_timer.cc
src/node_script.cc
+ src/node_os.cc
"""
node.source += bld.env["PLATFORM_FILE"]
if not product_type_is_lib:

0 comments on commit f1762ff

Please sign in to comment.
Something went wrong with that request. Please try again.