--- a/Win32OperatingSystem.st Fri Nov 18 20:48:57 2016 +0000
+++ b/Win32OperatingSystem.st Tue Nov 22 14:52:52 2016 +0000
@@ -3,7 +3,7 @@
"
COPYRIGHT (c) 1988 by Claus Gittinger
COPYRIGHT (c) 1998-2004 by eXept Software AG
- All Rights Reserved
+ All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
@@ -17,218 +17,218 @@
"{ NameSpace: Smalltalk }"
AbstractOperatingSystem subclass:#Win32OperatingSystem
- instanceVariableNames:''
- classVariableNames:'CurrentDirectory DomainName HostName Initialized LastOsTimeHi
- LastOsTimeLow LastTimeInfo LastTimeInfoIsLocal'
- poolDictionaries:'Win32Constants'
- category:'OS-Windows'
+ instanceVariableNames:''
+ classVariableNames:'CurrentDirectory DomainName HostName Initialized LastOsTimeHi
+ LastOsTimeLow LastTimeInfo LastTimeInfoIsLocal'
+ poolDictionaries:'Win32Constants'
+ category:'OS-Windows'
!
ByteArray variableByteSubclass:#DevModeStructure
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
ByteArray variableByteSubclass:#DocInfoStructure
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
Object subclass:#FileStatusInfo
- instanceVariableNames:'type mode uid gid size id accessed modified created statusChanged
- sourcePath linkTargetPath fullPathName alternativePathName'
- classVariableNames:''
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:'type mode uid gid size id accessed modified created statusChanged
+ sourcePath linkTargetPath fullPathName alternativePathName'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
Object subclass:#OSProcessStatus
- instanceVariableNames:'pid status code core'
- classVariableNames:''
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:'pid status code core'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
SharedPool subclass:#PECOFFConstants
- instanceVariableNames:''
- classVariableNames:'PE_Signature_OFFSET_OFFSET PE_Signature COFF_HEADER_SIZE
- COFF_HEADER_Machine_OFFSET IMAGE_FILE_MACHINE_UNKNOWN
- IMAGE_FILE_MACHINE_AM33 IMAGE_FILE_MACHINE_AMD64
- IMAGE_FILE_MACHINE_ARM IMAGE_FILE_MACHINE_ARMNT
- IMAGE_FILE_MACHINE_ARM64 IMAGE_FILE_MACHINE_EBC
- IMAGE_FILE_MACHINE_I386 IMAGE_FILE_MACHINE_IA64
- IMAGE_FILE_MACHINE_M32R IMAGE_FILE_MACHINE_MIPS16
- IMAGE_FILE_MACHINE_MIPSFPU IMAGE_FILE_MACHINE_MIPSFPU16
- IMAGE_FILE_MACHINE_POWERPC IMAGE_FILE_MACHINE_POWEPCFP
- IMAGE_FILE_MACHINE_R4000 IMAGE_FILE_MACHINE_SH3
- IMAGE_FILE_MACHINE_SH3DSP IMAGE_FILE_MACHINE_SH4
- IMAGE_FILE_MACHINE_SH5 IMAGE_FILE_MACHINE_THUMB
- IMAGE_FILE_MACHINE_WCEMIPSV2'
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:''
+ classVariableNames:'PE_Signature_OFFSET_OFFSET PE_Signature COFF_HEADER_SIZE
+ COFF_HEADER_Machine_OFFSET IMAGE_FILE_MACHINE_UNKNOWN
+ IMAGE_FILE_MACHINE_AM33 IMAGE_FILE_MACHINE_AMD64
+ IMAGE_FILE_MACHINE_ARM IMAGE_FILE_MACHINE_ARMNT
+ IMAGE_FILE_MACHINE_ARM64 IMAGE_FILE_MACHINE_EBC
+ IMAGE_FILE_MACHINE_I386 IMAGE_FILE_MACHINE_IA64
+ IMAGE_FILE_MACHINE_M32R IMAGE_FILE_MACHINE_MIPS16
+ IMAGE_FILE_MACHINE_MIPSFPU IMAGE_FILE_MACHINE_MIPSFPU16
+ IMAGE_FILE_MACHINE_POWERPC IMAGE_FILE_MACHINE_POWEPCFP
+ IMAGE_FILE_MACHINE_R4000 IMAGE_FILE_MACHINE_SH3
+ IMAGE_FILE_MACHINE_SH3DSP IMAGE_FILE_MACHINE_SH4
+ IMAGE_FILE_MACHINE_SH5 IMAGE_FILE_MACHINE_THUMB
+ IMAGE_FILE_MACHINE_WCEMIPSV2'
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
Object subclass:#PECOFFFileHeader
- instanceVariableNames:'file data'
- classVariableNames:''
- poolDictionaries:'Win32OperatingSystem::PECOFFConstants'
- privateIn:Win32OperatingSystem
+ instanceVariableNames:'file data'
+ classVariableNames:''
+ poolDictionaries:'Win32OperatingSystem::PECOFFConstants'
+ privateIn:Win32OperatingSystem
!
Object subclass:#PerformanceData
- instanceVariableNames:'objectArray perfTime perfFreq perfTime100nSec'
- classVariableNames:'PerformanceText CounterIndexTextDictionary
- HelpIndexTextDictionary'
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:'objectArray perfTime perfFreq perfTime100nSec'
+ classVariableNames:'PerformanceText CounterIndexTextDictionary
+ HelpIndexTextDictionary'
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
Object subclass:#Abstract
- instanceVariableNames:'lastData lastTimestamp cachedResults'
- classVariableNames:''
- poolDictionaries:''
- privateIn:Win32OperatingSystem::PerformanceData
+ instanceVariableNames:'lastData lastTimestamp cachedResults'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem::PerformanceData
!
Win32OperatingSystem::PerformanceData::Abstract subclass:#DiskIO
- instanceVariableNames:''
- classVariableNames:'TheOneAndOnlyInstance'
- poolDictionaries:''
- privateIn:Win32OperatingSystem::PerformanceData
+ instanceVariableNames:''
+ classVariableNames:'TheOneAndOnlyInstance'
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem::PerformanceData
!
Win32OperatingSystem::PerformanceData::Abstract subclass:#Global
- instanceVariableNames:''
- classVariableNames:'TheOneAndOnlyInstance'
- poolDictionaries:''
- privateIn:Win32OperatingSystem::PerformanceData
+ instanceVariableNames:''
+ classVariableNames:'TheOneAndOnlyInstance'
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem::PerformanceData
!
Win32OperatingSystem::PerformanceData::Abstract subclass:#Memory
- instanceVariableNames:''
- classVariableNames:'TheOneAndOnlyInstance'
- poolDictionaries:''
- privateIn:Win32OperatingSystem::PerformanceData
+ instanceVariableNames:''
+ classVariableNames:'TheOneAndOnlyInstance'
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem::PerformanceData
!
Win32OperatingSystem::PerformanceData::Abstract subclass:#Network
- instanceVariableNames:''
- classVariableNames:'TheOneAndOnlyInstance'
- poolDictionaries:''
- privateIn:Win32OperatingSystem::PerformanceData
+ instanceVariableNames:''
+ classVariableNames:'TheOneAndOnlyInstance'
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem::PerformanceData
!
Win32OperatingSystem::PerformanceData::Abstract subclass:#Process
- instanceVariableNames:''
- classVariableNames:'TheOneAndOnlyInstance'
- poolDictionaries:''
- privateIn:Win32OperatingSystem::PerformanceData
+ instanceVariableNames:''
+ classVariableNames:'TheOneAndOnlyInstance'
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem::PerformanceData
!
Win32OperatingSystem::PerformanceData::Abstract subclass:#Processor
- instanceVariableNames:''
- classVariableNames:'TheOneAndOnlyInstance'
- poolDictionaries:''
- privateIn:Win32OperatingSystem::PerformanceData
+ instanceVariableNames:''
+ classVariableNames:'TheOneAndOnlyInstance'
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem::PerformanceData
!
ByteArray variableByteSubclass:#PrinterInfo2Structure
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
Object subclass:#RegistryEntry
- instanceVariableNames:'path handle isNew'
- classVariableNames:'Lobby HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE
- HKEY_USERS HKEY_PERFORMANCE_DATA HKEY_CURRENT_CONFIG
- HKEY_DYN_DATA HKEY_PERFORMANCE_TEXT HKEY_PERFORMANCE_NLSTEXT'
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:'path handle isNew'
+ classVariableNames:'Lobby HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE
+ HKEY_USERS HKEY_PERFORMANCE_DATA HKEY_CURRENT_CONFIG
+ HKEY_DYN_DATA HKEY_PERFORMANCE_TEXT HKEY_PERFORMANCE_NLSTEXT'
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
ByteArray variableByteSubclass:#TextMetricsStructure
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
Win32Handle subclass:#Win32ChangeNotificationHandle
- instanceVariableNames:''
- classVariableNames:'Lobby'
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:''
+ classVariableNames:'Lobby'
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
Win32Handle subclass:#Win32IOHandle
- instanceVariableNames:''
- classVariableNames:'Lobby'
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:''
+ classVariableNames:'Lobby'
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
Win32Handle subclass:#Win32MutexHandle
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
Win32Handle subclass:#Win32NetworkResourceHandle
- instanceVariableNames:''
- classVariableNames:'ScopeMappingTable TypeMappingTable DisplayTypeMappingTable
- UsageMappingTable'
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:''
+ classVariableNames:'ScopeMappingTable TypeMappingTable DisplayTypeMappingTable
+ UsageMappingTable'
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
Object subclass:#NetworkResource
- instanceVariableNames:'scope type usage displayType remoteName localName provider
- comment'
- classVariableNames:''
- poolDictionaries:''
- privateIn:Win32OperatingSystem::Win32NetworkResourceHandle
+ instanceVariableNames:'scope type usage displayType remoteName localName provider
+ comment'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem::Win32NetworkResourceHandle
!
Win32Handle subclass:#Win32PrinterHandle
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
Win32Handle subclass:#Win32ProcessHandle
- instanceVariableNames:'pid'
- classVariableNames:''
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:'pid'
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
Win32OperatingSystem::Win32IOHandle subclass:#Win32SerialPortHandle
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
Win32OperatingSystem::Win32IOHandle subclass:#Win32SocketHandle
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
ByteArray variableByteSubclass:#WinPointStructure
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- privateIn:Win32OperatingSystem
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ privateIn:Win32OperatingSystem
!
!Win32OperatingSystem primitiveDefinitions!
@@ -585,19 +585,19 @@
int i, len;
if (__isStringLike(string)) {
- len = __stringSize(string);
- if (len > bufferSize) len = bufferSize;
- for (i=0; i<len; i++) {
- buffer[i] = __stringVal(string)[i];
- }
+ len = __stringSize(string);
+ if (len > bufferSize) len = bufferSize;
+ for (i=0; i<len; i++) {
+ buffer[i] = __stringVal(string)[i];
+ }
} else if (__isUnicode16String(string)) {
- len = __unicode16StringSize(string);
- if (len > bufferSize) len = bufferSize;
- for (i=0; i<len; i++) {
- buffer[i] = __unicode16StringVal(string)[i];
- }
+ len = __unicode16StringSize(string);
+ if (len > bufferSize) len = bufferSize;
+ for (i=0; i<len; i++) {
+ buffer[i] = __unicode16StringVal(string)[i];
+ }
} else {
- return(-1);
+ return(-1);
}
buffer[len] = 0;
return(len);
@@ -620,43 +620,43 @@
tv.tv_usec = 0;
if (readMode) {
- n = select (1 , &fds, NULL, NULL, &tv); // first parameter to select is ignored in windows
+ n = select (1 , &fds, NULL, NULL, &tv); // first parameter to select is ignored in windows
} else {
- n = select (1, NULL, &fds, NULL, &tv);
+ n = select (1, NULL, &fds, NULL, &tv);
}
if (n == 0) {
- return (0);
+ return (0);
}
if (n > 0) {
- return (FD_ISSET(handle, &fds) ? 1 : 0);
+ return (FD_ISSET(handle, &fds) ? 1 : 0);
}
winErrNo = WSAGetLastError();
switch (winErrNo) {
- case WSAENOTSOCK:
- if (readMode) {
- DWORD w = 0;
-
- if (PeekNamedPipe (handle, 0, 0, 0, & w, 0)) {
- return (w > 0);
- }
+ case WSAENOTSOCK:
+ if (readMode) {
+ DWORD w = 0;
+
+ if (PeekNamedPipe (handle, 0, 0, 0, & w, 0)) {
+ return (w > 0);
+ }
#if 0
- console_fprintf(stderr, "_canAccessIOWithoutBlocking non Socket\n");
-#endif
- return (-1);
- }
- /* in writeMode we return always true for none-sockets */
- return (1);
-
- case WSAEINPROGRESS:
- case WSAEWOULDBLOCK:
- return (0);
-
- default:
- console_fprintf(stderr, "_canAccessIOWithoutBlocking -> %d (0x%x)\n", winErrNo, winErrNo);
- return (-1);
+ console_fprintf(stderr, "_canAccessIOWithoutBlocking non Socket\n");
+#endif
+ return (-1);
+ }
+ /* in writeMode we return always true for none-sockets */
+ return (1);
+
+ case WSAEINPROGRESS:
+ case WSAEWOULDBLOCK:
+ return (0);
+
+ default:
+ console_fprintf(stderr, "_canAccessIOWithoutBlocking -> %d (0x%x)\n", winErrNo, winErrNo);
+ return (-1);
}
/* not reached */
@@ -678,7 +678,7 @@
FARPROC entry;
if (*pLibHandle == NULL) {
- *pLibHandle = LoadLibrary(libraryName);
+ *pLibHandle = LoadLibrary(libraryName);
}
entry = GetProcAddress(*pLibHandle, functionName);
return entry;
@@ -739,11 +739,11 @@
return(__MKINT(lTime));
#else
if (lTime >= (LONGLONG)11644473600000L) {
- lTime -= (LONGLONG)11644473600000L; // the number of millis from 1.1.1601 to 1.1.1970
- return(__MKLARGEINT64(1, (unsigned INT)(lTime & 0xFFFFFFFF), (unsigned INT)(lTime >> 32)));
+ lTime -= (LONGLONG)11644473600000L; // the number of millis from 1.1.1601 to 1.1.1970
+ return(__MKLARGEINT64(1, (unsigned INT)(lTime & 0xFFFFFFFF), (unsigned INT)(lTime >> 32)));
} else {
- lTime = (LONGLONG)11644473600000L - lTime;
- return(__MKLARGEINT64(-1, (unsigned INT)(lTime & 0xFFFFFFFF), (unsigned INT)(lTime >> 32)));
+ lTime = (LONGLONG)11644473600000L - lTime;
+ return(__MKLARGEINT64(-1, (unsigned INT)(lTime & 0xFFFFFFFF), (unsigned INT)(lTime >> 32)));
}
#endif
}
@@ -757,7 +757,7 @@
UINT hi = __unsignedLongIntVal(tHigh);
if (hi == 0 && !__isSmallInteger(tHigh))
- return(0); // conversion error
+ return(0); // conversion error
lTime = ((LONGLONG)hi << 32) + (LONGLONG)low;
lTime = lTime * 10000; // convert to multiple of 100ns
@@ -777,7 +777,7 @@
UINT hi = __unsignedLongIntVal(tHigh);
if (hi == 0 && !__isSmallInteger(tHigh))
- return(0); // conversion error
+ return(0); // conversion error
lTime = ((LONGLONG)hi << 32) + (LONGLONG)low;
lTime += (LONGLONG)11644473600000L; // rebias to 1.1.1601
@@ -797,7 +797,7 @@
"
COPYRIGHT (c) 1988 by Claus Gittinger
COPYRIGHT (c) 1998-2004 by eXept Software AG
- All Rights Reserved
+ All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
@@ -829,90 +829,90 @@
[Class variables:]
- HostName <String> remembered hostname
-
- DomainName <String> remembered domainname
-
- CurrentDirectory <String> remembered currentDirectories path
+ HostName <String> remembered hostname
+
+ DomainName <String> remembered domainname
+
+ CurrentDirectory <String> remembered currentDirectories path
[author:]
- Claus Gittinger (initial version & cleanup)
- Manfred Dierolf (many features)
+ Claus Gittinger (initial version & cleanup)
+ Manfred Dierolf (many features)
[see also:]
- OSProcessStatus
- Filename Date Time
- ExternalStream FileStream PipeStream Socket
+ OSProcessStatus
+ Filename Date Time
+ ExternalStream FileStream PipeStream Socket
"
!
examples
"
various queries
- [exBegin]
+ [exBegin]
Transcript
- showCR:'hello ' , (OperatingSystem getLoginName)
- [exEnd]
-
- [exBegin]
+ showCR:'hello ' , (OperatingSystem getLoginName)
+ [exEnd]
+
+ [exBegin]
OperatingSystem isUNIXlike ifTrue:[
- Transcript showCR:'this is some UNIX-like OS'
+ Transcript showCR:'this is some UNIX-like OS'
] ifFalse:[
- Transcript showCR:'this OS is not UNIX-like'
+ Transcript showCR:'this OS is not UNIX-like'
]
- [exEnd]
-
- [exBegin]
+ [exEnd]
+
+ [exBegin]
Transcript
- showCR:'this machine is called ' , OperatingSystem getHostName
- [exEnd]
-
- [exBegin]
+ showCR:'this machine is called ' , OperatingSystem getHostName
+ [exEnd]
+
+ [exBegin]
Transcript
- showCR:('this machine is in the '
- , OperatingSystem getDomainName
- , ' domain')
- [exEnd]
-
- [exBegin]
+ showCR:('this machine is in the '
+ , OperatingSystem getDomainName
+ , ' domain')
+ [exEnd]
+
+ [exBegin]
Transcript
- showCR:('this machine''s CPU is a '
- , OperatingSystem getCPUType
- )
- [exEnd]
-
- [exBegin]
+ showCR:('this machine''s CPU is a '
+ , OperatingSystem getCPUType
+ )
+ [exEnd]
+
+ [exBegin]
Transcript showCR:'executing ls command ...'.
OperatingSystem executeCommand:'ls'.
Transcript showCR:'... done.'.
- [exEnd]
+ [exEnd]
locking a file
(should be executed on two running smalltalks - not in two threads):
- [exBegin]
+ [exBegin]
|f|
f := 'testFile' asFilename readWriteStream.
10 timesRepeat:[
- 'about to lock ...' printCR.
- [
- OperatingSystem
- lockFD:(f fileDescriptor)
- shared:false
- blocking:false
- ] whileFalse:[
- 'process ' print. OperatingSystem getProcessId print. ' is waiting' printCR.
- Delay waitForSeconds:1
- ].
- 'LOCKED ...' printCR.
- Delay waitForSeconds:10.
- 'unlock ...' printCR.
- (OperatingSystem
- unlockFD:(f fileDescriptor)) printCR.
- Delay waitForSeconds:3.
+ 'about to lock ...' printCR.
+ [
+ OperatingSystem
+ lockFD:(f fileDescriptor)
+ shared:false
+ blocking:false
+ ] whileFalse:[
+ 'process ' print. OperatingSystem getProcessId print. ' is waiting' printCR.
+ Delay waitForSeconds:1
+ ].
+ 'LOCKED ...' printCR.
+ Delay waitForSeconds:10.
+ 'unlock ...' printCR.
+ (OperatingSystem
+ unlockFD:(f fileDescriptor)) printCR.
+ Delay waitForSeconds:3.
]
- [exBegin]
+ [exBegin]
"
! !
@@ -924,16 +924,16 @@
if( ! coInitialized ) {
- hres = CoInitializeEx(NULL, COINIT_MULTITHREADED);
- if (! SUCCEEDED(hres)) {
- console_fprintf(stderr, "OperatingSystem [info]: Could not open the COM library hres = %08x\n", hres );
- goto error;
- }
- coInitialized = 1;
+ hres = CoInitializeEx(NULL, COINIT_MULTITHREADED);
+ if (! SUCCEEDED(hres)) {
+ console_fprintf(stderr, "OperatingSystem [info]: Could not open the COM library hres = %08x\n", hres );
+ goto error;
+ }
+ coInitialized = 1;
#ifdef COM_DEBUG
- console_fprintf(stderr, "OperatingSystem [info]: COM initialized\n" );
+ console_fprintf(stderr, "OperatingSystem [info]: COM initialized\n" );
#endif
}
RETURN (self );
@@ -960,13 +960,13 @@
"/ attention: must be ok to be called twice during startup.
Initialized isNil ifTrue:[
- Initialized := true.
- ObjectMemory addDependent:self.
- HostName := nil.
- DomainName := nil.
- LastErrorNumber := nil.
- PipeFailed := false.
- self coInitialize.
+ Initialized := true.
+ ObjectMemory addDependent:self.
+ HostName := nil.
+ DomainName := nil.
+ LastErrorNumber := nil.
+ PipeFailed := false.
+ self coInitialize.
].
"Modified: 13.9.1997 / 10:47:32 / cg"
@@ -976,14 +976,14 @@
"catch image restart and flush some cached data"
something == #earlyRestart ifTrue:[
- "
- flush cached data
- "
- HostName := nil.
- DomainName := nil.
- LastErrorNumber := nil.
- PipeFailed := false.
- self coInitialize.
+ "
+ flush cached data
+ "
+ HostName := nil.
+ DomainName := nil.
+ LastErrorNumber := nil.
+ PipeFailed := false.
+ self coInitialize.
]
"Modified: 22.4.1996 / 13:10:43 / cg"
@@ -991,7 +991,6 @@
"Modified: 7.1.1997 / 19:36:11 / stefan"
! !
-
!Win32OperatingSystem class methodsFor:'OS signal constants'!
sigABRT
@@ -1578,7 +1577,7 @@
lp = __win32_getLogFilename();
if (lp) {
- ret = __MKSTRING(lp);
+ ret = __MKSTRING(lp);
}
%}.
^ ret
@@ -1596,16 +1595,16 @@
|logFilePath|
aFilenameOrNil notNil ifTrue:[
- logFilePath := aFilenameOrNil asFilename pathName
+ logFilePath := aFilenameOrNil asFilename pathName
].
%{
extern void __win32_setLogFile();
if (__isStringLike(logFilePath)) {
- __win32_setLogFile(__stringVal(logFilePath));
+ __win32_setLogFile(__stringVal(logFilePath));
} else {
- __win32_setLogFile( NULL );
+ __win32_setLogFile( NULL );
}
%}
@@ -1624,14 +1623,14 @@
!Win32OperatingSystem class methodsFor:'clipboard'!
clipboardContainsBitmap
- "Answer whether the clipboard contains a bitmap."
+ "Answer whether the clipboard contains a bitmap."
^self clipboardContainsFormat: 2 "CfBitmap"
!
clipboardContainsFormat: aCfConstant
- "Answer true if the clipboard contains data in
- the format described by aCfConstant. "
+ "Answer true if the clipboard contains data in
+ the format described by aCfConstant. "
^self primIsClipboardFormatAvailable: aCfConstant
!
@@ -1644,7 +1643,7 @@
!
emptyClipboard
- "Private - empty the clipboard. Note: it must be opened first."
+ "Private - empty the clipboard. Note: it must be opened first."
| result |
result := self primEmptyClipboard.
result ifFalse: [ ^self error].
@@ -1705,7 +1704,7 @@
!
setBitmapToClipboard: aBitmap
- "Copy aBitmap to the clipboard."
+ "Copy aBitmap to the clipboard."
| handle |
aBitmap isNil ifTrue:[ ^nil ].
aBitmap id isNil ifTrue:[aBitmap onDevice: Screen current].
@@ -1717,7 +1716,7 @@
self closeClipboard
"
- self setBitmapToClipboard: Image fromUser
+ self setBitmapToClipboard: Image fromUser
"
!
@@ -1747,47 +1746,47 @@
int __modeBits = 0;
if (__fileAttr & FILE_ATTRIBUTE_DIRECTORY) {
- type = @symbol(directory);
- __modeBits = 0777; /* executable and WRITABLE - refer to comment in #isWritable: */
+ type = @symbol(directory);
+ __modeBits = 0777; /* executable and WRITABLE - refer to comment in #isWritable: */
} else if (__fileAttr & FILE_ATTRIBUTE_REPARSE_POINT) {
- type = @symbol(symbolicLink);
- __modeBits = 0777; /* even in UNIX symlinks have 0777 */
+ type = @symbol(symbolicLink);
+ __modeBits = 0777; /* even in UNIX symlinks have 0777 */
} else {
- type = @symbol(regular);
- if (__fileAttr & FILE_ATTRIBUTE_READONLY) {
- __modeBits = 0444;
- } else {
- __modeBits = 0666;
- }
+ type = @symbol(regular);
+ if (__fileAttr & FILE_ATTRIBUTE_READONLY) {
+ __modeBits = 0444;
+ } else {
+ __modeBits = 0666;
+ }
}
modeBits = __mkSmallInteger(__modeBits);
%}.
osCrtTime isNil
- ifTrue: [crtTime := Timestamp now]
- ifFalse:[crtTime := Timestamp new fromOSTime:(osCrtTime "- OperatingSystem osTimeOf19700101 -- already done")].
+ ifTrue: [crtTime := Timestamp now]
+ ifFalse:[crtTime := Timestamp new fromOSTime:(osCrtTime "- OperatingSystem osTimeOf19700101 -- already done")].
osAccTime isNil
- ifTrue: [accTime := Timestamp now]
- ifFalse:[accTime := Timestamp new fromOSTime:(osAccTime "- OperatingSystem osTimeOf19700101 -- already done")].
+ ifTrue: [accTime := Timestamp now]
+ ifFalse:[accTime := Timestamp new fromOSTime:(osAccTime "- OperatingSystem osTimeOf19700101 -- already done")].
osModTime isNil
- ifTrue: [modTime := accTime]
- ifFalse:[modTime := Timestamp new fromOSTime:(osModTime "- OperatingSystem osTimeOf19700101 -- already done")].
+ ifTrue: [modTime := accTime]
+ ifFalse:[modTime := Timestamp new fromOSTime:(osModTime "- OperatingSystem osTimeOf19700101 -- already done")].
^ FileStatusInfo
- type:type
- mode:modeBits
- uid:nil
- gid:nil
- size:fileSize
- id:0
- accessed:accTime
- modified:modTime
- created:crtTime
- sourcePath:osPathname
- fullName:nil
- alternativeName:nil.
+ type:type
+ mode:modeBits
+ uid:nil
+ gid:nil
+ size:fileSize
+ id:0
+ accessed:accTime
+ modified:modTime
+ created:crtTime
+ sourcePath:osPathname
+ fullName:nil
+ alternativeName:nil.
!
nextLinkInfoFrom:aDirectoryStream dirPointer:dirPointer
@@ -1802,46 +1801,46 @@
if ((dirPointer != nil)
&& __isExternalAddressLike(dirPointer)) {
- // __INST(lastErrorNumber) = nil;
- d = _HANDLEVal(dirPointer);
-
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- rslt = (int)(STX_API_NOINT_CALL2( "FindNextFileW", FindNextFileW, d, &data ));
- } while ((rslt < 0) && (__threadErrno == EINTR));
-
- if (rslt > 0) {
- fileSize = __MKLARGEINT64(1, data.nFileSizeLow, data.nFileSizeHigh);
- osPathname = __mkStringOrU16String_maxlen( data.cFileName, MAXPATHLEN );
- osFileAttributes = __mkSmallInteger( data.dwFileAttributes );
-
- osCrtTime = FileTimeToOsTime1970(&data.ftCreationTime);
- osAccTime = FileTimeToOsTime1970(&data.ftLastAccessTime);
- osModTime = FileTimeToOsTime1970(&data.ftLastWriteTime);
-
- } else {
- error = __mkSmallInteger( __threadErrno );
- }
+ // __INST(lastErrorNumber) = nil;
+ d = _HANDLEVal(dirPointer);
+
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ rslt = (int)(STX_API_NOINT_CALL2( "FindNextFileW", FindNextFileW, d, &data ));
+ } while ((rslt < 0) && (__threadErrno == EINTR));
+
+ if (rslt > 0) {
+ fileSize = __MKLARGEINT64(1, data.nFileSizeLow, data.nFileSizeHigh);
+ osPathname = __mkStringOrU16String_maxlen( data.cFileName, MAXPATHLEN );
+ osFileAttributes = __mkSmallInteger( data.dwFileAttributes );
+
+ osCrtTime = FileTimeToOsTime1970(&data.ftCreationTime);
+ osAccTime = FileTimeToOsTime1970(&data.ftLastAccessTime);
+ osModTime = FileTimeToOsTime1970(&data.ftLastWriteTime);
+
+ } else {
+ error = __mkSmallInteger( __threadErrno );
+ }
}
%}.
(error notNil and:[error ~~ 0]) ifTrue:[
- ^ StreamIOError newException
- errorCode:error;
- osErrorHolder:(OperatingSystem errorHolderForNumber:error);
- parameter:aDirectoryStream;
- raiseRequest
+ ^ StreamIOError newException
+ errorCode:error;
+ osErrorHolder:(OperatingSystem errorHolderForNumber:error);
+ parameter:aDirectoryStream;
+ raiseRequest
].
osPathname isNil ifTrue:[^ nil].
^ self
- linkInfoFor:osPathname
- fileSize:fileSize
- fileAttributes:osFileAttributes
- osCrtTime:osCrtTime
- osAccTime:osAccTime
- osModTime:osModTime
+ linkInfoFor:osPathname
+ fileSize:fileSize
+ fileAttributes:osFileAttributes
+ osCrtTime:osCrtTime
+ osAccTime:osAccTime
+ osModTime:osModTime
! !
!Win32OperatingSystem class methodsFor:'error messages'!
@@ -1878,872 +1877,872 @@
int __eno = __unsignedLongIntVal(errNr);
if (__isWIN32Error(__eno)) {
- switch (__eno & 0xFFFF) {
- /*
- * WIN32 GetLastError returns
- */
- case ERROR_INVALID_FUNCTION:
- sym = @symbol(ERROR_INVALID_FUNCTION);
- typ = @symbol(illegalOperationSignal);
- break;
-
- case ERROR_BAD_FORMAT:
- sym = @symbol(ERROR_BAD_FORMAT);
- typ = @symbol(invalidArgumentsSignal);
- break;
-
- case ERROR_FILE_NOT_FOUND:
- sym = @symbol(ERROR_FILE_NOT_FOUND);
- typ = @symbol(nonexistentSignal);
- break;
-
- case ERROR_PATH_NOT_FOUND:
- sym = @symbol(ERROR_PATH_NOT_FOUND);
- typ = @symbol(nonexistentSignal);
- break;
-
- case ERROR_TOO_MANY_OPEN_FILES:
- sym = @symbol(ERROR_TOO_MANY_OPEN_FILES);
- typ = @symbol(noResourcesSignal);
- break;
-
- /*
- * what a nice errorCode - thats the most "useful" one I ever
- * encountered ... (... those stupid micro-softies ...)
- */
- case ERROR_OPEN_FAILED:
- sym = @symbol(ERROR_OPEN_FAILED);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_ACCESS_DENIED:
- sym = @symbol(ERROR_ACCESS_DENIED);
- typ = @symbol(noPermissionsSignal);
- break;
-
- case ERROR_INVALID_HANDLE:
- sym = @symbol(ERROR_INVALID_HANDLE);
- typ = @symbol(invalidArgumentsSignal);
- break;
-
- case ERROR_NOT_ENOUGH_MEMORY:
- sym = @symbol(ERROR_NOT_ENOUGH_MEMORY);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_NO_SYSTEM_RESOURCES:
- sym = @symbol(ERROR_NO_SYSTEM_RESOURCES);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_NONPAGED_SYSTEM_RESOURCES:
- sym = @symbol(ERROR_NONPAGED_SYSTEM_RESOURCES);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_PAGED_SYSTEM_RESOURCES:
- sym = @symbol(ERROR_PAGED_SYSTEM_RESOURCES);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_INVALID_ACCESS:
- sym = @symbol(ERROR_INVALID_ACCESS);
- typ = @symbol(inappropriateOperationSignal);
- break;
-
- case ERROR_INVALID_DATA:
- sym = @symbol(ERROR_INVALID_DATA);
- typ = @symbol(invalidArgumentsSignal);
- break;
-
- case ERROR_INVALID_NAME:
- sym = @symbol(ERROR_INVALID_NAME);
- typ = @symbol(invalidArgumentsSignal);
- break;
-
- case ERROR_ARENA_TRASHED:
- sym = @symbol(ERROR_ARENA_TRASHED);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_OUTOFMEMORY:
- sym = @symbol(ERROR_OUTOFMEMORY);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_BROKEN_PIPE:
- sym = @symbol(ERROR_BROKEN_PIPE);
- typ = @symbol(peerFaultSignal);
- break;
-
- case ERROR_GEN_FAILURE:
- sym = @symbol(ERROR_GEN_FAILURE);
- break;
-
- case ERROR_WRITE_PROTECT:
- sym = @symbol(ERROR_WRITE_PROTECT);
- typ = @symbol(inappropriateOperationSignal);
- break;
-
- case ERROR_WRITE_FAULT:
- sym = @symbol(ERROR_WRITE_FAULT);
- typ = @symbol(transferFaultSignal);
- break;
-
- case ERROR_READ_FAULT:
- sym = @symbol(ERROR_READ_FAULT);
- typ = @symbol(transferFaultSignal);
- break;
-
- case ERROR_HANDLE_DISK_FULL:
- sym = @symbol(ERROR_HANDLE_DISK_FULL);
- typ = @symbol(volumeFullSignal);
- break;
-
- case ERROR_DISK_FULL:
- sym = @symbol(ERROR_DISK_FULL);
- typ = @symbol(volumeFullSignal);
- break;
-
- case ERROR_SHARING_VIOLATION:
- sym = @symbol(ERROR_SHARING_VIOLATION);
- typ = @symbol(noPermissionsSignal);
- break;
-
- case ERROR_LOCK_VIOLATION:
- sym = @symbol(ERROR_LOCK_VIOLATION);
- typ = @symbol(noPermissionsSignal);
- break;
-
- case ERROR_INVALID_PARAMETER:
- sym = @symbol(ERROR_INVALID_PARAMETER);
- typ = @symbol(invalidArgumentsSignal);
- break;
-
- case ERROR_NET_WRITE_FAULT:
- sym = @symbol(ERROR_NET_WRITE_FAULT);
- typ = @symbol(transferFaultSignal);
- break;
-
- case ERROR_NOT_SUPPORTED:
- sym = @symbol(ERROR_NOT_SUPPORTED);
- typ = @symbol(inappropriateOperationSignal);
- break;
-
- case ERROR_REM_NOT_LIST:
- sym = @symbol(ERROR_REM_NOT_LIST);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_NETWORK_ACCESS_DENIED:
- sym = @symbol(ERROR_NETWORK_ACCESS_DENIED);
- typ = @symbol(noPermissionsSignal);
- break;
-
- case ERROR_DUP_NAME:
- sym = @symbol(ERROR_DUP_NAME);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_BAD_NETPATH:
- sym = @symbol(ERROR_BAD_NETPATH);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_NETWORK_BUSY:
- sym = @symbol(ERROR_NETWORK_BUSY);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_DRIVE_LOCKED:
- sym = @symbol(ERROR_DRIVE_LOCKED);
- typ = @symbol(inappropriateOperationSignal);
- break;
-
- case ERROR_INVALID_DRIVE:
- sym = @symbol(ERROR_INVALID_DRIVE);
- typ = @symbol(invalidArgumentsSignal);
- break;
-
- case ERROR_WRONG_DISK:
- sym = @symbol(ERROR_WRONG_DISK);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_CURRENT_DIRECTORY:
- sym = @symbol(ERROR_CURRENT_DIRECTORY);
- typ = @symbol(invalidArgumentsSignal);
- break;
-
- /*
- * what a nice errorCode - thats the most "useful" one I ever
- * encountered ... (... those stupid micro-softies ...)
- */
- case ERROR_CANNOT_MAKE:
- sym = @symbol(ERROR_CANNOT_MAKE);
- typ = @symbol(inappropriateOperationSignal);
- break;
-
- case ERROR_NO_MORE_FILES:
- sym = @symbol(ERROR_NO_MORE_FILES);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_NOT_READY:
- sym = @symbol(ERROR_NOT_READY);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_NOT_DOS_DISK:
- sym = @symbol(ERROR_NOT_DOS_DISK);
- typ = @symbol(invalidArgumentsSignal);
- break;
-
- case ERROR_OUT_OF_PAPER:
- sym = @symbol(ERROR_OUT_OF_PAPER);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_PRINTQ_FULL:
- sym = @symbol(ERROR_PRINTQ_FULL);
- typ = @symbol(noResourcesSignal);
- break;
-
- case ERROR_FILE_EXISTS:
- sym = @symbol(ERROR_FILE_EXISTS);
- typ = @symbol(existingReferentSignal);
- break;
-
- default:
- break;
- }
+ switch (__eno & 0xFFFF) {
+ /*
+ * WIN32 GetLastError returns
+ */
+ case ERROR_INVALID_FUNCTION:
+ sym = @symbol(ERROR_INVALID_FUNCTION);
+ typ = @symbol(illegalOperationSignal);
+ break;
+
+ case ERROR_BAD_FORMAT:
+ sym = @symbol(ERROR_BAD_FORMAT);
+ typ = @symbol(invalidArgumentsSignal);
+ break;
+
+ case ERROR_FILE_NOT_FOUND:
+ sym = @symbol(ERROR_FILE_NOT_FOUND);
+ typ = @symbol(nonexistentSignal);
+ break;
+
+ case ERROR_PATH_NOT_FOUND:
+ sym = @symbol(ERROR_PATH_NOT_FOUND);
+ typ = @symbol(nonexistentSignal);
+ break;
+
+ case ERROR_TOO_MANY_OPEN_FILES:
+ sym = @symbol(ERROR_TOO_MANY_OPEN_FILES);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ /*
+ * what a nice errorCode - thats the most "useful" one I ever
+ * encountered ... (... those stupid micro-softies ...)
+ */
+ case ERROR_OPEN_FAILED:
+ sym = @symbol(ERROR_OPEN_FAILED);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_ACCESS_DENIED:
+ sym = @symbol(ERROR_ACCESS_DENIED);
+ typ = @symbol(noPermissionsSignal);
+ break;
+
+ case ERROR_INVALID_HANDLE:
+ sym = @symbol(ERROR_INVALID_HANDLE);
+ typ = @symbol(invalidArgumentsSignal);
+ break;
+
+ case ERROR_NOT_ENOUGH_MEMORY:
+ sym = @symbol(ERROR_NOT_ENOUGH_MEMORY);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_NO_SYSTEM_RESOURCES:
+ sym = @symbol(ERROR_NO_SYSTEM_RESOURCES);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_NONPAGED_SYSTEM_RESOURCES:
+ sym = @symbol(ERROR_NONPAGED_SYSTEM_RESOURCES);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_PAGED_SYSTEM_RESOURCES:
+ sym = @symbol(ERROR_PAGED_SYSTEM_RESOURCES);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_INVALID_ACCESS:
+ sym = @symbol(ERROR_INVALID_ACCESS);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
+
+ case ERROR_INVALID_DATA:
+ sym = @symbol(ERROR_INVALID_DATA);
+ typ = @symbol(invalidArgumentsSignal);
+ break;
+
+ case ERROR_INVALID_NAME:
+ sym = @symbol(ERROR_INVALID_NAME);
+ typ = @symbol(invalidArgumentsSignal);
+ break;
+
+ case ERROR_ARENA_TRASHED:
+ sym = @symbol(ERROR_ARENA_TRASHED);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_OUTOFMEMORY:
+ sym = @symbol(ERROR_OUTOFMEMORY);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_BROKEN_PIPE:
+ sym = @symbol(ERROR_BROKEN_PIPE);
+ typ = @symbol(peerFaultSignal);
+ break;
+
+ case ERROR_GEN_FAILURE:
+ sym = @symbol(ERROR_GEN_FAILURE);
+ break;
+
+ case ERROR_WRITE_PROTECT:
+ sym = @symbol(ERROR_WRITE_PROTECT);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
+
+ case ERROR_WRITE_FAULT:
+ sym = @symbol(ERROR_WRITE_FAULT);
+ typ = @symbol(transferFaultSignal);
+ break;
+
+ case ERROR_READ_FAULT:
+ sym = @symbol(ERROR_READ_FAULT);
+ typ = @symbol(transferFaultSignal);
+ break;
+
+ case ERROR_HANDLE_DISK_FULL:
+ sym = @symbol(ERROR_HANDLE_DISK_FULL);
+ typ = @symbol(volumeFullSignal);
+ break;
+
+ case ERROR_DISK_FULL:
+ sym = @symbol(ERROR_DISK_FULL);
+ typ = @symbol(volumeFullSignal);
+ break;
+
+ case ERROR_SHARING_VIOLATION:
+ sym = @symbol(ERROR_SHARING_VIOLATION);
+ typ = @symbol(noPermissionsSignal);
+ break;
+
+ case ERROR_LOCK_VIOLATION:
+ sym = @symbol(ERROR_LOCK_VIOLATION);
+ typ = @symbol(noPermissionsSignal);
+ break;
+
+ case ERROR_INVALID_PARAMETER:
+ sym = @symbol(ERROR_INVALID_PARAMETER);
+ typ = @symbol(invalidArgumentsSignal);
+ break;
+
+ case ERROR_NET_WRITE_FAULT:
+ sym = @symbol(ERROR_NET_WRITE_FAULT);
+ typ = @symbol(transferFaultSignal);
+ break;
+
+ case ERROR_NOT_SUPPORTED:
+ sym = @symbol(ERROR_NOT_SUPPORTED);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
+
+ case ERROR_REM_NOT_LIST:
+ sym = @symbol(ERROR_REM_NOT_LIST);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_NETWORK_ACCESS_DENIED:
+ sym = @symbol(ERROR_NETWORK_ACCESS_DENIED);
+ typ = @symbol(noPermissionsSignal);
+ break;
+
+ case ERROR_DUP_NAME:
+ sym = @symbol(ERROR_DUP_NAME);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_BAD_NETPATH:
+ sym = @symbol(ERROR_BAD_NETPATH);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_NETWORK_BUSY:
+ sym = @symbol(ERROR_NETWORK_BUSY);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_DRIVE_LOCKED:
+ sym = @symbol(ERROR_DRIVE_LOCKED);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
+
+ case ERROR_INVALID_DRIVE:
+ sym = @symbol(ERROR_INVALID_DRIVE);
+ typ = @symbol(invalidArgumentsSignal);
+ break;
+
+ case ERROR_WRONG_DISK:
+ sym = @symbol(ERROR_WRONG_DISK);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_CURRENT_DIRECTORY:
+ sym = @symbol(ERROR_CURRENT_DIRECTORY);
+ typ = @symbol(invalidArgumentsSignal);
+ break;
+
+ /*
+ * what a nice errorCode - thats the most "useful" one I ever
+ * encountered ... (... those stupid micro-softies ...)
+ */
+ case ERROR_CANNOT_MAKE:
+ sym = @symbol(ERROR_CANNOT_MAKE);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
+
+ case ERROR_NO_MORE_FILES:
+ sym = @symbol(ERROR_NO_MORE_FILES);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_NOT_READY:
+ sym = @symbol(ERROR_NOT_READY);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_NOT_DOS_DISK:
+ sym = @symbol(ERROR_NOT_DOS_DISK);
+ typ = @symbol(invalidArgumentsSignal);
+ break;
+
+ case ERROR_OUT_OF_PAPER:
+ sym = @symbol(ERROR_OUT_OF_PAPER);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_PRINTQ_FULL:
+ sym = @symbol(ERROR_PRINTQ_FULL);
+ typ = @symbol(noResourcesSignal);
+ break;
+
+ case ERROR_FILE_EXISTS:
+ sym = @symbol(ERROR_FILE_EXISTS);
+ typ = @symbol(existingReferentSignal);
+ break;
+
+ default:
+ break;
+ }
} else {
- switch (__eno) {
- /*
- * POSIX errnos - these should be defined
- */
+ switch (__eno) {
+ /*
+ * POSIX errnos - these should be defined
+ */
#ifdef EPERM
- case EPERM:
- sym = @symbol(EPERM);
- typ = @symbol(noPermissionsSignal);
- break;
+ case EPERM:
+ sym = @symbol(EPERM);
+ typ = @symbol(noPermissionsSignal);
+ break;
#endif
#ifdef ENOENT
- case ENOENT:
- sym = @symbol(ENOENT);
- typ = @symbol(nonexistentSignal);
- break;
+ case ENOENT:
+ sym = @symbol(ENOENT);
+ typ = @symbol(nonexistentSignal);
+ break;
#endif
#ifdef ESRCH
- case ESRCH:
- sym = @symbol(ESRCH);
- typ = @symbol(unavailableReferentSignal);
- break;
+ case ESRCH:
+ sym = @symbol(ESRCH);
+ typ = @symbol(unavailableReferentSignal);
+ break;
#endif
#ifdef EINTR
- case EINTR:
- sym = @symbol(EINTR);
- typ = @symbol(transientErrorSignal);
- break;
+ case EINTR:
+ sym = @symbol(EINTR);
+ typ = @symbol(transientErrorSignal);
+ break;
#endif
#ifdef EIO
- case EIO:
- sym = @symbol(EIO);
- typ = @symbol(transferFaultSignal);
- break;
+ case EIO:
+ sym = @symbol(EIO);
+ typ = @symbol(transferFaultSignal);
+ break;
#endif
#ifdef ENXIO
- case ENXIO:
- sym = @symbol(ENXIO);
- typ = @symbol(unavailableReferentSignal);
- break;
+ case ENXIO:
+ sym = @symbol(ENXIO);
+ typ = @symbol(unavailableReferentSignal);
+ break;
#endif
#ifdef E2BIG
- case E2BIG:
- sym = @symbol(E2BIG);
- typ = @symbol(invalidArgumentsSignal);
- break;
+ case E2BIG:
+ sym = @symbol(E2BIG);
+ typ = @symbol(invalidArgumentsSignal);
+ break;
#endif
#ifdef ENOEXEC
- case ENOEXEC:
- sym = @symbol(ENOEXEC);
- typ = @symbol(inappropriateOperationSignal);
- break;
+ case ENOEXEC:
+ sym = @symbol(ENOEXEC);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
#endif
#ifdef EBADF
- case EBADF:
- sym = @symbol(EBADF);
- typ = @symbol(badAccessorSignal);
- break;
+ case EBADF:
+ sym = @symbol(EBADF);
+ typ = @symbol(badAccessorSignal);
+ break;
#endif
#ifdef ECHILD
- case ECHILD:
- sym = @symbol(ECHILD);
- typ = @symbol(informationSignal);
- break;
+ case ECHILD:
+ sym = @symbol(ECHILD);
+ typ = @symbol(informationSignal);
+ break;
#endif
#if !defined(EWOULDBLOCK) && defined(EAGAIN) && (EWOULDBLOCK != EAGAIN)
- case EAGAIN:
- sym = @symbol(EAGAIN);
- typ = @symbol(notReadySignal);
- break;
+ case EAGAIN:
+ sym = @symbol(EAGAIN);
+ typ = @symbol(notReadySignal);
+ break;
#endif
#ifdef ENOMEM
- case ENOMEM:
- sym = @symbol(ENOMEM);
- typ = @symbol(noMemorySignal);
- break;
+ case ENOMEM:
+ sym = @symbol(ENOMEM);
+ typ = @symbol(noMemorySignal);
+ break;
#endif
#ifdef EACCES
- case EACCES:
- sym = @symbol(EACCES);
- typ = @symbol(noPermissionsSignal);
- break;
+ case EACCES:
+ sym = @symbol(EACCES);
+ typ = @symbol(noPermissionsSignal);
+ break;
#endif
#ifdef EFAULT
- case EFAULT:
- sym = @symbol(EFAULT);
- typ = @symbol(invalidArgumentsSignal);
- break;
+ case EFAULT:
+ sym = @symbol(EFAULT);
+ typ = @symbol(invalidArgumentsSignal);
+ break;
#endif
#ifdef EBUSY
- case EBUSY:
- sym = @symbol(EBUSY);
- typ = @symbol(unavailableReferentSignal);
- break;
+ case EBUSY:
+ sym = @symbol(EBUSY);
+ typ = @symbol(unavailableReferentSignal);
+ break;
#endif
#ifdef EEXIST
- case EEXIST:
- sym = @symbol(EEXIST);
- typ = @symbol(existingReferentSignal);
- break;
+ case EEXIST:
+ sym = @symbol(EEXIST);
+ typ = @symbol(existingReferentSignal);
+ break;
#endif
#ifdef EXDEV
- case EXDEV:
- sym = @symbol(EXDEV);
- typ = @symbol(inappropriateReferentSignal);
- break;
+ case EXDEV:
+ sym = @symbol(EXDEV);
+ typ = @symbol(inappropriateReferentSignal);
+ break;
#endif
#ifdef ENODEV
- case ENODEV:
- sym = @symbol(ENODEV);
- typ = @symbol(inaccessibleSignal);
- break;
+ case ENODEV:
+ sym = @symbol(ENODEV);
+ typ = @symbol(inaccessibleSignal);
+ break;
#endif
#ifdef ENOTDIR
- case ENOTDIR:
- sym = @symbol(ENOTDIR);
- typ = @symbol(inappropriateOperationSignal);
- break;
+ case ENOTDIR:
+ sym = @symbol(ENOTDIR);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
#endif
#ifdef EISDIR
- case EISDIR:
- sym = @symbol(EISDIR);
- typ = @symbol(inappropriateOperationSignal);
- break;
+ case EISDIR:
+ sym = @symbol(EISDIR);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
#endif
#ifdef EINVAL
- case EINVAL:
- sym = @symbol(EINVAL);
- typ = @symbol(invalidArgumentsSignal);
- break;
+ case EINVAL:
+ sym = @symbol(EINVAL);
+ typ = @symbol(invalidArgumentsSignal);
+ break;
#endif
#ifdef ENFILE
- case ENFILE:
- sym = @symbol(ENFILE);
- typ = @symbol(noResourcesSignal);
- break;
+ case ENFILE:
+ sym = @symbol(ENFILE);
+ typ = @symbol(noResourcesSignal);
+ break;
#endif
#ifdef EMFILE
- case EMFILE:
- sym = @symbol(EMFILE);
- typ = @symbol(noResourcesSignal);
- break;
+ case EMFILE:
+ sym = @symbol(EMFILE);
+ typ = @symbol(noResourcesSignal);
+ break;
#endif
#ifdef ENOTTY
- case ENOTTY:
- sym = @symbol(ENOTTY);
- typ = @symbol(inappropriateOperationSignal);
- break;
+ case ENOTTY:
+ sym = @symbol(ENOTTY);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
#endif
#ifdef EFBIG
- case EFBIG:
- sym = @symbol(EFBIG);
- typ = @symbol(noResourcesSignal);
- break;
+ case EFBIG:
+ sym = @symbol(EFBIG);
+ typ = @symbol(noResourcesSignal);
+ break;
#endif
#ifdef ENOSPC
- case ENOSPC:
- sym = @symbol(ENOSPC);
- typ = @symbol(noResourcesSignal);
- break;
+ case ENOSPC:
+ sym = @symbol(ENOSPC);
+ typ = @symbol(noResourcesSignal);
+ break;
#endif
#ifdef ESPIPE
- case ESPIPE:
- sym = @symbol(ESPIPE);
- typ = @symbol(inappropriateOperationSignal);
- break;
+ case ESPIPE:
+ sym = @symbol(ESPIPE);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
#endif
#ifdef EROFS
- case EROFS:
- sym = @symbol(EROFS);
- typ = @symbol(inappropriateOperationSignal);
- break;
+ case EROFS:
+ sym = @symbol(EROFS);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
#endif
#ifdef EMLINK
- case EMLINK:
- sym = @symbol(EMLINK);
- typ = @symbol(rangeErrorSignal);
- break;
+ case EMLINK:
+ sym = @symbol(EMLINK);
+ typ = @symbol(rangeErrorSignal);
+ break;
#endif
#ifdef EPIPE
- case EPIPE:
- sym = @symbol(EPIPE);
- typ = @symbol(peerFaultSignal);
- break;
+ case EPIPE:
+ sym = @symbol(EPIPE);
+ typ = @symbol(peerFaultSignal);
+ break;
#endif
#ifdef EDOM
- case EDOM:
- sym = @symbol(EDOM);
- typ = @symbol(rangeErrorSignal);
- break;
+ case EDOM:
+ sym = @symbol(EDOM);
+ typ = @symbol(rangeErrorSignal);
+ break;
#endif
#ifdef ERANGE
- case ERANGE:
- sym = @symbol(ERANGE);
- typ = @symbol(rangeErrorSignal);
- break;
+ case ERANGE:
+ sym = @symbol(ERANGE);
+ typ = @symbol(rangeErrorSignal);
+ break;
#endif
#ifdef EDEADLK
# if EDEADLK != EWOULDBLOCK
- case EDEADLK:
- sym = @symbol(EDEADLK);
- typ = @symbol(noResourcesSignal);
- break;
+ case EDEADLK:
+ sym = @symbol(EDEADLK);
+ typ = @symbol(noResourcesSignal);
+ break;
# endif
#endif
#ifdef ENAMETOOLONG
- case ENAMETOOLONG:
- sym = @symbol(ENAMETOOLONG);
- typ = @symbol(rangeErrorSignal);
- break;
+ case ENAMETOOLONG:
+ sym = @symbol(ENAMETOOLONG);
+ typ = @symbol(rangeErrorSignal);
+ break;
#endif
#ifdef ENOLCK
- case ENOLCK:
- sym = @symbol(ENOLCK);
- typ = @symbol(inappropriateOperationSignal);
- break;
+ case ENOLCK:
+ sym = @symbol(ENOLCK);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
#endif
#ifdef ENOSYS
- case ENOSYS:
- sym = @symbol(ENOSYS);
- typ = @symbol(inappropriateOperationSignal);
- break;
+ case ENOSYS:
+ sym = @symbol(ENOSYS);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
#endif
#if defined(ENOTEMPTY) && (ENOTEMPTY != EEXIST)
- case ENOTEMPTY:
- sym = @symbol(ENOTEMPTY);
- typ = @symbol(inappropriateReferentSignal);
- break;
+ case ENOTEMPTY:
+ sym = @symbol(ENOTEMPTY);
+ typ = @symbol(inappropriateReferentSignal);
+ break;
#endif
#ifdef EILSEQ
- case EILSEQ:
- sym = @symbol(EILSEQ);
- typ = @symbol(transferFaultSignal);
- break;
-#endif
- /*
- * XPG3 errnos - defined on most systems
- */
+ case EILSEQ:
+ sym = @symbol(EILSEQ);
+ typ = @symbol(transferFaultSignal);
+ break;
+#endif
+ /*
+ * XPG3 errnos - defined on most systems
+ */
#ifdef ENOTBLK
- case ENOTBLK:
- sym = @symbol(ENOTBLK);
- typ = @symbol(inappropriateReferentSignal);
- break;
+ case ENOTBLK:
+ sym = @symbol(ENOTBLK);
+ typ = @symbol(inappropriateReferentSignal);
+ break;
#endif
#ifdef ETXTBSY
- case ETXTBSY:
- sym = @symbol(ETXTBSY);
- typ = @symbol(inaccessibleSignal);
- break;
-#endif
- /*
- * some others
- */
+ case ETXTBSY:
+ sym = @symbol(ETXTBSY);
+ typ = @symbol(inaccessibleSignal);
+ break;
+#endif
+ /*
+ * some others
+ */
#ifdef EWOULDBLOCK
- case EWOULDBLOCK:
- sym = @symbol(EWOULDBLOCK);
- typ = @symbol(notReadySignal);
- break;
+ case EWOULDBLOCK:
+ sym = @symbol(EWOULDBLOCK);
+ typ = @symbol(notReadySignal);
+ break;
#endif
#ifdef ENOMSG
- case ENOMSG:
- sym = @symbol(ENOMSG);
- typ = @symbol(noDataSignal);
- break;
+ case ENOMSG:
+ sym = @symbol(ENOMSG);
+ typ = @symbol(noDataSignal);
+ break;
#endif
#ifdef ELOOP
- case ELOOP:
- sym = @symbol(ELOOP);
- typ = @symbol(rangeErrorSignal);
- break;
-#endif
-
- /*
- * some stream errors
- */
+ case ELOOP:
+ sym = @symbol(ELOOP);
+ typ = @symbol(rangeErrorSignal);
+ break;
+#endif
+
+ /*
+ * some stream errors
+ */
#ifdef ETIME
- case ETIME:
- sym = @symbol(ETIME);
- typ = @symbol(peerFaultSignal);
- break;
+ case ETIME:
+ sym = @symbol(ETIME);
+ typ = @symbol(peerFaultSignal);
+ break;
#endif
#ifdef ENOSR
- case ENOSR:
- sym = @symbol(ENOSR);
- typ = @symbol(noResourcesSignal);
- break;
+ case ENOSR:
+ sym = @symbol(ENOSR);
+ typ = @symbol(noResourcesSignal);
+ break;
#endif
#ifdef ENOSTR
- case ENOSTR:
- sym = @symbol(ENOSTR);
- typ = @symbol(inappropriateReferentSignal);
- break;
+ case ENOSTR:
+ sym = @symbol(ENOSTR);
+ typ = @symbol(inappropriateReferentSignal);
+ break;
#endif
#ifdef ECOMM
- case ECOMM:
- sym = @symbol(ECOMM);
- typ = @symbol(transferFaultSignal);
- break;
+ case ECOMM:
+ sym = @symbol(ECOMM);
+ typ = @symbol(transferFaultSignal);
+ break;
#endif
#ifdef EPROTO
- case EPROTO:
- sym = @symbol(EPROTO);
- typ = @symbol(inappropriateOperationSignal);
- break;
-#endif
- /*
- * nfs errors
- */
+ case EPROTO:
+ sym = @symbol(EPROTO);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
+#endif
+ /*
+ * nfs errors
+ */
#ifdef ESTALE
- case ESTALE:
- sym = @symbol(ESTALE);
- typ = @symbol(unavailableReferentSignal);
- break;
+ case ESTALE:
+ sym = @symbol(ESTALE);
+ typ = @symbol(unavailableReferentSignal);
+ break;
#endif
#ifdef EREMOTE
- case EREMOTE:
- sym = @symbol(EREMOTE);
- typ = @symbol(rangeErrorSignal);
- break;
-#endif
- /*
- * some networking errors
- */
+ case EREMOTE:
+ sym = @symbol(EREMOTE);
+ typ = @symbol(rangeErrorSignal);
+ break;
+#endif
+ /*
+ * some networking errors
+ */
#ifdef EINPROGRESS
- case EINPROGRESS:
- sym = @symbol(EINPROGRESS);
- typ = @symbol(operationStartedSignal);
- break;
+ case EINPROGRESS:
+ sym = @symbol(EINPROGRESS);
+ typ = @symbol(operationStartedSignal);
+ break;
#endif
#ifdef EALREADY
- case EALREADY:
- sym = @symbol(EALREADY);
- typ = @symbol(operationStartedSignal);
- break;
+ case EALREADY:
+ sym = @symbol(EALREADY);
+ typ = @symbol(operationStartedSignal);
+ break;
#endif
#ifdef ENOTSOCK
- case ENOTSOCK:
- sym = @symbol(ENOTSOCK);
- typ = @symbol(inappropriateOperationSignal);
- break;
+ case ENOTSOCK:
+ sym = @symbol(ENOTSOCK);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
#endif
#ifdef EDESTADDRREQ
- case EDESTADDRREQ:
- sym = @symbol(EDESTADDRREQ);
- typ = @symbol(underspecifiedSignal);
- break;
+ case EDESTADDRREQ:
+ sym = @symbol(EDESTADDRREQ);
+ typ = @symbol(underspecifiedSignal);
+ break;
#endif
#ifdef EMSGSIZE
- case EMSGSIZE:
- sym = @symbol(EMSGSIZE);
- typ = @symbol(rangeErrorSignal);
- break;
+ case EMSGSIZE:
+ sym = @symbol(EMSGSIZE);
+ typ = @symbol(rangeErrorSignal);
+ break;
#endif
#ifdef EPROTOTYPE
- case EPROTOTYPE:
- sym = @symbol(EPROTOTYPE);
- typ = @symbol(wrongSubtypeForOperationSignal);
- break;
+ case EPROTOTYPE:
+ sym = @symbol(EPROTOTYPE);
+ typ = @symbol(wrongSubtypeForOperationSignal);
+ break;
#endif
#ifdef ENOPROTOOPT
- case ENOPROTOOPT:
- sym = @symbol(ENOPROTOOPT);
- typ = @symbol(unsupportedOperationSignal);
- break;
+ case ENOPROTOOPT:
+ sym = @symbol(ENOPROTOOPT);
+ typ = @symbol(unsupportedOperationSignal);
+ break;
#endif
#ifdef EPROTONOSUPPORT
- case EPROTONOSUPPORT:
- sym = @symbol(EPROTONOSUPPORT);
- typ = @symbol(unsupportedOperationSignal);
- break;
+ case EPROTONOSUPPORT:
+ sym = @symbol(EPROTONOSUPPORT);
+ typ = @symbol(unsupportedOperationSignal);
+ break;
#endif
#ifdef ESOCKTNOSUPPORT
- case ESOCKTNOSUPPORT:
- sym = @symbol(ESOCKTNOSUPPORT);
- typ = @symbol(unsupportedOperationSignal);
- break;
+ case ESOCKTNOSUPPORT:
+ sym = @symbol(ESOCKTNOSUPPORT);
+ typ = @symbol(unsupportedOperationSignal);
+ break;
#endif
#ifdef EOPNOTSUPP
- case EOPNOTSUPP:
- sym = @symbol(EOPNOTSUPP);
- typ = @symbol(inappropriateOperationSignal);
- break;
+ case EOPNOTSUPP:
+ sym = @symbol(EOPNOTSUPP);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
#endif
#ifdef EPFNOSUPPORT
- case EPFNOSUPPORT:
- sym = @symbol(EPFNOSUPPORT);
- typ = @symbol(unsupportedOperationSignal);
- break;
+ case EPFNOSUPPORT:
+ sym = @symbol(EPFNOSUPPORT);
+ typ = @symbol(unsupportedOperationSignal);
+ break;
#endif
#ifdef EAFNOSUPPORT
- case EAFNOSUPPORT:
- sym = @symbol(EAFNOSUPPORT);
- typ = @symbol(unsupportedOperationSignal);
- break;
+ case EAFNOSUPPORT:
+ sym = @symbol(EAFNOSUPPORT);
+ typ = @symbol(unsupportedOperationSignal);
+ break;
#endif
#ifdef EADDRINUSE
- case EADDRINUSE:
- sym = @symbol(EADDRINUSE);
- typ = @symbol(existingReferentSignal);
- break;
+ case EADDRINUSE:
+ sym = @symbol(EADDRINUSE);
+ typ = @symbol(existingReferentSignal);
+ break;
#endif
#ifdef WSAEADDRINUSE
- case WSAEADDRINUSE:
- sym = @symbol(WSAEADDRINUSE);
- typ = @symbol(existingReferentSignal);
- break;
+ case WSAEADDRINUSE:
+ sym = @symbol(WSAEADDRINUSE);
+ typ = @symbol(existingReferentSignal);
+ break;
#endif
#ifdef EADDRNOTAVAIL
- case EADDRNOTAVAIL:
- sym = @symbol(EADDRNOTAVAIL);
- typ = @symbol(noPermissionsSignal);
- break;
+ case EADDRNOTAVAIL:
+ sym = @symbol(EADDRNOTAVAIL);
+ typ = @symbol(noPermissionsSignal);
+ break;
#endif
#ifdef ETIMEDOUT
- case ETIMEDOUT:
- sym = @symbol(ETIMEDOUT);
- typ = @symbol(peerFaultSignal);
- break;
+ case ETIMEDOUT:
+ sym = @symbol(ETIMEDOUT);
+ typ = @symbol(peerFaultSignal);
+ break;
#endif
#ifdef WSAETIMEDOUT
- case WSAETIMEDOUT:
- sym = @symbol(ETIMEDOUT);
- typ = @symbol(peerFaultSignal);
- break;
+ case WSAETIMEDOUT:
+ sym = @symbol(ETIMEDOUT);
+ typ = @symbol(peerFaultSignal);
+ break;
#endif
#ifdef ECONNREFUSED
- case ECONNREFUSED:
- sym = @symbol(ECONNREFUSED);
- typ = @symbol(peerFaultSignal);
- break;
+ case ECONNREFUSED:
+ sym = @symbol(ECONNREFUSED);
+ typ = @symbol(peerFaultSignal);
+ break;
#endif
#ifdef WSAECONNREFUSED
- case WSAECONNREFUSED:
- sym = @symbol(ECONNREFUSED);
- typ = @symbol(peerFaultSignal);
- break;
+ case WSAECONNREFUSED:
+ sym = @symbol(ECONNREFUSED);
+ typ = @symbol(peerFaultSignal);
+ break;
#endif
#ifdef ENETDOWN
- case ENETDOWN:
- sym = @symbol(ENETDOWN);
- typ = @symbol(peerFaultSignal);
- break;
+ case ENETDOWN:
+ sym = @symbol(ENETDOWN);
+ typ = @symbol(peerFaultSignal);
+ break;
#endif
#ifdef ENETUNREACH
- case ENETUNREACH:
- sym = @symbol(ENETUNREACH);
- typ = @symbol(peerFaultSignal);
- break;
+ case ENETUNREACH:
+ sym = @symbol(ENETUNREACH);
+ typ = @symbol(peerFaultSignal);
+ break;
#endif
#ifdef ENETRESET
- case ENETRESET:
- sym = @symbol(ENETRESET);
- typ = @symbol(peerFaultSignal);
- break;
+ case ENETRESET:
+ sym = @symbol(ENETRESET);
+ typ = @symbol(peerFaultSignal);
+ break;
#endif
#ifdef ECONNABORTED
- case ECONNABORTED:
- sym = @symbol(ECONNABORTED);
- typ = @symbol(peerFaultSignal);
- break;
+ case ECONNABORTED:
+ sym = @symbol(ECONNABORTED);
+ typ = @symbol(peerFaultSignal);
+ break;
#endif
#ifdef ECONNRESET
- case ECONNRESET:
- sym = @symbol(ECONNRESET);
- typ = @symbol(peerFaultSignal);
- break;
+ case ECONNRESET:
+ sym = @symbol(ECONNRESET);
+ typ = @symbol(peerFaultSignal);
+ break;
#endif
#ifdef EISCONN
- case EISCONN:
- sym = @symbol(EISCONN);
- typ = @symbol(unpreparedOperationSignal);
- break;
+ case EISCONN:
+ sym = @symbol(EISCONN);
+ typ = @symbol(unpreparedOperationSignal);
+ break;
#endif
#ifdef ENOTCONN
- case ENOTCONN:
- sym = @symbol(ENOTCONN);
- typ = @symbol(unpreparedOperationSignal);
- break;
+ case ENOTCONN:
+ sym = @symbol(ENOTCONN);
+ typ = @symbol(unpreparedOperationSignal);
+ break;
#endif
#ifdef ESHUTDOWN
- case ESHUTDOWN:
- sym = @symbol(ESHUTDOWN);
- typ = @symbol(unpreparedOperationSignal);
- break;
+ case ESHUTDOWN:
+ sym = @symbol(ESHUTDOWN);
+ typ = @symbol(unpreparedOperationSignal);
+ break;
#endif
#ifdef EHOSTDOWN
- case EHOSTDOWN:
- sym = @symbol(EHOSTDOWN);
- typ = @symbol(peerFaultSignal);
- break;
+ case EHOSTDOWN:
+ sym = @symbol(EHOSTDOWN);
+ typ = @symbol(peerFaultSignal);
+ break;
#endif
#ifdef EHOSTUNREACH
- case EHOSTUNREACH:
- sym = @symbol(EHOSTUNREACH);
- typ = @symbol(peerFaultSignal);
- break;
+ case EHOSTUNREACH:
+ sym = @symbol(EHOSTUNREACH);
+ typ = @symbol(peerFaultSignal);
+ break;
#endif
#ifdef WSAHOSTUNREACH
- case WSAHOSTUNREACH:
- sym = @symbol(EHOSTUNREACH);
- typ = @symbol(peerFaultSignal);
- break;
+ case WSAHOSTUNREACH:
+ sym = @symbol(EHOSTUNREACH);
+ typ = @symbol(peerFaultSignal);
+ break;
#endif
#ifdef WSAEFAULT
- case WSAEFAULT:
- sym = @symbol(WSAEFAULT);
- typ = @symbol(invalidArgumentsSignal);
- break;
+ case WSAEFAULT:
+ sym = @symbol(WSAEFAULT);
+ typ = @symbol(invalidArgumentsSignal);
+ break;
#endif
#ifdef WSAEINTR
- case WSAEINTR:
- sym = @symbol(WSAEINTR);
- typ = @symbol(transientErrorSignal);
- break;
+ case WSAEINTR:
+ sym = @symbol(WSAEINTR);
+ typ = @symbol(transientErrorSignal);
+ break;
#endif
#ifdef WSAEBADF
- case WSAEBADF:
- sym = @symbol(WSAEBADF);
- typ = @symbol(badAccessorSignal);
- break;
+ case WSAEBADF:
+ sym = @symbol(WSAEBADF);
+ typ = @symbol(badAccessorSignal);
+ break;
#endif
#ifdef WSAEACCES
- case WSAEACCES:
- sym = @symbol(WSAEACCES);
- typ = @symbol(badAccessorSignal);
- break;
+ case WSAEACCES:
+ sym = @symbol(WSAEACCES);
+ typ = @symbol(badAccessorSignal);
+ break;
#endif
#ifdef WSAEINVAL
- case WSAEINVAL:
- sym = @symbol(WSAEINVAL);
- typ = @symbol(invalidArgumentsSignal);
- break;
+ case WSAEINVAL:
+ sym = @symbol(WSAEINVAL);
+ typ = @symbol(invalidArgumentsSignal);
+ break;
#endif
#ifdef WSAEMFILE
- case WSAEMFILE:
- sym = @symbol(WSAEMFILE);
- typ = @symbol(noResourcesSignal);
- break;
+ case WSAEMFILE:
+ sym = @symbol(WSAEMFILE);
+ typ = @symbol(noResourcesSignal);
+ break;
#endif
#ifdef WSAEWOULDBLOCK
- case WSAEWOULDBLOCK:
- sym = @symbol(WSAEWOULDBLOCK);
- typ = @symbol(notReadySignal);
- break;
+ case WSAEWOULDBLOCK:
+ sym = @symbol(WSAEWOULDBLOCK);
+ typ = @symbol(notReadySignal);
+ break;
#endif
#ifdef WSAEINPROGRESS
- case WSAEINPROGRESS:
- sym = @symbol(WSAEINPROGRESS);
- typ = @symbol(operationStartedSignal);
- break;
+ case WSAEINPROGRESS:
+ sym = @symbol(WSAEINPROGRESS);
+ typ = @symbol(operationStartedSignal);
+ break;
#endif
#ifdef WSAEALREADY
- case WSAEALREADY:
- sym = @symbol(WSAEALREADY);
- typ = @symbol(operationStartedSignal);
- break;
+ case WSAEALREADY:
+ sym = @symbol(WSAEALREADY);
+ typ = @symbol(operationStartedSignal);
+ break;
#endif
#ifdef WSAENOTSOCK
- case WSAENOTSOCK:
- sym = @symbol(WSAENOTSOCK);
- typ = @symbol(inappropriateOperationSignal);
- break;
+ case WSAENOTSOCK:
+ sym = @symbol(WSAENOTSOCK);
+ typ = @symbol(inappropriateOperationSignal);
+ break;
#endif
#ifdef WSAEPROTONOSUPPORT
- case WSAEPROTONOSUPPORT:
- sym = @symbol(WSAEPROTONOSUPPORT);
- typ = @symbol(unsupportedOperationSignal);
- break;
+ case WSAEPROTONOSUPPORT:
+ sym = @symbol(WSAEPROTONOSUPPORT);
+ typ = @symbol(unsupportedOperationSignal);
+ break;
#endif
#ifdef WSAESOCKTNOSUPPORT
- case WSAESOCKTNOSUPPORT:
- sym = @symbol(WSAESOCKTNOSUPPORT);
- typ = @symbol(unsupportedOperationSignal);
- break;
+ case WSAESOCKTNOSUPPORT:
+ sym = @symbol(WSAESOCKTNOSUPPORT);
+ typ = @symbol(unsupportedOperationSignal);
+ break;
#endif
#ifdef E_NOINTERFACE
- case E_NOINTERFACE:
- sym = @symbol(E_NOINTERFACE);
- typ = @symbol(noInterfaceSignal);
- break;
+ case E_NOINTERFACE:
+ sym = @symbol(E_NOINTERFACE);
+ typ = @symbol(noInterfaceSignal);
+ break;
#endif
#ifdef CO_E_NOTINITIALIZED
- case CO_E_NOTINITIALIZED:
- sym = @symbol(CO_E_NOTINITIALIZED);
- typ = @symbol(coNotInitializedSignal);
- break;
+ case CO_E_NOTINITIALIZED:
+ sym = @symbol(CO_E_NOTINITIALIZED);
+ typ = @symbol(coNotInitializedSignal);
+ break;
#endif
#ifdef REGDB_E_CLASSNOTREG
- case REGDB_E_CLASSNOTREG:
- sym = @symbol(REGDB_E_CLASSNOTREG);
- typ = @symbol(classNotRegisteredSignal);
- break;
+ case REGDB_E_CLASSNOTREG:
+ sym = @symbol(REGDB_E_CLASSNOTREG);
+ typ = @symbol(classNotRegisteredSignal);
+ break;
#endif
#ifdef CLASS_E_NOAGGREGATION
- case CLASS_E_NOAGGREGATION:
- sym = @symbol(CLASS_E_NOAGGREGATION);
- typ = @symbol(noAggregationSignal);
- break;
+ case CLASS_E_NOAGGREGATION:
+ sym = @symbol(CLASS_E_NOAGGREGATION);
+ typ = @symbol(noAggregationSignal);
+ break;
#endif
#ifdef DISP_E_UNKNOWNNAME
- case DISP_E_UNKNOWNNAME:
- sym = @symbol(DISP_E_UNKNOWNNAME);
- typ = @symbol(unknownNameSignal);
- break;
+ case DISP_E_UNKNOWNNAME:
+ sym = @symbol(DISP_E_UNKNOWNNAME);
+ typ = @symbol(unknownNameSignal);
+ break;
#endif
#ifdef OLEOBJ_E_NOVERBS
- case OLEOBJ_E_NOVERBS:
- sym = @symbol(OLEOBJ_E_NOVERBS);
- typ = @symbol(noVerbsSignal);
- break;
-#endif
-
- default:
- break;
- }
+ case OLEOBJ_E_NOVERBS:
+ sym = @symbol(OLEOBJ_E_NOVERBS);
+ typ = @symbol(noVerbsSignal);
+ break;
+#endif
+
+ default:
+ break;
+ }
}
}
%}.
holder := OSErrorHolder new.
sym isNil ifTrue:[
- sym := #ERROR_OTHER.
- errNr notNil ifTrue:[
- "keep symbols as symbols"
- holder parameter:(errNr isString ifTrue:[errNr] ifFalse:[errNr asString]).
- ].
+ sym := #ERROR_OTHER.
+ errNr notNil ifTrue:[
+ "keep symbols as symbols"
+ holder parameter:(errNr isString ifTrue:[errNr] ifFalse:[errNr asString]).
+ ].
].
holder errorSymbol:sym errorCategory:(typ ? #defaultOsErrorSignal).
^ holder
@@ -2774,212 +2773,212 @@
*/
#ifdef ERROR_INVALID_FUNCTION
if (sym == @symbol(ERROR_INVALID_FUNCTION)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_INVALID_FUNCTION)) );
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_INVALID_FUNCTION)) );
}
#endif
#ifdef ERROR_BAD_FORMAT
if (sym == @symbol(ERROR_BAD_FORMAT)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_BAD_FORMAT)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_BAD_FORMAT)));
}
#endif
#ifdef ERROR_FILE_NOT_FOUND
if (sym == @symbol(ERROR_FILE_NOT_FOUND)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_FILE_NOT_FOUND)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_FILE_NOT_FOUND)));
}
#endif
#ifdef ERROR_PATH_NOT_FOUND
if (sym == @symbol(ERROR_PATH_NOT_FOUND)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_PATH_NOT_FOUND)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_PATH_NOT_FOUND)));
}
#endif
#ifdef ERROR_TOO_MANY_OPEN_FILES
if (sym == @symbol(ERROR_TOO_MANY_OPEN_FILES)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_TOO_MANY_OPEN_FILES)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_TOO_MANY_OPEN_FILES)));
}
#endif
#ifdef ERROR_OPEN_FAILED
if (sym == @symbol(ERROR_OPEN_FAILED)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_OPEN_FAILED)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_OPEN_FAILED)));
}
#endif
#ifdef ERROR_ACCESS_DENIED
if (sym == @symbol(ERROR_ACCESS_DENIED)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_ACCESS_DENIED)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_ACCESS_DENIED)));
}
#endif
#ifdef ERROR_INVALID_HANDLE
if (sym == @symbol(ERROR_INVALID_HANDLE)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_INVALID_HANDLE)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_INVALID_HANDLE)));
}
#endif
#ifdef ERROR_NOT_ENOUGH_MEMORY
if (sym == @symbol(ERROR_NOT_ENOUGH_MEMORY)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NOT_ENOUGH_MEMORY)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NOT_ENOUGH_MEMORY)));
}
#endif
#ifdef ERROR_NO_SYSTEM_RESOURCES
if (sym == @symbol(ERROR_NO_SYSTEM_RESOURCES)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NO_SYSTEM_RESOURCES)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NO_SYSTEM_RESOURCES)));
}
#endif
#ifdef ERROR_INVALID_ACCESS
if (sym == @symbol(ERROR_INVALID_ACCESS)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_INVALID_ACCESS)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_INVALID_ACCESS)));
}
#endif
#ifdef ERROR_INVALID_DATA
if (sym == @symbol(ERROR_INVALID_DATA)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_INVALID_DATA)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_INVALID_DATA)));
}
#endif
#ifdef ERROR_INVALID_NAME
if (sym == @symbol(ERROR_INVALID_NAME)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_INVALID_NAME)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_INVALID_NAME)));
}
#endif
#ifdef ERROR_ARENA_TRASHED
if (sym == @symbol(ERROR_ARENA_TRASHED)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_ARENA_TRASHED)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_ARENA_TRASHED)));
}
#endif
#ifdef ERROR_OUTOFMEMORY
if (sym == @symbol(ERROR_OUTOFMEMORY)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_OUTOFMEMORY)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_OUTOFMEMORY)));
}
#endif
#ifdef ERROR_BROKEN_PIPE
if (sym == @symbol(ERROR_BROKEN_PIPE)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_BROKEN_PIPE)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_BROKEN_PIPE)));
}
#endif
#ifdef ERROR_GEN_FAILURE
if (sym == @symbol(ERROR_GEN_FAILURE)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_GEN_FAILURE)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_GEN_FAILURE)));
}
#endif
#ifdef ERROR_WRITE_PROTECT
if (sym == @symbol(ERROR_WRITE_PROTECT)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_WRITE_PROTECT)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_WRITE_PROTECT)));
}
#endif
#ifdef ERROR_WRITE_FAULT
if (sym == @symbol(ERROR_WRITE_FAULT)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_WRITE_FAULT)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_WRITE_FAULT)));
}
#endif
#ifdef ERROR_READ_FAULT
if (sym == @symbol(ERROR_READ_FAULT)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_READ_FAULT)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_READ_FAULT)));
}
#endif
#ifdef ERROR_HANDLE_DISK_FULL
if (sym == @symbol(ERROR_HANDLE_DISK_FULL)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_HANDLE_DISK_FULL)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_HANDLE_DISK_FULL)));
}
#endif
#ifdef ERROR_DISK_FULL
if (sym == @symbol(ERROR_DISK_FULL)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_DISK_FULL)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_DISK_FULL)));
}
#endif
#ifdef ERROR_ERROR_SHARING_VIOLATION
if (sym == @symbol(ERROR_ERROR_SHARING_VIOLATION)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_ERROR_SHARING_VIOLATION)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_ERROR_SHARING_VIOLATION)));
}
#endif
#ifdef ERROR_LOCK_VIOLATION
if (sym == @symbol(ERROR_LOCK_VIOLATION)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_LOCK_VIOLATION)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_LOCK_VIOLATION)));
}
#endif
#ifdef ERROR_INVALID_PARAMETER
if (sym == @symbol(ERROR_INVALID_PARAMETER)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_INVALID_PARAMETER)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_INVALID_PARAMETER)));
}
#endif
#ifdef ERROR_NET_WRITE_FAULT
if (sym == @symbol(ERROR_NET_WRITE_FAULT)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NET_WRITE_FAULT)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NET_WRITE_FAULT)));
}
#endif
#ifdef ERROR_NOT_SUPPORTED
if (sym == @symbol(ERROR_NOT_SUPPORTED)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NOT_SUPPORTED)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NOT_SUPPORTED)));
}
#endif
#ifdef ERROR_REM_NOT_LIST
if (sym == @symbol(ERROR_REM_NOT_LIST)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_REM_NOT_LIST)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_REM_NOT_LIST)));
}
#endif
#ifdef ERROR_NETWORK_ACCESS_DENIED
if (sym == @symbol(ERROR_NETWORK_ACCESS_DENIED)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NETWORK_ACCESS_DENIED)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NETWORK_ACCESS_DENIED)));
}
#endif
#ifdef ERROR_DUP_NAME
if (sym == @symbol(ERROR_DUP_NAME)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_DUP_NAME)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_DUP_NAME)));
}
#endif
#ifdef ERROR_BAD_NETPATH
if (sym == @symbol(ERROR_BAD_NETPATH)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_BAD_NETPATH)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_BAD_NETPATH)));
}
#endif
#ifdef ERROR_NETWORK_BUSY
if (sym == @symbol(ERROR_NETWORK_BUSY)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NETWORK_BUSY)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NETWORK_BUSY)));
}
#endif
#ifdef ERROR_DRIVE_LOCKED
if (sym == @symbol(ERROR_DRIVE_LOCKED)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_DRIVE_LOCKED)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_DRIVE_LOCKED)));
}
#endif
#ifdef ERROR_INVALID_DRIVE
if (sym == @symbol(ERROR_INVALID_DRIVE)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_INVALID_DRIVE)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_INVALID_DRIVE)));
}
#endif
#ifdef ERROR_WRONG_DISK
if (sym == @symbol(ERROR_WRONG_DISK)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_WRONG_DISK)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_WRONG_DISK)));
}
#endif
#ifdef ERROR_CURRENT_DIRECTORY
if (sym == @symbol(ERROR_CURRENT_DIRECTORY)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_CURRENT_DIRECTORY)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_CURRENT_DIRECTORY)));
}
#endif
#ifdef ERROR_CANNOT_MAKE
if (sym == @symbol(ERROR_CANNOT_MAKE)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_CANNOT_MAKE)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_CANNOT_MAKE)));
}
#endif
#ifdef ERROR_NO_MORE_FILES
if (sym == @symbol(ERROR_NO_MORE_FILES)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NO_MORE_FILES)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NO_MORE_FILES)));
}
#endif
#ifdef ERROR_NOT_READY
if (sym == @symbol(ERROR_NOT_READY)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NOT_READY)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NOT_READY)));
}
#endif
#ifdef ERROR_NOT_DOS_DISK
if (sym == @symbol(ERROR_NOT_DOS_DISK)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NOT_DOS_DISK)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_NOT_DOS_DISK)));
}
#endif
#ifdef ERROR_OUT_OF_PAPER
if (sym == @symbol(ERROR_OUT_OF_PAPER)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_OUT_OF_PAPER)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_OUT_OF_PAPER)));
}
#endif
#ifdef ERROR_PRINTQ_FULL
if (sym == @symbol(ERROR_PRINTQ_FULL)) {
- RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_PRINTQ_FULL)));
+ RETURN ( __mkSmallInteger(__WIN32_ERR(ERROR_PRINTQ_FULL)));
}
#endif
@@ -2988,229 +2987,229 @@
*/
#ifdef EPERM
if (sym == @symbol(EPERM)) {
- RETURN ( __mkSmallInteger(EPERM) );
+ RETURN ( __mkSmallInteger(EPERM) );
}
#endif
#ifdef ENOENT
if (sym == @symbol(ENOENT)) {
- RETURN ( __mkSmallInteger(ENOENT) );
+ RETURN ( __mkSmallInteger(ENOENT) );
}
#endif
#ifdef ESRCH
if (sym == @symbol(ESRCH)) {
- RETURN ( __mkSmallInteger(ESRCH) );
+ RETURN ( __mkSmallInteger(ESRCH) );
}
#endif
#ifdef EINTR
if (sym == @symbol(EINTR)) {
- RETURN ( __mkSmallInteger(EINTR) );
+ RETURN ( __mkSmallInteger(EINTR) );
}
#endif
#ifdef EIO
if (sym == @symbol(EIO)) {
- RETURN ( __mkSmallInteger(EIO) );
+ RETURN ( __mkSmallInteger(EIO) );
}
#endif
#ifdef ENXIO
if (sym == @symbol(ENXIO)) {
- RETURN ( __mkSmallInteger(ENXIO) );
+ RETURN ( __mkSmallInteger(ENXIO) );
}
#endif
#ifdef E2BIG
if (sym == @symbol(E2BIG)) {
- RETURN ( __mkSmallInteger(E2BIG) );
+ RETURN ( __mkSmallInteger(E2BIG) );
}
#endif
#ifdef ENOEXEC
if (sym == @symbol(ENOEXEC)) {
- RETURN ( __mkSmallInteger(ENOEXEC) );
+ RETURN ( __mkSmallInteger(ENOEXEC) );
}
#endif
#ifdef EBADF
if (sym == @symbol(EBADF)) {
- RETURN ( __mkSmallInteger(EBADF) );
+ RETURN ( __mkSmallInteger(EBADF) );
}
#endif
#ifdef ECHILD
if (sym == @symbol(ECHILD)) {
- RETURN ( __mkSmallInteger(ECHILD) );
+ RETURN ( __mkSmallInteger(ECHILD) );
}
#endif
#if defined(EAGAIN)
if (sym == @symbol(EAGAIN)) {
- RETURN ( __mkSmallInteger(EAGAIN) );
+ RETURN ( __mkSmallInteger(EAGAIN) );
}
#endif
#ifdef ENOMEM
if (sym == @symbol(ENOMEM)) {
- RETURN ( __mkSmallInteger(ENOMEM) );
+ RETURN ( __mkSmallInteger(ENOMEM) );
}
#endif
#ifdef EACCES
if (sym == @symbol(EACCES)) {
- RETURN ( __mkSmallInteger(EACCES) );
+ RETURN ( __mkSmallInteger(EACCES) );
}
#endif
#ifdef EFAULT
if (sym == @symbol(EFAULT)) {
- RETURN ( __mkSmallInteger(EFAULT) );
+ RETURN ( __mkSmallInteger(EFAULT) );
}
#endif
#ifdef EBUSY
if (sym == @symbol(EBUSY)) {
- RETURN ( __mkSmallInteger(EBUSY) );
+ RETURN ( __mkSmallInteger(EBUSY) );
}
#endif
#ifdef EXDEV
if (sym == @symbol(EXDEV)) {
- RETURN ( __mkSmallInteger(EXDEV) );
+ RETURN ( __mkSmallInteger(EXDEV) );
}
#endif
#ifdef ENODEV
if (sym == @symbol(ENODEV)) {
- RETURN ( __mkSmallInteger(ENODEV) );
+ RETURN ( __mkSmallInteger(ENODEV) );
}
#endif
#ifdef ENOTDIR
if (sym == @symbol(ENOTDIR)) {
- RETURN ( __mkSmallInteger(ENOTDIR) );
+ RETURN ( __mkSmallInteger(ENOTDIR) );
}
#endif
#ifdef EISDIR
if (sym == @symbol(EISDIR)) {
- RETURN ( __mkSmallInteger(EISDIR) );
+ RETURN ( __mkSmallInteger(EISDIR) );
}
#endif
#ifdef EINVAL
if (sym == @symbol(EINVAL)) {
- RETURN ( __mkSmallInteger(EINVAL) );
+ RETURN ( __mkSmallInteger(EINVAL) );
}
#endif
#ifdef ENFILE
if (sym == @symbol(ENFILE)) {
- RETURN ( __mkSmallInteger(ENFILE) );
+ RETURN ( __mkSmallInteger(ENFILE) );
}
#endif
#ifdef EMFILE
if (sym == @symbol(EMFILE)) {
- RETURN ( __mkSmallInteger(EMFILE) );
+ RETURN ( __mkSmallInteger(EMFILE) );
}
#endif
#ifdef ENOTTY
if (sym == @symbol(ENOTTY)) {
- RETURN ( __mkSmallInteger(ENOTTY) );
+ RETURN ( __mkSmallInteger(ENOTTY) );
}
#endif
#ifdef EFBIG
if (sym == @symbol(EFBIG)) {
- RETURN ( __mkSmallInteger(EFBIG) );
+ RETURN ( __mkSmallInteger(EFBIG) );
}
#endif
#ifdef ENOSPC
if (sym == @symbol(ENOSPC)) {
- RETURN ( __mkSmallInteger(ENOSPC) );
+ RETURN ( __mkSmallInteger(ENOSPC) );
}
#endif
#ifdef ESPIPE
if (sym == @symbol(ESPIPE)) {
- RETURN ( __mkSmallInteger(ESPIPE) );
+ RETURN ( __mkSmallInteger(ESPIPE) );
}
#endif
#ifdef EROFS
if (sym == @symbol(EROFS)) {
- RETURN ( __mkSmallInteger(EROFS) );
+ RETURN ( __mkSmallInteger(EROFS) );
}
#endif
#ifdef EMLINK
if (sym == @symbol(EMLINK)) {
- RETURN ( __mkSmallInteger(EMLINK) );
+ RETURN ( __mkSmallInteger(EMLINK) );
}
#endif
#ifdef EPIPE
if (sym == @symbol(EPIPE)) {
- RETURN ( __mkSmallInteger(EPIPE) );
+ RETURN ( __mkSmallInteger(EPIPE) );
}
#endif
#ifdef EDOM
if (sym == @symbol(EDOM)) {
- RETURN ( __mkSmallInteger(EDOM) );
+ RETURN ( __mkSmallInteger(EDOM) );
}
#endif
#ifdef ERANGE
if (sym == @symbol(ERANGE)) {
- RETURN ( __mkSmallInteger(ERANGE) );
+ RETURN ( __mkSmallInteger(ERANGE) );
}
#endif
#ifdef EDEADLK
if (sym == @symbol(EDEADLK)) {
- RETURN ( __mkSmallInteger(EDEADLK) );
+ RETURN ( __mkSmallInteger(EDEADLK) );
}
#endif
#ifdef ENAMETOOLONG
if (sym == @symbol(ENAMETOOLONG)) {
- RETURN ( __mkSmallInteger(ENAMETOOLONG) );
+ RETURN ( __mkSmallInteger(ENAMETOOLONG) );
}
#endif
#ifdef ENOLCK
if (sym == @symbol(ENOLCK)) {
- RETURN ( __mkSmallInteger(ENOLCK) );
+ RETURN ( __mkSmallInteger(ENOLCK) );
}
#endif
#ifdef ENOSYS
if (sym == @symbol(ENOSYS)) {
- RETURN ( __mkSmallInteger(ENOSYS) );
+ RETURN ( __mkSmallInteger(ENOSYS) );
}
#endif
#ifdef ENOTEMPTY
if (sym == @symbol(ENOTEMPTY)) {
- RETURN ( __mkSmallInteger(ENOTEMPTY) );
+ RETURN ( __mkSmallInteger(ENOTEMPTY) );
}
#endif
#ifdef EEXIST
if (sym == @symbol(EEXIST)) {
- RETURN ( __mkSmallInteger(EEXIST) );
+ RETURN ( __mkSmallInteger(EEXIST) );
}
#endif
#ifdef EILSEQ
if (sym == @symbol(EILSEQ)) {
- RETURN ( __mkSmallInteger(EILSEQ) );
+ RETURN ( __mkSmallInteger(EILSEQ) );
}
#endif
@@ -3219,13 +3218,13 @@
*/
#ifdef ENOTBLK
if (sym == @symbol(ENOTBLK)) {
- RETURN ( __mkSmallInteger(ENOTBLK) );
+ RETURN ( __mkSmallInteger(ENOTBLK) );
}
#endif
#ifdef ETXTBSY
if (sym == @symbol(ETXTBSY)) {
- RETURN ( __mkSmallInteger(ETXTBSY) );
+ RETURN ( __mkSmallInteger(ETXTBSY) );
}
#endif
@@ -3234,19 +3233,19 @@
*/
#ifdef EWOULDBLOCK
if (sym == @symbol(EWOULDBLOCK)) {
- RETURN ( __mkSmallInteger(EWOULDBLOCK) );
+ RETURN ( __mkSmallInteger(EWOULDBLOCK) );
}
#endif
#ifdef ENOMSG
if (sym == @symbol(ENOMSG)) {
- RETURN ( __mkSmallInteger(ENOMSG) );
+ RETURN ( __mkSmallInteger(ENOMSG) );
}
#endif
#ifdef ELOOP
if (sym == @symbol(ELOOP)) {
- RETURN ( __mkSmallInteger(ELOOP) );
+ RETURN ( __mkSmallInteger(ELOOP) );
}
#endif
@@ -3255,31 +3254,31 @@
*/
#ifdef ETIME
if (sym == @symbol(ETIME)) {
- RETURN ( __mkSmallInteger(ETIME) );
+ RETURN ( __mkSmallInteger(ETIME) );
}
#endif
#ifdef ENOSR
if (sym == @symbol(ENOSR)) {
- RETURN ( __mkSmallInteger(ENOSR) );
+ RETURN ( __mkSmallInteger(ENOSR) );
}
#endif
#ifdef ENOSTR
if (sym == @symbol(ENOSTR)) {
- RETURN ( __mkSmallInteger(ENOSTR) );
+ RETURN ( __mkSmallInteger(ENOSTR) );
}
#endif
#ifdef ECOMM
if (sym == @symbol(ECOMM)) {
- RETURN ( __mkSmallInteger(ECOMM) );
+ RETURN ( __mkSmallInteger(ECOMM) );
}
#endif
#ifdef EPROTO
if (sym == @symbol(EPROTO)) {
- RETURN ( __mkSmallInteger(EPROTO) );
+ RETURN ( __mkSmallInteger(EPROTO) );
}
#endif
@@ -3288,13 +3287,13 @@
*/
#ifdef ESTALE
if (sym == @symbol(ESTALE)) {
- RETURN ( __mkSmallInteger(ESTALE) );
+ RETURN ( __mkSmallInteger(ESTALE) );
}
#endif
#ifdef EREMOTE
if (sym == @symbol(EREMOTE)) {
- RETURN ( __mkSmallInteger(EREMOTE) );
+ RETURN ( __mkSmallInteger(EREMOTE) );
}
#endif
@@ -3303,162 +3302,162 @@
*/
#ifdef EINPROGRESS
if (sym == @symbol(EINPROGRESS)) {
- RETURN ( __mkSmallInteger(EINPROGRESS) );
+ RETURN ( __mkSmallInteger(EINPROGRESS) );
}
#endif
#ifdef EALREADY
if (sym == @symbol(EALREADY)) {
- RETURN ( __mkSmallInteger(EALREADY) );
+ RETURN ( __mkSmallInteger(EALREADY) );
}
#endif
#ifdef ENOTSOCK
if (sym == @symbol(ENOTSOCK)) {
- RETURN ( __mkSmallInteger(ENOTSOCK) );
+ RETURN ( __mkSmallInteger(ENOTSOCK) );
}
#endif
#ifdef EDESTADDRREQ
if (sym == @symbol(EDESTADDRREQ)) {
- RETURN ( __mkSmallInteger(EDESTADDRREQ) );
+ RETURN ( __mkSmallInteger(EDESTADDRREQ) );
}
#endif
#ifdef EMSGSIZE
if (sym == @symbol(EMSGSIZE)) {
- RETURN ( __mkSmallInteger(EMSGSIZE) );
+ RETURN ( __mkSmallInteger(EMSGSIZE) );
}
#endif
#ifdef EPROTOTYPE
if (sym == @symbol(EPROTOTYPE)) {
- RETURN ( __mkSmallInteger(EPROTOTYPE) );
+ RETURN ( __mkSmallInteger(EPROTOTYPE) );
}
#endif
#ifdef ENOPROTOOPT
if (sym == @symbol(ENOPROTOOPT)) {
- RETURN ( __mkSmallInteger(ENOPROTOOPT) );
+ RETURN ( __mkSmallInteger(ENOPROTOOPT) );
}
#endif
#ifdef EPROTONOSUPPORT
if (sym == @symbol(EPROTONOSUPPORT)) {
- RETURN ( __mkSmallInteger(EPROTONOSUPPORT) );
+ RETURN ( __mkSmallInteger(EPROTONOSUPPORT) );
}
#endif
#ifdef ESOCKTNOSUPPORT
if (sym == @symbol(ESOCKTNOSUPPORT)) {
- RETURN ( __mkSmallInteger(ESOCKTNOSUPPORT) );
+ RETURN ( __mkSmallInteger(ESOCKTNOSUPPORT) );
}
#endif
#ifdef EOPNOTSUPP
if (sym == @symbol(EOPNOTSUPP)) {
- RETURN ( __mkSmallInteger(EOPNOTSUPP) );
+ RETURN ( __mkSmallInteger(EOPNOTSUPP) );
}
#endif
#ifdef EPFNOSUPPORT
if (sym == @symbol(EPFNOSUPPORT)) {
- RETURN ( __mkSmallInteger(EPFNOSUPPORT) );
+ RETURN ( __mkSmallInteger(EPFNOSUPPORT) );
}
#endif
#ifdef EAFNOSUPPORT
if (sym == @symbol(EAFNOSUPPORT)) {
- RETURN ( __mkSmallInteger(EAFNOSUPPORT) );
+ RETURN ( __mkSmallInteger(EAFNOSUPPORT) );
}
#endif
#ifdef EADDRINUSE
if (sym == @symbol(EADDRINUSE)) {
- RETURN ( __mkSmallInteger(EADDRINUSE) );
+ RETURN ( __mkSmallInteger(EADDRINUSE) );
}
#endif
#ifdef EADDRNOTAVAIL
if (sym == @symbol(EADDRNOTAVAIL)) {
- RETURN ( __mkSmallInteger(EADDRNOTAVAIL) );
+ RETURN ( __mkSmallInteger(EADDRNOTAVAIL) );
}
#endif
#ifdef ETIMEDOUT
if (sym == @symbol(ETIMEDOUT)) {
- RETURN ( __mkSmallInteger(ETIMEDOUT) );
+ RETURN ( __mkSmallInteger(ETIMEDOUT) );
}
#endif
#ifdef WSAETIMEDOUT
if (sym == @symbol(ETIMEDOUT)) {
- RETURN ( __mkSmallInteger(WSAETIMEDOUT) );
+ RETURN ( __mkSmallInteger(WSAETIMEDOUT) );
}
#endif
#ifdef ECONNREFUSED
if (sym == @symbol(ECONNREFUSED)) {
- RETURN ( __mkSmallInteger(ECONNREFUSED) );
+ RETURN ( __mkSmallInteger(ECONNREFUSED) );
}
#endif
#ifdef ENETDOWN
if (sym == @symbol(ENETDOWN)) {
- RETURN ( __mkSmallInteger(ENETDOWN) );
+ RETURN ( __mkSmallInteger(ENETDOWN) );
}
#endif
#ifdef ENETUNREACH
if (sym == @symbol(ENETUNREACH)) {
- RETURN ( __mkSmallInteger(ENETUNREACH) );
+ RETURN ( __mkSmallInteger(ENETUNREACH) );
}
#endif
#ifdef ENETRESET
if (sym == @symbol(ENETRESET)) {
- RETURN ( __mkSmallInteger(ENETRESET) );
+ RETURN ( __mkSmallInteger(ENETRESET) );
}
#endif
#ifdef ECONNABORTED
if (sym == @symbol(ECONNABORTED)) {
- RETURN ( __mkSmallInteger(ECONNABORTED) );
+ RETURN ( __mkSmallInteger(ECONNABORTED) );
}
#endif
#ifdef ECONNRESET
if (sym == @symbol(ECONNRESET)) {
- RETURN ( __mkSmallInteger(ECONNRESET) );
+ RETURN ( __mkSmallInteger(ECONNRESET) );
}
#endif
#ifdef EISCONN
if (sym == @symbol(EISCONN)) {
- RETURN ( __mkSmallInteger(EISCONN) );
+ RETURN ( __mkSmallInteger(EISCONN) );
}
#endif
#ifdef ENOTCONN
if (sym == @symbol(ENOTCONN)) {
- RETURN ( __mkSmallInteger(ENOTCONN) );
+ RETURN ( __mkSmallInteger(ENOTCONN) );
}
#endif
#ifdef ESHUTDOWN
if (sym == @symbol(ESHUTDOWN)) {
- RETURN ( __mkSmallInteger(ESHUTDOWN) );
+ RETURN ( __mkSmallInteger(ESHUTDOWN) );
}
#endif
#ifdef EHOSTDOWN
if (sym == @symbol(EHOSTDOWN)) {
- RETURN ( __mkSmallInteger(EHOSTDOWN) );
+ RETURN ( __mkSmallInteger(EHOSTDOWN) );
}
#endif
#ifdef EHOSTUNREACH
if (sym == @symbol(EHOSTUNREACH)) {
- RETURN ( __mkSmallInteger(EHOSTUNREACH) );
+ RETURN ( __mkSmallInteger(EHOSTUNREACH) );
}
#endif
/*
@@ -3466,92 +3465,92 @@
*/
#ifdef WSAEINTR
if (sym == @symbol(WSAEINTR)) {
- RETURN ( __mkSmallInteger(WSAEINTR) );
+ RETURN ( __mkSmallInteger(WSAEINTR) );
}
#endif
#ifdef WSAEBADF
if (sym == @symbol(WSAEBADF)) {
- RETURN ( __mkSmallInteger(WSAEBADF) );
+ RETURN ( __mkSmallInteger(WSAEBADF) );
}
#endif
#ifdef WSAEACCESS
if (sym == @symbol(WSAEACCESS)) {
- RETURN ( __mkSmallInteger(WSAEACCESS) );
+ RETURN ( __mkSmallInteger(WSAEACCESS) );
}
#endif
#ifdef WSAEFAULT
if (sym == @symbol(WSAEFAULT)) {
- RETURN ( __mkSmallInteger(WSAEFAULT) );
+ RETURN ( __mkSmallInteger(WSAEFAULT) );
}
#endif
#ifdef WSAEINVAL
if (sym == @symbol(WSAEINVAL)) {
- RETURN ( __mkSmallInteger(WSAEINVAL) );
+ RETURN ( __mkSmallInteger(WSAEINVAL) );
}
#endif
#ifdef WSAEMFILE
if (sym == @symbol(WSAEMFILE)) {
- RETURN ( __mkSmallInteger(WSAEMFILE) );
+ RETURN ( __mkSmallInteger(WSAEMFILE) );
}
#endif
#ifdef WSAEWOULDBLOCK
if (sym == @symbol(WSAEWOULDBLOCK)) {
- RETURN ( __mkSmallInteger(WSAEWOULDBLOCK) );
+ RETURN ( __mkSmallInteger(WSAEWOULDBLOCK) );
}
#endif
#ifdef WSAEINPROGRESS
if (sym == @symbol(WSAEINPROGRESS)) {
- RETURN ( __mkSmallInteger(WSAEINPROGRESS) );
+ RETURN ( __mkSmallInteger(WSAEINPROGRESS) );
}
#endif
#ifdef WSAEALREADY
if (sym == @symbol(WSAEALREADY)) {
- RETURN ( __mkSmallInteger(WSAEALREADY) );
+ RETURN ( __mkSmallInteger(WSAEALREADY) );
}
#endif
#ifdef WSAENOTSOCK
if (sym == @symbol(WSAENOTSOCK)) {
- RETURN ( __mkSmallInteger(WSAENOTSOCK) );
+ RETURN ( __mkSmallInteger(WSAENOTSOCK) );
}
#endif
#ifdef WSAEPROTONOSUPPORT
if (sym == @symbol(WSAEPROTONOSUPPORT)) {
- RETURN ( __mkSmallInteger(WSAEPROTONOSUPPORT) );
+ RETURN ( __mkSmallInteger(WSAEPROTONOSUPPORT) );
}
#endif
#ifdef WSAESOCKTNOSUPPORT
if (sym == @symbol(WSAESOCKTNOSUPPORT)) {
- RETURN ( __mkSmallInteger(WSAESOCKTNOSUPPORT) );
+ RETURN ( __mkSmallInteger(WSAESOCKTNOSUPPORT) );
}
#endif
#ifdef E_NOINTERFACE
if (sym == @symbol(E_NOINTERFACE)) {
- RETURN ( __MKUINT(E_NOINTERFACE) );
+ RETURN ( __MKUINT(E_NOINTERFACE) );
}
#endif
#ifdef CO_E_NOTINITIALIZED
if (sym == @symbol(CO_E_NOTINITIALIZED)) {
- RETURN ( __MKUINT(CO_E_NOTINITIALIZED) );
+ RETURN ( __MKUINT(CO_E_NOTINITIALIZED) );
}
#endif
#ifdef REGDB_E_CLASSNOTREG
if (sym == @symbol(REGDB_E_CLASSNOTREG)) {
- RETURN ( __MKUINT(REGDB_E_CLASSNOTREG) );
+ RETURN ( __MKUINT(REGDB_E_CLASSNOTREG) );
}
#endif
#ifdef CLASS_E_NOAGGREGATION
if (sym == @symbol(CLASS_E_NOAGGREGATION)) {
- RETURN ( __MKUINT(CLASS_E_NOAGGREGATION) );
+ RETURN ( __MKUINT(CLASS_E_NOAGGREGATION) );
}
#endif
#ifdef DISP_E_UNKNOWNNAME
if (sym == @symbol(DISP_E_UNKNOWNNAME)) {
- RETURN ( __MKUINT(DISP_E_UNKNOWNNAME) );
+ RETURN ( __MKUINT(DISP_E_UNKNOWNNAME) );
}
#endif
#ifdef OLEOBJ_E_NOVERBS
if (sym == @symbol(OLEOBJ_E_NOVERBS)) {
- RETURN ( __MKUINT(OLEOBJ_E_NOVERBS) );
+ RETURN ( __MKUINT(OLEOBJ_E_NOVERBS) );
}
#endif
@@ -3598,8 +3597,8 @@
|shell args wDir cmdName path|
aCommandString isNonByteCollection ifTrue:[
- "easy: the caller does not want a shell to be executed"
- ^ Array with:aCommandString first with:(aCommandString asStringWith:' ') with:nil.
+ "easy: the caller does not want a shell to be executed"
+ ^ Array with:aCommandString first with:(aCommandString asStringWith:' ') with:nil.
].
"/
@@ -3625,52 +3624,52 @@
cmdName := (aCommandString ? '') withoutSeparators.
(cmdName isEmpty or:[cmdName includesAny:'<>|']) ifFalse:[
- "/ test whether the command is a plain executable;
- "/ if so, no shell is required
- |index file suffix|
-
- index := cmdName indexOfSeparatorStartingAt:1.
- index ~~ 0 ifTrue:[
- cmdName := cmdName copyFrom:1 to:(index-1).
- args := cmdName copyFrom:(index+1).
- ] ifFalse:[
- args := ''.
- ].
-
- (cmdName first = $" and:[cmdName last = $"]) ifTrue:[
- cmdName := (cmdName copyFrom:2 to:cmdName size - 1) withoutSeparators.
- ].
- file := cmdName asFilename.
- file suffix isEmpty ifTrue:[
- file := file withSuffix:'exe'.
- ].
- path := file fullAlternativePathName.
- (OperatingSystem getBinaryType:path) notNil ifTrue:[
- "/ is an executable, no shell required
- ^ Array with:path with:aCommandString with:nil.
+ "/ test whether the command is a plain executable;
+ "/ if so, no shell is required
+ |index file suffix|
+
+ index := cmdName indexOfSeparatorStartingAt:1.
+ index ~~ 0 ifTrue:[
+ cmdName := cmdName copyFrom:1 to:(index-1).
+ args := cmdName copyFrom:(index+1).
+ ] ifFalse:[
+ args := ''.
+ ].
+
+ (cmdName first = $" and:[cmdName last = $"]) ifTrue:[
+ cmdName := (cmdName copyFrom:2 to:cmdName size - 1) withoutSeparators.
+ ].
+ file := cmdName asFilename.
+ file suffix isEmpty ifTrue:[
+ file := file withSuffix:'exe'.
+ ].
+ path := file fullAlternativePathName.
+ (OperatingSystem getBinaryType:path) notNil ifTrue:[
+ "/ is an executable, no shell required
+ ^ Array with:path with:aCommandString with:nil.
"/ ^ Array with:path with:(path, ' ', args).
- ].
- path := self pathOfCommand:cmdName.
- (path notNil and:[(OperatingSystem getBinaryType:path) notNil]) ifTrue:[
- "/ is an executable, no shell required
- ^ Array with:path with:aCommandString with:nil.
+ ].
+ path := self pathOfCommand:cmdName.
+ (path notNil and:[(OperatingSystem getBinaryType:path) notNil]) ifTrue:[
+ "/ is an executable, no shell required
+ ^ Array with:path with:aCommandString with:nil.
"/ ^ Array with:path with:(path, ' ', args).
- ].
+ ].
].
shell := self getEnvironment:'COMSPEC'.
shell isNil ifTrue:[
- wDir := self getWindowsSystemDirectory asFilename.
- shell := #('cmd.exe' 'command.com') detect:[:eachCommand|
- (wDir / eachCommand) isExecutableProgram
- ] ifNone:[
- self error:'no cmd.exe available'.
- ].
- shell := (wDir / shell) pathName.
+ wDir := self getWindowsSystemDirectory asFilename.
+ shell := #('cmd.exe' 'command.com') detect:[:eachCommand|
+ (wDir / eachCommand) isExecutableProgram
+ ] ifNone:[
+ self error:'no cmd.exe available'.
+ ].
+ shell := (wDir / shell) pathName.
].
cmdName isEmpty ifTrue:[
- ^ Array with:shell with:nil with:nil.
+ ^ Array with:shell with:nil with:nil.
].
^ Array with:shell with:(' /c "' , aCommandString, '"') with:false.
@@ -3741,6 +3740,7 @@
rslt := self
primExec:aCommandPath
commandLine:argString
+ environment:environment
fileDescriptors:fdArray
fork:doFork
newPgrp:newPgrp
@@ -3766,32 +3766,32 @@
INT status = -1;
if (__isExternalAddressLike(aProcessId)) {
- HANDLE handle = _HANDLEVal(aProcessId);
- if (handle) {
+ HANDLE handle = _HANDLEVal(aProcessId);
+ if (handle) {
#ifdef DO_WRAP_CALLS
- do {
- __threadErrno = 0;
- endStatus = (INT)STX_API_CALL2( "WaitForSingleObject", WaitForSingleObject, handle, INFINITE);
- } while ((endStatus < 0) && (__threadErrno == EINTR));
-#else
- endStatus = (INT)WaitForSingleObject(handle , INFINITE);
-#endif
- if (endStatus != WAIT_FAILED) {
- if (GetExitCodeProcess(handle,&endStatus)) {
- status = endStatus;
+ do {
+ __threadErrno = 0;
+ endStatus = (INT)STX_API_CALL2( "WaitForSingleObject", WaitForSingleObject, handle, INFINITE);
+ } while ((endStatus < 0) && (__threadErrno == EINTR));
+#else
+ endStatus = (INT)WaitForSingleObject(handle , INFINITE);
+#endif
+ if (endStatus != WAIT_FAILED) {
+ if (GetExitCodeProcess(handle,&endStatus)) {
+ status = endStatus;
#ifdef PROCESSDEBUGWIN32
- if (flag_PROCESSDEBUGWIN32) {
- console_fprintf(stderr, "getexitcode status = %d\n",status);
- }
- } else {
- if (flag_PROCESSDEBUGWIN32) {
- console_fprintf(stderr, "getexitcode failed.\n");
- }
-#endif
- }
- }
- }
- RETURN ( __mkSmallInteger(status));
+ if (flag_PROCESSDEBUGWIN32) {
+ console_fprintf(stderr, "getexitcode status = %d\n",status);
+ }
+ } else {
+ if (flag_PROCESSDEBUGWIN32) {
+ console_fprintf(stderr, "getexitcode failed.\n");
+ }
+#endif
+ }
+ }
+ }
+ RETURN ( __mkSmallInteger(status));
}
%}.
self primitiveFailed
@@ -3806,9 +3806,9 @@
cmdFile := aCommand asFilename.
cmdFile isAbsolute ifTrue:[
- cmdFile isExecutableProgram ifTrue:[
- ^ aCommand
- ].
+ cmdFile isExecutableProgram ifTrue:[
+ ^ aCommand
+ ].
cmdFile suffix isEmpty ifTrue:[
((path := cmdFile withSuffix: 'com') exists
or:[ (path := cmdFile withSuffix: 'exe') exists
@@ -3818,51 +3818,51 @@
].
].
].
- ^ nil
+ ^ nil
].
(aCommand includes:Filename separator) ifTrue:[
- path := Filename currentDirectory construct:aCommand.
- path isExecutableProgram ifTrue:[
- ^ path pathName.
- ].
- ^ nil
+ path := Filename currentDirectory construct:aCommand.
+ path isExecutableProgram ifTrue:[
+ ^ path pathName.
+ ].
+ ^ nil
].
"search in all directories of PATH.
If there no extension, add the known extensions."
path := (self getEnvironment:'PATH') ? ''.
(rentry := self registryEntry key: 'HKEY_CURRENT_USER\Environment') notNil ifTrue:[
- rpath := rentry valueNamed: 'PATH'.
- rpath notNil ifTrue:[
- path := path , self pathSeparator , rpath
- ].
+ rpath := rentry valueNamed: 'PATH'.
+ rpath notNil ifTrue:[
+ path := path , self pathSeparator , rpath
+ ].
].
path := '.;', path.
hasSuffix := cmdFile suffix notEmpty.
(path asCollectionOfSubstringsSeparatedBy:self pathSeparator) do:[:eachDirectory |
- |file|
-
- eachDirectory isEmpty ifTrue:[
- file := cmdFile
- ] ifFalse:[
- file := eachDirectory asFilename construct:aCommand.
- ].
- hasSuffix ifTrue:[
- file isExecutableProgram ifTrue:[
- ^ file pathName.
- ].
- ] ifFalse:[
- self executableFileExtensions do:[:ext |
- |fExt|
-
- fExt := file withSuffix:ext.
- fExt isExecutableProgram ifTrue:[
- ^ fExt pathName.
- ].
- ].
- ].
+ |file|
+
+ eachDirectory isEmpty ifTrue:[
+ file := cmdFile
+ ] ifFalse:[
+ file := eachDirectory asFilename construct:aCommand.
+ ].
+ hasSuffix ifTrue:[
+ file isExecutableProgram ifTrue:[
+ ^ file pathName.
+ ].
+ ] ifFalse:[
+ self executableFileExtensions do:[:ext |
+ |fExt|
+
+ fExt := file withSuffix:ext.
+ fExt isExecutableProgram ifTrue:[
+ ^ fExt pathName.
+ ].
+ ].
+ ].
].
^ nil
@@ -3881,18 +3881,19 @@
!
-primExec:commandPath commandLine:commandLine fileDescriptors:fdArray fork:doFork newPgrp:newPgrp
- inPath:dirName createFlags:flagsOrNil inheritHandles:inheritHandles
- showWindow:showWindowBooleanOrNil
+primExec:commandPath commandLine:commandLine environment:environmentOrNil
+ fileDescriptors:fdArray fork:doFork newPgrp:newPgrp
+ inPath:dirName createFlags:flagsOrNil inheritHandles:inheritHandles
+ showWindow:showWindowBooleanOrNil
"Internal lowLevel entry for combined fork & exec for WIN32
showWindowBooleanOrNil may be:
- true - a window is shown on start of the command
- false - the command window is hidden
- nil - the nCmdShown parameter of the commans's winmain function determins,
- if a window is shown.
- #default
- - same as nil
+ true - a window is shown on start of the command
+ false - the command window is hidden
+ nil - the nCmdShown parameter of the commans's winmain function determins,
+ if a window is shown.
+ #default
+ - same as nil
"
|handle commandPathUni16 commandLineUni16 dirNameUni16 envString16|
@@ -3904,31 +3905,31 @@
dirNameUni16 := dirName.
commandPathUni16 notNil ifTrue:[
- commandPathUni16 := commandPathUni16 asUnicode16String.
+ commandPathUni16 := commandPathUni16 asUnicode16String.
].
commandLineUni16 notNil ifTrue:[
- commandLineUni16 := commandLineUni16 asUnicode16String.
+ commandLineUni16 := commandLineUni16 asUnicode16String.
].
dirNameUni16 notNil ifTrue:[
- dirNameUni16 := dirNameUni16 asUnicode16String.
- ].
- environment notEmptyOrNil ifTrue:[
- |newEnv|
-
- "/ take my current environment; add the definitions given by the argument.
- newEnv := Dictionary new
- declareAllFrom:(OperatingSystem getEnvironment);
- declareAllFrom:environment;
- yourself.
-
- envString16 :=
- Unicode16String streamContents:[:s |
- newEnv keysAndValuesDo:[:k :v |
- s nextPutAll:k; nextPutAll:'='; nextPutAll:v.
- s nextPut:(Character value:0).
- ].
- s nextPut:(Character value:0).
- ].
+ dirNameUni16 := dirNameUni16 asUnicode16String.
+ ].
+ environmentOrNil notNil ifTrue:[
+ |newEnv|
+
+ "/ take my current environment; add the definitions given by the argument.
+ newEnv := Dictionary new
+ declareAllFrom:(OperatingSystem getEnvironment);
+ declareAllFrom:environmentOrNil;
+ yourself.
+
+ envString16 :=
+ Unicode16String streamContents:[:s |
+ newEnv keysSorted do:[:k |
+ s nextPutAll:k; nextPutAll:'='; nextPutAll:(newEnv at:k).
+ s nextPut:(Character value:0).
+ ].
+ s nextPut:(Character value:0).
+ ].
].
%{ /* STACK: 32000 */
@@ -3966,300 +3967,300 @@
SECURITY_DESCRIPTOR securityDescriptor;
if ((__isUnicode16String(commandPathUni16) || (commandPathUni16 == nil)) && __isUnicode16String(commandLineUni16)) {
- HANDLE stdinHandle = NULL;
- HANDLE stdoutHandle = NULL;
- HANDLE stderrHandle = NULL;
- int mustClose_stdinHandle = 0;
- int mustClose_stdoutHandle = 0;
- int mustClose_stderrHandle = 0;
-
- /*
- * terminate the multi byte strings
- */
- // #commandPathUni16
- if (commandPathUni16 != nil) {
- l = __unicode16StringSize(commandPathUni16);
- if (l >= 4096) { // >= need 1 space for terminator
+ HANDLE stdinHandle = NULL;
+ HANDLE stdoutHandle = NULL;
+ HANDLE stderrHandle = NULL;
+ int mustClose_stdinHandle = 0;
+ int mustClose_stdoutHandle = 0;
+ int mustClose_stderrHandle = 0;
+
+ /*
+ * terminate the multi byte strings
+ */
+ // #commandPathUni16
+ if (commandPathUni16 != nil) {
+ l = __unicode16StringSize(commandPathUni16);
+ if (l >= 4096) { // >= need 1 space for terminator
# ifdef PROCESSDEBUGWIN32
- if (flag_PROCESSDEBUGWIN32) {
- console_fprintf(stderr, "argument #commandPathUni16 is to long\n");
- }
-# endif
- RETURN(nil);
- }
- for (i = 0; i < l; i++) {
- cmdPathW[i] = __unicode16StringVal(commandPathUni16)[i];
- }
- cmdPathW[i] = 0; // set terminator
- cmdPathWP = &cmdPathW[0];
- }
-
- // commandLineUni16
- l = __unicode16StringSize(commandLineUni16);
- if (l >= 4096) { // >= need 1 space for terminator
+ if (flag_PROCESSDEBUGWIN32) {
+ console_fprintf(stderr, "argument #commandPathUni16 is to long\n");
+ }
+# endif
+ RETURN(nil);
+ }
+ for (i = 0; i < l; i++) {
+ cmdPathW[i] = __unicode16StringVal(commandPathUni16)[i];
+ }
+ cmdPathW[i] = 0; // set terminator
+ cmdPathWP = &cmdPathW[0];
+ }
+
+ // commandLineUni16
+ l = __unicode16StringSize(commandLineUni16);
+ if (l >= 4096) { // >= need 1 space for terminator
# ifdef PROCESSDEBUGWIN32
- if (flag_PROCESSDEBUGWIN32) {
- console_fprintf(stderr, "argument #commandLineUni16 is to long\n");
- }
-# endif
- RETURN(nil);
- }
- for (i = 0; i < l; i++) {
- cmdLineW[i] = __unicode16StringVal(commandLineUni16)[i];
- }
- cmdLineW[i] = 0; // set terminator
- cmdLineWP = &cmdLineW[0];
-
- // #dirNameUni16
- if (__isUnicode16String(dirNameUni16)) {
- l = __unicode16StringSize(dirNameUni16);
- if (l >= 4096) { // >= need 1 space for terminator
+ if (flag_PROCESSDEBUGWIN32) {
+ console_fprintf(stderr, "argument #commandLineUni16 is to long\n");
+ }
+# endif
+ RETURN(nil);
+ }
+ for (i = 0; i < l; i++) {
+ cmdLineW[i] = __unicode16StringVal(commandLineUni16)[i];
+ }
+ cmdLineW[i] = 0; // set terminator
+ cmdLineWP = &cmdLineW[0];
+
+ // #dirNameUni16
+ if (__isUnicode16String(dirNameUni16)) {
+ l = __unicode16StringSize(dirNameUni16);
+ if (l >= 4096) { // >= need 1 space for terminator
# ifdef PROCESSDEBUGWIN32
- if (flag_PROCESSDEBUGWIN32) {
- console_fprintf(stderr, "argument #dirNameUni16 is to long\n");
- }
-# endif
- RETURN(nil);
- }
- for (i = 0; i < l; i++) {
- dirNameW[i] = __unicode16StringVal(dirNameUni16)[i];
- }
- dirNameW[i] = 0; // set terminator
- dirNameWP = &dirNameW[0];
- }
-
- if (envString16 != nil) {
- envWP = __unicode16StringVal(envString16);
- }
-
- /*
- * create descriptors as req'd
- */
- memset(&securityAttributes, 0, sizeof(securityAttributes));
- securityAttributes.nLength = sizeof(securityAttributes);
- securityAttributes.bInheritHandle = (inheritHandles == true) ? TRUE : FALSE;
-
- InitializeSecurityDescriptor(&securityDescriptor, SECURITY_DESCRIPTOR_REVISION);
- SetSecurityDescriptorDacl(&securityDescriptor, -1, 0, 0);
-
- securityAttributes.lpSecurityDescriptor = &securityDescriptor;
-
- memset(&lpsiStartInfo, 0, sizeof(lpsiStartInfo));
- lpsiStartInfo.cb = sizeof(lpsiStartInfo);
- lpsiStartInfo.lpReserved = NULL;
- lpsiStartInfo.lpDesktop = NULL;
- lpsiStartInfo.lpTitle = NULL;
- lpsiStartInfo.dwX = 0;
- lpsiStartInfo.dwY = 0;
- lpsiStartInfo.dwXSize = 100;
- lpsiStartInfo.dwYSize = 100;
- lpsiStartInfo.dwXCountChars = 0;
- lpsiStartInfo.dwYCountChars = 0;
- lpsiStartInfo.dwFillAttribute = 0;
- lpsiStartInfo.dwFlags = STARTF_USESTDHANDLES /*| STARTF_USEPOSITION*/;
- if ((showWindowBooleanOrNil != nil) && (showWindowBooleanOrNil != @symbol(default))) {
- lpsiStartInfo.dwFlags |= STARTF_USESHOWWINDOW;
- lpsiStartInfo.wShowWindow = showWindowBooleanOrNil == true ? SW_SHOWNORMAL : SW_HIDE;
- }
- lpsiStartInfo.cbReserved2 = 0;
- lpsiStartInfo.lpReserved2 = NULL;
- lpsiStartInfo.hStdInput = NULL;
- lpsiStartInfo.hStdOutput = NULL;
- lpsiStartInfo.hStdError = NULL;
-
- /*
- * set create process flags
- * if the flags arg is nil, use common defaults;
- * if non-nil, it must be a positive integer containing the fdwCreate bits.
- */
- if (flagsOrNil != nil) {
- fdwCreate = __longIntVal(flagsOrNil);
- } else {
- fdwCreate = CREATE_NEW_CONSOLE; //|IDLE_PRIORITY_CLASS; // DETACHED_PROCESS; // NORMAL_PRIORITY_CLASS ;
- if (newPgrp == true) {
- fdwCreate |= CREATE_NEW_PROCESS_GROUP;
- }
- fdwCreate |= CREATE_DEFAULT_ERROR_MODE;
- }
-
- if (fdArray == nil) {
- stdinHandle = (HANDLE) _get_osfhandle (0);
- stdoutHandle = (HANDLE) _get_osfhandle (1);
- stderrHandle = (HANDLE) _get_osfhandle (2);
- } else if (__isArrayLike(fdArray) && (__arraySize(fdArray) >= 3)) {
- if (__ArrayInstPtr(fdArray)->a_element[0] != nil) {
- if (__isExternalAddressLike(__ArrayInstPtr(fdArray)->a_element[0])) {
- stdinHandle = _HANDLEVal(__ArrayInstPtr(fdArray)->a_element[0]);
- } else {
- stdinHandle = (HANDLE) _get_osfhandle (__intVal(__ArrayInstPtr(fdArray)->a_element[0]));
- }
- }
- if (__ArrayInstPtr(fdArray)->a_element[1] != nil) {
- if (__isExternalAddressLike(__ArrayInstPtr(fdArray)->a_element[1])) {
- stdoutHandle = _HANDLEVal(__ArrayInstPtr(fdArray)->a_element[1]);
- } else {
- stdoutHandle = (HANDLE) _get_osfhandle (__intVal(__ArrayInstPtr(fdArray)->a_element[1]));
- }
- }
- if (__ArrayInstPtr(fdArray)->a_element[2] != nil) {
- if (__isExternalAddressLike(__ArrayInstPtr(fdArray)->a_element[2])) {
- stderrHandle = _HANDLEVal(__ArrayInstPtr(fdArray)->a_element[2]);
- } else {
- stderrHandle = (HANDLE) _get_osfhandle (__intVal(__ArrayInstPtr(fdArray)->a_element[2]));
- }
- }
- } else {
- console_fprintf(stderr, "Win32OS [warning]: bad fd arg in createProcess\n");
- }
+ if (flag_PROCESSDEBUGWIN32) {
+ console_fprintf(stderr, "argument #dirNameUni16 is to long\n");
+ }
+# endif
+ RETURN(nil);
+ }
+ for (i = 0; i < l; i++) {
+ dirNameW[i] = __unicode16StringVal(dirNameUni16)[i];
+ }
+ dirNameW[i] = 0; // set terminator
+ dirNameWP = &dirNameW[0];
+ }
+
+ if (envString16 != nil) {
+ envWP = __unicode16StringVal(envString16);
+ }
+
+ /*
+ * create descriptors as req'd
+ */
+ memset(&securityAttributes, 0, sizeof(securityAttributes));
+ securityAttributes.nLength = sizeof(securityAttributes);
+ securityAttributes.bInheritHandle = (inheritHandles == true) ? TRUE : FALSE;
+
+ InitializeSecurityDescriptor(&securityDescriptor, SECURITY_DESCRIPTOR_REVISION);
+ SetSecurityDescriptorDacl(&securityDescriptor, -1, 0, 0);
+
+ securityAttributes.lpSecurityDescriptor = &securityDescriptor;
+
+ memset(&lpsiStartInfo, 0, sizeof(lpsiStartInfo));
+ lpsiStartInfo.cb = sizeof(lpsiStartInfo);
+ lpsiStartInfo.lpReserved = NULL;
+ lpsiStartInfo.lpDesktop = NULL;
+ lpsiStartInfo.lpTitle = NULL;
+ lpsiStartInfo.dwX = 0;
+ lpsiStartInfo.dwY = 0;
+ lpsiStartInfo.dwXSize = 100;
+ lpsiStartInfo.dwYSize = 100;
+ lpsiStartInfo.dwXCountChars = 0;
+ lpsiStartInfo.dwYCountChars = 0;
+ lpsiStartInfo.dwFillAttribute = 0;
+ lpsiStartInfo.dwFlags = STARTF_USESTDHANDLES /*| STARTF_USEPOSITION*/;
+ if ((showWindowBooleanOrNil != nil) && (showWindowBooleanOrNil != @symbol(default))) {
+ lpsiStartInfo.dwFlags |= STARTF_USESHOWWINDOW;
+ lpsiStartInfo.wShowWindow = showWindowBooleanOrNil == true ? SW_SHOWNORMAL : SW_HIDE;
+ }
+ lpsiStartInfo.cbReserved2 = 0;
+ lpsiStartInfo.lpReserved2 = NULL;
+ lpsiStartInfo.hStdInput = NULL;
+ lpsiStartInfo.hStdOutput = NULL;
+ lpsiStartInfo.hStdError = NULL;
+
+ /*
+ * set create process flags
+ * if the flags arg is nil, use common defaults;
+ * if non-nil, it must be a positive integer containing the fdwCreate bits.
+ */
+ if (flagsOrNil != nil) {
+ fdwCreate = __longIntVal(flagsOrNil);
+ } else {
+ fdwCreate = CREATE_NEW_CONSOLE; //|IDLE_PRIORITY_CLASS; // DETACHED_PROCESS; // NORMAL_PRIORITY_CLASS ;
+ if (newPgrp == true) {
+ fdwCreate |= CREATE_NEW_PROCESS_GROUP;
+ }
+ fdwCreate |= CREATE_DEFAULT_ERROR_MODE;
+ }
+
+ if (fdArray == nil) {
+ stdinHandle = (HANDLE) _get_osfhandle (0);
+ stdoutHandle = (HANDLE) _get_osfhandle (1);
+ stderrHandle = (HANDLE) _get_osfhandle (2);
+ } else if (__isArrayLike(fdArray) && (__arraySize(fdArray) >= 3)) {
+ if (__ArrayInstPtr(fdArray)->a_element[0] != nil) {
+ if (__isExternalAddressLike(__ArrayInstPtr(fdArray)->a_element[0])) {
+ stdinHandle = _HANDLEVal(__ArrayInstPtr(fdArray)->a_element[0]);
+ } else {
+ stdinHandle = (HANDLE) _get_osfhandle (__intVal(__ArrayInstPtr(fdArray)->a_element[0]));
+ }
+ }
+ if (__ArrayInstPtr(fdArray)->a_element[1] != nil) {
+ if (__isExternalAddressLike(__ArrayInstPtr(fdArray)->a_element[1])) {
+ stdoutHandle = _HANDLEVal(__ArrayInstPtr(fdArray)->a_element[1]);
+ } else {
+ stdoutHandle = (HANDLE) _get_osfhandle (__intVal(__ArrayInstPtr(fdArray)->a_element[1]));
+ }
+ }
+ if (__ArrayInstPtr(fdArray)->a_element[2] != nil) {
+ if (__isExternalAddressLike(__ArrayInstPtr(fdArray)->a_element[2])) {
+ stderrHandle = _HANDLEVal(__ArrayInstPtr(fdArray)->a_element[2]);
+ } else {
+ stderrHandle = (HANDLE) _get_osfhandle (__intVal(__ArrayInstPtr(fdArray)->a_element[2]));
+ }
+ }
+ } else {
+ console_fprintf(stderr, "Win32OS [warning]: bad fd arg in createProcess\n");
+ }
#if defined(PROCESSDEBUGWIN32)
- if (flag_PROCESSDEBUGWIN32) {
- console_fprintf(stderr, "stdin %x\n", stdinHandle);
- console_fprintf(stderr, "stdout %x\n", stdoutHandle);
- console_fprintf(stderr, "stderr %x\n", stderrHandle);
- }
-#endif
-
- {
- HANDLE childHandle;
- int sameHandle = (stdoutHandle == stderrHandle);
-
- // these MUST be inheritable!
- if (stdinHandle) {
+ if (flag_PROCESSDEBUGWIN32) {
+ console_fprintf(stderr, "stdin %x\n", stdinHandle);
+ console_fprintf(stderr, "stdout %x\n", stdoutHandle);
+ console_fprintf(stderr, "stderr %x\n", stderrHandle);
+ }
+#endif
+
+ {
+ HANDLE childHandle;
+ int sameHandle = (stdoutHandle == stderrHandle);
+
+ // these MUST be inheritable!
+ if (stdinHandle) {
#if 0
- if (SetHandleInformation(stdinHandle, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT)) {
- // good
- } else {
- console_fprintf(stderr, "Win32OS [warning]: SetHandleInformation failed in createProcess\n");
- }
-#else
- if (DuplicateHandle(GetCurrentProcess(), stdinHandle, GetCurrentProcess(),
- &childHandle, 0, TRUE, DUPLICATE_SAME_ACCESS)) {
- stdinHandle = childHandle;
- mustClose_stdinHandle = 1;
- } else {
- console_fprintf(stderr, "Win32OS [warning]: duplicateHandle failed in createProcess\n");
- }
-#endif
- }
- if (stdoutHandle) {
+ if (SetHandleInformation(stdinHandle, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT)) {
+ // good
+ } else {
+ console_fprintf(stderr, "Win32OS [warning]: SetHandleInformation failed in createProcess\n");
+ }
+#else
+ if (DuplicateHandle(GetCurrentProcess(), stdinHandle, GetCurrentProcess(),
+ &childHandle, 0, TRUE, DUPLICATE_SAME_ACCESS)) {
+ stdinHandle = childHandle;
+ mustClose_stdinHandle = 1;
+ } else {
+ console_fprintf(stderr, "Win32OS [warning]: duplicateHandle failed in createProcess\n");
+ }
+#endif
+ }
+ if (stdoutHandle) {
#if 0
- if (SetHandleInformation(stdoutHandle, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT)) {
- // good
- } else {
- console_fprintf(stderr, "Win32OS [warning]: SetHandleInformation failed in createProcess\n");
- }
-#else
- if (DuplicateHandle(GetCurrentProcess(), stdoutHandle, GetCurrentProcess(),
- &childHandle, 0, TRUE, DUPLICATE_SAME_ACCESS)) {
- stdoutHandle = childHandle;
- mustClose_stdoutHandle = 1;
- } else {
- console_fprintf(stderr, "Win32OS [warning]: duplicateHandle failed in createProcess\n");
- }
-#endif
- }
- if (stderrHandle) {
- if (sameHandle) {
- stderrHandle = stdoutHandle;
- } else {
+ if (SetHandleInformation(stdoutHandle, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT)) {
+ // good
+ } else {
+ console_fprintf(stderr, "Win32OS [warning]: SetHandleInformation failed in createProcess\n");
+ }
+#else
+ if (DuplicateHandle(GetCurrentProcess(), stdoutHandle, GetCurrentProcess(),
+ &childHandle, 0, TRUE, DUPLICATE_SAME_ACCESS)) {
+ stdoutHandle = childHandle;
+ mustClose_stdoutHandle = 1;
+ } else {
+ console_fprintf(stderr, "Win32OS [warning]: duplicateHandle failed in createProcess\n");
+ }
+#endif
+ }
+ if (stderrHandle) {
+ if (sameHandle) {
+ stderrHandle = stdoutHandle;
+ } else {
#if 0
- if (SetHandleInformation(stderrHandle, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT)) {
- // good
- } else {
- console_fprintf(stderr, "Win32OS [warning]: SetHandleInformation failed in createProcess\n");
- }
-#else
- if (DuplicateHandle(GetCurrentProcess(), stderrHandle, GetCurrentProcess(),
- &childHandle, 0, TRUE, DUPLICATE_SAME_ACCESS)) {
- stderrHandle = childHandle;
- mustClose_stderrHandle = 1;
- } else {
- console_fprintf(stderr, "Win32OS [warning]: duplicateHandle failed in createProcess\n");
- }
-#endif
- }
- }
- }
- lpsiStartInfo.hStdInput = stdinHandle;
- lpsiStartInfo.hStdOutput = stdoutHandle;
- lpsiStartInfo.hStdError = stderrHandle;
-
- if (doFork == true) {
+ if (SetHandleInformation(stderrHandle, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT)) {
+ // good
+ } else {
+ console_fprintf(stderr, "Win32OS [warning]: SetHandleInformation failed in createProcess\n");
+ }
+#else
+ if (DuplicateHandle(GetCurrentProcess(), stderrHandle, GetCurrentProcess(),
+ &childHandle, 0, TRUE, DUPLICATE_SAME_ACCESS)) {
+ stderrHandle = childHandle;
+ mustClose_stderrHandle = 1;
+ } else {
+ console_fprintf(stderr, "Win32OS [warning]: duplicateHandle failed in createProcess\n");
+ }
+#endif
+ }
+ }
+ }
+ lpsiStartInfo.hStdInput = stdinHandle;
+ lpsiStartInfo.hStdOutput = stdoutHandle;
+ lpsiStartInfo.hStdError = stderrHandle;
+
+ if (doFork == true) {
#ifdef PROCESSDEBUGWIN32
- if (flag_PROCESSDEBUGWIN32) {
- console_fprintf(stderr, "create process cmdPath:<%s> cmdLine:<%s> in <%s>\n", __stringVal(commandPath), __stringVal(commandLine), __stringVal(dirName));
- }
-#endif
- memset(&lppiProcInfo, 0, sizeof (lppiProcInfo));
-
- if (CreateProcessW( cmdPathWP,
- cmdLineWP,
- &securityAttributes, NULL /* &securityAttributes */,
- securityAttributes.bInheritHandle, /* inherit handles */
- fdwCreate | CREATE_SUSPENDED /* resume after setting affinity */
- | CREATE_UNICODE_ENVIRONMENT,
- envWP, /* env */
- dirNameWP,
- &lpsiStartInfo,
- &lppiProcInfo ))
- {
- DWORD_PTR processAffinityMask, systemAffinityMask;
-
- /*
- * Process was created suspended, now set the affinity mask
- * to any processor, and resume the processes main thread.
- * (librun/process.s limited the affinity to a single processor).
- */
- GetProcessAffinityMask(lppiProcInfo.hProcess, &processAffinityMask, &systemAffinityMask);
- SetProcessAffinityMask(lppiProcInfo.hProcess, systemAffinityMask);
- if ((fdwCreate & CREATE_SUSPENDED) == 0) {
- ResumeThread(lppiProcInfo.hThread);
- }
- CloseHandle(lppiProcInfo.hThread);
+ if (flag_PROCESSDEBUGWIN32) {
+ console_fprintf(stderr, "create process cmdPath:<%s> cmdLine:<%s> in <%s>\n", __stringVal(commandPath), __stringVal(commandLine), __stringVal(dirName));
+ }
+#endif
+ memset(&lppiProcInfo, 0, sizeof (lppiProcInfo));
+
+ if (CreateProcessW( cmdPathWP,
+ cmdLineWP,
+ &securityAttributes, NULL /* &securityAttributes */,
+ securityAttributes.bInheritHandle, /* inherit handles */
+ fdwCreate | CREATE_SUSPENDED /* resume after setting affinity */
+ | CREATE_UNICODE_ENVIRONMENT,
+ envWP, /* env */
+ dirNameWP,
+ &lpsiStartInfo,
+ &lppiProcInfo ))
+ {
+ DWORD_PTR processAffinityMask, systemAffinityMask;
+
+ /*
+ * Process was created suspended, now set the affinity mask
+ * to any processor, and resume the processes main thread.
+ * (librun/process.s limited the affinity to a single processor).
+ */
+ GetProcessAffinityMask(lppiProcInfo.hProcess, &processAffinityMask, &systemAffinityMask);
+ SetProcessAffinityMask(lppiProcInfo.hProcess, systemAffinityMask);
+ if ((fdwCreate & CREATE_SUSPENDED) == 0) {
+ ResumeThread(lppiProcInfo.hThread);
+ }
+ CloseHandle(lppiProcInfo.hThread);
#if 0
- // only works with real console handles
- {
- // change the child's stdIn (console) mode
- DWORD mode = 0;
-
- if (! GetConsoleMode(stdinHandle, &mode)) {
- console_fprintf(stderr, "Win32OS [warning]: GetConsoleMode failed in createProcess\n");
- }
- if (! SetConsoleMode(stdinHandle, mode & (~ENABLE_ECHO_INPUT))){
- console_fprintf(stderr, "Win32OS [warning]: SetConsoleMode failed in createProcess\n");
- }
- }
-#endif
- if (mustClose_stdinHandle) {
- CloseHandle(stdinHandle);
- }
- if (mustClose_stdoutHandle) {
- CloseHandle(stdoutHandle);
- }
- if (mustClose_stderrHandle) {
- CloseHandle(stderrHandle);
- }
+ // only works with real console handles
+ {
+ // change the child's stdIn (console) mode
+ DWORD mode = 0;
+
+ if (! GetConsoleMode(stdinHandle, &mode)) {
+ console_fprintf(stderr, "Win32OS [warning]: GetConsoleMode failed in createProcess\n");
+ }
+ if (! SetConsoleMode(stdinHandle, mode & (~ENABLE_ECHO_INPUT))){
+ console_fprintf(stderr, "Win32OS [warning]: SetConsoleMode failed in createProcess\n");
+ }
+ }
+#endif
+ if (mustClose_stdinHandle) {
+ CloseHandle(stdinHandle);
+ }
+ if (mustClose_stdoutHandle) {
+ CloseHandle(stdoutHandle);
+ }
+ if (mustClose_stderrHandle) {
+ CloseHandle(stderrHandle);
+ }
#ifdef PROCESSDEBUGWIN32
- if (flag_PROCESSDEBUGWIN32) {
- console_fprintf(stderr, "created process hProcess=%x pid=%d\n", lppiProcInfo.hProcess, lppiProcInfo.dwProcessId);
- }
-#endif
-
- __externalAddressVal(handle) = lppiProcInfo.hProcess;
- ((struct __Win32OperatingSystem__Win32ProcessHandle_struct *)(handle))->pid = __mkSmallInteger(lppiProcInfo.dwProcessId);
- RETURN (handle);
- }
+ if (flag_PROCESSDEBUGWIN32) {
+ console_fprintf(stderr, "created process hProcess=%x pid=%d\n", lppiProcInfo.hProcess, lppiProcInfo.dwProcessId);
+ }
+#endif
+
+ __externalAddressVal(handle) = lppiProcInfo.hProcess;
+ ((struct __Win32OperatingSystem__Win32ProcessHandle_struct *)(handle))->pid = __mkSmallInteger(lppiProcInfo.dwProcessId);
+ RETURN (handle);
+ }
#ifdef PROCESSDEBUGWIN32
- if (flag_PROCESSDEBUGWIN32) {
- console_fprintf(stderr, "created process error %d\n", GetLastError());
- }
-#endif
- RETURN (nil);
- } else {
- ; /* should never be called that way */
- }
+ if (flag_PROCESSDEBUGWIN32) {
+ console_fprintf(stderr, "created process error %d\n", GetLastError());
+ }
+#endif
+ RETURN (nil);
+ } else {
+ ; /* should never be called that way */
+ }
}
%}.
"
@@ -4270,7 +4271,19 @@
"
^ self primitiveFailed
- "Modified: / 15-11-2016 / 19:37:14 / cg"
+ "Created: / 15-11-2016 / 19:39:49 / cg"
+!
+
+primExec:commandPath commandLine:commandLine fileDescriptors:fdArray fork:doFork newPgrp:newPgrp
+ inPath:dirName createFlags:flagsOrNil inheritHandles:inheritHandles
+ showWindow:showWindowBooleanOrNil
+ "obsolete internal lowLevel entry for combined fork & exec for WIN32"
+
+ ^ self
+ primExec:commandPath commandLine:commandLine environment:nil
+ fileDescriptors:fdArray fork:doFork newPgrp:newPgrp
+ inPath:dirName createFlags:flagsOrNil inheritHandles:inheritHandles
+ showWindow:showWindowBooleanOrNil
!
shellExecute:hwndArg lpOperation:lpOperationArg lpFile:lpFileArg lpParameters:lpParametersArg lpDirectory:lpDirectoryArg nShowCmd:nShowCmd
@@ -4278,7 +4291,7 @@
If its a directory, an explorer window is opened (see example below).
Can be used to open a browser or viewer on html-files, pdf-files etc.
lpDirectory: the pathname string of the directory used for the command,
- or nil for the current directory."
+ or nil for the current directory."
|errorNumber handle|
@@ -4289,97 +4302,97 @@
shExecInfo.cbSize = sizeof(shExecInfo);
if (__isSmallInteger(nShowCmd)) {
- shExecInfo.nShow = __intVal(nShowCmd);
+ shExecInfo.nShow = __intVal(nShowCmd);
} else {
- if (nShowCmd == @symbol(SW_SHOW)) {
- shExecInfo.nShow = SW_SHOW;
- } else if (nShowCmd == @symbol(SW_SHOWNORMAL)) {
- shExecInfo.nShow = SW_SHOWNORMAL;
- } else if (nShowCmd == @symbol(SW_SHOWDEFAULT)) {
- shExecInfo.nShow = SW_SHOWDEFAULT;
- } else if (nShowCmd == @symbol(SW_SHOWMAXIMIZED)) {
- shExecInfo.nShow = SW_SHOWMAXIMIZED;
- } else if (nShowCmd == @symbol(SW_SHOWMINIMIZED)) {
- shExecInfo.nShow = SW_SHOWMINIMIZED;
- } else if (nShowCmd == @symbol(SW_SHOWMINNOACTIVE)) {
- shExecInfo.nShow = SW_SHOWMINNOACTIVE;
- } else if (nShowCmd == @symbol(SW_SHOWNA)) {
- shExecInfo.nShow = SW_SHOWNA;
- } else if (nShowCmd == @symbol(SW_SHOWNOACTIVATE)) {
- shExecInfo.nShow = SW_SHOWNOACTIVATE;
- } else if (nShowCmd == @symbol(SW_MAXIMIZE)) {
- shExecInfo.nShow = SW_MAXIMIZE;
- } else if (nShowCmd == @symbol(SW_RESTORE)) {
- shExecInfo.nShow = SW_RESTORE;
- } else {
- goto badArgument;
- }
+ if (nShowCmd == @symbol(SW_SHOW)) {
+ shExecInfo.nShow = SW_SHOW;
+ } else if (nShowCmd == @symbol(SW_SHOWNORMAL)) {
+ shExecInfo.nShow = SW_SHOWNORMAL;
+ } else if (nShowCmd == @symbol(SW_SHOWDEFAULT)) {
+ shExecInfo.nShow = SW_SHOWDEFAULT;
+ } else if (nShowCmd == @symbol(SW_SHOWMAXIMIZED)) {
+ shExecInfo.nShow = SW_SHOWMAXIMIZED;
+ } else if (nShowCmd == @symbol(SW_SHOWMINIMIZED)) {
+ shExecInfo.nShow = SW_SHOWMINIMIZED;
+ } else if (nShowCmd == @symbol(SW_SHOWMINNOACTIVE)) {
+ shExecInfo.nShow = SW_SHOWMINNOACTIVE;
+ } else if (nShowCmd == @symbol(SW_SHOWNA)) {
+ shExecInfo.nShow = SW_SHOWNA;
+ } else if (nShowCmd == @symbol(SW_SHOWNOACTIVATE)) {
+ shExecInfo.nShow = SW_SHOWNOACTIVATE;
+ } else if (nShowCmd == @symbol(SW_MAXIMIZE)) {
+ shExecInfo.nShow = SW_MAXIMIZE;
+ } else if (nShowCmd == @symbol(SW_RESTORE)) {
+ shExecInfo.nShow = SW_RESTORE;
+ } else {
+ goto badArgument;
+ }
}
if (((lpOperationArg == nil) || __isStringLike(lpOperationArg))
&& ((lpFileArg == nil) || __isStringLike(lpFileArg))
&& ((lpParametersArg == nil) || __isStringLike(lpParametersArg))
&& ((lpDirectoryArg == nil) || __isStringLike(lpDirectoryArg))
) {
- // hProcess member receives the process handle
- shExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
-
- shExecInfo.hwnd = 0;
- shExecInfo.lpVerb = (lpOperationArg != nil) ? __stringVal(lpOperationArg) : NULL;
- shExecInfo.lpFile = (lpFileArg != nil) ? __stringVal(lpFileArg) : NULL;
- shExecInfo.lpParameters = (lpParametersArg != nil) ? __stringVal(lpParametersArg) : NULL;
- shExecInfo.lpDirectory = (lpDirectoryArg != nil) ? __stringVal(lpDirectoryArg) : NULL;
- if (hwndArg != nil) {
- if (__isExternalAddressLike(hwndArg)) {
- shExecInfo.hwnd = _HANDLEVal(hwndArg);
- } else
- goto badArgument;
- }
- if (ShellExecuteEx(&shExecInfo)) {
- if (shExecInfo.hProcess) {
- DWORD_PTR processAffinityMask, systemAffinityMask;
- /*
- * Set the affinity mask
- * to any processor, and resume the processes main thread.
- * (librun/process.s limited the affinity to a single processor).
- */
- GetProcessAffinityMask(shExecInfo.hProcess, &processAffinityMask, &systemAffinityMask);
- SetProcessAffinityMask(shExecInfo.hProcess, systemAffinityMask);
-
- __externalAddressVal(handle) = shExecInfo.hProcess;
- RETURN (handle);
- } else {
- RETURN (nil); /* OK */
- }
- } else {
- /* error */
- errorNumber = __mkSmallInteger(__WIN32_ERR(GetLastError()));
- }
+ // hProcess member receives the process handle
+ shExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
+
+ shExecInfo.hwnd = 0;
+ shExecInfo.lpVerb = (lpOperationArg != nil) ? __stringVal(lpOperationArg) : NULL;
+ shExecInfo.lpFile = (lpFileArg != nil) ? __stringVal(lpFileArg) : NULL;
+ shExecInfo.lpParameters = (lpParametersArg != nil) ? __stringVal(lpParametersArg) : NULL;
+ shExecInfo.lpDirectory = (lpDirectoryArg != nil) ? __stringVal(lpDirectoryArg) : NULL;
+ if (hwndArg != nil) {
+ if (__isExternalAddressLike(hwndArg)) {
+ shExecInfo.hwnd = _HANDLEVal(hwndArg);
+ } else
+ goto badArgument;
+ }
+ if (ShellExecuteEx(&shExecInfo)) {
+ if (shExecInfo.hProcess) {
+ DWORD_PTR processAffinityMask, systemAffinityMask;
+ /*
+ * Set the affinity mask
+ * to any processor, and resume the processes main thread.
+ * (librun/process.s limited the affinity to a single processor).
+ */
+ GetProcessAffinityMask(shExecInfo.hProcess, &processAffinityMask, &systemAffinityMask);
+ SetProcessAffinityMask(shExecInfo.hProcess, systemAffinityMask);
+
+ __externalAddressVal(handle) = shExecInfo.hProcess;
+ RETURN (handle);
+ } else {
+ RETURN (nil); /* OK */
+ }
+ } else {
+ /* error */
+ errorNumber = __mkSmallInteger(__WIN32_ERR(GetLastError()));
+ }
}
badArgument: ;
%}.
errorNumber isNil ifTrue:[
- self primitiveFailed:'invalid argument(s)'.
+ self primitiveFailed:'invalid argument(s)'.
] ifFalse:[
- (OperatingSystem errorHolderForNumber:errorNumber)
- parameter:lpFileArg;
- reportError
+ (OperatingSystem errorHolderForNumber:errorNumber)
+ parameter:lpFileArg;
+ reportError
].
"
self
- shellExecute:nil
- lpOperation:'open'
- lpFile:(Filename currentDirectory pathName)
- lpParameters:nil
- lpDirectory:nil
- nShowCmd:#SW_SHOWNORMAL
+ shellExecute:nil
+ lpOperation:'open'
+ lpFile:(Filename currentDirectory pathName)
+ lpParameters:nil
+ lpDirectory:nil
+ nShowCmd:#SW_SHOWNORMAL
self
- shellExecute:nil
- lpOperation:'explore'
- lpFile:(Filename currentDirectory pathName)
- lpParameters:nil
- lpDirectory:nil
- nShowCmd:#SW_SHOWNORMAL
+ shellExecute:nil
+ lpOperation:'explore'
+ lpFile:(Filename currentDirectory pathName)
+ lpParameters:nil
+ lpDirectory:nil
+ nShowCmd:#SW_SHOWNORMAL
"
!
@@ -4525,12 +4538,12 @@
%{
if (__isSmallInteger(anIntegerOrHandle)) {
- close(__intVal(anIntegerOrHandle));
- RETURN(self);
+ close(__intVal(anIntegerOrHandle));
+ RETURN(self);
}
if (__isExternalAddressLike(anIntegerOrHandle)) {
if (!CloseHandle( _HANDLEVal(anIntegerOrHandle))) {
- console_fprintf( stderr, "Win32OS [warning]: Could not close handle : %x\n", _HANDLEVal(anIntegerOrHandle));
+ console_fprintf( stderr, "Win32OS [warning]: Could not close handle : %x\n", _HANDLEVal(anIntegerOrHandle));
}
RETURN(self);
}
@@ -4557,28 +4570,28 @@
sa.bInheritHandle = FALSE;
if (__isStringLike(aPathName)) {
- int ret;
-
- ret = CreateDirectoryA(__stringVal(aPathName), &sa);
- if (ret != TRUE) {
- __threadErrno = __WIN32_ERR(GetLastError());
- @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
- RETURN (false);
- }
- RETURN (true);
+ int ret;
+
+ ret = CreateDirectoryA(__stringVal(aPathName), &sa);
+ if (ret != TRUE) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
+ RETURN (false);
+ }
+ RETURN (true);
}
if (__isUnicode16String(aPathName)) {
- int ret;
- wchar_t _wPathName[MAXPATHLEN+1];
-
- _makeWchar(aPathName, _wPathName, sizeof(_wPathName));
- ret = CreateDirectoryW(_wPathName, &sa);
- if (ret != TRUE) {
- __threadErrno = __WIN32_ERR(GetLastError());
- @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
- RETURN (false);
- }
- RETURN (true);
+ int ret;
+ wchar_t _wPathName[MAXPATHLEN+1];
+
+ _makeWchar(aPathName, _wPathName, sizeof(_wPathName));
+ ret = CreateDirectoryW(_wPathName, &sa);
+ if (ret != TRUE) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
+ RETURN (false);
+ }
+ RETURN (true);
}
%}.
^ self primitiveFailed
@@ -4643,32 +4656,32 @@
char szGotPath[MAXPATHLEN];
if (! __isStringLike(aPathName)) {
- console_fprintf(stderr, "OperatingSystem [info]: invalid argument\n");
- goto error;
+ console_fprintf(stderr, "OperatingSystem [info]: invalid argument\n");
+ goto error;
}
if( ! coInitialized ) {
- console_fprintf(stderr, "OperatingSystem [info]: com not initialized\n");
- goto error;
+ console_fprintf(stderr, "OperatingSystem [info]: com not initialized\n");
+ goto error;
}
if ( ipShellLink == NULL ) {
- hres = CoCreateInstance(&CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
- &IID_IShellLink, (LPVOID *)&ipShellLink);
- if (! SUCCEEDED(hres)) {
- console_fprintf(stderr, "OperatingSystem [info]: CoCreateInstance Error - hres = %08x\n", hres);
- ipShellLink = NULL;
- goto error;
- }
-
- hres = ipShellLink->lpVtbl->QueryInterface( ipShellLink, &IID_IPersistFile, (void **)&ipPersistFile );
- if (! SUCCEEDED(hres)) {
- console_fprintf(stderr, "OperatingSystem [info]: QueryInterface Error - hres = %08x\n", hres);
- ipShellLink->lpVtbl->Release(ipShellLink);
- ipShellLink = NULL;
- ipPersistFile = NULL;
- goto error;
- }
+ hres = CoCreateInstance(&CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
+ &IID_IShellLink, (LPVOID *)&ipShellLink);
+ if (! SUCCEEDED(hres)) {
+ console_fprintf(stderr, "OperatingSystem [info]: CoCreateInstance Error - hres = %08x\n", hres);
+ ipShellLink = NULL;
+ goto error;
+ }
+
+ hres = ipShellLink->lpVtbl->QueryInterface( ipShellLink, &IID_IPersistFile, (void **)&ipPersistFile );
+ if (! SUCCEEDED(hres)) {
+ console_fprintf(stderr, "OperatingSystem [info]: QueryInterface Error - hres = %08x\n", hres);
+ ipShellLink->lpVtbl->Release(ipShellLink);
+ ipShellLink = NULL;
+ ipPersistFile = NULL;
+ goto error;
+ }
}
MultiByteToWideChar(CP_ACP, 0, __stringVal(aPathName), -1, wsz, MAXPATHLEN);
@@ -4676,18 +4689,18 @@
hres = ipPersistFile->lpVtbl->Load(ipPersistFile, wsz, STGM_READ);
if (SUCCEEDED(hres)) {
- hres = ipShellLink->lpVtbl->GetPath(ipShellLink, szGotPath, MAXPATHLEN,
- (WIN32_FIND_DATA *)&wfd, 0 /* SLGP_SHORTPATH */ );
- if (SUCCEEDED(hres)) {
- resolvedPath = __MKSTRING(szGotPath);
- } else {
+ hres = ipShellLink->lpVtbl->GetPath(ipShellLink, szGotPath, MAXPATHLEN,
+ (WIN32_FIND_DATA *)&wfd, 0 /* SLGP_SHORTPATH */ );
+ if (SUCCEEDED(hres)) {
+ resolvedPath = __MKSTRING(szGotPath);
+ } else {
#ifdef COM_DEBUG
- console_fprintf(stderr, "OperatingSystem [info]: GetPath failed - hres = %08x\n", hres );
-#endif
- }
+ console_fprintf(stderr, "OperatingSystem [info]: GetPath failed - hres = %08x\n", hres );
+#endif
+ }
} else {
#ifdef COM_DEBUG
- console_fprintf(stderr, "OperatingSystem [info]: Load failed - hres = %08x\n", hres );
+ console_fprintf(stderr, "OperatingSystem [info]: Load failed - hres = %08x\n", hres );
#endif
}
/* ipPersistFile->lpVtbl->Release(ipPersistFile); */
@@ -4713,10 +4726,10 @@
Return true if successful, false if not."
(oldPath isString not or:[newPath isString not]) ifTrue:[
- "/
- "/ bad argument(s) given
- "/
- ^ self primitiveFailed
+ "/
+ "/ bad argument(s) given
+ "/
+ ^ self primitiveFailed
].
^ self createHardLinkFrom:oldPath to:newPath
@@ -4748,19 +4761,19 @@
DWORD access, share, create, attr;
if (__isStringLike(pathName)) {
- name = __stringVal(pathName);
+ name = __stringVal(pathName);
} else if (__isUnicode16String(pathName)) {
- _makeWchar(pathName, _wPathName, sizeof(_wPathName));
+ _makeWchar(pathName, _wPathName, sizeof(_wPathName));
} else {
- fileHandle = nil;
- argumentError = @symbol(badPathName);
- goto badArgument;
+ fileHandle = nil;
+ argumentError = @symbol(badPathName);
+ goto badArgument;
}
if (! __isArrayLike(attributeSpec)) {
- fileHandle = nil;
- argumentError = @symbol(badAttributeSpec);
- goto badArgument;
+ fileHandle = nil;
+ argumentError = @symbol(badAttributeSpec);
+ goto badArgument;
}
ap = __ArrayInstPtr(attributeSpec)->a_element;
numAttrib = __arraySize(attributeSpec);
@@ -4771,79 +4784,79 @@
attr = 0;
for (i=0; i<numAttrib;i++) {
- OBJ attrSym = ap[i];
-
- if (attrSym == @symbol(FILE_SHARE_READ)) {
- share |= FILE_SHARE_READ;
- } else if (attrSym == @symbol(FILE_SHARE_WRITE)) {
- share |= FILE_SHARE_WRITE;
-
- } else if (attrSym == @symbol(GENERIC_READ)) {
- access |= GENERIC_READ;
- } else if (attrSym == @symbol(GENERIC_WRITE)) {
- access |= GENERIC_WRITE;
-
- } else if (attrSym == @symbol(CREATE_NEW)) {
- create |= CREATE_NEW;
- } else if (attrSym == @symbol(CREATE_ALWAYS)) {
- create |= CREATE_ALWAYS;
- } else if (attrSym == @symbol(OPEN_EXISTING)) {
- create |= OPEN_EXISTING;
- } else if (attrSym == @symbol(OPEN_ALWAYS)) {
- create |= OPEN_ALWAYS;
- } else if (attrSym == @symbol(TRUNCATE_EXISTING)) {
- create |= TRUNCATE_EXISTING;
-
- } else if (attrSym == @symbol(FILE_ATTRIBUTE_HIDDEN)) {
- attr |= FILE_ATTRIBUTE_HIDDEN;
- } else if (attrSym == @symbol(FILE_ATTRIBUTE_READONLY)) {
- attr |= FILE_ATTRIBUTE_READONLY;
- } else if (attrSym == @symbol(FILE_ATTRIBUTE_READONLY)) {
- attr |= FILE_ATTRIBUTE_READONLY;
- } else if (attrSym == @symbol(FILE_FLAG_WRITE_THROUGH)) {
- attr |= FILE_FLAG_WRITE_THROUGH;
- } else if (attrSym == @symbol(FILE_FLAG_SEQUENTIAL_SCAN)) {
- attr |= FILE_FLAG_SEQUENTIAL_SCAN;
- } else if (attrSym == @symbol(FILE_FLAG_DELETE_ON_CLOSE)) {
- attr |= FILE_FLAG_DELETE_ON_CLOSE;
- } else {
- console_fprintf(stderr, "Win32OS [warning]: unsupported open mode\n");
- }
+ OBJ attrSym = ap[i];
+
+ if (attrSym == @symbol(FILE_SHARE_READ)) {
+ share |= FILE_SHARE_READ;
+ } else if (attrSym == @symbol(FILE_SHARE_WRITE)) {
+ share |= FILE_SHARE_WRITE;
+
+ } else if (attrSym == @symbol(GENERIC_READ)) {
+ access |= GENERIC_READ;
+ } else if (attrSym == @symbol(GENERIC_WRITE)) {
+ access |= GENERIC_WRITE;
+
+ } else if (attrSym == @symbol(CREATE_NEW)) {
+ create |= CREATE_NEW;
+ } else if (attrSym == @symbol(CREATE_ALWAYS)) {
+ create |= CREATE_ALWAYS;
+ } else if (attrSym == @symbol(OPEN_EXISTING)) {
+ create |= OPEN_EXISTING;
+ } else if (attrSym == @symbol(OPEN_ALWAYS)) {
+ create |= OPEN_ALWAYS;
+ } else if (attrSym == @symbol(TRUNCATE_EXISTING)) {
+ create |= TRUNCATE_EXISTING;
+
+ } else if (attrSym == @symbol(FILE_ATTRIBUTE_HIDDEN)) {
+ attr |= FILE_ATTRIBUTE_HIDDEN;
+ } else if (attrSym == @symbol(FILE_ATTRIBUTE_READONLY)) {
+ attr |= FILE_ATTRIBUTE_READONLY;
+ } else if (attrSym == @symbol(FILE_ATTRIBUTE_READONLY)) {
+ attr |= FILE_ATTRIBUTE_READONLY;
+ } else if (attrSym == @symbol(FILE_FLAG_WRITE_THROUGH)) {
+ attr |= FILE_FLAG_WRITE_THROUGH;
+ } else if (attrSym == @symbol(FILE_FLAG_SEQUENTIAL_SCAN)) {
+ attr |= FILE_FLAG_SEQUENTIAL_SCAN;
+ } else if (attrSym == @symbol(FILE_FLAG_DELETE_ON_CLOSE)) {
+ attr |= FILE_FLAG_DELETE_ON_CLOSE;
+ } else {
+ console_fprintf(stderr, "Win32OS [warning]: unsupported open mode\n");
+ }
}
if (create == 0) {
- fileHandle = nil;
- argumentError = @symbol(missingCreateMode);
- goto badArgument;
+ fileHandle = nil;
+ argumentError = @symbol(missingCreateMode);
+ goto badArgument;
}
#ifdef PROCESSDEBUGWIN32
if (flag_PROCESSDEBUGWIN32) {
- console_fprintf(stderr, "name:<%s> access:%x share:%x create:%x attr:%x\n",
- name, access, share, create, attr);
+ console_fprintf(stderr, "name:<%s> access:%x share:%x create:%x attr:%x\n",
+ name, access, share, create, attr);
}
#endif
if (__isStringLike(pathName)) {
- h = CreateFileA(name, access, share, 0 /* sa */, create, attr, 0 /* hTempl */);
+ h = CreateFileA(name, access, share, 0 /* sa */, create, attr, 0 /* hTempl */);
} else {
- h = CreateFileW(_wPathName, access, share, 0 /* sa */, create, attr, 0 /* hTempl */);
+ h = CreateFileW(_wPathName, access, share, 0 /* sa */, create, attr, 0 /* hTempl */);
}
if (h != INVALID_HANDLE_VALUE) {
- __externalAddressVal(fileHandle) = (void *)h;
+ __externalAddressVal(fileHandle) = (void *)h;
} else {
- fileHandle = nil;
- errorNumber = __mkSmallInteger( __WIN32_ERR(GetLastError()) );
+ fileHandle = nil;
+ errorNumber = __mkSmallInteger( __WIN32_ERR(GetLastError()) );
}
badArgument: ;
%}.
fileHandle notNil ifTrue:[
- fileHandle registerForFinalization.
- ^ fileHandle.
+ fileHandle registerForFinalization.
+ ^ fileHandle.
].
errorNumber isNil ifTrue:[
- self error:'invalid argument(s): ', argumentError.
+ self error:'invalid argument(s): ', argumentError.
] ifFalse:[
- (self errorHolderForNumber:errorNumber) reportError
+ (self errorHolderForNumber:errorNumber) reportError
].
!
@@ -4889,46 +4902,46 @@
if (__isStringLike(fullPathName)) {
#ifdef DO_WRAP_CALLS
- {
- char _aPathName[MAXPATHLEN];
-
- strncpy(_aPathName, __stringVal(fullPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_API_NOINT_CALL1( "RemoveDirectoryA", RemoveDirectoryA, _aPathName));
- } while ((ret < 0) && (__threadErrno == EINTR));
- }
-#else
- ret = RemoveDirectoryA((char *)__stringVal(fullPathName));
- __threadErrno = __WIN32_ERR(GetLastError());
-#endif
- if (ret != TRUE) {
- @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
- RETURN (false);
- }
- RETURN (true);
+ {
+ char _aPathName[MAXPATHLEN];
+
+ strncpy(_aPathName, __stringVal(fullPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_API_NOINT_CALL1( "RemoveDirectoryA", RemoveDirectoryA, _aPathName));
+ } while ((ret < 0) && (__threadErrno == EINTR));
+ }
+#else
+ ret = RemoveDirectoryA((char *)__stringVal(fullPathName));
+ __threadErrno = __WIN32_ERR(GetLastError());
+#endif
+ if (ret != TRUE) {
+ @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
+ RETURN (false);
+ }
+ RETURN (true);
} else if (__isUnicode16String(fullPathName)) {
#ifdef DO_WRAP_CALLS
- {
- wchar_t _wPathName[MAXPATHLEN+1];
-
- _makeWchar(fullPathName, _wPathName, sizeof(_wPathName));
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_API_NOINT_CALL1( "RemoveDirectoryW", RemoveDirectoryW, _wPathName));
- } while ((ret < 0) && (__threadErrno == EINTR));
- }
-#else
- ret = RemoveDirectoryW((wchar_t *)__unicode16StringVal(fullPathName));
- __threadErrno = __WIN32_ERR(GetLastError());
-#endif
- if (ret != TRUE) {
- @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
- RETURN (false);
- }
- RETURN (true);
+ {
+ wchar_t _wPathName[MAXPATHLEN+1];
+
+ _makeWchar(fullPathName, _wPathName, sizeof(_wPathName));
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_API_NOINT_CALL1( "RemoveDirectoryW", RemoveDirectoryW, _wPathName));
+ } while ((ret < 0) && (__threadErrno == EINTR));
+ }
+#else
+ ret = RemoveDirectoryW((wchar_t *)__unicode16StringVal(fullPathName));
+ __threadErrno = __WIN32_ERR(GetLastError());
+#endif
+ if (ret != TRUE) {
+ @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
+ RETURN (false);
+ }
+ RETURN (true);
}
%}.
"/
@@ -4952,47 +4965,47 @@
if (__isStringLike(fullPathName)) {
#ifdef DO_WRAP_CALLS
- {
- char _aPathName[MAXPATHLEN];
-
- strncpy(_aPathName, __stringVal(fullPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_API_NOINT_CALL1( "DeleteFileA", DeleteFileA, _aPathName));
- } while ((ret < 0) && (__threadErrno == EINTR));
- }
-#else
- ret = DeleteFileA((char *)__stringVal(fullPathName));
- __threadErrno = __WIN32_ERR(GetLastError());
-#endif
- if (ret != TRUE) {
- @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
- RETURN (false);
- }
- RETURN (true);
+ {
+ char _aPathName[MAXPATHLEN];
+
+ strncpy(_aPathName, __stringVal(fullPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_API_NOINT_CALL1( "DeleteFileA", DeleteFileA, _aPathName));
+ } while ((ret < 0) && (__threadErrno == EINTR));
+ }
+#else
+ ret = DeleteFileA((char *)__stringVal(fullPathName));
+ __threadErrno = __WIN32_ERR(GetLastError());
+#endif
+ if (ret != TRUE) {
+ @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
+ RETURN (false);
+ }
+ RETURN (true);
}
if (__isUnicode16String(fullPathName)) {
#ifdef DO_WRAP_CALLS
- {
- wchar_t _wPathName[MAXPATHLEN+1];
-
- _makeWchar(fullPathName, _wPathName, sizeof(_wPathName));
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_API_NOINT_CALL1( "DeleteFileW", DeleteFileW, _wPathName));
- } while ((ret < 0) && (__threadErrno == EINTR));
- }
-#else
- ret = DeleteFileW((wchar_t *)__unicode16StringVal(fullPathName));
- __threadErrno = __WIN32_ERR(GetLastError());
-#endif
- if (ret != TRUE) {
- @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
- RETURN (false);
- }
- RETURN (true);
+ {
+ wchar_t _wPathName[MAXPATHLEN+1];
+
+ _makeWchar(fullPathName, _wPathName, sizeof(_wPathName));
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_API_NOINT_CALL1( "DeleteFileW", DeleteFileW, _wPathName));
+ } while ((ret < 0) && (__threadErrno == EINTR));
+ }
+#else
+ ret = DeleteFileW((wchar_t *)__unicode16StringVal(fullPathName));
+ __threadErrno = __WIN32_ERR(GetLastError());
+#endif
+ if (ret != TRUE) {
+ @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
+ RETURN (false);
+ }
+ RETURN (true);
}
%}.
@@ -5012,57 +5025,57 @@
if (__isStringLike(oldPath) && __isStringLike(newPath)) {
#ifdef DO_WRAP_CALLS
- char _oldPath[MAXPATHLEN], _newPath[MAXPATHLEN];
-
- strncpy(_oldPath, __stringVal(oldPath), MAXPATHLEN-1); _oldPath[MAXPATHLEN-1] = '\0';
- strncpy(_newPath, __stringVal(newPath), MAXPATHLEN-1); _newPath[MAXPATHLEN-1] = '\0';
-
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = STX_API_NOINT_CALL2("MoveFileA", MoveFileA, _oldPath, _newPath);
- } while ((ret == 0) && (__threadErrno == EINTR));
-#else
- __BEGIN_INTERRUPTABLE__
- do {
- __threadErrno = 0;
- ret = MoveFileA((char *) __stringVal(oldPath), (char *) __stringVal(newPath));
- } while ((ret == 0) && (__threadErrno == EINTR));
- __END_INTERRUPTABLE__
-
- if (ret == 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
+ char _oldPath[MAXPATHLEN], _newPath[MAXPATHLEN];
+
+ strncpy(_oldPath, __stringVal(oldPath), MAXPATHLEN-1); _oldPath[MAXPATHLEN-1] = '\0';
+ strncpy(_newPath, __stringVal(newPath), MAXPATHLEN-1); _newPath[MAXPATHLEN-1] = '\0';
+
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = STX_API_NOINT_CALL2("MoveFileA", MoveFileA, _oldPath, _newPath);
+ } while ((ret == 0) && (__threadErrno == EINTR));
+#else
+ __BEGIN_INTERRUPTABLE__
+ do {
+ __threadErrno = 0;
+ ret = MoveFileA((char *) __stringVal(oldPath), (char *) __stringVal(newPath));
+ } while ((ret == 0) && (__threadErrno == EINTR));
+ __END_INTERRUPTABLE__
+
+ if (ret == 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
#endif
} else {
- wchar_t _oldPathW[MAXPATHLEN], _newPathW[MAXPATHLEN];
-
- if (_makeWchar(oldPath, _oldPathW, sizeof(_oldPathW)) < 0
- || _makeWchar(newPath, _newPathW, sizeof(_newPathW)) < 0) {
- goto err;
- }
+ wchar_t _oldPathW[MAXPATHLEN], _newPathW[MAXPATHLEN];
+
+ if (_makeWchar(oldPath, _oldPathW, sizeof(_oldPathW)) < 0
+ || _makeWchar(newPath, _newPathW, sizeof(_newPathW)) < 0) {
+ goto err;
+ }
#ifdef DO_WRAP_CALLS
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = STX_API_NOINT_CALL2( "MoveFileW", MoveFileW, _oldPathW, _newPathW);
- } while ((ret == 0) && (__threadErrno == EINTR));
-#else
- __BEGIN_INTERRUPTABLE__
- do {
- __threadErrno = 0;
- ret = MoveFileW(_oldPathW, _newPathW);
- } while ((ret == 0) && (__threadErrno == EINTR));
- __END_INTERRUPTABLE__
- if (ret == 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- RETURN(false);
- }
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = STX_API_NOINT_CALL2( "MoveFileW", MoveFileW, _oldPathW, _newPathW);
+ } while ((ret == 0) && (__threadErrno == EINTR));
+#else
+ __BEGIN_INTERRUPTABLE__
+ do {
+ __threadErrno = 0;
+ ret = MoveFileW(_oldPathW, _newPathW);
+ } while ((ret == 0) && (__threadErrno == EINTR));
+ __END_INTERRUPTABLE__
+ if (ret == 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ RETURN(false);
+ }
#endif
}
if (ret == 0) {
- @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
- RETURN (false);
+ @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
+ RETURN (false);
}
RETURN (true);
@@ -5124,43 +5137,43 @@
# endif
if (aSymbol == @symbol(readUser)) {
- RETURN ( __mkSmallInteger(S_IRUSR) );
+ RETURN ( __mkSmallInteger(S_IRUSR) );
}
if (aSymbol == @symbol(writeUser)) {
- RETURN ( __mkSmallInteger(S_IWUSR) );
+ RETURN ( __mkSmallInteger(S_IWUSR) );
}
if (aSymbol == @symbol(executeUser)) {
- RETURN ( __mkSmallInteger(S_IXUSR) );
+ RETURN ( __mkSmallInteger(S_IXUSR) );
}
if (aSymbol == @symbol(readGroup)) {
- RETURN ( __mkSmallInteger(S_IRGRP) );
+ RETURN ( __mkSmallInteger(S_IRGRP) );
}
if (aSymbol == @symbol(writeGroup)) {
- RETURN ( __mkSmallInteger(S_IWGRP) );
+ RETURN ( __mkSmallInteger(S_IWGRP) );
}
if (aSymbol == @symbol(executeGroup)) {
- RETURN ( __mkSmallInteger(S_IXGRP) );
+ RETURN ( __mkSmallInteger(S_IXGRP) );
}
if (aSymbol == @symbol(readOthers)) {
- RETURN ( __mkSmallInteger(S_IROTH) );
+ RETURN ( __mkSmallInteger(S_IROTH) );
}
if (aSymbol == @symbol(writeOthers)) {
- RETURN ( __mkSmallInteger(S_IWOTH) );
+ RETURN ( __mkSmallInteger(S_IWOTH) );
}
if (aSymbol == @symbol(executeOthers)) {
- RETURN ( __mkSmallInteger(S_IXOTH) );
+ RETURN ( __mkSmallInteger(S_IXOTH) );
}
// These are not defined for Win32 - simply ignore them
// (but handle them for UNIX compatibility
if (aSymbol == @symbol(setUid)) {
- RETURN ( __mkSmallInteger(0) );
+ RETURN ( __mkSmallInteger(0) );
}
if (aSymbol == @symbol(setGid)) {
- RETURN ( __mkSmallInteger(0) );
+ RETURN ( __mkSmallInteger(0) );
}
if (aSymbol == @symbol(removeOnlyByOwner)) {
- RETURN ( __mkSmallInteger(0) );
+ RETURN ( __mkSmallInteger(0) );
}
%}.
@@ -5179,7 +5192,7 @@
"
this could have been implemented as:
- (self infoOf:aPathName) at:#mode
+ (self infoOf:aPathName) at:#mode
but for huge directory searches the code below is faster
"
@@ -5189,58 +5202,58 @@
if (__isStringLike(aPathName)) {
#ifdef DO_WRAP_CALLS
- char _aPathName[MAXPATHLEN];
-
- strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
-
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = STX_C_NOINT_CALL2( "_stat", _stat, _aPathName, &buf);
- } while ((ret < 0) && (__threadErrno == EINTR));
-#else
- __BEGIN_INTERRUPTABLE__
- do {
- __threadErrno = 0;
- ret = _stat( (char *)__stringVal(aPathName), &buf);
- } while ((ret < 0) && (__threadErrno == EINTR));
- __END_INTERRUPTABLE__
- if (ret < 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
-#endif
- if (ret < 0) {
- @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
- RETURN ( nil );
- }
- RETURN ( __mkSmallInteger(buf.st_mode & 0777) );
+ char _aPathName[MAXPATHLEN];
+
+ strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
+
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = STX_C_NOINT_CALL2( "_stat", _stat, _aPathName, &buf);
+ } while ((ret < 0) && (__threadErrno == EINTR));
+#else
+ __BEGIN_INTERRUPTABLE__
+ do {
+ __threadErrno = 0;
+ ret = _stat( (char *)__stringVal(aPathName), &buf);
+ } while ((ret < 0) && (__threadErrno == EINTR));
+ __END_INTERRUPTABLE__
+ if (ret < 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
+#endif
+ if (ret < 0) {
+ @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
+ RETURN ( nil );
+ }
+ RETURN ( __mkSmallInteger(buf.st_mode & 0777) );
} else if (__isUnicode16String(aPathName)) {
#ifdef DO_WRAP_CALLS
- char _wPathName[MAXPATHLEN];
-
- _makeWchar(aPathName, _wPathName, sizeof(_wPathName));
-
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = STX_C_NOINT_CALL2( "_wstat", _wstat, _wPathName, &buf);
- } while ((ret < 0) && (__threadErrno == EINTR));
-#else
- __BEGIN_INTERRUPTABLE__
- do {
- __threadErrno = 0;
- ret = _wstat((char *)__unicode16StringVal(aPathName), &buf);
- } while ((ret < 0) && (__threadErrno == EINTR));
- __END_INTERRUPTABLE__
- if (ret < 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
-#endif
- if (ret < 0) {
- @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
- RETURN ( nil );
- }
- RETURN ( __mkSmallInteger(buf.st_mode & 0777) );
+ char _wPathName[MAXPATHLEN];
+
+ _makeWchar(aPathName, _wPathName, sizeof(_wPathName));
+
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = STX_C_NOINT_CALL2( "_wstat", _wstat, _wPathName, &buf);
+ } while ((ret < 0) && (__threadErrno == EINTR));
+#else
+ __BEGIN_INTERRUPTABLE__
+ do {
+ __threadErrno = 0;
+ ret = _wstat((char *)__unicode16StringVal(aPathName), &buf);
+ } while ((ret < 0) && (__threadErrno == EINTR));
+ __END_INTERRUPTABLE__
+ if (ret < 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
+#endif
+ if (ret < 0) {
+ @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
+ RETURN ( nil );
+ }
+ RETURN ( __mkSmallInteger(buf.st_mode & 0777) );
}
%}.
^ self primitiveFailed
@@ -5261,7 +5274,7 @@
"
this could have been implemented as:
- (self infoOf:aPathName) at:#mode
+ (self infoOf:aPathName) at:#mode
but for huge directory searches the code below is faster
"
@@ -5271,39 +5284,39 @@
if (__isSmallInteger(aFileDescriptor)) {
#ifdef DO_WRAP_CALLS
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = STX_C_NOINT_CALL2( "fstat", fstat, __smallIntegerVal(aFileDescriptor), &buf);
- } while ((ret < 0) && (__threadErrno == EINTR));
-#else
- __BEGIN_INTERRUPTABLE__
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = fstat( __smallIntegerVal(aFileDescriptor), &buf);
- } while ((ret < 0) && (__threadErrno == EINTR));
- __END_INTERRUPTABLE__
- if (ret < 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
-#endif
-
- if (ret < 0) {
- @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
- RETURN ( nil );
- }
- RETURN ( __mkSmallInteger(buf.st_mode & 0777) );
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = STX_C_NOINT_CALL2( "fstat", fstat, __smallIntegerVal(aFileDescriptor), &buf);
+ } while ((ret < 0) && (__threadErrno == EINTR));
+#else
+ __BEGIN_INTERRUPTABLE__
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = fstat( __smallIntegerVal(aFileDescriptor), &buf);
+ } while ((ret < 0) && (__threadErrno == EINTR));
+ __END_INTERRUPTABLE__
+ if (ret < 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
+#endif
+
+ if (ret < 0) {
+ @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
+ RETURN ( nil );
+ }
+ RETURN ( __mkSmallInteger(buf.st_mode & 0777) );
}
%}.
^ self primitiveFailed
"
'c:\windows' asFilename readingFileDo:[:s|
- (OperatingSystem accessModeOfFd:s fileDescriptor) printStringRadix:8.
+ (OperatingSystem accessModeOfFd:s fileDescriptor) printStringRadix:8.
].
'Make.proto' asFilename readingFileDo:[:s|
- (OperatingSystem accessModeOfFd:s fileDescriptor) printStringRadix:8.
+ (OperatingSystem accessModeOfFd:s fileDescriptor) printStringRadix:8.
].
(OperatingSystem changeAccessModeOf:'Make.proto' to:8r644)
"
@@ -5319,62 +5332,62 @@
int ret;
if (__isSmallInteger(modeBits)) {
- if (__isStringLike(aPathName)) {
+ if (__isStringLike(aPathName)) {
#ifdef DO_WRAP_CALLS
- int _chmod();
- char _aPathName[MAXPATHLEN];
-
- strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = STX_C_NOINT_CALL2( "_chmod", _chmod, _aPathName, __intVal(modeBits));
- } while ((ret < 0) && (__threadErrno == EINTR));
-#else
- __BEGIN_INTERRUPTABLE__
- do {
- __threadErrno = 0;
- ret = _chmod((char *)__stringVal(aPathName), __intVal(modeBits));
- } while ((ret < 0) && (__threadErrno == EINTR));
- __END_INTERRUPTABLE__
- if (ret < 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
-#endif
- if (ret < 0) {
- @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
- RETURN ( false );
- }
- RETURN ( true );
-
- } else if (__isUnicode16String(aPathName)) {
+ int _chmod();
+ char _aPathName[MAXPATHLEN];
+
+ strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = STX_C_NOINT_CALL2( "_chmod", _chmod, _aPathName, __intVal(modeBits));
+ } while ((ret < 0) && (__threadErrno == EINTR));
+#else
+ __BEGIN_INTERRUPTABLE__
+ do {
+ __threadErrno = 0;
+ ret = _chmod((char *)__stringVal(aPathName), __intVal(modeBits));
+ } while ((ret < 0) && (__threadErrno == EINTR));
+ __END_INTERRUPTABLE__
+ if (ret < 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
+#endif
+ if (ret < 0) {
+ @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
+ RETURN ( false );
+ }
+ RETURN ( true );
+
+ } else if (__isUnicode16String(aPathName)) {
#ifdef DO_WRAP_CALLS
- int _wchmod();
- char _wPathName[MAXPATHLEN];
-
- _makeWchar(aPathName, _wPathName, sizeof(_wPathName));
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = STX_C_NOINT_CALL2( "_wchmod", _wchmod, _wPathName, __intVal(modeBits));
- } while ((ret < 0) && (__threadErrno == EINTR));
-#else
- __BEGIN_INTERRUPTABLE__
- do {
- __threadErrno = 0;
- ret = _chmod((wchar_t *)__unicode16StringVal(fullPathName), __intVal(modeBits));
- } while ((ret < 0) && (__threadErrno == EINTR));
- __END_INTERRUPTABLE__
- if (ret < 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
-#endif
- if (ret < 0) {
- @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
- RETURN ( false );
- }
- RETURN ( true );
- }
+ int _wchmod();
+ char _wPathName[MAXPATHLEN];
+
+ _makeWchar(aPathName, _wPathName, sizeof(_wPathName));
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = STX_C_NOINT_CALL2( "_wchmod", _wchmod, _wPathName, __intVal(modeBits));
+ } while ((ret < 0) && (__threadErrno == EINTR));
+#else
+ __BEGIN_INTERRUPTABLE__
+ do {
+ __threadErrno = 0;
+ ret = _chmod((wchar_t *)__unicode16StringVal(fullPathName), __intVal(modeBits));
+ } while ((ret < 0) && (__threadErrno == EINTR));
+ __END_INTERRUPTABLE__
+ if (ret < 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
+#endif
+ if (ret < 0) {
+ @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
+ RETURN ( false );
+ }
+ RETURN ( true );
+ }
}
%}.
^ self primitiveFailed:#argumentError
@@ -5408,14 +5421,14 @@
if (__isExternalAddressLike(openFilenameStructureExternalAddress)
|| __isExternalBytesLike(openFilenameStructureExternalAddress)){
- __address = __externalAddressVal(openFilenameStructureExternalAddress);
- __rslt = __STX_API_CALL1( "GetOpenFileNameA", (void *)GetOpenFileNameA, __address);
-
- if (__rslt == TRUE) {
- rslt = true;
- } else {
- rslt = false;
- }
+ __address = __externalAddressVal(openFilenameStructureExternalAddress);
+ __rslt = __STX_API_CALL1( "GetOpenFileNameA", (void *)GetOpenFileNameA, __address);
+
+ if (__rslt == TRUE) {
+ rslt = true;
+ } else {
+ rslt = false;
+ }
}
%}.
rslt isNil ifTrue:[ self primitiveFailed ].
@@ -5438,14 +5451,14 @@
if (__isExternalAddressLike(openFilenameStructureExternalAddress)
|| __isExternalBytesLike(openFilenameStructureExternalAddress)){
- __address = __externalAddressVal(openFilenameStructureExternalAddress);
- __rslt = __STX_API_CALL1( "GetSaveFileName", (void *)GetSaveFileName, __address);
-
- if (__rslt == TRUE) {
- rslt = true;
- } else {
- rslt = false;
- }
+ __address = __externalAddressVal(openFilenameStructureExternalAddress);
+ __rslt = __STX_API_CALL1( "GetSaveFileName", (void *)GetSaveFileName, __address);
+
+ if (__rslt == TRUE) {
+ rslt = true;
+ } else {
+ rslt = false;
+ }
}
%}.
rslt isNil ifTrue:[ self primitiveFailed ].
@@ -5471,7 +5484,7 @@
attr := self primGetFileAttributes:aPathName.
(attr bitTest:FILE_ATTRIBUTE_HIDDEN ) ifTrue:[
- ^ self primSetFileAttributes:aPathName to:(attr bitClear:2).
+ ^ self primSetFileAttributes:aPathName to:(attr bitClear:2).
].
^ true
@@ -5487,27 +5500,27 @@
|names n "{ Class: SmallInteger }" |
names := pathName
- asCollectionOfSubstringsSeparatedBy:self fileSeparator.
+ asCollectionOfSubstringsSeparatedBy:self fileSeparator.
names := names asOrderedCollection.
"
cut off initial double-slashes
"
[names startsWith:#('' '')] whileTrue:[
- names removeFirst.
+ names removeFirst.
].
"
cut off double-slashes at end
"
[names endsWith:#('')] whileTrue:[
- names removeLast.
+ names removeLast.
].
"
cut off current-dir at beginning
"
n := names size.
[(n >= 2) and:[names startsWith:#('.')]] whileTrue:[
- names removeFirst.
- n := n - 1.
+ names removeFirst.
+ n := n - 1.
].
"
@@ -5516,14 +5529,14 @@
[(n > 2)
and:[(names endsWith:#('..'))
and:[((names at:(n - 1)) startsWith:'.') not ]]] whileTrue:[
- names removeLast; removeLast.
- n := n - 2.
+ names removeLast; removeLast.
+ n := n - 2.
].
^ names asStringWith:self fileSeparator
- from:1
- to:n
- compressTabs:false final:nil
+ from:1
+ to:n
+ compressTabs:false final:nil
"
OperatingSystem compressPath:'.\..'
@@ -5568,50 +5581,50 @@
DWORD binaryType;
if (__isStringLike(aPathName)) {
- ok = GetBinaryTypeA(__stringVal(aPathName), &binaryType);
+ ok = GetBinaryTypeA(__stringVal(aPathName), &binaryType);
} else if (__isUnicode16String(aPathName)) {
- ok = GetBinaryTypeW(__unicode16StringVal(aPathName), &binaryType);
+ ok = GetBinaryTypeW(__unicode16StringVal(aPathName), &binaryType);
} else {
- goto badArgument;
+ goto badArgument;
}
if (ok) {
- OBJ typeSymbol = nil;
-
- switch (binaryType) {
- case SCS_32BIT_BINARY:
- // A 32bit Windows-based application
- typeSymbol = @symbol(BINARY_32BIT);
- break;
- case SCS_64BIT_BINARY:
- // A 64bit Windows-based application.
- typeSymbol = @symbol(BINARY_64BIT);
- break;
- case SCS_DOS_BINARY:
- // An MSDOS based application
- typeSymbol = @symbol(BINARY_DOS);
- break;
- case SCS_OS216_BINARY:
- // A 16bit OS/2-based application
- typeSymbol = @symbol(BINARY_OS2_16BIT);
- break;
- case SCS_PIF_BINARY:
- // A PIF file that executes an MS-DOS – based application
- typeSymbol = @symbol(BINARY_PIF);
- break;
- case SCS_POSIX_BINARY:
- // A POSIX based application
- typeSymbol = @symbol(BINARY_POSIX);
- break;
- case SCS_WOW_BINARY:
- // A 16-bit Windows-based application
- typeSymbol = @symbol(BINARY_WOW16);
- break;
- default:
- typeSymbol = @symbol(other);
- break;
- }
- RETURN (typeSymbol);
+ OBJ typeSymbol = nil;
+
+ switch (binaryType) {
+ case SCS_32BIT_BINARY:
+ // A 32bit Windows-based application
+ typeSymbol = @symbol(BINARY_32BIT);
+ break;
+ case SCS_64BIT_BINARY:
+ // A 64bit Windows-based application.
+ typeSymbol = @symbol(BINARY_64BIT);
+ break;
+ case SCS_DOS_BINARY:
+ // An MSDOS based application
+ typeSymbol = @symbol(BINARY_DOS);
+ break;
+ case SCS_OS216_BINARY:
+ // A 16bit OS/2-based application
+ typeSymbol = @symbol(BINARY_OS2_16BIT);
+ break;
+ case SCS_PIF_BINARY:
+ // A PIF file that executes an MS-DOS – based application
+ typeSymbol = @symbol(BINARY_PIF);
+ break;
+ case SCS_POSIX_BINARY:
+ // A POSIX based application
+ typeSymbol = @symbol(BINARY_POSIX);
+ break;
+ case SCS_WOW_BINARY:
+ // A 16-bit Windows-based application
+ typeSymbol = @symbol(BINARY_WOW16);
+ break;
+ default:
+ typeSymbol = @symbol(other);
+ break;
+ }
+ RETURN (typeSymbol);
}
RETURN (nil);
@@ -5629,7 +5642,7 @@
ret = GetCurrentDirectoryW(MAXPATHLEN, _aPathName);
if (ret == 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
+ __threadErrno = __WIN32_ERR(GetLastError());
}
RETURN(__mkStringOrU16String_maxlen(_aPathName, MAXPATHLEN));
%}.
@@ -5641,8 +5654,8 @@
getDiskInfoOf:volumeNameArg
"returns a dictionary filled with any of:
- freeBytes
- totalBytes
+ freeBytes
+ totalBytes
and possibly additional (OS-specific) information"
|volumeName info ok sectorsPerCluster bytesPerSector freeClusters totalClusters
@@ -5650,11 +5663,11 @@
volumeName := volumeNameArg.
(volumeName endsWith:$\) ifFalse:[
- volumeName := volumeName , '\'
+ volumeName := volumeName , '\'
].
%{
typedef BOOL (WINAPI *P_GDFSE)(LPCTSTR, PULARGE_INTEGER,
- PULARGE_INTEGER, PULARGE_INTEGER);
+ PULARGE_INTEGER, PULARGE_INTEGER);
P_GDFSE pGetDiskFreeSpaceEx = NULL;
DWORD __sectorsPerCluster, __bytesPerSector, __freeClusters, __totalClusters;
@@ -5662,62 +5675,62 @@
unsigned __int64 i64FreeBytesForUsersQuota, i64TotalBytes, i64FreeBytes;
if (__isStringLike(volumeName) || __isSymbol(volumeName)) {
- /*
- * Use GetDiskFreeSpaceEx if available; otherwise, use GetDiskFreeSpace.
- * Notice that GetDiskFreeSpace does not work correctly under win2k,
- * and GetDiskFreeSpaceEx is not avail. for all win versions (can microsoft ever do something right ?).
- */
- pGetDiskFreeSpaceEx = (P_GDFSE)GetProcAddress (
- GetModuleHandle ("kernel32.dll"),
- "GetDiskFreeSpaceExA");
- if (pGetDiskFreeSpaceEx) {
- fResult = pGetDiskFreeSpaceEx (__stringVal(volumeName),
- (PULARGE_INTEGER)&i64FreeBytesForUsersQuota,
- (PULARGE_INTEGER)&i64TotalBytes,
- (PULARGE_INTEGER)&i64FreeBytes);
- if (fResult) {
- freeBytesForUsersQuota = __MKUINT64(&i64FreeBytesForUsersQuota);
- totalBytes = __MKUINT64(&i64TotalBytes);
- freeBytes = __MKUINT64(&i64FreeBytes);
- }
- }
- fResult = GetDiskFreeSpace(__stringVal(volumeName),
- &__sectorsPerCluster,
- &__bytesPerSector,
- &__freeClusters,
- &__totalClusters);
- if (fResult) {
- sectorsPerCluster = __MKUINT(__sectorsPerCluster);
- bytesPerSector = __MKUINT(__bytesPerSector);
- freeClusters = __MKUINT(__freeClusters);
- totalClusters = __MKUINT(__totalClusters);
- }
- switch (GetDriveType(__stringVal(volumeName))) {
- case DRIVE_REMOVABLE:
- type = @symbol(removable); break;
- case DRIVE_FIXED:
- type = @symbol(fixed); break;
- case DRIVE_REMOTE:
- type = @symbol(network); break;
- case DRIVE_CDROM:
- type = @symbol(cdrom); break;
- case DRIVE_RAMDISK:
- type = @symbol(ramdisk); break;
- case DRIVE_UNKNOWN:
- default:
- break;
- }
- if (fResult) {
- ok = true;
- } else {
- __threadErrno = __WIN32_ERR(GetLastError());
- @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
- }
+ /*
+ * Use GetDiskFreeSpaceEx if available; otherwise, use GetDiskFreeSpace.
+ * Notice that GetDiskFreeSpace does not work correctly under win2k,
+ * and GetDiskFreeSpaceEx is not avail. for all win versions (can microsoft ever do something right ?).
+ */
+ pGetDiskFreeSpaceEx = (P_GDFSE)GetProcAddress (
+ GetModuleHandle ("kernel32.dll"),
+ "GetDiskFreeSpaceExA");
+ if (pGetDiskFreeSpaceEx) {
+ fResult = pGetDiskFreeSpaceEx (__stringVal(volumeName),
+ (PULARGE_INTEGER)&i64FreeBytesForUsersQuota,
+ (PULARGE_INTEGER)&i64TotalBytes,
+ (PULARGE_INTEGER)&i64FreeBytes);
+ if (fResult) {
+ freeBytesForUsersQuota = __MKUINT64(&i64FreeBytesForUsersQuota);
+ totalBytes = __MKUINT64(&i64TotalBytes);
+ freeBytes = __MKUINT64(&i64FreeBytes);
+ }
+ }
+ fResult = GetDiskFreeSpace(__stringVal(volumeName),
+ &__sectorsPerCluster,
+ &__bytesPerSector,
+ &__freeClusters,
+ &__totalClusters);
+ if (fResult) {
+ sectorsPerCluster = __MKUINT(__sectorsPerCluster);
+ bytesPerSector = __MKUINT(__bytesPerSector);
+ freeClusters = __MKUINT(__freeClusters);
+ totalClusters = __MKUINT(__totalClusters);
+ }
+ switch (GetDriveType(__stringVal(volumeName))) {
+ case DRIVE_REMOVABLE:
+ type = @symbol(removable); break;
+ case DRIVE_FIXED:
+ type = @symbol(fixed); break;
+ case DRIVE_REMOTE:
+ type = @symbol(network); break;
+ case DRIVE_CDROM:
+ type = @symbol(cdrom); break;
+ case DRIVE_RAMDISK:
+ type = @symbol(ramdisk); break;
+ case DRIVE_UNKNOWN:
+ default:
+ break;
+ }
+ if (fResult) {
+ ok = true;
+ } else {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
+ }
}
%}.
ok == true ifFalse:[
- self primitiveFailed.
- ^ self
+ self primitiveFailed.
+ ^ self
].
info := IdentityDictionary new.
@@ -5727,14 +5740,14 @@
info at:#totalClusters put:totalClusters.
info at:#freeBytes put:(freeBytes notNil
- ifTrue:[freeBytes]
- ifFalse:[freeClusters * sectorsPerCluster * bytesPerSector]).
+ ifTrue:[freeBytes]
+ ifFalse:[freeClusters * sectorsPerCluster * bytesPerSector]).
info at:#totalBytes put:(totalBytes notNil
- ifTrue:[totalBytes]
- ifFalse:[totalClusters * sectorsPerCluster * bytesPerSector]).
+ ifTrue:[totalBytes]
+ ifFalse:[totalClusters * sectorsPerCluster * bytesPerSector]).
info at:#freeBytesForUsersQuota put:freeBytesForUsersQuota.
type notNil ifTrue:[
- info at:#type put:type
+ info at:#type put:type
].
^ info
@@ -5776,13 +5789,13 @@
getDriveType:aPathName
"returns:
- 0 -> Unknown
- 1 -> Invalid
- 2 -> removable
- 3 -> fixed
- 4 -> remote
- 5 -> cdrom
- 6 -> ramdisk.
+ 0 -> Unknown
+ 1 -> Invalid
+ 2 -> removable
+ 3 -> fixed
+ 4 -> remote
+ 5 -> cdrom
+ 6 -> ramdisk.
This is a stupid interface - do not use."
%{
@@ -5791,18 +5804,18 @@
if (_makeWchar(aPathName, _aPathName, sizeof(_aPathName)) > 0) {
#ifdef DO_WRAP_CALLS
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_API_NOINT_CALL1( "GetDriveTypeW", GetDriveTypeW, _aPathName));
- } while ((ret < 0) && (__threadErrno == EINTR));
-#else
- ret = GetDriveTypeW(_aPathName);
- if (ret < 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
-#endif
- RETURN (__MKSMALLINT(ret));
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_API_NOINT_CALL1( "GetDriveTypeW", GetDriveTypeW, _aPathName));
+ } while ((ret < 0) && (__threadErrno == EINTR));
+#else
+ ret = GetDriveTypeW(_aPathName);
+ if (ret < 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
+#endif
+ RETURN (__MKSMALLINT(ret));
}
%}.
^ self primitiveFailed
@@ -5825,24 +5838,24 @@
DWORD dummy;
if (__isStringLike(aPathName)) {
- sz = GetFileVersionInfoSizeA(__stringVal(aPathName), &dummy);
+ sz = GetFileVersionInfoSizeA(__stringVal(aPathName), &dummy);
} else if (__isUnicode16String(aPathName)) {
- sz = GetFileVersionInfoSizeW(__unicode16StringVal(aPathName), &dummy);
+ sz = GetFileVersionInfoSizeW(__unicode16StringVal(aPathName), &dummy);
} else {
- goto badArgument;
+ goto badArgument;
}
if (sz > 0) {
- OBJ versionData;
-
- versionData = __BYTEARRAY_UNINITIALIZED_NEW_INT(sz);
- if (versionData == nil) {
- RETURN (nil);
- }
- if (GetFileVersionInfo(__stringVal(aPathName), 0, sz, __ByteArrayInstPtr(versionData)->ba_element) == FALSE) {
- RETURN (nil);
- }
- RETURN (versionData);
+ OBJ versionData;
+
+ versionData = __BYTEARRAY_UNINITIALIZED_NEW_INT(sz);
+ if (versionData == nil) {
+ RETURN (nil);
+ }
+ if (GetFileVersionInfo(__stringVal(aPathName), 0, sz, __ByteArrayInstPtr(versionData)->ba_element) == FALSE) {
+ RETURN (nil);
+ }
+ RETURN (versionData);
}
RETURN (nil);
badArgument: ;
@@ -5861,18 +5874,18 @@
if (_makeWchar(aPathName, _aPathName, sizeof(_aPathName)) > 0) {
#ifdef DO_WRAP_CALLS
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_API_NOINT_CALL3( "GetLongPathNameW", GetLongPathNameW, _aPathName, _aPathName, MAXPATHLEN));
- } while ((ret == 0) && (__threadErrno == EINTR));
-#else
- ret = GetLongPathNameW(_aPathName, _aPathName, MAXPATHLEN);
- if (ret == 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
-#endif
- RETURN (__mkStringOrU16String_maxlen(_aPathName, MAXPATHLEN));
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_API_NOINT_CALL3( "GetLongPathNameW", GetLongPathNameW, _aPathName, _aPathName, MAXPATHLEN));
+ } while ((ret == 0) && (__threadErrno == EINTR));
+#else
+ ret = GetLongPathNameW(_aPathName, _aPathName, MAXPATHLEN);
+ if (ret == 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
+#endif
+ RETURN (__mkStringOrU16String_maxlen(_aPathName, MAXPATHLEN));
}
%}.
^ self primitiveFailed
@@ -5897,9 +5910,9 @@
The info object returned is OS-specific, however it responds to at
least
- #isFor32BitArchitecture
- #isFor64BitArchitecture ... returns true, if the given object is for
- 32bit, 64bit architecture respectively
+ #isFor32BitArchitecture
+ #isFor64BitArchitecture ... returns true, if the given object is for
+ 32bit, 64bit architecture respectively
"
^ PECOFFFileHeader fromFile: aStringOrFilename
@@ -5915,18 +5928,18 @@
if (_makeWchar(aPathName, _aPathName, sizeof(_aPathName)) > 0) {
#ifdef DO_WRAP_CALLS
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_API_NOINT_CALL3( "GetShortPathNameW", GetShortPathNameW, _aPathName, _aPathName, MAXPATHLEN));
- } while ((ret == 0) && (__threadErrno == EINTR));
-#else
- ret = GetShortPathNameW(_aPathName, _aPathName, MAXPATHLEN);
- if (ret == 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
-#endif
- RETURN (__mkStringOrU16String_maxlen(_aPathName, MAXPATHLEN));
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_API_NOINT_CALL3( "GetShortPathNameW", GetShortPathNameW, _aPathName, _aPathName, MAXPATHLEN));
+ } while ((ret == 0) && (__threadErrno == EINTR));
+#else
+ ret = GetShortPathNameW(_aPathName, _aPathName, MAXPATHLEN);
+ if (ret == 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
+#endif
+ RETURN (__mkStringOrU16String_maxlen(_aPathName, MAXPATHLEN));
}
%}.
^ self primitiveFailed
@@ -5955,16 +5968,16 @@
"return some object filled with info for the file 'aPathName';
the info (for which corresponding access methods are understood by
the returned object) is:
- type - a symbol giving the files type
- mode - numeric access mode
- uid - owners user id
- gid - owners group id
- size - files size
- id - files number (i.e. inode number)
- accessed - last access time (as Timestamp)
- modified - last modification time (as Timestamp)
- statusChanged - last status change time (as Timestamp)
- alternativeName - (windows only:) the MSDOS name of the file
+ type - a symbol giving the files type
+ mode - numeric access mode
+ uid - owners user id
+ gid - owners group id
+ size - files size
+ id - files number (i.e. inode number)
+ accessed - last access time (as Timestamp)
+ modified - last modification time (as Timestamp)
+ statusChanged - last status change time (as Timestamp)
+ alternativeName - (windows only:) the MSDOS name of the file
Some of the fields may be returned as nil on systems which do not provide
all of the information.
@@ -5978,10 +5991,10 @@
info := self linkInfoOf:aPathName.
(info notNil and:[info isSymbolicLink]) ifTrue:[
- target := info path.
- target notNil ifTrue:[
- ^ self linkInfoOf:target.
- ]
+ target := info path.
+ target notNil ifTrue:[
+ ^ self linkInfoOf:target.
+ ]
].
^ info
@@ -6006,42 +6019,42 @@
if (__isStringLike(aPathName)) {
#ifdef DO_WRAP_CALLS
- char _aPathName[MAXPATHLEN];
-
- strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_API_NOINT_CALL1( "GetFileAttributesA", GetFileAttributesA, _aPathName));
- } while ((ret == -1) && (__threadErrno == EINTR));
-#else
- ret = GetFileAttributesA((char *) __stringVal(aPathName));
- if (ret == -1) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
+ char _aPathName[MAXPATHLEN];
+
+ strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_API_NOINT_CALL1( "GetFileAttributesA", GetFileAttributesA, _aPathName));
+ } while ((ret == -1) && (__threadErrno == EINTR));
+#else
+ ret = GetFileAttributesA((char *) __stringVal(aPathName));
+ if (ret == -1) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
#endif
} else if (__isUnicode16String(aPathName)) {
- wchar_t _wPathName[MAXPATHLEN+1];
-
- _makeWchar(aPathName, _wPathName, sizeof(_wPathName));
+ wchar_t _wPathName[MAXPATHLEN+1];
+
+ _makeWchar(aPathName, _wPathName, sizeof(_wPathName));
#ifdef DO_WRAP_CALLS
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_API_NOINT_CALL1( "GetFileAttributesW", GetFileAttributesW, _wPathName));
- } while ((ret == -1) && (__threadErrno == EINTR));
-#else
- ret = GetFileAttributesW(_wPathName);
- if (ret == -1) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_API_NOINT_CALL1( "GetFileAttributesW", GetFileAttributesW, _wPathName));
+ } while ((ret == -1) && (__threadErrno == EINTR));
+#else
+ ret = GetFileAttributesW(_wPathName);
+ if (ret == -1) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
#endif
} else
- goto err;
+ goto err;
if (ret < 0) {
- @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
- RETURN ( false );
+ @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
+ RETURN ( false );
}
RETURN ( (ret & FILE_ATTRIBUTE_DIRECTORY) ? true : false);
err:;
@@ -6049,7 +6062,7 @@
^ self primitiveFailed
"an alternative implementation would be:
- ^ (self infoOf:aPathName) type == #directory
+ ^ (self infoOf:aPathName) type == #directory
"
"
self isDirectory:'.'
@@ -6137,8 +6150,8 @@
attr := self primGetFileAttributes:aPathName.
attr notNil ifTrue:[
- ^ (attr bitAnd: (FILE_ATTRIBUTE_DIRECTORY bitOr: FILE_ATTRIBUTE_READONLY ))
- ~~ FILE_ATTRIBUTE_READONLY
+ ^ (attr bitAnd: (FILE_ATTRIBUTE_DIRECTORY bitOr: FILE_ATTRIBUTE_READONLY ))
+ ~~ FILE_ATTRIBUTE_READONLY
].
^ false
@@ -6153,16 +6166,16 @@
"return some object filled with info for the file 'aPathName';
the info (for which corresponding access methods are understood by
the returned object) is:
- type - a symbol giving the files type
- mode - numeric access mode
- uid - owners user id
- gid - owners group id
- size - files size
- id - files number (i.e. inode number)
- accessed - last access time (as Timestamp)
- modified - last modification time (as Timestamp)
- statusChanged - last status change time (as Timestamp)
- alternativeName - (windows only:) the MSDOS name of the file
+ type - a symbol giving the files type
+ mode - numeric access mode
+ uid - owners user id
+ gid - owners group id
+ size - files size
+ id - files number (i.e. inode number)
+ accessed - last access time (as Timestamp)
+ modified - last modification time (as Timestamp)
+ statusChanged - last status change time (as Timestamp)
+ alternativeName - (windows only:) the MSDOS name of the file
Some of the fields may be returned as nil on systems which do not provide
all of the information.
@@ -6189,28 +6202,28 @@
wchar_t _wPathName[MAXPATHLEN+1];
if (_makeWchar(aPathName, _wPathName, sizeof(_wPathName)) < 0)
- goto badArgument;
+ goto badArgument;
#ifdef DO_WRAP_CALLS
{
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- result = (int)(STX_API_NOINT_CALL3( "GetFileAttributesExW", GetFileAttributesExW, _wPathName, GetFileExInfoStandard, &fileAttributeData));
- } while (!result && (__threadErrno == EINTR));
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ result = (int)(STX_API_NOINT_CALL3( "GetFileAttributesExW", GetFileAttributesExW, _wPathName, GetFileExInfoStandard, &fileAttributeData));
+ } while (!result && (__threadErrno == EINTR));
}
#else
result = GetFileAttributesExW(_wPathName, GetFileExInfoStandard, &fileAttributeData);
if (!result) {
- __threadErrno = __WIN32_ERR(GetLastError());
+ __threadErrno = __WIN32_ERR(GetLastError());
}
#endif
if (!result) {
- @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
+ @global(LastErrorNumber) = __mkSmallInteger(__threadErrno);
} else {
- id = __mkSmallInteger(0); /* could get it by opening ... */
- size = __MKLARGEINT64(1, fileAttributeData.nFileSizeLow, fileAttributeData.nFileSizeHigh);
+ id = __mkSmallInteger(0); /* could get it by opening ... */
+ size = __MKLARGEINT64(1, fileAttributeData.nFileSizeLow, fileAttributeData.nFileSizeHigh);
// if (fileAttributeData.cFileName[0] != '\0') {
// bcopy(fileAttributeData.cFileName, fileNameBuffer, MAXPATHLEN*sizeof(wchar_t));
@@ -6224,79 +6237,79 @@
// alternativeName = __mkStringOrU16String_maxlen(alternativeFileNameBuffer, 14); /* DOS name */
// }
- /*
- * simulate access bits
- */
- if (fileAttributeData.dwFileAttributes & FILE_ATTRIBUTE_READONLY) {
- modeBits = 0444;
- } else {
- modeBits = 0666;
- }
-
- if (fileAttributeData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
- type = @symbol(directory);
- modeBits = 0777; /* executable and WRITABLE - refer to comment in #isWritable: */
- } else if (fileAttributeData.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
- type = @symbol(symbolicLink);
- modeBits = 0777; /* even in UNIX symlinks have 0777 */
- } else {
- type = @symbol(regular);
- }
-
- mode = __mkSmallInteger(modeBits);
-
- cOsTime = FileTimeToOsTime1970(&fileAttributeData.ftCreationTime);
- aOsTime = FileTimeToOsTime1970(&fileAttributeData.ftLastAccessTime);
- mOsTime = FileTimeToOsTime1970(&fileAttributeData.ftLastWriteTime);
+ /*
+ * simulate access bits
+ */
+ if (fileAttributeData.dwFileAttributes & FILE_ATTRIBUTE_READONLY) {
+ modeBits = 0444;
+ } else {
+ modeBits = 0666;
+ }
+
+ if (fileAttributeData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
+ type = @symbol(directory);
+ modeBits = 0777; /* executable and WRITABLE - refer to comment in #isWritable: */
+ } else if (fileAttributeData.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
+ type = @symbol(symbolicLink);
+ modeBits = 0777; /* even in UNIX symlinks have 0777 */
+ } else {
+ type = @symbol(regular);
+ }
+
+ mode = __mkSmallInteger(modeBits);
+
+ cOsTime = FileTimeToOsTime1970(&fileAttributeData.ftCreationTime);
+ aOsTime = FileTimeToOsTime1970(&fileAttributeData.ftLastAccessTime);
+ mOsTime = FileTimeToOsTime1970(&fileAttributeData.ftLastWriteTime);
}
badArgument: ;
%}.
(aPathName endsWith:'.lnk') ifTrue:[
- type := #symbolicLink.
- "/ now done lazily in FileStatusInfo, when the path is accessed
- "/ path := self getLinkTarget:aPathName.
+ type := #symbolicLink.
+ "/ now done lazily in FileStatusInfo, when the path is accessed
+ "/ path := self getLinkTarget:aPathName.
].
mode isNil ifTrue:[
- (self isDirectory:aPathName) ifTrue:[
- "/ the code above fails for root directories (these do not exist).
- "/ simulate here
- mode := 8r777.
- type := #directory.
- uid := gid := 0.
- size := 0.
- id := 0.
- atime := mtime := ctime := Timestamp now.
- ].
+ (self isDirectory:aPathName) ifTrue:[
+ "/ the code above fails for root directories (these do not exist).
+ "/ simulate here
+ mode := 8r777.
+ type := #directory.
+ uid := gid := 0.
+ size := 0.
+ id := 0.
+ atime := mtime := ctime := Timestamp now.
+ ].
].
mode notNil ifTrue:[
- atime isNil ifTrue:[
- "/ rebias to 1970 by subtracting the number of millis from 1.1.1601 to 1.1.1970
- "/ aOsTime := aOsTime - self osTimeOf19700101. -- already done
- atime := Timestamp new fromOSTime:aOsTime.
- ].
- mtime isNil ifTrue:[
- "/ rebias to 1970 by subtracting the number of millis from 1.1.1601 to 1.1.1970
- "/ mOsTime := mOsTime - self osTimeOf19700101. -- already done
- mtime := Timestamp new fromOSTime:mOsTime.
- ].
- ctime isNil ifTrue:[
- "/ rebias to 1970 by subtracting the number of millis from 1.1.1601 to 1.1.1970
- "/ cOsTime := cOsTime - self osTimeOf19700101. -- already done
- ctime := Timestamp new fromOSTime:cOsTime.
- ].
-
- info := FileStatusInfo
- type:type mode:mode
- uid:uid gid:gid
- size:size
- id:id
- accessed:atime modified:mtime created:ctime
- sourcePath:aPathName
- fullName:fileName alternativeName:alternativeName.
- ^ info
+ atime isNil ifTrue:[
+ "/ rebias to 1970 by subtracting the number of millis from 1.1.1601 to 1.1.1970
+ "/ aOsTime := aOsTime - self osTimeOf19700101. -- already done
+ atime := Timestamp new fromOSTime:aOsTime.
+ ].
+ mtime isNil ifTrue:[
+ "/ rebias to 1970 by subtracting the number of millis from 1.1.1601 to 1.1.1970
+ "/ mOsTime := mOsTime - self osTimeOf19700101. -- already done
+ mtime := Timestamp new fromOSTime:mOsTime.
+ ].
+ ctime isNil ifTrue:[
+ "/ rebias to 1970 by subtracting the number of millis from 1.1.1601 to 1.1.1970
+ "/ cOsTime := cOsTime - self osTimeOf19700101. -- already done
+ ctime := Timestamp new fromOSTime:cOsTime.
+ ].
+
+ info := FileStatusInfo
+ type:type mode:mode
+ uid:uid gid:gid
+ size:size
+ id:id
+ accessed:atime modified:mtime created:ctime
+ sourcePath:aPathName
+ fullName:fileName alternativeName:alternativeName.
+ ^ info
].
^ nil
@@ -6317,8 +6330,8 @@
Returns nil if no mimeType for the given suffix is known."
^ RegistryEntry
- stringValueFor:'Content Type'
- atKey:('HKEY_CLASSES_ROOT\.' , aFileSuffix)
+ stringValueFor:'Content Type'
+ atKey:('HKEY_CLASSES_ROOT\.' , aFileSuffix)
"
self mimeTypeForSuffix:'au'
@@ -6351,20 +6364,20 @@
path := self primPathNameOf:pathName.
path isNil ifTrue:[
- (self isValidPath:pathName) ifFalse:[
- p := pathName.
- [(p size > 1)
- and:[p endsWith:(self fileSeparator)]
- ] whileTrue:[
- p := p copyButLast:1.
- ].
- ^ p
- ].
-
- "/
- "/ return the original - there is nothing else can we do
- "/
- path := self compressPath:pathName
+ (self isValidPath:pathName) ifFalse:[
+ p := pathName.
+ [(p size > 1)
+ and:[p endsWith:(self fileSeparator)]
+ ] whileTrue:[
+ p := p copyButLast:1.
+ ].
+ ^ p
+ ].
+
+ "/
+ "/ return the original - there is nothing else can we do
+ "/
+ path := self compressPath:pathName
].
^ path.
@@ -6393,54 +6406,54 @@
if (__isStringLike(aPathName)) {
#ifdef DO_WRAP_CALLS
- char _aPathName[MAXPATHLEN];
-
- strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_API_NOINT_CALL1( "GetFileAttributesA", GetFileAttributesA, _aPathName));
- } while ((ret < 0) && (__threadErrno == EINTR));
-#else
- ret = GetFileAttributesA((char *) __stringVal(aPathName));
- if (ret < 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
-#endif
- if (ret >= 0) {
- RETURN ( __mkSmallInteger(ret) );
- }
- __threadErrno = __WIN32_ERR(GetLastError());
- RETURN (nil);
+ char _aPathName[MAXPATHLEN];
+
+ strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_API_NOINT_CALL1( "GetFileAttributesA", GetFileAttributesA, _aPathName));
+ } while ((ret < 0) && (__threadErrno == EINTR));
+#else
+ ret = GetFileAttributesA((char *) __stringVal(aPathName));
+ if (ret < 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
+#endif
+ if (ret >= 0) {
+ RETURN ( __mkSmallInteger(ret) );
+ }
+ __threadErrno = __WIN32_ERR(GetLastError());
+ RETURN (nil);
}
if (__isUnicode16String(aPathName)) {
- wchar_t _wPathName[MAXPATHLEN+1];
-
- _makeWchar(aPathName, _wPathName, sizeof(_wPathName));
+ wchar_t _wPathName[MAXPATHLEN+1];
+
+ _makeWchar(aPathName, _wPathName, sizeof(_wPathName));
#ifdef DO_WRAP_CALLS
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_API_NOINT_CALL1( "GetFileAttributesW", GetFileAttributesW, _wPathName));
- } while ((ret < 0) && (__threadErrno == EINTR));
-#else
- ret = GetFileAttributesW(_wPathName);
- if (ret < 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
-#endif
- if (ret >= 0) {
- RETURN ( __mkSmallInteger(ret) );
- }
- __threadErrno = __WIN32_ERR(GetLastError());
- RETURN (nil);
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_API_NOINT_CALL1( "GetFileAttributesW", GetFileAttributesW, _wPathName));
+ } while ((ret < 0) && (__threadErrno == EINTR));
+#else
+ ret = GetFileAttributesW(_wPathName);
+ if (ret < 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
+#endif
+ if (ret >= 0) {
+ RETURN ( __mkSmallInteger(ret) );
+ }
+ __threadErrno = __WIN32_ERR(GetLastError());
+ RETURN (nil);
}
%}.
(aPathName isString and:[aPathName isUnicode32String]) ifTrue:[
- "/ WIN32 only support 16 bit (wide) strings
- ^ self primGetFileAttributes:aPathName asUnicode16String
+ "/ WIN32 only support 16 bit (wide) strings
+ ^ self primGetFileAttributes:aPathName asUnicode16String
].
^ self primitiveFailed
@@ -6472,86 +6485,86 @@
%{
if (__isStringLike(aPathName)) {
- char nameBuffer[MAXPATHLEN + 1];
- char nameBuffer2[MAXPATHLEN + 1];
- char *returnedName = NULL;
- int rslt;
+ char nameBuffer[MAXPATHLEN + 1];
+ char nameBuffer2[MAXPATHLEN + 1];
+ char *returnedName = NULL;
+ int rslt;
#ifdef DO_WRAP_CALLS
- char _aPathName[MAXPATHLEN+1];
-
- strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- rslt = (int)(STX_API_NOINT_CALL4( "GetFullPathNameA", GetFullPathNameA, _aPathName, MAXPATHLEN, nameBuffer, NULL));
- } while ((rslt < 0) && (__threadErrno == EINTR));
-#else
- rslt = GetFullPathNameA(__stringVal(aPathName), MAXPATHLEN, nameBuffer, NULL);
-#endif
- returnedName = nameBuffer;
-
- if (rslt > 0) {
+ char _aPathName[MAXPATHLEN+1];
+
+ strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ rslt = (int)(STX_API_NOINT_CALL4( "GetFullPathNameA", GetFullPathNameA, _aPathName, MAXPATHLEN, nameBuffer, NULL));
+ } while ((rslt < 0) && (__threadErrno == EINTR));
+#else
+ rslt = GetFullPathNameA(__stringVal(aPathName), MAXPATHLEN, nameBuffer, NULL);
+#endif
+ returnedName = nameBuffer;
+
+ if (rslt > 0) {
#ifdef DO_WRAP_CALLS
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- rslt = (int)(STX_API_NOINT_CALL3( "GetLongPathNameA", GetLongPathNameA, nameBuffer, nameBuffer2, MAXPATHLEN));
- } while ((rslt < 0) && (__threadErrno == EINTR));
-#else
- rslt = GetLongPathNameA(nameBuffer, nameBuffer2, MAXPATHLEN);
-#endif
- returnedName = nameBuffer2;
- }
- if (rslt > 0) {
- RETURN ( __MKSTRING(returnedName) );
- }
- __threadErrno = __WIN32_ERR(GetLastError());
- RETURN (nil);
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ rslt = (int)(STX_API_NOINT_CALL3( "GetLongPathNameA", GetLongPathNameA, nameBuffer, nameBuffer2, MAXPATHLEN));
+ } while ((rslt < 0) && (__threadErrno == EINTR));
+#else
+ rslt = GetLongPathNameA(nameBuffer, nameBuffer2, MAXPATHLEN);
+#endif
+ returnedName = nameBuffer2;
+ }
+ if (rslt > 0) {
+ RETURN ( __MKSTRING(returnedName) );
+ }
+ __threadErrno = __WIN32_ERR(GetLastError());
+ RETURN (nil);
}
if (__isUnicode16String(aPathName)) {
- wchar_t nameBuffer[MAXPATHLEN + 1];
- wchar_t nameBuffer2[MAXPATHLEN + 1];
- wchar_t *returnedName = NULL;
- int rslt;
- wchar_t _wPathName[MAXPATHLEN+1];
-
- _makeWchar(aPathName, _wPathName, sizeof(_wPathName));
+ wchar_t nameBuffer[MAXPATHLEN + 1];
+ wchar_t nameBuffer2[MAXPATHLEN + 1];
+ wchar_t *returnedName = NULL;
+ int rslt;
+ wchar_t _wPathName[MAXPATHLEN+1];
+
+ _makeWchar(aPathName, _wPathName, sizeof(_wPathName));
#ifdef DO_WRAP_CALLS
- do {
- __threadErrno = 0;
- rslt = (int)(STX_API_NOINT_CALL4( "GetFullPathNameW", GetFullPathNameW, _wPathName, MAXPATHLEN, nameBuffer, NULL));
- } while ((rslt < 0) && (__threadErrno == EINTR));
-#else
- rslt = GetFullPathNameW(_wPathName, MAXPATHLEN, nameBuffer, NULL);
-#endif
-
- returnedName = nameBuffer;
-
- if (rslt > 0) {
+ do {
+ __threadErrno = 0;
+ rslt = (int)(STX_API_NOINT_CALL4( "GetFullPathNameW", GetFullPathNameW, _wPathName, MAXPATHLEN, nameBuffer, NULL));
+ } while ((rslt < 0) && (__threadErrno == EINTR));
+#else
+ rslt = GetFullPathNameW(_wPathName, MAXPATHLEN, nameBuffer, NULL);
+#endif
+
+ returnedName = nameBuffer;
+
+ if (rslt > 0) {
#ifdef DO_WRAP_CALLS
- do {
- __threadErrno = 0;
- rslt = (int)(STX_API_NOINT_CALL3( "GetLongPathNameW", GetLongPathNameW, nameBuffer, nameBuffer2, MAXPATHLEN));
- } while ((rslt < 0) && (__threadErrno == EINTR));
-#else
- rslt = GetLongPathNameW(nameBuffer, nameBuffer2, MAXPATHLEN);
-#endif
- returnedName = nameBuffer2;
- }
- if (rslt > 0) {
- RETURN (__mkStringOrU16String_maxlen(returnedName, MAXPATHLEN));
- }
- __threadErrno = __WIN32_ERR(GetLastError());
- RETURN (nil);
+ do {
+ __threadErrno = 0;
+ rslt = (int)(STX_API_NOINT_CALL3( "GetLongPathNameW", GetLongPathNameW, nameBuffer, nameBuffer2, MAXPATHLEN));
+ } while ((rslt < 0) && (__threadErrno == EINTR));
+#else
+ rslt = GetLongPathNameW(nameBuffer, nameBuffer2, MAXPATHLEN);
+#endif
+ returnedName = nameBuffer2;
+ }
+ if (rslt > 0) {
+ RETURN (__mkStringOrU16String_maxlen(returnedName, MAXPATHLEN));
+ }
+ __threadErrno = __WIN32_ERR(GetLastError());
+ RETURN (nil);
}
error = @symbol(argument); // argument is not a string or unicode16string
%}.
error notNil ifTrue:[
- self primitiveFailed:error.
+ self primitiveFailed:error.
].
^ nil
@@ -6589,51 +6602,51 @@
int ret;
if (__isSmallInteger(anInteger)) {
- if (__isStringLike(aPathName)) {
+ if (__isStringLike(aPathName)) {
#ifdef DO_WRAP_CALLS
- char _aPathName[MAXPATHLEN];
-
- strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_API_NOINT_CALL2( "SetFileAttributesA", SetFileAttributesA, _aPathName, __intVal(anInteger)));
- } while ((ret < 0) && (__threadErrno == EINTR));
-#else
- ret = SetFileAttributesA((char *) __stringVal(aPathName), __intVal(anInteger));
- if (ret < 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
-#endif
- if (ret >= 0) {
- RETURN ( true );
- }
- __threadErrno = __WIN32_ERR(GetLastError());
- RETURN (false);
- }
-
- if (__isUnicode16String(aPathName)) {
- wchar_t _wPathName[MAXPATHLEN+1];
-
- _makeWchar(aPathName, _wPathName, sizeof(_wPathName));
+ char _aPathName[MAXPATHLEN];
+
+ strncpy(_aPathName, __stringVal(aPathName), MAXPATHLEN-1); _aPathName[MAXPATHLEN-1] = '\0';
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_API_NOINT_CALL2( "SetFileAttributesA", SetFileAttributesA, _aPathName, __intVal(anInteger)));
+ } while ((ret < 0) && (__threadErrno == EINTR));
+#else
+ ret = SetFileAttributesA((char *) __stringVal(aPathName), __intVal(anInteger));
+ if (ret < 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
+#endif
+ if (ret >= 0) {
+ RETURN ( true );
+ }
+ __threadErrno = __WIN32_ERR(GetLastError());
+ RETURN (false);
+ }
+
+ if (__isUnicode16String(aPathName)) {
+ wchar_t _wPathName[MAXPATHLEN+1];
+
+ _makeWchar(aPathName, _wPathName, sizeof(_wPathName));
#ifdef DO_WRAP_CALLS
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_API_NOINT_CALL2( "SetFileAttributesW", SetFileAttributesW, _wPathName, __intVal(anInteger)));
- } while ((ret < 0) && (__threadErrno == EINTR));
-#else
- ret = SetFileAttributesW(_wPathName, __intVal(anInteger));
- if (ret < 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
-#endif
- if (ret >= 0) {
- RETURN ( true );
- }
- __threadErrno = __WIN32_ERR(GetLastError());
- RETURN (false);
- }
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_API_NOINT_CALL2( "SetFileAttributesW", SetFileAttributesW, _wPathName, __intVal(anInteger)));
+ } while ((ret < 0) && (__threadErrno == EINTR));
+#else
+ ret = SetFileAttributesW(_wPathName, __intVal(anInteger));
+ if (ret < 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
+#endif
+ if (ret >= 0) {
+ RETURN ( true );
+ }
+ __threadErrno = __WIN32_ERR(GetLastError());
+ RETURN (false);
+ }
}
%}.
^ self primitiveFailed
@@ -6641,9 +6654,9 @@
setCurrentDirectory:pathName
pathName bitsPerCharacter == 16 ifTrue:[
- self primSetCurrentDirectoryW:(pathName copyWith:(Character value:0))
+ self primSetCurrentDirectoryW:(pathName copyWith:(Character value:0))
] ifFalse:[
- self primSetCurrentDirectoryA:pathName
+ self primSetCurrentDirectoryA:pathName
].
"
@@ -6661,7 +6674,7 @@
attr := self primGetFileAttributes:aPathName.
(attr bitTest:FILE_ATTRIBUTE_HIDDEN ) ifFalse:[
- ^ self primSetFileAttributes:aPathName to:(attr bitOr:2).
+ ^ self primSetFileAttributes:aPathName to:(attr bitOr:2).
].
^ true "/ aready set
@@ -6676,7 +6689,7 @@
attr := self primGetFileAttributes:aPathName.
(attr bitTest:FILE_ATTRIBUTE_NORMAL ) ifFalse:[
- ^ self primSetFileAttributes:aPathName to:(attr bitOr:2).
+ ^ self primSetFileAttributes:aPathName to:(attr bitOr:2).
].
^ true "/ aready set
!
@@ -6688,7 +6701,7 @@
attr := self primGetFileAttributes:aPathName.
(attr bitTest:FILE_ATTRIBUTE_TEMPORARY ) ifFalse:[
- ^ self primSetFileAttributes:aPathName to:(attr bitOr:2).
+ ^ self primSetFileAttributes:aPathName to:(attr bitOr:2).
].
^ true "/ aready set
!
@@ -6698,7 +6711,7 @@
For nonexistent files, nil is returned."
"could be implemented as:
- (self infoOf:aPathName) accessed
+ (self infoOf:aPathName) accessed
"
| i|
@@ -6716,7 +6729,7 @@
For nonexistent files, nil is returned."
"could be implemented as:
- (self infoOf:aPathName) modified
+ (self infoOf:aPathName) modified
"
| i|
@@ -6739,7 +6752,7 @@
"
this could have been implemented as:
- (self infoOf:aPathName) type
+ (self infoOf:aPathName) type
"
i := self infoOf:aPathName.
@@ -6756,31 +6769,31 @@
volumeLabelOf: aFilenameOrString
- "Answer the volume label of the disk containing aFilenameOrString."
+ "Answer the volume label of the disk containing aFilenameOrString."
| volName |
volName := String new: 255.
( self
- getVolumeInformation: aFilenameOrString asFilename volume, '\'
- name: volName
- nameSize: volName size
- serialNumber: nil
- maximumComponentLength: nil
- fileSystemFlags: nil
- fileSystemName: nil
- fileSystemNameSize: 0 )
- ifFalse: [
- Transcript showCR:'GetVolumeInformation error'.
- ^ ''
- ].
+ getVolumeInformation: aFilenameOrString asFilename volume, '\'
+ name: volName
+ nameSize: volName size
+ serialNumber: nil
+ maximumComponentLength: nil
+ fileSystemFlags: nil
+ fileSystemName: nil
+ fileSystemNameSize: 0 )
+ ifFalse: [
+ Transcript showCR:'GetVolumeInformation error'.
+ ^ ''
+ ].
^ volName copyUpTo: Character null
"
- self volumeLabelOf: 'C:\pepe.pep'
- self volumeLabelOf: 'C:'
- self volumeLabelOf: 'C:\\'
- self volumeLabelOf: 'C:\'
+ self volumeLabelOf: 'C:\pepe.pep'
+ self volumeLabelOf: 'C:'
+ self volumeLabelOf: 'C:\\'
+ self volumeLabelOf: 'C:\'
"
!
@@ -6793,7 +6806,7 @@
aPathString size < 2 ifTrue:[^ ''].
(aPathString at:2) == $: ifTrue:[
- ^ (aPathString at:1) asString.
+ ^ (aPathString at:1) asString.
].
^ ''
! !
@@ -6810,11 +6823,11 @@
html documents, pdf documents etc."
Error
- handle:[:ex |
- Dialog warn:'Shell execution failed'
- ] do:[
- self openApplicationForDocument:aFilenameOrString operation:#open
- ]
+ handle:[:ex |
+ Dialog warn:'Shell execution failed'
+ ] do:[
+ self openApplicationForDocument:aFilenameOrString operation:#open
+ ]
"
self openDocumentationFilename: 'C:\WINDOWS\Help\clipbrd.chm' asFilename
@@ -6871,8 +6884,8 @@
%{
while(1) {
- console_printf("blocking...");
- Sleep(50);
+ console_printf("blocking...");
+ Sleep(50);
}
%}.
"
@@ -6886,8 +6899,8 @@
%{
while(1) {
- console_printf("blocking...");
- STX_API_CALL1("Sleep", Sleep, 50);
+ console_printf("blocking...");
+ STX_API_CALL1("Sleep", Sleep, 50);
}
%}.
"
@@ -6904,8 +6917,8 @@
int ret;
do {
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_API_NOINT_CALL1("Sleep", Sleep, 60000));
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_API_NOINT_CALL1("Sleep", Sleep, 60000));
} while (ret < 0 && __threadErrno == EINTR);
%}.
"
@@ -6922,8 +6935,8 @@
int ret;
do {
- // do not cast to INT - will loose sign bit then!
- ret = STX_API_CALL1("Sleep", Sleep, 60000);
+ // do not cast to INT - will loose sign bit then!
+ ret = STX_API_CALL1("Sleep", Sleep, 60000);
} while (ret < 0 && __threadErrno == EINTR);
%}.
"
@@ -6945,8 +6958,8 @@
if (__isSmallInteger(signalNumber)) {
#ifdef SIG_DFL
- signal(__intVal(signalNumber), SIG_DFL);
- RETURN (self);
+ signal(__intVal(signalNumber), SIG_DFL);
+ RETURN (self);
#endif
}
%}.
@@ -6989,14 +7002,14 @@
%{ /* NOCONTEXT */
if (__isSmallInteger(signalNumber)) {
- int sigNo = __intVal(signalNumber);
-
- if (sigNo == 0) {
- RETURN (self);
- }
+ int sigNo = __intVal(signalNumber);
+
+ if (sigNo == 0) {
+ RETURN (self);
+ }
#ifdef SIG_IGN
- signal(sigNo, SIG_IGN);
- RETURN (self);
+ signal(sigNo, SIG_IGN);
+ RETURN (self);
#endif
}
%}.
@@ -7017,8 +7030,8 @@
disableTimer
"disable timer interrupts.
WARNING:
- the system will not operate correctly with timer interrupts
- disabled, because no scheduling or timeouts are possible."
+ the system will not operate correctly with timer interrupts
+ disabled, because no scheduling or timeouts are possible."
%{ /* NOCONTEXT */
@@ -7141,121 +7154,121 @@
&& (sigNr <= SIG_LIMIT)
#endif
) {
- /*
- * standard signals are forced into standard handlers
- * - all others go into general signalInterrupt
- */
+ /*
+ * standard signals are forced into standard handlers
+ * - all others go into general signalInterrupt
+ */
#if defined(SIGPOLL) && defined(SIGIO)
- if (sigNr == SIGPOLL)
- sigNr = SIGIO;
-#endif
- switch (sigNr) {
- case 0:
- /* enabling a non-supported signal */
- RETURN (self);
+ if (sigNr == SIGPOLL)
+ sigNr = SIGIO;
+#endif
+ switch (sigNr) {
+ case 0:
+ /* enabling a non-supported signal */
+ RETURN (self);
#ifdef SIGBREAK
- case SIGBREAK:
+ case SIGBREAK:
#endif
#ifdef SIGINT
- case SIGINT:
+ case SIGINT:
#endif
#ifdef SIGQUIT
- case SIGQUIT:
+ case SIGQUIT:
#endif
#ifdef SIGNALDEBUGWIN32
- console_printf("ConsoleSignal %d\n",sigNr);
-#endif
- SetConsoleCtrlHandler((PHANDLER_ROUTINE)__signalUserInterruptWIN32,TRUE);
- RETURN (self);
+ console_printf("ConsoleSignal %d\n",sigNr);
+#endif
+ SetConsoleCtrlHandler((PHANDLER_ROUTINE)__signalUserInterruptWIN32,TRUE);
+ RETURN (self);
#ifdef SIGFPE
- case SIGFPE:
- handler = __signalFpExceptionInterrupt;
- break;
+ case SIGFPE:
+ handler = __signalFpExceptionInterrupt;
+ break;
#endif
#ifdef SIGPIPE
- case SIGPIPE:
- handler = __signalPIPEInterrupt;
- break;
+ case SIGPIPE:
+ handler = __signalPIPEInterrupt;
+ break;
#endif
#ifdef SIGBUS
- case SIGBUS:
- handler = __signalBUSInterrupt;
- break;
+ case SIGBUS:
+ handler = __signalBUSInterrupt;
+ break;
#endif
#ifdef SIGSEGV
- case SIGSEGV:
- handler = __signalSEGVInterrupt;
- break;
+ case SIGSEGV:
+ handler = __signalSEGVInterrupt;
+ break;
#endif
#ifdef SIGILL
- case SIGILL:
- handler = __signalTrapInterrupt;
- break;
+ case SIGILL:
+ handler = __signalTrapInterrupt;
+ break;
#endif
#ifdef SIGEMT
- case SIGEMT:
- handler = __signalTrapInterrupt;
- break;
+ case SIGEMT:
+ handler = __signalTrapInterrupt;
+ break;
#endif
#ifdef SIGIO
- case SIGIO:
- handler = __signalIoInterrupt;
- break;
+ case SIGIO:
+ handler = __signalIoInterrupt;
+ break;
#endif
#ifdef CHILD_SIGNAL
- case CHILD_SIGNAL:
- handler = __signalChildInterrupt;
- break;
-#endif
-
- default:
- handler = __signalInterrupt;
- break;
- }
-
- {
+ case CHILD_SIGNAL:
+ handler = __signalChildInterrupt;
+ break;
+#endif
+
+ default:
+ handler = __signalInterrupt;
+ break;
+ }
+
+ {
#ifdef HAS_SIGACTION
- struct sigaction act;
-
- /*
- * Do not add SA_RESTART here. A signal can cause a
- * thread switch, another thread can do a garbage collect
- * and restarted system calls may write into old
- * (collected) addresses.
- */
-
- act.sa_flags = SA_SIGINFO; /* <- if you add more, remember dummys at the top */
- sigemptyset(&act.sa_mask);
- act.sa_handler = handler;
- sigaction(sigNr, &act, 0);
+ struct sigaction act;
+
+ /*
+ * Do not add SA_RESTART here. A signal can cause a
+ * thread switch, another thread can do a garbage collect
+ * and restarted system calls may write into old
+ * (collected) addresses.
+ */
+
+ act.sa_flags = SA_SIGINFO; /* <- if you add more, remember dummys at the top */
+ sigemptyset(&act.sa_mask);
+ act.sa_handler = handler;
+ sigaction(sigNr, &act, 0);
#else
# ifdef HAS_SIGVEC
- struct sigvec vec;
-
- vec.sv_flags = SV_INTERRUPT;
- sigemptyset(&vec.sv_mask);
- vec.sv_handler = handler;
- sigvec(sigNr, &vec, NULL);
+ struct sigvec vec;
+
+ vec.sv_flags = SV_INTERRUPT;
+ sigemptyset(&vec.sv_mask);
+ vec.sv_handler = handler;
+ sigvec(sigNr, &vec, NULL);
# else
# ifdef WIN32
# ifdef SIGNALDEBUGWIN32
- console_printf("signal %d can't change handler\n",sigNr);
+ console_printf("signal %d can't change handler\n",sigNr);
# endif
# else
- (void) signal(sigNr, handler);
+ (void) signal(sigNr, handler);
# endif
# endif
#endif
- }
-
- /*
- * maybe, we should Return the old enable-status
- * as boolean here ...
- */
- RETURN (self);
+ }
+
+ /*
+ * maybe, we should Return the old enable-status
+ * as boolean here ...
+ */
+ RETURN (self);
}
%}.
@@ -7273,8 +7286,8 @@
extern void __win32SetTimer();
if (__isSmallInteger(milliSeconds)) {
- __win32SetTimer( __intVal(milliSeconds) );
- RETURN (true);
+ __win32SetTimer( __intVal(milliSeconds) );
+ RETURN (true);
}
%}.
^ false
@@ -7294,8 +7307,8 @@
The process terminates immediately and has no chance to perform any cleanup actions.
WARNING: in order to avoid zombie processes (on unix),
- you have to fetch the processes exitstatus with
- OperatingSystem>>getStatusOfProcess:aProcessId."
+ you have to fetch the processes exitstatus with
+ OperatingSystem>>getStatusOfProcess:aProcessId."
self terminateProcess:processId
!
@@ -7305,8 +7318,8 @@
The process(es) terminate immediately and has no chance to perform any cleanup actions.
WARNING: in order to avoid zombie processes (on unix),
- you have to fetch the processes exitstatus with
- OperatingSystem>>getStatusOfProcess:aProcessId."
+ you have to fetch the processes exitstatus with
+ OperatingSystem>>getStatusOfProcess:aProcessId."
self terminateProcessGroup:processGroupId
!
@@ -7355,9 +7368,9 @@
Do not confuse UNIX signals with Smalltalk-Signals.
WARNING: in order to avoid zombie processes (on unix),
- you may have to fetch the processes exitstatus with
- OperatingSystem>>getStatusOfProcess:aProcessId
- if the signal terminates that process."
+ you may have to fetch the processes exitstatus with
+ OperatingSystem>>getStatusOfProcess:aProcessId
+ if the signal terminates that process."
"/
"/ either invalid argument (non-integers)
@@ -7373,9 +7386,9 @@
Do not confuse UNIX signals with Smalltalk-Signals.
WARNING: in order to avoid zombie processes (on unix),
- you may have to fetch the processes exitstatus with
- OperatingSystem>>getStatusOfProcess:aProcessId
- if the signal terminates that process."
+ you may have to fetch the processes exitstatus with
+ OperatingSystem>>getStatusOfProcess:aProcessId
+ if the signal terminates that process."
"/
"/ either invalid argument (non-integers)
@@ -7388,15 +7401,15 @@
"terminate a process.
ATTENTION WIN32:
- Under unix, we have terminateProcess, which does a soft
- terminate (giving the process a chance to cleanup) and
- killProcess, which does a hard terminate.
- Under WIN32, both (currently) use the TerminateProcess
- function, which unconditionally causes a process to exit.
- I.e. under WIN32, the process has no chance to perform cleanup.
- Use it only in extreme circumstances. The state of
- global data maintained by dynamic-link libraries (DLLs)
- may be compromised if TerminateProcess is used.
+ Under unix, we have terminateProcess, which does a soft
+ terminate (giving the process a chance to cleanup) and
+ killProcess, which does a hard terminate.
+ Under WIN32, both (currently) use the TerminateProcess
+ function, which unconditionally causes a process to exit.
+ I.e. under WIN32, the process has no chance to perform cleanup.
+ Use it only in extreme circumstances. The state of
+ global data maintained by dynamic-link libraries (DLLs)
+ may be compromised if TerminateProcess is used.
TODO: send a WM_QUIT instead, to allow for proper shutdown."
@@ -7407,34 +7420,34 @@
"terminate a process.
ATTENTION WIN32:
- Under unix, we have terminateProcess, which does a soft
- terminate (giving the process a chance to cleanup) and
- killProcess, which does a hard terminate.
- Under WIN32, both (currently) use the TerminateProcess
- function, which unconditionally causes a process to exit.
- I.e. under WIN32, the process has no chance to perform cleanup.
- Use it only in extreme circumstances. The state of
- global data maintained by dynamic-link libraries (DLLs)
- may be compromised if TerminateProcess is used.
+ Under unix, we have terminateProcess, which does a soft
+ terminate (giving the process a chance to cleanup) and
+ killProcess, which does a hard terminate.
+ Under WIN32, both (currently) use the TerminateProcess
+ function, which unconditionally causes a process to exit.
+ I.e. under WIN32, the process has no chance to perform cleanup.
+ Use it only in extreme circumstances. The state of
+ global data maintained by dynamic-link libraries (DLLs)
+ may be compromised if TerminateProcess is used.
TODO: send a WM_QUIT instead, to allow for proper shutdown."
%{
if (__isExternalAddressLike(processHandleOrPid) ) {
- HANDLE hProcess = _HANDLEVal(processHandleOrPid);
-
- if (hProcess != 0) {
- TerminateProcess( hProcess, __intVal(exitCode) );
- }
- RETURN( true );
+ HANDLE hProcess = _HANDLEVal(processHandleOrPid);
+
+ if (hProcess != 0) {
+ TerminateProcess( hProcess, __intVal(exitCode) );
+ }
+ RETURN( true );
} else if( __isSmallInteger(processHandleOrPid) ) {
- HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, 0, __smallIntegerVal(processHandleOrPid));
-
- if( hProcess != 0 ) {
- TerminateProcess( hProcess, __intVal(exitCode) );
- CloseHandle(hProcess);
- }
- RETURN( true );
+ HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, 0, __smallIntegerVal(processHandleOrPid));
+
+ if( hProcess != 0 ) {
+ TerminateProcess( hProcess, __intVal(exitCode) );
+ CloseHandle(hProcess);
+ }
+ RETURN( true );
}
%}.
self primitiveFailed:#invalidParameter.
@@ -7448,15 +7461,15 @@
"terminate a process group (that is all subprocesses of a process).
ATTENTION WIN32:
- Under unix, we have terminateProcess, which does a soft
- terminate (giving the process a chance to cleanup) and
- killProcess, which does a hard terminate.
- Under WIN32, both (currently) use the TerminateProcess
- function, which unconditionally causes a process to exit.
- I.e. under WIN32, the process has no chance to perform cleanup.
- Use it only in extreme circumstances. The state of
- global data maintained by dynamic-link libraries (DLLs)
- may be compromised if TerminateProcess is used.
+ Under unix, we have terminateProcess, which does a soft
+ terminate (giving the process a chance to cleanup) and
+ killProcess, which does a hard terminate.
+ Under WIN32, both (currently) use the TerminateProcess
+ function, which unconditionally causes a process to exit.
+ I.e. under WIN32, the process has no chance to perform cleanup.
+ Use it only in extreme circumstances. The state of
+ global data maintained by dynamic-link libraries (DLLs)
+ may be compromised if TerminateProcess is used.
TODO: send a WM_QUIT instead, to allow for proper shutdown."
| pid list groupsToTerminate anyMore |
@@ -7465,9 +7478,9 @@
list size == 0 ifTrue:[^ self ].
processGroupHandleOrPid isInteger ifTrue:[
- pid := processGroupHandleOrPid
+ pid := processGroupHandleOrPid
] ifFalse:[
- pid := processGroupHandleOrPid pid.
+ pid := processGroupHandleOrPid pid.
].
groupsToTerminate := Set with:pid.
list := list asSet.
@@ -7475,21 +7488,21 @@
"/ Transcript show:'terminate group '; showCR:pid.
anyMore := true.
[anyMore] whileTrue:[
- anyMore := false.
- list doWithExit:[:anOSProcess :exit |
- |pid|
-
- (groupsToTerminate includes:anOSProcess parentPid) ifTrue:[
- pid := anOSProcess pid.
- groupsToTerminate add:pid.
- "/ Transcript show:'terminate '; showCR:pid.
- self terminateProcess:( pid ).
- list remove:anOSProcess.
- anyMore := true.
- "/ need to restart: we have removed an element inside the loop
- exit value:nil
- ].
- ].
+ anyMore := false.
+ list doWithExit:[:anOSProcess :exit |
+ |pid|
+
+ (groupsToTerminate includes:anOSProcess parentPid) ifTrue:[
+ pid := anOSProcess pid.
+ groupsToTerminate add:pid.
+ "/ Transcript show:'terminate '; showCR:pid.
+ self terminateProcess:( pid ).
+ list remove:anOSProcess.
+ anyMore := true.
+ "/ need to restart: we have removed an element inside the loop
+ exit value:nil
+ ].
+ ].
].
! !
@@ -7516,8 +7529,8 @@
sa.bInheritHandle = FALSE;
if( ! CreatePipe( &pipeRead, &pipeWrite, &sa, 0 ) ) {
- @global(LastErrorNumber) = error = __mkSmallInteger( __WIN32_ERR(GetLastError()) );
- goto out;
+ @global(LastErrorNumber) = error = __mkSmallInteger( __WIN32_ERR(GetLastError()) );
+ goto out;
}
#if 1
@@ -7529,8 +7542,8 @@
*/
# ifdef PROCESSDEBUGWIN32
if (flag_PROCESSDEBUGWIN32) {
- console_printf("piperead %x\n",pipeRead);
- console_printf("pipewrite %x\n",pipeWrite);
+ console_printf("piperead %x\n",pipeRead);
+ console_printf("pipewrite %x\n",pipeWrite);
}
# endif
fd1 = __mkSmallInteger(_open_osfhandle(pipeRead, O_BINARY));
@@ -7539,9 +7552,9 @@
out:;
%}.
(fd1 notNil and:[fd2 notNil]) ifTrue:[
- (fd1 ~~ -1 and:[fd2 ~~ -1]) ifTrue:[
- ^ Array with:fd1 with:fd2.
- ].
+ (fd1 ~~ -1 and:[fd2 ~~ -1]) ifTrue:[
+ ^ Array with:fd1 with:fd2.
+ ].
].
^ nil
@@ -7553,17 +7566,17 @@
"free pid resource"
%{
if (__isExternalAddressLike(pid) ) {
- HANDLE __pid = _HANDLEVal(pid);
-
- if (__pid != 0) {
+ HANDLE __pid = _HANDLEVal(pid);
+
+ if (__pid != 0) {
#ifdef PROCESSDEBUGWIN32
- if (flag_PROCESSDEBUGWIN32) {
- console_printf("Close ProcessHandle %x\n", __pid);
- }
-#endif
- CloseHandle(__pid);
- _SETHANDLEVal(pid, 0);
- }
+ if (flag_PROCESSDEBUGWIN32) {
+ console_printf("Close ProcessHandle %x\n", __pid);
+ }
+#endif
+ CloseHandle(__pid);
+ _SETHANDLEVal(pid, 0);
+ }
}
%}.
^ true.
@@ -7578,18 +7591,18 @@
spaceForTargetHandle := ExternalLong unprotectedNew.
hMe := self getCurrentProcess.
rslt := self
- primDuplicateHandle_hSourcProcessHandle:hMe
- hSourceHandle:aHandle
- hTargetProcesshandle:targetProcessHandle ? hMe
- lpTargetHandle:spaceForTargetHandle
- dwDesiredAccess:0
- bInheritHandle:false
- dwOptions:2 "DUPLICATE_SAME_ACCESS".
+ primDuplicateHandle_hSourcProcessHandle:hMe
+ hSourceHandle:aHandle
+ hTargetProcesshandle:targetProcessHandle ? hMe
+ lpTargetHandle:spaceForTargetHandle
+ dwDesiredAccess:0
+ bInheritHandle:false
+ dwOptions:2 "DUPLICATE_SAME_ACCESS".
rslt ifFalse:[
- spaceForTargetHandle free.
- self primitiveFailed:self primGetLastError.
- ^ nil
+ spaceForTargetHandle free.
+ self primitiveFailed:self primGetLastError.
+ ^ nil
].
addr := spaceForTargetHandle value.
@@ -7615,20 +7628,20 @@
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if( hProcessSnap != INVALID_HANDLE_VALUE ) {
- pe32.dwSize = sizeof(PROCESSENTRY32);
- Process32First( hProcessSnap, & pe32 );
-
- do {
- st_perProc = __SSEND0(@global(OSProcess), @symbol(new), 0);
- f = __MKSTRING(pe32.szExeFile);
- __SSEND1(st_perProc, @symbol(commandLine:), 0, f );
- __SSEND1(st_perProc, @symbol(pid:), 0, __mkSmallInteger(pe32.th32ProcessID) );
- __SSEND1(st_perProc, @symbol(parentPid:), 0, __mkSmallInteger(pe32.th32ParentProcessID) );
-
- __SSEND1(list, @symbol(add:), 0, st_perProc );
- }
- while(Process32Next(hProcessSnap,&pe32));
- CloseHandle( hProcessSnap );
+ pe32.dwSize = sizeof(PROCESSENTRY32);
+ Process32First( hProcessSnap, & pe32 );
+
+ do {
+ st_perProc = __SSEND0(@global(OSProcess), @symbol(new), 0);
+ f = __MKSTRING(pe32.szExeFile);
+ __SSEND1(st_perProc, @symbol(commandLine:), 0, f );
+ __SSEND1(st_perProc, @symbol(pid:), 0, __mkSmallInteger(pe32.th32ProcessID) );
+ __SSEND1(st_perProc, @symbol(parentPid:), 0, __mkSmallInteger(pe32.th32ParentProcessID) );
+
+ __SSEND1(list, @symbol(add:), 0, st_perProc );
+ }
+ while(Process32Next(hProcessSnap,&pe32));
+ CloseHandle( hProcessSnap );
}
#endif /* TLHELP32_H_INCLUDE */
@@ -7649,8 +7662,8 @@
getPrivateProfileString:appNameString key:keyNameString default:defaultString fileName:fileName
^ self
- getProfileString:appNameString key:keyNameString default:defaultString
- fileName:fileName private:true
+ getProfileString:appNameString key:keyNameString default:defaultString
+ fileName:fileName private:true
"Modified: / 27-07-2006 / 11:57:03 / fm"
!
@@ -7668,40 +7681,40 @@
OBJ retVal;
if (__isStringLike(appNameString)) {
- __appNameString = __stringVal(appNameString);
+ __appNameString = __stringVal(appNameString);
} else if (appNameString != nil)
- goto primitiveFail;
+ goto primitiveFail;
if (__isStringLike(keyNameString)) {
- __keyNameString = __stringVal(keyNameString);
+ __keyNameString = __stringVal(keyNameString);
} else if (keyNameString != nil)
- goto primitiveFail;
+ goto primitiveFail;
if (__isStringLike(defaultString)) {
- __defaultString = __stringVal(defaultString);
+ __defaultString = __stringVal(defaultString);
} else if (defaultString != nil)
- goto primitiveFail;
+ goto primitiveFail;
do {
- nChars = GetProfileString(__appNameString, __keyNameString, __defaultString, usedBuffer, bufferSize);
- if (nChars >= 0) {
- if (nChars != bufferSize-1) {
- retVal = __MKSTRING_L(usedBuffer, nChars);
- if (usedBuffer != quickBuffer) free(usedBuffer);
- RETURN (retVal);
- }
-
- {
- /* use a bigger buffer */
- char *newBuffer;
- int newBufferSize = bufferSize * 2;
-
- newBuffer = (char *)malloc( newBufferSize );
- if (usedBuffer != quickBuffer) free(usedBuffer);
- usedBuffer = newBuffer;
- bufferSize = newBufferSize;
- }
- }
+ nChars = GetProfileString(__appNameString, __keyNameString, __defaultString, usedBuffer, bufferSize);
+ if (nChars >= 0) {
+ if (nChars != bufferSize-1) {
+ retVal = __MKSTRING_L(usedBuffer, nChars);
+ if (usedBuffer != quickBuffer) free(usedBuffer);
+ RETURN (retVal);
+ }
+
+ {
+ /* use a bigger buffer */
+ char *newBuffer;
+ int newBufferSize = bufferSize * 2;
+
+ newBuffer = (char *)malloc( newBufferSize );
+ if (usedBuffer != quickBuffer) free(usedBuffer);
+ usedBuffer = newBuffer;
+ bufferSize = newBufferSize;
+ }
+ }
} while (nChars > 0);
RETURN (nil);
@@ -7726,49 +7739,49 @@
OBJ retVal;
if (__isStringLike(appNameString)) {
- __appNameString = __stringVal(appNameString);
+ __appNameString = __stringVal(appNameString);
} else if (appNameString != nil)
- goto primitiveFail;
+ goto primitiveFail;
if (__isStringLike(keyNameString)) {
- __keyNameString = __stringVal(keyNameString);
+ __keyNameString = __stringVal(keyNameString);
} else if (keyNameString != nil)
- goto primitiveFail;
+ goto primitiveFail;
if (__isStringLike(defaultString)) {
- __defaultString = __stringVal(defaultString);
+ __defaultString = __stringVal(defaultString);
} else if (defaultString != nil)
- goto primitiveFail;
+ goto primitiveFail;
if (private == true) {
- if (! __isStringLike(fileName)) goto primitiveFail;
- __fileName = __stringVal(fileName);
+ if (! __isStringLike(fileName)) goto primitiveFail;
+ __fileName = __stringVal(fileName);
}
do {
- if (private == true) {
- nChars = GetPrivateProfileString(__appNameString, __keyNameString, __defaultString, usedBuffer, bufferSize, __fileName);
- } else {
- nChars = GetProfileString(__appNameString, __keyNameString, __defaultString, usedBuffer, bufferSize);
- }
- if (nChars >= 0) {
- if (nChars != bufferSize-1) {
- retVal = __MKSTRING_L(usedBuffer, nChars);
- if (usedBuffer != quickBuffer) free(usedBuffer);
- RETURN (retVal);
- }
-
- {
- /* use a bigger buffer */
- char *newBuffer;
- int newBufferSize = bufferSize * 2;
-
- newBuffer = (char *)malloc( newBufferSize );
- if (usedBuffer != quickBuffer) free(usedBuffer);
- usedBuffer = newBuffer;
- bufferSize = newBufferSize;
- }
- }
+ if (private == true) {
+ nChars = GetPrivateProfileString(__appNameString, __keyNameString, __defaultString, usedBuffer, bufferSize, __fileName);
+ } else {
+ nChars = GetProfileString(__appNameString, __keyNameString, __defaultString, usedBuffer, bufferSize);
+ }
+ if (nChars >= 0) {
+ if (nChars != bufferSize-1) {
+ retVal = __MKSTRING_L(usedBuffer, nChars);
+ if (usedBuffer != quickBuffer) free(usedBuffer);
+ RETURN (retVal);
+ }
+
+ {
+ /* use a bigger buffer */
+ char *newBuffer;
+ int newBufferSize = bufferSize * 2;
+
+ newBuffer = (char *)malloc( newBufferSize );
+ if (usedBuffer != quickBuffer) free(usedBuffer);
+ usedBuffer = newBuffer;
+ bufferSize = newBufferSize;
+ }
+ }
} while (nChars > 0);
RETURN (nil);
@@ -7798,7 +7811,7 @@
newHandle := self duplicateHandle:anExternalAddress to:nil.
newHandle isNil ifTrue:[
- ^ false.
+ ^ false.
].
"/ self closeHandle:newHandle.
^ true.
@@ -7815,7 +7828,7 @@
"
self
- playSound:'C:\Dokumente und Einstellungen\cg\work\exept\expecco\resources\sounds\start.wav'
+ playSound:'C:\Dokumente und Einstellungen\cg\work\exept\expecco\resources\sounds\start.wav'
"
"Created: / 06-11-2007 / 00:46:57 / cg"
@@ -7833,8 +7846,8 @@
"
self
- playSound:'C:\Dokumente und Einstellungen\cg\work\exept\expecco\resources\sounds\start.wav'
- mode:1
+ playSound:'C:\Dokumente und Einstellungen\cg\work\exept\expecco\resources\sounds\start.wav'
+ mode:1
"
"Modified: / 06-11-2007 / 00:46:27 / cg"
@@ -7869,7 +7882,7 @@
"/ <apicall: dword "GetLastError" () module: "kernel32.dll" >
"
- self primGetLastError
+ self primGetLastError
"
!
@@ -7878,8 +7891,8 @@
%{ /* NOCONTEXT */
if (__isSmallInteger(i)) {
- SetLastError(__intVal(i));
- RETURN(self);
+ SetLastError(__intVal(i));
+ RETURN(self);
}
%}.
"/ <apicall: void "SetLastError" (dword) module: "kernel32.dll" >
@@ -7896,10 +7909,10 @@
&& __isString(keyName)
&& __isString(profString)
&& __isString(fnString)) {
- BOOL ret;
-
- ret = WritePrivateProfileStringA(__stringVal(appName), __stringVal(keyName), __stringVal(profString), __stringVal(fnString));
- RETURN( ret == 0 ? false : true);
+ BOOL ret;
+
+ ret = WritePrivateProfileStringA(__stringVal(appName), __stringVal(keyName), __stringVal(profString), __stringVal(fnString));
+ RETURN( ret == 0 ? false : true);
}
%}.
@@ -7959,8 +7972,8 @@
lastErrorCode := handleAndLastErrorCode second.
"/ self assert: lastErrorCode == 0.
^ handle isNil
- or:[lastErrorCode == 183 "ERROR_ALREADY_EXISTS"
- or:[ lastErrorCode == 5 "ERROR_ACCESS_DENIED"]]
+ or:[lastErrorCode == 183 "ERROR_ALREADY_EXISTS"
+ or:[ lastErrorCode == 5 "ERROR_ACCESS_DENIED"]]
"Modified: / 03-08-2010 / 16:59:41 / cg"
!
@@ -7996,25 +8009,25 @@
%{
if (__isString(lpName)
&& ((bInitialOwner == true) || (bInitialOwner == false))) {
- void *c_descr = NULL;
- char *c_name;
- HANDLE c_handle;
-
- c_name = __stringVal(lpName);
-
- if (lpSecurityDescriptor != nil) {
- if (__isExternalAddressLike(lpSecurityDescriptor)
- || __isExternalBytesLike(lpSecurityDescriptor) ) {
- c_descr = __externalAddressVal(lpSecurityDescriptor);
- } else
- goto badArg;
- }
- c_handle = CreateMutexA(c_descr, bInitialOwner == true, c_name);
- if (c_handle == NULL) {
- RETURN(nil);
- }
- __externalAddressVal(handle) = c_handle;
- RETURN(handle);
+ void *c_descr = NULL;
+ char *c_name;
+ HANDLE c_handle;
+
+ c_name = __stringVal(lpName);
+
+ if (lpSecurityDescriptor != nil) {
+ if (__isExternalAddressLike(lpSecurityDescriptor)
+ || __isExternalBytesLike(lpSecurityDescriptor) ) {
+ c_descr = __externalAddressVal(lpSecurityDescriptor);
+ } else
+ goto badArg;
+ }
+ c_handle = CreateMutexA(c_descr, bInitialOwner == true, c_name);
+ if (c_handle == NULL) {
+ RETURN(nil);
+ }
+ __externalAddressVal(handle) = c_handle;
+ RETURN(handle);
}
badArg: ;
%}.
@@ -8035,25 +8048,25 @@
%{
if (__isString(lpName)
&& ((bInitialOwner == true) || (bInitialOwner == false))) {
- DWORD c_dwDesiredAccess = 0;
- char *c_name;
- BOOL c_initialOwner = (bInitialOwner == true);
- HANDLE c_handle;
-
- c_name = __stringVal(lpName);
-
- if (dwDesiredAccess != nil) {
- if (! __isSmallInteger(dwDesiredAccess)) {
- goto badArg;
- }
- c_dwDesiredAccess = __intVal(dwDesiredAccess);
- }
- c_handle = OpenMutexA(c_dwDesiredAccess, c_initialOwner, c_name);
- if (c_handle == NULL) {
- RETURN(nil);
- }
- __externalAddressVal(handle) = c_handle;
- RETURN(handle);
+ DWORD c_dwDesiredAccess = 0;
+ char *c_name;
+ BOOL c_initialOwner = (bInitialOwner == true);
+ HANDLE c_handle;
+
+ c_name = __stringVal(lpName);
+
+ if (dwDesiredAccess != nil) {
+ if (! __isSmallInteger(dwDesiredAccess)) {
+ goto badArg;
+ }
+ c_dwDesiredAccess = __intVal(dwDesiredAccess);
+ }
+ c_handle = OpenMutexA(c_dwDesiredAccess, c_initialOwner, c_name);
+ if (c_handle == NULL) {
+ RETURN(nil);
+ }
+ __externalAddressVal(handle) = c_handle;
+ RETURN(handle);
}
badArg: ;
%}.
@@ -8069,11 +8082,11 @@
%{
if (__isExternalAddressLike(hMutex)
|| __isExternalBytesLike(hMutex) ) {
- HANDLE _handle = _HANDLEVal(hMutex);
- BOOL _ret;
-
- _ret = ReleaseMutex(_handle);
- RETURN(_ret == 0 ? false : true);
+ HANDLE _handle = _HANDLEVal(hMutex);
+ BOOL _ret;
+
+ _ret = ReleaseMutex(_handle);
+ RETURN(_ret == 0 ? false : true);
}
%}.
"/ <apicall: bool "ReleaseMutex" (handle) module: "kernel32.dll" >
@@ -8089,15 +8102,15 @@
%{
if (__isExternalAddressLike(handle)
|| __isExternalBytesLike(handle) ) {
- HANDLE _handle = _HANDLEVal(handle);
-
- if (__isSmallInteger(dwMilliseconds)) {
- DWORD _millis = __intVal(dwMilliseconds);
- DWORD _ret;
-
- _ret = ReleaseMutex(_handle);
- RETURN( __mkSmallInteger(_ret));
- }
+ HANDLE _handle = _HANDLEVal(handle);
+
+ if (__isSmallInteger(dwMilliseconds)) {
+ DWORD _millis = __intVal(dwMilliseconds);
+ DWORD _ret;
+
+ _ret = ReleaseMutex(_handle);
+ RETURN( __mkSmallInteger(_ret));
+ }
}
%}.
"/ <apicall: dword "WaitForSingleObject" (handle dword) module: "kernel32.dll" >
@@ -8112,8 +8125,8 @@
| released|
hMutex isNil ifTrue:[
- Transcript showCR: 'hMutex is nil - cannot release'.
- ^ false
+ Transcript showCR: 'hMutex is nil - cannot release'.
+ ^ false
].
released := self primReleaseMutex: hMutex.
released ifFalse:[Transcript showCR: 'Release Mutex failed'.].
@@ -8129,8 +8142,8 @@
hMutex := self openMutexNamed: name.
hMutex isNil ifTrue:[
- Transcript showCR: 'Cannot release Mutex named: "', name printString,'"'.
- ^ false
+ Transcript showCR: 'Cannot release Mutex named: "', name printString,'"'.
+ ^ false
].
^ self releaseMutex: hMutex.
@@ -8163,39 +8176,39 @@
%{
if (__isString(aDirectoryPathName)
&& __isSmallInteger(changeFlags)) {
- char *__dirName = __stringVal(aDirectoryPathName);
- INT __flags = __intVal(changeFlags);
- HANDLE __changeHandle;
-
- __changeHandle = FindFirstChangeNotification(__dirName, FALSE, __flags);
- if (__changeHandle == INVALID_HANDLE_VALUE) {
- console_printf("failed to create handle\n");
- } else {
- __externalAddressVal(handle) = __changeHandle;
- RETURN (handle);
- }
+ char *__dirName = __stringVal(aDirectoryPathName);
+ INT __flags = __intVal(changeFlags);
+ HANDLE __changeHandle;
+
+ __changeHandle = FindFirstChangeNotification(__dirName, FALSE, __flags);
+ if (__changeHandle == INVALID_HANDLE_VALUE) {
+ console_printf("failed to create handle\n");
+ } else {
+ __externalAddressVal(handle) = __changeHandle;
+ RETURN (handle);
+ }
}
%}.
self primitiveFailed
"
- |h|
-
- [
- h := OperatingSystem createChangeNotificationHandleFor:'.'
- flags:(FILE_NOTIFY_CHANGE_FILE_NAME |
- FILE_NOTIFY_CHANGE_DIR_NAME |
- FILE_NOTIFY_CHANGE_ATTRIBUTES |
- FILE_NOTIFY_CHANGE_SIZE |
- FILE_NOTIFY_CHANGE_LAST_WRITE).
- Transcript showCR:'waiting...'.
- OperatingSystem waitForSingleObject:h withTimeout:1000.
- Transcript showCR:'got a change...'.
- h close.
- ] fork.
- Delay waitForSeconds:0.25.
- Transcript showCR:'changing...'.
- './bla' asFilename contents:'hello'.
+ |h|
+
+ [
+ h := OperatingSystem createChangeNotificationHandleFor:'.'
+ flags:(FILE_NOTIFY_CHANGE_FILE_NAME |
+ FILE_NOTIFY_CHANGE_DIR_NAME |
+ FILE_NOTIFY_CHANGE_ATTRIBUTES |
+ FILE_NOTIFY_CHANGE_SIZE |
+ FILE_NOTIFY_CHANGE_LAST_WRITE).
+ Transcript showCR:'waiting...'.
+ OperatingSystem waitForSingleObject:h withTimeout:1000.
+ Transcript showCR:'got a change...'.
+ h close.
+ ] fork.
+ Delay waitForSeconds:0.25.
+ Transcript showCR:'changing...'.
+ './bla' asFilename contents:'hello'.
"
! !
@@ -8219,70 +8232,70 @@
count := aString size + 128.
[
- aString isWideString ifTrue:[
- resultString := Unicode16String new:count.
- resultCount := self primExpandEnvironmentStringsW:aString into:resultString size:count.
- ] ifFalse:[
- resultString := String new:count.
- resultCount := self primExpandEnvironmentStringsA:aString into:resultString size:count.
- ].
- resultCount <= count ifTrue:[
- true
- ] ifFalse:[
- "resultString was too small. resultCount is the required buffer size"
- count := resultCount.
- false
- ].
+ aString isWideString ifTrue:[
+ resultString := Unicode16String new:count.
+ resultCount := self primExpandEnvironmentStringsW:aString into:resultString size:count.
+ ] ifFalse:[
+ resultString := String new:count.
+ resultCount := self primExpandEnvironmentStringsA:aString into:resultString size:count.
+ ].
+ resultCount <= count ifTrue:[
+ true
+ ] ifFalse:[
+ "resultString was too small. resultCount is the required buffer size"
+ count := resultCount.
+ false
+ ].
] whileFalse.
^ resultString copyTo:resultCount-1.
"
- self expandEnvironmentStrings:'%ProgramFiles%\test\x'
- self expandEnvironmentStrings:'%ProgramFiles%\test\x' asUnicode16String
+ self expandEnvironmentStrings:'%ProgramFiles%\test\x'
+ self expandEnvironmentStrings:'%ProgramFiles%\test\x' asUnicode16String
"
!
getDomainName
"return the DNS domain this host is in.
Notice:
- not all systems support this; on some, 'unknown' is returned."
+ not all systems support this; on some, 'unknown' is returned."
|domainName idx hostName k|
DomainName notNil ifTrue:[
- ^ DomainName
+ ^ DomainName
].
"/ sometimes, we can extract the domainName from the hostName ...
hostName := self getHostName.
hostName notEmptyOrNil ifTrue:[
- idx := hostName indexOf:$..
- idx ~~ 0 ifTrue:[
- domainName := hostName copyFrom:idx+1.
- ]
+ idx := hostName indexOf:$..
+ idx ~~ 0 ifTrue:[
+ domainName := hostName copyFrom:idx+1.
+ ]
].
domainName isNil ifTrue:[
- domainName := self getEnvironment:'DOMAIN'.
- domainName isNil ifTrue:[
- domainName := self getEnvironment:'DOMAINNAME'.
- ].
-
- domainName isNil ifTrue:[
- "/ ok, search the registry ...
- "/ under NT and later, it is found there ...
- k := RegistryEntry key:'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters'.
- k notNil ifTrue:[
- domainName := k valueNamed:'Domain'.
- k close.
- ].
- ].
-
- domainName isNil ifTrue:[
- ^ 'unknown'.
- ].
- DomainName := domainName. "cache only, if it is fixed"
+ domainName := self getEnvironment:'DOMAIN'.
+ domainName isNil ifTrue:[
+ domainName := self getEnvironment:'DOMAINNAME'.
+ ].
+
+ domainName isNil ifTrue:[
+ "/ ok, search the registry ...
+ "/ under NT and later, it is found there ...
+ k := RegistryEntry key:'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters'.
+ k notNil ifTrue:[
+ domainName := k valueNamed:'Domain'.
+ k close.
+ ].
+ ].
+
+ domainName isNil ifTrue:[
+ ^ 'unknown'.
+ ].
+ DomainName := domainName. "cache only, if it is fixed"
].
^ domainName
@@ -8415,11 +8428,11 @@
// Note: GetComputerNameExA can fail in certain locales!
#if defined(__MINGW32__)
if (GetComputerNameA(bufferA, &buffSize) == TRUE) {
- RETURN(__MKSTRING_L(bufferA, buffSize));
+ RETURN(__MKSTRING_L(bufferA, buffSize));
}
#else
if (GetComputerNameExW(ComputerNameDnsFullyQualified, buffer, &buffSize) == TRUE) {
- RETURN(__mkStringOrU16String_maxlen(buffer, buffSize));
+ RETURN(__mkStringOrU16String_maxlen(buffer, buffSize));
}
#endif
%}.
@@ -8437,14 +8450,14 @@
lang := self getEnvironment:'LANG'.
(lang isNil or:[lang = 'default']) ifTrue:[
- "/ ok, search the registry ...
- "/ under XP, it is found there ...
- lang := RegistryEntry
- stringValueFor:'sLanguage'
- atKey:'HKEY_CURRENT_USER\Control Panel\International'.
- lang notNil ifTrue:[
- lang := self mapLanguage:lang.
- ].
+ "/ ok, search the registry ...
+ "/ under XP, it is found there ...
+ lang := RegistryEntry
+ stringValueFor:'sLanguage'
+ atKey:'HKEY_CURRENT_USER\Control Panel\International'.
+ lang notNil ifTrue:[
+ lang := self mapLanguage:lang.
+ ].
].
^ lang
@@ -8458,28 +8471,28 @@
"return a dictionary filled with values from the locale information;
Not all fields may be present, depending on the OS's setup and capabilities.
Possible fields are:
- decimalPoint <String>
- thousandsSep <String>
- internationalCurrencySymbol <String>
- currencySymbol <String>
- monetaryDecimalPoint <String>
- monetaryThousandsSeparator <String>
- positiveSign <String>
- negativeSign <String>
- internationalFractionalDigits <Integer>
- fractionalDigits <Integer>
- positiveSignPrecedesCurrencySymbol <Boolean>
- negativeSignPrecedesCurrencySymbol <Boolean>
- positiveSignSeparatedBySpaceFromCurrencySymbol <Boolean>
- negativeSignSeparatedBySpaceFromCurrencySymbol <Boolean>
- positiveSignPosition <Symbol>
- one of: #parenthesesAround,
- #signPrecedes,
- #signSuceeds,
- #signPrecedesCurrencySymbol,
- #signSuceedsCurrencySymbol
-
- negativeSignPosition <like above>
+ decimalPoint <String>
+ thousandsSep <String>
+ internationalCurrencySymbol <String>
+ currencySymbol <String>
+ monetaryDecimalPoint <String>
+ monetaryThousandsSeparator <String>
+ positiveSign <String>
+ negativeSign <String>
+ internationalFractionalDigits <Integer>
+ fractionalDigits <Integer>
+ positiveSignPrecedesCurrencySymbol <Boolean>
+ negativeSignPrecedesCurrencySymbol <Boolean>
+ positiveSignSeparatedBySpaceFromCurrencySymbol <Boolean>
+ negativeSignSeparatedBySpaceFromCurrencySymbol <Boolean>
+ positiveSignPosition <Symbol>
+ one of: #parenthesesAround,
+ #signPrecedes,
+ #signSuceeds,
+ #signPrecedesCurrencySymbol,
+ #signSuceedsCurrencySymbol
+
+ negativeSignPosition <like above>
it is up to the application to deal with undefined values.
@@ -8490,9 +8503,9 @@
|info val|
LocaleInfo notNil ifTrue:[
- "/ return the internal info; useful on systems which do not
- "/ support this.
- ^ LocaleInfo
+ "/ return the internal info; useful on systems which do not
+ "/ support this.
+ ^ LocaleInfo
].
info := IdentityDictionary new.
@@ -8513,31 +8526,31 @@
int csNegSepBySpace; /* money: 1 if currency symbol should be separated by a space from a negative value; 0 if no space */
int csPosSignPosition; /* money: 0: ()'s around the value & currency symbol */
int csNegSignPosition; /* 1: sign precedes the value & currency symbol */
- /* 2: sign succeeds the value & currency symbol */
- /* 3: sign immediately precedes the currency symbol */
- /* 4: sign immediately suceeds the currency symbol */
+ /* 2: sign succeeds the value & currency symbol */
+ /* 3: sign immediately precedes the currency symbol */
+ /* 4: sign immediately suceeds the currency symbol */
#if defined(HAS_LOCALECONV)
struct lconv *conf;
conf = localeconv();
if (conf) {
- decimalPoint = conf->decimal_point;
- thousandsSep = conf->thousands_sep;
- intCurrencySymbol = conf->int_curr_symbol;
- currencySymbol = conf->currency_symbol;
- monDecimalPoint = conf->mon_decimal_point;
- monThousandsSep = conf->mon_thousands_sep;
- positiveSign = conf->positive_sign;
- negativeSign = conf->negative_sign;
- intFractDigits = conf->int_frac_digits;
- fractDigits = conf->frac_digits;
- csPosPrecedes = conf->p_cs_precedes;
- csNegPrecedes = conf->n_cs_precedes;
- csPosSepBySpace = conf->p_sep_by_space;
- csNegSepBySpace = conf->n_sep_by_space;
- csPosSignPosition = conf->p_sign_posn;
- csNegSignPosition = conf->n_sign_posn;
+ decimalPoint = conf->decimal_point;
+ thousandsSep = conf->thousands_sep;
+ intCurrencySymbol = conf->int_curr_symbol;
+ currencySymbol = conf->currency_symbol;
+ monDecimalPoint = conf->mon_decimal_point;
+ monThousandsSep = conf->mon_thousands_sep;
+ positiveSign = conf->positive_sign;
+ negativeSign = conf->negative_sign;
+ intFractDigits = conf->int_frac_digits;
+ fractDigits = conf->frac_digits;
+ csPosPrecedes = conf->p_cs_precedes;
+ csNegPrecedes = conf->n_cs_precedes;
+ csPosSepBySpace = conf->p_sep_by_space;
+ csNegSepBySpace = conf->n_sep_by_space;
+ csPosSignPosition = conf->p_sign_posn;
+ csNegSignPosition = conf->n_sign_posn;
}
#else
decimalPoint = (char *)0;
@@ -8558,129 +8571,129 @@
csNegSignPosition = -1;
#endif
if (decimalPoint) {
- val = __MKSTRING(decimalPoint);
- __AT_PUT_(info, @symbol(decimalPoint), val);
+ val = __MKSTRING(decimalPoint);
+ __AT_PUT_(info, @symbol(decimalPoint), val);
}
if (thousandsSep) {
- val = __MKSTRING(thousandsSep);
- __AT_PUT_(info, @symbol(thousandsSeparator), val);
+ val = __MKSTRING(thousandsSep);
+ __AT_PUT_(info, @symbol(thousandsSeparator), val);
}
if (intCurrencySymbol) {
- val = __MKSTRING(intCurrencySymbol);
- __AT_PUT_(info, @symbol(internationCurrencySymbol), val);
+ val = __MKSTRING(intCurrencySymbol);
+ __AT_PUT_(info, @symbol(internationCurrencySymbol), val);
}
if (currencySymbol) {
- val = __MKSTRING(currencySymbol);
- __AT_PUT_(info, @symbol(currencySymbol), val);
+ val = __MKSTRING(currencySymbol);
+ __AT_PUT_(info, @symbol(currencySymbol), val);
}
if (monDecimalPoint) {
- val = __MKSTRING(monDecimalPoint);
- __AT_PUT_(info, @symbol(monetaryDecimalPoint), val);
+ val = __MKSTRING(monDecimalPoint);
+ __AT_PUT_(info, @symbol(monetaryDecimalPoint), val);
}
if (monThousandsSep) {
- val = __MKSTRING(monThousandsSep);
- __AT_PUT_(info, @symbol(monetaryThousandsSeparator), val);
+ val = __MKSTRING(monThousandsSep);
+ __AT_PUT_(info, @symbol(monetaryThousandsSeparator), val);
}
if (positiveSign) {
- val = __MKSTRING(positiveSign);
- __AT_PUT_(info, @symbol(positiveSign), val);
+ val = __MKSTRING(positiveSign);
+ __AT_PUT_(info, @symbol(positiveSign), val);
}
if (negativeSign) {
- val = __MKSTRING(negativeSign);
- __AT_PUT_(info, @symbol(negativeSign), val);
+ val = __MKSTRING(negativeSign);
+ __AT_PUT_(info, @symbol(negativeSign), val);
}
if (intFractDigits >= 0) {
- __AT_PUT_(info, @symbol(internationalFractionalDigits), __mkSmallInteger(intFractDigits));
+ __AT_PUT_(info, @symbol(internationalFractionalDigits), __mkSmallInteger(intFractDigits));
}
if (fractDigits >= 0) {
- __AT_PUT_(info, @symbol(fractionalDigits), __mkSmallInteger(fractDigits));
+ __AT_PUT_(info, @symbol(fractionalDigits), __mkSmallInteger(fractDigits));
}
if (csPosPrecedes >= 0) {
- if (csPosPrecedes == 0) {
- val = false;
- } else {
- val = true;
- }
- __AT_PUT_(info, @symbol(positiveSignPrecedesCurrencySymbol), val );
+ if (csPosPrecedes == 0) {
+ val = false;
+ } else {
+ val = true;
+ }
+ __AT_PUT_(info, @symbol(positiveSignPrecedesCurrencySymbol), val );
}
if (csNegPrecedes >= 0) {
- if (csNegPrecedes == 0) {
- val = false;
- } else {
- val = true;
- }
- __AT_PUT_(info, @symbol(negativeSignPrecedesCurrencySymbol), val );
+ if (csNegPrecedes == 0) {
+ val = false;
+ } else {
+ val = true;
+ }
+ __AT_PUT_(info, @symbol(negativeSignPrecedesCurrencySymbol), val );
}
if (csPosSepBySpace >= 0) {
- if (csPosSepBySpace == 0) {
- val = false;
- } else {
- val = true;
- }
- __AT_PUT_(info, @symbol(positiveSignSeparatedBySpaceFromCurrencySymbol), val);
+ if (csPosSepBySpace == 0) {
+ val = false;
+ } else {
+ val = true;
+ }
+ __AT_PUT_(info, @symbol(positiveSignSeparatedBySpaceFromCurrencySymbol), val);
}
if (csNegSepBySpace >= 0) {
- if (csNegSepBySpace == 0) {
- val = false;
- } else {
- val = true;
- }
- __AT_PUT_(info, @symbol(negativeSignSeparatedBySpaceFromCurrencySymbol), val);
+ if (csNegSepBySpace == 0) {
+ val = false;
+ } else {
+ val = true;
+ }
+ __AT_PUT_(info, @symbol(negativeSignSeparatedBySpaceFromCurrencySymbol), val);
}
switch (csPosSignPosition) {
- case 0:
- val = @symbol(parenthesesAround);
- break;
-
- case 1:
- val = @symbol(signPrecedes);
- break;
-
- case 2:
- val = @symbol(signSuceeds);
- break;
-
- case 3:
- val = @symbol(signPrecedesCurrencySymbol);
- break;
-
- case 4:
- val = @symbol(signSuceedsCurrencySymbol);
- break;
-
- default:
- val = nil;
+ case 0:
+ val = @symbol(parenthesesAround);
+ break;
+
+ case 1:
+ val = @symbol(signPrecedes);
+ break;
+
+ case 2:
+ val = @symbol(signSuceeds);
+ break;
+
+ case 3:
+ val = @symbol(signPrecedesCurrencySymbol);
+ break;
+
+ case 4:
+ val = @symbol(signSuceedsCurrencySymbol);
+ break;
+
+ default:
+ val = nil;
}
if (val != nil) {
- __AT_PUT_(info, @symbol(positiveSignPosition), val);
+ __AT_PUT_(info, @symbol(positiveSignPosition), val);
}
switch (csNegSignPosition) {
- case 0:
- val = @symbol(parenthesesAround);
- break;
-
- case 1:
- val = @symbol(signPrecedes);
- break;
-
- case 2:
- val = @symbol(signSuceeds);
- break;
-
- case 3:
- val = @symbol(signPrecedesCurrencySymbol);
- break;
-
- case 4:
- val = @symbol(signSuceedsCurrencySymbol);
- break;
-
- default:
- val = nil;
+ case 0:
+ val = @symbol(parenthesesAround);
+ break;
+
+ case 1:
+ val = @symbol(signPrecedes);
+ break;
+
+ case 2:
+ val = @symbol(signSuceeds);
+ break;
+
+ case 3:
+ val = @symbol(signPrecedesCurrencySymbol);
+ break;
+
+ case 4:
+ val = @symbol(signSuceedsCurrencySymbol);
+ break;
+
+ default:
+ val = nil;
}
if (val != nil) {
- __AT_PUT_(info, @symbol(negativeSignPosition), val);
+ __AT_PUT_(info, @symbol(negativeSignPosition), val);
}
%}.
^ info
@@ -8694,8 +8707,8 @@
getNetworkAddresses
"return a dictionary filled with
- key -> name of interface
- value -> the network adsress (as SocketAddress)
+ key -> name of interface
+ value -> the network adsress (as SocketAddress)
for each interface
"
@@ -8716,21 +8729,21 @@
DWORD dwStatus;
dwStatus = GetAdaptersInfo(
- AdapterInfo, // [out] buffer to receive data
- &dwBufLen); // [in] size of receive data buffer
+ AdapterInfo, // [out] buffer to receive data
+ &dwBufLen); // [in] size of receive data buffer
if (dwStatus == ERROR_SUCCESS) {
- PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;
- unsigned char *bP;
- int nA = 0;
-
- bP = __byteArrayVal(rawData);
- do {
- name = __MKSTRING(pAdapterInfo->AdapterName);
- description = __MKSTRING(pAdapterInfo->Description);
- macAddress = __MKBYTEARRAY(pAdapterInfo->Address, 6);
- ipAddress = __MKSTRING(pAdapterInfo->IpAddressList.IpAddress.String);
- ipAddressMask = __MKSTRING(pAdapterInfo->IpAddressList.IpMask.String);
- entry = __ARRAY_NEW_INT(5);
+ PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;
+ unsigned char *bP;
+ int nA = 0;
+
+ bP = __byteArrayVal(rawData);
+ do {
+ name = __MKSTRING(pAdapterInfo->AdapterName);
+ description = __MKSTRING(pAdapterInfo->Description);
+ macAddress = __MKBYTEARRAY(pAdapterInfo->Address, 6);
+ ipAddress = __MKSTRING(pAdapterInfo->IpAddressList.IpAddress.String);
+ ipAddressMask = __MKSTRING(pAdapterInfo->IpAddressList.IpMask.String);
+ entry = __ARRAY_NEW_INT(5);
/*
* back to ST/X's String definition
@@ -8741,35 +8754,35 @@
# ifdef __DEF_String
# define Context __DEF_Context
# endif
- __ArrayInstPtr(entry)->a_element[0] = name; __STORE(entry, name);
- __ArrayInstPtr(entry)->a_element[1] = description; __STORE(entry, description);
- __ArrayInstPtr(entry)->a_element[2] = macAddress; __STORE(entry, macAddress);
- __ArrayInstPtr(entry)->a_element[3] = ipAddress; __STORE(entry, ipAddress);
- __ArrayInstPtr(entry)->a_element[4] = ipAddressMask; __STORE(entry, ipAddressMask);
-
- __ArrayInstPtr(rawData)->a_element[nA] = entry; __STORE(rawData, entry);
- nA++;
- pAdapterInfo = pAdapterInfo->Next;
- } while(pAdapterInfo);
- nAdapters = __mkSmallInteger(nA);
+ __ArrayInstPtr(entry)->a_element[0] = name; __STORE(entry, name);
+ __ArrayInstPtr(entry)->a_element[1] = description; __STORE(entry, description);
+ __ArrayInstPtr(entry)->a_element[2] = macAddress; __STORE(entry, macAddress);
+ __ArrayInstPtr(entry)->a_element[3] = ipAddress; __STORE(entry, ipAddress);
+ __ArrayInstPtr(entry)->a_element[4] = ipAddressMask; __STORE(entry, ipAddressMask);
+
+ __ArrayInstPtr(rawData)->a_element[nA] = entry; __STORE(rawData, entry);
+ nA++;
+ pAdapterInfo = pAdapterInfo->Next;
+ } while(pAdapterInfo);
+ nAdapters = __mkSmallInteger(nA);
}
%}.
"Keep the order as returned by the OS"
info := OrderedDictionary new:nAdapters ? 0.
nAdapters notNil ifTrue:[
- 1 to:nAdapters do:[:i |
- |entry name description macAddr ipAddr|
-
- entry := rawData at:i.
- name := entry at:1.
- "/ description := entry at:2.
- ipAddr := entry at:4.
- ipAddr := IPSocketAddress addressString:ipAddr.
- "take the first name"
- (ipAddr hostAddress contains:[:b| b ~~ 0]) ifTrue:[
- info at:name ifAbsentPut:ipAddr.
- ]
- ].
+ 1 to:nAdapters do:[:i |
+ |entry name description macAddr ipAddr|
+
+ entry := rawData at:i.
+ name := entry at:1.
+ "/ description := entry at:2.
+ ipAddr := entry at:4.
+ ipAddr := IPSocketAddress addressString:ipAddr.
+ "take the first name"
+ (ipAddr hostAddress contains:[:b| b ~~ 0]) ifTrue:[
+ info at:name ifAbsentPut:ipAddr.
+ ]
+ ].
].
^ info
@@ -8780,8 +8793,8 @@
getNetworkMACAddresses
"return a dictionary filled with
- key -> name of interface
- value -> the MAC adress (as ByteArray)
+ key -> name of interface
+ value -> the MAC adress (as ByteArray)
for each interface
"
@@ -8802,21 +8815,21 @@
DWORD dwStatus;
dwStatus = GetAdaptersInfo(
- AdapterInfo, // [out] buffer to receive data
- &dwBufLen); // [in] size of receive data buffer
+ AdapterInfo, // [out] buffer to receive data
+ &dwBufLen); // [in] size of receive data buffer
if (dwStatus == ERROR_SUCCESS) {
- PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;
- unsigned char *bP;
- int nA = 0;
-
- bP = __byteArrayVal(rawData);
- do {
- name = __MKSTRING(pAdapterInfo->AdapterName);
- description = __MKSTRING(pAdapterInfo->Description);
- macAddress = __MKBYTEARRAY(pAdapterInfo->Address, 6);
- ipAddress = __MKSTRING(pAdapterInfo->IpAddressList.IpAddress.String);
- ipAddressMask = __MKSTRING(pAdapterInfo->IpAddressList.IpMask.String);
- entry = __ARRAY_NEW_INT(5);
+ PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo;
+ unsigned char *bP;
+ int nA = 0;
+
+ bP = __byteArrayVal(rawData);
+ do {
+ name = __MKSTRING(pAdapterInfo->AdapterName);
+ description = __MKSTRING(pAdapterInfo->Description);
+ macAddress = __MKBYTEARRAY(pAdapterInfo->Address, 6);
+ ipAddress = __MKSTRING(pAdapterInfo->IpAddressList.IpAddress.String);
+ ipAddressMask = __MKSTRING(pAdapterInfo->IpAddressList.IpMask.String);
+ entry = __ARRAY_NEW_INT(5);
/*
* back to ST/X's String definition
@@ -8827,32 +8840,32 @@
# ifdef __DEF_String
# define Context __DEF_Context
# endif
- __ArrayInstPtr(entry)->a_element[0] = name; __STORE(entry, name);
- __ArrayInstPtr(entry)->a_element[1] = description; __STORE(entry, description);
- __ArrayInstPtr(entry)->a_element[2] = macAddress; __STORE(entry, macAddress);
- __ArrayInstPtr(entry)->a_element[3] = ipAddress; __STORE(entry, ipAddress);
- __ArrayInstPtr(entry)->a_element[4] = ipAddressMask; __STORE(entry, ipAddressMask);
-
- __ArrayInstPtr(rawData)->a_element[nA] = entry; __STORE(rawData, entry);
- nA++;
- pAdapterInfo = pAdapterInfo->Next;
- } while(pAdapterInfo);
- nAdapters = __mkSmallInteger(nA);
+ __ArrayInstPtr(entry)->a_element[0] = name; __STORE(entry, name);
+ __ArrayInstPtr(entry)->a_element[1] = description; __STORE(entry, description);
+ __ArrayInstPtr(entry)->a_element[2] = macAddress; __STORE(entry, macAddress);
+ __ArrayInstPtr(entry)->a_element[3] = ipAddress; __STORE(entry, ipAddress);
+ __ArrayInstPtr(entry)->a_element[4] = ipAddressMask; __STORE(entry, ipAddressMask);
+
+ __ArrayInstPtr(rawData)->a_element[nA] = entry; __STORE(rawData, entry);
+ nA++;
+ pAdapterInfo = pAdapterInfo->Next;
+ } while(pAdapterInfo);
+ nAdapters = __mkSmallInteger(nA);
}
%}.
"Keep the order as reurned by the OS"
info := OrderedDictionary new:nAdapters ? 0.
nAdapters notNil ifTrue:[
- 1 to:nAdapters do:[:i |
- |entry name description macAddr ipAddr|
-
- entry := rawData at:i.
- name := entry at:1.
- "/ description := entry at:2.
- macAddr := entry at:3.
- "/ ipAddr := entry at:4.
- info at:name put:macAddr.
- ].
+ 1 to:nAdapters do:[:i |
+ |entry name description macAddr ipAddr|
+
+ entry := rawData at:i.
+ name := entry at:1.
+ "/ description := entry at:2.
+ macAddr := entry at:3.
+ "/ ipAddr := entry at:4.
+ info at:name put:macAddr.
+ ].
].
^ info
@@ -8865,14 +8878,14 @@
"answer the number of physical processors in the system"
%{
- SYSTEM_INFO sInfo;
- GetSystemInfo(&sInfo);
-
- return __mkSmallInteger(sInfo.dwNumberOfProcessors);
-%}.
-
- "
- self getNumberOfProcessors
+ SYSTEM_INFO sInfo;
+ GetSystemInfo(&sInfo);
+
+ return __mkSmallInteger(sInfo.dwNumberOfProcessors);
+%}.
+
+ "
+ self getNumberOfProcessors
"
!
@@ -8895,7 +8908,7 @@
"if supported by the OS, return the systemID;
a unique per machine identification.
WARNING:
- not all systems support this; on some, 'unknown' is returned."
+ not all systems support this; on some, 'unknown' is returned."
|regKey systemId|
@@ -8911,30 +8924,30 @@
#endif
#if defined(HAS_SYSINFO) && defined(SI_HW_SERIAL)
{
- char buffer[128];
-
- buffer[0] = 0;
- if (sysinfo(SI_HW_SERIAL, buffer, sizeof(buffer))) {
- buffer[127] = 0;
- if (strlen(buffer) > 0) {
- RETURN(__MKSTRING(buffer));
- }
- }
+ char buffer[128];
+
+ buffer[0] = 0;
+ if (sysinfo(SI_HW_SERIAL, buffer, sizeof(buffer))) {
+ buffer[127] = 0;
+ if (strlen(buffer) > 0) {
+ RETURN(__MKSTRING(buffer));
+ }
+ }
}
#endif
%}.
regKey := self registryEntry
- key:'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion'.
+ key:'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion'.
regKey notNil ifTrue:[
- systemId := regKey valueNamed:'ProductId'.
- systemId isNil ifTrue:[
- regKey := self registryEntry
- key:'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
- flags:#KEY_WOW64_64KEY createIfAbsent:false.
- systemId := regKey valueNamed:'ProductId'.
- ].
+ systemId := regKey valueNamed:'ProductId'.
+ systemId isNil ifTrue:[
+ regKey := self registryEntry
+ key:'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
+ flags:#KEY_WOW64_64KEY createIfAbsent:false.
+ systemId := regKey valueNamed:'ProductId'.
+ ].
].
^ systemId ? 'unknown'
@@ -8957,25 +8970,25 @@
This method is mainly provided to augment error reports with some system
information.
(in case of system/version specific OS errors, conditional workarounds and patches
- may be based upon this info).
+ may be based upon this info).
Your application should NOT depend upon this in any way.
The returned info may (or may not) contain:
- #system -> some operating system identification (irix, Linux, nt, win32s ...)
- #version -> OS version (some os version identification)
- #release -> OS release (3.5, 1.2.1 ...)
- #node -> some host identification (hostname)
- #domain -> domain name (hosts domain)
- #machine -> type of machine (i586, mips ...)
+ #system -> some operating system identification (irix, Linux, nt, win32s ...)
+ #version -> OS version (some os version identification)
+ #release -> OS release (3.5, 1.2.1 ...)
+ #node -> some host identification (hostname)
+ #domain -> domain name (hosts domain)
+ #machine -> type of machine (i586, mips ...)
win32:
- #physicalRam -> total amount of physical memory
- #freeRam -> amount of free memory
- #swapSize -> size of swapSpace (page file)
- #freeSwap -> free bytes in swapSpace
- #virtualRam -> total amount of virtual memory
- #freeVirtual -> amount of free virtual memory
- #memoryLoad -> percentage of memory usage (useless)
+ #physicalRam -> total amount of physical memory
+ #freeRam -> amount of free memory
+ #swapSize -> size of swapSpace (page file)
+ #freeSwap -> free bytes in swapSpace
+ #virtualRam -> total amount of virtual memory
+ #freeVirtual -> amount of free virtual memory
+ #memoryLoad -> percentage of memory usage (useless)
"
|sys node rel ver minorVer majorVer mach dom info arch
@@ -9001,23 +9014,23 @@
majorVer = __mkSmallInteger(verMajor);
if (HIWORD(vsn) & 0x8000) {
- sys = @symbol(win95);
+ sys = @symbol(win95);
} else {
- if ((verMajor > 5)
- || ((verMajor == 5) && (verMinor >= 1))) {
- sys = @symbol(xp);
- if (verMajor >= 6) {
- sys = @symbol(vista);
- if (verMinor >= 1) {
- sys = @symbol(win7);
- if (verMinor >= 2) {
- sys = @symbol(win8);
- }
- }
- }
- } else {
- sys = @symbol(nt);
- }
+ if ((verMajor > 5)
+ || ((verMajor == 5) && (verMinor >= 1))) {
+ sys = @symbol(xp);
+ if (verMajor >= 6) {
+ sys = @symbol(vista);
+ if (verMinor >= 1) {
+ sys = @symbol(win7);
+ if (verMinor >= 2) {
+ sys = @symbol(win8);
+ }
+ }
+ }
+ } else {
+ sys = @symbol(nt);
+ }
}
len = snprintf(vsnBuffer, sizeof(vsnBuffer), "%d.%d", verMajor, verMinor);
rel = __MKSTRING_L(vsnBuffer, len);
@@ -9043,205 +9056,205 @@
#endif
{
#ifdef PROCESSOR_ARCHITECTURE_INTEL
- case PROCESSOR_ARCHITECTURE_INTEL:
- arch = @symbol(intel);
- break;
+ case PROCESSOR_ARCHITECTURE_INTEL:
+ arch = @symbol(intel);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_AMD64
- case PROCESSOR_ARCHITECTURE_AMD64:
- arch = @symbol(x64);
- break;
+ case PROCESSOR_ARCHITECTURE_AMD64:
+ arch = @symbol(x64);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_MIPS
- case PROCESSOR_ARCHITECTURE_MIPS:
- arch = @symbol(mips);
- break;
+ case PROCESSOR_ARCHITECTURE_MIPS:
+ arch = @symbol(mips);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_ALPHA
- case PROCESSOR_ARCHITECTURE_ALPHA:
- arch = @symbol(alpha);
- break;
+ case PROCESSOR_ARCHITECTURE_ALPHA:
+ arch = @symbol(alpha);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_ALPHA64
- case PROCESSOR_ARCHITECTURE_ALPHA64:
- arch = @symbol(alpha64);
- break;
+ case PROCESSOR_ARCHITECTURE_ALPHA64:
+ arch = @symbol(alpha64);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_PPC
- case PROCESSOR_ARCHITECTURE_PPC:
- arch = @symbol(ppc);
- break;
+ case PROCESSOR_ARCHITECTURE_PPC:
+ arch = @symbol(ppc);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_ARM
- case PROCESSOR_ARCHITECTURE_ARM:
- arch = @symbol(arm);
- break;
+ case PROCESSOR_ARCHITECTURE_ARM:
+ arch = @symbol(arm);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_SHX
- case PROCESSOR_ARCHITECTURE_SHX:
- arch = @symbol(shx);
- break;
+ case PROCESSOR_ARCHITECTURE_SHX:
+ arch = @symbol(shx);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_IA64
- case PROCESSOR_ARCHITECTURE_IA64:
- arch = @symbol(ia64);
- break;
+ case PROCESSOR_ARCHITECTURE_IA64:
+ arch = @symbol(ia64);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_MSIL
- case PROCESSOR_ARCHITECTURE_MSIL:
- arch = @symbol(msil);
- break;
+ case PROCESSOR_ARCHITECTURE_MSIL:
+ arch = @symbol(msil);
+ break;
#endif
#ifdef PROCESSOR_ARCHITECTURE_IA32_ON_WIN64
- case PROCESSOR_ARCHITECTURE_IA32_ON_WIN64:
- arch = @symbol(ia32_on_win64);
- break;
-#endif
- default:
- arch = @symbol(unknown);
- break;
+ case PROCESSOR_ARCHITECTURE_IA32_ON_WIN64:
+ arch = @symbol(ia32_on_win64);
+ break;
+#endif
+ default:
+ arch = @symbol(unknown);
+ break;
}
switch (sysInfo.dwProcessorType) {
#ifdef PROCESSOR_INTEL_386
- case PROCESSOR_INTEL_386:
- mach = @symbol(i386);
- break;
+ case PROCESSOR_INTEL_386:
+ mach = @symbol(i386);
+ break;
#endif
#ifdef PROCESSOR_INTEL_486
- case PROCESSOR_INTEL_486:
- mach = @symbol(i486);
- break;
+ case PROCESSOR_INTEL_486:
+ mach = @symbol(i486);
+ break;
#endif
#ifdef PROCESSOR_INTEL_PENTIUM
- case PROCESSOR_INTEL_PENTIUM:
- mach = @symbol(i586);
- break;
+ case PROCESSOR_INTEL_PENTIUM:
+ mach = @symbol(i586);
+ break;
#endif
#ifdef PROCESSOR_INTEL_860
- case PROCESSOR_INTEL_860:
- mach = @symbol(i860);
- break;
+ case PROCESSOR_INTEL_860:
+ mach = @symbol(i860);
+ break;
#endif
#ifdef PROCESSOR_INTEL_IA64
- case PROCESSOR_INTEL_IA64:
- mach = @symbol(ia64);
- break;
+ case PROCESSOR_INTEL_IA64:
+ mach = @symbol(ia64);
+ break;
#endif
#ifdef PROCESSOR_AMD_X8664
- case PROCESSOR_AMD_X8664:
- mach = @symbol(x86_64);
- break;
+ case PROCESSOR_AMD_X8664:
+ mach = @symbol(x86_64);
+ break;
#endif
#ifdef PROCESSOR_MIPS_R2000
- case PROCESSOR_MIPS_R2000:
- mach = @symbol(r2000);
- break;
+ case PROCESSOR_MIPS_R2000:
+ mach = @symbol(r2000);
+ break;
#endif
#ifdef PROCESSOR_MIPS_R3000
- case PROCESSOR_MIPS_R3000:
- mach = @symbol(r3000);
- break;
+ case PROCESSOR_MIPS_R3000:
+ mach = @symbol(r3000);
+ break;
#endif
#ifdef PROCESSOR_MIPS_R4000
- case PROCESSOR_MIPS_R4000:
- mach = @symbol(r4000);
- break;
+ case PROCESSOR_MIPS_R4000:
+ mach = @symbol(r4000);
+ break;
#endif
#ifdef PROCESSOR_ALPHA_21064
- case PROCESSOR_ALPHA_21064:
- mach = @symbol(alpha21064);
- break;
+ case PROCESSOR_ALPHA_21064:
+ mach = @symbol(alpha21064);
+ break;
#endif
#ifdef PROCESSOR_ARM720
- case PROCESSOR_ARM720:
- mach = @symbol(arm720);
- break;
+ case PROCESSOR_ARM720:
+ mach = @symbol(arm720);
+ break;
#endif
#ifdef PROCESSOR_ARM820
- case PROCESSOR_ARM820:
- mach = @symbol(arm820);
- break;
+ case PROCESSOR_ARM820:
+ mach = @symbol(arm820);
+ break;
#endif
#ifdef PROCESSOR_ARM920
- case PROCESSOR_ARM920:
- mach = @symbol(arm920);
- break;
+ case PROCESSOR_ARM920:
+ mach = @symbol(arm920);
+ break;
#endif
#ifdef PROCESSOR_ARM_7TDMI
- case PROCESSOR_ARM_7TDMI:
- mach = @symbol(arm70001);
- break;
+ case PROCESSOR_ARM_7TDMI:
+ mach = @symbol(arm70001);
+ break;
#endif
#ifdef PROCESSOR_STRONGARM
- case PROCESSOR_STRONGARM:
- mach = @symbol(strongarm);
- break;
+ case PROCESSOR_STRONGARM:
+ mach = @symbol(strongarm);
+ break;
#endif
#ifdef PROCESSOR_PPC_601
- case PROCESSOR_PPC_601:
- mach = @symbol(ppc601);
- break;
+ case PROCESSOR_PPC_601:
+ mach = @symbol(ppc601);
+ break;
#endif
#ifdef PROCESSOR_PPC_603
- case PROCESSOR_PPC_603:
- mach = @symbol(ppc603);
- break;
+ case PROCESSOR_PPC_603:
+ mach = @symbol(ppc603);
+ break;
#endif
#ifdef PROCESSOR_PPC_604
- case PROCESSOR_PPC_604:
- mach = @symbol(ppc604);
- break;
+ case PROCESSOR_PPC_604:
+ mach = @symbol(ppc604);
+ break;
#endif
#ifdef PROCESSOR_PPC_620
- case PROCESSOR_PPC_620:
- mach = @symbol(ppc620);
- break;
+ case PROCESSOR_PPC_620:
+ mach = @symbol(ppc620);
+ break;
#endif
#ifdef PROCESSOR_HITACHI_SH3
- case PROCESSOR_HITACHI_SH3:
- mach = @symbol(sh3);
- break;
+ case PROCESSOR_HITACHI_SH3:
+ mach = @symbol(sh3);
+ break;
#endif
#ifdef PROCESSOR_HITACHI_SH3E
- case PROCESSOR_HITACHI_SH3E:
- mach = @symbol(sh3e);
- break;
+ case PROCESSOR_HITACHI_SH3E:
+ mach = @symbol(sh3e);
+ break;
#endif
#ifdef PROCESSOR_HITACHI_SH4
- case PROCESSOR_HITACHI_SH4:
- mach = @symbol(sh4);
- break;
+ case PROCESSOR_HITACHI_SH4:
+ mach = @symbol(sh4);
+ break;
#endif
#ifdef PROCESSOR_MOTOROLA_821
- case PROCESSOR_MOTOROLA_821:
- mach = @symbol(mc821);
- break;
+ case PROCESSOR_MOTOROLA_821:
+ mach = @symbol(mc821);
+ break;
#endif
#ifdef PROCESSOR_SHx_SH3
- case PROCESSOR_SHx_SH3:
- mach = @symbol(shx_sh3);
- break;
+ case PROCESSOR_SHx_SH3:
+ mach = @symbol(shx_sh3);
+ break;
#endif
#ifdef PROCESSOR_SHx_SH4
- case PROCESSOR_SHx_SH4:
- mach = @symbol(shx_sh4);
- break;
-#endif
-
- default:
- sprintf(vsnBuffer, "%d", sysInfo.dwProcessorType);
- mach = __MKSTRING(vsnBuffer);
- break;
+ case PROCESSOR_SHx_SH4:
+ mach = @symbol(shx_sh4);
+ break;
+#endif
+
+ default:
+ sprintf(vsnBuffer, "%d", sysInfo.dwProcessorType);
+ mach = __MKSTRING(vsnBuffer);
+ break;
}
numberOfCPUs = __MKUINT(sysInfo.dwNumberOfProcessors);
%}.
node isNil ifTrue:[
- node := self getHostName.
+ node := self getHostName.
].
dom isNil ifTrue:[
- dom := self getDomainName.
+ dom := self getDomainName.
].
info := IdentityDictionary new.
@@ -9312,7 +9325,7 @@
wchar_t buffer[MAXPATHLEN+1];
if (GetWindowsDirectoryW(buffer, MAXPATHLEN)) {
- RETURN (__mkStringOrU16String_maxlen(buffer, MAXPATHLEN));
+ RETURN (__mkStringOrU16String_maxlen(buffer, MAXPATHLEN));
}
%}.
^ nil
@@ -9333,7 +9346,7 @@
wchar_t buffer[MAXPATHLEN+1];
if (GetSystemDirectoryW(buffer, MAXPATHLEN)) {
- RETURN (__mkStringOrU16String_maxlen(buffer, MAXPATHLEN));
+ RETURN (__mkStringOrU16String_maxlen(buffer, MAXPATHLEN));
}
%}.
^ nil
@@ -9521,11 +9534,11 @@
maxFileNameLength
"return the max number of characters in a filename.
CAVEAT:
- Actually, the following is somewhat wrong - some systems
- support different sizes, depending on the volume.
- We return a somewhat conservative number here.
- Another entry, to query for volume specific max
- will be added in the future."
+ Actually, the following is somewhat wrong - some systems
+ support different sizes, depending on the volume.
+ We return a somewhat conservative number here.
+ Another entry, to query for volume specific max
+ will be added in the future."
%{ /* NOCONTEXT */
@@ -9558,9 +9571,9 @@
osVersion := OperatingSystem osVersion.
^ 'Windows ',
- (#('2000' 'XP' 'Server2003' 'VISTA' '7' '8')
- at: (#('5.0' '5.1' '5.2' '6.0' '6.1' '6.2') indexOf:osVersion)
- ifAbsent:osVersion).
+ (#('2000' 'XP' 'Server2003' 'VISTA' '7' '8')
+ at: (#('5.0' '5.1' '5.2' '6.0' '6.1' '6.2') indexOf:osVersion)
+ ifAbsent:osVersion).
"
self osName
@@ -9601,11 +9614,11 @@
randomBytesInto:bufferOrInteger
"If bufferOrInteger is a String or a ByteArray,
- fill a given buffer with random bytes from the RtlGenRandom function
- and nswer the buffer.
+ fill a given buffer with random bytes from the RtlGenRandom function
+ and nswer the buffer.
If bufferOrInteger is a SmallInteger,
- return this many bytes (max 4) as a SmallInteger.
+ return this many bytes (max 4) as a SmallInteger.
Return nil on error (and raise PrimitiveFailure).
@@ -9623,38 +9636,38 @@
unsigned int __localBuffer = 0;
if (__isSmallInteger(bufferOrInteger)) {
- __useLocalBuffer = 1;
- __buffer = (unsigned char *)&__localBuffer;
- __bufferSize = __smallIntegerVal(bufferOrInteger);
- if (__bufferSize > sizeof(INT))
- __bufferSize = sizeof(INT);
+ __useLocalBuffer = 1;
+ __buffer = (unsigned char *)&__localBuffer;
+ __bufferSize = __smallIntegerVal(bufferOrInteger);
+ if (__bufferSize > sizeof(INT))
+ __bufferSize = sizeof(INT);
} else if (__isString(bufferOrInteger)) {
- __buffer = __stringVal(bufferOrInteger);
- __bufferSize = __stringSize(bufferOrInteger);
+ __buffer = __stringVal(bufferOrInteger);
+ __bufferSize = __stringSize(bufferOrInteger);
} else if (__isByteArray(bufferOrInteger)) {
- __buffer = __byteArrayVal(bufferOrInteger);
- __bufferSize = __byteArraySize(bufferOrInteger);
+ __buffer = __byteArrayVal(bufferOrInteger);
+ __bufferSize = __byteArraySize(bufferOrInteger);
} else {
- goto error;
+ goto error;
}
if (P_RtlGenRandom == 0) {
- HINSTANCE hAdvapi32 = LoadLibrary("advapi32.dll");
- // console_printf("hAdvapi32: %x\n", hAdvapi32);
- if (hAdvapi32) {
- P_RtlGenRandom = (BOOL (__stdcall *)(PVOID , ULONG))
- GetProcAddress(hAdvapi32, "SystemFunction036");
- // console_printf("P_RtlGenRandom: %x\n", P_RtlGenRandom);
- if (P_RtlGenRandom == 0) {
- goto error;
- }
- }
+ HINSTANCE hAdvapi32 = LoadLibrary("advapi32.dll");
+ // console_printf("hAdvapi32: %x\n", hAdvapi32);
+ if (hAdvapi32) {
+ P_RtlGenRandom = (BOOL (__stdcall *)(PVOID , ULONG))
+ GetProcAddress(hAdvapi32, "SystemFunction036");
+ // console_printf("P_RtlGenRandom: %x\n", P_RtlGenRandom);
+ if (P_RtlGenRandom == 0) {
+ goto error;
+ }
+ }
}
if ((*P_RtlGenRandom)(__buffer, __bufferSize)) {
- if (__useLocalBuffer) {
- RETURN(__mkSmallInteger(__localBuffer & _MAX_INT));
- }
- RETURN (bufferOrInteger);
+ if (__useLocalBuffer) {
+ RETURN(__mkSmallInteger(__localBuffer & _MAX_INT));
+ }
+ RETURN (bufferOrInteger);
}
error: ;
%}.
@@ -9676,9 +9689,9 @@
if (__isStringLike(aStringOrSymbol)
&& __isStringLike(newValueString) ) {
- if (SetEnvironmentVariable(__stringVal(aStringOrSymbol), __stringVal(newValueString)) != 0) {
- RETURN(self);
- }
+ if (SetEnvironmentVariable(__stringVal(aStringOrSymbol), __stringVal(newValueString)) != 0) {
+ RETURN(self);
+ }
}
%}.
self primitiveFailed
@@ -9874,10 +9887,10 @@
libDirPath := self stxLibDirPath.
libDirPath notNil ifTrue:[
- "/ and also add the libDirPath from the registry ...
- (sysPath includes:libDirPath) ifFalse:[
- sysPath add:libDirPath
- ].
+ "/ and also add the libDirPath from the registry ...
+ (sysPath includes:libDirPath) ifFalse:[
+ sysPath add:libDirPath
+ ].
].
"/ #(
"/ '\programs\eXept\smalltalk'
@@ -9913,7 +9926,7 @@
k := RegistryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X\' , Smalltalk versionString.
k notNil ifTrue:[
- p := k valueNamed:'BinDir'.
+ p := k valueNamed:'BinDir'.
].
^ p
@@ -9926,17 +9939,17 @@
"ask the registry for the lib directory"
(Array
- with:('HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X\' , Smalltalk versionString)
- with:('HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'))
+ with:('HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X\' , Smalltalk versionString)
+ with:('HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'))
do:[:eachKeyToTry |
- |k p|
-
- k := RegistryEntry key:eachKeyToTry.
- k notNil ifTrue:[
- p := k valueNamed:'LibDir'.
- k closeKey.
- ^ p
- ].
+ |k p|
+
+ k := RegistryEntry key:eachKeyToTry.
+ k notNil ifTrue:[
+ p := k valueNamed:'LibDir'.
+ k closeKey.
+ ^ p
+ ].
].
^ nil
@@ -10012,22 +10025,22 @@
#define DM_OUT_DEFAULT DM_UPDATE
"
nBytesNeeded := self
- primDocumentProperties:nil
- hPrinter:hPrinter
- pDeviceName: deviceName
- pDevModeOutput:nil
- pDevModeInput:nil
- fMode:0.
+ primDocumentProperties:nil
+ hPrinter:hPrinter
+ pDeviceName: deviceName
+ pDevModeOutput:nil
+ pDevModeInput:nil
+ fMode:0.
devModeOutput := DevModeStructure new:(nBytesNeeded * 2 "never trust MS !!").
rslt := self
- primDocumentProperties:nil
- hPrinter:hPrinter
- pDeviceName: deviceName
- pDevModeOutput:devModeOutput
- pDevModeInput:pDevModeInputOrNil
- fMode:4+2.
+ primDocumentProperties:nil
+ hPrinter:hPrinter
+ pDeviceName: deviceName
+ pDevModeOutput:devModeOutput
+ pDevModeInput:pDevModeInputOrNil
+ fMode:4+2.
^ devModeOutput
@@ -10092,23 +10105,23 @@
#define DM_OUT_DEFAULT DM_UPDATE
"
nBytesNeeded := self
- primDocumentProperties:nil
- hPrinter:hPrinter
- pDeviceName: deviceName
- pDevModeOutput:nil
- pDevModeInput:nil
- fMode:0.
+ primDocumentProperties:nil
+ hPrinter:hPrinter
+ pDeviceName: deviceName
+ pDevModeOutput:nil
+ pDevModeInput:nil
+ fMode:0.
nBytesNeeded < 0 ifTrue:[^nil].
devModeOutput := DevModeStructure new:(nBytesNeeded * 2 "never trust MS !!").
rslt := self
- primDocumentProperties:nil
- hPrinter:hPrinter
- pDeviceName: deviceName
- pDevModeOutput:devModeOutput
- pDevModeInput:nil
- fMode:2.
+ primDocumentProperties:nil
+ hPrinter:hPrinter
+ pDeviceName: deviceName
+ pDevModeOutput:devModeOutput
+ pDevModeInput:nil
+ fMode:2.
^ devModeOutput
@@ -10131,19 +10144,19 @@
sizeBytesArray := ByteArray new:4.
bytesNeeded := self
- primGetPrinter:hPrinter
- level:2
- informationBuffer: nil
- bufferSize: 0
- bufferNeededSize:sizeBytesArray.
+ primGetPrinter:hPrinter
+ level:2
+ informationBuffer: nil
+ bufferSize: 0
+ bufferNeededSize:sizeBytesArray.
bytesNeeded := sizeBytesArray longAt:1.
informationBuffer := PrinterInfo2Structure new: bytesNeeded.
rslt := self
- primGetPrinter:hPrinter
- level:2
- informationBuffer:informationBuffer
- bufferSize: bytesNeeded
- bufferNeededSize:sizeBytesArray.
+ primGetPrinter:hPrinter
+ level:2
+ informationBuffer:informationBuffer
+ bufferSize: bytesNeeded
+ bufferNeededSize:sizeBytesArray.
self closePrinter: printerName.
^informationBuffer
@@ -10163,47 +10176,47 @@
printerNames := self getPrintersNames.
collectedInfo := OrderedCollection new.
printerNames do:[:eachName |
- |fn vol attributes nm deviceInfo infoFields driverName|
-
- attributes := Dictionary new.
-
- fn := eachName asFilename.
- vol := fn volume.
- vol notEmptyOrNil ifTrue:[
- (vol startsWith:'\\') ifTrue:[
- "/ a remote printer
- attributes at:#isRemotePrinter put:true.
- attributes at:#remotePrinterName put:(fn baseName).
- attributes at:#remotePrinterHost put:(fn directoryName copyFrom:3).
- ] ifFalse:[
- "/ some other printer
- ].
- ] ifFalse:[
- "/ some other printer
- ].
-
- deviceInfo := self getProfileString:'PrinterPorts' key:eachName default:''.
- "gives us smething like 'winspool,Ne00:,15,45',
- which is: driverName, deviceName, ? , ?"
-
- infoFields := deviceInfo asCollectionOfSubstringsSeparatedBy:$,.
- driverName := infoFields at:1.
- 2 to: infoFields size by:3 do:[:i |
- |medium longName|
-
- medium := infoFields at:i.
- longName := eachName ,',' , driverName , ',' , medium.
- attributes at:#driverName put:driverName.
- attributes at:#longName put:longName.
- attributes at:#medium put:medium.
-
- collectedInfo add:
- (AbstractOperatingSystem::PrinterInfo new
- printerName:eachName
- attributes:attributes;
- setDocumentProperties;
- yourself)
- ].
+ |fn vol attributes nm deviceInfo infoFields driverName|
+
+ attributes := Dictionary new.
+
+ fn := eachName asFilename.
+ vol := fn volume.
+ vol notEmptyOrNil ifTrue:[
+ (vol startsWith:'\\') ifTrue:[
+ "/ a remote printer
+ attributes at:#isRemotePrinter put:true.
+ attributes at:#remotePrinterName put:(fn baseName).
+ attributes at:#remotePrinterHost put:(fn directoryName copyFrom:3).
+ ] ifFalse:[
+ "/ some other printer
+ ].
+ ] ifFalse:[
+ "/ some other printer
+ ].
+
+ deviceInfo := self getProfileString:'PrinterPorts' key:eachName default:''.
+ "gives us smething like 'winspool,Ne00:,15,45',
+ which is: driverName, deviceName, ? , ?"
+
+ infoFields := deviceInfo asCollectionOfSubstringsSeparatedBy:$,.
+ driverName := infoFields at:1.
+ 2 to: infoFields size by:3 do:[:i |
+ |medium longName|
+
+ medium := infoFields at:i.
+ longName := eachName ,',' , driverName , ',' , medium.
+ attributes at:#driverName put:driverName.
+ attributes at:#longName put:longName.
+ attributes at:#medium put:medium.
+
+ collectedInfo add:
+ (AbstractOperatingSystem::PrinterInfo new
+ printerName:eachName
+ attributes:attributes;
+ setDocumentProperties;
+ yourself)
+ ].
].
^ collectedInfo
@@ -10221,7 +10234,7 @@
|printerNames|
printerNames := (self getProfileString:'PrinterPorts' key:nil default:'')
- asCollectionOfSubstringsSeparatedBy:(Character value:0).
+ asCollectionOfSubstringsSeparatedBy:(Character value:0).
printerNames := printerNames reject:[:nm | nm isEmpty].
^printerNames
@@ -10310,12 +10323,12 @@
hPrinter := self openPrinter:'\\http://exept.exept.de:631\lj4' .
rslt := self
- primDocumentProperties:nil
- hPrinter:hPrinter
- pDeviceName: '\\http://exept.exept.de:631\lj4'
- pDevModeOutput:nil
- pDevModeInput:nil
- fMode:0.
+ primDocumentProperties:nil
+ hPrinter:hPrinter
+ pDeviceName: '\\http://exept.exept.de:631\lj4'
+ pDevModeOutput:nil
+ pDevModeInput:nil
+ fMode:0.
self halt.
"
@@ -10332,12 +10345,12 @@
hPrinter := self openPrinter:'\\http://exept.exept.de:631\lj4' .
rslt := self
- primDocumentProperties:nil
- hPrinter:hPrinter
- pDeviceName: '\\http://exept.exept.de:631\lj4'
- pDevModeOutput:nil
- pDevModeInput:nil
- fMode:0.
+ primDocumentProperties:nil
+ hPrinter:hPrinter
+ pDeviceName: '\\http://exept.exept.de:631\lj4'
+ pDevModeOutput:nil
+ pDevModeInput:nil
+ fMode:0.
self halt.
"
@@ -10354,12 +10367,12 @@
hPrinter := self openPrinter:'\\http://exept.exept.de:631\lj4' .
rslt := self
- primDocumentProperties:nil
- hPrinter:hPrinter
- pDeviceName: '\\http://exept.exept.de:631\lj4'
- pDevModeOutput:nil
- pDevModeInput:nil
- fMode:0.
+ primDocumentProperties:nil
+ hPrinter:hPrinter
+ pDeviceName: '\\http://exept.exept.de:631\lj4'
+ pDevModeOutput:nil
+ pDevModeInput:nil
+ fMode:0.
self halt.
"
@@ -10388,20 +10401,20 @@
sizeBytesArray := ByteArray new:4.
ok := self
- primGetPrinter:hPrinter
- level:2
- informationBuffer: nil
- bufferSize: 0
- bufferNeededSize:sizeBytesArray.
+ primGetPrinter:hPrinter
+ level:2
+ informationBuffer: nil
+ bufferSize: 0
+ bufferNeededSize:sizeBytesArray.
bytesNeeded := sizeBytesArray longAt:1.
informationBuffer := PrinterInfo2Structure new: bytesNeeded.
rslt := self
- primGetPrinter:hPrinter
- level:2
- informationBuffer:informationBuffer
- bufferSize: bytesNeeded
- bufferNeededSize:sizeBytesArray.
+ primGetPrinter:hPrinter
+ level:2
+ informationBuffer:informationBuffer
+ bufferSize: bytesNeeded
+ bufferNeededSize:sizeBytesArray.
self assert: rslt.
informationBuffer inspect.
self closePrinter: printerName.
@@ -10531,9 +10544,9 @@
'NON' 'no_NO'
'NOR' 'no_NO'
) pairWiseDo:[:key :mappedValue|
- key = windowsLanguageString ifTrue:[
- ^ mappedValue
- ]
+ key = windowsLanguageString ifTrue:[
+ ^ mappedValue
+ ]
].
"no mapping"
@@ -10555,21 +10568,21 @@
if (__isString(inString)
&& __isString(outString)
&& __isSmallInteger(outBufferSize)) {
- unsigned long c_outBufferSize = __intVal(outBufferSize);
-
- if (__stringSize(outString) <= c_outBufferSize) {
- unsigned long c_ret;
-
- c_ret = ExpandEnvironmentStringsA(__stringVal(inString), __stringVal(outString), c_outBufferSize);
- RETURN( __mkSmallInteger(c_ret) );
- }
+ unsigned long c_outBufferSize = __intVal(outBufferSize);
+
+ if (__stringSize(outString) <= c_outBufferSize) {
+ unsigned long c_ret;
+
+ c_ret = ExpandEnvironmentStringsA(__stringVal(inString), __stringVal(outString), c_outBufferSize);
+ RETURN( __mkSmallInteger(c_ret) );
+ }
}
%}.
"/ <apicall: ulongReturn "ExpandEnvironmentStringsA" (pointer pointer ulong) module: "kernel32.dll" >
^self primitiveFailed
"
- self primExpandEnvironmentStringsA:'%ProgramFiles%\test\x' into:(String new:256) inspect size:256
+ self primExpandEnvironmentStringsA:'%ProgramFiles%\test\x' into:(String new:256) inspect size:256
"
!
@@ -10579,31 +10592,31 @@
^self primitiveFailed
"
- self primExpandEnvironmentStringsW:'%ProgramFiles%\test\x' asUnicodeString into:(Unicode16String new:256) inspect size:256
+ self primExpandEnvironmentStringsW:'%ProgramFiles%\test\x' asUnicodeString into:(Unicode16String new:256) inspect size:256
"
! !
!Win32OperatingSystem class methodsFor:'regional settings'!
country
- "Answer the current system value for country."
+ "Answer the current system value for country."
^self queryNationalProfileString: 'iCountry' default: 0
"
- self country
+ self country
"
"Modified: / 22-12-2006 / 16:45:32 / User"
!
countryName
- "Answer the current system value for country name."
+ "Answer the current system value for country name."
^self queryNationalProfileString: 'sCountry' default: 'Deutschland'
"
- self countryName
+ self countryName
"
"Modified: / 22-12-2006 / 16:45:32 / User"
@@ -10612,8 +10625,8 @@
dateFormat
"Answer the current system value for date format.
Answer DfMDY = Month-Day-Year
- DfDMY = Day-Month-Year
- DfYMD = Year-Month-Day."
+ DfDMY = Day-Month-Year
+ DfYMD = Year-Month-Day."
|separatorString code|
@@ -10635,49 +10648,49 @@
!
dateFormatCode
- "Answer the current system value for date format.
- Answer DfMDY = Month-Day-Year = 0
- DfDMY = Day-Month-Year = 1
- DfYMD = Year-Month-Day = 2"
+ "Answer the current system value for date format.
+ Answer DfMDY = Month-Day-Year = 0
+ DfDMY = Day-Month-Year = 1
+ DfYMD = Year-Month-Day = 2"
^self queryNationalProfileInt: 'iDate' default: 0
"
- self dateFormatCode
+ self dateFormatCode
"
"Modified: / 22-12-2006 / 16:45:53 / User"
!
dateSeparator
- "Answer the current system value for date separator."
+ "Answer the current system value for date separator."
^self queryNationalProfileString: 'sDate' default: '/'
"
- self dateSeparator
+ self dateSeparator
"
"Modified: / 22-12-2006 / 16:45:32 / User"
!
decimalSeparator
- "Answer the current system value for decimal separator."
+ "Answer the current system value for decimal separator."
^self queryNationalProfileString: 'sDecimal' default: '.'
"
- self decimalSeparator
+ self decimalSeparator
"
"Created: / 22-12-2006 / 16:45:11 / User"
!
isDateFormatDMY
- "Answer the current system value for date format.
- Answer DfMDY = Month-Day-Year
- DfDMY = Day-Month-Year
- DfYMD = Year-Month-Day."
+ "Answer the current system value for date format.
+ Answer DfMDY = Month-Day-Year
+ DfDMY = Day-Month-Year
+ DfYMD = Year-Month-Day."
^self dateFormatCode = 1
@@ -10685,10 +10698,10 @@
!
isDateFormatMDY
- "Answer the current system value for date format.
- Answer DfMDY = Month-Day-Year
- DfDMY = Day-Month-Year
- DfYMD = Year-Month-Day."
+ "Answer the current system value for date format.
+ Answer DfMDY = Month-Day-Year
+ DfDMY = Day-Month-Year
+ DfYMD = Year-Month-Day."
^self dateFormatCode = 0
@@ -10696,10 +10709,10 @@
!
isDateFormatYMD
- "Answer the current system value for date format.
- Answer DfMDY = Month-Day-Year
- DfDMY = Day-Month-Year
- DfYMD = Year-Month-Day."
+ "Answer the current system value for date format.
+ Answer DfMDY = Month-Day-Year
+ DfDMY = Day-Month-Year
+ DfYMD = Year-Month-Day."
^self dateFormatCode = 2
@@ -10707,7 +10720,7 @@
!
isTimeFormat12Hour
- "Answer whether the current system time format is 12-hour."
+ "Answer whether the current system time format is 12-hour."
^self timeFormat = 0
@@ -10734,11 +10747,11 @@
| answer |
answer := self primGetProfileInt: 'Intl'
- keyName: aKeyName
- default: -1 asUnsigned32.
+ keyName: aKeyName
+ default: -1 asUnsigned32.
^answer = -1 asUnsigned32
- ifTrue: [ defaultValue ]
- ifFalse: [ answer ]
+ ifTrue: [ defaultValue ]
+ ifFalse: [ answer ]
"
self queryNationalProfileInt: 'iDate' default: 0
@@ -10748,43 +10761,43 @@
!
queryNationalProfileString: aKeyName default: defaultValue
- "Answer the string value of key aKeyName in
- the [Intl] application section of the WIN.INI profile file.
- Answer defaultValue if aKeyName cannot be found."
+ "Answer the string value of key aKeyName in
+ the [Intl] application section of the WIN.INI profile file.
+ Answer defaultValue if aKeyName cannot be found."
| extString result |
extString := String new: 80.
result := self primGetProfileString: 'Intl'
- keyName: aKeyName
- default: ''
- returnedString: extString
- size: extString size.
+ keyName: aKeyName
+ default: ''
+ returnedString: extString
+ size: extString size.
^result > 0
- ifTrue: [extString copyFrom: 1 to: result]
- ifFalse: [ defaultValue ]
+ ifTrue: [extString copyFrom: 1 to: result]
+ ifFalse: [ defaultValue ]
"Created: / 22-12-2006 / 16:13:01 / User"
!
thousandsSeparator
- "Answer the current system value
- for the thousands separator."
+ "Answer the current system value
+ for the thousands separator."
^self queryNationalProfileString: 'sThousand' default: ','
"
- self thousandsSeparator
+ self thousandsSeparator
"
"Created: / 22-12-2006 / 16:46:50 / User"
!
timeFormat
- "Answer the current system value for time format."
+ "Answer the current system value for time format."
^self queryNationalProfileInt: 'iTime' default: 0
"
- self timeFormat
+ self timeFormat
"
"Created: / 22-12-2006 / 16:48:27 / User"
@@ -10813,29 +10826,29 @@
This looks for the files extension, and is typically used to present help-files,
html documents, pdf documents etc.
operationSymbol is one of:
- open
- edit
- explore
- print
+ open
+ edit
+ explore
+ print
"
|handle directoryName|
"nil directory is the current directory"
directoryStringOrFilenameOrNil notNil ifTrue:[
- directoryName := directoryStringOrFilenameOrNil asFilename pathName.
+ directoryName := directoryStringOrFilenameOrNil asFilename pathName.
].
handle := self
- shellExecute:nil
- lpOperation:operationSymbol
- lpFile:fileOrUrl asString
- lpParameters:nil
- lpDirectory:directoryName
- nShowCmd:#SW_SHOWNORMAL.
+ shellExecute:nil
+ lpOperation:operationSymbol
+ lpFile:fileOrUrl asString
+ lpParameters:nil
+ lpDirectory:directoryName
+ nShowCmd:#SW_SHOWNORMAL.
handle notNil ifTrue:[
- handle close.
+ handle close.
].
@@ -10875,27 +10888,27 @@
I added this in order to be able to shutdown w95 cleanly"
confirmationMessageOrNil notNil ifTrue:[
- (Dialog confirm:confirmationMessageOrNil) ifFalse:[
- ^ false
- ].
+ (Dialog confirm:confirmationMessageOrNil) ifFalse:[
+ ^ false
+ ].
].
%{
int flag;
if (how == @symbol(shutdown)) {
- flag = EWX_SHUTDOWN;
+ flag = EWX_SHUTDOWN;
} else if (how == @symbol(reboot)) {
- flag = EWX_REBOOT;
+ flag = EWX_REBOOT;
} else if (how == @symbol(logoff)) {
- flag = EWX_LOGOFF;
+ flag = EWX_LOGOFF;
} else if (how == @symbol(forceShutdown)) {
- flag = EWX_SHUTDOWN | EWX_FORCE;
+ flag = EWX_SHUTDOWN | EWX_FORCE;
} else if (how == @symbol(forceReboot)) {
- flag = EWX_REBOOT | EWX_FORCE;
+ flag = EWX_REBOOT | EWX_FORCE;
} else if (how == @symbol(forceLogoff)) {
- flag = EWX_LOGOFF | EWX_FORCE;
+ flag = EWX_LOGOFF | EWX_FORCE;
} else {
- RETURN (false);
+ RETURN (false);
}
RETURN ((ExitWindowsEx(flag, 0) == TRUE) ? true : false);
%}
@@ -10915,58 +10928,58 @@
&& __bothSmallInteger(d, h)
&& __bothSmallInteger(min, s)
&& __isSmallInteger(millis)) {
- SYSTEMTIME sysTime;
- FILETIME fileTime;
-
- sysTime.wHour = __intVal(h);
- sysTime.wMinute = __intVal(min);
- sysTime.wSecond = __intVal(s);
- sysTime.wMilliseconds = __intVal(millis);
-
- sysTime.wYear = __intVal(y);
- sysTime.wMonth = __intVal(m);
- sysTime.wDay = __intVal(d);
-
- if (sysTime.wYear < 1602) goto outOfRange; // not 1601 - so we don't have to care for timezone
- if (sysTime.wYear > 9999) goto outOfRange;
-
- if (utcBoolean != true) {
- // adjust for local time
-
- // TzSpecificLocalTimeToSystemTime() is not supported in Win2000
- // - but we do not support Win2k any longer as of 2014
+ SYSTEMTIME sysTime;
+ FILETIME fileTime;
+
+ sysTime.wHour = __intVal(h);
+ sysTime.wMinute = __intVal(min);
+ sysTime.wSecond = __intVal(s);
+ sysTime.wMilliseconds = __intVal(millis);
+
+ sysTime.wYear = __intVal(y);
+ sysTime.wMonth = __intVal(m);
+ sysTime.wDay = __intVal(d);
+
+ if (sysTime.wYear < 1602) goto outOfRange; // not 1601 - so we don't have to care for timezone
+ if (sysTime.wYear > 9999) goto outOfRange;
+
+ if (utcBoolean != true) {
+ // adjust for local time
+
+ // TzSpecificLocalTimeToSystemTime() is not supported in Win2000
+ // - but we do not support Win2k any longer as of 2014
#ifdef __BORLANDC__
- {
- typedef BOOL (WINAPI *P_TzSpecificLocalTimeToSystemTime)(LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME);
- static P_TzSpecificLocalTimeToSystemTime pTzSpecificLocalTimeToSystemTime;
-
- if (pTzSpecificLocalTimeToSystemTime == NULL) {
- pTzSpecificLocalTimeToSystemTime =
- (P_TzSpecificLocalTimeToSystemTime)
- GetProcAddress ( GetModuleHandle ("kernel32.dll"),
- "TzSpecificLocalTimeToSystemTime");
- }
- if (!pTzSpecificLocalTimeToSystemTime(0, &sysTime, &sysTime))
- goto error;
- }
-#else
- if (!TzSpecificLocalTimeToSystemTime(0, &sysTime, &sysTime))
- goto error;
-#endif
- }
-
- if (! SystemTimeToFileTime(&sysTime, &fileTime))
- goto error;
-
- osTime = FileTimeToOsTime1970(&fileTime);
+ {
+ typedef BOOL (WINAPI *P_TzSpecificLocalTimeToSystemTime)(LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME);
+ static P_TzSpecificLocalTimeToSystemTime pTzSpecificLocalTimeToSystemTime;
+
+ if (pTzSpecificLocalTimeToSystemTime == NULL) {
+ pTzSpecificLocalTimeToSystemTime =
+ (P_TzSpecificLocalTimeToSystemTime)
+ GetProcAddress ( GetModuleHandle ("kernel32.dll"),
+ "TzSpecificLocalTimeToSystemTime");
+ }
+ if (!pTzSpecificLocalTimeToSystemTime(0, &sysTime, &sysTime))
+ goto error;
+ }
+#else
+ if (!TzSpecificLocalTimeToSystemTime(0, &sysTime, &sysTime))
+ goto error;
+#endif
+ }
+
+ if (! SystemTimeToFileTime(&sysTime, &fileTime))
+ goto error;
+
+ osTime = FileTimeToOsTime1970(&fileTime);
}
outOfRange: ;
error: ;
%}.
osTime notNil ifTrue:[
- "/ rebias to 1970 by subtracting the number of millis from 1.1.1601 to 1.1.1970
- "/ ^ osTime - self osTimeOf19700101. -- already done
- ^ osTime
+ "/ rebias to 1970 by subtracting the number of millis from 1.1.1601 to 1.1.1970
+ "/ ^ osTime - self osTimeOf19700101. -- already done
+ ^ osTime
].
"Error, some invalid date ot time"
@@ -11019,10 +11032,10 @@
LONGLONG micros;
if (! frequencyKnown) {
- // get the high resolution counter's accuracy
- QueryPerformanceFrequency(&ticksPerSecond);
- frequencyKnown = 1;
- divisor = ticksPerSecond / (LONGLONG)1000000;
+ // get the high resolution counter's accuracy
+ QueryPerformanceFrequency(&ticksPerSecond);
+ frequencyKnown = 1;
+ divisor = ticksPerSecond / (LONGLONG)1000000;
}
// what time is it?
@@ -11058,8 +11071,8 @@
Use the millisecondTimeXXX:-methods to compare and add time deltas - these know about the wrap.
BAD DESIGN:
- This should be changed to return some instance of RelativeTime,
- and these computations moved there.
+ This should be changed to return some instance of RelativeTime,
+ and these computations moved there.
Don't use this method in application code since it is an internal (private)
interface. For compatibility with ST-80, use Time millisecondClockValue.
@@ -11132,53 +11145,53 @@
WCHAR nm[33];
if (anIntegerOrNil == nil) {
- retVal = GetTimeZoneInformation(&tzInfo);
- switch (retVal) {
- case TIME_ZONE_ID_STANDARD:
- case TIME_ZONE_ID_DAYLIGHT:
- case TIME_ZONE_ID_UNKNOWN:
- break;
-
- default:
- case TIME_ZONE_ID_INVALID:
- error = __mkSmallInteger(__WIN32_ERR(GetLastError()));
- goto out;
- }
+ retVal = GetTimeZoneInformation(&tzInfo);
+ switch (retVal) {
+ case TIME_ZONE_ID_STANDARD:
+ case TIME_ZONE_ID_DAYLIGHT:
+ case TIME_ZONE_ID_UNKNOWN:
+ break;
+
+ default:
+ case TIME_ZONE_ID_INVALID:
+ error = __mkSmallInteger(__WIN32_ERR(GetLastError()));
+ goto out;
+ }
} else if (__isSmallInteger(anIntegerOrNil)) {
- int year = __intVal(anIntegerOrNil);
+ int year = __intVal(anIntegerOrNil);
#if defined(__BORLANDC__) || (defined(__MINGW32__) && !defined(__MINGW64__))
- {
- typedef BOOL (WINAPI *P_GetTimeZoneInformationForYear)(
- USHORT,
- LPTIME_ZONE_INFORMATION, // - should be, but is not defined: PDYNAMIC_TIME_ZONE_INFORMATION,
- LPTIME_ZONE_INFORMATION);
- static P_GetTimeZoneInformationForYear pGetTimeZoneInformationForYear;
- static int haveTriedToGet_P_GetTimeZoneInformationForYear = 0;
-
- if (! haveTriedToGet_P_GetTimeZoneInformationForYear) {
- pGetTimeZoneInformationForYear =
- (P_GetTimeZoneInformationForYear)GetProcAddress(GetModuleHandle("kernel32.dll"), "GetTimeZoneInformationForYear");
- haveTriedToGet_P_GetTimeZoneInformationForYear = 1;
- }
- if (pGetTimeZoneInformationForYear == NULL) {
- error = __mkSmallInteger(@symbol(primitiveFailed));
- goto out;
- } else {
- if (!pGetTimeZoneInformationForYear(year, NULL, &tzInfo)) {
- error = __mkSmallInteger(__WIN32_ERR(GetLastError()));
- goto out;
- }
- }
- }
-#else
- if (!GetTimeZoneInformationForYear(year, NULL, &tzInfo)) {
- error = __mkSmallInteger(__WIN32_ERR(GetLastError()));
- goto out;
- }
+ {
+ typedef BOOL (WINAPI *P_GetTimeZoneInformationForYear)(
+ USHORT,
+ LPTIME_ZONE_INFORMATION, // - should be, but is not defined: PDYNAMIC_TIME_ZONE_INFORMATION,
+ LPTIME_ZONE_INFORMATION);
+ static P_GetTimeZoneInformationForYear pGetTimeZoneInformationForYear;
+ static int haveTriedToGet_P_GetTimeZoneInformationForYear = 0;
+
+ if (! haveTriedToGet_P_GetTimeZoneInformationForYear) {
+ pGetTimeZoneInformationForYear =
+ (P_GetTimeZoneInformationForYear)GetProcAddress(GetModuleHandle("kernel32.dll"), "GetTimeZoneInformationForYear");
+ haveTriedToGet_P_GetTimeZoneInformationForYear = 1;
+ }
+ if (pGetTimeZoneInformationForYear == NULL) {
+ error = __mkSmallInteger(@symbol(primitiveFailed));
+ goto out;
+ } else {
+ if (!pGetTimeZoneInformationForYear(year, NULL, &tzInfo)) {
+ error = __mkSmallInteger(__WIN32_ERR(GetLastError()));
+ goto out;
+ }
+ }
+ }
+#else
+ if (!GetTimeZoneInformationForYear(year, NULL, &tzInfo)) {
+ error = __mkSmallInteger(__WIN32_ERR(GetLastError()));
+ goto out;
+ }
#endif
} else {
- error = @symbol(badArgument);
- goto out;
+ error = @symbol(badArgument);
+ goto out;
}
bias = __mkSmallInteger(tzInfo.Bias);
@@ -11208,22 +11221,22 @@
out:;
%}.
error notNil ifTrue:[
- self primitiveFailed:error.
+ self primitiveFailed:error.
].
info := self timeZoneInfoClass new.
info
- bias:bias
- name:standardName standardBias:standardBias
- daylightName:daylightName daylightBias:daylightBias.
+ bias:bias
+ name:standardName standardBias:standardBias
+ daylightName:daylightName daylightBias:daylightBias.
standardDate_m ~~ 0 ifTrue:[
- info standardYear:standardDate_y standardMonth:standardDate_m standardDay:standardDate_d
- standardWeekDay:standardDate_wd standardHour:standardDate_h standardMinute:standardDate_min.
+ info standardYear:standardDate_y standardMonth:standardDate_m standardDay:standardDate_d
+ standardWeekDay:standardDate_wd standardHour:standardDate_h standardMinute:standardDate_min.
].
daylightDate_m ~~ 0 ifTrue:[
- info daylightYear:daylightDate_y daylightMonth:daylightDate_m daylightDay:daylightDate_d
- daylightWeekDay:daylightDate_wd daylightHour:daylightDate_h daylightMinute:daylightDate_min.
+ info daylightYear:daylightDate_y daylightMonth:daylightDate_m daylightDay:daylightDate_d
+ daylightWeekDay:daylightDate_wd daylightHour:daylightDate_h daylightMinute:daylightDate_min.
].
^ info
@@ -11260,8 +11273,8 @@
%{ /* NOCONTEXT */
if (__isSmallInteger(numberOfSeconds)) {
- sleep(__intVal(numberOfSeconds));
- RETURN ( self );
+ sleep(__intVal(numberOfSeconds));
+ RETURN ( self );
}
%}.
"
@@ -11292,115 +11305,115 @@
/* try cache */
{
- OBJ lastOsTimeLow, lastOsTimeHi, lastTimeInfo;
-
- lastOsTimeLow = @global(LastOsTimeLow);
- lastOsTimeHi = @global(LastOsTimeHi);
- if (__isInteger(lastOsTimeLow)
- && (__unsignedLongIntVal(lastOsTimeLow) == __unsignedLongIntVal(tLow))
- && lastOsTimeHi
- && (__unsignedLongIntVal(lastOsTimeHi) == __unsignedLongIntVal(tHigh))
- && (@global(LastTimeInfoIsLocal) == isLocalTime)
- ) {
- lastTimeInfo = @global(LastTimeInfo);
- if (lastTimeInfo != nil) {
- RETURN (lastTimeInfo);
- }
- }
+ OBJ lastOsTimeLow, lastOsTimeHi, lastTimeInfo;
+
+ lastOsTimeLow = @global(LastOsTimeLow);
+ lastOsTimeHi = @global(LastOsTimeHi);
+ if (__isInteger(lastOsTimeLow)
+ && (__unsignedLongIntVal(lastOsTimeLow) == __unsignedLongIntVal(tLow))
+ && lastOsTimeHi
+ && (__unsignedLongIntVal(lastOsTimeHi) == __unsignedLongIntVal(tHigh))
+ && (@global(LastTimeInfoIsLocal) == isLocalTime)
+ ) {
+ lastTimeInfo = @global(LastTimeInfo);
+ if (lastTimeInfo != nil) {
+ RETURN (lastTimeInfo);
+ }
+ }
}
if (!OsTime1970ToFileTime(tLow, tHigh, &fileTime))
- goto out;
+ goto out;
if (!FileTimeToSystemTime(&fileTime, &sysTime))
- goto out;
+ goto out;
if (isLocalTime == false) { // easy: UTC time
- sysTimePtr = &sysTime;
- utcOffset = __mkSmallInteger(0);
- isDst = false;
+ sysTimePtr = &sysTime;
+ utcOffset = __mkSmallInteger(0);
+ isDst = false;
} else { // local time: have to convert and find out about DST
- TIME_ZONE_INFORMATION tzInfo;
- LONGLONG longTime;
- SYSTEMTIME localSysTime;
- FILETIME localFileTime;
-
- sysTimePtr = &localSysTime;
-
- if (!SystemTimeToTzSpecificLocalTime(NULL, &sysTime, &localSysTime))
- goto out;
- if (!SystemTimeToFileTime(&localSysTime, &localFileTime))
- goto out;
-
- // all the rest is computing the UTC offset and whether DST applies
- longTime = ((LONGLONG)fileTime.dwHighDateTime << 32) + fileTime.dwLowDateTime;
- longTime -= ((LONGLONG)localFileTime.dwHighDateTime << 32) + localFileTime.dwLowDateTime;
-
- // utcOffset is the difference from UTC to local time including possible DST
- _utcOffset = longTime / 10000000;
- utcOffset = __mkSmallInteger(_utcOffset);
+ TIME_ZONE_INFORMATION tzInfo;
+ LONGLONG longTime;
+ SYSTEMTIME localSysTime;
+ FILETIME localFileTime;
+
+ sysTimePtr = &localSysTime;
+
+ if (!SystemTimeToTzSpecificLocalTime(NULL, &sysTime, &localSysTime))
+ goto out;
+ if (!SystemTimeToFileTime(&localSysTime, &localFileTime))
+ goto out;
+
+ // all the rest is computing the UTC offset and whether DST applies
+ longTime = ((LONGLONG)fileTime.dwHighDateTime << 32) + fileTime.dwLowDateTime;
+ longTime -= ((LONGLONG)localFileTime.dwHighDateTime << 32) + localFileTime.dwLowDateTime;
+
+ // utcOffset is the difference from UTC to local time including possible DST
+ _utcOffset = longTime / 10000000;
+ utcOffset = __mkSmallInteger(_utcOffset);
# if defined(__BORLANDC__) || (defined(__MINGW32__) && !defined(__MINGW64__))
- {
- typedef BOOL (WINAPI *P_GetTimeZoneInformationForYear)(
- USHORT,
- LPTIME_ZONE_INFORMATION, // - should be, but is not defined: PDYNAMIC_TIME_ZONE_INFORMATION,
- LPTIME_ZONE_INFORMATION);
- static P_GetTimeZoneInformationForYear pGetTimeZoneInformationForYear;
- static int haveTriedToGet_P_GetTimeZoneInformationForYear = 0;
-
- if (! haveTriedToGet_P_GetTimeZoneInformationForYear) {
- pGetTimeZoneInformationForYear =
- (P_GetTimeZoneInformationForYear)GetProcAddress(GetModuleHandle("kernel32.dll"), "GetTimeZoneInformationForYear");
- haveTriedToGet_P_GetTimeZoneInformationForYear = 1;
- }
- if (pGetTimeZoneInformationForYear == NULL) {
- // ignore this error and fall back to GetTimeZoneInformation()
- reason = @symbol(NoGetTimeZoneInformationForYear);
- } else {
- if (pGetTimeZoneInformationForYear(localSysTime.wYear, NULL, &tzInfo)) {
- _stdUtcOffset = (tzInfo.Bias + tzInfo.StandardBias) * 60;
- isDst = (_stdUtcOffset != _utcOffset) ? true : false;
- } else {
- // ignore this error and fall back to GetTimeZoneInformation()
- reason = @symbol(GetTimeZoneInformationForYearFailed);
- error = __mkSmallInteger(__WIN32_ERR(GetLastError()));
- }
- }
- }
+ {
+ typedef BOOL (WINAPI *P_GetTimeZoneInformationForYear)(
+ USHORT,
+ LPTIME_ZONE_INFORMATION, // - should be, but is not defined: PDYNAMIC_TIME_ZONE_INFORMATION,
+ LPTIME_ZONE_INFORMATION);
+ static P_GetTimeZoneInformationForYear pGetTimeZoneInformationForYear;
+ static int haveTriedToGet_P_GetTimeZoneInformationForYear = 0;
+
+ if (! haveTriedToGet_P_GetTimeZoneInformationForYear) {
+ pGetTimeZoneInformationForYear =
+ (P_GetTimeZoneInformationForYear)GetProcAddress(GetModuleHandle("kernel32.dll"), "GetTimeZoneInformationForYear");
+ haveTriedToGet_P_GetTimeZoneInformationForYear = 1;
+ }
+ if (pGetTimeZoneInformationForYear == NULL) {
+ // ignore this error and fall back to GetTimeZoneInformation()
+ reason = @symbol(NoGetTimeZoneInformationForYear);
+ } else {
+ if (pGetTimeZoneInformationForYear(localSysTime.wYear, NULL, &tzInfo)) {
+ _stdUtcOffset = (tzInfo.Bias + tzInfo.StandardBias) * 60;
+ isDst = (_stdUtcOffset != _utcOffset) ? true : false;
+ } else {
+ // ignore this error and fall back to GetTimeZoneInformation()
+ reason = @symbol(GetTimeZoneInformationForYearFailed);
+ error = __mkSmallInteger(__WIN32_ERR(GetLastError()));
+ }
+ }
+ }
# else
- if (GetTimeZoneInformationForYear(localSysTime.wYear, NULL, &tzInfo)) {
- _stdUtcOffset = (tzInfo.Bias + tzInfo.StandardBias) * 60;
- isDst = (_stdUtcOffset != _utcOffset) ? true : false;
- } else {
- // ignore this error and fall back to GetTimeZoneInformation()
- reason = @symbol(GetTimeZoneInformationForYearFailed);
- error = __mkSmallInteger(__WIN32_ERR(GetLastError()));
- }
-# endif
- // this code is a fallback for WIN XP
- if (isDst == nil) {
- DWORD retVal = GetTimeZoneInformation(&tzInfo);
- switch (retVal) {
- case TIME_ZONE_ID_STANDARD:
- case TIME_ZONE_ID_DAYLIGHT:
- case TIME_ZONE_ID_UNKNOWN:
- // nonDstOffset is the difference from UTC to local time without DST
- _stdUtcOffset = (tzInfo.Bias + tzInfo.StandardBias) * 60;
- isDst = (_stdUtcOffset != _utcOffset) ? true : false;
- break;
-
- // these are errors, which may occur, if the
- // Windows OS has not been setupm correctly.
- // We ignore these errors here, but we don't know if DST applies.
- // Assume that there is no DST.
- default:
- case TIME_ZONE_ID_INVALID:
- isDst = false;
- reason = @symbol(TIME_ZONE_ID_INVALID);
- error = __mkSmallInteger(__WIN32_ERR(GetLastError()));
- break;
- }
- } // End WINXP backward compatibility
+ if (GetTimeZoneInformationForYear(localSysTime.wYear, NULL, &tzInfo)) {
+ _stdUtcOffset = (tzInfo.Bias + tzInfo.StandardBias) * 60;
+ isDst = (_stdUtcOffset != _utcOffset) ? true : false;
+ } else {
+ // ignore this error and fall back to GetTimeZoneInformation()
+ reason = @symbol(GetTimeZoneInformationForYearFailed);
+ error = __mkSmallInteger(__WIN32_ERR(GetLastError()));
+ }
+# endif
+ // this code is a fallback for WIN XP
+ if (isDst == nil) {
+ DWORD retVal = GetTimeZoneInformation(&tzInfo);
+ switch (retVal) {
+ case TIME_ZONE_ID_STANDARD:
+ case TIME_ZONE_ID_DAYLIGHT:
+ case TIME_ZONE_ID_UNKNOWN:
+ // nonDstOffset is the difference from UTC to local time without DST
+ _stdUtcOffset = (tzInfo.Bias + tzInfo.StandardBias) * 60;
+ isDst = (_stdUtcOffset != _utcOffset) ? true : false;
+ break;
+
+ // these are errors, which may occur, if the
+ // Windows OS has not been setupm correctly.
+ // We ignore these errors here, but we don't know if DST applies.
+ // Assume that there is no DST.
+ default:
+ case TIME_ZONE_ID_INVALID:
+ isDst = false;
+ reason = @symbol(TIME_ZONE_ID_INVALID);
+ error = __mkSmallInteger(__WIN32_ERR(GetLastError()));
+ break;
+ }
+ } // End WINXP backward compatibility
}
hour = __mkSmallInteger(sysTimePtr->wHour);
@@ -11419,22 +11432,22 @@
"/ '--> REASON: ' errorPrint. reason errorPrintCR. '--> ERROR: ' errorPrint. error errorPrintCR.
year isNil ifTrue:[
- TimeConversionError raiseErrorString:' - out of range'.
+ TimeConversionError raiseErrorString:' - out of range'.
].
info := self timeInfoClass new.
info
- year:year
- month:month
- day:day
- hours:hour
- minutes:minute
- seconds:second
- milliseconds:millis
- utcOffset:utcOffset
- dst:isDst
- dayInYear:yDay
- dayInWeek:weekDay.
+ year:year
+ month:month
+ day:day
+ hours:hour
+ minutes:minute
+ seconds:second
+ milliseconds:millis
+ utcOffset:utcOffset
+ dst:isDst
+ dayInYear:yDay
+ dayInWeek:weekDay.
LastTimeInfo := info.
LastOsTimeLow := tLow.
@@ -11471,13 +11484,13 @@
appDataDirFromEnv := self getEnvironment:'APPDATA'.
appDataDirFromEnv notNil ifTrue:[
- ^ appDataDirFromEnv , '\' , appName
+ ^ appDataDirFromEnv , '\' , appName
].
appDataDirFromRegistry :=
- (self registryEntry key:'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
- valueNamed:'AppData'.
+ (self registryEntry key:'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
+ valueNamed:'AppData'.
appDataDirFromRegistry notNil ifTrue:[
- ^ appDataDirFromRegistry , '\' , appName
+ ^ appDataDirFromRegistry , '\' , appName
].
^ super getApplicationDataDirectoryFor:appName
@@ -11496,15 +11509,15 @@
|dir path|
path := (self registryEntry
- key:'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
- valueNamed:'Desktop'.
+ key:'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
+ valueNamed:'Desktop'.
path isNil ifTrue:[
- "Fallback"
- dir := self getHomeDirectory.
- dir isNil ifTrue:[ ^ nil ].
-
- path := dir , '\Desktop'.
+ "Fallback"
+ dir := self getHomeDirectory.
+ dir isNil ifTrue:[ ^ nil ].
+
+ path := dir , '\Desktop'.
].
(self isValidPath:path) ifFalse:[ ^ nil ].
@@ -11525,11 +11538,11 @@
|dir|
dir := (self registryEntry
- key:'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
- valueNamed:'Personal'.
+ key:'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
+ valueNamed:'Personal'.
dir isNil ifTrue:[
- dir := self getHomeDirectory.
+ dir := self getHomeDirectory.
].
^ dir.
@@ -11578,11 +11591,11 @@
info := self userInfoOf:userID.
(info notNil
and:[info includesKey:#gecos]) ifTrue:[
- gecos := info at:#gecos.
- (gecos includes:$,) ifTrue:[
- ^ gecos copyTo:(gecos indexOf:$,) - 1
- ].
- ^ gecos
+ gecos := info at:#gecos.
+ (gecos includes:$,) ifTrue:[
+ ^ gecos copyTo:(gecos indexOf:$,) - 1
+ ].
+ ^ gecos
].
^ self getUserNameFromID:userID
@@ -11630,7 +11643,7 @@
dir := self getEnvironment:'USERPROFILE'.
dir isNil ifTrue:[
- dir := '.'.
+ dir := '.'.
].
^ dir.
@@ -11655,33 +11668,33 @@
char *name = (char *)0;
if (firstCall) {
- DWORD nameSize = sizeof(cachedName);
-
- if (GetUserName(cachedName, &nameSize) == TRUE) {
- name = cachedName;
- firstCall = 0;
- }
+ DWORD nameSize = sizeof(cachedName);
+
+ if (GetUserName(cachedName, &nameSize) == TRUE) {
+ name = cachedName;
+ firstCall = 0;
+ }
} else {
- name = cachedName;
+ name = cachedName;
}
/*
* try a few common environment variables ...
*/
if (! name || (name[0] == 0) ) {
- name = getenv("LOGIN");
- if (! name || (name[0] == 0) ) {
- name = getenv("LOGNAME");
- if (! name || (name[0] == 0) ) {
- name = getenv("USER");
- }
- }
+ name = getenv("LOGIN");
+ if (! name || (name[0] == 0) ) {
+ name = getenv("LOGNAME");
+ if (! name || (name[0] == 0) ) {
+ name = getenv("USER");
+ }
+ }
}
/*
* nope - I really font know who you are.
*/
if (! name || (name[0] == 0) ) {
- name = "you";
+ name = "you";
}
RETURN ( __MKSTRING(name) );
@@ -11710,7 +11723,7 @@
This is the login name, not the fullName."
aNumber == self getUserID ifTrue:[
- ^ self getLoginName
+ ^ self getLoginName
].
^ '? (' , aNumber printString , ')'
@@ -11735,30 +11748,30 @@
h_Process = GetCurrentProcess();
if (OpenProcessToken(h_Process,TOKEN_READ,&h_Token) == FALSE) {
- console_printf("Error: Couldn't open the process token\n");
- goto getOutOfHere;
+ console_printf("Error: Couldn't open the process token\n");
+ goto getOutOfHere;
}
if (GetTokenInformation(h_Token,TokenElevation,&t_TokenElevation,sizeof(t_TokenElevation),&dw_TokenLength) == FALSE) {
- console_printf("Error: Couldn't retrieve the elevation right of the current process token\n");
- CloseHandle(h_Token);
- goto getOutOfHere;
+ console_printf("Error: Couldn't retrieve the elevation right of the current process token\n");
+ CloseHandle(h_Token);
+ goto getOutOfHere;
}
if (t_TokenElevation.TokenIsElevated != 0) {
- if (GetTokenInformation(h_Token,TokenElevationType,&e_ElevationType,sizeof(e_ElevationType),&dw_TokenLength) == FALSE) {
- console_printf("Error: Couldn't retrieve the elevation token class\n");
- CloseHandle(h_Token);
- goto getOutOfHere;
- } else {
- if (e_ElevationType == TokenElevationTypeFull || e_ElevationType == TokenElevationTypeDefault) {
- CloseHandle(h_Token);
- RETURN(true);
- }
- CloseHandle(h_Token);
- RETURN(false);
- }
+ if (GetTokenInformation(h_Token,TokenElevationType,&e_ElevationType,sizeof(e_ElevationType),&dw_TokenLength) == FALSE) {
+ console_printf("Error: Couldn't retrieve the elevation token class\n");
+ CloseHandle(h_Token);
+ goto getOutOfHere;
+ } else {
+ if (e_ElevationType == TokenElevationTypeFull || e_ElevationType == TokenElevationTypeDefault) {
+ CloseHandle(h_Token);
+ RETURN(true);
+ }
+ CloseHandle(h_Token);
+ RETURN(false);
+ }
} else {
- CloseHandle(h_Token);
- RETURN(false);
+ CloseHandle(h_Token);
+ RETURN(false);
}
getOutOfHere: ;
%}.
@@ -11779,22 +11792,22 @@
// Initialize SID.
if( !AllocateAndInitializeSid( &NtAuthority,
- 2,
- SECURITY_BUILTIN_DOMAIN_RID,
- DOMAIN_ALIAS_RID_ADMINS,
- 0, 0, 0, 0, 0, 0,
- &AdministratorsGroup))
+ 2,
+ SECURITY_BUILTIN_DOMAIN_RID,
+ DOMAIN_ALIAS_RID_ADMINS,
+ 0, 0, 0, 0, 0, 0,
+ &AdministratorsGroup))
{
- // Initializing SID Failed.
- RETURN( false );
+ // Initializing SID Failed.
+ RETURN( false );
}
// Check whether the token is present in admin group.
if( !CheckTokenMembership( NULL,
- AdministratorsGroup,
- &IsInAdminGroup ))
+ AdministratorsGroup,
+ &IsInAdminGroup ))
{
- // Error occurred.
- IsInAdminGroup = FALSE;
+ // Error occurred.
+ IsInAdminGroup = FALSE;
}
// Free SID and return.
FreeSid(AdministratorsGroup);
@@ -11831,10 +11844,10 @@
info := IdentityDictionary new.
loginName := self getLoginName.
(aNameOrID == self getUserID or:[aNameOrID = loginName]) ifTrue:[
- userName := loginName.
- info at:#dir put:self getHomeDirectory.
+ userName := loginName.
+ info at:#dir put:self getHomeDirectory.
] ifFalse:[
- userName := 'unknown'.
+ userName := 'unknown'.
].
info at:#name put:userName.
"/ uid notNil ifTrue:[info at:#uid put:uid].
@@ -11877,69 +11890,69 @@
DWORD exitCode;
if (__isExternalAddressLike(pidToWait) ) {
- HANDLE __pidToWait = _HANDLEVal(pidToWait);
+ HANDLE __pidToWait = _HANDLEVal(pidToWait);
#ifdef PROCESSDEBUG_CHILDPROCESSWAIT
- console_printf("childProcessWait %x b %d\n",__pidToWait,blocking==true);
-#endif
-
- if (blocking == true) {
+ console_printf("childProcessWait %x b %d\n",__pidToWait,blocking==true);
+#endif
+
+ if (blocking == true) {
#ifdef DO_WRAP_CALLS
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- endStatus = STX_API_CALL2( "WaitForSingleObject", WaitForSingleObject, __pidToWait, INFINITE);
- } while ((endStatus < 0) && (__threadErrno == EINTR));
-#else
- endStatus = WaitForSingleObject(__pidToWait, INFINITE);
- if (endStatus < 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
-#endif
- if (endStatus == WAIT_TIMEOUT) {
- if (blocking==true)
- status = @symbol(timeout);
- else {
- status = @symbol(continue);
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ endStatus = STX_API_CALL2( "WaitForSingleObject", WaitForSingleObject, __pidToWait, INFINITE);
+ } while ((endStatus < 0) && (__threadErrno == EINTR));
+#else
+ endStatus = WaitForSingleObject(__pidToWait, INFINITE);
+ if (endStatus < 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
+#endif
+ if (endStatus == WAIT_TIMEOUT) {
+ if (blocking==true)
+ status = @symbol(timeout);
+ else {
+ status = @symbol(continue);
#ifdef PROCESSDEBUG_CHILDPROCESSWAIT
- console_printf("ret nil\n");
-#endif
- RETURN(nil);
- }
- } else if (endStatus == WAIT_OBJECT_0) {
-
- }
- }
+ console_printf("ret nil\n");
+#endif
+ RETURN(nil);
+ }
+ } else if (endStatus == WAIT_OBJECT_0) {
+
+ }
+ }
#ifdef PROCESSDEBUG_CHILDPROCESSWAIT
- console_printf("GetExitCodeProcess\n");
-#endif
-
- if (GetExitCodeProcess(__pidToWait, &exitCode)) {
- if (exitCode == STILL_ACTIVE) {
+ console_printf("GetExitCodeProcess\n");
+#endif
+
+ if (GetExitCodeProcess(__pidToWait, &exitCode)) {
+ if (exitCode == STILL_ACTIVE) {
#ifdef PROCESSDEBUG_CHILDPROCESSWAIT
- console_printf("exitCode: STILL_ACTIVE\n");
-#endif
- RETURN(nil);
- }
+ console_printf("exitCode: STILL_ACTIVE\n");
+#endif
+ RETURN(nil);
+ }
#ifdef PROCESSDEBUG_CHILDPROCESSWAIT
- console_printf("exitCode %d\n", exitCode);
-#endif
- status = @symbol(exit);
- code = __mkSmallInteger(exitCode);
- core = false;
- pid = pidToWait;
- } else {
- code = __mkSmallInteger(GetLastError());
+ console_printf("exitCode %d\n", exitCode);
+#endif
+ status = @symbol(exit);
+ code = __mkSmallInteger(exitCode);
+ core = false;
+ pid = pidToWait;
+ } else {
+ code = __mkSmallInteger(GetLastError());
#ifdef PROCESSDEBUG_CHILDPROCESSWAIT
- console_printf("GetExitCodeProcess failed: error=%d\n", GetLastError());
-#endif
- }
+ console_printf("GetExitCodeProcess failed: error=%d\n", GetLastError());
+#endif
+ }
}
%}.
(status isNil or:[pid isNil]) ifTrue:[
- ^ self primitiveFailed:code
+ ^ self primitiveFailed:code
].
"/ Transcript show:'pid: '; show:pid; show:' status: '; show:status;
@@ -11955,15 +11968,15 @@
unsigned long bytes_available;
if (__Class(fd) == @global(Win32SocketHandle)) {
- if (ioctlsocket((SOCKET)_HANDLEVal(fd), FIONREAD, &bytes_available) == 0) {
- if (bytes_available > _MAX_INT) bytes_available = _MAX_INT;
- RETURN(__mkSmallInteger(bytes_available));
- }
+ if (ioctlsocket((SOCKET)_HANDLEVal(fd), FIONREAD, &bytes_available) == 0) {
+ if (bytes_available > _MAX_INT) bytes_available = _MAX_INT;
+ RETURN(__mkSmallInteger(bytes_available));
+ }
} else if (__isSmallInteger(fd)) {
- if (PeekNamedPipe(_get_osfhandle(__intVal(fd)), NULL, 0, NULL, &bytes_available, NULL) != 0){
- if (bytes_available > _MAX_INT) bytes_available = _MAX_INT;
- RETURN(__mkSmallInteger(bytes_available));
- }
+ if (PeekNamedPipe(_get_osfhandle(__intVal(fd)), NULL, 0, NULL, &bytes_available, NULL) != 0){
+ if (bytes_available > _MAX_INT) bytes_available = _MAX_INT;
+ RETURN(__mkSmallInteger(bytes_available));
+ }
}
%}.
@@ -12009,53 +12022,53 @@
int pass = 1; // perform up to 2 passes
if (readableResultFdArray != nil) {
- if (! __isArrayLike(readableResultFdArray)) {
- goto fail;
- }
- resultSizeReadable = __arraySize(readableResultFdArray);
+ if (! __isArrayLike(readableResultFdArray)) {
+ goto fail;
+ }
+ resultSizeReadable = __arraySize(readableResultFdArray);
}
if (writableResultFdArray != nil) {
- if (! __isArrayLike(writableResultFdArray)) {
- goto fail;
- }
- resultSizeWritable = __arraySize(writableResultFdArray);
- if (readableResultFdArray == writableResultFdArray) {
- // allow common result set for read/write/except
- pcntW = &cntR;
- }
+ if (! __isArrayLike(writableResultFdArray)) {
+ goto fail;
+ }
+ resultSizeWritable = __arraySize(writableResultFdArray);
+ if (readableResultFdArray == writableResultFdArray) {
+ // allow common result set for read/write/except
+ pcntW = &cntR;
+ }
}
if (exceptionResultFdArray != nil) {
- if (! __isArrayLike(exceptionResultFdArray)) {
- goto fail;
- }
- resultSizeException = __arraySize(exceptionResultFdArray);
- if (exceptionResultFdArray == readableResultFdArray) {
- // allow common result set for read/write/except
- pcntE = &cntR;
- } else if (exceptionResultFdArray == writableResultFdArray) {
- pcntE = &cntW;
- }
+ if (! __isArrayLike(exceptionResultFdArray)) {
+ goto fail;
+ }
+ resultSizeException = __arraySize(exceptionResultFdArray);
+ if (exceptionResultFdArray == readableResultFdArray) {
+ // allow common result set for read/write/except
+ pcntE = &cntR;
+ } else if (exceptionResultFdArray == writableResultFdArray) {
+ pcntE = &cntW;
+ }
}
if (__isNonNilObject(readFdArray)) {
- if (! __isArrayLike(readFdArray)) goto fail;
- readCount = __arraySize(readFdArray);
+ if (! __isArrayLike(readFdArray)) goto fail;
+ readCount = __arraySize(readFdArray);
} else {
- readCount = 0;
+ readCount = 0;
}
if (__isNonNilObject(writeFdArray)) {
- if (! __isArrayLike(writeFdArray)) goto fail;
- writeCount = __arraySize(writeFdArray);
+ if (! __isArrayLike(writeFdArray)) goto fail;
+ writeCount = __arraySize(writeFdArray);
} else {
- writeCount = 0;
+ writeCount = 0;
}
if (__isNonNilObject(exceptFdArray)) {
- if (! __isArrayLike(exceptFdArray)) goto fail;
- exceptCount = __arraySize(exceptFdArray);
+ if (! __isArrayLike(exceptFdArray)) goto fail;
+ exceptCount = __arraySize(exceptFdArray);
} else {
- exceptCount = 0;
+ exceptCount = 0;
}
pollAgain:
@@ -12065,145 +12078,145 @@
numHandles = hasSockets = hasPipes = 0;
for (i = 0; (i < readCount) && (numHandles < MAXHANDLE); i++) {
- OBJ fd = __arrayVal(readFdArray)[i];
-
- if (fd != nil) {
- if (__Class(fd) == @global(Win32SocketHandle)) {
- FD_SET (_HANDLEVal(fd), &readFds);
- hasSockets++;
- } else if (__isSmallInteger(fd)) {
- DWORD canRead;
- if (PeekNamedPipe(_get_osfhandle(__intVal(fd)), 0, 0, 0, &canRead, 0)) {
- if (canRead > 0) {
- if (*pcntR < resultSizeReadable) {
- __arrayVal(readableResultFdArray)[*pcntR] = fd;
- }
- (*pcntR)++; cntAll++;
- }
- } else {
- @global(LastErrorNumber) = __mkSmallInteger(EBADF);
- RETURN (__mkSmallInteger(-1));
- }
- hasPipes++;
- } else {
- hArray [numHandles] = _HANDLEVal(fd);
- retArray[numHandles] = i;
- ++numHandles;
- }
- }
+ OBJ fd = __arrayVal(readFdArray)[i];
+
+ if (fd != nil) {
+ if (__Class(fd) == @global(Win32SocketHandle)) {
+ FD_SET (_HANDLEVal(fd), &readFds);
+ hasSockets++;
+ } else if (__isSmallInteger(fd)) {
+ DWORD canRead;
+ if (PeekNamedPipe(_get_osfhandle(__intVal(fd)), 0, 0, 0, &canRead, 0)) {
+ if (canRead > 0) {
+ if (*pcntR < resultSizeReadable) {
+ __arrayVal(readableResultFdArray)[*pcntR] = fd;
+ }
+ (*pcntR)++; cntAll++;
+ }
+ } else {
+ @global(LastErrorNumber) = __mkSmallInteger(EBADF);
+ RETURN (__mkSmallInteger(-1));
+ }
+ hasPipes++;
+ } else {
+ hArray [numHandles] = _HANDLEVal(fd);
+ retArray[numHandles] = i;
+ ++numHandles;
+ }
+ }
}
for (i = 0; (i < writeCount) && (numHandles < MAXHANDLE); i++) {
- OBJ fd = __arrayVal(writeFdArray)[i];
-
- if (fd != nil) {
- if (__Class(fd) == @global(Win32SocketHandle)) {
- FD_SET (_HANDLEVal(fd), &writeFds);
- hasSockets++;
- } else if (__isSmallInteger(fd)) {
- // kludge: assume that pipes can alway be written
- if (*pcntW < resultSizeWritable) {
- __arrayVal(writableResultFdArray)[*pcntW] = fd;
- }
- (*pcntW)++; cntAll++;
- // there is no pipe to check
- } else {
- hArray [numHandles] = _HANDLEVal(fd);
- retArray[numHandles] = i + 10000;
- ++numHandles;
- }
- }
+ OBJ fd = __arrayVal(writeFdArray)[i];
+
+ if (fd != nil) {
+ if (__Class(fd) == @global(Win32SocketHandle)) {
+ FD_SET (_HANDLEVal(fd), &writeFds);
+ hasSockets++;
+ } else if (__isSmallInteger(fd)) {
+ // kludge: assume that pipes can alway be written
+ if (*pcntW < resultSizeWritable) {
+ __arrayVal(writableResultFdArray)[*pcntW] = fd;
+ }
+ (*pcntW)++; cntAll++;
+ // there is no pipe to check
+ } else {
+ hArray [numHandles] = _HANDLEVal(fd);
+ retArray[numHandles] = i + 10000;
+ ++numHandles;
+ }
+ }
}
for (i = 0; (i < exceptCount) && (numHandles < MAXHANDLE); i++) {
- OBJ fdOrPid = __arrayVal(exceptFdArray)[i];
-
- if (fdOrPid != nil) {
- if (__Class(fdOrPid) == @global(Win32SocketHandle)) {
- FD_SET (_HANDLEVal(fdOrPid), &exceptFds);
- hasSockets++;
- } else if (__isExternalAddressLike(fdOrPid)) {
- // a PID
- hArray [numHandles] = _HANDLEVal(fdOrPid);
- retArray[numHandles] = i + 20000;
- ++numHandles;
- }
- }
+ OBJ fdOrPid = __arrayVal(exceptFdArray)[i];
+
+ if (fdOrPid != nil) {
+ if (__Class(fdOrPid) == @global(Win32SocketHandle)) {
+ FD_SET (_HANDLEVal(fdOrPid), &exceptFds);
+ hasSockets++;
+ } else if (__isExternalAddressLike(fdOrPid)) {
+ // a PID
+ hArray [numHandles] = _HANDLEVal(fdOrPid);
+ retArray[numHandles] = i + 20000;
+ ++numHandles;
+ }
+ }
}
if (hasSockets) {
- struct timeval tv = {0, 0};
- int nReady;
+ struct timeval tv = {0, 0};
+ int nReady;
#ifdef SELECT3DEBUGWIN32
- console_printf("select hasSockets = %d\n", hasSockets);
-#endif
- nReady = select(1 , &readFds, &writeFds, &exceptFds, &tv); // first parameter to select is ignored in windows
- if (nReady < 0) {
+ console_printf("select hasSockets = %d\n", hasSockets);
+#endif
+ nReady = select(1 , &readFds, &writeFds, &exceptFds, &tv); // first parameter to select is ignored in windows
+ if (nReady < 0) {
#ifdef SELECTDEBUGWIN32
- console_printf("error in select %d %d\n", nReady, GetLastError());
-#endif
- @global(LastErrorNumber) = __mkSmallInteger(EBADF);
- RETURN (__mkSmallInteger(-1));
- }
- if (nReady > 0) {
+ console_printf("error in select %d %d\n", nReady, GetLastError());
+#endif
+ @global(LastErrorNumber) = __mkSmallInteger(EBADF);
+ RETURN (__mkSmallInteger(-1));
+ }
+ if (nReady > 0) {
#ifdef SELECT3DEBUGWIN32
- console_printf("select nReady %d of %d\n", nReady, hasSockets);
-#endif
- for (i = 0; i < readCount; i++) {
- OBJ fd = __arrayVal(readFdArray)[i];
- if ((__Class(fd) == @global(Win32SocketHandle)) && FD_ISSET(_HANDLEVal(fd), &readFds)) {
- if (*pcntR < resultSizeReadable) {
- __arrayVal(readableResultFdArray)[*pcntR] = fd;
- __STORE(readableResultFdArray, fd);
- }
- (*pcntR)++; cntAll++;
- }
- }
- for (i = 0; i < writeCount; i++) {
- OBJ fd = __arrayVal(writeFdArray)[i];
- if ((__Class(fd) == @global(Win32SocketHandle)) && FD_ISSET(_HANDLEVal(fd), &writeFds)) {
- if (*pcntW < resultSizeWritable) {
- __arrayVal(writableResultFdArray)[*pcntW] = fd;
- __STORE(writableResultFdArray, fd);
- }
- (*pcntW)++; cntAll++;
- }
- }
- for (i = 0; i < exceptCount; i++) {
- OBJ fd = __arrayVal(exceptFdArray)[i];
- if ((__Class(fd) == @global(Win32SocketHandle)) && FD_ISSET(_HANDLEVal(fd), &exceptFds)) {
- if (*pcntE < resultSizeException) {
- __arrayVal(exceptionResultFdArray)[*pcntE] = fd;
- __STORE(exceptionResultFdArray, fd);
- }
- (*pcntE)++; cntAll++;
- }
- }
-
- }
+ console_printf("select nReady %d of %d\n", nReady, hasSockets);
+#endif
+ for (i = 0; i < readCount; i++) {
+ OBJ fd = __arrayVal(readFdArray)[i];
+ if ((__Class(fd) == @global(Win32SocketHandle)) && FD_ISSET(_HANDLEVal(fd), &readFds)) {
+ if (*pcntR < resultSizeReadable) {
+ __arrayVal(readableResultFdArray)[*pcntR] = fd;
+ __STORE(readableResultFdArray, fd);
+ }
+ (*pcntR)++; cntAll++;
+ }
+ }
+ for (i = 0; i < writeCount; i++) {
+ OBJ fd = __arrayVal(writeFdArray)[i];
+ if ((__Class(fd) == @global(Win32SocketHandle)) && FD_ISSET(_HANDLEVal(fd), &writeFds)) {
+ if (*pcntW < resultSizeWritable) {
+ __arrayVal(writableResultFdArray)[*pcntW] = fd;
+ __STORE(writableResultFdArray, fd);
+ }
+ (*pcntW)++; cntAll++;
+ }
+ }
+ for (i = 0; i < exceptCount; i++) {
+ OBJ fd = __arrayVal(exceptFdArray)[i];
+ if ((__Class(fd) == @global(Win32SocketHandle)) && FD_ISSET(_HANDLEVal(fd), &exceptFds)) {
+ if (*pcntE < resultSizeException) {
+ __arrayVal(exceptionResultFdArray)[*pcntE] = fd;
+ __STORE(exceptionResultFdArray, fd);
+ }
+ (*pcntE)++; cntAll++;
+ }
+ }
+
+ }
}
if (pass > 1) // perform maximum 2 passes
- goto done;
+ goto done;
if (cntAll) {
- // check for other handles and return immediately, no timeout
- t = 0;
+ // check for other handles and return immediately, no timeout
+ t = 0;
} else {
- if (__isSmallInteger(millis)) {
- t = __intVal(millis);
-
- if (t <= 0 && numHandles == 0) {
- RETURN (__mkSmallInteger(0));
- }
- } else {
- t = INFINITE;
- }
+ if (__isSmallInteger(millis)) {
+ t = __intVal(millis);
+
+ if (t <= 0 && numHandles == 0) {
+ RETURN (__mkSmallInteger(0));
+ }
+ } else {
+ t = INFINITE;
+ }
}
if (numHandles == 0 && t == 0) {
- // nothing to do and no wait
- goto done;
+ // nothing to do and no wait
+ goto done;
}
#ifdef SELECT3DEBUGWIN32
@@ -12214,105 +12227,105 @@
if (res == WAIT_TIMEOUT) {
#ifdef SELECT3DEBUGWIN32
- console_printf("- timeOut; ret nil\n" );
-#endif
- if (t != 0 && (hasSockets || hasPipes)) {
- // if not a single handle is ready, poll sockets an pipes again
- pass = 2;
- goto pollAgain;
- }
- goto done;
+ console_printf("- timeOut; ret nil\n" );
+#endif
+ if (t != 0 && (hasSockets || hasPipes)) {
+ // if not a single handle is ready, poll sockets an pipes again
+ pass = 2;
+ goto pollAgain;
+ }
+ goto done;
}
if (res == WAIT_FAILED) {
#ifdef SELECT2DEBUGWIN32
- console_printf("- error %d (last %d); ret -1\n", __threadErrno, GetLastError());
-#endif
- if (__threadErrno == EINTR) {
- @global(LastErrorNumber) = nil;
- RETURN (__mkSmallInteger(0));
- } else {
- if (@global(InfoPrinting) == true) {
+ console_printf("- error %d (last %d); ret -1\n", __threadErrno, GetLastError());
+#endif
+ if (__threadErrno == EINTR) {
+ @global(LastErrorNumber) = nil;
+ RETURN (__mkSmallInteger(0));
+ } else {
+ if (@global(InfoPrinting) == true) {
// console_fprintf(stderr, "Win32OS [info]: select errno = %d (last %d)\n", __threadErrno, GetLastError());
- console_printf("Win32OS [info]: select errno = %d (last %d)\n", __threadErrno, GetLastError());
- }
- @global(LastErrorNumber) = __mkSmallInteger(EBADF);
- RETURN (__mkSmallInteger(-1));
- }
+ console_printf("Win32OS [info]: select errno = %d (last %d)\n", __threadErrno, GetLastError());
+ }
+ @global(LastErrorNumber) = __mkSmallInteger(EBADF);
+ RETURN (__mkSmallInteger(-1));
+ }
}
if (numHandles) {
- if (res == numHandles) {
- // vmwait() added an IRQ event to the handles, and this one has been triggered
- if (1 /* @global(InfoPrinting) == true */) {
- console_fprintf(stderr, "Win32OS [info]: plugIn event has been handled\n");
- }
- goto done;
- }
- if ((res < 0) || (res >= numHandles)) {
- console_printf("- res=%d error1 %d\n", res, GetLastError());
- goto done;
- }
-
- idx = retArray[res];
- cntAll++;
+ if (res == numHandles) {
+ // vmwait() added an IRQ event to the handles, and this one has been triggered
+ if (1 /* @global(InfoPrinting) == true */) {
+ console_fprintf(stderr, "Win32OS [info]: plugIn event has been handled\n");
+ }
+ goto done;
+ }
+ if ((res < 0) || (res >= numHandles)) {
+ console_printf("- res=%d error1 %d\n", res, GetLastError());
+ goto done;
+ }
+
+ idx = retArray[res];
+ cntAll++;
#ifdef SELECTDEBUGWIN32
- console_printf("wait Handles res %d idx %d numHandles %d --- ", res, idx, numHandles);
-#endif
- if (idx < 10000) {
- if (*pcntR < resultSizeReadable) {
- OBJ temp = __arrayVal(readFdArray)[idx];
- __arrayVal(readableResultFdArray)[*pcntR] = temp;
- __STORE(readableResultFdArray, temp);
+ console_printf("wait Handles res %d idx %d numHandles %d --- ", res, idx, numHandles);
+#endif
+ if (idx < 10000) {
+ if (*pcntR < resultSizeReadable) {
+ OBJ temp = __arrayVal(readFdArray)[idx];
+ __arrayVal(readableResultFdArray)[*pcntR] = temp;
+ __STORE(readableResultFdArray, temp);
#ifdef SELECTDEBUGWIN32
- console_printf("read ready: %x\n", __externalAddressVal(temp));
-#endif
- (*pcntR)++;
- }
- } else if (idx < 20000) {
- if (*pcntW < resultSizeWritable) {
- OBJ temp = __arrayVal(writeFdArray)[idx-10000];
- __arrayVal(writableResultFdArray)[*pcntW] = temp;
- __STORE(writableResultFdArray, temp);
+ console_printf("read ready: %x\n", __externalAddressVal(temp));
+#endif
+ (*pcntR)++;
+ }
+ } else if (idx < 20000) {
+ if (*pcntW < resultSizeWritable) {
+ OBJ temp = __arrayVal(writeFdArray)[idx-10000];
+ __arrayVal(writableResultFdArray)[*pcntW] = temp;
+ __STORE(writableResultFdArray, temp);
#ifdef SELECTDEBUGWIN32
- console_printf("write ready: %x\n", temp);
-#endif
- (*pcntW)++;
- }
- } else {
- if (*pcntE < resultSizeException) {
- OBJ temp = __arrayVal(exceptFdArray)[idx-20000];
- __arrayVal(exceptionResultFdArray)[*pcntE] = temp;
- __STORE(exceptionResultFdArray, temp);
+ console_printf("write ready: %x\n", temp);
+#endif
+ (*pcntW)++;
+ }
+ } else {
+ if (*pcntE < resultSizeException) {
+ OBJ temp = __arrayVal(exceptFdArray)[idx-20000];
+ __arrayVal(exceptionResultFdArray)[*pcntE] = temp;
+ __STORE(exceptionResultFdArray, temp);
#ifdef SELECTDEBUGWIN32
- console_printf("except ready: %x\n", temp);
-#endif
- (*pcntE)++;
- }
+ console_printf("except ready: %x\n", temp);
+#endif
+ (*pcntE)++;
+ }
#ifdef SELECTDEBUGWIN32
- else
- console_printf("cntE: %d, resultSizeException: %d\n", *pcntE, resultSizeException);
-#endif
- }
+ else
+ console_printf("cntE: %d, resultSizeException: %d\n", *pcntE, resultSizeException);
+#endif
+ }
}
if (t != 0 && (hasSockets || hasPipes)) {
- // back after timeout, maybe some sockets or pipes did wake up
- // in the meantime?
- pass = 2;
- goto pollAgain;
+ // back after timeout, maybe some sockets or pipes did wake up
+ // in the meantime?
+ pass = 2;
+ goto pollAgain;
}
done:
/* add a delimiter */
if (*pcntR < resultSizeReadable) {
- __arrayVal(readableResultFdArray)[*pcntR] = nil;
+ __arrayVal(readableResultFdArray)[*pcntR] = nil;
}
if (*pcntW < resultSizeWritable) {
- __arrayVal(writableResultFdArray)[*pcntW] = nil;
+ __arrayVal(writableResultFdArray)[*pcntW] = nil;
}
if (*pcntE < resultSizeException) {
- __arrayVal(exceptionResultFdArray)[*pcntE] = nil;
+ __arrayVal(exceptionResultFdArray)[*pcntE] = nil;
}
@global(LastErrorNumber) = nil;
@@ -12358,59 +12371,59 @@
INT i, count, hIdx;
if (! __isArrayLike(fdOrHandleArray)) {
- goto fail;
+ goto fail;
}
count = __arraySize(fdOrHandleArray);
for (hIdx=0, i=0; i<count; i++) {
- OBJ fdOrHandle = __ArrayInstPtr(fdOrHandleArray)->a_element[i];
- HANDLE h;
-
- if (fdOrHandle != nil) {
- if (__isExternalAddressLike(fdOrHandle)) {
- h = _HANDLEVal(fdOrHandle);
- } else {
- if (__isSmallInteger(fdOrHandle)) {
- h = (HANDLE) _get_osfhandle (__intVal(fdOrHandle));
- } else {
- goto fail;
- }
- }
- hArray[hIdx] = h;
- idxArray[hIdx++] = i;
- }
+ OBJ fdOrHandle = __ArrayInstPtr(fdOrHandleArray)->a_element[i];
+ HANDLE h;
+
+ if (fdOrHandle != nil) {
+ if (__isExternalAddressLike(fdOrHandle)) {
+ h = _HANDLEVal(fdOrHandle);
+ } else {
+ if (__isSmallInteger(fdOrHandle)) {
+ h = (HANDLE) _get_osfhandle (__intVal(fdOrHandle));
+ } else {
+ goto fail;
+ }
+ }
+ hArray[hIdx] = h;
+ idxArray[hIdx++] = i;
+ }
}
if (__isSmallInteger(millis)) {
- t = __intVal(millis);
+ t = __intVal(millis);
} else {
- t = INFINITE;
+ t = INFINITE;
}
#ifdef DO_WRAP_CALLS
if (t != 0) {
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- res = STX_API_CALL4( "WaitForMultipleObjects", WaitForMultipleObjects, hIdx, hArray, FALSE, t);
- } while ((res < 0) && (__threadErrno == EINTR));
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ res = STX_API_CALL4( "WaitForMultipleObjects", WaitForMultipleObjects, hIdx, hArray, FALSE, t);
+ } while ((res < 0) && (__threadErrno == EINTR));
} else
#endif
{
- res = WaitForMultipleObjects(hIdx, hArray, FALSE, t);
- if (res < 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
- }
+ res = WaitForMultipleObjects(hIdx, hArray, FALSE, t);
+ if (res < 0) {
+ __threadErrno = __WIN32_ERR(GetLastError());
+ }
}
if (res == WAIT_FAILED) {
- RETURN (nil);
+ RETURN (nil);
}
if (res == WAIT_TIMEOUT) {
- RETURN (nil);
+ RETURN (nil);
}
if ((res >= WAIT_OBJECT_0) && (res < (WAIT_OBJECT_0+hIdx))) {
- RETURN (__arrayVal(fdOrHandleArray)[idxArray[res-WAIT_OBJECT_0]]);
+ RETURN (__arrayVal(fdOrHandleArray)[idxArray[res-WAIT_OBJECT_0]]);
}
RETURN (nil);
@@ -12435,38 +12448,38 @@
HANDLE h = NULL;
if (__isExternalAddressLike(fdOrHandle)) {
- h = _HANDLEVal(fdOrHandle);
+ h = _HANDLEVal(fdOrHandle);
} else {
- if (__isSmallInteger(fdOrHandle)) {
- h = (HANDLE) _get_osfhandle (__intVal(fdOrHandle));
- } else {
- goto fail;
- }
+ if (__isSmallInteger(fdOrHandle)) {
+ h = (HANDLE) _get_osfhandle (__intVal(fdOrHandle));
+ } else {
+ goto fail;
+ }
}
if (__isSmallInteger(millis)) {
- t = __intVal(millis);
+ t = __intVal(millis);
} else {
- t = INFINITE;
+ t = INFINITE;
}
#ifdef DO_WRAP_CALLS
do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- res = STX_API_CALL2( "WaitForSingleObject", WaitForSingleObject, h, t);
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ res = STX_API_CALL2( "WaitForSingleObject", WaitForSingleObject, h, t);
} while ((res < 0) && (__threadErrno == EINTR));
#else
res = WaitForSingleObject(h, t);
if (res < 0) {
- __threadErrno = __WIN32_ERR(GetLastError());
+ __threadErrno = __WIN32_ERR(GetLastError());
}
#endif
if (res == WAIT_FAILED) {
- RETURN (nil);
+ RETURN (nil);
}
if (res == WAIT_TIMEOUT) {
- RETURN (nil);
+ RETURN (nil);
}
RETURN (fdOrHandle);
@@ -12661,11 +12674,11 @@
type:t mode:m uid:u gid:g size:s id:i accessed:aT modified:mT created:cT sourcePath:lP fullName:fullName alternativeName:name2
^ self basicNew
- type:t mode:m uid:u gid:g size:s
- id:i accessed:aT modified:mT created:cT
- sourcePath:lP
- fullName:fullName
- alternativeName:name2
+ type:t mode:m uid:u gid:g size:s
+ id:i accessed:aT modified:mT created:cT
+ sourcePath:lP
+ fullName:fullName
+ alternativeName:name2
! !
!Win32OperatingSystem::FileStatusInfo methodsFor:'accessing'!
@@ -12686,18 +12699,18 @@
path := self alternativePathName.
path notNil ifTrue:[
- idx := path lastIndexOf:$\ startingAt:path size-1.
- idx ~~ 0 ifTrue:[
- path := path copyFrom:(idx+1).
- ].
+ idx := path lastIndexOf:$\ startingAt:path size-1.
+ idx ~~ 0 ifTrue:[
+ path := path copyFrom:(idx+1).
+ ].
].
^ path
"
- 'C:\' asFilename info alternativeName
- 'C:\Dokumente und Einstellungen\' asFilename info alternativeName
- 'C:\Dokumente und Einstellungen' asFilename info alternativeName
+ 'C:\' asFilename info alternativeName
+ 'C:\Dokumente und Einstellungen\' asFilename info alternativeName
+ 'C:\Dokumente und Einstellungen' asFilename info alternativeName
"
!
@@ -12707,14 +12720,14 @@
"/ access lazily...
alternativePathName isNil ifTrue:[
- alternativePathName := (OperatingSystem getShortPathName:sourcePath) asSingleByteString.
+ alternativePathName := (OperatingSystem getShortPathName:sourcePath) asSingleByteString.
].
^ alternativePathName
"
- 'C:\' asFilename info alternativePathName
- 'C:\Dokumente und Einstellungen' asFilename info alternativePathName
+ 'C:\' asFilename info alternativePathName
+ 'C:\Dokumente und Einstellungen' asFilename info alternativePathName
"
!
@@ -12738,18 +12751,18 @@
path := self fullPathName.
path notNil ifTrue:[
- idx := path lastIndexOf:$\ startingAt:path size-1.
- idx ~~ 0 ifTrue:[
- path := path copyFrom:(idx+1).
- ].
+ idx := path lastIndexOf:$\ startingAt:path size-1.
+ idx ~~ 0 ifTrue:[
+ path := path copyFrom:(idx+1).
+ ].
].
^ path
"
- '\' asFilename info fullName
- 'C:\' asFilename info fullName
- 'C:\Dokumente und Einstellungen' asFilename info fullName
+ '\' asFilename info fullName
+ 'C:\' asFilename info fullName
+ 'C:\Dokumente und Einstellungen' asFilename info fullName
"
!
@@ -12759,14 +12772,14 @@
"/ access lazily...
fullPathName isNil ifTrue:[
- fullPathName := OperatingSystem getLongPathName:sourcePath.
+ fullPathName := OperatingSystem getLongPathName:sourcePath.
].
^ fullPathName
"
- 'C:\' asFilename info fullPathName
- 'C:\Dokumente und Einstellungen' asFilename info fullPathName
+ 'C:\' asFilename info fullPathName
+ 'C:\Dokumente und Einstellungen' asFilename info fullPathName
"
!
@@ -12787,9 +12800,9 @@
"/ access lazily...
linkTargetPath isNil ifTrue:[
- type == #symbolicLink ifTrue:[
- linkTargetPath := OperatingSystem getLinkTarget:sourcePath.
- ]
+ type == #symbolicLink ifTrue:[
+ linkTargetPath := OperatingSystem getLinkTarget:sourcePath.
+ ]
].
^ linkTargetPath
@@ -13040,9 +13053,9 @@
isSpecialFile
^ (type ~~ #directory
- and:[type ~~ #remoteDirectory
- and:[type ~~ #regular
- and:[type ~~ #symbolicLink
+ and:[type ~~ #remoteDirectory
+ and:[type ~~ #regular
+ and:[type ~~ #symbolicLink
]]])
!
@@ -13068,20 +13081,20 @@
[Instance variables:]
- pid <Integer> OS-Process identifier
-
- status <Symbol> either #exit #signal #stop #continue
-
- code <Integer> either exitcode or signalnumber
-
- core <Boolean> true if core has been dumped
+ pid <Integer> OS-Process identifier
+
+ status <Symbol> either #exit #signal #stop #continue
+
+ code <Integer> either exitcode or signalnumber
+
+ core <Boolean> true if core has been dumped
[author:]
- Stefan Vogel
+ Stefan Vogel
[see also:]
- OperatingSystem
+ OperatingSystem
"
! !
@@ -13230,15 +13243,15 @@
COFF machine type IDs.
[author:]
- Jan Vrany
+ Jan Vrany
[instance variables:]
[class variables:]
[see also:]
- Microsoft Portable Executable and Common Object File Format Specification,
- section 6. Machine Types
+ Microsoft Portable Executable and Common Object File Format Specification,
+ section 6. Machine Types
"
! !
@@ -13298,14 +13311,14 @@
information about executables / .dlls on Windows
[author:]
- Jan Vrany <jan.vrany@fit.cvut.cz>
+ Jan Vrany <jan.vrany@fit.cvut.cz>
[instance variables:]
[class variables:]
[see also:]
- Microsoft Portable Executable and Common Object File Format Specification
+ Microsoft Portable Executable and Common Object File Format Specification
"
! !
@@ -13335,24 +13348,24 @@
initializeOnFile: aStringOrFilename
file := aStringOrFilename asFilename.
file exists ifFalse:[
- self error:'Given file does not exist'.
- ^ nil
+ self error:'Given file does not exist'.
+ ^ nil
].
file isRegularFile ifFalse:[
- self error:'Given file is not a regular file'.
- ^ nil
+ self error:'Given file is not a regular file'.
+ ^ nil
].
file readingFileDo:[ :s |
- | sig |
- s binary.
- s position: PE_Signature_OFFSET_OFFSET.
- s position: (s nextUnsignedLongMSB: false).
- sig := s next: PE_Signature size.
- sig = PE_Signature ifFalse:[
- self error: 'Given file is not a valid PE file (no valid PE signature found)'.
- ^ nil
- ].
- data := s next: COFF_HEADER_SIZE
+ | sig |
+ s binary.
+ s position: PE_Signature_OFFSET_OFFSET.
+ s position: (s nextUnsignedLongMSB: false).
+ sig := s next: PE_Signature size.
+ sig = PE_Signature ifFalse:[
+ self error: 'Given file is not a valid PE file (no valid PE signature found)'.
+ ^ nil
+ ].
+ data := s next: COFF_HEADER_SIZE
].
"Created: / 16-03-2015 / 14:34:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -13377,24 +13390,24 @@
counterIndexTextDictionary
"
- self counterIndexTextDictionary
+ self counterIndexTextDictionary
"
CounterIndexTextDictionary isNil ifTrue:[
- self synchronized:[
- CounterIndexTextDictionary isNil ifTrue:[
- |performanceText counterIndexTextDictionary|
-
- performanceText := self getPerformanceText valueNamed:'Counter'.
- counterIndexTextDictionary := IdentityDictionary new.
-
- 1 to:performanceText size by:2 do:[:index|
- counterIndexTextDictionary at:(performanceText at:index) asInteger put:(performanceText at:index + 1).
- ].
-
- CounterIndexTextDictionary := counterIndexTextDictionary.
- ].
- ].
+ self synchronized:[
+ CounterIndexTextDictionary isNil ifTrue:[
+ |performanceText counterIndexTextDictionary|
+
+ performanceText := self getPerformanceText valueNamed:'Counter'.
+ counterIndexTextDictionary := IdentityDictionary new.
+
+ 1 to:performanceText size by:2 do:[:index|
+ counterIndexTextDictionary at:(performanceText at:index) asInteger put:(performanceText at:index + 1).
+ ].
+
+ CounterIndexTextDictionary := counterIndexTextDictionary.
+ ].
+ ].
].
^ CounterIndexTextDictionary
@@ -13403,24 +13416,24 @@
helpIndexTextDictionary
"
- self helpIndexTextDictionary
+ self helpIndexTextDictionary
"
HelpIndexTextDictionary isNil ifTrue:[
- self synchronized:[
- HelpIndexTextDictionary isNil ifTrue:[
- |performanceText helpIndexTextDictionary|
-
- performanceText := self getPerformanceText valueNamed:'Help'.
- helpIndexTextDictionary := IdentityDictionary new.
-
- 1 to:performanceText size by:2 do:[:index|
- helpIndexTextDictionary at:(performanceText at:index) asInteger put:(performanceText at:index + 1).
- ].
-
- HelpIndexTextDictionary := helpIndexTextDictionary.
- ].
- ].
+ self synchronized:[
+ HelpIndexTextDictionary isNil ifTrue:[
+ |performanceText helpIndexTextDictionary|
+
+ performanceText := self getPerformanceText valueNamed:'Help'.
+ helpIndexTextDictionary := IdentityDictionary new.
+
+ 1 to:performanceText size by:2 do:[:index|
+ helpIndexTextDictionary at:(performanceText at:index) asInteger put:(performanceText at:index + 1).
+ ].
+
+ HelpIndexTextDictionary := helpIndexTextDictionary.
+ ].
+ ].
].
^ HelpIndexTextDictionary
@@ -13457,86 +13470,86 @@
documentation
"
- VISTA:
-
- Wer versucht unter Vista die Registy HKEY_PERFORMANCE_DATA abzufragen wird zunächst enttäuscht.
- Die UAC UserAccessControl verhindern dies nämlich (selbs für den admin).
-
- Um dies zu umgehen:
-
- To turn off UAC
-
- 1. Click Start, and then click Control Panel.
- 2. In Control Panel, click User Accounts.
- 3. In the User Accounts window, click User Accounts.
- 4. In the User Accounts tasks window, click Turn User Account Control on or off.
- 5. If UAC is currently configured in Admin Approval Mode, the User Account Control message appears. Click Continue.
- 6. Clear the Use User Account Control (UAC) to help protect your computer check box, and then click OK.
- 7. Click Restart Now to apply the change right away, or click Restart Later and close the User Accounts tasks window.
+ VISTA:
+
+ Wer versucht unter Vista die Registy HKEY_PERFORMANCE_DATA abzufragen wird zunächst enttäuscht.
+ Die UAC UserAccessControl verhindern dies nämlich (selbs für den admin).
+
+ Um dies zu umgehen:
+
+ To turn off UAC
+
+ 1. Click Start, and then click Control Panel.
+ 2. In Control Panel, click User Accounts.
+ 3. In the User Accounts window, click User Accounts.
+ 4. In the User Accounts tasks window, click Turn User Account Control on or off.
+ 5. If UAC is currently configured in Admin Approval Mode, the User Account Control message appears. Click Continue.
+ 6. Clear the Use User Account Control (UAC) to help protect your computer check box, and then click OK.
+ 7. Click Restart Now to apply the change right away, or click Restart Later and close the User Accounts tasks window.
"
!
examples
"
- ######################################### PRIMITIVE
- self getUsedMemoryInPercentage.
-
- self getPhysicalMemoryInKB.
- self getPhysicalMemoryInMB.
-
- self getFreePhysicalMemoryInKB.
- self getFreePhysicalMemoryInMB.
-
- self getPageFileSizeInKB.
- self getPageFileSizeInMB.
-
- self getFreePageFileSizeInKB.
- self getFreePageFileSizeInMB.
-
- self getVirtualMemoryInKB.
- self getVirtualMemoryInMB.
-
- ######################################### REGISTRY
- self helpIndexTextDictionary
- self counterIndexTextDictionary
-
- self global getCounterNameIndexArray.
- self global getObjectNameIndexArray.
-
- self processor getCounterNameIndexArray.
- self processor processorUsage.
- self processor processorUsageFromLast.
- self processor interruptsPerSecond.
- self processor interruptsPerSecondFromLast.
-
- self process getCounterNameIndexArray.
- self process processUsage.
- self process processUsageFromLast.
- self process runningProcesses.
- self process runningProcessNameList.
-
- self network getCounterNameIndexArray.
- self network kBytesReceivedPerSecond.
- self network kBytesReceivedPerSecondFromLast.
- self network kBytesSentPerSecond.
- self network kBytesSentPerSecondFromLast.
-
- self memory getCounterNameIndexArray.
- self memory availableMBytes.
- self memory availableKBytes.
-
- self diskIO getCounterNameIndexArray.
- self diskIO diskSpaceFreeInMegaByte.
- self diskIO diskQueueLength.
- self diskIO diskTransfersPerSecond.
- self diskIO diskTransfersPerSecondFromlast.
- self diskIO diskReadsPerSecond.
- self diskIO diskReadsPerSecondFromLast.
- self diskIO diskWritesPerSecond.
- self diskIO diskWritesPerSecondFromLast.
- self diskIO diskBytesPerSecond.
- self diskIO diskBytesPerSecondFromLast.
+ ######################################### PRIMITIVE
+ self getUsedMemoryInPercentage.
+
+ self getPhysicalMemoryInKB.
+ self getPhysicalMemoryInMB.
+
+ self getFreePhysicalMemoryInKB.
+ self getFreePhysicalMemoryInMB.
+
+ self getPageFileSizeInKB.
+ self getPageFileSizeInMB.
+
+ self getFreePageFileSizeInKB.
+ self getFreePageFileSizeInMB.
+
+ self getVirtualMemoryInKB.
+ self getVirtualMemoryInMB.
+
+ ######################################### REGISTRY
+ self helpIndexTextDictionary
+ self counterIndexTextDictionary
+
+ self global getCounterNameIndexArray.
+ self global getObjectNameIndexArray.
+
+ self processor getCounterNameIndexArray.
+ self processor processorUsage.
+ self processor processorUsageFromLast.
+ self processor interruptsPerSecond.
+ self processor interruptsPerSecondFromLast.
+
+ self process getCounterNameIndexArray.
+ self process processUsage.
+ self process processUsageFromLast.
+ self process runningProcesses.
+ self process runningProcessNameList.
+
+ self network getCounterNameIndexArray.
+ self network kBytesReceivedPerSecond.
+ self network kBytesReceivedPerSecondFromLast.
+ self network kBytesSentPerSecond.
+ self network kBytesSentPerSecondFromLast.
+
+ self memory getCounterNameIndexArray.
+ self memory availableMBytes.
+ self memory availableKBytes.
+
+ self diskIO getCounterNameIndexArray.
+ self diskIO diskSpaceFreeInMegaByte.
+ self diskIO diskQueueLength.
+ self diskIO diskTransfersPerSecond.
+ self diskIO diskTransfersPerSecondFromlast.
+ self diskIO diskReadsPerSecond.
+ self diskIO diskReadsPerSecondFromLast.
+ self diskIO diskWritesPerSecond.
+ self diskIO diskWritesPerSecondFromLast.
+ self diskIO diskBytesPerSecond.
+ self diskIO diskBytesPerSecondFromLast.
"
! !
@@ -13545,7 +13558,7 @@
initialize
"
- self initialize
+ self initialize
"
PerformanceText := CounterIndexTextDictionary := HelpIndexTextDictionary := nil.
@@ -13556,7 +13569,7 @@
getPerformanceText
PerformanceText isNil ifTrue:[
- PerformanceText := Win32OperatingSystem registryEntry key:'HKEY_PERFORMANCE_TEXT'.
+ PerformanceText := Win32OperatingSystem registryEntry key:'HKEY_PERFORMANCE_TEXT'.
].
^ PerformanceText
@@ -13568,16 +13581,16 @@
|ret|
%{
- MEMORYSTATUS mState;
- GlobalMemoryStatus (&mState);
-
- ret = __mkSmallInteger(mState.dwAvailPageFile / 1024);
+ MEMORYSTATUS mState;
+ GlobalMemoryStatus (&mState);
+
+ ret = __mkSmallInteger(mState.dwAvailPageFile / 1024);
%}.
^ ret
"
- self getFreePageFileSizeInKB
+ self getFreePageFileSizeInKB
"
!
@@ -13585,7 +13598,7 @@
^ (self getFreePageFileSizeInKB / 1024) asInteger
"
- self getFreePageFileSizeInMB
+ self getFreePageFileSizeInMB
"
!
@@ -13593,16 +13606,16 @@
|ret|
%{
- MEMORYSTATUS mState;
- GlobalMemoryStatus (&mState);
-
- ret = __mkSmallInteger(mState.dwAvailPhys / 1024);
+ MEMORYSTATUS mState;
+ GlobalMemoryStatus (&mState);
+
+ ret = __mkSmallInteger(mState.dwAvailPhys / 1024);
%}.
^ ret
"
- self getFreePhysicalMemoryInKB
+ self getFreePhysicalMemoryInKB
"
!
@@ -13610,7 +13623,7 @@
^ (self getFreePhysicalMemoryInKB / 1024) asInteger
"
- self getFreePhysicalMemoryInMB
+ self getFreePhysicalMemoryInMB
"
!
@@ -13618,7 +13631,7 @@
^ self getPageFileSizeInMB * 1024
"
- self getPageFileSizeInKB
+ self getPageFileSizeInKB
"
!
@@ -13626,16 +13639,16 @@
|ret|
%{
- SYSTEM_INFO sInfo;
- GetSystemInfo(&sInfo);
-
- ret = __mkSmallInteger(sInfo.dwPageSize);
+ SYSTEM_INFO sInfo;
+ GetSystemInfo(&sInfo);
+
+ ret = __mkSmallInteger(sInfo.dwPageSize);
%}.
^ ret
"
- self getPageFileSizeInMB
+ self getPageFileSizeInMB
"
!
@@ -13643,16 +13656,16 @@
|ret|
%{
- MEMORYSTATUS mState;
- GlobalMemoryStatus (&mState);
-
- ret = __mkSmallInteger(mState.dwTotalPhys / 1024);
+ MEMORYSTATUS mState;
+ GlobalMemoryStatus (&mState);
+
+ ret = __mkSmallInteger(mState.dwTotalPhys / 1024);
%}.
^ ret
"
- self getPhysicalMemoryInKB
+ self getPhysicalMemoryInKB
"
!
@@ -13660,7 +13673,7 @@
^ (self getPhysicalMemoryInKB / 1024) asInteger
"
- self getPhysicalMemoryInMB
+ self getPhysicalMemoryInMB
"
!
@@ -13668,16 +13681,16 @@
|ret|
%{
- MEMORYSTATUS mState;
- GlobalMemoryStatus (&mState);
-
- ret = __mkSmallInteger(mState.dwMemoryLoad);
+ MEMORYSTATUS mState;
+ GlobalMemoryStatus (&mState);
+
+ ret = __mkSmallInteger(mState.dwMemoryLoad);
%}.
^ ret
"
- self getUsedMemoryInPercentage
+ self getUsedMemoryInPercentage
"
!
@@ -13685,16 +13698,16 @@
|ret|
%{
- MEMORYSTATUS mState;
- GlobalMemoryStatus (&mState);
-
- ret = __mkSmallInteger(mState.dwTotalVirtual / 1024);
+ MEMORYSTATUS mState;
+ GlobalMemoryStatus (&mState);
+
+ ret = __mkSmallInteger(mState.dwTotalVirtual / 1024);
%}.
^ ret
"
- self getVirtualMemoryInKB
+ self getVirtualMemoryInKB
"
!
@@ -13702,7 +13715,7 @@
^ (self getVirtualMemoryInKB / 1024) asInteger
"
- self getVirtualMemoryInMB
+ self getVirtualMemoryInMB
"
! !
@@ -13772,157 +13785,157 @@
//iterate all following objetcs
for (objectIterator=0; objectIterator<numObjectTypes; objectIterator++) {
- //add the st_perObject dictionary to st_objectArray
- st_perObject = __SSEND0(@global(Dictionary), @symbol(new), 0);
- __AT_PUT_(st_objectArray, __mkSmallInteger(objectIterator+1), st_perObject);
-
- //get the object data
- __AT_PUT_(st_perObject, @symbol(ObjectNameTitleIndex), __mkSmallInteger(perfObjectPtr->ObjectNameTitleIndex));
- __AT_PUT_(st_perObject, @symbol(DetailLevel), __mkSmallInteger(perfObjectPtr->DetailLevel));
- __AT_PUT_(st_perObject, @symbol(NumCounters), __mkSmallInteger(perfObjectPtr->NumCounters));
- __AT_PUT_(st_perObject, @symbol(NumInstances), __mkSmallInteger(perfObjectPtr->NumInstances));
-
- //setup counter array and initialize its pointer
- st_counterArray = __ARRAY_NEW_INT(perfObjectPtr->NumCounters);
- perfCounterPtr = (PERF_COUNTER_DEFINITION *)((char *)perfObjectPtr + perfObjectPtr->HeaderLength);
-
- //add the st_counterArray to st_perObject dictionary
- __AT_PUT_(st_perObject, @symbol(Counters), st_counterArray);
-
- //iterate all following counter definition
- for (counterIterator=0; counterIterator<perfObjectPtr->NumCounters; counterIterator++) {
- //add the st_perCounter dictionary to st_counterArray
- st_perCounter = __SSEND0(@global(Dictionary), @symbol(new), 0);
- __AT_PUT_(st_counterArray, __mkSmallInteger(counterIterator+1), st_perCounter);
-
- //get the counter data
- __AT_PUT_(st_perCounter, @symbol(CounterNameTitleIndex), __mkSmallInteger(perfCounterPtr->CounterNameTitleIndex));
- __AT_PUT_(st_perCounter, @symbol(CounterTypeBits), __mkSmallInteger(perfCounterPtr->CounterType));
- __AT_PUT_(st_perCounter, @symbol(CounterSize), __mkSmallInteger(perfCounterPtr->CounterSize));
- __AT_PUT_(st_perCounter, @symbol(CounterOffset), __mkSmallInteger(perfCounterPtr->CounterOffset));
-
- //put the counter type size
- switch (perfCounterPtr->CounterType & PERF_SIZE_MASK) {
- case PERF_SIZE_DWORD:
- __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(DWORD));
- break;
- case PERF_SIZE_LARGE:
- __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(LARGE));
- break;
- case PERF_SIZE_ZERO:
- __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(ZERO));
- break;
- case PERF_SIZE_VARIABLE_LEN:
- __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(VARIABLE_LEN));
- break;
- }
- switch (perfCounterPtr->CounterType & PERF_TYPE_MASK) {
- case PERF_TYPE_NUMBER:
- __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(NUMBER));
- switch (perfCounterPtr->CounterType & PERF_NUMBERTYPE_MASK) {
- case PERF_NUMBER_HEX:
- __AT_PUT_(st_perCounter, @symbol(NUMBER),@symbol(HEX));
- break;
- case PERF_NUMBER_DECIMAL:
- __AT_PUT_(st_perCounter, @symbol(NUMBER),@symbol(DECIMAL));
- break;
- case PERF_NUMBER_DEC_1000:
- __AT_PUT_(st_perCounter, @symbol(NUMBER),@symbol(DEC_1000));
- break;
- }
- break;
- case PERF_TYPE_COUNTER:
- __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(COUNTER));
- switch (perfCounterPtr->CounterType & PERF_COUNTERTYPE_MASK) {
- case PERF_COUNTER_VALUE:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(VALUE));
- break;
- case PERF_COUNTER_RATE:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(RATE));
- break;
- case PERF_COUNTER_FRACTION:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(FRACTION));
- break;
- case PERF_COUNTER_BASE:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(BASE));
- break;
- case PERF_COUNTER_ELAPSED:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(ELAPSED));
- break;
- case PERF_COUNTER_QUEUELEN:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(QUEUELEN));
- break;
- case PERF_COUNTER_HISTOGRAM:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(HISTOGRAM));
- break;
+ //add the st_perObject dictionary to st_objectArray
+ st_perObject = __SSEND0(@global(Dictionary), @symbol(new), 0);
+ __AT_PUT_(st_objectArray, __mkSmallInteger(objectIterator+1), st_perObject);
+
+ //get the object data
+ __AT_PUT_(st_perObject, @symbol(ObjectNameTitleIndex), __mkSmallInteger(perfObjectPtr->ObjectNameTitleIndex));
+ __AT_PUT_(st_perObject, @symbol(DetailLevel), __mkSmallInteger(perfObjectPtr->DetailLevel));
+ __AT_PUT_(st_perObject, @symbol(NumCounters), __mkSmallInteger(perfObjectPtr->NumCounters));
+ __AT_PUT_(st_perObject, @symbol(NumInstances), __mkSmallInteger(perfObjectPtr->NumInstances));
+
+ //setup counter array and initialize its pointer
+ st_counterArray = __ARRAY_NEW_INT(perfObjectPtr->NumCounters);
+ perfCounterPtr = (PERF_COUNTER_DEFINITION *)((char *)perfObjectPtr + perfObjectPtr->HeaderLength);
+
+ //add the st_counterArray to st_perObject dictionary
+ __AT_PUT_(st_perObject, @symbol(Counters), st_counterArray);
+
+ //iterate all following counter definition
+ for (counterIterator=0; counterIterator<perfObjectPtr->NumCounters; counterIterator++) {
+ //add the st_perCounter dictionary to st_counterArray
+ st_perCounter = __SSEND0(@global(Dictionary), @symbol(new), 0);
+ __AT_PUT_(st_counterArray, __mkSmallInteger(counterIterator+1), st_perCounter);
+
+ //get the counter data
+ __AT_PUT_(st_perCounter, @symbol(CounterNameTitleIndex), __mkSmallInteger(perfCounterPtr->CounterNameTitleIndex));
+ __AT_PUT_(st_perCounter, @symbol(CounterTypeBits), __mkSmallInteger(perfCounterPtr->CounterType));
+ __AT_PUT_(st_perCounter, @symbol(CounterSize), __mkSmallInteger(perfCounterPtr->CounterSize));
+ __AT_PUT_(st_perCounter, @symbol(CounterOffset), __mkSmallInteger(perfCounterPtr->CounterOffset));
+
+ //put the counter type size
+ switch (perfCounterPtr->CounterType & PERF_SIZE_MASK) {
+ case PERF_SIZE_DWORD:
+ __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(DWORD));
+ break;
+ case PERF_SIZE_LARGE:
+ __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(LARGE));
+ break;
+ case PERF_SIZE_ZERO:
+ __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(ZERO));
+ break;
+ case PERF_SIZE_VARIABLE_LEN:
+ __AT_PUT_(st_perCounter, @symbol(SIZE),@symbol(VARIABLE_LEN));
+ break;
+ }
+ switch (perfCounterPtr->CounterType & PERF_TYPE_MASK) {
+ case PERF_TYPE_NUMBER:
+ __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(NUMBER));
+ switch (perfCounterPtr->CounterType & PERF_NUMBERTYPE_MASK) {
+ case PERF_NUMBER_HEX:
+ __AT_PUT_(st_perCounter, @symbol(NUMBER),@symbol(HEX));
+ break;
+ case PERF_NUMBER_DECIMAL:
+ __AT_PUT_(st_perCounter, @symbol(NUMBER),@symbol(DECIMAL));
+ break;
+ case PERF_NUMBER_DEC_1000:
+ __AT_PUT_(st_perCounter, @symbol(NUMBER),@symbol(DEC_1000));
+ break;
+ }
+ break;
+ case PERF_TYPE_COUNTER:
+ __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(COUNTER));
+ switch (perfCounterPtr->CounterType & PERF_COUNTERTYPE_MASK) {
+ case PERF_COUNTER_VALUE:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(VALUE));
+ break;
+ case PERF_COUNTER_RATE:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(RATE));
+ break;
+ case PERF_COUNTER_FRACTION:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(FRACTION));
+ break;
+ case PERF_COUNTER_BASE:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(BASE));
+ break;
+ case PERF_COUNTER_ELAPSED:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(ELAPSED));
+ break;
+ case PERF_COUNTER_QUEUELEN:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(QUEUELEN));
+ break;
+ case PERF_COUNTER_HISTOGRAM:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(HISTOGRAM));
+ break;
#ifdef PERF_COUNTER_PRECISION
- case PERF_COUNTER_PRECISION:
- __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(PRECISION));
- break;
-#endif
- }
- break;
- case PERF_TYPE_TEXT:
- __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(TEXT));
- switch (perfCounterPtr->CounterType & PERF_TEXTTYPE_MASK) {
- case PERF_TEXT_UNICODE:
- __AT_PUT_(st_perCounter, @symbol(TEXT),@symbol(UNICODE));
- break;
- case PERF_TEXT_ASCII:
- __AT_PUT_(st_perCounter, @symbol(TEXT),@symbol(ASCII));
- break;
- }
- break;
- case PERF_TYPE_ZERO:
- __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(ZERO));
- break;
- }
-
- //setup the counter pointer to the next counter definition
- perfCounterPtr = (PERF_COUNTER_DEFINITION *)((char *)perfCounterPtr + perfCounterPtr->ByteLength);
- }
-
- //goon dependent on the count of instances
- if (perfObjectPtr->NumInstances < 1) {
- perfCounterBlockPtr = (PERF_COUNTER_BLOCK *)(perfCounterPtr);
- __AT_PUT_(st_perObject, @symbol(RawData), __MKBYTEARRAY(perfCounterBlockPtr, perfCounterBlockPtr->ByteLength));
- } else {
- //setup the instance pointer to the end of all counters
- perfInstancePtr = (PERF_INSTANCE_DEFINITION *)(perfCounterPtr);
-
- //setup st_instanceArray and add it to st_perObject
- st_instanceArray = __ARRAY_NEW_INT(perfObjectPtr->NumInstances);
- __AT_PUT_(st_perObject, @symbol(Instances), st_instanceArray);
-
- //iterate the instances
- for (instanceIterator=0; instanceIterator<perfObjectPtr->NumInstances; instanceIterator++) {
- //setup st_perInstance and add it to st_instanceArray
- st_perInstance = __SSEND0(@global(Dictionary), @symbol(new), 0);
- __AT_PUT_(st_instanceArray, __mkSmallInteger(instanceIterator+1), st_perInstance);
-
- //get the instance data
- __AT_PUT_(st_perInstance, @symbol(Name), __MKBYTEARRAY((wchar_t *)((BYTE *)perfInstancePtr + perfInstancePtr->NameOffset),perfInstancePtr->NameLength));
- __AT_PUT_(st_perInstance, @symbol(ParentObjectTitleIndex), __mkSmallInteger(perfInstancePtr->ParentObjectTitleIndex));
- __AT_PUT_(st_perInstance, @symbol(ParentObjectInstance), __mkSmallInteger(perfInstancePtr->ParentObjectInstance));
- __AT_PUT_(st_perInstance, @symbol(NameOffset), __mkSmallInteger(perfInstancePtr->NameOffset));
- __AT_PUT_(st_perInstance, @symbol(NameLength), __mkSmallInteger(perfInstancePtr->NameLength));
-
- //setup the instance pointer to the its end
- perfInstancePtr = (PERF_INSTANCE_DEFINITION *)((char *)perfInstancePtr + perfInstancePtr->ByteLength);
-
- //setup the counter block pointer
- perfCounterBlockPtr = (PERF_COUNTER_BLOCK *)(perfInstancePtr);
-
- //get the instance raw data
- __AT_PUT_(st_perInstance, @symbol(RawData), __MKBYTEARRAY(perfCounterBlockPtr, perfCounterBlockPtr->ByteLength));
-
- //setup the instance pointer to the next instance
- perfInstancePtr = (PERF_INSTANCE_DEFINITION *)((char *)perfCounterBlockPtr + perfCounterBlockPtr->ByteLength);
- }
- }
-
- //setup the object pointer to the next object
- perfObjectPtr = (PERF_OBJECT_TYPE *)((char *)perfObjectPtr + perfObjectPtr->TotalByteLength);
+ case PERF_COUNTER_PRECISION:
+ __AT_PUT_(st_perCounter, @symbol(COUNTER),@symbol(PRECISION));
+ break;
+#endif
+ }
+ break;
+ case PERF_TYPE_TEXT:
+ __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(TEXT));
+ switch (perfCounterPtr->CounterType & PERF_TEXTTYPE_MASK) {
+ case PERF_TEXT_UNICODE:
+ __AT_PUT_(st_perCounter, @symbol(TEXT),@symbol(UNICODE));
+ break;
+ case PERF_TEXT_ASCII:
+ __AT_PUT_(st_perCounter, @symbol(TEXT),@symbol(ASCII));
+ break;
+ }
+ break;
+ case PERF_TYPE_ZERO:
+ __AT_PUT_(st_perCounter, @symbol(TYPE),@symbol(ZERO));
+ break;
+ }
+
+ //setup the counter pointer to the next counter definition
+ perfCounterPtr = (PERF_COUNTER_DEFINITION *)((char *)perfCounterPtr + perfCounterPtr->ByteLength);
+ }
+
+ //goon dependent on the count of instances
+ if (perfObjectPtr->NumInstances < 1) {
+ perfCounterBlockPtr = (PERF_COUNTER_BLOCK *)(perfCounterPtr);
+ __AT_PUT_(st_perObject, @symbol(RawData), __MKBYTEARRAY(perfCounterBlockPtr, perfCounterBlockPtr->ByteLength));
+ } else {
+ //setup the instance pointer to the end of all counters
+ perfInstancePtr = (PERF_INSTANCE_DEFINITION *)(perfCounterPtr);
+
+ //setup st_instanceArray and add it to st_perObject
+ st_instanceArray = __ARRAY_NEW_INT(perfObjectPtr->NumInstances);
+ __AT_PUT_(st_perObject, @symbol(Instances), st_instanceArray);
+
+ //iterate the instances
+ for (instanceIterator=0; instanceIterator<perfObjectPtr->NumInstances; instanceIterator++) {
+ //setup st_perInstance and add it to st_instanceArray
+ st_perInstance = __SSEND0(@global(Dictionary), @symbol(new), 0);
+ __AT_PUT_(st_instanceArray, __mkSmallInteger(instanceIterator+1), st_perInstance);
+
+ //get the instance data
+ __AT_PUT_(st_perInstance, @symbol(Name), __MKBYTEARRAY((wchar_t *)((BYTE *)perfInstancePtr + perfInstancePtr->NameOffset),perfInstancePtr->NameLength));
+ __AT_PUT_(st_perInstance, @symbol(ParentObjectTitleIndex), __mkSmallInteger(perfInstancePtr->ParentObjectTitleIndex));
+ __AT_PUT_(st_perInstance, @symbol(ParentObjectInstance), __mkSmallInteger(perfInstancePtr->ParentObjectInstance));
+ __AT_PUT_(st_perInstance, @symbol(NameOffset), __mkSmallInteger(perfInstancePtr->NameOffset));
+ __AT_PUT_(st_perInstance, @symbol(NameLength), __mkSmallInteger(perfInstancePtr->NameLength));
+
+ //setup the instance pointer to the its end
+ perfInstancePtr = (PERF_INSTANCE_DEFINITION *)((char *)perfInstancePtr + perfInstancePtr->ByteLength);
+
+ //setup the counter block pointer
+ perfCounterBlockPtr = (PERF_COUNTER_BLOCK *)(perfInstancePtr);
+
+ //get the instance raw data
+ __AT_PUT_(st_perInstance, @symbol(RawData), __MKBYTEARRAY(perfCounterBlockPtr, perfCounterBlockPtr->ByteLength));
+
+ //setup the instance pointer to the next instance
+ perfInstancePtr = (PERF_INSTANCE_DEFINITION *)((char *)perfCounterBlockPtr + perfCounterBlockPtr->ByteLength);
+ }
+ }
+
+ //setup the object pointer to the next object
+ perfObjectPtr = (PERF_OBJECT_TYPE *)((char *)perfObjectPtr + perfObjectPtr->TotalByteLength);
}
%}.
objectArray := st_objectArray.
@@ -13931,61 +13944,61 @@
perfTime100nSec := st_perfTime100nSec.
getNameBlock := [:i|
- self class counterIndexTextDictionary at:i ifAbsent:['<<no name>>'].
+ self class counterIndexTextDictionary at:i ifAbsent:['<<no name>>'].
].
getCounterValueBlock := [:counter :rawData|
- |offset counterValue|
-
- offset := counter at:#CounterOffset.
- offset >= rawData size ifTrue:[
- counterValue := nil.
- ] ifFalse:[
- (counter at:#SIZE) == #LARGE ifTrue:[
- counterValue := rawData unsignedLongLongAt:offset + 1 bigEndian:false.
- ] ifFalse:[
- (counter at:#SIZE) == #DWORD ifTrue:[
- counterValue := rawData unsignedLongAt:offset + 1 bigEndian:false.
- ] ifFalse:[
- self halt:'unhandled counter-size; please check'.
- ].
- ].
- ].
-
- counterValue
+ |offset counterValue|
+
+ offset := counter at:#CounterOffset.
+ offset >= rawData size ifTrue:[
+ counterValue := nil.
+ ] ifFalse:[
+ (counter at:#SIZE) == #LARGE ifTrue:[
+ counterValue := rawData unsignedLongLongAt:offset + 1 bigEndian:false.
+ ] ifFalse:[
+ (counter at:#SIZE) == #DWORD ifTrue:[
+ counterValue := rawData unsignedLongAt:offset + 1 bigEndian:false.
+ ] ifFalse:[
+ self halt:'unhandled counter-size; please check'.
+ ].
+ ].
+ ].
+
+ counterValue
].
objectArray do:[:anObject|
- "setup the object name"
- anObject at:#ObjectNameTitle put:(getNameBlock value:(anObject at:#ObjectNameTitleIndex)).
-
- "setup the name and a counter value array to each counter"
- (anObject at:#Counters) do:[:aCounter|
- aCounter at:#CounterNameTitle put:(getNameBlock value:(aCounter at:#CounterNameTitleIndex)).
- aCounter at:#CounterValueArray put:OrderedCollection new.
- ].
-
- (anObject at:#NumInstances) < 1 ifTrue:[
- |rawData|
-
- rawData := anObject at:#RawData.
-
- (anObject at:#Counters) do:[:aCounter|
- (aCounter at:#CounterValueArray) add:(getCounterValueBlock value:aCounter value:rawData).
- ].
- ] ifFalse:[
- (anObject at:#Instances) do:[:anInstance|
- |rawData|
-
- rawData := anInstance at:#RawData.
-
- anInstance at:#Name put:((Unicode16String fromBytes:(anInstance at:#Name) copy swapBytes) copyButLast:1).
-
- (anObject at:#Counters) do:[:aCounter|
- (aCounter at:#CounterValueArray) add:(getCounterValueBlock value:aCounter value:rawData).
- ].
- ].
- ].
+ "setup the object name"
+ anObject at:#ObjectNameTitle put:(getNameBlock value:(anObject at:#ObjectNameTitleIndex)).
+
+ "setup the name and a counter value array to each counter"
+ (anObject at:#Counters) do:[:aCounter|
+ aCounter at:#CounterNameTitle put:(getNameBlock value:(aCounter at:#CounterNameTitleIndex)).
+ aCounter at:#CounterValueArray put:OrderedCollection new.
+ ].
+
+ (anObject at:#NumInstances) < 1 ifTrue:[
+ |rawData|
+
+ rawData := anObject at:#RawData.
+
+ (anObject at:#Counters) do:[:aCounter|
+ (aCounter at:#CounterValueArray) add:(getCounterValueBlock value:aCounter value:rawData).
+ ].
+ ] ifFalse:[
+ (anObject at:#Instances) do:[:anInstance|
+ |rawData|
+
+ rawData := anInstance at:#RawData.
+
+ anInstance at:#Name put:((Unicode16String fromBytes:(anInstance at:#Name) copy swapBytes) copyButLast:1).
+
+ (anObject at:#Counters) do:[:aCounter|
+ (aCounter at:#CounterValueArray) add:(getCounterValueBlock value:aCounter value:rawData).
+ ].
+ ].
+ ].
].
^ self
@@ -13996,7 +14009,7 @@
cachedResults
cachedResults isNil ifTrue:[
- cachedResults := IdentityDictionary new.
+ cachedResults := IdentityDictionary new.
].
^ cachedResults
@@ -14023,8 +14036,8 @@
aliveTime
"
- returns the time a data stays alive, in milliseconds
- before we push a new call and overwrite the data
+ returns the time a data stays alive, in milliseconds
+ before we push a new call and overwrite the data
"
^ self subclassResponsibility
@@ -14047,18 +14060,18 @@
data
self synchronized:[
- |lastTS|
-
- lastTS := self lastTimestamp.
- lastTS isNil ifTrue:[
- ^ self dataBasic
- ] ifFalse:[
- Timestamp now asMilliseconds - lastTS >= self aliveTime ifTrue:[
- ^ self dataBasic
- ] ifFalse:[
- ^ self lastData
- ].
- ].
+ |lastTS|
+
+ lastTS := self lastTimestamp.
+ lastTS isNil ifTrue:[
+ ^ self dataBasic
+ ] ifFalse:[
+ Timestamp now asMilliseconds - lastTS >= self aliveTime ifTrue:[
+ ^ self dataBasic
+ ] ifFalse:[
+ ^ self lastData
+ ].
+ ].
].
!
@@ -14082,9 +14095,9 @@
data := self data.
self indexedNameNumbered == 0 ifTrue:[
- object := data objectArray at:1 ifAbsent:[debugBlock value:(object at:#ObjectNameTitle)].
+ object := data objectArray at:1 ifAbsent:[debugBlock value:(object at:#ObjectNameTitle)].
] ifFalse:[
- object := data objectArray detect:[:el|(el at:#ObjectNameTitleIndex) == self indexedNameNumbered] ifNone:[self error:'counter not found'].
+ object := data objectArray detect:[:el|(el at:#ObjectNameTitleIndex) == self indexedNameNumbered] ifNone:[self error:'counter not found'].
].
^ (object at:#Counters) collect:[:el|Array with:(el at:#CounterNameTitle) with:(el at:#CounterNameTitleIndex)].
@@ -14097,14 +14110,14 @@
cachedResult := self cachedResults at:aSelector ifAbsent:nil.
cachedResult notNil ifTrue:[
- |currentResult|
-
- currentResult := self perform:aSelector.
- return := self getPerSecondViaResult1:cachedResult result2:currentResult.
-
- self cachedResults at:aSelector put:currentResult.
+ |currentResult|
+
+ currentResult := self perform:aSelector.
+ return := self getPerSecondViaResult1:cachedResult result2:currentResult.
+
+ self cachedResults at:aSelector put:currentResult.
] ifFalse:[
- self cachedResults at:aSelector put:(self perform:aSelector).
+ self cachedResults at:aSelector put:(self perform:aSelector).
].
^ return
@@ -14128,15 +14141,15 @@
globalResult := Dictionary new.
values2 keysDo:[:key|
- |difference|
-
- difference := (values2 at:key) - (values1 at:key).
-
- runTimeInS = 0 ifTrue:[
- globalResult at:key put:0.
- ] ifFalse:[
- globalResult at:key put:(difference / runTimeInS) asFloat.
- ].
+ |difference|
+
+ difference := (values2 at:key) - (values1 at:key).
+
+ runTimeInS = 0 ifTrue:[
+ globalResult at:key put:0.
+ ] ifFalse:[
+ globalResult at:key put:(difference / runTimeInS) asFloat.
+ ].
].
^ globalResult
@@ -14154,15 +14167,15 @@
globalResult := Dictionary new.
values2 keysDo:[:key|
- |difference|
-
- difference := (values2 at:key) - (values1 at:key).
-
- runTimeInS = 0 ifTrue:[
- globalResult at:key put:0.
- ] ifFalse:[
- globalResult at:key put:(difference / runTimeInS) asFloat.
- ].
+ |difference|
+
+ difference := (values2 at:key) - (values1 at:key).
+
+ runTimeInS = 0 ifTrue:[
+ globalResult at:key put:0.
+ ] ifFalse:[
+ globalResult at:key put:(difference / runTimeInS) asFloat.
+ ].
].
^ globalResult
@@ -14173,14 +14186,14 @@
cachedResult := self cachedResults at:aSelector ifAbsent:nil.
cachedResult notNil ifTrue:[
- |currentResult|
-
- currentResult := self perform:aSelector.
- return := self getUsageViaResult1:cachedResult result2:currentResult.
-
- self cachedResults at:aSelector put:currentResult.
+ |currentResult|
+
+ currentResult := self perform:aSelector.
+ return := self getUsageViaResult1:cachedResult result2:currentResult.
+
+ self cachedResults at:aSelector put:currentResult.
] ifFalse:[
- self cachedResults at:aSelector put:(self perform:aSelector).
+ self cachedResults at:aSelector put:(self perform:aSelector).
].
^ return
@@ -14203,22 +14216,22 @@
value2 := result2 at:#values.
value1 keysDo:[:key|
- |diff dPerSecond load1024 res|
-
- diff := (value2 at:key) - (value1 at:key).
- diff := diff bitShift:10.
-
- deltaTIn100Ns = 0 ifTrue:[
- dPerSecond := 0.
- ] ifFalse:[
- dPerSecond := (diff / deltaTIn100Ns) asFloat.
- ].
- load1024 := 1024 - dPerSecond.
-
- res := (load1024 / 1024 * 100) asFloat.
- res < 0 ifTrue:[res := 0].
-
- globalResult at:key put:res.
+ |diff dPerSecond load1024 res|
+
+ diff := (value2 at:key) - (value1 at:key).
+ diff := diff bitShift:10.
+
+ deltaTIn100Ns = 0 ifTrue:[
+ dPerSecond := 0.
+ ] ifFalse:[
+ dPerSecond := (diff / deltaTIn100Ns) asFloat.
+ ].
+ load1024 := 1024 - dPerSecond.
+
+ res := (load1024 / 1024 * 100) asFloat.
+ res < 0 ifTrue:[res := 0].
+
+ globalResult at:key put:res.
].
^ globalResult
@@ -14234,22 +14247,22 @@
value2 := result2 at:#values.
value1 keysDo:[:key|
- |diff dPerSecond load1024 res|
-
- diff := (value2 at:key) - (value1 at:key).
- diff := diff bitShift:10.
-
- deltaTIn100Ns = 0 ifTrue:[
- dPerSecond := 0.
- ] ifFalse:[
- dPerSecond := (diff / deltaTIn100Ns) asFloat.
- ].
- load1024 := 1024 - dPerSecond.
-
- res := (load1024 / 1024 * 100) asFloat.
- res < 0 ifTrue:[res := 0].
-
- globalResult at:key put:res.
+ |diff dPerSecond load1024 res|
+
+ diff := (value2 at:key) - (value1 at:key).
+ diff := diff bitShift:10.
+
+ deltaTIn100Ns = 0 ifTrue:[
+ dPerSecond := 0.
+ ] ifFalse:[
+ dPerSecond := (diff / deltaTIn100Ns) asFloat.
+ ].
+ load1024 := 1024 - dPerSecond.
+
+ res := (load1024 / 1024 * 100) asFloat.
+ res < 0 ifTrue:[res := 0].
+
+ globalResult at:key put:res.
].
^ globalResult
@@ -14273,15 +14286,15 @@
|data object counter values debugBlock numInstances|
debugBlock := [:obj|
- ^ 'obj:', obj , ' this:', self printString , ' idx:', self indexedName
+ ^ 'obj:', obj , ' this:', self printString , ' idx:', self indexedName
].
data := self dataBasic.
objectIndex == 0 ifTrue:[
- object := data objectArray at:1 ifAbsent:[debugBlock value:(object at:#ObjectNameTitle)].
+ object := data objectArray at:1 ifAbsent:[debugBlock value:(object at:#ObjectNameTitle)].
] ifFalse:[
- object := data objectArray detect:[:el|(el at:#ObjectNameTitleIndex) == objectIndex] ifNone:[debugBlock value:(object at:#ObjectNameTitle)].
+ object := data objectArray detect:[:el|(el at:#ObjectNameTitleIndex) == objectIndex] ifNone:[debugBlock value:(object at:#ObjectNameTitle)].
].
counter := (object at:#Counters) detect:[:aCounter|(aCounter at:#CounterNameTitleIndex) == counterIndex] ifNone:[debugBlock value:(object at:#ObjectNameTitle)].
@@ -14290,28 +14303,28 @@
numInstances := object at:#NumInstances.
numInstances > 0 ifTrue:[
- 1 to:numInstances do:[:idx|
- |value instanceName|
-
- value := (counter at:#CounterValueArray) at:idx.
- instanceName := ((object at:#Instances) at:idx) at:#Name.
-
- values at:instanceName put:value.
- ].
+ 1 to:numInstances do:[:idx|
+ |value instanceName|
+
+ value := (counter at:#CounterValueArray) at:idx.
+ instanceName := ((object at:#Instances) at:idx) at:#Name.
+
+ values at:instanceName put:value.
+ ].
] ifFalse:[
- values at:'<<singleton>>' put:(counter at:#CounterValueArray) first.
+ values at:'<<singleton>>' put:(counter at:#CounterValueArray) first.
].
aBoolean ifTrue:[
- |return|
-
- return := IdentityDictionary new.
- return at:#time put:data perfTime.
- return at:#frequence put:data perfFreq.
- return at:#time100nSec put:data perfTime100nSec.
- return at:#values put:values.
-
- ^ return
+ |return|
+
+ return := IdentityDictionary new.
+ return at:#time put:data perfTime.
+ return at:#frequence put:data perfFreq.
+ return at:#time100nSec put:data perfTime100nSec.
+ return at:#values put:values.
+
+ ^ return
].
^ values
@@ -14333,15 +14346,15 @@
|data object counter values debugBlock numInstances|
debugBlock := [:obj|
- ^ 'obj:', obj , ' this:', self printString , ' idx:', self indexedName
+ ^ 'obj:', obj , ' this:', self printString , ' idx:', self indexedName
].
data := self data.
objectIndex == 0 ifTrue:[
- object := data objectArray at:1 ifAbsent:[debugBlock value:(object at:#ObjectNameTitle)].
+ object := data objectArray at:1 ifAbsent:[debugBlock value:(object at:#ObjectNameTitle)].
] ifFalse:[
- object := data objectArray detect:[:el|(el at:#ObjectNameTitleIndex) == objectIndex] ifNone:[debugBlock value:(object at:#ObjectNameTitle)].
+ object := data objectArray detect:[:el|(el at:#ObjectNameTitleIndex) == objectIndex] ifNone:[debugBlock value:(object at:#ObjectNameTitle)].
].
counter := (object at:#Counters) detect:[:aCounter|(aCounter at:#CounterNameTitleIndex) == counterIndex] ifNone:[debugBlock value:(object at:#ObjectNameTitle)].
@@ -14350,28 +14363,28 @@
numInstances := object at:#NumInstances.
numInstances > 0 ifTrue:[
- 1 to:numInstances do:[:idx|
- |value instanceName|
-
- value := (counter at:#CounterValueArray) at:idx.
- instanceName := ((object at:#Instances) at:idx) at:#Name.
-
- values at:instanceName put:value.
- ].
+ 1 to:numInstances do:[:idx|
+ |value instanceName|
+
+ value := (counter at:#CounterValueArray) at:idx.
+ instanceName := ((object at:#Instances) at:idx) at:#Name.
+
+ values at:instanceName put:value.
+ ].
] ifFalse:[
- values at:'<<singleton>>' put:(counter at:#CounterValueArray) first.
+ values at:'<<singleton>>' put:(counter at:#CounterValueArray) first.
].
aBoolean ifTrue:[
- |return|
-
- return := IdentityDictionary new.
- return at:#time put:data perfTime.
- return at:#frequence put:data perfFreq.
- return at:#time100nSec put:data perfTime100nSec.
- return at:#values put:values.
-
- ^ return
+ |return|
+
+ return := IdentityDictionary new.
+ return at:#time put:data perfTime.
+ return at:#frequence put:data perfFreq.
+ return at:#time100nSec put:data perfTime100nSec.
+ return at:#values put:values.
+
+ ^ return
].
^ values
@@ -14382,7 +14395,7 @@
current
TheOneAndOnlyInstance isNil ifTrue:[
- TheOneAndOnlyInstance := self new.
+ TheOneAndOnlyInstance := self new.
].
^ TheOneAndOnlyInstance
@@ -14404,7 +14417,7 @@
^ self getValuesByCounter:218 timed:true
"
- self current diskBytes
+ self current diskBytes
"
!
@@ -14412,7 +14425,7 @@
^ self getBasicValuesByCounter:218 timed:true
"
- self current diskBytesBasic
+ self current diskBytesBasic
"
!
@@ -14420,7 +14433,7 @@
^ self getPerSecondViaPerformBlock:[self diskBytes]
"
- self current diskBytesPerSecond
+ self current diskBytesPerSecond
"
!
@@ -14428,7 +14441,7 @@
^ self getPerSecondFromLast:#diskBytesBasic
"
- self current diskBytesPerSecondFromLast
+ self current diskBytesPerSecondFromLast
"
!
@@ -14436,7 +14449,7 @@
^ self getValuesByCounter:198
"
- self current diskQueueLength
+ self current diskQueueLength
"
!
@@ -14444,7 +14457,7 @@
^ self getValuesByCounter:214 timed:true
"
- self current diskRead
+ self current diskRead
"
!
@@ -14452,7 +14465,7 @@
^ self getBasicValuesByCounter:214 timed:true
"
- self current diskReadBasic
+ self current diskReadBasic
"
!
@@ -14460,7 +14473,7 @@
^ self getPerSecondViaPerformBlock:[self diskRead]
"
- self current diskReadsPerSecond
+ self current diskReadsPerSecond
"
!
@@ -14468,7 +14481,7 @@
^ self getPerSecondFromLast:#diskReadBasic
"
- self current diskReadsPerSecondFromLast
+ self current diskReadsPerSecondFromLast
"
!
@@ -14476,7 +14489,7 @@
^ self getValuesByCounter:408
"
- self current diskSpaceFreeInMegaByte
+ self current diskSpaceFreeInMegaByte
"
!
@@ -14484,7 +14497,7 @@
^ self getValuesByCounter:212 timed:true
"
- self current diskTransfers
+ self current diskTransfers
"
!
@@ -14492,7 +14505,7 @@
^ self getBasicValuesByCounter:212 timed:true
"
- self current diskTransfersBasic
+ self current diskTransfersBasic
"
!
@@ -14500,7 +14513,7 @@
^ self getPerSecondViaPerformBlock:[self diskTransfers]
"
- self current diskTransfersPerSecond
+ self current diskTransfersPerSecond
"
!
@@ -14508,7 +14521,7 @@
^ self getPerSecondFromLast:#diskTransfersBasic
"
- self current diskTransfersPerSecondFromlast
+ self current diskTransfersPerSecondFromlast
"
!
@@ -14516,7 +14529,7 @@
^ self getValuesByCounter:216 timed:true
"
- self current diskWrite
+ self current diskWrite
"
!
@@ -14524,7 +14537,7 @@
^ self getBasicValuesByCounter:216 timed:true
"
- self current diskWriteBasic
+ self current diskWriteBasic
"
!
@@ -14532,7 +14545,7 @@
^ self getPerSecondViaPerformBlock:[self diskWrite]
"
- self current diskWritesPerSecond
+ self current diskWritesPerSecond
"
!
@@ -14540,7 +14553,7 @@
^ self getPerSecondFromLast:#diskWriteBasic
"
- self current diskWritesPerSecondFromLast
+ self current diskWritesPerSecondFromLast
"
! !
@@ -14549,7 +14562,7 @@
current
TheOneAndOnlyInstance isNil ifTrue:[
- TheOneAndOnlyInstance := self new.
+ TheOneAndOnlyInstance := self new.
].
^ TheOneAndOnlyInstance
@@ -14578,12 +14591,12 @@
indexNameArray := OrderedCollection new.
data objectArray do:[:anObject|
- |index name|
-
- index := anObject at:#ObjectNameTitleIndex.
- name := Win32OperatingSystem::PerformanceData counterIndexTextDictionary at:index.
-
- indexNameArray add:(Array with:name with:index).
+ |index name|
+
+ index := anObject at:#ObjectNameTitleIndex.
+ name := Win32OperatingSystem::PerformanceData counterIndexTextDictionary at:index.
+
+ indexNameArray add:(Array with:name with:index).
].
^ indexNameArray
@@ -14594,7 +14607,7 @@
current
TheOneAndOnlyInstance isNil ifTrue:[
- TheOneAndOnlyInstance := self new.
+ TheOneAndOnlyInstance := self new.
].
^ TheOneAndOnlyInstance
@@ -14616,7 +14629,7 @@
^ self getValuesByCounter:1380
"
- self current availableKBytes
+ self current availableKBytes
"
!
@@ -14624,7 +14637,7 @@
^ self getValuesByCounter:1382
"
- self current availableMBytes
+ self current availableMBytes
"
! !
@@ -14633,7 +14646,7 @@
current
TheOneAndOnlyInstance isNil ifTrue:[
- TheOneAndOnlyInstance := self new.
+ TheOneAndOnlyInstance := self new.
].
^ TheOneAndOnlyInstance
@@ -14659,7 +14672,7 @@
^ self getValuesByCounter:264 timed:true
"
- self current bytesReceived
+ self current bytesReceived
"
!
@@ -14667,7 +14680,7 @@
^ self getBasicValuesByCounter:264 timed:true
"
- self current bytesReceivedBasic
+ self current bytesReceivedBasic
"
!
@@ -14675,7 +14688,7 @@
^ self getPerSecondViaPerformBlock:[self bytesReceived]
"
- self current bytesReceivedPerSecond
+ self current bytesReceivedPerSecond
"
!
@@ -14683,7 +14696,7 @@
^ self getPerSecondFromLast:#bytesReceivedBasic
"
- self current bytesReceivedPerSecondFromlast
+ self current bytesReceivedPerSecondFromlast
"
!
@@ -14691,7 +14704,7 @@
^ self getValuesByCounter:506 timed:true
"
- self current bytesSent
+ self current bytesSent
"
!
@@ -14699,7 +14712,7 @@
^ self getBasicValuesByCounter:506 timed:true
"
- self current bytesSentBasic
+ self current bytesSentBasic
"
!
@@ -14707,7 +14720,7 @@
^ self getPerSecondViaPerformBlock:[self bytesSent]
"
- self current bytesSentPerSecond
+ self current bytesSentPerSecond
"
!
@@ -14715,7 +14728,7 @@
^ self getPerSecondFromLast:#bytesSentBasic
"
- self current bytesSentPerSecondFromlast
+ self current bytesSentPerSecondFromlast
"
!
@@ -14725,13 +14738,13 @@
modifiedDictionary := Dictionary new.
(self getPerSecondViaPerformBlock:[self bytesReceived]) keysAndValuesDo:[:key :value|
- modifiedDictionary at:key put:(value / 1024).
+ modifiedDictionary at:key put:(value / 1024).
].
^ modifiedDictionary
"
- self current kBytesReceivedPerSecond
+ self current kBytesReceivedPerSecond
"
!
@@ -14744,13 +14757,13 @@
modifiedDictionary := Dictionary new.
return keysAndValuesDo:[:key :value|
- modifiedDictionary at:key put:(value / 1024).
+ modifiedDictionary at:key put:(value / 1024).
].
^ modifiedDictionary
"
- self current kBytesReceivedPerSecondFromLast
+ self current kBytesReceivedPerSecondFromLast
"
!
@@ -14760,13 +14773,13 @@
modifiedDictionary := Dictionary new.
(self getPerSecondViaPerformBlock:[self bytesSent]) keysAndValuesDo:[:key :value|
- modifiedDictionary at:key put:(value / 1024).
+ modifiedDictionary at:key put:(value / 1024).
].
^ modifiedDictionary
"
- self current kBytesSentPerSecond
+ self current kBytesSentPerSecond
"
!
@@ -14779,13 +14792,13 @@
modifiedDictionary := Dictionary new.
return keysAndValuesDo:[:key :value|
- modifiedDictionary at:key put:(value / 1024).
+ modifiedDictionary at:key put:(value / 1024).
].
^ modifiedDictionary
"
- self current kBytesSentPerSecondFromLast
+ self current kBytesSentPerSecondFromLast
"
! !
@@ -14794,7 +14807,7 @@
current
TheOneAndOnlyInstance isNil ifTrue:[
- TheOneAndOnlyInstance := self new.
+ TheOneAndOnlyInstance := self new.
].
^ TheOneAndOnlyInstance
@@ -14816,7 +14829,7 @@
^ self getValuesByCounter:6 timed:true
"
- self current processTime
+ self current processTime
"
!
@@ -14824,7 +14837,7 @@
^ self getBasicValuesByCounter:6 timed:true
"
- self current processTimeBasic
+ self current processTimeBasic
"
!
@@ -14834,13 +14847,13 @@
modifiedDictionary := Dictionary new.
(self getUsageViaPerformBlock:[self processTime]) keysAndValuesDo:[:key :value|
- modifiedDictionary at:key put:(100 - value).
+ modifiedDictionary at:key put:(100 - value).
].
^ modifiedDictionary
"
- self current processUsage
+ self current processUsage
"
!
@@ -14853,13 +14866,13 @@
modifiedDictionary := Dictionary new.
return keysAndValuesDo:[:key :value|
- modifiedDictionary at:key put:(100 - value).
+ modifiedDictionary at:key put:(100 - value).
].
^ modifiedDictionary
"
- self current processUsageFromLast
+ self current processUsageFromLast
"
!
@@ -14868,7 +14881,7 @@
^ (self data objectArray first at:#Instances) collect:[:el|el at:#Name]
"
- self current runningProcessNameList
+ self current runningProcessNameList
"
!
@@ -14877,7 +14890,7 @@
^ (self data objectArray first at:#NumInstances)
"
- self current runningProcesses
+ self current runningProcesses
"
! !
@@ -14886,7 +14899,7 @@
current
TheOneAndOnlyInstance isNil ifTrue:[
- TheOneAndOnlyInstance := self new.
+ TheOneAndOnlyInstance := self new.
].
^ TheOneAndOnlyInstance
@@ -14908,7 +14921,7 @@
^ self getValuesByCounter:148 timed:true
"
- self current interrupts
+ self current interrupts
"
!
@@ -14916,7 +14929,7 @@
^ self getBasicValuesByCounter:148 timed:true
"
- self current interruptsBasic
+ self current interruptsBasic
"
!
@@ -14924,7 +14937,7 @@
^ self getPerSecondViaPerformBlock:[self interrupts]
"
- self current interruptsPerSecond
+ self current interruptsPerSecond
"
!
@@ -14932,7 +14945,7 @@
^ self getPerSecondFromLast:#interruptsBasic
"
- self current interruptsPerSecondFromLast
+ self current interruptsPerSecondFromLast
"
!
@@ -14940,7 +14953,7 @@
^ self getValuesByCounter:6 timed:true
"
- self current processorTime
+ self current processorTime
"
!
@@ -14948,7 +14961,7 @@
^ self getBasicValuesByCounter:6 timed:true
"
- self current processorTimeBasic
+ self current processorTimeBasic
"
!
@@ -14956,7 +14969,7 @@
^ self getUsageViaPerformBlock:[self processorTime]
"
- self current processorUsage
+ self current processorUsage
"
!
@@ -14964,7 +14977,7 @@
^ self getUsageFromLast:#processorTimeBasic
"
- self current processorUsageFromLast
+ self current processorUsageFromLast
"
! !
@@ -14975,10 +14988,10 @@
|defaultPriority|
Error handle:[:ex |
- Transcript showCR: 'PrinterInfo2 error getting defaultPriority - ', ex description.
- defaultPriority := 0.
+ Transcript showCR: 'PrinterInfo2 error getting defaultPriority - ', ex description.
+ defaultPriority := 0.
] do:[
- defaultPriority := self unsignedLongAt:(60 + 1)
+ defaultPriority := self unsignedLongAt:(60 + 1)
].
^ defaultPriority
@@ -14990,15 +15003,15 @@
|pComment|
Error handle:[:ex |
- Transcript showCR: 'PrinterInfo2 error getting pComment - ', ex description.
- pComment := 0.
+ Transcript showCR: 'PrinterInfo2 error getting pComment - ', ex description.
+ pComment := 0.
] do:[
- pComment := self unsignedLongAt:(20 + 1).
+ pComment := self unsignedLongAt:(20 + 1).
].
^ pComment == 0
- ifTrue:''
- ifFalse:[ (ExternalBytes address:pComment) stringAt:1 ]
+ ifTrue:''
+ ifFalse:[ (ExternalBytes address:pComment) stringAt:1 ]
"Created: / 01-08-2006 / 14:02:55 / fm"
"Modified: / 16-04-2007 / 13:08:39 / cg"
@@ -15008,10 +15021,10 @@
|pName|
Error handle:[:ex |
- Transcript showCR: 'PrinterInfo2 error getting pDriverName - ', ex description.
- pName := 0.
+ Transcript showCR: 'PrinterInfo2 error getting pDriverName - ', ex description.
+ pName := 0.
] do:[
- pName := self unsignedLongAt:(16 + 1).
+ pName := self unsignedLongAt:(16 + 1).
].
pName == 0 ifTrue:[^ ''].
^ (ExternalBytes address:pName) stringAt:1
@@ -15024,18 +15037,18 @@
|pLocation externalBytes|
Error handle:[:ex |
- Transcript showCR: 'PrinterInfo2 error getting pLocation - ', ex description.
- pLocation := 0.
+ Transcript showCR: 'PrinterInfo2 error getting pLocation - ', ex description.
+ pLocation := 0.
] do:[
- pLocation := self unsignedLongAt:(24 + 1).
+ pLocation := self unsignedLongAt:(24 + 1).
].
pLocation == 0 ifTrue:[^ nil].
externalBytes := ExternalBytes address:pLocation.
^ externalBytes isEmpty
- ifTrue:[ nil ]
- ifFalse:[ externalBytes stringAt:1 ]
+ ifTrue:[ nil ]
+ ifFalse:[ externalBytes stringAt:1 ]
"Created: / 01-08-2006 / 14:03:21 / fm"
"Modified: / 18-10-2006 / 12:06:45 / User"
@@ -15047,10 +15060,10 @@
|priority|
Error handle:[:ex |
- Transcript showCR: 'PrinterInfo2 error getting priority - ', ex description.
- priority := 0.
+ Transcript showCR: 'PrinterInfo2 error getting priority - ', ex description.
+ priority := 0.
] do:[
- priority := self unsignedLongAt: 56 + 1
+ priority := self unsignedLongAt: 56 + 1
].
^ priority
@@ -15063,10 +15076,10 @@
|status|
Error handle:[:ex |
- Transcript showCR: 'PrinterInfo2 error getting status - ', ex description.
- status := -1.
+ Transcript showCR: 'PrinterInfo2 error getting status - ', ex description.
+ status := -1.
] do:[
- status := self unsignedLongAt: 72 + 1
+ status := self unsignedLongAt: 72 + 1
].
^ status
@@ -15080,13 +15093,13 @@
"returns a collection of root keyNames"
^ #(
- 'HKEY_CLASSES_ROOT'
- 'HKEY_CURRENT_USER'
- 'HKEY_LOCAL_MACHINE'
- 'HKEY_USERS'
- 'HKEY_PERFORMANCE_DATA'
- 'HKEY_CURRENT_CONFIG'
- 'HKEY_DYN_DATA'
+ 'HKEY_CLASSES_ROOT'
+ 'HKEY_CURRENT_USER'
+ 'HKEY_LOCAL_MACHINE'
+ 'HKEY_USERS'
+ 'HKEY_PERFORMANCE_DATA'
+ 'HKEY_CURRENT_CONFIG'
+ 'HKEY_DYN_DATA'
)
!
@@ -15103,184 +15116,184 @@
Interface to a WIN32 registry.
As this is a private class, access it via
- Win32OperatingSystem registryEntry
+ Win32OperatingSystem registryEntry
[author:]
- Claus Gittinger (initial version & cleanup)
+ Claus Gittinger (initial version & cleanup)
"
!
examples
"
retrieve an existing entry by key:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'
+ [exEnd]
retrieve a non-existing entry by key:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\xxx'
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\xxx'
+ [exEnd]
ask a keys value:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion'.
- Transcript show:'Windows serial NR:'; showCR:(k valueNamed:'ProductId').
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
- Transcript showCR:(k valueNamed:'CurrentVersion').
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion'.
+ Transcript show:'Windows serial NR:'; showCR:(k valueNamed:'ProductId').
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
+ Transcript showCR:(k valueNamed:'CurrentVersion').
+ [exEnd]
create a sub-key (if not already present):
- [exBegin]
- |k subKey|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
- subKey := k createSubKeyNamed:'RegistryDemo'
- [exEnd]
+ [exBegin]
+ |k subKey|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
+ subKey := k createSubKeyNamed:'RegistryDemo'
+ [exEnd]
change a keys value:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
- k valueNamed:'FooBarBaz' put:'a foo bar baz string'.
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
+ k valueNamed:'FooBarBaz' put:'a foo bar baz string'.
+ [exEnd]
delete a value:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
- k deleteValueNamed:'FooBarBaz'.
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X\RegistryDemo'.
+ k deleteValueNamed:'FooBarBaz'.
+ [exEnd]
delete a key:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
- k deleteSubKeyNamed:'RegistryDemo'.
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software\eXept\Smalltalk/X'.
+ k deleteSubKeyNamed:'RegistryDemo'.
+ [exEnd]
enumerate keys:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
- k subKeysDo:[:subKey |
- Transcript showCR:subKey path
- ]
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
+ k subKeysDo:[:subKey |
+ Transcript showCR:subKey path
+ ]
+ [exEnd]
enumerate all keys (recursive):
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
- k allSubKeysDo:[:subKey |
- Transcript showCR:subKey path
- ]
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\Software'.
+ k allSubKeysDo:[:subKey |
+ Transcript showCR:subKey path
+ ]
+ [exEnd]
fetch value by index:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
- Transcript showCR:(k valueNameAtIndex:0)
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
+ Transcript showCR:(k valueNameAtIndex:0)
+ [exEnd]
enumerate value names:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
- k valueNamesDo:[:nm |
- Transcript showCR:nm.
- ]
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
+ k valueNamesDo:[:nm |
+ Transcript showCR:nm.
+ ]
+ [exEnd]
enumerate values:
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
- k valueNamesAndValuesDo:[:nm :val |
- Transcript showCR:(nm , ' -> ' , val storeString).
- ]
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
+ k valueNamesAndValuesDo:[:nm :val |
+ Transcript showCR:(nm , ' -> ' , val storeString).
+ ]
+ [exEnd]
search for a value (where does NT store the domain ?):
- [exBegin]
- |k|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\System'.
- k subKeysDo:[:subKey |
- subKey subKeysDo:[:subSubKey |
- |tcp params|
-
- (subSubKey path asLowercase endsWith:'services') ifTrue:[
- tcp := subSubKey subKeyNamed:'tcpip'.
- tcp notNil ifTrue:[
- params := tcp subKeyNamed:'parameters'.
- params notNil ifTrue:[
- Transcript showCR:'Domain is found in ' , params path ,
- ' value: ' , (params valueNamed:'Domain').
- params close.
- ].
- tcp close.
- ]
- ]
- ]
- ]
- [exEnd]
+ [exBegin]
+ |k|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_LOCAL_MACHINE\System'.
+ k subKeysDo:[:subKey |
+ subKey subKeysDo:[:subSubKey |
+ |tcp params|
+
+ (subSubKey path asLowercase endsWith:'services') ifTrue:[
+ tcp := subSubKey subKeyNamed:'tcpip'.
+ tcp notNil ifTrue:[
+ params := tcp subKeyNamed:'parameters'.
+ params notNil ifTrue:[
+ Transcript showCR:'Domain is found in ' , params path ,
+ ' value: ' , (params valueNamed:'Domain').
+ params close.
+ ].
+ tcp close.
+ ]
+ ]
+ ]
+ ]
+ [exEnd]
register an exe for shell-open:
- [exBegin]
- |k stx shell open cmd st_af edit st owl list id|
-
- k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Classes\Applications'.
- stx := k createSubKeyNamed:'SmalltalkX.exe'.
- shell := stx createSubKeyNamed:'shell'.
- open := shell createSubKeyNamed:'open'.
- cmd := open createSubKeyNamed:'command'.
- cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
- ' ',Character doubleQuote,'%1',Character doubleQuote).
-
- k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Classes'.
- st_af := k createSubKeyNamed:'st_auto_file'.
- shell := st_af createSubKeyNamed:'shell'.
- open := shell createSubKeyNamed:'open'.
- cmd := open createSubKeyNamed:'command'.
- cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
- ' --open ',Character doubleQuote,'%1',Character doubleQuote).
- edit := shell createSubKeyNamed:'edit'.
- cmd := edit createSubKeyNamed:'command'.
- cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
- ' --edit ',Character doubleQuote,'%1',Character doubleQuote).
-
- k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts'.
- st := k createSubKeyNamed:'.st'.
- owl := st createSubKeyNamed:'OpenWithList'.
- list := owl valueNames.
- (list contains:[:k | (owl valueNamed:k) = 'SmalltalkX.exe']) ifTrue:[
- Transcript showCR:'already registered.'.
- ] ifFalse:[
- id := ($a to:$z) detect:[:k | (list includes:(k asString)) not] ifNone:nil.
- owl valueNamed:id asString put:'SmalltalkX.exe'.
- ]
- [exEnd]
+ [exBegin]
+ |k stx shell open cmd st_af edit st owl list id|
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Classes\Applications'.
+ stx := k createSubKeyNamed:'SmalltalkX.exe'.
+ shell := stx createSubKeyNamed:'shell'.
+ open := shell createSubKeyNamed:'open'.
+ cmd := open createSubKeyNamed:'command'.
+ cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
+ ' ',Character doubleQuote,'%1',Character doubleQuote).
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Classes'.
+ st_af := k createSubKeyNamed:'st_auto_file'.
+ shell := st_af createSubKeyNamed:'shell'.
+ open := shell createSubKeyNamed:'open'.
+ cmd := open createSubKeyNamed:'command'.
+ cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
+ ' --open ',Character doubleQuote,'%1',Character doubleQuote).
+ edit := shell createSubKeyNamed:'edit'.
+ cmd := edit createSubKeyNamed:'command'.
+ cmd defaultValue:(Character doubleQuote asString,OperatingSystem nameOfSTXExecutable,Character doubleQuote,
+ ' --edit ',Character doubleQuote,'%1',Character doubleQuote).
+
+ k := Win32OperatingSystem registryEntry key:'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts'.
+ st := k createSubKeyNamed:'.st'.
+ owl := st createSubKeyNamed:'OpenWithList'.
+ list := owl valueNames.
+ (list contains:[:k | (owl valueNamed:k) = 'SmalltalkX.exe']) ifTrue:[
+ Transcript showCR:'already registered.'.
+ ] ifFalse:[
+ id := ($a to:$z) detect:[:k | (list includes:(k asString)) not] ifNone:nil.
+ owl valueNamed:id asString put:'SmalltalkX.exe'.
+ ]
+ [exEnd]
@@ -15330,31 +15343,31 @@
HKEY_CLASSES_ROOT isNil ifTrue:[self initialize].
specialKeyStringOrSymbol = #'HKEY_CLASSES_ROOT' ifTrue:[
- ^ HKEY_CLASSES_ROOT.
+ ^ HKEY_CLASSES_ROOT.
].
specialKeyStringOrSymbol = #'HKEY_CURRENT_USER' ifTrue:[
- ^ HKEY_CURRENT_USER.
+ ^ HKEY_CURRENT_USER.
].
specialKeyStringOrSymbol = #'HKEY_LOCAL_MACHINE' ifTrue:[
- ^ HKEY_LOCAL_MACHINE.
+ ^ HKEY_LOCAL_MACHINE.
].
specialKeyStringOrSymbol = #'HKEY_USERS' ifTrue:[
- ^ HKEY_USERS.
+ ^ HKEY_USERS.
].
specialKeyStringOrSymbol = #'HKEY_PERFORMANCE_DATA' ifTrue:[
- ^ HKEY_PERFORMANCE_DATA.
+ ^ HKEY_PERFORMANCE_DATA.
].
specialKeyStringOrSymbol = #'HKEY_CURRENT_CONFIG' ifTrue:[
- ^ HKEY_CURRENT_CONFIG.
+ ^ HKEY_CURRENT_CONFIG.
].
specialKeyStringOrSymbol = #'HKEY_DYN_DATA' ifTrue:[
- ^ HKEY_DYN_DATA.
+ ^ HKEY_DYN_DATA.
].
specialKeyStringOrSymbol = #'HKEY_PERFORMANCE_TEXT' ifTrue:[
- ^ HKEY_PERFORMANCE_TEXT.
+ ^ HKEY_PERFORMANCE_TEXT.
].
specialKeyStringOrSymbol = #'HKEY_PERFORMANCE_NLSTEXT' ifTrue:[
- ^ HKEY_PERFORMANCE_NLSTEXT.
+ ^ HKEY_PERFORMANCE_NLSTEXT.
].
^ nil
@@ -15367,7 +15380,7 @@
"handle image restarts and refetch registry handles"
(something == #returnFromSnapshot) ifTrue:[
- self initialize
+ self initialize
]
"Created: 15.6.1996 / 15:14:03 / cg"
@@ -15380,9 +15393,9 @@
|h newEntry|
aHandleValue isInteger ifTrue:[
- h := ExternalAddress newAddress:aHandleValue
+ h := ExternalAddress newAddress:aHandleValue
] ifFalse:[
- h := aHandleValue
+ h := aHandleValue
].
"/ rootKeys are not registered for RegClose ...
@@ -15430,9 +15443,9 @@
key:aKeyNamePath flags:flags
"retrieve an entry by full path name (starting at a root).
flags may be one of:
- #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
- #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
- or nil, to access the key (32/64) for the current application"
+ #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
+ #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
+ or nil, to access the key (32/64) for the current application"
^ self key:aKeyNamePath flags:flags createIfAbsent:false
@@ -15451,9 +15464,9 @@
key:aKeyNamePath flags:flags createIfAbsent:createIfAbsent
"retrieve an entry by full path name (starting at a root).
flags may be one of:
- #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
- #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
- or nil, to access the key (32/64) for the current application"
+ #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
+ #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
+ or nil, to access the key (32/64) for the current application"
|idx first rest root|
@@ -15461,11 +15474,11 @@
idx := aKeyNamePath indexOf:(self separator).
idx == 0 ifTrue:[
- first := aKeyNamePath.
- rest := nil.
+ first := aKeyNamePath.
+ rest := nil.
] ifFalse:[
- first := aKeyNamePath copyTo:idx-1.
- rest := aKeyNamePath copyFrom:idx+1
+ first := aKeyNamePath copyTo:idx-1.
+ rest := aKeyNamePath copyFrom:idx+1
].
first := first asUppercase.
@@ -15473,17 +15486,17 @@
"/ the first is a pseudo name
root := self rootKey:first.
root isNil ifTrue:[
- ^ nil
+ ^ nil
].
rest size == 0 ifTrue:[
- ^ root
+ ^ root
].
Error handle:[:ex |
- ^ nil
+ ^ nil
] do:[
- ^ root subKeyNamed:rest flags:flags createIfAbsent:createIfAbsent.
+ ^ root subKeyNamed:rest flags:flags createIfAbsent:createIfAbsent.
].
"
@@ -15620,7 +15633,7 @@
k := self key:'HKEY_CLASSES_ROOT\MIME\Database\Content Type\',mimeType.
k notNil ifTrue:[
- suffix := k valueNamed:'extension'.
+ suffix := k valueNamed:'extension'.
].
^ suffix
!
@@ -15634,35 +15647,35 @@
suffix isNil ifTrue:[^ nil].
(suffix startsWith:'.') ifTrue:[
- suffix := suffix copyFrom:2
+ suffix := suffix copyFrom:2
].
k := self key:'HKEY_CLASSES_ROOT\.',suffix.
k notNil ifTrue:[
- fkey := (k valueNamed:'').
+ fkey := (k valueNamed:'').
].
fkey isNil ifTrue:[
- fkey := suffix,'_auto_file'
+ fkey := suffix,'_auto_file'
].
fkey notEmptyOrNil ifTrue:[
- redirect := nil.
-
- k := Win32OperatingSystem::RegistryEntry key:('HKEY_CLASSES_ROOT\' , fkey , '\CurVer').
- k notNil ifTrue:[
- redirect := k defaultValue
- ].
-
- redirect isNil ifTrue:[
- k := Win32OperatingSystem::RegistryEntry key:('HKEY_CLASSES_ROOT\' , (fkey) , '\shell\',operation,'\command').
- ] ifFalse:[
- k := Win32OperatingSystem::RegistryEntry key:('HKEY_CLASSES_ROOT\' , (redirect) , '\shell\',operation,'\command').
- ].
-
- k notNil ifTrue:[
- cmd := k defaultValue
- ].
+ redirect := nil.
+
+ k := Win32OperatingSystem::RegistryEntry key:('HKEY_CLASSES_ROOT\' , fkey , '\CurVer').
+ k notNil ifTrue:[
+ redirect := k defaultValue
+ ].
+
+ redirect isNil ifTrue:[
+ k := Win32OperatingSystem::RegistryEntry key:('HKEY_CLASSES_ROOT\' , (fkey) , '\shell\',operation,'\command').
+ ] ifFalse:[
+ k := Win32OperatingSystem::RegistryEntry key:('HKEY_CLASSES_ROOT\' , (redirect) , '\shell\',operation,'\command').
+ ].
+
+ k notNil ifTrue:[
+ cmd := k defaultValue
+ ].
].
@@ -15687,8 +15700,8 @@
"
self
- stringValueFor:'Content Type'
- atKey:'HKEY_CLASSES_ROOT\.au'
+ stringValueFor:'Content Type'
+ atKey:'HKEY_CLASSES_ROOT\.au'
"
! !
@@ -15743,9 +15756,9 @@
If it already exists, return it.
Return nil if the new key cannot be created.
flags may be one of:
- #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
- #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
- or nil, to access the key (32/64) for the current application"
+ #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
+ #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
+ or nil, to access the key (32/64) for the current application"
^ self subKeyNamed:subKeyString flags:flags createIfAbsent:true
@@ -15777,12 +15790,12 @@
"delete a key below mySelf.
Return true on success.
flags may be one of:
- #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
- #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
- or nil, to access the key (32/64) for the current application.
+ #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
+ #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
+ or nil, to access the key (32/64) for the current application.
CAVEAT: due to a missing library entry in the BCC system,
- the flags are currently ignored"
+ the flags are currently ignored"
|subKeyStringZ errorNumber|
@@ -15800,40 +15813,40 @@
int _flags = 0;
if (flags != nil) {
- if (flags == @symbol(KEY_WOW64_64KEY)) {
- _flags = KEY_WOW64_64KEY;
- } else if (flags == @symbol(KEY_WOW64_32KEY)) {
- _flags = KEY_WOW64_32KEY;
- } else {
- errorNumber = @symbol(badArgument2);
- goto out;
- }
+ if (flags == @symbol(KEY_WOW64_64KEY)) {
+ _flags = KEY_WOW64_64KEY;
+ } else if (flags == @symbol(KEY_WOW64_32KEY)) {
+ _flags = KEY_WOW64_32KEY;
+ } else {
+ errorNumber = @symbol(badArgument2);
+ goto out;
+ }
}
if (__isExternalAddressLike(__INST(handle))
&& __isUnicode16String(subKeyStringZ)) {
- myKey = (HKEY)__externalAddressVal(__INST(handle));
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
#ifdef __BORLANDC__
- _retVal = RegDeleteKeyW(myKey, __unicode16StringVal(subKeyStringZ));
-#else
- _retVal = RegDeleteKeyExW(myKey,
- __unicode16StringVal(subKeyStringZ),
- _flags,
- 0); // reserved
-#endif
- if (_retVal == ERROR_SUCCESS) {
- RETURN (true);
- }
- if ((_retVal != ERROR_PATH_NOT_FOUND)
- && (_retVal != ERROR_FILE_NOT_FOUND)) {
- errorNumber = __MKSMALLINT(_retVal);
- }
+ _retVal = RegDeleteKeyW(myKey, __unicode16StringVal(subKeyStringZ));
+#else
+ _retVal = RegDeleteKeyExW(myKey,
+ __unicode16StringVal(subKeyStringZ),
+ _flags,
+ 0); // reserved
+#endif
+ if (_retVal == ERROR_SUCCESS) {
+ RETURN (true);
+ }
+ if ((_retVal != ERROR_PATH_NOT_FOUND)
+ && (_retVal != ERROR_FILE_NOT_FOUND)) {
+ errorNumber = __MKSMALLINT(_retVal);
+ }
}
out:;
%}.
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
].
^ false
@@ -15857,24 +15870,24 @@
int _retVal;
if (__isExternalAddressLike(__INST(handle)) && __isStringLike(hostName)) {
- myKey = (HKEY)__externalAddressVal(__INST(handle));
- if ((_retVal = RegConnectRegistryA(__stringVal(hostName), myKey, &remoteKey)) == ERROR_SUCCESS) {
- remoteHandle = __MKEXTERNALADDRESS(remoteKey);
- } else {
- if ((_retVal != ERROR_PATH_NOT_FOUND)
- && (_retVal != ERROR_FILE_NOT_FOUND)) {
- errorNumber = __MKSMALLINT(_retVal);
- }
- }
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+ if ((_retVal = RegConnectRegistryA(__stringVal(hostName), myKey, &remoteKey)) == ERROR_SUCCESS) {
+ remoteHandle = __MKEXTERNALADDRESS(remoteKey);
+ } else {
+ if ((_retVal != ERROR_PATH_NOT_FOUND)
+ && (_retVal != ERROR_FILE_NOT_FOUND)) {
+ errorNumber = __MKSMALLINT(_retVal);
+ }
+ }
}
%}.
remoteHandle notNil ifTrue:[
- newEntry := self class basicNew setHandle:remoteHandle path:path.
- newEntry registerForFinalization.
- ^ newEntry.
+ newEntry := self class basicNew setHandle:remoteHandle path:path.
+ newEntry registerForFinalization.
+ ^ newEntry.
].
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
].
^ nil
@@ -15921,30 +15934,30 @@
if (__isExternalAddressLike(__INST(handle))
&& __isSmallInteger(subKeyIndex)) {
- myKey = (HKEY)__externalAddressVal(__INST(handle));
- if ((_retVal = RegEnumKeyExA(myKey, __intVal(subKeyIndex),
- nameBuffer, &nameSize,
- NULL,
- classNameBuffer, &classNameSize,
- &modificationTime)) == ERROR_SUCCESS) {
- nameBuffer[nameSize] = '\0';
- classNameBuffer[classNameSize] = '\0';
- subKeyName = __MKSTRING(nameBuffer);
- subKeyClassName = __MKSTRING(classNameBuffer);
- } else {
- if ((_retVal != ERROR_PATH_NOT_FOUND)
- && (_retVal != ERROR_FILE_NOT_FOUND)
- && (_retVal != ERROR_NO_MORE_ITEMS)) {
- errorNumber = __MKSMALLINT(_retVal);
- }
- }
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+ if ((_retVal = RegEnumKeyExA(myKey, __intVal(subKeyIndex),
+ nameBuffer, &nameSize,
+ NULL,
+ classNameBuffer, &classNameSize,
+ &modificationTime)) == ERROR_SUCCESS) {
+ nameBuffer[nameSize] = '\0';
+ classNameBuffer[classNameSize] = '\0';
+ subKeyName = __MKSTRING(nameBuffer);
+ subKeyClassName = __MKSTRING(classNameBuffer);
+ } else {
+ if ((_retVal != ERROR_PATH_NOT_FOUND)
+ && (_retVal != ERROR_FILE_NOT_FOUND)
+ && (_retVal != ERROR_NO_MORE_ITEMS)) {
+ errorNumber = __MKSMALLINT(_retVal);
+ }
+ }
}
%}.
subKeyName notNil ifTrue:[
- ^ self subKeyNamed:subKeyName.
+ ^ self subKeyNamed:subKeyName.
].
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
].
^ nil
@@ -15973,30 +15986,30 @@
if (__isExternalAddressLike(__INST(handle))
&& __isSmallInteger(subKeyIndex)) {
- myKey = (HKEY)__externalAddressVal(__INST(handle));
- if ((_retVal = RegEnumKeyExA(myKey, __intVal(subKeyIndex),
- nameBuffer, &nameSize,
- NULL,
- classNameBuffer, &classNameSize,
- &modificationTime)) == ERROR_SUCCESS) {
- nameBuffer[nameSize] = '\0';
- classNameBuffer[classNameSize] = '\0';
- subKeyName = __MKSTRING(nameBuffer);
- subKeyClassName = __MKSTRING(classNameBuffer);
- } else {
- if ((_retVal != ERROR_PATH_NOT_FOUND)
- && (_retVal != ERROR_FILE_NOT_FOUND)
- && (_retVal != ERROR_NO_MORE_ITEMS)) {
- errorNumber = __MKSMALLINT(_retVal);
- }
- }
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+ if ((_retVal = RegEnumKeyExA(myKey, __intVal(subKeyIndex),
+ nameBuffer, &nameSize,
+ NULL,
+ classNameBuffer, &classNameSize,
+ &modificationTime)) == ERROR_SUCCESS) {
+ nameBuffer[nameSize] = '\0';
+ classNameBuffer[classNameSize] = '\0';
+ subKeyName = __MKSTRING(nameBuffer);
+ subKeyClassName = __MKSTRING(classNameBuffer);
+ } else {
+ if ((_retVal != ERROR_PATH_NOT_FOUND)
+ && (_retVal != ERROR_FILE_NOT_FOUND)
+ && (_retVal != ERROR_NO_MORE_ITEMS)) {
+ errorNumber = __MKSMALLINT(_retVal);
+ }
+ }
}
%}.
subKeyName notNil ifTrue:[
- ^ {subKeyName . subKeyClassName}.
+ ^ {subKeyName . subKeyClassName}.
].
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
].
^ nil
@@ -16034,9 +16047,9 @@
"return a new registry entry below mySelf with the given subKey.
Return nil if no such key exists.
flags may be one of:
- #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
- #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
- or nil, to access the key (32/64) for the current application"
+ #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
+ #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
+ or nil, to access the key (32/64) for the current application"
^ self subKeyNamed:subKeyString flags:flags createIfAbsent:false
@@ -16047,9 +16060,9 @@
If no such key exists and createIfAbsent is true, the key is created.
Otherwise, nil is returned.
flags may be one of:
- #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
- #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
- or nil, to access the key (32/64) for the current application"
+ #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
+ #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
+ or nil, to access the key (32/64) for the current application"
|subKeyStringZ newEntry subHandle errorNumber disposition|
@@ -16068,72 +16081,72 @@
int _disposition = 0;
if (flags != nil) {
- if (flags == @symbol(KEY_WOW64_64KEY)) {
- _flags = KEY_WOW64_64KEY;
- } else if (flags == @symbol(KEY_WOW64_32KEY)) {
- _flags = KEY_WOW64_32KEY;
- } else {
- errorNumber = @symbol(badArgument2);
- goto out;
- }
+ if (flags == @symbol(KEY_WOW64_64KEY)) {
+ _flags = KEY_WOW64_64KEY;
+ } else if (flags == @symbol(KEY_WOW64_32KEY)) {
+ _flags = KEY_WOW64_32KEY;
+ } else {
+ errorNumber = @symbol(badArgument2);
+ goto out;
+ }
}
if (__isExternalAddressLike(__INST(handle))
- && __isUnicode16String(subKeyStringZ)) {
- myKey = (HKEY)__externalAddressVal(__INST(handle));
- if (createIfAbsent == true) {
- _retVal = RegCreateKeyExW(myKey,
- __unicode16StringVal(subKeyStringZ),
- 0, // reserved
- NULL, // class
- 0, // options
- KEY_ALL_ACCESS|_flags, // rights
- NULL, // securityAttributes - handle cannot be inherited
- &subKey,
- &_disposition); // disposition (created vs. opened)
- disposition = _disposition == REG_CREATED_NEW_KEY ? true : false;
- } else {
- _retVal = RegOpenKeyExW(
- myKey,
- __unicode16StringVal(subKeyStringZ),
- 0,
- KEY_ALL_ACCESS|_flags,
- &subKey);
-
- if (!(_retVal == 0)) {
- // try again with less permission
- _retVal = RegOpenKeyExW(
- myKey,
- __unicode16StringVal(subKeyStringZ),
- 0,
- KEY_READ |_flags,
- &subKey);
- }
-
- disposition = false;
- }
- if (_retVal == ERROR_SUCCESS) {
- subHandle = __MKEXTERNALADDRESS(subKey);
- } else {
- if ((_retVal != ERROR_PATH_NOT_FOUND)
- && (_retVal != ERROR_FILE_NOT_FOUND)) {
- errorNumber = __MKSMALLINT(_retVal);
- }
- }
+ && __isUnicode16String(subKeyStringZ)) {
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+ if (createIfAbsent == true) {
+ _retVal = RegCreateKeyExW(myKey,
+ __unicode16StringVal(subKeyStringZ),
+ 0, // reserved
+ NULL, // class
+ 0, // options
+ KEY_ALL_ACCESS|_flags, // rights
+ NULL, // securityAttributes - handle cannot be inherited
+ &subKey,
+ &_disposition); // disposition (created vs. opened)
+ disposition = _disposition == REG_CREATED_NEW_KEY ? true : false;
+ } else {
+ _retVal = RegOpenKeyExW(
+ myKey,
+ __unicode16StringVal(subKeyStringZ),
+ 0,
+ KEY_ALL_ACCESS|_flags,
+ &subKey);
+
+ if (!(_retVal == 0)) {
+ // try again with less permission
+ _retVal = RegOpenKeyExW(
+ myKey,
+ __unicode16StringVal(subKeyStringZ),
+ 0,
+ KEY_READ |_flags,
+ &subKey);
+ }
+
+ disposition = false;
+ }
+ if (_retVal == ERROR_SUCCESS) {
+ subHandle = __MKEXTERNALADDRESS(subKey);
+ } else {
+ if ((_retVal != ERROR_PATH_NOT_FOUND)
+ && (_retVal != ERROR_FILE_NOT_FOUND)) {
+ errorNumber = __MKSMALLINT(_retVal);
+ }
+ }
}
out:;
%}.
subHandle notNil ifTrue:[
- newEntry := self class basicNew
- setHandle:subHandle
- path:((path ? '?') , self class separator asString , subKeyString)
- isNew:disposition.
-
- newEntry registerForFinalization.
- ^ newEntry.
+ newEntry := self class basicNew
+ setHandle:subHandle
+ path:((path ? '?') , self class separator asString , subKeyString)
+ isNew:disposition.
+
+ newEntry registerForFinalization.
+ ^ newEntry.
].
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportProceedableError.
+ (OperatingSystem errorHolderForNumber:errorNumber) reportProceedableError.
].
^ nil
@@ -16163,11 +16176,11 @@
defaultValue:datum
"store a value; the value type depends upon the stored value:
- ByteArray -> REG_BINARY
- String -> REG_SZ
- Array of string -> REG_MULTI_SZ
- Integer -> REG_DWORD
- nil -> REG_NONE
+ ByteArray -> REG_BINARY
+ String -> REG_SZ
+ Array of string -> REG_MULTI_SZ
+ Integer -> REG_DWORD
+ nil -> REG_NONE
"
^ self valueNamed:'' put:datum
@@ -16189,18 +16202,18 @@
if (__isExternalAddressLike(__INST(handle))
&& __isStringLike(aValueName)) {
- myKey = (HKEY)__externalAddressVal(__INST(handle));
- if ((_retVal = RegDeleteValueA(myKey, __stringVal(aValueName))) == ERROR_SUCCESS) {
- RETURN (true);
- }
- if ((_retVal != ERROR_PATH_NOT_FOUND)
- && (_retVal != ERROR_FILE_NOT_FOUND)) {
- errorNumber = __MKSMALLINT(_retVal);
- }
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+ if ((_retVal = RegDeleteValueA(myKey, __stringVal(aValueName))) == ERROR_SUCCESS) {
+ RETURN (true);
+ }
+ if ((_retVal != ERROR_PATH_NOT_FOUND)
+ && (_retVal != ERROR_FILE_NOT_FOUND)) {
+ errorNumber = __MKSMALLINT(_retVal);
+ }
}
%}.
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
].
^ false
!
@@ -16220,25 +16233,25 @@
if (__isExternalAddressLike(__INST(handle))
&& __isSmallInteger(valueIndex)) {
- myKey = (HKEY)__externalAddressVal(__INST(handle));
- if ((_retVal = RegEnumValueA(myKey, __intVal(valueIndex),
- nameBuffer, &nameSize,
- NULL,
- &valueType,
- NULL, NULL)) == ERROR_SUCCESS) {
- nameBuffer[nameSize] = '\0';
- valueName = __MKSTRING(nameBuffer);
- } else {
- if ((_retVal != ERROR_PATH_NOT_FOUND)
- && (_retVal != ERROR_FILE_NOT_FOUND)
- && (_retVal != ERROR_NO_MORE_ITEMS)) {
- errorNumber = __MKSMALLINT(_retVal);
- }
- }
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+ if ((_retVal = RegEnumValueA(myKey, __intVal(valueIndex),
+ nameBuffer, &nameSize,
+ NULL,
+ &valueType,
+ NULL, NULL)) == ERROR_SUCCESS) {
+ nameBuffer[nameSize] = '\0';
+ valueName = __MKSTRING(nameBuffer);
+ } else {
+ if ((_retVal != ERROR_PATH_NOT_FOUND)
+ && (_retVal != ERROR_FILE_NOT_FOUND)
+ && (_retVal != ERROR_NO_MORE_ITEMS)) {
+ errorNumber = __MKSMALLINT(_retVal);
+ }
+ }
}
%}.
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
].
^ valueName
@@ -16252,11 +16265,11 @@
valueNamed:aValueName
"retrieve a value; the returned object depends upon the type:
- REG_BINARY -> ByteArray
- REG_SZ -> String
- REG_MULTI_SZ -> Array of strings
- REG_DWORD -> Integer
- REG_NONE -> nil
+ REG_BINARY -> ByteArray
+ REG_SZ -> String
+ REG_MULTI_SZ -> Array of strings
+ REG_DWORD -> Integer
+ REG_NONE -> nil
"
|stringArray retVal errorNumber|
@@ -16265,9 +16278,9 @@
HKEY myKey;
DWORD valueType;
union {
- DWORD dWord;
- unsigned char dWordBytes[4];
- unsigned char smallDataBuffer[1024*16];
+ DWORD dWord;
+ unsigned char dWordBytes[4];
+ unsigned char smallDataBuffer[1024*16];
} quickData;
int val;
DWORD dataSize = sizeof(quickData);
@@ -16283,164 +16296,164 @@
if (__isExternalAddressLike(__INST(handle))
&& __isStringLike(aValueName)) {
- int ret;
-
- myKey = (HKEY)__externalAddressVal(__INST(handle));
-
- /*
- * try to get it with one call ...
- */
- ret = RegQueryValueExA(myKey, __stringVal(aValueName),
- NULL,
- &valueType,
- (char *)&quickData,
- &dataSize);
+ int ret;
+
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+
+ /*
+ * try to get it with one call ...
+ */
+ ret = RegQueryValueExA(myKey, __stringVal(aValueName),
+ NULL,
+ &valueType,
+ (char *)&quickData,
+ &dataSize);
#if 0
- console_printf("get \"%s\": dataSize=%d ret=%d\n", __stringVal(aValueName), dataSize, ret);
-#endif
- while (ret == ERROR_MORE_DATA) {
+ console_printf("get \"%s\": dataSize=%d ret=%d\n", __stringVal(aValueName), dataSize, ret);
+#endif
+ while (ret == ERROR_MORE_DATA) {
#if 0
- console_printf("ERROR_MORE_DATA dataSize=%d valueType=%d\n", dataSize, valueType);
-#endif
- /*
- * nope - need another one ...
- */
- if (myKey = HKEY_PERFORMANCE_DATA) {
- dataSize = dataSize * 2;
- }
- switch (valueType) {
- case REG_BINARY:
- case REG_MULTI_SZ:
- dataBuffer = malloc(dataSize);;
- break;
- case REG_SZ:
- dataBuffer = malloc(dataSize);
- break;
- default:
- console_printf("RegistryEntry [warning]: unhandled valueType: %d\n", valueType);
- break;
- }
- if (dataBuffer) {
- ret = RegQueryValueEx(myKey, __stringVal(aValueName),
- NULL,
- &valueType,
- dataBuffer,
- &dataSize);
- } else {
- break;
- }
- if (myKey != HKEY_PERFORMANCE_DATA) {
- if (ret != ERROR_SUCCESS) break;
- }
- }
-
- if (ret == ERROR_SUCCESS) {
+ console_printf("ERROR_MORE_DATA dataSize=%d valueType=%d\n", dataSize, valueType);
+#endif
+ /*
+ * nope - need another one ...
+ */
+ if (myKey = HKEY_PERFORMANCE_DATA) {
+ dataSize = dataSize * 2;
+ }
+ switch (valueType) {
+ case REG_BINARY:
+ case REG_MULTI_SZ:
+ dataBuffer = malloc(dataSize);;
+ break;
+ case REG_SZ:
+ dataBuffer = malloc(dataSize);
+ break;
+ default:
+ console_printf("RegistryEntry [warning]: unhandled valueType: %d\n", valueType);
+ break;
+ }
+ if (dataBuffer) {
+ ret = RegQueryValueEx(myKey, __stringVal(aValueName),
+ NULL,
+ &valueType,
+ dataBuffer,
+ &dataSize);
+ } else {
+ break;
+ }
+ if (myKey != HKEY_PERFORMANCE_DATA) {
+ if (ret != ERROR_SUCCESS) break;
+ }
+ }
+
+ if (ret == ERROR_SUCCESS) {
#if 0
- console_printf("ERROR_SUCCESS dataSize=%d valueType=%d\n", dataSize, valueType);
-#endif
- switch (valueType) {
- case REG_NONE:
- /* RETURN (@symbol(none)); */
- retVal = nil;
- break;
-
- case REG_BINARY:
- retVal = __MKBYTEARRAY(dataBuffer ? dataBuffer : quickData.smallDataBuffer, dataSize);
- break;
-
- case REG_SZ:
- case REG_EXPAND_SZ:
+ console_printf("ERROR_SUCCESS dataSize=%d valueType=%d\n", dataSize, valueType);
+#endif
+ switch (valueType) {
+ case REG_NONE:
+ /* RETURN (@symbol(none)); */
+ retVal = nil;
+ break;
+
+ case REG_BINARY:
+ retVal = __MKBYTEARRAY(dataBuffer ? dataBuffer : quickData.smallDataBuffer, dataSize);
+ break;
+
+ case REG_SZ:
+ case REG_EXPAND_SZ:
#ifdef USE_UNICODE
- retVal = __MKU16STRING(dataBuffer ? dataBuffer : quickData.smallDataBuffer);
-#else
- retVal = __MKSTRING(dataBuffer ? dataBuffer : quickData.smallDataBuffer);
-#endif
- break;
+ retVal = __MKU16STRING(dataBuffer ? dataBuffer : quickData.smallDataBuffer);
+#else
+ retVal = __MKSTRING(dataBuffer ? dataBuffer : quickData.smallDataBuffer);
+#endif
+ break;
#if 0
- case REG_DWORD:
- /* int in native format */
- retVal = __MKUINT(quickData.dWord);
- break;
-#endif
- case REG_DWORD_LITTLE_ENDIAN:
- val = quickData.dWordBytes[3];
- val = (val << 8) | quickData.dWordBytes[2];
- val = (val << 8) | quickData.dWordBytes[1];
- val = (val << 8) | quickData.dWordBytes[0];
- retVal = __MKUINT(val);
- break;
-
- case REG_DWORD_BIG_ENDIAN:
- val = quickData.dWordBytes[0];
- val = (val << 8) | quickData.dWordBytes[1];
- val = (val << 8) | quickData.dWordBytes[2];
- val = (val << 8) | quickData.dWordBytes[3];
- retVal = __MKUINT(val);
- break;
-
- case REG_MULTI_SZ:
- {
- CHAR *cp, *cp0;
- int ns, i;
-
- cp0 = dataBuffer ? dataBuffer : quickData.smallDataBuffer;
+ case REG_DWORD:
+ /* int in native format */
+ retVal = __MKUINT(quickData.dWord);
+ break;
+#endif
+ case REG_DWORD_LITTLE_ENDIAN:
+ val = quickData.dWordBytes[3];
+ val = (val << 8) | quickData.dWordBytes[2];
+ val = (val << 8) | quickData.dWordBytes[1];
+ val = (val << 8) | quickData.dWordBytes[0];
+ retVal = __MKUINT(val);
+ break;
+
+ case REG_DWORD_BIG_ENDIAN:
+ val = quickData.dWordBytes[0];
+ val = (val << 8) | quickData.dWordBytes[1];
+ val = (val << 8) | quickData.dWordBytes[2];
+ val = (val << 8) | quickData.dWordBytes[3];
+ retVal = __MKUINT(val);
+ break;
+
+ case REG_MULTI_SZ:
+ {
+ CHAR *cp, *cp0;
+ int ns, i;
+
+ cp0 = dataBuffer ? dataBuffer : quickData.smallDataBuffer;
#if 0
- console_printf("**************\n");
- for (i=0;i<50;i++) {
- console_printf("%x ", cp0[i]);
- }
- console_printf("\n");
- for (i=0;i<50;i++) {
- if (cp0[i] == 0)
- console_printf("\n");
- else
- console_printf("%c", cp0[i]);
- }
- console_printf("\n");
- console_printf("**************\n");
-#endif
- cp = cp0;
- ns = 0;
- while (*cp) {
- while (*cp++) ;;
- ns++;
- }
- stringArray = __ARRAY_NEW_INT(ns);
-
- i = 0;
- while (*cp0) {
- OBJ s;
- CHAR *cp;
-
- cp = cp0;
- while (*cp++) ;;
+ console_printf("**************\n");
+ for (i=0;i<50;i++) {
+ console_printf("%x ", cp0[i]);
+ }
+ console_printf("\n");
+ for (i=0;i<50;i++) {
+ if (cp0[i] == 0)
+ console_printf("\n");
+ else
+ console_printf("%c", cp0[i]);
+ }
+ console_printf("\n");
+ console_printf("**************\n");
+#endif
+ cp = cp0;
+ ns = 0;
+ while (*cp) {
+ while (*cp++) ;;
+ ns++;
+ }
+ stringArray = __ARRAY_NEW_INT(ns);
+
+ i = 0;
+ while (*cp0) {
+ OBJ s;
+ CHAR *cp;
+
+ cp = cp0;
+ while (*cp++) ;;
#ifdef USE_UNICODE
- s = __MKU16STRING(cp0); __ArrayInstPtr(stringArray)->a_element[i] = s; __STORE(stringArray, s);
-#else
- s = __MKSTRING(cp0); __ArrayInstPtr(stringArray)->a_element[i] = s; __STORE(stringArray, s);
-#endif
- cp0 = cp;
- i++;
- }
- retVal = stringArray;
- break;
- }
- default:
- console_printf("RegistryEntry [warning]: unhandled valueType: %d\n", valueType);
- break;
- }
- } else {
- if ((ret != ERROR_PATH_NOT_FOUND)
- && (ret != ERROR_FILE_NOT_FOUND)) {
- errorNumber = __MKSMALLINT(ret);
- }
- }
+ s = __MKU16STRING(cp0); __ArrayInstPtr(stringArray)->a_element[i] = s; __STORE(stringArray, s);
+#else
+ s = __MKSTRING(cp0); __ArrayInstPtr(stringArray)->a_element[i] = s; __STORE(stringArray, s);
+#endif
+ cp0 = cp;
+ i++;
+ }
+ retVal = stringArray;
+ break;
+ }
+ default:
+ console_printf("RegistryEntry [warning]: unhandled valueType: %d\n", valueType);
+ break;
+ }
+ } else {
+ if ((ret != ERROR_PATH_NOT_FOUND)
+ && (ret != ERROR_FILE_NOT_FOUND)) {
+ errorNumber = __MKSMALLINT(ret);
+ }
+ }
}
if (dataBuffer) free(dataBuffer);
%}.
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
].
^ retVal
@@ -16455,11 +16468,11 @@
valueNamed:aValueName put:datum
"store a value; the value type depends upon the stored value:
- ByteArray -> REG_BINARY
- String -> REG_SZ
- Array of string -> REG_MULTI_SZ
- Integer -> REG_DWORD
- nil -> REG_NONE
+ ByteArray -> REG_BINARY
+ String -> REG_SZ
+ Array of string -> REG_MULTI_SZ
+ Integer -> REG_DWORD
+ nil -> REG_NONE
"
|data stringArray errorNumber|
@@ -16473,99 +16486,99 @@
if (__isExternalAddressLike(__INST(handle))
&& __isStringLike(aValueName)) {
- int ret;
- OBJ cls;
-
- myKey = (HKEY)__externalAddressVal(__INST(handle));
-
- if (datum == nil) {
- valueType = REG_NONE;
- dataSize = 0;
- } else if (__isSmallInteger(datum)) {
- valueType = REG_DWORD;
- val = __intVal(datum);
- dataPointer = (unsigned char *)(&val);
- dataSize = sizeof(val);
- } else if (__isStringLike(datum)) {
- valueType = REG_SZ;
- dataPointer = __stringVal(datum);
- dataSize = __stringSize(datum) + 1;
- } else if (__Class(datum) == ByteArray) {
- valueType = REG_BINARY;
- dataPointer = __ByteArrayInstPtr(datum)->ba_element;
- dataSize = __byteArraySize(datum);
- } else if (__Class(datum) == LargeInteger) {
- valueType = REG_DWORD;
- val = __longIntVal(datum);
- if (val) {
- dataPointer = (unsigned char *)(&val);
- dataSize = sizeof(val);
- } else {
- datumOk = 0;
- }
- } else if (__Class(datum) == Array) {
- int i = 0, ns = 0, totalSize = 0;
-
- valueType = REG_MULTI_SZ;
-
- /*
- * must allocate a local buffer
- * find size ...
- */
- for (i=0; i<__arraySize(datum); i++) {
- OBJ s = __ArrayInstPtr(datum)->a_element[i];
-
- if (__isStringLike(s)) {
- totalSize += __stringSize(s) + 1;
- } else {
- datumOk = 0;
- break;
- }
- ns++;
- }
- if (datumOk) {
- char *cp;
-
- /*
- * allocate and fill...
- */
- totalSize ++;
- dataPointer = (char *)(malloc(totalSize));
- mustFreeData = 1;
- cp = dataPointer;
- for (i=0; i<__arraySize(datum); i++) {
- OBJ s = __ArrayInstPtr(datum)->a_element[i];
-
- strcpy(cp, __stringVal(s));
- cp += __stringSize(s);
- *cp++ = '\0';
- }
- *cp++ = '\0';
- dataSize = totalSize;
- }
- } else {
- datumOk = 0;
- }
-
- if (datumOk) {
- ret = RegSetValueExA(myKey, __stringVal(aValueName),
- 0, valueType,
- dataPointer, dataSize);
- if (mustFreeData) {
- free(dataPointer);
- }
- if (ret == ERROR_SUCCESS) {
- RETURN (true);
- }
- if ((ret != ERROR_PATH_NOT_FOUND)
- && (ret != ERROR_FILE_NOT_FOUND)) {
- errorNumber = __MKSMALLINT(ret);
- }
- }
+ int ret;
+ OBJ cls;
+
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+
+ if (datum == nil) {
+ valueType = REG_NONE;
+ dataSize = 0;
+ } else if (__isSmallInteger(datum)) {
+ valueType = REG_DWORD;
+ val = __intVal(datum);
+ dataPointer = (unsigned char *)(&val);
+ dataSize = sizeof(val);
+ } else if (__isStringLike(datum)) {
+ valueType = REG_SZ;
+ dataPointer = __stringVal(datum);
+ dataSize = __stringSize(datum) + 1;
+ } else if (__Class(datum) == ByteArray) {
+ valueType = REG_BINARY;
+ dataPointer = __ByteArrayInstPtr(datum)->ba_element;
+ dataSize = __byteArraySize(datum);
+ } else if (__Class(datum) == LargeInteger) {
+ valueType = REG_DWORD;
+ val = __longIntVal(datum);
+ if (val) {
+ dataPointer = (unsigned char *)(&val);
+ dataSize = sizeof(val);
+ } else {
+ datumOk = 0;
+ }
+ } else if (__Class(datum) == Array) {
+ int i = 0, ns = 0, totalSize = 0;
+
+ valueType = REG_MULTI_SZ;
+
+ /*
+ * must allocate a local buffer
+ * find size ...
+ */
+ for (i=0; i<__arraySize(datum); i++) {
+ OBJ s = __ArrayInstPtr(datum)->a_element[i];
+
+ if (__isStringLike(s)) {
+ totalSize += __stringSize(s) + 1;
+ } else {
+ datumOk = 0;
+ break;
+ }
+ ns++;
+ }
+ if (datumOk) {
+ char *cp;
+
+ /*
+ * allocate and fill...
+ */
+ totalSize ++;
+ dataPointer = (char *)(malloc(totalSize));
+ mustFreeData = 1;
+ cp = dataPointer;
+ for (i=0; i<__arraySize(datum); i++) {
+ OBJ s = __ArrayInstPtr(datum)->a_element[i];
+
+ strcpy(cp, __stringVal(s));
+ cp += __stringSize(s);
+ *cp++ = '\0';
+ }
+ *cp++ = '\0';
+ dataSize = totalSize;
+ }
+ } else {
+ datumOk = 0;
+ }
+
+ if (datumOk) {
+ ret = RegSetValueExA(myKey, __stringVal(aValueName),
+ 0, valueType,
+ dataPointer, dataSize);
+ if (mustFreeData) {
+ free(dataPointer);
+ }
+ if (ret == ERROR_SUCCESS) {
+ RETURN (true);
+ }
+ if ((ret != ERROR_PATH_NOT_FOUND)
+ && (ret != ERROR_FILE_NOT_FOUND)) {
+ errorNumber = __MKSMALLINT(ret);
+ }
+ }
}
%}.
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
].
^ false
@@ -16586,14 +16599,14 @@
idx := 0.
[true] whileTrue:[
- subEntry := self subKeyAtIndex:idx.
- subEntry isNil ifTrue:[
- ^self
- ].
- aBlock value:subEntry.
- subEntry allSubKeysDo:aBlock.
- subEntry close.
- idx := idx + 1.
+ subEntry := self subKeyAtIndex:idx.
+ subEntry isNil ifTrue:[
+ ^self
+ ].
+ aBlock value:subEntry.
+ subEntry allSubKeysDo:aBlock.
+ subEntry close.
+ idx := idx + 1.
]
"
@@ -16601,7 +16614,7 @@
top := self key:'HKEY_LOCAL_MACHINE'.
top allSubKeysDo:[:subEntry |
- Transcript showCR:subEntry path
+ Transcript showCR:subEntry path
]
"
!
@@ -16613,12 +16626,12 @@
idx := 0.
[true] whileTrue:[
- nameAndClassNameOrNil := self subKeyNameAndClassAtIndex:idx.
- nameAndClassNameOrNil isNil ifTrue:[
- ^self
- ].
- aTwoArgBlock value:nameAndClassNameOrNil first value:nameAndClassNameOrNil second.
- idx := idx + 1.
+ nameAndClassNameOrNil := self subKeyNameAndClassAtIndex:idx.
+ nameAndClassNameOrNil isNil ifTrue:[
+ ^self
+ ].
+ aTwoArgBlock value:nameAndClassNameOrNil first value:nameAndClassNameOrNil second.
+ idx := idx + 1.
]
"
@@ -16626,7 +16639,7 @@
top := self key:'HKEY_LOCAL_MACHINE'.
top subKeyNamesAndClassesDo:[:nm :cls |
- Transcript showCR:('name: ',nm,' class: ',cls)
+ Transcript showCR:('name: ',nm,' class: ',cls)
]
"
!
@@ -16658,13 +16671,13 @@
idx := 0.
[true] whileTrue:[
- subEntry := self subKeyAtIndex:idx.
- subEntry isNil ifTrue:[
- ^self
- ].
- aBlock value:subEntry.
- subEntry close.
- idx := idx + 1.
+ subEntry := self subKeyAtIndex:idx.
+ subEntry isNil ifTrue:[
+ ^self
+ ].
+ aBlock value:subEntry.
+ subEntry close.
+ idx := idx + 1.
]
"
@@ -16672,7 +16685,7 @@
top := self key:'HKEY_LOCAL_MACHINE'.
top subKeysDo:[:subEntry |
- Transcript showCR:subEntry path
+ Transcript showCR:subEntry path
]
"
"
@@ -16680,11 +16693,11 @@
top := self key:'HKEY_LOCAL_MACHINE'.
OSErrorHolder noPermissionsSignal handle:[:ex |
- ex proceed
+ ex proceed
] do:[
- top subKeysDo:[:subEntry |
- Transcript showCR:subEntry path
- ]
+ top subKeysDo:[:subEntry |
+ Transcript showCR:subEntry path
+ ]
]
"
!
@@ -16693,7 +16706,7 @@
"evaluate aBlock for all value names"
^ Array streamContents:[:s |
- self valueNamesDo:[:nm | s nextPut:nm]
+ self valueNamesDo:[:nm | s nextPut:nm]
].
"Created: / 18-01-2011 / 20:24:52 / cg"
@@ -16703,7 +16716,7 @@
"evaluate aBlock for all value names"
self valueNamesDo:[:nm |
- aBlock value:nm value:(self valueNamed:nm)
+ aBlock value:nm value:(self valueNamed:nm)
]
"
@@ -16711,7 +16724,7 @@
key := self key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
key valueNamesAndValuesDo:[:nm :val |
- Transcript showCR:(nm , ' -> ' , val storeString).
+ Transcript showCR:(nm , ' -> ' , val storeString).
]
"
!
@@ -16723,12 +16736,12 @@
idx := 0.
[true] whileTrue:[
- valueName := self valueNameAtIndex:idx.
- valueName isNil ifTrue:[
- ^self
- ].
- aBlock value:valueName.
- idx := idx + 1.
+ valueName := self valueNameAtIndex:idx.
+ valueName isNil ifTrue:[
+ ^self
+ ].
+ aBlock value:valueName.
+ idx := idx + 1.
]
! !
@@ -16748,9 +16761,9 @@
HKEY myKey;
if (__isExternalAddressLike(__INST(handle))) {
- myKey = (HKEY)(__externalAddressVal(__INST(handle)));
- __INST(handle) = nil;
- RegCloseKey(myKey);
+ myKey = (HKEY)(__externalAddressVal(__INST(handle)));
+ __INST(handle) = nil;
+ RegCloseKey(myKey);
}
%}
!
@@ -16763,7 +16776,7 @@
"some entry has been collected - close it"
handle notNil ifTrue:[
- self closeKey.
+ self closeKey.
]
"Created: / 19.5.1999 / 22:39:52 / cg"
@@ -16774,10 +16787,10 @@
printOn:aStream
aStream
- nextPutAll:self className;
- nextPut:$(;
- nextPutAll:path;
- nextPut:$).
+ nextPutAll:self className;
+ nextPut:$(;
+ nextPutAll:path;
+ nextPut:$).
! !
!Win32OperatingSystem::RegistryEntry methodsFor:'private'!
@@ -16808,7 +16821,7 @@
key = (HKEY)__longIntVal(integerHandleValue);
if (! key) {
- RETURN (nil);
+ RETURN (nil);
}
t = __MKEXTERNALADDRESS(key); __INST(handle) = t; __STORE(self, t);
@@ -16900,90 +16913,90 @@
int ok;
if ((hFile == 0) || (hFile == INVALID_HANDLE_VALUE)) {
- errSym = @symbol(errorNotOpen);
- goto bad;
+ errSym = @symbol(errorNotOpen);
+ goto bad;
}
if (! __bothSmallInteger(count, firstIndex)) {
- errSym = @symbol(badArgument);
- goto bad;
+ errSym = @symbol(badArgument);
+ goto bad;
}
cntWanted = __smallIntegerVal(count);
if (cntWanted <= 0) {
- errSym = @symbol(badCount);
- goto bad;
+ errSym = @symbol(badCount);
+ goto bad;
}
offs = __smallIntegerVal(firstIndex) - 1;
if (offs < 0) {
- errSym = @symbol(badOffset);
- goto bad;
+ errSym = @symbol(badOffset);
+ goto bad;
}
bufferIsExternalBytes = __isExternalBytesLike(aByteBuffer);
if (! bufferIsExternalBytes) {
- if (__isByteArray(aByteBuffer)) {
- bufferSize = __byteArraySize(aByteBuffer);
- } else if (__isString(aByteBuffer)) { // not isStringLike here !
- bufferSize = __stringSize(aByteBuffer);
- } else {
- errSym = @symbol(badBuffer);
- goto bad;
- }
- if (bufferSize < (cntWanted + offs)) {
- errSym = @symbol(badBufferSize);
- goto bad;
- }
- if (cntWanted <= sizeof(miniBuffer)) {
- extPtr = miniBuffer;
- } else {
- extPtr = malloc(cntWanted);
- mustFreeBuffer = 1;
- }
+ if (__isByteArray(aByteBuffer)) {
+ bufferSize = __byteArraySize(aByteBuffer);
+ } else if (__isString(aByteBuffer)) { // not isStringLike here !
+ bufferSize = __stringSize(aByteBuffer);
+ } else {
+ errSym = @symbol(badBuffer);
+ goto bad;
+ }
+ if (bufferSize < (cntWanted + offs)) {
+ errSym = @symbol(badBufferSize);
+ goto bad;
+ }
+ if (cntWanted <= sizeof(miniBuffer)) {
+ extPtr = miniBuffer;
+ } else {
+ extPtr = malloc(cntWanted);
+ mustFreeBuffer = 1;
+ }
} else {
- OBJ sz;
-
- extPtr = (char *)(__externalBytesAddress(aByteBuffer));
- if (extPtr == NULL) goto bad;
- sz = __externalBytesSize(aByteBuffer);
- if (! __isSmallInteger(sz)) {
- errSym = @symbol(badBufferSize);
- goto bad;
- }
- bufferSize = __smallIntegerVal(sz);
- if (bufferSize < (cntWanted + offs)) {
- errSym = @symbol(badBufferSize);
- goto bad;
- }
- extPtr = extPtr + offs;
+ OBJ sz;
+
+ extPtr = (char *)(__externalBytesAddress(aByteBuffer));
+ if (extPtr == NULL) goto bad;
+ sz = __externalBytesSize(aByteBuffer);
+ if (! __isSmallInteger(sz)) {
+ errSym = @symbol(badBufferSize);
+ goto bad;
+ }
+ bufferSize = __smallIntegerVal(sz);
+ if (bufferSize < (cntWanted + offs)) {
+ errSym = @symbol(badBufferSize);
+ goto bad;
+ }
+ extPtr = extPtr + offs;
}
do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ok = (int)(STX_API_NOINT_CALL5( "ReadFile", ReadFile, hFile, extPtr, cntWanted, &cntRead, 0 /* lpOverlapped */));
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ok = (int)(STX_API_NOINT_CALL5( "ReadFile", ReadFile, hFile, extPtr, cntWanted, &cntRead, 0 /* lpOverlapped */));
} while(__threadErrno == EINTR);
if (ok == TRUE) {
- if (! bufferIsExternalBytes) {
- /* copy over */
- memcpy(__byteArrayVal(aByteBuffer)+offs, extPtr, cntRead);
- if (mustFreeBuffer) {
- free(extPtr);
- }
- }
- RETURN (__mkSmallInteger(cntRead));
+ if (! bufferIsExternalBytes) {
+ /* copy over */
+ memcpy(__byteArrayVal(aByteBuffer)+offs, extPtr, cntRead);
+ if (mustFreeBuffer) {
+ free(extPtr);
+ }
+ }
+ RETURN (__mkSmallInteger(cntRead));
}
errorNumber = __mkSmallInteger( __WIN32_ERR(GetLastError()) );
bad: ;
if (mustFreeBuffer) {
- free(extPtr);
+ free(extPtr);
}
%}.
errorNumber isNil ifTrue:[
- self error:'invalid argument(s): ', errSym.
+ self error:'invalid argument(s): ', errSym.
] ifFalse:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError
].
"
@@ -17007,48 +17020,48 @@
INT t;
if ((hFile == 0) || (hFile == INVALID_HANDLE_VALUE)) {
- errSym = @symbol(errorNotOpen);
- goto bad;
+ errSym = @symbol(errorNotOpen);
+ goto bad;
}
#if 0
if (ioctlsocket((SOCKET)hFile, FIONREAD, &res)==0) {
- /* its a socket */
- if (res > 0) {
- RETURN ( false );
- }
+ /* its a socket */
+ if (res > 0) {
+ RETURN ( false );
+ }
}
if (PeekNamedPipe(hFile, 0, 0, 0, &res, 0)) {
- /* its a namedPipe */
- if (res > 0) {
- RETURN ( false );
- }
+ /* its a namedPipe */
+ if (res > 0) {
+ RETURN ( false );
+ }
}
#endif
if (__isSmallInteger(millis)) {
- t = __intVal(millis);
+ t = __intVal(millis);
} else {
- t = INFINITE;
+ t = INFINITE;
}
do {
- __threadErrno = 0;
- res = WaitForSingleObject(hFile, t);
+ __threadErrno = 0;
+ res = WaitForSingleObject(hFile, t);
} while (__threadErrno == EINTR);
switch (res) {
- case WAIT_OBJECT_0:
- /* signalled */
- RETURN ( false );
-
- case WAIT_TIMEOUT:
- /* signalled */
- RETURN ( true );
-
- default:
- case WAIT_ABANDONED:
- errorNumber = __mkSmallInteger( __WIN32_ERR(GetLastError()) );
- goto bad;
+ case WAIT_OBJECT_0:
+ /* signalled */
+ RETURN ( false );
+
+ case WAIT_TIMEOUT:
+ /* signalled */
+ RETURN ( true );
+
+ default:
+ case WAIT_ABANDONED:
+ errorNumber = __mkSmallInteger( __WIN32_ERR(GetLastError()) );
+ goto bad;
}
bad: ;
@@ -17063,9 +17076,9 @@
seekTo:newPosition from:whence
"whence is one of:
- #begin
- #current
- #end
+ #begin
+ #current
+ #end
"
|errSym errorNumber|
@@ -17077,24 +17090,24 @@
__uint64__ pos64, newPos64;
if ((hFile == 0) || (hFile == INVALID_HANDLE_VALUE)) {
- errSym = @symbol(errorNotOpen);
- goto bad;
+ errSym = @symbol(errorNotOpen);
+ goto bad;
}
if (whence == @symbol(begin)) {
- moveHow = FILE_BEGIN;
+ moveHow = FILE_BEGIN;
} else if (whence == @symbol(current)) {
- moveHow = FILE_CURRENT;
+ moveHow = FILE_CURRENT;
} else if (whence == @symbol(end)) {
- moveHow = FILE_END;
+ moveHow = FILE_END;
} else {
- errSym = @symbol(badArgument2);
- goto bad;
+ errSym = @symbol(badArgument2);
+ goto bad;
}
if (__signedLong64IntVal(newPosition, &pos64) == 0) {
- errSym = @symbol(badArgument);
- goto bad;
+ errSym = @symbol(badArgument);
+ goto bad;
}
#if __POINTER_SIZE__ == 8
posLo = pos64 & 0xFFFFFFFF;
@@ -17105,18 +17118,18 @@
#endif
posLo = SetFilePointer(hFile, posLo, &posHi, moveHow);
if (posLo == 0xFFFFFFFF) {
- int lastError;
-
- /* can be either an error, or a valid low-word */
- lastError = GetLastError();
- if (lastError != NO_ERROR) {
- errorNumber = __mkSmallInteger( __WIN32_ERR(lastError) );
- goto bad;
- }
+ int lastError;
+
+ /* can be either an error, or a valid low-word */
+ lastError = GetLastError();
+ if (lastError != NO_ERROR) {
+ errorNumber = __mkSmallInteger( __WIN32_ERR(lastError) );
+ goto bad;
+ }
}
if (posHi == 0) {
- RETURN (__MKUINT( posLo ));
+ RETURN (__MKUINT( posLo ));
}
#if __POINTER_SIZE__ == 8
newPos64 = (__uint64__)posLo | ((__uint64__)posHi << 32);
@@ -17131,9 +17144,9 @@
%}.
errorNumber isNil ifTrue:[
- self error:'invalid argument(s): ', errSym.
+ self error:'invalid argument(s): ', errSym.
] ifFalse:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError
].
!
@@ -17154,84 +17167,84 @@
int ok;
if ((hFile == 0) || (hFile == INVALID_HANDLE_VALUE)) {
- errSym = @symbol(errorNotOpen);
- goto bad;
+ errSym = @symbol(errorNotOpen);
+ goto bad;
}
if (! __bothSmallInteger(count, firstIndex)) {
- errSym = @symbol(badArgument);
- goto bad;
+ errSym = @symbol(badArgument);
+ goto bad;
}
cntWanted = __smallIntegerVal(count);
if (cntWanted <= 0) {
- errSym = @symbol(badCount);
- goto bad;
+ errSym = @symbol(badCount);
+ goto bad;
}
offs = __smallIntegerVal(firstIndex) - 1;
if (offs < 0) {
- errSym = @symbol(badOffset);
- goto bad;
+ errSym = @symbol(badOffset);
+ goto bad;
}
bufferIsExternalBytes = __isExternalBytesLike(aByteBuffer);
if (! bufferIsExternalBytes) {
- if (__isByteArray(aByteBuffer)) {
- bufferSize = __byteArraySize(aByteBuffer);
- } else if (__isStringLike(aByteBuffer)) {
- bufferSize = __stringSize(aByteBuffer);
- } else {
- errSym = @symbol(badBuffer);
- goto bad;
- }
- if (bufferSize < (cntWanted + offs)) {
- errSym = @symbol(badBufferSize);
- goto bad;
- }
- if (cntWanted <= sizeof(miniBuffer)) {
- extPtr = miniBuffer;
- } else {
- extPtr = malloc(cntWanted);
- mustFreeBuffer = 1;
- }
- memcpy(extPtr, __byteArrayVal(aByteBuffer)+offs, cntWanted);
+ if (__isByteArray(aByteBuffer)) {
+ bufferSize = __byteArraySize(aByteBuffer);
+ } else if (__isStringLike(aByteBuffer)) {
+ bufferSize = __stringSize(aByteBuffer);
+ } else {
+ errSym = @symbol(badBuffer);
+ goto bad;
+ }
+ if (bufferSize < (cntWanted + offs)) {
+ errSym = @symbol(badBufferSize);
+ goto bad;
+ }
+ if (cntWanted <= sizeof(miniBuffer)) {
+ extPtr = miniBuffer;
+ } else {
+ extPtr = malloc(cntWanted);
+ mustFreeBuffer = 1;
+ }
+ memcpy(extPtr, __byteArrayVal(aByteBuffer)+offs, cntWanted);
} else {
- extPtr = (char *)(__externalBytesAddress(aByteBuffer));
- if (extPtr == NULL) goto bad;
- bufferSize = __externalBytesSize(aByteBuffer);
- if (! __isSmallInteger(bufferSize)) {
- errSym = @symbol(badBufferSize);
- goto bad;
- }
- bufferSize = __smallIntegerVal(bufferSize);
- if (bufferSize < (cntWanted + offs)) {
- errSym = @symbol(badBufferSize);
- goto bad;
- }
- extPtr = extPtr + offs;
+ extPtr = (char *)(__externalBytesAddress(aByteBuffer));
+ if (extPtr == NULL) goto bad;
+ bufferSize = __externalBytesSize(aByteBuffer);
+ if (! __isSmallInteger(bufferSize)) {
+ errSym = @symbol(badBufferSize);
+ goto bad;
+ }
+ bufferSize = __smallIntegerVal(bufferSize);
+ if (bufferSize < (cntWanted + offs)) {
+ errSym = @symbol(badBufferSize);
+ goto bad;
+ }
+ extPtr = extPtr + offs;
}
do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ok = (int)(STX_API_NOINT_CALL5( "WriteFile", WriteFile, hFile, extPtr, cntWanted, &cntWritten, 0 /* lpOverlapped */));
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ok = (int)(STX_API_NOINT_CALL5( "WriteFile", WriteFile, hFile, extPtr, cntWanted, &cntWritten, 0 /* lpOverlapped */));
} while(__threadErrno == EINTR);
if (ok == TRUE) {
- if (mustFreeBuffer) {
- free(extPtr);
- }
- RETURN (__mkSmallInteger(cntWritten));
+ if (mustFreeBuffer) {
+ free(extPtr);
+ }
+ RETURN (__mkSmallInteger(cntWritten));
}
errorNumber = __mkSmallInteger( __WIN32_ERR(GetLastError()) );
bad: ;
if (mustFreeBuffer) {
- free(extPtr);
+ free(extPtr);
}
%}.
errorNumber isNil ifTrue:[
- self error:'invalid argument(s): ', errSym.
+ self error:'invalid argument(s): ', errSym.
] ifFalse:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError
].
"
@@ -17290,8 +17303,8 @@
DisplayTypeMappingTable := Dictionary new.
symbTable keysAndValuesDo:[:aSYMB :anINT |
- DisplayTypeMappingTable at: aSYMB put: anINT.
- DisplayTypeMappingTable at: anINT put: aSYMB. "/ vice versa
+ DisplayTypeMappingTable at: aSYMB put: anINT.
+ DisplayTypeMappingTable at: anINT put: aSYMB. "/ vice versa
].
^ DisplayTypeMappingTable
!
@@ -17313,8 +17326,8 @@
ScopeMappingTable := Dictionary new.
symbTable keysAndValuesDo:[:aSYMB :anINT |
- ScopeMappingTable at: aSYMB put: anINT.
- ScopeMappingTable at: anINT put: aSYMB. "/ vice versa
+ ScopeMappingTable at: aSYMB put: anINT.
+ ScopeMappingTable at: anINT put: aSYMB. "/ vice versa
].
^ ScopeMappingTable
!
@@ -17336,8 +17349,8 @@
TypeMappingTable := Dictionary new.
symbTable keysAndValuesDo:[:aSYMB :anINT |
- TypeMappingTable at: aSYMB put: anINT.
- TypeMappingTable at: anINT put: aSYMB. "/ vice versa
+ TypeMappingTable at: aSYMB put: anINT.
+ TypeMappingTable at: anINT put: aSYMB. "/ vice versa
].
^ TypeMappingTable
!
@@ -17362,8 +17375,8 @@
UsageMappingTable := Dictionary new.
symbTable keysAndValuesDo:[:aSYMB :anINT |
- UsageMappingTable at: aSYMB put: anINT.
- UsageMappingTable at: anINT put: aSYMB. "/ vice versa
+ UsageMappingTable at: aSYMB put: anINT.
+ UsageMappingTable at: anINT put: aSYMB. "/ vice versa
].
^ UsageMappingTable
! !
@@ -17379,25 +17392,25 @@
and nil is returned.
self fetchResourcesStartingAt: nil withScope: #GLOBALNET type: #ANY usage: 0
- onError: [:err| Transcript showCR: err ].
+ onError: [:err| Transcript showCR: err ].
"
| stream networkResources |
[
- stream := self openAt: aNetworkResourceOrNil
- withScope: aScope type: aType usage: aUsage onError: aBlock.
-
- stream notNil ifTrue:[
- |next|
-
- networkResources := OrderedCollection new.
-
- [ (next := stream nextOrNil) notNil ] whileTrue:[
- networkResources add:next.
- ].
- ]
+ stream := self openAt: aNetworkResourceOrNil
+ withScope: aScope type: aType usage: aUsage onError: aBlock.
+
+ stream notNil ifTrue:[
+ |next|
+
+ networkResources := OrderedCollection new.
+
+ [ (next := stream nextOrNil) notNil ] whileTrue:[
+ networkResources add:next.
+ ].
+ ]
] ensure:[
- stream notNil ifTrue:[ stream close ].
+ stream notNil ifTrue:[ stream close ].
].
^ networkResources.
!
@@ -17410,17 +17423,17 @@
and nil is returned.
self fetchSystemResourcesWithScope: #GLOBALNET type: #ANY usage: 0
- onError: [:err| Transcript showCR: err ].
+ onError: [:err| Transcript showCR: err ].
self fetchSystemResourcesWithScope: #REMEMBERED type: #DISK usage: 0
- onError: [:err| Transcript showCR: err ].
+ onError: [:err| Transcript showCR: err ].
self fetchSystemResourcesWithScope: #REMEMBERED type: #ANY usage: 0
- onError: [:err| Transcript showCR: err ].
+ onError: [:err| Transcript showCR: err ].
"
^ self fetchResourcesStartingAt: nil
- withScope: aScope type: aType usage: aUsage onError: aBlock
+ withScope: aScope type: aType usage: aUsage onError: aBlock
!
fetchVirtualDrives
@@ -17447,39 +17460,39 @@
"/ map symbols to integer values.. on error an exception is raised
aScope isInteger ifTrue:[ enumScope := aScope ]
- ifFalse:[ enumScope := self scopeMappingTable at:aScope ].
+ ifFalse:[ enumScope := self scopeMappingTable at:aScope ].
aUsage isInteger ifTrue:[ enumUsage := aUsage ]
- ifFalse:[ enumUsage := self usageMappingTable at:aUsage ].
+ ifFalse:[ enumUsage := self usageMappingTable at:aUsage ].
aType isInteger ifTrue:[ enumType := aType ]
- ifFalse:[ enumType := self typeMappingTable at:aType ].
+ ifFalse:[ enumType := self typeMappingTable at:aType ].
aResourceOrNil notNil ifTrue:[ | checkAndGetString |
- resScope := aResourceOrNil scope.
- resScope isInteger ifFalse:[ resScope := self scopeMappingTable at:resScope ].
-
- resType := aResourceOrNil type.
- resType isInteger ifFalse:[ resType := self typeMappingTable at: resType ].
-
- resUsage := aResourceOrNil usage.
- resUsage isInteger ifFalse:[ resUsage := self usageMappingTable at: resUsage ].
-
- resDisplayType := aResourceOrNil displayType.
- resDisplayType isInteger ifFalse:[ resDisplayType := self displayTypeMappingTable at:resDisplayType ].
-
- checkAndGetString := [: aString| |string|
- aString notNil ifTrue:[
- self isUsingUnicode
- ifTrue: [ string := aString asUnicode16String ]
- ifFalse:[ string := aString asSingleByteString ].
- ].
- string
- ].
- resRemoteName := checkAndGetString value:( aResourceOrNil remoteName ).
- resLocalName := checkAndGetString value:( aResourceOrNil localName ).
- resComment := checkAndGetString value:( aResourceOrNil comment ).
- resProvider := checkAndGetString value:( aResourceOrNil provider ).
+ resScope := aResourceOrNil scope.
+ resScope isInteger ifFalse:[ resScope := self scopeMappingTable at:resScope ].
+
+ resType := aResourceOrNil type.
+ resType isInteger ifFalse:[ resType := self typeMappingTable at: resType ].
+
+ resUsage := aResourceOrNil usage.
+ resUsage isInteger ifFalse:[ resUsage := self usageMappingTable at: resUsage ].
+
+ resDisplayType := aResourceOrNil displayType.
+ resDisplayType isInteger ifFalse:[ resDisplayType := self displayTypeMappingTable at:resDisplayType ].
+
+ checkAndGetString := [: aString| |string|
+ aString notNil ifTrue:[
+ self isUsingUnicode
+ ifTrue: [ string := aString asUnicode16String ]
+ ifFalse:[ string := aString asSingleByteString ].
+ ].
+ string
+ ].
+ resRemoteName := checkAndGetString value:( aResourceOrNil remoteName ).
+ resLocalName := checkAndGetString value:( aResourceOrNil localName ).
+ resComment := checkAndGetString value:( aResourceOrNil comment ).
+ resProvider := checkAndGetString value:( aResourceOrNil provider ).
].
resourceHandle := self new.
@@ -17503,75 +17516,75 @@
#endif
if( resScope == nil ) {
- __lpnetRes = 0;
+ __lpnetRes = 0;
} else {
- int __sz;
-
- ZeroMemory( __buffer, (__cp - __buffer) );
-
- __lpnetRes->dwScope = __unsignedLongIntVal( resScope );
- __lpnetRes->dwType = __unsignedLongIntVal( resType );
- __lpnetRes->dwUsage = __unsignedLongIntVal( resUsage );
- __lpnetRes->dwDisplayType = __unsignedLongIntVal( resDisplayType );
-
- if( resRemoteName != nil ) {
+ int __sz;
+
+ ZeroMemory( __buffer, (__cp - __buffer) );
+
+ __lpnetRes->dwScope = __unsignedLongIntVal( resScope );
+ __lpnetRes->dwType = __unsignedLongIntVal( resType );
+ __lpnetRes->dwUsage = __unsignedLongIntVal( resUsage );
+ __lpnetRes->dwDisplayType = __unsignedLongIntVal( resDisplayType );
+
+ if( resRemoteName != nil ) {
#ifdef USE_ANSI_NETWORKRESOURCES
- __sp = __stringVal(resRemoteName);
- __sz = strlen(__sp);
-#else
- __sp = __unicode16StringVal(resRemoteName);
- __sz = __unicode16StringSize(resRemoteName);
-#endif
- for( __lpnetRes->lpRemoteName = __cp; __sz > 0; --__sz ) { * __cp++ = * __sp++; }
- *__cp++ = 0;
- }
-
- if( resLocalName != nil ) {
+ __sp = __stringVal(resRemoteName);
+ __sz = strlen(__sp);
+#else
+ __sp = __unicode16StringVal(resRemoteName);
+ __sz = __unicode16StringSize(resRemoteName);
+#endif
+ for( __lpnetRes->lpRemoteName = __cp; __sz > 0; --__sz ) { * __cp++ = * __sp++; }
+ *__cp++ = 0;
+ }
+
+ if( resLocalName != nil ) {
#ifdef USE_ANSI_NETWORKRESOURCES
- __sp = __stringVal(resLocalName);
- __sz = strlen(__sp);
-#else
- __sp = __unicode16StringVal(resLocalName);
- __sz = __unicode16StringSize(resLocalName);
-#endif
- for( __lpnetRes->lpLocalName = __cp; __sz > 0; --__sz ) { * __cp++ = * __sp++; }
- *__cp++ = 0;
- }
-
- if( resComment != nil ) {
+ __sp = __stringVal(resLocalName);
+ __sz = strlen(__sp);
+#else
+ __sp = __unicode16StringVal(resLocalName);
+ __sz = __unicode16StringSize(resLocalName);
+#endif
+ for( __lpnetRes->lpLocalName = __cp; __sz > 0; --__sz ) { * __cp++ = * __sp++; }
+ *__cp++ = 0;
+ }
+
+ if( resComment != nil ) {
#ifdef USE_ANSI_NETWORKRESOURCES
- __sp = __stringVal(resComment);
- __sz = strlen(__sp);
-#else
- __sp = __unicode16StringVal(resComment);
- __sz = __unicode16StringSize(resComment);
-#endif
- for( __lpnetRes->lpComment = __cp; __sz > 0; --__sz ) { * __cp++ = * __sp++; }
- *__cp++ = 0;
- }
-
- if( resProvider != nil ) {
+ __sp = __stringVal(resComment);
+ __sz = strlen(__sp);
+#else
+ __sp = __unicode16StringVal(resComment);
+ __sz = __unicode16StringSize(resComment);
+#endif
+ for( __lpnetRes->lpComment = __cp; __sz > 0; --__sz ) { * __cp++ = * __sp++; }
+ *__cp++ = 0;
+ }
+
+ if( resProvider != nil ) {
#ifdef USE_ANSI_NETWORKRESOURCES
- __sp = __stringVal(resProvider);
- __sz = strlen(__sp);
-#else
- __sp = __unicode16StringVal(resProvider);
- __sz = __unicode16StringSize(resProvider);
-#endif
- for( __lpnetRes->lpProvider = __cp; __sz > 0; --__sz ) { * __cp++ = * __sp++; }
- *__cp++ = 0;
- }
+ __sp = __stringVal(resProvider);
+ __sz = strlen(__sp);
+#else
+ __sp = __unicode16StringVal(resProvider);
+ __sz = __unicode16StringSize(resProvider);
+#endif
+ for( __lpnetRes->lpProvider = __cp; __sz > 0; --__sz ) { * __cp++ = * __sp++; }
+ *__cp++ = 0;
+ }
}
#ifdef DO_WRAP_CALLS
do {
- __threadErrno = 0;
+ __threadErrno = 0;
#ifdef USE_ANSI_NETWORKRESOURCES
- // do not cast to INT - will loose sign bit then!
- __errno = (int)(STX_API_NOINT_CALL5( "WNetOpenEnumA", WNetOpenEnumA, __scope, __type, __usage, __lpnetRes, & __hEnum ));
-#else
- // do not cast to INT - will loose sign bit then!
- __errno = (int)(STX_API_NOINT_CALL5( "WNetOpenEnumW", WNetOpenEnumW, __scope, __type, __usage, __lpnetRes, & __hEnum ));
+ // do not cast to INT - will loose sign bit then!
+ __errno = (int)(STX_API_NOINT_CALL5( "WNetOpenEnumA", WNetOpenEnumA, __scope, __type, __usage, __lpnetRes, & __hEnum ));
+#else
+ // do not cast to INT - will loose sign bit then!
+ __errno = (int)(STX_API_NOINT_CALL5( "WNetOpenEnumW", WNetOpenEnumW, __scope, __type, __usage, __lpnetRes, & __hEnum ));
#endif
} while ((__errno < 0) && (__threadErrno == EINTR));
#else
@@ -17585,16 +17598,16 @@
#endif
if( __errno == NO_ERROR ) {
- __externalAddressVal(resourceHandle) = (void *) __hEnum;
+ __externalAddressVal(resourceHandle) = (void *) __hEnum;
} else {
- resourceHandle = nil;
- errorNumber = __mkSmallInteger( __errno );
+ resourceHandle = nil;
+ errorNumber = __mkSmallInteger( __errno );
}
%}.
resourceHandle isNil ifTrue:[
- aBlock notNil ifTrue:[ aBlock value: errorNumber ].
- ^ nil
+ aBlock notNil ifTrue:[ aBlock value: errorNumber ].
+ ^ nil
].
resourceHandle registerForFinalization.
^ resourceHandle
@@ -17634,61 +17647,61 @@
HANDLE __hEnum = (HANDLE)(__externalAddressVal(self));
if ((__hEnum == 0) || (__hEnum == INVALID_HANDLE_VALUE)) {
- __externalAddressVal(self) = (HANDLE)0;
+ __externalAddressVal(self) = (HANDLE)0;
} else {
- DWORD __entries = 1;
- DWORD __bufSize = 8192;
- int __errno;
+ DWORD __entries = 1;
+ DWORD __bufSize = 8192;
+ int __errno;
#ifdef USE_ANSI_NETWORKRESOURCES
- char __buffer[ 8192 ];
- LPNETRESOURCE __lpNetRes = (LPNETRESOURCE) __buffer;
-
- ZeroMemory( __buffer, sizeof(NETRESOURCE) );
- __errno = WNetEnumResourceA ( __hEnum , & __entries , __lpNetRes, & __bufSize );
-#else
- wchar_t __buffer[ 8192 ];
- LPNETRESOURCEW __lpNetRes = (LPNETRESOURCEW) __buffer;
-
- ZeroMemory( __buffer, sizeof(NETRESOURCEW) );
- __errno = WNetEnumResourceW ( __hEnum , & __entries , __lpNetRes, & __bufSize );
-#endif
-
- if( (__errno == NO_ERROR) && (__entries == 1) ) {
- scope = __MKUINT( __lpNetRes->dwScope );
- type = __MKUINT( __lpNetRes->dwType );
- usage = __MKUINT( __lpNetRes->dwUsage );
- displayType = __MKUINT( __lpNetRes->dwDisplayType );
+ char __buffer[ 8192 ];
+ LPNETRESOURCE __lpNetRes = (LPNETRESOURCE) __buffer;
+
+ ZeroMemory( __buffer, sizeof(NETRESOURCE) );
+ __errno = WNetEnumResourceA ( __hEnum , & __entries , __lpNetRes, & __bufSize );
+#else
+ wchar_t __buffer[ 8192 ];
+ LPNETRESOURCEW __lpNetRes = (LPNETRESOURCEW) __buffer;
+
+ ZeroMemory( __buffer, sizeof(NETRESOURCEW) );
+ __errno = WNetEnumResourceW ( __hEnum , & __entries , __lpNetRes, & __bufSize );
+#endif
+
+ if( (__errno == NO_ERROR) && (__entries == 1) ) {
+ scope = __MKUINT( __lpNetRes->dwScope );
+ type = __MKUINT( __lpNetRes->dwType );
+ usage = __MKUINT( __lpNetRes->dwUsage );
+ displayType = __MKUINT( __lpNetRes->dwDisplayType );
#ifdef USE_ANSI_NETWORKRESOURCES
- if( __lpNetRes->lpRemoteName != 0 ) { remoteName = __MKSTRING( __lpNetRes->lpRemoteName ); }
- if( __lpNetRes->lpLocalName != 0 ) { localName = __MKSTRING( __lpNetRes->lpLocalName ); }
- if( __lpNetRes->lpComment != 0 ) { comment = __MKSTRING( __lpNetRes->lpComment ); }
- if( __lpNetRes->lpProvider != 0 ) { provider = __MKSTRING( __lpNetRes->lpProvider ); }
-#else
- if( __lpNetRes->lpRemoteName != 0 ) { remoteName = __MKU16STRING( __lpNetRes->lpRemoteName ); }
- if( __lpNetRes->lpLocalName != 0 ) { localName = __MKU16STRING( __lpNetRes->lpLocalName ); }
- if( __lpNetRes->lpComment != 0 ) { comment = __MKU16STRING( __lpNetRes->lpComment ); }
- if( __lpNetRes->lpProvider != 0 ) { provider = __MKU16STRING( __lpNetRes->lpProvider ); }
-#endif
- }
+ if( __lpNetRes->lpRemoteName != 0 ) { remoteName = __MKSTRING( __lpNetRes->lpRemoteName ); }
+ if( __lpNetRes->lpLocalName != 0 ) { localName = __MKSTRING( __lpNetRes->lpLocalName ); }
+ if( __lpNetRes->lpComment != 0 ) { comment = __MKSTRING( __lpNetRes->lpComment ); }
+ if( __lpNetRes->lpProvider != 0 ) { provider = __MKSTRING( __lpNetRes->lpProvider ); }
+#else
+ if( __lpNetRes->lpRemoteName != 0 ) { remoteName = __MKU16STRING( __lpNetRes->lpRemoteName ); }
+ if( __lpNetRes->lpLocalName != 0 ) { localName = __MKU16STRING( __lpNetRes->lpLocalName ); }
+ if( __lpNetRes->lpComment != 0 ) { comment = __MKU16STRING( __lpNetRes->lpComment ); }
+ if( __lpNetRes->lpProvider != 0 ) { provider = __MKU16STRING( __lpNetRes->lpProvider ); }
+#endif
+ }
}
%}.
scope notNil ifTrue:[ |netResource|
- netResource := NetworkResource new.
-
- "map integer values to symbol excluding the usage..."
- netResource scope: (self class scopeMappingTable at:scope ifAbsent:[scope]).
- netResource type: (self class typeMappingTable at:type ifAbsent:[type]).
- netResource displayType: (self class displayTypeMappingTable at:displayType ifAbsent:[displayType]).
- netResource usage: usage.
-
- netResource remoteName: remoteName.
- netResource localName: localName.
- netResource comment: comment.
- netResource provider: provider.
-
- ^ netResource
+ netResource := NetworkResource new.
+
+ "map integer values to symbol excluding the usage..."
+ netResource scope: (self class scopeMappingTable at:scope ifAbsent:[scope]).
+ netResource type: (self class typeMappingTable at:type ifAbsent:[type]).
+ netResource displayType: (self class displayTypeMappingTable at:displayType ifAbsent:[displayType]).
+ netResource usage: usage.
+
+ netResource remoteName: remoteName.
+ netResource localName: localName.
+ netResource comment: comment.
+ netResource provider: provider.
+
+ ^ netResource
].
self close.
^ nil
@@ -17704,8 +17717,8 @@
HANDLE __hEnum = (HANDLE)(__externalAddressVal(self));
if (__hEnum) {
- __externalAddressVal(self) = (HANDLE)0;
- WNetCloseEnum(__hEnum);
+ __externalAddressVal(self) = (HANDLE)0;
+ WNetCloseEnum(__hEnum);
}
%}.
! !
@@ -17782,28 +17795,28 @@
scope
"The scope of the enumeration
- RESOURCE_CONNECTED RESOURCE_GLOBALNET RESOURCE_REMEMBERED
+ RESOURCE_CONNECTED RESOURCE_GLOBALNET RESOURCE_REMEMBERED
"
^ scope
!
scope: theScope
"The scope of the enumeration
- RESOURCE_CONNECTED RESOURCE_GLOBALNET RESOURCE_REMEMBERED
+ RESOURCE_CONNECTED RESOURCE_GLOBALNET RESOURCE_REMEMBERED
"
scope := theScope.
!
type
"describes the type of the resource
- RESOURCETYPE_ANY RESOURCETYPE_DISK RESOURCETYPE_PRINT
+ RESOURCETYPE_ANY RESOURCETYPE_DISK RESOURCETYPE_PRINT
"
^ type
!
type: theType
"describes the type of the resource
- RESOURCETYPE_ANY RESOURCETYPE_DISK RESOURCETYPE_PRINT
+ RESOURCETYPE_ANY RESOURCETYPE_DISK RESOURCETYPE_PRINT
"
type := theType.
!
@@ -17828,20 +17841,20 @@
| paction |
paction := [: anIdentifier :theValue |
- anIdentifier printOn: aStream.
-
- theValue notNil ifTrue:[
- theValue isInteger ifTrue:[
- theValue printOn:aStream base:2 showRadix:true.
- ] ifFalse:[
- theValue isSymbol ifTrue:[
- theValue printOn: aStream.
- ] ifFalse:[
- aStream nextPut: $". theValue printOn: aStream. aStream nextPut: $"
- ]
- ]
- ].
- aStream cr.
+ anIdentifier printOn: aStream.
+
+ theValue notNil ifTrue:[
+ theValue isInteger ifTrue:[
+ theValue printOn:aStream base:2 showRadix:true.
+ ] ifFalse:[
+ theValue isSymbol ifTrue:[
+ theValue printOn: aStream.
+ ] ifFalse:[
+ aStream nextPut: $". theValue printOn: aStream. aStream nextPut: $"
+ ]
+ ]
+ ].
+ aStream cr.
].
aStream nextPutAll: 'NetworkResource {'; cr.
@@ -17874,7 +17887,7 @@
DWORD __usage = __unsignedLongIntVal( flag );
if( __usage & RESOURCEUSAGE_CONTAINER ) {
- RETURN( true );
+ RETURN( true );
}
%}.
^ false
@@ -17884,7 +17897,7 @@
closeHandle
self address ~~ 0 ifTrue:[
- OperatingSystem primClosePrinter:self.
+ OperatingSystem primClosePrinter:self.
]
"Created: / 27-07-2006 / 14:48:37 / fm"
@@ -17919,9 +17932,9 @@
!Win32OperatingSystem::Win32SerialPortHandle methodsFor:'opening'!
open:portName baudRate:baudRate stopBitsType:stopBitsType
- parityType:parityType dataBits:dataBits
- inFlowCtrl:inFlowCtrlType outFlowCtrl:outFlowCtrlType
- xOnChar:xOnChar xOffChar:xOffChar
+ parityType:parityType dataBits:dataBits
+ inFlowCtrl:inFlowCtrlType outFlowCtrl:outFlowCtrlType
+ xOnChar:xOnChar xOffChar:xOffChar
"portName: COM%d
baudRate: Integer
stopBitsType: #stop1, #stop2 or #stop1_5
@@ -17940,13 +17953,13 @@
DCB dcb;
char *__portName;
int __setBaudRate = 1,
- __setDataBits = 1,
- __setXOnChar = 1,
- __setXOffChar = 1,
- __setInFlowCtrl = 1,
- __setOutFlowCtrl = 1,
- __setStopBits = 1,
- __setParityType = 1;
+ __setDataBits = 1,
+ __setXOnChar = 1,
+ __setXOffChar = 1,
+ __setInFlowCtrl = 1,
+ __setOutFlowCtrl = 1,
+ __setStopBits = 1,
+ __setParityType = 1;
int __baudRate, __dataBits;
int __xOnChar, __xOffChar;
int __inFlowCtrl, __outFlowCtrl;
@@ -17961,90 +17974,90 @@
# define NONE 3
if (__isStringLike(portName)) {
- __portName = __stringVal(portName);
+ __portName = __stringVal(portName);
} else {
- goto failure;
+ goto failure;
}
if (__isSmallInteger(baudRate)) {
- __baudRate = __intVal(baudRate);
+ __baudRate = __intVal(baudRate);
} else if (baudRate == nil) {
- __setBaudRate = 0;
+ __setBaudRate = 0;
} else {
- goto failure;
+ goto failure;
}
if (__isSmallInteger(dataBits)) {
- __dataBits = __intVal(dataBits);
+ __dataBits = __intVal(dataBits);
} else if (dataBits == nil) {
- __setDataBits = 0;
+ __setDataBits = 0;
} else {
- goto failure;
+ goto failure;
}
if (__isSmallInteger(xOnChar)) {
- __xOnChar = __intVal(xOnChar);
+ __xOnChar = __intVal(xOnChar);
} else if (__isCharacter(xOnChar)) {
- __xOnChar = __intVal(_characterVal(xOnChar));
+ __xOnChar = __intVal(_characterVal(xOnChar));
} else if (xOnChar == nil) {
- __setXOnChar = 0;
+ __setXOnChar = 0;
} else {
- goto failure;
+ goto failure;
}
if (__isSmallInteger(xOffChar)) {
- __xOffChar = __intVal(xOffChar);
+ __xOffChar = __intVal(xOffChar);
} else if (__isCharacter(xOffChar)) {
- __xOffChar = __intVal(_characterVal(xOffChar));
+ __xOffChar = __intVal(_characterVal(xOffChar));
} else if (xOffChar == nil) {
- __setXOffChar = 0;
+ __setXOffChar = 0;
} else {
- goto failure;
+ goto failure;
}
if (inFlowCtrlType == @symbol(xOnOff)) {
- __inFlowCtrl = XONOFF;
+ __inFlowCtrl = XONOFF;
} else if (inFlowCtrlType == @symbol(hardware)) {
- __inFlowCtrl = HARDWARE;
+ __inFlowCtrl = HARDWARE;
} else if (inFlowCtrlType == nil) {
- __setInFlowCtrl = 0;
+ __setInFlowCtrl = 0;
} else {
- goto failure;
+ goto failure;
}
if (outFlowCtrlType == @symbol(xOnOff)) {
- __outFlowCtrl = XONOFF;
+ __outFlowCtrl = XONOFF;
} else if (outFlowCtrlType == @symbol(hardware)) {
- __outFlowCtrl = HARDWARE;
+ __outFlowCtrl = HARDWARE;
} else if (outFlowCtrlType == nil) {
- __setOutFlowCtrl = 0;
+ __setOutFlowCtrl = 0;
} else {
- goto failure;
+ goto failure;
}
if (stopBitsType == @symbol(stop1)) {
- __stopBits = STOP1;
+ __stopBits = STOP1;
} else if (stopBitsType == @symbol(stop2)) {
- __stopBits = STOP2;
+ __stopBits = STOP2;
} else if (stopBitsType == @symbol(stop1_5)) {
- __stopBits = STOP1_5;
+ __stopBits = STOP1_5;
} else if (stopBitsType == nil) {
- __setStopBits = 0;
+ __setStopBits = 0;
} else {
- goto failure;
+ goto failure;
}
port = CreateFile(__portName,
- GENERIC_READ | GENERIC_WRITE,
- 0, /* comm devices must be opened with exclusive access */
- NULL, /* no security attrs */
- OPEN_EXISTING, /* comm devices must use OPEN_EXISTING */
- 0, /* no overlapped I/O */
- NULL /* hTemplate must be NULL for comm devices */
- );
+ GENERIC_READ | GENERIC_WRITE,
+ 0, /* comm devices must be opened with exclusive access */
+ NULL, /* no security attrs */
+ OPEN_EXISTING, /* comm devices must use OPEN_EXISTING */
+ 0, /* no overlapped I/O */
+ NULL /* hTemplate must be NULL for comm devices */
+ );
if (port == INVALID_HANDLE_VALUE) {
- console_fprintf(stderr, "Win32OS [info]: serial port open failed\n");
- errorNumber = __mkSmallInteger( __WIN32_ERR(GetLastError()) );
- goto failure;
+ console_fprintf(stderr, "Win32OS [info]: serial port open failed\n");
+ errorNumber = __mkSmallInteger( __WIN32_ERR(GetLastError()) );
+ goto failure;
}
/* Flush the driver */
PurgeComm( port, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR );
@@ -18071,42 +18084,42 @@
if (__setXOffChar) dcb.XoffChar = __xOffChar;
if (__setStopBits) {
- /* set stop bits */
- switch(__stopBits) {
- case STOP1_5: dcb.StopBits = 1; break; /* 1.5 stop bits */
- case STOP1: dcb.StopBits = 0; break; /* 1 stop bit */
- case STOP2: dcb.StopBits = 2; break; /* 2 stop bits */
- default: goto errExit;
- }
+ /* set stop bits */
+ switch(__stopBits) {
+ case STOP1_5: dcb.StopBits = 1; break; /* 1.5 stop bits */
+ case STOP1: dcb.StopBits = 0; break; /* 1 stop bit */
+ case STOP2: dcb.StopBits = 2; break; /* 2 stop bits */
+ default: goto errExit;
+ }
}
if (__setParityType) {
- /* set parity */
- switch(__parityType) {
- case NONE: dcb.Parity = NOPARITY; break;
- case ODD: dcb.Parity = ODDPARITY; break;
- case EVEN: dcb.Parity = EVENPARITY; break;
- default: goto errExit;
- }
+ /* set parity */
+ switch(__parityType) {
+ case NONE: dcb.Parity = NOPARITY; break;
+ case ODD: dcb.Parity = ODDPARITY; break;
+ case EVEN: dcb.Parity = EVENPARITY; break;
+ default: goto errExit;
+ }
}
if (__setInFlowCtrl) {
- /* set control flow */
- dcb.fInX = FALSE;
- dcb.fDtrControl = FALSE;
- if (__inFlowCtrl == XONOFF) dcb.fInX = TRUE; /* XOn/XOff handshaking */
- if (__inFlowCtrl == HARDWARE) dcb.fDtrControl = TRUE; /* hardware handshaking */
+ /* set control flow */
+ dcb.fInX = FALSE;
+ dcb.fDtrControl = FALSE;
+ if (__inFlowCtrl == XONOFF) dcb.fInX = TRUE; /* XOn/XOff handshaking */
+ if (__inFlowCtrl == HARDWARE) dcb.fDtrControl = TRUE; /* hardware handshaking */
}
if (__setOutFlowCtrl) {
- dcb.fOutX = FALSE;
- dcb.fOutxCtsFlow = FALSE;
-
- if (__outFlowCtrl == XONOFF) dcb.fOutX = TRUE; /* XOn/XOff handshaking */
- if (__outFlowCtrl == HARDWARE) dcb.fOutxCtsFlow = TRUE; /* hardware handshaking */
+ dcb.fOutX = FALSE;
+ dcb.fOutxCtsFlow = FALSE;
+
+ if (__outFlowCtrl == XONOFF) dcb.fOutX = TRUE; /* XOn/XOff handshaking */
+ if (__outFlowCtrl == HARDWARE) dcb.fOutxCtsFlow = TRUE; /* hardware handshaking */
}
if (SetCommState(port, &dcb)) {
- RETURN( true );
+ RETURN( true );
}
console_fprintf(stderr, "Win32OS [info]: serial port comm-setup failed\n");
@@ -18126,9 +18139,9 @@
# undef NONE
%}.
errorNumber isNil ifTrue:[
- self error:'invalid argument(s)'.
+ self error:'invalid argument(s)'.
] ifFalse:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError
].
! !
@@ -18141,9 +18154,9 @@
HANDLE port = (HANDLE)(__externalAddressVal(self));
if (port) {
- __externalAddressVal(self) = (HANDLE)0;
- PurgeComm( port, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR );
- CloseHandle(port);
+ __externalAddressVal(self) = (HANDLE)0;
+ PurgeComm( port, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR );
+ CloseHandle(port);
}
%}.
! !
@@ -18156,18 +18169,18 @@
if (port
&& __isSmallInteger(newRate)) {
- DCB dcb;
-
- ZeroMemory(&dcb, sizeof(dcb));
- dcb.DCBlength = sizeof(dcb);
- GetCommState(port, &dcb);
-
- dcb.BaudRate = __intVal(newRate);
-
- if (! SetCommState(port, &dcb)) {
- RETURN(false);
- }
- RETURN(true);
+ DCB dcb;
+
+ ZeroMemory(&dcb, sizeof(dcb));
+ dcb.DCBlength = sizeof(dcb);
+ GetCommState(port, &dcb);
+
+ dcb.BaudRate = __intVal(newRate);
+
+ if (! SetCommState(port, &dcb)) {
+ RETURN(false);
+ }
+ RETURN(true);
}
%}.
self primitiveFailed.
@@ -18179,18 +18192,18 @@
if (port
&& __isSmallInteger(newNumberOfBits)) {
- DCB dcb;
-
- ZeroMemory(&dcb, sizeof(dcb));
- dcb.DCBlength = sizeof(dcb);
- GetCommState(port, &dcb);
-
- dcb.ByteSize = __intVal(newNumberOfBits);
-
- if (! SetCommState(port, &dcb)) {
- RETURN(false);
- }
- RETURN(true);
+ DCB dcb;
+
+ ZeroMemory(&dcb, sizeof(dcb));
+ dcb.DCBlength = sizeof(dcb);
+ GetCommState(port, &dcb);
+
+ dcb.ByteSize = __intVal(newNumberOfBits);
+
+ if (! SetCommState(port, &dcb)) {
+ RETURN(false);
+ }
+ RETURN(true);
}
%}.
self primitiveFailed.
@@ -18203,27 +18216,27 @@
HANDLE port = (HANDLE)(__externalAddressVal(self));
if (port) {
- DCB dcb;
-
- ZeroMemory(&dcb, sizeof(dcb));
- dcb.DCBlength = sizeof(dcb);
- GetCommState(port, &dcb);
-
-
- if ((newParityTypeSymbol == nil) || (newParityTypeSymbol == @symbol(none))) {
- dcb.Parity = NOPARITY;
- } else if (newParityTypeSymbol == @symbol(odd)) {
- dcb.Parity = ODDPARITY;
- } else if (newParityTypeSymbol == @symbol(even)) {
- dcb.Parity = EVENPARITY;
- } else {
- goto failure;
- }
-
- if (! SetCommState(port, &dcb)) {
- RETURN(false);
- }
- RETURN(true);
+ DCB dcb;
+
+ ZeroMemory(&dcb, sizeof(dcb));
+ dcb.DCBlength = sizeof(dcb);
+ GetCommState(port, &dcb);
+
+
+ if ((newParityTypeSymbol == nil) || (newParityTypeSymbol == @symbol(none))) {
+ dcb.Parity = NOPARITY;
+ } else if (newParityTypeSymbol == @symbol(odd)) {
+ dcb.Parity = ODDPARITY;
+ } else if (newParityTypeSymbol == @symbol(even)) {
+ dcb.Parity = EVENPARITY;
+ } else {
+ goto failure;
+ }
+
+ if (! SetCommState(port, &dcb)) {
+ RETURN(false);
+ }
+ RETURN(true);
}
failure: ;
%}.
@@ -18236,26 +18249,26 @@
HANDLE port = (HANDLE)(__externalAddressVal(self));
if (port) {
- DCB dcb;
-
- ZeroMemory(&dcb, sizeof(dcb));
- dcb.DCBlength = sizeof(dcb);
- GetCommState(port, &dcb);
-
- if (newStopBitsSymbol == @symbol(stop1)) {
- dcb.Parity = 0 /* STOP1 */;
- } else if (newStopBitsSymbol == @symbol(stop2)) {
- dcb.Parity = 2 /* STOP2 */;
- } else if (newStopBitsSymbol == @symbol(stop1_5)) {
- dcb.Parity = 1 /* STOP1_5 */;
- } else {
- goto failure;
- }
-
- if (! SetCommState(port, &dcb)) {
- RETURN(false);
- }
- RETURN(true);
+ DCB dcb;
+
+ ZeroMemory(&dcb, sizeof(dcb));
+ dcb.DCBlength = sizeof(dcb);
+ GetCommState(port, &dcb);
+
+ if (newStopBitsSymbol == @symbol(stop1)) {
+ dcb.Parity = 0 /* STOP1 */;
+ } else if (newStopBitsSymbol == @symbol(stop2)) {
+ dcb.Parity = 2 /* STOP2 */;
+ } else if (newStopBitsSymbol == @symbol(stop1_5)) {
+ dcb.Parity = 1 /* STOP1_5 */;
+ } else {
+ goto failure;
+ }
+
+ if (! SetCommState(port, &dcb)) {
+ RETURN(false);
+ }
+ RETURN(true);
}
failure: ;
%}.
@@ -18322,10 +18335,10 @@
type := OperatingSystem socketTypeCodeOf:typeArg.
proto := self protocolCodeOf:protoArg.
serviceNameOrNil notNil ifTrue:[
- serviceName := serviceNameOrNil printString. "convert integer port numbers"
- serviceNameOrNil isInteger ifTrue:[
- port := serviceNameOrNil.
- ].
+ serviceName := serviceNameOrNil printString. "convert integer port numbers"
+ serviceNameOrNil isInteger ifTrue:[
+ port := serviceNameOrNil.
+ ].
]. "ifFalse:[serviceName := nil]"
@@ -18337,10 +18350,10 @@
until we implement getAddrInfoW() for Borland C.
If we really have 16-bit hostnames, this fails with #primitiveFailed"
hostNameOrNil notNil ifTrue:[
- hostName := hostNameOrNil asSingleByteStringIfPossible.
+ hostName := hostNameOrNil asSingleByteStringIfPossible.
]. "ifFalse:[hostName := nil] is nil anyway"
serviceName notNil ifTrue:[
- serviceName := serviceName asSingleByteStringIfPossible.
+ serviceName := serviceName asSingleByteStringIfPossible.
].
%{
#endif // !AI_NUMERICHOST
@@ -18355,30 +18368,30 @@
int cnt = 0;
if (hostName == nil) {
- __hostName = 0;
+ __hostName = 0;
} else if (__isStringLike(hostName)) {
- strncpy(__hostNameCopy, __stringVal(hostName), sizeof(__hostNameCopy)-1);
- __hostName = __hostNameCopy;
+ strncpy(__hostNameCopy, __stringVal(hostName), sizeof(__hostNameCopy)-1);
+ __hostName = __hostNameCopy;
} else if (__isUnicode16String(hostName)) {
- error = @symbol(unsupportedUnicodeName);
- errorString = __MKSTRING("Unicode hostnames are not yet supported");
- goto exitPrim;
+ error = @symbol(unsupportedUnicodeName);
+ errorString = __MKSTRING("Unicode hostnames are not yet supported");
+ goto exitPrim;
} else {
- error = @symbol(badArgument1);
- goto exitPrim;
+ error = @symbol(badArgument1);
+ goto exitPrim;
}
if (serviceName == nil) {
- __serviceName = 0;
+ __serviceName = 0;
} else if (__isStringLike(serviceName)) {
- strncpy(__serviceNameCopy, __stringVal(serviceName), sizeof(__serviceNameCopy)-1);
- __serviceName = __serviceNameCopy;
+ strncpy(__serviceNameCopy, __stringVal(serviceName), sizeof(__serviceNameCopy)-1);
+ __serviceName = __serviceNameCopy;
} else {
- error = @symbol(badArgument2);
- goto exitPrim;
+ error = @symbol(badArgument2);
+ goto exitPrim;
}
if (__hostName == 0 && __serviceName == 0) {
- error = @symbol(badArgument);
- goto exitPrim;
+ error = @symbol(badArgument);
+ goto exitPrim;
}
{
@@ -18391,101 +18404,101 @@
memset(&hints, 0, sizeof(hints));
if (__isSmallInteger(domain))
- hints.ai_family = __intVal(domain);
+ hints.ai_family = __intVal(domain);
if (__isSmallInteger(type))
- hints.ai_socktype = __intVal(type);
+ hints.ai_socktype = __intVal(type);
if (__isSmallInteger(proto))
- hints.ai_protocol = __intVal(proto);
+ hints.ai_protocol = __intVal(proto);
do {
# ifdef DO_WRAP_CALLS
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_WSA_NOINT_CALL4( "getaddrinfo", getaddrinfo, __hostName, __serviceName, &hints, &info));
- } while ((ret < 0) && (__threadErrno == EINTR));
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_WSA_NOINT_CALL4( "getaddrinfo", getaddrinfo, __hostName, __serviceName, &hints, &info));
+ } while ((ret < 0) && (__threadErrno == EINTR));
# else
- __BEGIN_INTERRUPTABLE__
- ret = getaddrinfo(__hostName, __serviceName, &hints, &info);
- __END_INTERRUPTABLE__
+ __BEGIN_INTERRUPTABLE__
+ ret = getaddrinfo(__hostName, __serviceName, &hints, &info);
+ __END_INTERRUPTABLE__
# endif
} while (ret != 0 && __threadErrno == EINTR);
if (ret != 0) {
- switch (ret) {
- case EAI_FAMILY:
- error = @symbol(badProtocol);
- break;
- case EAI_SOCKTYPE:
- error = @symbol(badSocketType);
- break;
- case EAI_BADFLAGS:
- error = @symbol(badFlags);
- break;
- case EAI_NONAME:
- error = @symbol(unknownHost);
- break;
- case EAI_SERVICE:
- error = @symbol(unknownService);
- break;
- case EAI_MEMORY:
- error = @symbol(allocationFailure);
- break;
- case EAI_FAIL:
- error = @symbol(permanentFailure);
- break;
- case EAI_AGAIN:
- error = @symbol(tryAgain);
- break;
- default:
- error = @symbol(unknownError);
- }
- errorString = __MKSTRING(gai_strerror(ret));
- goto err;
+ switch (ret) {
+ case EAI_FAMILY:
+ error = @symbol(badProtocol);
+ break;
+ case EAI_SOCKTYPE:
+ error = @symbol(badSocketType);
+ break;
+ case EAI_BADFLAGS:
+ error = @symbol(badFlags);
+ break;
+ case EAI_NONAME:
+ error = @symbol(unknownHost);
+ break;
+ case EAI_SERVICE:
+ error = @symbol(unknownService);
+ break;
+ case EAI_MEMORY:
+ error = @symbol(allocationFailure);
+ break;
+ case EAI_FAIL:
+ error = @symbol(permanentFailure);
+ break;
+ case EAI_AGAIN:
+ error = @symbol(tryAgain);
+ break;
+ default:
+ error = @symbol(unknownError);
+ }
+ errorString = __MKSTRING(gai_strerror(ret));
+ goto err;
}
for (cnt=0, infop=info; infop; infop=infop->ai_next)
- cnt++;
+ cnt++;
result = __ARRAY_NEW_INT(cnt);
if (result == nil) {
- error = @symbol(allocationFailure);
- goto err;
+ error = @symbol(allocationFailure);
+ goto err;
}
for (infop=info, cnt=0; infop; infop=infop->ai_next, cnt++) {
- OBJ o, resp;
-
- resp = __ARRAY_NEW_INT(6);
- if (resp == nil) {
- error = @symbol(allocationFailure);
- goto err;
- }
-
- __ArrayInstPtr(result)->a_element[cnt] = resp; __STORE(result, resp);
-
- __ArrayInstPtr(resp)->a_element[0] = __mkSmallInteger(infop->ai_flags);
- __ArrayInstPtr(resp)->a_element[1] = __mkSmallInteger(infop->ai_family);
- __ArrayInstPtr(resp)->a_element[2] = __mkSmallInteger(infop->ai_socktype);
- __ArrayInstPtr(resp)->a_element[3] = __mkSmallInteger(infop->ai_protocol);
-
- __PROTECT__(resp);
- o = __BYTEARRAY_NEW_INT(infop->ai_addrlen);
- __UNPROTECT__(resp);
- if (o == nil) {
- error = @symbol(allocationFailure);
- goto err;
- }
- memcpy(__byteArrayVal(o), infop->ai_addr, infop->ai_addrlen);
+ OBJ o, resp;
+
+ resp = __ARRAY_NEW_INT(6);
+ if (resp == nil) {
+ error = @symbol(allocationFailure);
+ goto err;
+ }
+
+ __ArrayInstPtr(result)->a_element[cnt] = resp; __STORE(result, resp);
+
+ __ArrayInstPtr(resp)->a_element[0] = __mkSmallInteger(infop->ai_flags);
+ __ArrayInstPtr(resp)->a_element[1] = __mkSmallInteger(infop->ai_family);
+ __ArrayInstPtr(resp)->a_element[2] = __mkSmallInteger(infop->ai_socktype);
+ __ArrayInstPtr(resp)->a_element[3] = __mkSmallInteger(infop->ai_protocol);
+
+ __PROTECT__(resp);
+ o = __BYTEARRAY_NEW_INT(infop->ai_addrlen);
+ __UNPROTECT__(resp);
+ if (o == nil) {
+ error = @symbol(allocationFailure);
+ goto err;
+ }
+ memcpy(__byteArrayVal(o), infop->ai_addr, infop->ai_addrlen);
__ArrayInstPtr(resp)->a_element[4] = o; __STORE(resp, o);
- if (infop->ai_canonname) {
- __PROTECT__(resp);
- o = __MKSTRING(infop->ai_canonname);
- __UNPROTECT__(resp);
- if (o == nil) {
- error = @symbol(allocationFailure);
- goto err;
- }
- __ArrayInstPtr(resp)->a_element[5] = o; __STORE(resp, o);
- }
+ if (infop->ai_canonname) {
+ __PROTECT__(resp);
+ o = __MKSTRING(infop->ai_canonname);
+ __UNPROTECT__(resp);
+ if (o == nil) {
+ error = @symbol(allocationFailure);
+ goto err;
+ }
+ __ArrayInstPtr(resp)->a_element[5] = o; __STORE(resp, o);
+ }
}
err:
@@ -18502,133 +18515,133 @@
int i;
if (__isSmallInteger(port)) {
- __port = htons(__smallIntegerVal(port));
+ __port = htons(__smallIntegerVal(port));
} else if (__serviceName) {
- struct servent *sp;
- char *__proto = 0;
-
- if (__isStringLike(protoArg))
- __proto = __stringVal(protoArg);
-
- sp = getservbyname(__serviceName, __proto);
- if (sp == NULL) {
- __port = atoi(__serviceName);
- if (__port <= 0) {
- errorString = @symbol(unknownService);
- error = __mkSmallInteger(-3);
- goto err;
- }
- __port = htons(__port);
- } else
- __port = sp->s_port;
+ struct servent *sp;
+ char *__proto = 0;
+
+ if (__isStringLike(protoArg))
+ __proto = __stringVal(protoArg);
+
+ sp = getservbyname(__serviceName, __proto);
+ if (sp == NULL) {
+ __port = atoi(__serviceName);
+ if (__port <= 0) {
+ errorString = @symbol(unknownService);
+ error = __mkSmallInteger(-3);
+ goto err;
+ }
+ __port = htons(__port);
+ } else
+ __port = sp->s_port;
}
if (__hostName) {
- int err;
-
- do {
+ int err;
+
+ do {
# if 0 && defined(DO_WRAP_CALLS)
- /* This does not work - the structure is allocated in thread local storage */
- hp = STX_WSA_NOINT_CALL1("gethostbyname", gethostbyname, __hostName);
- if ((INT)hp < 0) hp = NULL;
+ /* This does not work - the structure is allocated in thread local storage */
+ hp = STX_WSA_NOINT_CALL1("gethostbyname", gethostbyname, __hostName);
+ if ((INT)hp < 0) hp = NULL;
# else
- /* __BEGIN_INTERRUPTABLE__ is dangerous, because gethostbyname
- * uses a static data area, but allocates it in thread local storage
- */
- // __BEGIN_INTERRUPTABLE__
- hp = gethostbyname(__hostName);
- // __END_INTERRUPTABLE__
-#endif
- } while ((hp == NULL
- && (err = WSAGetLastError()) == EINTR));
- if (hp == 0) {
- switch (err) {
- case HOST_NOT_FOUND:
- errorString = @symbol(unknownHost);
- break;
- case NO_ADDRESS:
- errorString = @symbol(noAddress);
- break;
- case NO_RECOVERY:
- errorString = @symbol(permanentFailure);
- break;
- case TRY_AGAIN:
- errorString = @symbol(tryAgain);
- break;
- default:
- errorString = @symbol(unknownError);
- break;
- }
- error = __mkSmallInteger(err);
- goto err;
- }
-
- if (__isSmallInteger(domain) && hp->h_addrtype != __smallIntegerVal(domain)) {
- errorString = @symbol(unknownHost);
- error = __mkSmallInteger(-2);
- goto err;
- }
-
- for (cnt = 0, addrpp = hp->h_addr_list; *addrpp; addrpp++)
- cnt++;
- addrpp = hp->h_addr_list;
+ /* __BEGIN_INTERRUPTABLE__ is dangerous, because gethostbyname
+ * uses a static data area, but allocates it in thread local storage
+ */
+ // __BEGIN_INTERRUPTABLE__
+ hp = gethostbyname(__hostName);
+ // __END_INTERRUPTABLE__
+#endif
+ } while ((hp == NULL
+ && (err = WSAGetLastError()) == EINTR));
+ if (hp == 0) {
+ switch (err) {
+ case HOST_NOT_FOUND:
+ errorString = @symbol(unknownHost);
+ break;
+ case NO_ADDRESS:
+ errorString = @symbol(noAddress);
+ break;
+ case NO_RECOVERY:
+ errorString = @symbol(permanentFailure);
+ break;
+ case TRY_AGAIN:
+ errorString = @symbol(tryAgain);
+ break;
+ default:
+ errorString = @symbol(unknownError);
+ break;
+ }
+ error = __mkSmallInteger(err);
+ goto err;
+ }
+
+ if (__isSmallInteger(domain) && hp->h_addrtype != __smallIntegerVal(domain)) {
+ errorString = @symbol(unknownHost);
+ error = __mkSmallInteger(-2);
+ goto err;
+ }
+
+ for (cnt = 0, addrpp = hp->h_addr_list; *addrpp; addrpp++)
+ cnt++;
+ addrpp = hp->h_addr_list;
} else {
- cnt = 1;
+ cnt = 1;
}
result = __ARRAY_NEW_INT(cnt);
if (result == nil) {
- error = @symbol(allocationFailure);
- goto err;
+ error = @symbol(allocationFailure);
+ goto err;
}
for (i = 0; i < cnt; i++) {
- OBJ o, resp;
- struct sockaddr_in *sa;
-
- resp = __ARRAY_NEW_INT(6);
- if (resp == nil) {
- error = @symbol(allocationFailure);
- goto err;
- }
-
- __ArrayInstPtr(result)->a_element[i] = resp; __STORE(result, resp);
- __ArrayInstPtr(resp)->a_element[0] = __mkSmallInteger(0);
- __ArrayInstPtr(resp)->a_element[2] = type; __STORE(resp, type);
- __ArrayInstPtr(resp)->a_element[3] = proto; __STORE(resp, proto);
- __PROTECT__(resp);
- o = __BYTEARRAY_NEW_INT(sizeof(*sa));
- __UNPROTECT__(resp);
- if (o == nil) {
- error = @symbol(allocationFailure);
- goto err;
- }
- __ArrayInstPtr(resp)->a_element[4] = o; __STORE(resp, o);
- sa = (struct sockaddr_in *)__byteArrayVal(o);
- sa->sin_port = __port;
-
- if (__hostName) {
- sa->sin_family = hp->h_addrtype;
- memcpy(&sa->sin_addr, *addrpp, hp->h_length);
- __ArrayInstPtr(resp)->a_element[1] = __mkSmallInteger(hp->h_addrtype);
- if (hp->h_name) {
- __PROTECT__(resp);
- o = __MKSTRING(hp->h_name);
- __UNPROTECT__(resp);
- if (o == nil) {
- error = @symbol(allocationFailure);
- goto err;
- }
- __ArrayInstPtr(resp)->a_element[5] = o; __STORE(resp, o);
- }
- addrpp++;
- } else{
- if (__isSmallInteger(domain))
- sa->sin_family = __intVal(domain);
- else
- sa->sin_family = AF_INET;
- __ArrayInstPtr(resp)->a_element[1] = domain; __STORE(resp, domain);
- }
+ OBJ o, resp;
+ struct sockaddr_in *sa;
+
+ resp = __ARRAY_NEW_INT(6);
+ if (resp == nil) {
+ error = @symbol(allocationFailure);
+ goto err;
+ }
+
+ __ArrayInstPtr(result)->a_element[i] = resp; __STORE(result, resp);
+ __ArrayInstPtr(resp)->a_element[0] = __mkSmallInteger(0);
+ __ArrayInstPtr(resp)->a_element[2] = type; __STORE(resp, type);
+ __ArrayInstPtr(resp)->a_element[3] = proto; __STORE(resp, proto);
+ __PROTECT__(resp);
+ o = __BYTEARRAY_NEW_INT(sizeof(*sa));
+ __UNPROTECT__(resp);
+ if (o == nil) {
+ error = @symbol(allocationFailure);
+ goto err;
+ }
+ __ArrayInstPtr(resp)->a_element[4] = o; __STORE(resp, o);
+ sa = (struct sockaddr_in *)__byteArrayVal(o);
+ sa->sin_port = __port;
+
+ if (__hostName) {
+ sa->sin_family = hp->h_addrtype;
+ memcpy(&sa->sin_addr, *addrpp, hp->h_length);
+ __ArrayInstPtr(resp)->a_element[1] = __mkSmallInteger(hp->h_addrtype);
+ if (hp->h_name) {
+ __PROTECT__(resp);
+ o = __MKSTRING(hp->h_name);
+ __UNPROTECT__(resp);
+ if (o == nil) {
+ error = @symbol(allocationFailure);
+ goto err;
+ }
+ __ArrayInstPtr(resp)->a_element[5] = o; __STORE(resp, o);
+ }
+ addrpp++;
+ } else{
+ if (__isSmallInteger(domain))
+ sa->sin_family = __intVal(domain);
+ else
+ sa->sin_family = AF_INET;
+ __ArrayInstPtr(resp)->a_element[1] = domain; __STORE(resp, domain);
+ }
}
err:;
@@ -18640,67 +18653,67 @@
exitPrim:;
%}.
error notNil ifTrue:[
- |request|
- request := SocketAddressInfo new
- domain:domainArg;
- type:typeArg;
- protocol:protoArg;
- canonicalName:hostName;
- serviceName:serviceName.
- ^ (HostNameLookupError new
- parameter:error;
- messageText:' - ', (errorString ? error printString);
- request:request) raiseRequest.
+ |request|
+ request := SocketAddressInfo new
+ domain:domainArg;
+ type:typeArg;
+ protocol:protoArg;
+ canonicalName:hostName;
+ serviceName:serviceName.
+ ^ (HostNameLookupError new
+ parameter:error;
+ messageText:' - ', (errorString ? error printString);
+ request:request) raiseRequest.
].
1 to:result size do:[:i |
- |entry dom info|
-
- info := SocketAddressInfo new.
- entry := result at:i.
- info flags:(entry at:1).
- info domain:(dom := OperatingSystem domainSymbolOf:(entry at:2)).
- info type:(OperatingSystem socketTypeSymbolOf:(entry at:3)).
- info protocol:(self protocolSymbolOf:(entry at:4)).
- info socketAddress:((SocketAddress newDomain:dom) fromBytes:(entry at:5)).
- info canonicalName:(entry at:6).
- result at:i put:info
+ |entry dom info|
+
+ info := SocketAddressInfo new.
+ entry := result at:i.
+ info flags:(entry at:1).
+ info domain:(dom := OperatingSystem domainSymbolOf:(entry at:2)).
+ info type:(OperatingSystem socketTypeSymbolOf:(entry at:3)).
+ info protocol:(self protocolSymbolOf:(entry at:4)).
+ info socketAddress:((SocketAddress newDomain:dom) fromBytes:(entry at:5)).
+ info canonicalName:(entry at:6).
+ result at:i put:info
].
^ result
"
self getAddressInfo:'localhost' serviceName:nil
- domain:nil type:nil protocol:nil flags:nil
+ domain:nil type:nil protocol:nil flags:nil
self getAddressInfo:'localhost' serviceName:nil
- domain:#AF_INET type:#stream protocol:nil flags:nil
+ domain:#AF_INET type:#stream protocol:nil flags:nil
self getAddressInfo:'localhost' serviceName:nil
- domain:#AF_INET type:#stream protocol:#tcp flags:nil
+ domain:#AF_INET type:#stream protocol:#tcp flags:nil
self getAddressInfo:'localhost' serviceName:10
- domain:#AF_INET type:#stream protocol:#tcp flags:nil
+ domain:#AF_INET type:#stream protocol:#tcp flags:nil
self getAddressInfo:'localhost' serviceName:'10'
- domain:#AF_INET type:#stream protocol:#tcp flags:nil
+ domain:#AF_INET type:#stream protocol:#tcp flags:nil
self getAddressInfo:'blurb.exept.de' serviceName:nil
- domain:#AF_INET type:nil protocol:nil flags:nil
+ domain:#AF_INET type:nil protocol:nil flags:nil
self getAddressInfo:'1.2.3.4' serviceName:'bla'
- domain:#AF_INET type:nil protocol:nil flags:nil
+ domain:#AF_INET type:nil protocol:nil flags:nil
self getAddressInfo:'localhost' serviceName:'echo'
- domain:#AF_INET type:nil protocol:nil flags:nil
+ domain:#AF_INET type:nil protocol:nil flags:nil
self getAddressInfo:nil serviceName:'echo'
- domain:#AF_INET type:nil protocol:nil flags:nil
+ domain:#AF_INET type:nil protocol:nil flags:nil
self getAddressInfo:nil serviceName:nil
- domain:#AF_INET type:nil protocol:nil flags:nil
+ domain:#AF_INET type:nil protocol:nil flags:nil
self getAddressInfo:'www.google.de' serviceName:nil
- domain:nil type:nil protocol:nil flags:nil
+ domain:nil type:nil protocol:nil flags:nil
self getAddressInfo:'exeptn' serviceName:nil
- domain:nil type:nil protocol:nil flags:nil
+ domain:nil type:nil protocol:nil flags:nil
self getAddressInfo:'localhost' asUnicode16String serviceName:nil
- domain:nil type:nil protocol:nil flags:nil
+ domain:nil type:nil protocol:nil flags:nil
self getAddressInfo:'ützlbrützl' serviceName:nil
- domain:nil type:nil protocol:nil flags:nil
+ domain:nil type:nil protocol:nil flags:nil
self getAddressInfo:'ützlbrützl' serviceName:nil
- domain:nil type:nil protocol:nil flags:nil
+ domain:nil type:nil protocol:nil flags:nil
self getAddressInfo:'путин.ру' asUnicode16String serviceName:nil
- domain:nil type:nil protocol:nil flags:nil
+ domain:nil type:nil protocol:nil flags:nil
"
!
@@ -18744,20 +18757,20 @@
int nInstBytes, sockAddrSize;
if (wantHostName == true) {
- hp = host;
- hsz = sizeof(host);
+ hp = host;
+ hsz = sizeof(host);
}
if (wantServiceName == true) {
- sp = service;
- ssz = sizeof(service);
+ sp = service;
+ ssz = sizeof(service);
}
if (hp == NULL && sp == NULL) {
- error = @symbol(badArgument);
- goto err;
+ error = @symbol(badArgument);
+ goto err;
}
if (!__isBytes(socketAddress)) {
- error = @symbol(badArgument1);
- goto err;
+ error = @symbol(badArgument1);
+ goto err;
}
nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(__qClass(socketAddress))->c_ninstvars));
@@ -18765,185 +18778,185 @@
sockAddrSize -= nInstBytes;
if (!__isSmallInteger(flags)) {
- error = @symbol(badArgument5);
- goto err;
+ error = @symbol(badArgument5);
+ goto err;
}
__flags = __intVal(flags);
#if defined(NI_NUMERICHOST)
if (useDatagram == true) {
- __flags |= NI_DGRAM;
+ __flags |= NI_DGRAM;
}
{
- bp = (char *)(__byteArrayVal(socketAddress));
- bp += nInstBytes;
+ bp = (char *)(__byteArrayVal(socketAddress));
+ bp += nInstBytes;
# ifdef DO_WRAP_CALLS
- do {
- __threadErrno = 0;
- // do not cast to INT - will loose sign bit then!
- ret = (int)(STX_WSA_NOINT_CALL7( "getnameinfo", getnameinfo, (struct sockaddr *)bp, (INT)sockAddrSize, hp, (INT)hsz, sp, (INT)ssz, (INT)__flags));
- } while ((ret < 0) && (__threadErrno == EINTR));
+ do {
+ __threadErrno = 0;
+ // do not cast to INT - will loose sign bit then!
+ ret = (int)(STX_WSA_NOINT_CALL7( "getnameinfo", getnameinfo, (struct sockaddr *)bp, (INT)sockAddrSize, hp, (INT)hsz, sp, (INT)ssz, (INT)__flags));
+ } while ((ret < 0) && (__threadErrno == EINTR));
# else
- __BEGIN_INTERRUPTABLE__
- ret = getnameinfo((struct sockaddr *)bp, sockAddrSize,
- hp, hsz, sp, ssz, __flags);
- __END_INTERRUPTABLE__
+ __BEGIN_INTERRUPTABLE__
+ ret = getnameinfo((struct sockaddr *)bp, sockAddrSize,
+ hp, hsz, sp, ssz, __flags);
+ __END_INTERRUPTABLE__
# endif
} while (ret != 0 && __threadErrno == EINTR);
if (ret != 0) {
- switch (ret) {
- case EAI_FAMILY:
- error = @symbol(badProtocol);
- break;
- case EAI_SOCKTYPE:
- error = @symbol(badSocketType);
- break;
- case EAI_BADFLAGS:
- error = @symbol(badFlags);
- break;
- case EAI_NONAME:
- error = @symbol(unknownHost);
- break;
- case EAI_SERVICE:
- error = @symbol(unknownService);
- break;
- case EAI_MEMORY:
- error = @symbol(allocationFailure);
- break;
- case EAI_FAIL:
- error = @symbol(permanentFailure);
- break;
- case EAI_AGAIN:
- error = @symbol(tryAgain);
- break;
- default:
- error = @symbol(unknownError);
- }
- errorString = __MKSTRING(gai_strerror(ret));
- goto err;
+ switch (ret) {
+ case EAI_FAMILY:
+ error = @symbol(badProtocol);
+ break;
+ case EAI_SOCKTYPE:
+ error = @symbol(badSocketType);
+ break;
+ case EAI_BADFLAGS:
+ error = @symbol(badFlags);
+ break;
+ case EAI_NONAME:
+ error = @symbol(unknownHost);
+ break;
+ case EAI_SERVICE:
+ error = @symbol(unknownService);
+ break;
+ case EAI_MEMORY:
+ error = @symbol(allocationFailure);
+ break;
+ case EAI_FAIL:
+ error = @symbol(permanentFailure);
+ break;
+ case EAI_AGAIN:
+ error = @symbol(tryAgain);
+ break;
+ default:
+ error = @symbol(unknownError);
+ }
+ errorString = __MKSTRING(gai_strerror(ret));
+ goto err;
}
# else /* ! NI_NUMERICHOST */
{
- /*
- * Do it using gethostbyaddr()
- */
- struct sockaddr_in *sa;
-
- if (sockAddrSize < sizeof(*sa)) {
- error = @symbol(badArgument1);
- goto err;
- }
- bp = (char *)(__byteArrayVal(socketAddress));
- bp += nInstBytes;
- sa = (struct sockaddr_in *)bp;
-
- if (sp) {
- struct servent *servp;
- char *__proto = 0;
-
- __proto = (useDatagram == true ? "udp" : "tcp");
-
- servp = getservbyport(sa->sin_port, __proto);
- if (servp) {
- sp = servp->s_name;
- }
- }
-
- if (sa->sin_family == AF_INET6) {
- if (sp)
- serviceName = __MKSTRING(sp);
- error = @symbol(AF_INET6);
- goto err;
- }
-
- if (hp) {
- struct hostent *hostp;
- int err;
-
- do {
- /* must refetch in loop */
- bp = (char *)(__byteArrayVal(socketAddress));
- bp += nInstBytes;
- sa = (struct sockaddr_in *)bp;
- /* __BEGIN_INTERRUPTABLE__ is dangerous, because gethostbyname uses a static data area
- */
- hostp = gethostbyaddr((char *)&sa->sin_addr, sockAddrSize, sa->sin_family);
- /* __END_INTERRUPTABLE__ */
- } while ((hostp == NULL)
- && ((err = WSAGetLastError()) == EINTR)
- );
- if (hostp == 0) {
- switch (err) {
- case HOST_NOT_FOUND:
- errorString = @symbol(unknownHost);
- break;
- case NO_ADDRESS:
- errorString = @symbol(noAddress);
- break;
- case NO_RECOVERY:
- errorString = @symbol(permanentFailure);
- break;
- case TRY_AGAIN:
- errorString = @symbol(tryAgain);
- break;
- default:
- errorString = @symbol(unknownError);
- break;
- }
- error = __mkSmallInteger(err);
- goto err;
- }
- hp = hostp->h_name;
- }
+ /*
+ * Do it using gethostbyaddr()
+ */
+ struct sockaddr_in *sa;
+
+ if (sockAddrSize < sizeof(*sa)) {
+ error = @symbol(badArgument1);
+ goto err;
+ }
+ bp = (char *)(__byteArrayVal(socketAddress));
+ bp += nInstBytes;
+ sa = (struct sockaddr_in *)bp;
+
+ if (sp) {
+ struct servent *servp;
+ char *__proto = 0;
+
+ __proto = (useDatagram == true ? "udp" : "tcp");
+
+ servp = getservbyport(sa->sin_port, __proto);
+ if (servp) {
+ sp = servp->s_name;
+ }
+ }
+
+ if (sa->sin_family == AF_INET6) {
+ if (sp)
+ serviceName = __MKSTRING(sp);
+ error = @symbol(AF_INET6);
+ goto err;
+ }
+
+ if (hp) {
+ struct hostent *hostp;
+ int err;
+
+ do {
+ /* must refetch in loop */
+ bp = (char *)(__byteArrayVal(socketAddress));
+ bp += nInstBytes;
+ sa = (struct sockaddr_in *)bp;
+ /* __BEGIN_INTERRUPTABLE__ is dangerous, because gethostbyname uses a static data area
+ */
+ hostp = gethostbyaddr((char *)&sa->sin_addr, sockAddrSize, sa->sin_family);
+ /* __END_INTERRUPTABLE__ */
+ } while ((hostp == NULL)
+ && ((err = WSAGetLastError()) == EINTR)
+ );
+ if (hostp == 0) {
+ switch (err) {
+ case HOST_NOT_FOUND:
+ errorString = @symbol(unknownHost);
+ break;
+ case NO_ADDRESS:
+ errorString = @symbol(noAddress);
+ break;
+ case NO_RECOVERY:
+ errorString = @symbol(permanentFailure);
+ break;
+ case TRY_AGAIN:
+ errorString = @symbol(tryAgain);
+ break;
+ default:
+ errorString = @symbol(unknownError);
+ break;
+ }
+ error = __mkSmallInteger(err);
+ goto err;
+ }
+ hp = hostp->h_name;
+ }
}
# endif /* ! NI_NUMERICHOST */
if (hp)
- hostName = __MKSTRING(hp);
+ hostName = __MKSTRING(hp);
if (sp)
- serviceName = __MKSTRING(sp);
+ serviceName = __MKSTRING(sp);
err:;
#else
error = @symbol(notImplemented);
#endif
%}.
error notNil ifTrue:[
- (error == #AF_INET6 or:[errorString == #noAddress]) ifTrue:[
- "This is a socket address of wrong size - probably an IPv6SocketAddres on a system where
- the getNetByAddr() syscall is not supported"
- ^ Array
- with:socketAddress hostAddressString
- with:serviceName.
- ].
- error isSymbol ifTrue:[
- self primitiveFailed:error.
- ].
- ^ (HostAddressLookupError new
- parameter:error;
- messageText:' - ', (errorString ? error printString);
- request:thisContext message) raiseRequest.
+ (error == #AF_INET6 or:[errorString == #noAddress]) ifTrue:[
+ "This is a socket address of wrong size - probably an IPv6SocketAddres on a system where
+ the getNetByAddr() syscall is not supported"
+ ^ Array
+ with:socketAddress hostAddressString
+ with:serviceName.
+ ].
+ error isSymbol ifTrue:[
+ self primitiveFailed:error.
+ ].
+ ^ (HostAddressLookupError new
+ parameter:error;
+ messageText:' - ', (errorString ? error printString);
+ request:thisContext message) raiseRequest.
].
^ Array with:hostName with:serviceName
"
self getNameInfo:
- (self getAddressInfo:'localhost' serviceName:'echo'
- domain:#AF_INET type:#stream protocol:nil flags:nil) first socketAddress
- wantHostName:true wantServiceName:true datagram:false flags:0
+ (self getAddressInfo:'localhost' serviceName:'echo'
+ domain:#AF_INET type:#stream protocol:nil flags:nil) first socketAddress
+ wantHostName:true wantServiceName:true datagram:false flags:0
self getNameInfo:
- (self getAddressInfo:'exept.exept.de' serviceName:'echo'
- domain:#AF_INET type:#stream protocol:nil flags:nil) first socketAddress
- wantHostName:true wantServiceName:true datagram:false flags:0
+ (self getAddressInfo:'exept.exept.de' serviceName:'echo'
+ domain:#AF_INET type:#stream protocol:nil flags:nil) first socketAddress
+ wantHostName:true wantServiceName:true datagram:false flags:0
self getNameInfo:(IPSocketAddress hostAddress:#[1 2 3 4])
- wantHostName:true wantServiceName:true datagram:false flags:0
+ wantHostName:true wantServiceName:true datagram:false flags:0
self getNameInfo:(IPv6SocketAddress localHost port:21)
- wantHostName:true wantServiceName:true datagram:false flags:0
+ wantHostName:true wantServiceName:true datagram:false flags:0
"
! !
@@ -18951,7 +18964,7 @@
initialize
%{ /* NOCONTEXT */
- __ExternalAddressInstPtr(self)->e_address = (void *)(INVALID_SOCKET);
+ __ExternalAddressInstPtr(self)->e_address = (void *)(INVALID_SOCKET);
%}
"
@@ -18987,8 +19000,8 @@
SOCKET sock = (SOCKET)(__externalAddressVal(self));
if (sock != INVALID_SOCKET) {
- __externalAddressVal(self) = (void *)(INVALID_SOCKET);
- closesocket(sock);
+ __externalAddressVal(self) = (void *)(INVALID_SOCKET);
+ closesocket(sock);
}
%}.
! !
@@ -19018,35 +19031,35 @@
!Win32OperatingSystem::WinPointStructure methodsFor:'accessing'!
asPoint
- "Private - Answer the receiver as a Point."
+ "Private - Answer the receiver as a Point."
^self x @ self y
"Created: / 03-08-2006 / 10:45:55 / fm"
!
x
- "Private - Answer the x coordinate of the point."
+ "Private - Answer the x coordinate of the point."
^self longAt: 0 + 1
"Created: / 03-08-2006 / 10:46:11 / fm"
!
x: anInteger
- "Private - Set the x coordinate of the point."
+ "Private - Set the x coordinate of the point."
self longAt: 0 + 1 put: anInteger
"Created: / 03-08-2006 / 10:46:41 / fm"
!
y
- "Private - Answer the y coordinate of the point."
+ "Private - Answer the y coordinate of the point."
^self longAt: 4 + 1
"Created: / 03-08-2006 / 10:46:26 / fm"
!
y: anInteger
- "Private - Set the y coordinate of the point."
+ "Private - Set the y coordinate of the point."
self longAt: 4 + 1 put: anInteger
"Created: / 03-08-2006 / 10:46:56 / fm"
@@ -19055,7 +19068,7 @@
!Win32OperatingSystem::WinPointStructure methodsFor:'printing'!
printOn: aStream
- "Append a textual representation of the receiver to aStream."
+ "Append a textual representation of the receiver to aStream."
aStream nextPutAll: self class name, ' { ', self asPoint printString, ' } '
"Created: / 03-08-2006 / 10:45:40 / fm"