--- a/Win32OperatingSystem.st Fri Oct 10 18:39:13 2003 +0200
+++ b/Win32OperatingSystem.st Sun Oct 12 14:30:18 2003 +0200
@@ -2759,7 +2759,7 @@
DWORD endStatus;
int status = -1;
- if (__isExternalAddress(aProcessId)) {
+ if (__isExternalAddressLike(aProcessId)) {
HANDLE handle = _HANDLEVal(aProcessId);
if (handle) {
#ifdef DO_WRAP_CALLS
@@ -2970,21 +2970,21 @@
lpsiStartInfo.hStdError = (HANDLE) _get_osfhandle (2);
} else if (__isArray(fdArray) && (__arraySize(fdArray) >= 3)) {
if (__ArrayInstPtr(fdArray)->a_element[0] != nil) {
- if (__isExternalAddress(__ArrayInstPtr(fdArray)->a_element[0])) {
+ if (__isExternalAddressLike(__ArrayInstPtr(fdArray)->a_element[0])) {
lpsiStartInfo.hStdInput = _HANDLEVal(__ArrayInstPtr(fdArray)->a_element[0]);
} else {
lpsiStartInfo.hStdInput = (HANDLE) _get_osfhandle (__intVal(__ArrayInstPtr(fdArray)->a_element[0]));
}
}
if (__ArrayInstPtr(fdArray)->a_element[1] != nil) {
- if (__isExternalAddress(__ArrayInstPtr(fdArray)->a_element[1])) {
+ if (__isExternalAddressLike(__ArrayInstPtr(fdArray)->a_element[1])) {
lpsiStartInfo.hStdOutput = _HANDLEVal(__ArrayInstPtr(fdArray)->a_element[1]);
} else {
lpsiStartInfo.hStdOutput = (HANDLE) _get_osfhandle (__intVal(__ArrayInstPtr(fdArray)->a_element[1]));
}
}
if (__ArrayInstPtr(fdArray)->a_element[2] != nil) {
- if (__isExternalAddress(__ArrayInstPtr(fdArray)->a_element[2])) {
+ if (__isExternalAddressLike(__ArrayInstPtr(fdArray)->a_element[2])) {
lpsiStartInfo.hStdError = _HANDLEVal(__ArrayInstPtr(fdArray)->a_element[2]);
} else {
lpsiStartInfo.hStdError = (HANDLE) _get_osfhandle (__intVal(__ArrayInstPtr(fdArray)->a_element[2]));
@@ -3127,23 +3127,22 @@
!Win32OperatingSystem class methodsFor:'file access'!
-closeFd:anInteger
+closeFd:anIntegerOrHandle
"low level close of a filedescriptor"
%{
- if (__isExternalAddress(anInteger) ) {
- if( !CloseHandle( anInteger ) ) {
- fprintf( stderr, "Could not close handle : %d\n", anInteger);
- }
+ if (__isExternalAddressLike(anIntegerOrHandle) ) {
+ if( !CloseHandle( anIntegerOrHandle ) ) {
+ fprintf( stderr, "Could not close handle : %x\n", anIntegerOrHandle);
+ }
+ RETURN(self);
+ }
+ if (__isSmallInteger(anIntegerOrHandle)) {
+ close(__intVal(anIntegerOrHandle));
RETURN(self);
- } else {
- if (__isSmallInteger(anInteger)) {
- close(__intVal(anInteger));
- RETURN(self);
- }
- }
+ }
%}.
- ^ self primitiveFailed.
+ ^ self primitiveFailed.
!
createDirectory:aPathName
@@ -4875,7 +4874,7 @@
TODO: send it a WM_QUIT instead, to allow for proper shutdown."
%{
- if (__isExternalAddress(processId) ) {
+ if (__isExternalAddressLike(processId) ) {
HANDLE __pid = _HANDLEVal(processId);
#ifdef PROCESS1DEBUGWIN32
@@ -4908,7 +4907,7 @@
Not implemented - TODO: enumerate all sub-processes and terminate them all ..."
%{
- if (__isExternalAddress(processGroupId) ) {
+ if (__isExternalAddressLike(processGroupId) ) {
HANDLE __pgid = _HANDLEVal(processGroupId);
#ifdef PROCESS1DEBUGWIN32
@@ -4976,12 +4975,14 @@
closePid:pid
"free pid resource"
%{
- if (__isExternalAddress(pid) ) {
- if (_HANDLEVal(pid) != 0) {
+ if (__isExternalAddressLike(pid) ) {
+ HANDLE __pid = _HANDLEVal(pid);
+
+ if (__pid != 0) {
#ifdef PROCESSDEBUGWIN32
- printf("Close ProcessHandle %x\n",_HANDLEVal(pid));
-#endif
- CloseHandle(_HANDLEVal(pid));
+ printf("Close ProcessHandle %x\n", __pid);
+#endif
+ CloseHandle(__pid);
_HANDLEVal(pid) = 0;
}
}
@@ -6995,7 +6996,7 @@
%{
DWORD endStatus;
- if (__isExternalAddress(pidToWait) ) {
+ if (__isExternalAddressLike(pidToWait) ) {
HANDLE __pidToWait = _HANDLEVal(pidToWait);
int t;
@@ -7114,7 +7115,7 @@
if (fd != nil) {
HANDLE h;
- if (__isExternalAddress(fd)) {
+ if (__isExternalAddressLike(fd)) {
hArray[numHandles] = h = _HANDLEVal(fd);
} else {
hArray[numHandles] = h = (HANDLE) _get_osfhandle (__intVal(fd));
@@ -7167,7 +7168,7 @@
for (i=0; (i<count) && (numHandles < MAXHANDLE);i++) {
fd = __ArrayInstPtr(writeFdArray)->a_element[i];
if (fd != nil) {
- if (__isExternalAddress(fd)) {
+ if (__isExternalAddressLike(fd)) {
hArray[numHandles] = _HANDLEVal(fd);
} else {
hArray[numHandles] = (HANDLE) _get_osfhandle (__intVal(fd));
@@ -7189,7 +7190,7 @@
for (i=0; (i<count) && (numHandles < MAXHANDLE);i++) {
fd = __ArrayInstPtr(exceptFdArray)->a_element[i];
if (fd != nil) {
- if (__isExternalAddress(fd)) {
+ if (__isExternalAddressLike(fd)) {
hArray[numHandles] = _HANDLEVal(fd);
} else {
hArray[numHandles] = (HANDLE) _get_osfhandle (__intVal(fd));
@@ -7287,7 +7288,7 @@
for (i=0; (i<count);i++) {
fd = __ArrayInstPtr(readFdArray)->a_element[i];
if (fd != nil) {
- if (__isExternalAddress(fd)) {
+ if (__isExternalAddressLike(fd)) {
continue;
} else {
h = (HANDLE) _get_osfhandle (__intVal(fd));
@@ -7363,7 +7364,7 @@
OBJ fdOrHandle = __ArrayInstPtr(fdOrHandleArray)->a_element[i];
HANDLE h;
- if (__isExternalAddress(fdOrHandle)) {
+ if (__isExternalAddressLike(fdOrHandle)) {
h = _HANDLEVal(fdOrHandle);
} else {
if (__isSmallInteger(fdOrHandle)) {
@@ -7423,7 +7424,7 @@
DWORD res;
HANDLE h = NULL;
- if (__isExternalAddress(fdOrHandle)) {
+ if (__isExternalAddressLike(fdOrHandle)) {
h = _HANDLEVal(fdOrHandle);
} else {
if (__isSmallInteger(fdOrHandle)) {
@@ -8171,7 +8172,7 @@
%{
HKEY myKey, subKey = 0;
- if (__isExternalAddress(__INST(handle))
+ if (__isExternalAddressLike(__INST(handle))
&& (__isString(subKeyString) || __isSymbol(subKeyString))) {
myKey = (HKEY)__externalAddressVal(__INST(handle));
if (RegCreateKey(myKey, __stringVal(subKeyString), &subKey) == ERROR_SUCCESS) {
@@ -8203,7 +8204,7 @@
%{
HKEY myKey;
- if (__isExternalAddress(__INST(handle))
+ if (__isExternalAddressLike(__INST(handle))
&& (__isString(subKeyString) || __isSymbol(subKeyString))) {
myKey = (HKEY)__externalAddressVal(__INST(handle));
if (RegDeleteKey(myKey, __stringVal(subKeyString)) == ERROR_SUCCESS) {
@@ -8231,7 +8232,7 @@
%{
HKEY myKey, remoteKey = 0;
- if (__isExternalAddress(__INST(handle)) && __isString(hostName)) {
+ if (__isExternalAddressLike(__INST(handle)) && __isString(hostName)) {
myKey = (HKEY)__externalAddressVal(__INST(handle));
if (RegConnectRegistry(__stringVal(hostName), myKey, &remoteKey) == ERROR_SUCCESS) {
remoteHandle = __MKEXTERNALADDRESS(remoteKey);
@@ -8286,7 +8287,7 @@
DWORD classNameSize = sizeof(classNameBuffer) - 1;
FILETIME modificationTime;
- if (__isExternalAddress(__INST(handle))
+ if (__isExternalAddressLike(__INST(handle))
&& __isSmallInteger(subKeyIndex)) {
myKey = (HKEY)__externalAddressVal(__INST(handle));
if (RegEnumKeyEx(myKey, __intVal(subKeyIndex),
@@ -8322,7 +8323,7 @@
%{
HKEY myKey, subKey = 0;
- if (__isExternalAddress(__INST(handle))
+ if (__isExternalAddressLike(__INST(handle))
&& (__isString(subKeyString) || __isSymbol(subKeyString))) {
myKey = (HKEY)__externalAddressVal(__INST(handle));
if (RegOpenKey(myKey, __stringVal(subKeyString), &subKey) == ERROR_SUCCESS) {
@@ -8356,7 +8357,7 @@
%{
HKEY myKey;
- if (__isExternalAddress(__INST(handle))
+ if (__isExternalAddressLike(__INST(handle))
&& (__isString(aValueName) || __isSymbol(aValueName))) {
myKey = (HKEY)__externalAddressVal(__INST(handle));
if (RegDeleteValue(myKey, __stringVal(aValueName)) == ERROR_SUCCESS) {
@@ -8379,7 +8380,7 @@
DWORD nameSize = sizeof(nameBuffer) - 1;
DWORD valueType;
- if (__isExternalAddress(__INST(handle))
+ if (__isExternalAddressLike(__INST(handle))
&& __isSmallInteger(valueIndex)) {
myKey = (HKEY)__externalAddressVal(__INST(handle));
if (RegEnumValue(myKey, __intVal(valueIndex),
@@ -8424,7 +8425,7 @@
DWORD dataSize = sizeof(quickData);
unsigned char *dataBuffer = NULL;
- if (__isExternalAddress(__INST(handle))
+ if (__isExternalAddressLike(__INST(handle))
&& (__isString(aValueName) || __isSymbol(aValueName))) {
int ret;
@@ -8566,7 +8567,7 @@
unsigned char *dataPointer = NULL;
int datumOk = 1, mustFreeData = 0;
- if (__isExternalAddress(__INST(handle))
+ if (__isExternalAddressLike(__INST(handle))
&& (__isString(aValueName) || __isSymbol(aValueName))) {
int ret;
OBJ cls;
@@ -8788,7 +8789,7 @@
%{
HKEY myKey;
- if (__isExternalAddress(__INST(handle))) {
+ if (__isExternalAddressLike(__INST(handle))) {
myKey = (HKEY)(__externalAddressVal(__INST(handle)));
__INST(handle) = nil;
RegCloseKey(myKey);
@@ -8850,7 +8851,7 @@
!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.134 2003-10-09 15:20:56 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.135 2003-10-12 12:30:18 cg Exp $'
! !
!Win32OperatingSystem::Win32FILEHandle methodsFor:'release'!
@@ -8877,7 +8878,7 @@
!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.134 2003-10-09 15:20:56 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.135 2003-10-12 12:30:18 cg Exp $'
! !
!Win32OperatingSystem::Win32Handle methodsFor:'io'!
@@ -9264,7 +9265,7 @@
!Win32OperatingSystem class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.134 2003-10-09 15:20:56 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Win32OperatingSystem.st,v 1.135 2003-10-12 12:30:18 cg Exp $'
! !
Win32OperatingSystem initialize!