diff -r 6711c095d091 -r 1089087bca33 Win32OperatingSystem.st --- a/Win32OperatingSystem.st Sat Feb 27 22:46:12 2016 +0100 +++ b/Win32OperatingSystem.st Mon Feb 29 19:36:41 2016 +0100 @@ -487,6 +487,9 @@ #if defined(__BORLANDC__) HANDLE _get_osfhandle(int); // not for MINGW! +#endif + +#if defined(__BORLANDC__) || !defined(TOKEN_EXECUTE) typedef enum _TOKEN_ELEVATION_TYPE { TokenElevationTypeDefault = 1, @@ -531,7 +534,8 @@ } TOKEN_INFORMATION_CLASS_V2, *PTOKEN_INFORMATION_CLASS_V2; # define TokenElevationType (TOKEN_INFORMATION_CLASS)nTokenElevationType # define TokenElevation (TOKEN_INFORMATION_CLASS)nTokenElevation -#endif + +#endif /* BORLAND */ %} ! ! @@ -1623,47 +1627,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)]. + ifTrue: [crtTime := Timestamp now] + ifFalse:[crtTime := Timestamp new fromOSTime:(osCrtTime - OperatingSystem osTimeOf19700101)]. osAccTime isNil - ifTrue: [accTime := Timestamp now] - ifFalse:[accTime := Timestamp new fromOSTime:(osAccTime - OperatingSystem osTimeOf19700101)]. + ifTrue: [accTime := Timestamp now] + ifFalse:[accTime := Timestamp new fromOSTime:(osAccTime - OperatingSystem osTimeOf19700101)]. osModTime isNil - ifTrue: [modTime := accTime] - ifFalse:[modTime := Timestamp new fromOSTime:(osModTime - OperatingSystem osTimeOf19700101)]. + ifTrue: [modTime := accTime] + ifFalse:[modTime := Timestamp new fromOSTime:(osModTime - OperatingSystem osTimeOf19700101)]. ^ 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 @@ -1678,45 +1682,45 @@ if ((dirPointer != nil) && __isExternalAddressLike(dirPointer)) { - // __INST(lastErrorNumber) = nil; - d = __externalAddressVal(dirPointer); - - do { - __threadErrno = 0; - rslt = 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 = FileTimeToOsTime(&data.ftCreationTime); - osAccTime = FileTimeToOsTime(&data.ftLastAccessTime); - osModTime = FileTimeToOsTime(&data.ftLastWriteTime); - - } else { - error = __mkSmallInteger( __threadErrno ); - } + // __INST(lastErrorNumber) = nil; + d = __externalAddressVal(dirPointer); + + do { + __threadErrno = 0; + rslt = 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 = FileTimeToOsTime(&data.ftCreationTime); + osAccTime = FileTimeToOsTime(&data.ftLastAccessTime); + osModTime = FileTimeToOsTime(&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'! @@ -1753,872 +1757,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 @@ -2649,212 +2653,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 @@ -2863,229 +2867,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 @@ -3094,13 +3098,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 @@ -3109,19 +3113,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 @@ -3130,31 +3134,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 @@ -3163,13 +3167,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 @@ -3178,162 +3182,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 /* @@ -3341,92 +3345,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 @@ -5171,7 +5175,7 @@ ret = GetCurrentDirectoryW(MAXPATHLEN, _aPathName); if (ret == 0) { - __threadErrno = __WIN32_ERR(GetLastError()); + __threadErrno = __WIN32_ERR(GetLastError()); } RETURN(__mkStringOrU16String_maxlen(_aPathName, MAXPATHLEN)); %}. @@ -5404,38 +5408,38 @@ wchar_t _aPathName[MAXPATHLEN+1]; if (__isStringLike(aPathName)) { - int i; - INT l = __stringSize(aPathName); - - if (l > MAXPATHLEN) l = MAXPATHLEN; - - for (i=0; i MAXPATHLEN) l = MAXPATHLEN; + + for (i=0; i MAXPATHLEN) l = MAXPATHLEN; - - for (i=0; i MAXPATHLEN) l = MAXPATHLEN; + + for (i=0; i MAXPATHLEN) l = MAXPATHLEN; - - for (i=0; i MAXPATHLEN) l = MAXPATHLEN; + + for (i=0; i MAXPATHLEN) l = MAXPATHLEN; - - for (i=0; i MAXPATHLEN) l = MAXPATHLEN; + + for (i=0; i>getStatusOfProcess:aProcessId." + you have to fetch the processes exitstatus with + OperatingSystem>>getStatusOfProcess:aProcessId." self terminateProcessGroup:processGroupId ! @@ -7117,9 +7121,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) @@ -7133,15 +7137,15 @@ The process has a chance to do some cleanup. 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." @@ -7153,34 +7157,34 @@ The process should have a chance to do some cleanup. 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. @@ -7195,15 +7199,15 @@ The process(es) have a chance to do some cleanup. 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 | @@ -7212,9 +7216,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. @@ -7222,21 +7226,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 + ]. + ]. ]. ! ! @@ -7829,43 +7833,43 @@ 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 @@ -7889,34 +7893,34 @@ int i, l; if (__isStringLike(aStringOrSymbol)) { - l = __stringSize(aStringOrSymbol); - if (l > sizeof(_varName)-1) - goto badArgument; - for (i=0; i sizeof(_varName)-1) + goto badArgument; + for (i=0; i sizeof(_varName)-1) - goto badArgument; - for (i=0; i sizeof(_varName)-1) + goto badArgument; + for (i=0; i sizeof(buff)) { - WCHAR *buff2; - - buff2 = (char *)malloc(nNeeded * sizeof(WCHAR)); - GetEnvironmentVariableW(_varName, buff2, nNeeded); - ret = __mkStringOrU16String_maxlen(buff2, nNeeded); - free(buff2); + WCHAR *buff2; + + buff2 = (char *)malloc(nNeeded * sizeof(WCHAR)); + GetEnvironmentVariableW(_varName, buff2, nNeeded); + ret = __mkStringOrU16String_maxlen(buff2, nNeeded); + free(buff2); } else if (nNeeded > 0) { - ret = __mkStringOrU16String_maxlen(buff, nNeeded); + ret = __mkStringOrU16String_maxlen(buff, nNeeded); } RETURN (ret); @@ -7950,11 +7954,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 %}. @@ -11490,53 +11494,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: @@ -11546,145 +11550,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 @@ -11695,105 +11699,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; @@ -12240,14 +12244,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 " ! @@ -17677,10 +17681,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]" @@ -17692,10 +17696,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 @@ -17710,30 +17714,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; } { @@ -17746,101 +17750,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 = 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 = 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: @@ -17857,133 +17861,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:; @@ -17995,67 +17999,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 " ! @@ -18099,20 +18103,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 == 0 && sp == 0) { - 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)); @@ -18120,185 +18124,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 = STX_WSA_NOINT_CALL7( "getnameinfo", getnameinfo, (struct sockaddr *)bp, sockAddrSize, hp, hsz, sp, ssz, __flags); - } while ((ret < 0) && (__threadErrno == EINTR)); + do { + __threadErrno = 0; + // do not cast to INT - will loose sign bit then! + ret = STX_WSA_NOINT_CALL7( "getnameinfo", getnameinfo, (struct sockaddr *)bp, sockAddrSize, hp, hsz, sp, ssz, __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 " ! !