2
2
#include <wctype.h>
3
3
#include <windows.h>
4
4
#include <shlobj.h>
5
+ #include <wchar.h>
5
6
6
7
#define PERL_NO_GET_CONTEXT
7
8
#include "EXTERN.h"
@@ -114,7 +115,7 @@ typedef void (WINAPI *PFNGetNativeSystemInfo)(LPSYSTEM_INFO lpSystemInfo);
114
115
* WORD type has been replaced by unsigned short because
115
116
* WORD is already used by Perl itself.
116
117
*/
117
- struct {
118
+ struct g_osver_t {
118
119
DWORD dwOSVersionInfoSize ;
119
120
DWORD dwMajorVersion ;
120
121
DWORD dwMinorVersion ;
@@ -126,7 +127,7 @@ struct {
126
127
unsigned short wSuiteMask ;
127
128
BYTE wProductType ;
128
129
BYTE wReserved ;
129
- } g_osver = {0 , 0 , 0 , 0 , 0 , "" , 0 , 0 , 0 , 0 , 0 };
130
+ } g_osver = {0 , 0 , 0 , 0 , 0 , "" , 0 , 0 , 0 , 0 , 0 };
130
131
BOOL g_osver_ex = TRUE;
131
132
132
133
#define ONE_K_BUFSIZE 1024
@@ -377,6 +378,7 @@ get_childenv(void)
377
378
void
378
379
free_childenv (void * d )
379
380
{
381
+ PERL_UNUSED_ARG (d );
380
382
}
381
383
382
384
# define PerlDir_mapA (dir ) (dir)
@@ -388,7 +390,7 @@ XS(w32_ExpandEnvironmentStrings)
388
390
dXSARGS ;
389
391
390
392
if (items != 1 )
391
- croak ("usage: Win32::ExpandEnvironmentStrings($String);\n " );
393
+ croak ("usage: Win32::ExpandEnvironmentStrings($String)" );
392
394
393
395
if (IsWin2000 ()) {
394
396
WCHAR value [31 * 1024 ];
@@ -536,7 +538,7 @@ XS(w32_LookupAccountName)
536
538
537
539
if (items != 5 )
538
540
croak ("usage: Win32::LookupAccountName($system, $account, $domain, "
539
- "$sid, $sidtype);\n " );
541
+ "$sid, $sidtype)" );
540
542
541
543
SIDLen = sizeof (SID );
542
544
DomLen = sizeof (Domain );
@@ -570,7 +572,7 @@ XS(w32_LookupAccountSID)
570
572
BOOL bResult ;
571
573
572
574
if (items != 5 )
573
- croak ("usage: Win32::LookupAccountSID($system, $sid, $account, $domain, $sidtype);\n " );
575
+ croak ("usage: Win32::LookupAccountSID($system, $sid, $account, $domain, $sidtype)" );
574
576
575
577
sid = SvPV_nolen (ST (1 ));
576
578
if (IsValidSid (sid )) {
@@ -601,7 +603,7 @@ XS(w32_InitiateSystemShutdown)
601
603
602
604
if (items != 5 )
603
605
croak ("usage: Win32::InitiateSystemShutdown($machineName, $message, "
604
- "$timeOut, $forceClose, $reboot);\n " );
606
+ "$timeOut, $forceClose, $reboot)" );
605
607
606
608
machineName = SvPV_nolen (ST (0 ));
607
609
@@ -642,7 +644,7 @@ XS(w32_AbortSystemShutdown)
642
644
char * machineName ;
643
645
644
646
if (items != 1 )
645
- croak ("usage: Win32::AbortSystemShutdown($machineName);\n " );
647
+ croak ("usage: Win32::AbortSystemShutdown($machineName)" );
646
648
647
649
machineName = SvPV_nolen (ST (0 ));
648
650
@@ -680,7 +682,7 @@ XS(w32_MsgBox)
680
682
I32 result ;
681
683
682
684
if (items < 1 || items > 3 )
683
- croak ("usage: Win32::MsgBox($message [, $flags [, $title]]);\n " );
685
+ croak ("usage: Win32::MsgBox($message [, $flags [, $title]])" );
684
686
685
687
if (items > 1 )
686
688
flags = (DWORD )SvIV (ST (1 ));
@@ -787,6 +789,8 @@ XS(w32_UnregisterServer)
787
789
XS (w32_GetArchName )
788
790
{
789
791
dXSARGS ;
792
+ if (items )
793
+ Perl_croak (aTHX_ "usage: Win32::GetArchName()" );
790
794
XSRETURN_PV (getenv ("PROCESSOR_ARCHITECTURE" ));
791
795
}
792
796
@@ -796,6 +800,8 @@ XS(w32_GetChipName)
796
800
SYSTEM_INFO sysinfo ;
797
801
HMODULE module ;
798
802
PFNGetNativeSystemInfo pfnGetNativeSystemInfo ;
803
+ if (items )
804
+ Perl_croak (aTHX_ "usage: Win32::GetChipName()" );
799
805
800
806
Zero (& sysinfo ,1 ,SYSTEM_INFO );
801
807
module = GetModuleHandle ("kernel32.dll" );
@@ -814,8 +820,11 @@ XS(w32_GuidGen)
814
820
dXSARGS ;
815
821
GUID guid ;
816
822
char szGUID [50 ] = {'\0' };
817
- HRESULT hr = CoCreateGuid (& guid );
823
+ HRESULT hr ;
824
+ if (items )
825
+ Perl_croak (aTHX_ "usage: Win32::GuidGen()" );
818
826
827
+ hr = CoCreateGuid (& guid );
819
828
if (SUCCEEDED (hr )) {
820
829
LPOLESTR pStr = NULL ;
821
830
#ifdef __cplusplus
@@ -997,7 +1006,7 @@ XS(w32_GetFileVersion)
997
1006
char * data ;
998
1007
999
1008
if (items != 1 )
1000
- croak ("usage: Win32::GetFileVersion($filename)\n " );
1009
+ croak ("usage: Win32::GetFileVersion($filename)" );
1001
1010
1002
1011
filename = SvPV_nolen (ST (0 ));
1003
1012
size = GetFileVersionInfoSize (filename , & handle );
@@ -1048,16 +1057,22 @@ XS(w32_SetChildShowWindow)
1048
1057
* inside the thread_intern structure, the MSWin32 implementation
1049
1058
* lives in win32/win32.c in the core Perl distribution.
1050
1059
*/
1051
- dXSARGS ;
1060
+ dSP ;
1061
+ I32 ax = POPMARK ;
1062
+ EXTEND (SP ,1 );
1052
1063
XSRETURN_UNDEF ;
1053
1064
}
1054
1065
#endif
1055
1066
1056
1067
XS (w32_GetCwd )
1057
1068
{
1058
1069
dXSARGS ;
1070
+ char * ptr ;
1071
+ if (items )
1072
+ Perl_croak (aTHX_ "usage: Win32::GetCwd()" );
1073
+
1059
1074
/* Make the host for current directory */
1060
- char * ptr = PerlEnv_get_childdir ();
1075
+ ptr = PerlEnv_get_childdir ();
1061
1076
/*
1062
1077
* If ptr != Nullch
1063
1078
* then it worked, set PV valid,
@@ -1108,6 +1123,8 @@ XS(w32_GetNextAvailDrive)
1108
1123
char ix = 'C' ;
1109
1124
char root [] = "_:\\" ;
1110
1125
1126
+ if (items )
1127
+ Perl_croak (aTHX_ "usage: Win32::GetNextAvailDrive()" );
1111
1128
EXTEND (SP ,1 );
1112
1129
while (ix <= 'Z' ) {
1113
1130
root [0 ] = ix ++ ;
@@ -1122,6 +1139,8 @@ XS(w32_GetNextAvailDrive)
1122
1139
XS (w32_GetLastError )
1123
1140
{
1124
1141
dXSARGS ;
1142
+ if (items )
1143
+ Perl_croak (aTHX_ "usage: Win32::GetLastError()" );
1125
1144
EXTEND (SP ,1 );
1126
1145
XSRETURN_IV (GetLastError ());
1127
1146
}
@@ -1138,6 +1157,8 @@ XS(w32_SetLastError)
1138
1157
XS (w32_LoginName )
1139
1158
{
1140
1159
dXSARGS ;
1160
+ if (items )
1161
+ Perl_croak (aTHX_ "usage: Win32::LoginName()" );
1141
1162
EXTEND (SP ,1 );
1142
1163
if (IsWin2000 ()) {
1143
1164
WCHAR name [128 ];
@@ -1164,6 +1185,8 @@ XS(w32_NodeName)
1164
1185
dXSARGS ;
1165
1186
char name [MAX_COMPUTERNAME_LENGTH + 1 ];
1166
1187
DWORD size = sizeof (name );
1188
+ if (items )
1189
+ Perl_croak (aTHX_ "usage: Win32::NodeName()" );
1167
1190
EXTEND (SP ,1 );
1168
1191
if (GetComputerName (name ,& size )) {
1169
1192
/* size does NOT include NULL :-( */
@@ -1178,9 +1201,11 @@ XS(w32_DomainName)
1178
1201
{
1179
1202
dXSARGS ;
1180
1203
HMODULE module = LoadLibrary ("netapi32.dll" );
1181
- PFNNetApiBufferFree pfnNetApiBufferFree ;
1182
- PFNNetWkstaGetInfo pfnNetWkstaGetInfo ;
1204
+ PFNNetApiBufferFree pfnNetApiBufferFree = NULL ;
1205
+ PFNNetWkstaGetInfo pfnNetWkstaGetInfo = NULL ;
1183
1206
1207
+ if (items )
1208
+ Perl_croak (aTHX_ "usage: Win32::DomainName()" );
1184
1209
if (module ) {
1185
1210
GETPROC (NetApiBufferFree );
1186
1211
GETPROC (NetWkstaGetInfo );
@@ -1242,8 +1267,10 @@ XS(w32_FsType)
1242
1267
dXSARGS ;
1243
1268
char fsname [256 ];
1244
1269
DWORD flags , filecomplen ;
1270
+ if (items )
1271
+ Perl_croak (aTHX_ "usage: Win32::FsType()" );
1245
1272
if (GetVolumeInformation (NULL , NULL , 0 , NULL , & filecomplen ,
1246
- & flags , fsname , sizeof (fsname ))) {
1273
+ & flags , fsname , sizeof (fsname ))) {
1247
1274
if (GIMME_V == G_ARRAY ) {
1248
1275
XPUSHs (sv_2mortal (newSVpvn (fsname ,strlen (fsname ))));
1249
1276
XPUSHs (sv_2mortal (newSViv (flags )));
@@ -1260,6 +1287,8 @@ XS(w32_FsType)
1260
1287
XS (w32_GetOSVersion )
1261
1288
{
1262
1289
dXSARGS ;
1290
+ if (items )
1291
+ Perl_croak (aTHX_ "usage: Win32::GetOSVersion()" );
1263
1292
1264
1293
if (GIMME_V == G_SCALAR ) {
1265
1294
XSRETURN_IV (g_osver .dwPlatformId );
@@ -1282,13 +1311,17 @@ XS(w32_GetOSVersion)
1282
1311
XS (w32_IsWinNT )
1283
1312
{
1284
1313
dXSARGS ;
1314
+ if (items )
1315
+ Perl_croak (aTHX_ "usage: Win32::IsWinNT()" );
1285
1316
EXTEND (SP ,1 );
1286
1317
XSRETURN_IV (IsWinNT ());
1287
1318
}
1288
1319
1289
1320
XS (w32_IsWin95 )
1290
1321
{
1291
1322
dXSARGS ;
1323
+ if (items )
1324
+ Perl_croak (aTHX_ "usage: Win32::IsWin95()" );
1292
1325
EXTEND (SP ,1 );
1293
1326
XSRETURN_IV (IsWin95 ());
1294
1327
}
@@ -1364,6 +1397,8 @@ XS(w32_GetTickCount)
1364
1397
{
1365
1398
dXSARGS ;
1366
1399
DWORD msec = GetTickCount ();
1400
+ if (items )
1401
+ Perl_croak (aTHX_ "usage: Win32::GetTickCount()" );
1367
1402
EXTEND (SP ,1 );
1368
1403
if ((IV )msec > 0 )
1369
1404
XSRETURN_IV (msec );
@@ -1525,7 +1560,7 @@ XS(w32_GetLongPathName)
1525
1560
WCHAR wide_path [MAX_PATH + 1 ];
1526
1561
WCHAR * long_path ;
1527
1562
1528
- if (wcslen (wstr ) < countof (wide_path )) {
1563
+ if (wcslen (wstr ) < ( size_t ) countof (wide_path )) {
1529
1564
wcscpy (wide_path , wstr );
1530
1565
long_path = my_longpathW (wide_path );
1531
1566
if (long_path ) {
@@ -1619,13 +1654,17 @@ XS(w32_OutputDebugString)
1619
1654
XS (w32_GetCurrentProcessId )
1620
1655
{
1621
1656
dXSARGS ;
1657
+ if (items )
1658
+ Perl_croak (aTHX_ "usage: Win32::GetCurrentProcessId()" );
1622
1659
EXTEND (SP ,1 );
1623
1660
XSRETURN_IV (GetCurrentProcessId ());
1624
1661
}
1625
1662
1626
1663
XS (w32_GetCurrentThreadId )
1627
1664
{
1628
1665
dXSARGS ;
1666
+ if (items )
1667
+ Perl_croak (aTHX_ "usage: Win32::GetCurrentThreadId()" );
1629
1668
EXTEND (SP ,1 );
1630
1669
XSRETURN_IV (GetCurrentThreadId ());
1631
1670
}
@@ -1713,27 +1752,35 @@ XS(w32_GetProductInfo)
1713
1752
XS (w32_GetACP )
1714
1753
{
1715
1754
dXSARGS ;
1755
+ if (items )
1756
+ Perl_croak (aTHX_ "usage: Win32::GetACP()" );
1716
1757
EXTEND (SP ,1 );
1717
1758
XSRETURN_IV (GetACP ());
1718
1759
}
1719
1760
1720
1761
XS (w32_GetConsoleCP )
1721
1762
{
1722
1763
dXSARGS ;
1764
+ if (items )
1765
+ Perl_croak (aTHX_ "usage: Win32::GetConsoleCP()" );
1723
1766
EXTEND (SP ,1 );
1724
1767
XSRETURN_IV (GetConsoleCP ());
1725
1768
}
1726
1769
1727
1770
XS (w32_GetConsoleOutputCP )
1728
1771
{
1729
1772
dXSARGS ;
1773
+ if (items )
1774
+ Perl_croak (aTHX_ "usage: Win32::GetConsoleOutputCP()" );
1730
1775
EXTEND (SP ,1 );
1731
1776
XSRETURN_IV (GetConsoleOutputCP ());
1732
1777
}
1733
1778
1734
1779
XS (w32_GetOEMCP )
1735
1780
{
1736
1781
dXSARGS ;
1782
+ if (items )
1783
+ Perl_croak (aTHX_ "usage: Win32::GetOEMCP()" );
1737
1784
EXTEND (SP ,1 );
1738
1785
XSRETURN_IV (GetOEMCP ());
1739
1786
}
0 commit comments