10000 Load libwin32-0.25 into trunk. · perl-libwin32/win32-netadmin@ebb0efd · GitHub
[go: up one dir, main page]

Skip to content

Commit ebb0efd

Browse files
committed
Load libwin32-0.25 into trunk.
1 parent 3685cda commit ebb0efd

File tree

5 files changed

+62
-56
lines changed

5 files changed

+62
-56
lines changed

Makefile.PL

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
1+
use strict;
12
use ExtUtils::MakeMaker;
3+
4+
my @libs;
5+
push @libs, '-L/lib/w32api -lnetapi32' if $^O eq "cygwin";
6+
27
WriteMakefile(
38
'NAME' => 'Win32::NetAdmin',
49
'VERSION_FROM' => 'NetAdmin.pm',
10+
'LIBS' => \@libs,
511
'dist' => {COMPRESS => 'gzip -9f', SUFFIX => 'gz'},
612
($] < 5.005 ? () :
713
(

NetAdmin.pm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ $VERSION = '0.08';
1010
require Exporter;
1111
require DynaLoader;
1212

13-
die "The Win32::NetAdmin module works only on Windows NT" if(!Win32::IsWinNT() );
13+
require Win32 unless defined &Win32::IsWinNT;
14+
die "The Win32::NetAdmin module works only on Windows NT" unless Win32::IsWinNT();
1415

1516
@ISA= qw( Exporter DynaLoader );
1617
# Items to export into callers namespace by default. Note: do not export

NetAdmin.xs

Lines changed: 48 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,18 @@
3333
#include "perl.h"
3434
#include "XSUB.h"
3535

36+
#ifndef A2WHELPER
37+
# define A2WHELPER_LEN(lpa, alen, lpw, nBytes)\
38+
(lpw[0] = 0, MultiByteToWideChar((IN_BYTES) ? CP_ACP : CP_UTF8, 0, \
39+
lpa, alen, lpw, (nBytes/sizeof(WCHAR))))
40+
# define A2WHELPER(lpa, lpw, nBytes) A2WHELPER_LEN(lpa, -1, lpw, nBytes)
41+
42+
# define W2AHELPER_LEN(lpw, wlen, lpa, nChars)\
43+
(lpa[0] = '\0', WideCharToMultiByte((IN_BYTES) ? CP_ACP : CP_UTF8, 0, \
44+
lpw, wlen, (LPSTR)lpa, nChars,NULL,NULL))
45+
# define W2AHELPER(lpw, lpa, nChars) W2AHELPER_LEN(lpw, -1, lpa, nChars)
46+
#endif
47+
3648
#include "../ppport.h"
3749

3850
#define RETURNRESULT(x) if ((x)){ XST_mYES(0); }\
@@ -556,7 +568,7 @@ _AllocWideName(char* name)
556568
length = (strlen(name)+1) * sizeof(WCHAR);
557569
lpPtr = (LPWSTR)malloc(length);
558570
if (lpPtr != NULL)
559-
MultiByteToWideChar(CP_ACP, NULL, name, -1, lpPtr, length);
571+
MultiByteToWideChar(CP_ACP, 0, name, -1, lpPtr, length);
560572
}
561573
return lpPtr;
562574
}
@@ -574,7 +586,7 @@ int
574586
WCTMB(LPWSTR lpwStr, LPSTR lpStr, int size)
575587
{
576588
*lpStr = '\0';
577-
return WideCharToMultiByte(CP_ACP,NULL,lpwStr,-1,lpStr,size,NULL,NULL);
589+
return WideCharToMultiByte(CP_ACP, 0, lpwStr, -1, lpStr, size, NULL, 0);
578590
}
579591

580592
/*
@@ -902,7 +914,6 @@ XS(XS_NT__NetAdmin_UserChangePassword)
902914
XS(XS_NT__NetAdmin_UsersExist)
903915
{
904916
dXSARGS;
905-
char buffer[UNLEN+1];
906917
LPWSTR lpwServer, lpwUser;
907918
PUSER_INFO_0 puiUser;
908919
BOOL bReturn = FALSE;
@@ -936,9 +947,8 @@ XS(XS_NT__NetAdmin_GetUsers)
936947
PUSER_INFO_0 pwzUsers;
937948
PUSER_INFO_10 pwzUsers10;
938949
DWORD filter, entriesRead, totalEntries, resumeHandle = 0;
939-
int index;
940-
SV *sv, *nSv;
941-
SV *user;
950+
DWORD index;
951+
SV *sv;
942952
DWORD lastError = 0;
943953

944954
if (items != 3) {
@@ -1007,7 +1017,7 @@ XS(XS_NT__NetAdmin_GetTransports)
10071017
char buffer1[UNLEN+1];
10081018
PWKSTA_TRANSPORT_INFO_0 pws;
10091019
DWORD entriesRead, totalEntries, resumeHandle = 0;
1010-
int index;
1020+
DWORD index;
10111021
SV *sv;
10121022
HV *hvTemp;
10131023
DWORD lastError = 0;
@@ -1100,9 +1110,8 @@ XS(XS_NT__NetAdmin_LoggedOnUsers)
11001110
PWKSTA_USER_INFO_0 pwzUser0;
11011111
PWKSTA_USER_INFO_1 pwzUser1;
11021112
DWORD entriesRead, totalEntries, resumeHandle = 0;
1103-
int index;
1104-
SV *sv, *nSv;
1105-
SV *user;
1113+
DWORD index;
1114+
SV *sv;
11061115
DWORD lastError = 0;
11071116

11081117
if (items != 2) {
@@ -1295,7 +1304,7 @@ XS(XS_NT__NetAdmin_GroupAddUsers)
12951304
for (index = 0; index <= count; ++index) {
12961305
psv = av_fetch((AV*)sv, index, 0);
12971306
if (psv != NULL) {
1298-
MultiByteToWideChar(CP_ACP, NULL, (char*)SvPV(*psv,n_a),
1307+
MultiByteToWideChar(CP_ACP, 0, (char*)SvPV(*psv,n_a),
12991308
-1, wzUser, sizeof(wzUser));
13001309
lastError = NetGroupAddUser(lpwServer, lpwGroup, wzUser);
13011310
if (lastError != 0)
@@ -1304,7 +1313,7 @@ XS(XS_NT__NetAdmin_GroupAddUsers)
13041313
}
13051314
break;
13061315
default:
1307-
MultiByteToWideChar(CP_ACP, NULL, (char*)SvPV(sv,n_a),
1316+
MultiByteToWideChar(CP_ACP, 0, (char*)SvPV(sv,n_a),
13081317
-1, wzUser, sizeof(wzUser));
13091318
lastError = NetGroupAddUser(lpwServer, lpwGroup, wzUser);
13101319
break;
@@ -1342,7 +1351,7 @@ XS(XS_NT__NetAdmin_GroupDeleteUsers)
13421351
for (index = 0; index <= count; ++index) {
13431352
psv = av_fetch((AV*)sv, index, 0);
13441353
if (psv != NULL) {
1345-
MultiByteToWideChar(CP_ACP, NULL, (char*)SvPV(*psv,n_a),
1354+
MultiByteToWideChar(CP_ACP, 0, (char*)SvPV(*psv,n_a),
13461355
-1, wzUser, sizeof(wzUser));
13471356
lastError = NetGroupDelUser(lpwServer, lpwGroup, wzUser);
13481357
if (lastError != 0)
@@ -1351,7 +1360,7 @@ XS(XS_NT__NetAdmin_GroupDeleteUsers)
13511360
}
13521361
break;
13531362
default:
1354-
MultiByteToWideChar(CP_ACP, NULL, (char*)SvPV(sv,n_a),
1363+
MultiByteToWideChar(CP_ACP, 0, (char*)SvPV(sv,n_a),
13551364
-1, wzUser, sizeof(wzUser));
13561365
lastError = NetGroupDelUser(lpwServer, lpwGroup, wzUser);
13571366
break;
@@ -1369,7 +1378,7 @@ XS(XS_NT__NetAdmin_GroupIsMember)
13691378
LPWSTR lpwServer, lpwGroup, lpwUser;
13701379
PGROUP_USERS_INFO_0 pwzGroupUsers;
13711380
DWORD entriesRead, totalEntries, resumeHandle = 0;
1372-
int index;
1381+
DWORD index;
13731382
BOOL bReturn = FALSE;
13741383
DWORD lastError = 0;
13751384

@@ -1429,9 +1438,9 @@ XS(XS_NT__NetAdmin_GroupGetMembers)
14291438
char buffer[UNLEN+1];
14301439
PGROUP_USERS_INFO_0 pwzGroupUsers;
14311440
DWORD entriesRead, totalEntries;
1432-
size_t resumeHandle = 0;
1433-
int index;
1434-
SV *sv, *nSv;
1441+
DWORD resumeHandle = 0;
1442+
DWORD index;
1443+
SV *sv;
14351444
DWORD lastError = 0;
14361445

14371446
if (items != 3) {
@@ -1598,7 +1607,7 @@ XS(XS_NT__NetAdmin_LocalGroupAddUsers)
15981607
for (index = 0; index <= count; ++index) {
15991608
psv = av_fetch((AV*)sv, index, 0);
16001609
if (psv != NULL) {
1601-
MultiByteToWideChar(CP_ACP, NULL, (char*)SvPV(*psv,n_a),
1610+
MultiByteToWideChar(CP_ACP, 0, (char*)SvPV(*psv,n_a),
16021611
-1, wzUser, sizeof(wzUser));
16031612
lastError = NetLocalGroupAddMembers(lpwServer, lpwGroup, 3,
16041613
(LPBYTE)&lgmi3MembersInfo, 1);
@@ -1608,7 +1617,7 @@ XS(XS_NT__NetAdmin_LocalGroupAddUsers)
16081617
}
16091618
break;
16101619
default:
1611-
MultiByteToWideChar(CP_ACP, NULL, (char*)SvPV(sv,n_a), -1,
1620+
MultiByteToWideChar(CP_ACP, 0, (char*)SvPV(sv,n_a), -1,
16121621
wzUser, sizeof(wzUser));
16131622
lastError = NetLocalGroupAddMembers(lpwServer, lpwGroup, 3,
16141623
(LPBYTE)&lgmi3MembersInfo, 1);
@@ -1649,7 +1658,7 @@ XS(XS_NT__NetAdmin_LocalGroupDeleteUsers)
16491658
for (index = 0; index <= count; ++index) {
16501659
psv = av_fetch((AV*)sv, index, 0);
16511660
if (psv != NULL) {
1652-
MultiByteToWideChar(CP_ACP, NULL, (char*)SvPV(*psv,n_a),
1661+
MultiByteToWideChar(CP_ACP, 0, (char*)SvPV(*psv,n_a),
16531662
-1, wzUser, sizeof(wzUser));
16541663
lastError = NetLocalGroupDelMembers(lpwServer, lpwGroup, 3,
16551664
(LPBYTE)&lgmi3MembersInfo, 1);
@@ -1659,7 +1668,7 @@ XS(XS_NT__NetAdmin_LocalGroupDeleteUsers)
16591668
}
16601669
break;
16611670
default:
1662-
MultiByteToWideChar(CP_ACP, NULL, (char*)SvPV(sv,n_a), -1,
1671+
MultiByteToWideChar(CP_ACP, 0, (char*)SvPV(sv,n_a), -1,
16631672
wzUser, sizeof(wzUser));
16641673
lastError = NetLocalGroupDelMembers(lpwServer, lpwGroup, 3,
16651674
(LPBYTE)&lgmi3MembersInfo, 1);
@@ -1675,10 +1684,10 @@ XS(XS_NT__NetAdmin_LocalGroupDeleteUsers)
16751684
XS(XS_NT__NetAdmin_LocalGroupIsMember)
16761685
{
16771686
dXSARGS;
1678-
LPWSTR lpwServer, lpwGroup, lpwUser;
1687+
LPWSTR lpwServer, lpwGroup;
16791688
DWORD entriesRead, totalEntries;
1680-
size_t resumeHandle = 0;
1681-
int index;
1689+
DWORD resumeHandle = 0;
1690+
DWORD index;
16821691
BOOL bReturn = FALSE;
16831692
DWORD lastError = 0;
16841693

@@ -1689,22 +1698,12 @@ XS(XS_NT__NetAdmin_LocalGroupIsMember)
16891698
STRLEN n_a;
16901699
#if 1
16911700
PSID pSid;
1692-
if (USING_WIDE()) {
1693-
WCHAR wSystemName[MAX_PATH+1];
1694-
WCHAR wAccountName[MAX_PATH+1];
1695-
A2WHELPER((LPCTSTR)SvPV(ST(0),n_a), wSystemName, sizeof(wSystemName));
1696-
A2WHELPER((LPCTSTR)SvPV(ST(2),n_a), wAccountName, sizeof(wAccountName));
1697-
lastError = GetAccountSIDW(wSystemName,
1698-
wAccountName,
1699-
&pSid);
1700-
}
1701-
else
1702-
lastError = GetAccountSIDA((LPCTSTR)SvPV(ST(0),n_a),
1703-
(LPCTSTR)SvPV(ST(2),n_a),
1704-
&pSid);
1701+
lastError = GetAccountSIDA((LPCTSTR)SvPV(ST(0),n_a),
1702+
(LPCTSTR)SvPV(ST(2),n_a),
1703+
&pSid);
17051704
if(ERROR_SUCCESS != lastError)
17061705
XSRETURN_NO;
1707-
1706+
17081707
AllocWideName((char*)SvPV(ST(0),n_a), lpwServer);
17091708
AllocWideName((char*)SvPV(ST(1),n_a), lpwGroup);
17101709
do {
@@ -1767,9 +1766,9 @@ XS(XS_NT__NetAdmin_LocalGroupGetMembers)
17671766
char buffer[UNLEN+1];
17681767
PLOCALGROUP_MEMBERS_INFO_1 pwzMembersInfo;
17691768
DWORD entriesRead, totalEntries;
1770-
size_t resumeHandle = 0;
1771-
int index;
1772-
SV *sv, *nSv;
1769+
DWORD resumeHandle = 0;
1770+
DWORD index;
1771+
SV *sv;
17731772
DWORD lastError = 0;
17741773

17751774
if (items != 3) {
@@ -1821,9 +1820,9 @@ XS(XS_NT__NetAdmin_LocalGroupGetMembersWithDomain)
18211820
char buffer1[UNLEN+1];
18221821
PLOCALGROUP_MEMBERS_INFO_2 pwzMembersInfo;
18231822
DWORD entriesRead, totalEntries;
1824-
size_t resumeHandle = 0;
1825-
int index;
1826-
SV *sv, *nSv;
1823+
DWORD resumeHandle = 0;
1824+
DWORD index;
1825+
SV *sv;
18271826
DWORD lastError = 0;
18281827

18291828
if (items != 3) {
@@ -1899,8 +1898,8 @@ XS(XS_NT__NetAdmin_GetServers)
18991898
PSERVER_INFO_100 pwzServerInfo;
19001899
PSERVER_INFO_101 pwzServerInfo101;
19011900
DWORD entriesRead, totalEntries, resumeHandle = 0;
1902-
int index;
1903-
SV *sv, *nSv;
1901+
DWORD index;
1902+
SV *sv;
19041903
DWORD lastError = 0;
19051904

19061905
if (items != 4) {
@@ -1977,8 +1976,8 @@ XS(XS_NT__NetAdmin_GetServerDisks)
19771976
LPWSTR disks;
19781977
LPWSTR p;
19791978
DWORD entriesRead, totalEntries, resumeHandle = 0;
1980-
int index;
1981-
SV *sv, *nSv;
1979+
DWORD index;
1980+
SV *sv;
19821981
DWORD lastError = 0;
19831982

19841983
if (items != 2) {

mingw32.exc

Lines changed: 0 additions & 1 deletion
This file was deleted.

t/netadmin.t

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
#test for Perl NetAdmin Module Extension.
22
#Written by Douglas_Lankshear@ActiveWare.com
33

4-
BEGIN{
5-
if( Win32::IsWin95() ){
6-
print"1..1\nok 1\n";
7-
die" This module does not work on Win95\n";
8-
}
4+
BEGIN {
5+
require Win32 unless defined &Win32::IsWin95;
6+
if (Win32::IsWin95) {
7+
print"1..0 # skip This module does not work on Win95\n";
8+
exit 0;
9+
}
910
};
1011

1112
use Win32::NetAdmin;

0 commit comments

Comments
 (0)
0