Commit | Line | Data |
78ff2d7b |
1 | /* Win32CORE.c |
2 | * |
3 | * Copyright (C) 2007 by Larry Wall and others |
4 | * |
5 | * You may distribute under the terms of either the GNU General Public |
6 | * License or the Artistic License, as specified in the README file. |
7 | * |
8 | */ |
9 | |
10 | #include "EXTERN.h" |
11 | #include "perl.h" |
12 | #include "XSUB.h" |
13 | |
14 | static void |
15 | forward(pTHX_ const char *function) |
16 | { |
17 | dXSARGS; |
18 | Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT, newSVpvn("Win32",5), newSVnv(0.27)); |
19 | SPAGAIN; |
20 | PUSHMARK(SP-items); |
21 | call_pv(function, GIMME_V); |
22 | } |
23 | |
24 | #define FORWARD(function) XS(w32_##function){ forward(aTHX_ "Win32::"#function); } |
25 | FORWARD(GetCwd) |
26 | FORWARD(SetCwd) |
27 | FORWARD(GetNextAvailDrive) |
28 | FORWARD(GetLastError) |
29 | FORWARD(SetLastError) |
30 | FORWARD(LoginName) |
31 | FORWARD(NodeName) |
32 | FORWARD(DomainName) |
33 | FORWARD(FsType) |
34 | FORWARD(GetOSVersion) |
35 | FORWARD(IsWinNT) |
36 | FORWARD(IsWin95) |
37 | FORWARD(FormatMessage) |
38 | FORWARD(Spawn) |
39 | FORWARD(GetTickCount) |
40 | FORWARD(GetShortPathName) |
41 | FORWARD(GetFullPathName) |
42 | FORWARD(GetLongPathName) |
43 | FORWARD(CopyFile) |
44 | FORWARD(Sleep) |
45 | |
46 | /* Don't forward Win32::SetChildShowWindow(). It accesses the internal variable |
47 | * w32_showwindow in thread_intern and is therefore not implemented in Win32.xs. |
48 | */ |
49 | /* FORWARD(SetChildShowWindow) */ |
50 | |
51 | #undef FORWARD |
52 | |
53 | XS(boot_Win32CORE) |
54 | { |
55 | dXSARGS; |
56 | char *file = __FILE__; |
57 | |
58 | /* these names are Activeware compatible */ |
59 | newXS("Win32::GetCwd", w32_GetCwd, file); |
60 | newXS("Win32::SetCwd", w32_SetCwd, file); |
61 | newXS("Win32::GetNextAvailDrive", w32_GetNextAvailDrive, file); |
62 | newXS("Win32::GetLastError", w32_GetLastError, file); |
63 | newXS("Win32::SetLastError", w32_SetLastError, file); |
64 | newXS("Win32::LoginName", w32_LoginName, file); |
65 | newXS("Win32::NodeName", w32_NodeName, file); |
66 | newXS("Win32::DomainName", w32_DomainName, file); |
67 | newXS("Win32::FsType", w32_FsType, file); |
68 | newXS("Win32::GetOSVersion", w32_GetOSVersion, file); |
69 | newXS("Win32::IsWinNT", w32_IsWinNT, file); |
70 | newXS("Win32::IsWin95", w32_IsWin95, file); |
71 | newXS("Win32::FormatMessage", w32_FormatMessage, file); |
72 | newXS("Win32::Spawn", w32_Spawn, file); |
73 | newXS("Win32::GetTickCount", w32_GetTickCount, file); |
74 | newXS("Win32::GetShortPathName", w32_GetShortPathName, file); |
75 | newXS("Win32::GetFullPathName", w32_GetFullPathName, file); |
76 | newXS("Win32::GetLongPathName", w32_GetLongPathName, file); |
77 | newXS("Win32::CopyFile", w32_CopyFile, file); |
78 | newXS("Win32::Sleep", w32_Sleep, file); |
79 | /* newXS("Win32::SetChildShowWindow", w32_SetChildShowWindow, file); */ |
80 | |
81 | XSRETURN_YES; |
82 | } |