FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
node/src/node_main.cc at master · DynamicAnt/node · GitHub
DynamicAnt
/
node
Public
forked from
nodejs/node
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
node
/
src
/
node_main.cc
Copy path
More file actions
More file actions
Latest commit
History
History
History
106 lines (100 loc) · 3.57 KB
Breadcrumbs
node
/
src
/
node_main.cc
Copy path
File metadata and controls
106 lines (100 loc) · 3.57 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
//
Copyright Joyent, Inc. and other Node contributors.
//
//
Permission is hereby granted, free of charge, to any person obtaining a
//
copy of this software and associated documentation files (the
//
"Software"), to deal in the Software without restriction, including
//
without limitation the rights to use, copy, modify, merge, publish,
//
distribute, sublicense, and/or sell copies of the Software, and to permit
//
persons to whom the Software is furnished to do so, subject to the
//
following conditions:
//
//
The above copyright notice and this permission notice shall be included
//
in all copies or substantial portions of the Software.
//
//
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
//
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
//
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
//
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
//
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
//
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
//
USE OR OTHER DEALINGS IN THE SOFTWARE.
#
include
"
node.h
"
#
ifdef
_WIN32
#
include
<
VersionHelpers.h
>
#
include
<
WinError.h
>
int
wmain
(
int
argc,
wchar_t
*wargv[]) {
if
(!
IsWindows7OrGreater
()) {
fprintf
(stderr,
"
This application is only supported on Windows 7,
"
"
Windows Server 2008 R2, or higher.
"
);
exit
(
ERROR_EXE_MACHINE_TYPE_MISMATCH
);
}
//
Convert argv to to UTF8
char
** argv =
new
char
*[argc +
1
];
for
(
int
i =
0
; i < argc; i++) {
//
Compute the size of the required buffer
DWORD
size =
WideCharToMultiByte
(
CP_UTF8
,
0
,
wargv[i],
-
1
,
nullptr
,
0
,
nullptr
,
nullptr
);
if
(size ==
0
) {
//
This should never happen.
fprintf
(stderr,
"
Could not convert arguments to utf8.
"
);
exit
(
1
);
}
//
Do the actual conversion
argv[i] =
new
char
[size];
DWORD
result =
WideCharToMultiByte
(
CP_UTF8
,
0
,
wargv[i],
-
1
,
argv[i],
size,
nullptr
,
nullptr
);
if
(result ==
0
) {
//
This should never happen.
fprintf
(stderr,
"
Could not convert arguments to utf8.
"
);
exit
(
1
);
}
}
argv[argc] =
nullptr
;
//
Now that conversion is done, we can finally start.
return
node::Start
(argc, argv);
}
#
else
//
UNIX
#
ifdef
__linux__
#
include
<
elf.h
>
#
ifdef
__LP64__
#
define
Elf_auxv_t
Elf64_auxv_t
#
else
#
define
Elf_auxv_t
Elf32_auxv_t
#
endif
//
__LP64__
extern
char
** environ;
#
endif
//
__linux__
namespace
node
{
extern
bool
linux_at_secure;
}
//
namespace node
int
main
(
int
argc,
char
*argv[]) {
#
if
defined(__linux__)
char
** envp = environ;
while
(*envp++ !=
nullptr
) {}
Elf_auxv_t* auxv =
reinterpret_cast
<Elf_auxv_t*>(envp);
for
(; auxv->
a_type
!=
AT_NULL
; auxv++) {
if
(auxv->
a_type
==
AT_SECURE
) {
node::linux_at_secure = auxv->
a_un
.
a_val
;
break
;
}
}
#
endif
//
Disable stdio buffering, it interacts poorly with printf()
//
calls elsewhere in the program (e.g., any logging from V8.)
setvbuf
(stdout,
nullptr
, _IONBF,
0
);
setvbuf
(stderr,
nullptr
, _IONBF,
0
);
return
node::Start
(argc, argv);
}
#
endif
Back
|
FazBrowse Home
|
New Git URL