--- a/Win32OperatingSystem.st Wed Jul 26 17:22:50 2017 +0200
+++ b/Win32OperatingSystem.st Wed Jul 26 18:09:05 2017 +0200
@@ -1871,879 +1871,892 @@
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;
-
- case ERROR_ALREADY_EXISTS:
- sym = @symbol(ERROR_ALREADY_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 - that's 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: // 53
+ sym = @symbol(ERROR_BAD_NETPATH);
+ typ = @symbol(peerFaultSignal);
+ break;
+
+ case ERROR_NETWORK_BUSY: // 54
+ 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;
+
+ case ERROR_ALREADY_EXISTS:
+ sym = @symbol(ERROR_ALREADY_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
+#ifdef RPC_S_INVALID_NET_ADDR
+ case RPC_S_INVALID_NET_ADDR:
+ sym = @symbol(RPC_S_INVALID_NET_ADDR);
+ typ = @symbol(peerFaultSignal);
+ break;
+#endif
+#ifdef ERROR_BAD_NETPATH
+ case ERROR_BAD_NETPATH: // 53
+ sym = @symbol(ERROR_BAD_NETPATH);
+ typ = @symbol(peerFaultSignal);
+ 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]).
- ].
- ].
- holder errorSymbol:sym errorCategory:typ.
+ sym := #ERROR_OTHER.
+ errNr notNil ifTrue:[
+ "keep symbols as symbols"
+ holder parameter:(errNr isString ifTrue:[errNr] ifFalse:[errNr asString]).
+ ].
+ ].
+ holder errorNumber:errNr errorSymbol:sym errorCategory:typ.
^ holder
@@ -2755,6 +2768,7 @@
self errorHolderForNumber:(self errorNumberFor:#EIO)
self errorHolderForNumber:(self errorNumberFor:#ENXIO)
self errorHolderForNumber:(self errorNumberFor:#E_NOINTERFACE)
+ self errorHolderForNumber:1707
"
!
@@ -15884,13 +15898,14 @@
deleteSubKeyNamed:subKeyString flags:flags
"delete a key below mySelf.
Return true on success.
+ subKeyString may be a string or unicode16string;
flags may be one of:
- #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
- #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
- or nil, to access the key (32/64) for the current application.
+ #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
+ #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
+ or nil, to access the key (32/64) for the current application.
CAVEAT: due to a missing library entry in the BCC system,
- the flags are currently ignored"
+ the flags are currently ignored"
|subKeyStringZ errorNumber|
@@ -15908,40 +15923,40 @@
int _flags = 0;
if (flags != nil) {
- if (flags == @symbol(KEY_WOW64_64KEY)) {
- _flags = KEY_WOW64_64KEY;
- } else if (flags == @symbol(KEY_WOW64_32KEY)) {
- _flags = KEY_WOW64_32KEY;
- } else {
- errorNumber = @symbol(badArgument2);
- goto out;
- }
+ if (flags == @symbol(KEY_WOW64_64KEY)) {
+ _flags = KEY_WOW64_64KEY;
+ } else if (flags == @symbol(KEY_WOW64_32KEY)) {
+ _flags = KEY_WOW64_32KEY;
+ } else {
+ errorNumber = @symbol(badArgument2);
+ goto out;
+ }
}
if (__isExternalAddressLike(__INST(handle))
&& __isUnicode16String(subKeyStringZ)) {
- myKey = (HKEY)__externalAddressVal(__INST(handle));
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
#ifdef __BORLANDC__
- _retVal = RegDeleteKeyW(myKey, __unicode16StringVal(subKeyStringZ));
-#else
- _retVal = RegDeleteKeyExW(myKey,
- __unicode16StringVal(subKeyStringZ),
- _flags,
- 0); // reserved
-#endif
- if (_retVal == ERROR_SUCCESS) {
- RETURN (true);
- }
- if ((_retVal != ERROR_PATH_NOT_FOUND)
- && (_retVal != ERROR_FILE_NOT_FOUND)) {
- errorNumber = __MKSMALLINT(_retVal);
- }
+ _retVal = RegDeleteKeyW(myKey, __unicode16StringVal(subKeyStringZ));
+#else
+ _retVal = RegDeleteKeyExW(myKey,
+ __unicode16StringVal(subKeyStringZ),
+ _flags,
+ 0); // reserved
+#endif
+ if (_retVal == ERROR_SUCCESS) {
+ RETURN (true);
+ }
+ if ((_retVal != ERROR_PATH_NOT_FOUND)
+ && (_retVal != ERROR_FILE_NOT_FOUND)) {
+ errorNumber = __MKSMALLINT(_retVal);
+ }
}
out:;
%}.
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
].
^ false
@@ -15952,46 +15967,88 @@
sub := top createSubKeyNamed:'FooBarBaz'.
top deleteSubKeyNamed:'FooBarBaz' flags:nil.
"
+
+ "
+ |top sub|
+
+ top := self key:'HKEY_CURRENT_USER\Software\ExeptTest'.
+ top deleteSubKeyNamed:'Fooαβγ' flags:nil.
+ "
!
remoteKeyOnHost:hostName
"return the corresponding registry entry from
- a remote computers registry."
-
- |newEntry remoteHandle errorNumber|
-
+ a remote computer's registry."
+
+ |hostNameZ newEntry remoteHandle errorNumber|
+
+ hostName isSingleByteString ifFalse:[
+ hostNameZ := hostName asUnicode16StringZ.
+ ].
%{
HKEY myKey, remoteKey = 0;
int _retVal;
- if (__isExternalAddressLike(__INST(handle)) && __isStringLike(hostName)) {
- myKey = (HKEY)__externalAddressVal(__INST(handle));
- if ((_retVal = RegConnectRegistryA(__stringVal(hostName), myKey, &remoteKey)) == ERROR_SUCCESS) {
- remoteHandle = __MKEXTERNALADDRESS(remoteKey);
- } else {
- if ((_retVal != ERROR_PATH_NOT_FOUND)
- && (_retVal != ERROR_FILE_NOT_FOUND)) {
- errorNumber = __MKSMALLINT(_retVal);
- }
- }
- }
+ if (__isExternalAddressLike(__INST(handle))) {
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+
+ if ((hostNameZ != nil) && __isUnicode16String(hostNameZ)) {
+ _retVal = RegConnectRegistryW(__unicode16StringVal(hostNameZ), myKey, &remoteKey);
+ } else if (__isStringLike(hostName)) {
+ _retVal = RegConnectRegistryA(__stringVal(hostName), myKey, &remoteKey);
+ } else
+ goto badArg;
+
+ switch (_retVal) {
+ case ERROR_SUCCESS:
+ remoteHandle = __MKEXTERNALADDRESS(remoteKey);
+ break;
+
+ case ERROR_PATH_NOT_FOUND:
+ case ERROR_FILE_NOT_FOUND:
+ break;
+
+ default:
+ errorNumber = __MKSMALLINT(_retVal);
+ break;
+ }
+ }
+ badArg: ;;
%}.
remoteHandle notNil ifTrue:[
- newEntry := self class basicNew setHandle:remoteHandle path:path.
- newEntry registerForFinalization.
- ^ newEntry.
+ newEntry := self class basicNew setHandle:remoteHandle path:path.
+ newEntry registerForFinalization.
+ ^ newEntry.
].
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
- ].
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ ].
+ self primitiveFailed:'bad argument'.
^ nil
- "
+ "will report a missing peer:
+
|top remote|
top := self key:'HKEY_LOCAL_MACHINE'.
- remote := top remoteKeyOnHost:'BETTI'
- "
+ remote := top remoteKeyOnHost:'fooBarBaz'
+ "
+
+ "will either report a missing peer or endpoint:
+
+ |top remote|
+
+ top := self key:'HKEY_LOCAL_MACHINE'.
+ remote := top remoteKeyOnHost:'www.exept.de'
+ "
+
+ "if the host exists, you'll likely get a permission error:
+ |top remote|
+
+ top := self key:'HKEY_LOCAL_MACHINE'.
+ remote := top remoteKeyOnHost:'sr-laptop'
+ "
+
"
|top remote|
@@ -16013,111 +16070,154 @@
!
subKeyAtIndex:subKeyIndex
- "return a new registry entry below mySelf for the given subKey index.
- Return nil if no such key exists"
-
- |subKeyName subKeyClassName errorNumber|
-
-%{
+ "return a new registry entry, below mySelf for the given subKey index.
+ Return nil if no such key exists.
+ To get the subkeys, call with increasing index, until a nil is returned."
+
+ |subKeyName errorNumber|
+
+%{
+#ifndef MAX_NUMCHARS
+# define MAX_NUMCHARS 256
+#endif
HKEY myKey, subKey = 0;
- char nameBuffer[256];
- DWORD nameSize = sizeof(nameBuffer) - 1;
- char classNameBuffer[256];
- DWORD classNameSize = sizeof(classNameBuffer) - 1;
+ WCHAR nameBuffer[MAX_NUMCHARS];
+ DWORD nameSize = MAX_NUMCHARS - 1;
+ WCHAR classNameBuffer[MAX_NUMCHARS];
+ DWORD classNameSize = MAX_NUMCHARS - 1;
FILETIME modificationTime;
int _retVal;
if (__isExternalAddressLike(__INST(handle))
&& __isSmallInteger(subKeyIndex)) {
- myKey = (HKEY)__externalAddressVal(__INST(handle));
- if ((_retVal = RegEnumKeyExA(myKey, __intVal(subKeyIndex),
- nameBuffer, &nameSize,
- NULL,
- classNameBuffer, &classNameSize,
- &modificationTime)) == ERROR_SUCCESS) {
- nameBuffer[nameSize] = '\0';
- classNameBuffer[classNameSize] = '\0';
- subKeyName = __MKSTRING(nameBuffer);
- subKeyClassName = __MKSTRING(classNameBuffer);
- } else {
- if ((_retVal != ERROR_PATH_NOT_FOUND)
- && (_retVal != ERROR_FILE_NOT_FOUND)
- && (_retVal != ERROR_NO_MORE_ITEMS)) {
- errorNumber = __MKSMALLINT(_retVal);
- }
- }
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+ if ((_retVal = RegEnumKeyExW(myKey, __intVal(subKeyIndex),
+ nameBuffer, &nameSize,
+ NULL,
+ classNameBuffer, &classNameSize,
+ &modificationTime)) == ERROR_SUCCESS) {
+ nameBuffer[nameSize] = 0;
+ subKeyName = __MKU16STRING(nameBuffer);
+ } else {
+ if ((_retVal != ERROR_PATH_NOT_FOUND)
+ && (_retVal != ERROR_FILE_NOT_FOUND)
+ && (_retVal != ERROR_NO_MORE_ITEMS)) {
+ errorNumber = __MKSMALLINT(_retVal);
+ }
+ }
}
%}.
subKeyName notNil ifTrue:[
- ^ self subKeyNamed:subKeyName.
+ subKeyName := subKeyName asSingleByteStringIfPossible.
+ ^ self subKeyNamed:subKeyName.
].
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
- ].
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ ].
+ ^ nil
+
+ "
+ |top sub|
+
+ top := self key:'HKEY_CURRENT_USER'.
+ sub := top subKeyAtIndex:0.
+ sub := top subKeyAtIndex:1.
+ sub := top subKeyAtIndex:2.
+ "
+
+ "
+ |top sub|
+
+ top := self key:'HKEY_CURRENT_USER\Software\ExeptTest'.
+ sub := top subKeyAtIndex:0.
+ sub := top subKeyAtIndex:1.
+ "
+!
+
+subKeyNameAndClassAtIndex:subKeyIndex
+ "return the name and className of the given subKey at index as a pair.
+ Each of the pair may be a string or unicode16string.
+ Return nil if no such key exists."
+
+ |subKeyName subKeyClassName errorNumber|
+
+%{
+#ifndef MAX_NUMCHARS
+# define MAX_NUMCHARS 256
+#endif
+
+ HKEY myKey, subKey = 0;
+ WCHAR nameBuffer[MAX_NUMCHARS];
+ WCHAR classNameBuffer[MAX_NUMCHARS];
+ DWORD nameSize = MAX_NUMCHARS - 1;
+ DWORD classNameSize = MAX_NUMCHARS - 1;
+ FILETIME modificationTime;
+ int _retVal;
+
+ if (__isExternalAddressLike(__INST(handle))
+ && __isSmallInteger(subKeyIndex)) {
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+ _retVal = RegEnumKeyExW(myKey, __intVal(subKeyIndex),
+ nameBuffer, &nameSize,
+ NULL,
+ classNameBuffer, &classNameSize,
+ &modificationTime);
+
+ if (_retVal == ERROR_SUCCESS) {
+ nameBuffer[nameSize] = 0;
+ classNameBuffer[classNameSize] = 0;
+ subKeyName = __mkStringOrU16String_maxlen(nameBuffer, nameSize);
+ subKeyClassName = __mkStringOrU16String_maxlen(classNameBuffer, classNameSize);
+ } else {
+ if ((_retVal != ERROR_PATH_NOT_FOUND)
+ && (_retVal != ERROR_FILE_NOT_FOUND)
+ && (_retVal != ERROR_NO_MORE_ITEMS)) {
+ errorNumber = __MKSMALLINT(_retVal);
+ }
+ }
+ }
+%}.
+ subKeyName notNil ifTrue:[
+ ^ {subKeyName . subKeyClassName}.
+ ].
+ errorNumber notNil ifTrue:[
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ ].
+ "/ no more items
^ nil
"
|top sub|
top := self key:'HKEY_LOCAL_MACHINE'.
- sub := top subKeyAtIndex:0
- "
-!
-
-subKeyNameAndClassAtIndex:subKeyIndex
- "return the name and className of the given subKey at index as a pair.
- Return nil if no such key exists"
-
- |subKeyName subKeyClassName errorNumber|
-
-%{
- HKEY myKey, subKey = 0;
- char nameBuffer[256];
- DWORD nameSize = sizeof(nameBuffer) - 1;
- char classNameBuffer[256];
- DWORD classNameSize = sizeof(classNameBuffer) - 1;
- FILETIME modificationTime;
- int _retVal;
-
- if (__isExternalAddressLike(__INST(handle))
- && __isSmallInteger(subKeyIndex)) {
- myKey = (HKEY)__externalAddressVal(__INST(handle));
- if ((_retVal = RegEnumKeyExA(myKey, __intVal(subKeyIndex),
- nameBuffer, &nameSize,
- NULL,
- classNameBuffer, &classNameSize,
- &modificationTime)) == ERROR_SUCCESS) {
- nameBuffer[nameSize] = '\0';
- classNameBuffer[classNameSize] = '\0';
- subKeyName = __MKSTRING(nameBuffer);
- subKeyClassName = __MKSTRING(classNameBuffer);
- } else {
- if ((_retVal != ERROR_PATH_NOT_FOUND)
- && (_retVal != ERROR_FILE_NOT_FOUND)
- && (_retVal != ERROR_NO_MORE_ITEMS)) {
- errorNumber = __MKSMALLINT(_retVal);
- }
- }
- }
-%}.
- subKeyName notNil ifTrue:[
- ^ {subKeyName . subKeyClassName}.
- ].
- errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
- ].
- ^ nil
+ sub := top subKeyNameAndClassAtIndex:0.
+ sub := top subKeyNameAndClassAtIndex:1.
+ "
+
"
|top sub|
- top := self key:'HKEY_LOCAL_MACHINE'.
- sub := top subKeyNameAndClassAtIndex:0
+ top := self key:'HKEY_CURRENT_USER\Software\'.
+ sub := top subKeyNameAndClassAtIndex:0.
+ sub := top subKeyNameAndClassAtIndex:1.
+ sub := top subKeyNameAndClassAtIndex:2.
+ sub := top subKeyNameAndClassAtIndex:3.
+ sub := top subKeyNameAndClassAtIndex:4.
+ "
+
+ "
+ |top sub|
+
+ top := self key:'HKEY_CURRENT_USER\Software\ExeptTest'.
+ sub := top subKeyNameAndClassAtIndex:0.
+ sub := top subKeyNameAndClassAtIndex:1.
"
!
subKeyNamed:subKeyString
"return a new registry entry below mySelf with the given subKey.
+ subKeyString may be a string or unicode16string.
Return nil if no such key exists"
^ self subKeyNamed:subKeyString flags:nil createIfAbsent:false
@@ -16132,6 +16232,7 @@
subKeyNamed:subKeyString createIfAbsent:createIfAbsent
"return a new registry entry below mySelf with the given subKey.
+ subKeyString may be a string or unicode16string.
If no such key exists and createIfAbsent is true, the key is created.
Otherwise, nil is returned"
@@ -16141,10 +16242,11 @@
subKeyNamed:subKeyString flags:flags
"return a new registry entry below mySelf with the given subKey.
Return nil if no such key exists.
+ subKeyString may be a string or unicode16string.
flags may be one of:
- #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
- #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
- or nil, to access the key (32/64) for the current application"
+ #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
+ #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
+ or nil, to access the key (32/64) for the current application"
^ self subKeyNamed:subKeyString flags:flags createIfAbsent:false
@@ -16154,10 +16256,11 @@
"return a new registry entry below mySelf with the given subKey.
If no such key exists and createIfAbsent is true, the key is created.
Otherwise, nil is returned.
+ subKeyString may be a string or unicode16string.
flags may be one of:
- #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
- #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
- or nil, to access the key (32/64) for the current application"
+ #KEY_WOW64_64KEY to force access to the 64Bit Windows key,
+ #KEY_WOW64_32KEY to force access to the 32Bit Windows key,
+ or nil, to access the key (32/64) for the current application"
|subKeyStringZ newEntry subHandle errorNumber disposition|
@@ -16176,72 +16279,72 @@
int _disposition = 0;
if (flags != nil) {
- if (flags == @symbol(KEY_WOW64_64KEY)) {
- _flags = KEY_WOW64_64KEY;
- } else if (flags == @symbol(KEY_WOW64_32KEY)) {
- _flags = KEY_WOW64_32KEY;
- } else {
- errorNumber = @symbol(badArgument2);
- goto out;
- }
+ if (flags == @symbol(KEY_WOW64_64KEY)) {
+ _flags = KEY_WOW64_64KEY;
+ } else if (flags == @symbol(KEY_WOW64_32KEY)) {
+ _flags = KEY_WOW64_32KEY;
+ } else {
+ errorNumber = @symbol(badArgument2);
+ goto out;
+ }
}
if (__isExternalAddressLike(__INST(handle))
- && __isUnicode16String(subKeyStringZ)) {
- myKey = (HKEY)__externalAddressVal(__INST(handle));
- if (createIfAbsent == true) {
- _retVal = RegCreateKeyExW(myKey,
- __unicode16StringVal(subKeyStringZ),
- 0, // reserved
- NULL, // class
- 0, // options
- KEY_ALL_ACCESS|_flags, // rights
- NULL, // securityAttributes - handle cannot be inherited
- &subKey,
- &_disposition); // disposition (created vs. opened)
- disposition = _disposition == REG_CREATED_NEW_KEY ? true : false;
- } else {
- _retVal = RegOpenKeyExW(
- myKey,
- __unicode16StringVal(subKeyStringZ),
- 0,
- KEY_ALL_ACCESS|_flags,
- &subKey);
-
- if (!(_retVal == 0)) {
- // try again with less permission
- _retVal = RegOpenKeyExW(
- myKey,
- __unicode16StringVal(subKeyStringZ),
- 0,
- KEY_READ |_flags,
- &subKey);
- }
-
- disposition = false;
- }
- if (_retVal == ERROR_SUCCESS) {
- subHandle = __MKEXTERNALADDRESS(subKey);
- } else {
- if ((_retVal != ERROR_PATH_NOT_FOUND)
- && (_retVal != ERROR_FILE_NOT_FOUND)) {
- errorNumber = __MKSMALLINT(_retVal);
- }
- }
+ && __isUnicode16String(subKeyStringZ)) {
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+ if (createIfAbsent == true) {
+ _retVal = RegCreateKeyExW(myKey,
+ __unicode16StringVal(subKeyStringZ),
+ 0, // reserved
+ NULL, // class
+ 0, // options
+ KEY_ALL_ACCESS|_flags, // rights
+ NULL, // securityAttributes - handle cannot be inherited
+ &subKey,
+ &_disposition); // disposition (created vs. opened)
+ disposition = _disposition == REG_CREATED_NEW_KEY ? true : false;
+ } else {
+ _retVal = RegOpenKeyExW(
+ myKey,
+ __unicode16StringVal(subKeyStringZ),
+ 0,
+ KEY_ALL_ACCESS|_flags,
+ &subKey);
+
+ if (!(_retVal == 0)) {
+ // try again with less permission
+ _retVal = RegOpenKeyExW(
+ myKey,
+ __unicode16StringVal(subKeyStringZ),
+ 0,
+ KEY_READ |_flags,
+ &subKey);
+ }
+
+ disposition = false;
+ }
+ if (_retVal == ERROR_SUCCESS) {
+ subHandle = __MKEXTERNALADDRESS(subKey);
+ } else {
+ if ((_retVal != ERROR_PATH_NOT_FOUND)
+ && (_retVal != ERROR_FILE_NOT_FOUND)) {
+ errorNumber = __MKSMALLINT(_retVal);
+ }
+ }
}
out:;
%}.
subHandle notNil ifTrue:[
- newEntry := self class basicNew
- setHandle:subHandle
- path:((path ? '?') , self class separator asString , subKeyString)
- isNew:disposition.
-
- newEntry registerForFinalization.
- ^ newEntry.
+ newEntry := self class basicNew
+ setHandle:subHandle
+ path:((path ? '?') , self class separator asString , subKeyString)
+ isNew:disposition.
+
+ newEntry registerForFinalization.
+ ^ newEntry.
].
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportProceedableError.
+ (OperatingSystem errorHolderForNumber:errorNumber) reportProceedableError.
].
^ nil
@@ -16250,13 +16353,22 @@
top := self key:'HKEY_LOCAL_MACHINE'.
sub := top subKeyNamed:'Software' flags:nil createIfAbsent:false
-
+ "
+
+ " regular (iso8859) key:
|top sub|
top := self key:'HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit'.
top valueNamed:'CurrentVersion'.
sub := top subKeyNamed:'1.8' flags:#KEY_WOW64_64KEY createIfAbsent:false.
"
+
+ "unicode key:
+ |top sub|
+
+ top := self key:'HKEY_CURRENT_USER\Software\ExeptTest'.
+ sub := top subKeyNamed:'Fooαβγ' flags:#KEY_WOW64_64KEY createIfAbsent:true.
+ "
! !
!Win32OperatingSystem::RegistryEntry methodsFor:'accessing values'!
@@ -16287,55 +16399,70 @@
deleteValueNamed:aValueName
"delete a value.
+ aValueName may be a string or unicode16string;
Return true on success."
- |errorNumber|
+ |errorNumber valueNameZ|
+
+ valueNameZ := aValueName asUnicode16StringZ.
%{
HKEY myKey;
int _retVal;
if (__isExternalAddressLike(__INST(handle))
- && __isStringLike(aValueName)) {
- myKey = (HKEY)__externalAddressVal(__INST(handle));
- if ((_retVal = RegDeleteValueA(myKey, __stringVal(aValueName))) == ERROR_SUCCESS) {
- RETURN (true);
- }
- if ((_retVal != ERROR_PATH_NOT_FOUND)
- && (_retVal != ERROR_FILE_NOT_FOUND)) {
- errorNumber = __MKSMALLINT(_retVal);
- }
+ && __isUnicode16String(valueNameZ)) {
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+ if ((_retVal = RegDeleteValueW(myKey, __unicode16StringVal(valueNameZ))) == ERROR_SUCCESS) {
+ RETURN (true);
+ }
+ if ((_retVal != ERROR_PATH_NOT_FOUND)
+ && (_retVal != ERROR_FILE_NOT_FOUND)) {
+ errorNumber = __MKSMALLINT(_retVal);
+ }
}
%}.
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
].
^ false
+
+ "
+ |top sub|
+
+ top := self key:'HKEY_CURRENT_USER'.
+ sub := top valueNamed:'BLA' put:'FooBarBaz'.
+ top deleteValueNamed:'BLA'.
+ "
!
valueNameAtIndex:valueIndex
"return a value's name for the given value index.
- Return nil if no such value exists"
+ The returned name may be a string or unicode16string.
+ Return nil if no such value exists.
+ To get the value names,
+ call with increasing index, until a nil is returned."
|valueName errorNumber|
%{
+#define NUM_CHARS 256
HKEY myKey;
- char nameBuffer[256];
- DWORD nameSize = sizeof(nameBuffer) - 1;
+ WCHAR nameBuffer[NUM_CHARS];
+ DWORD nameSize = NUM_CHARS - 1;
DWORD valueType;
int _retVal;
if (__isExternalAddressLike(__INST(handle))
&& __isSmallInteger(valueIndex)) {
myKey = (HKEY)__externalAddressVal(__INST(handle));
- if ((_retVal = RegEnumValueA(myKey, __intVal(valueIndex),
+ if ((_retVal = RegEnumValueW(myKey, __intVal(valueIndex),
nameBuffer, &nameSize,
NULL,
&valueType,
NULL, NULL)) == ERROR_SUCCESS) {
- nameBuffer[nameSize] = '\0';
- valueName = __MKSTRING(nameBuffer);
+ nameBuffer[nameSize] = 0;
+ valueName = __MKU16STRING(nameBuffer);
} else {
if ((_retVal != ERROR_PATH_NOT_FOUND)
&& (_retVal != ERROR_FILE_NOT_FOUND)
@@ -16348,13 +16475,25 @@
errorNumber notNil ifTrue:[
(OperatingSystem errorHolderForNumber:errorNumber) reportError.
].
+ valueName notNil ifTrue:[
+ valueName := valueName asSingleByteStringIfPossible
+ ].
^ valueName
"
|top sub|
top := self key:'HKEY_LOCAL_MACHINE'.
- sub := top subKeyAtIndex:0
+ sub := top valueNameAtIndex:0
+ "
+ "
+ |top sub|
+
+ top := self key:'HKEY_CURRENT_USER\Software\ExeptTest\Foo'.
+ sub := top valueNameAtIndex:0.
+ sub := top valueNameAtIndex:1.
+ sub := top valueNameAtIndex:2.
+ sub := top valueNameAtIndex:3.
"
!
@@ -16366,9 +16505,12 @@
REG_DWORD -> Integer
REG_QWORD -> Integer
REG_NONE -> nil
- "
-
- |stringArray retVal errorNumber|
+ aValueName name may be a string or unicode16string.
+ "
+
+ |nameW stringArray retVal errorNumber|
+
+ nameW := aValueName asUnicode16StringZ.
%{ /* STACK: 20000 */
HKEY myKey;
@@ -16382,18 +16524,9 @@
int val;
DWORD dataSize = sizeof(quickData);
unsigned char *dataBuffer = NULL;
-#define xxUSE_UNICODE
-#ifdef USE_UNICODE
-# error -- currently unsupported ---
-# define RegQueryValueEx RegQueryValueExW
-# define CHAR short
-#else
-# define RegQueryValueEx RegQueryValueExA
-# define CHAR char
-#endif
if (__isExternalAddressLike(__INST(handle))
- && __isStringLike(aValueName)) {
+ && __isUnicode16String(nameW)) {
int ret;
myKey = (HKEY)__externalAddressVal(__INST(handle));
@@ -16401,7 +16534,7 @@
/*
* try to get it with one call ...
*/
- ret = RegQueryValueExA(myKey, __stringVal(aValueName),
+ ret = RegQueryValueExW(myKey, __unicode16StringVal(nameW),
NULL,
&valueType,
(char *)&quickData,
@@ -16432,7 +16565,7 @@
break;
}
if (dataBuffer) {
- ret = RegQueryValueEx(myKey, __stringVal(aValueName),
+ ret = RegQueryValueExW(myKey, __unicode16StringVal(nameW),
NULL,
&valueType,
dataBuffer,
@@ -16461,11 +16594,7 @@
case REG_SZ:
case REG_EXPAND_SZ:
-#ifdef USE_UNICODE
retVal = __MKU16STRING(dataBuffer ? dataBuffer : quickData.smallDataBuffer);
-#else
- retVal = __MKSTRING(dataBuffer ? dataBuffer : quickData.smallDataBuffer);
-#endif
break;
#if 0
@@ -16515,7 +16644,7 @@
case REG_MULTI_SZ:
{
- CHAR *cp, *cp0;
+ WCHAR *cp, *cp0;
int ns, i;
cp0 = dataBuffer ? dataBuffer : quickData.smallDataBuffer;
@@ -16545,15 +16674,11 @@
i = 0;
while (*cp0) {
OBJ s;
- CHAR *cp;
+ WCHAR *cp;
cp = cp0;
while (*cp++) ;;
-#ifdef USE_UNICODE
s = __MKU16STRING(cp0); __ArrayInstPtr(stringArray)->a_element[i] = s; __STORE(stringArray, s);
-#else
- s = __MKSTRING(cp0); __ArrayInstPtr(stringArray)->a_element[i] = s; __STORE(stringArray, s);
-#endif
cp0 = cp;
i++;
}
@@ -16579,6 +16704,11 @@
(retVal isString and:[retVal isUnicodeString]) ifTrue:[
^ retVal asSingleByteStringIfPossible
].
+ retVal isArray ifTrue:[
+ retVal := retVal collect:[:s |
+ (s isString and:[s isUnicodeString]) ifTrue:[ s asSingleByteStringIfPossible ] ifFalse:[s]
+ ]
+ ].
^ retVal
"
@@ -16587,6 +16717,24 @@
key valueNamed:'CurrentVersion'
"
+ "ascii name:
+ |key|
+ key := self key:'HKEY_CURRENT_USER\Software\ExeptTest\Foo'.
+ key valueNamed:'BLA10'
+ "
+
+ "unicode name:
+ |key|
+ key := self key:'HKEY_CURRENT_USER\Software\ExeptTest\Foo'.
+ key valueNamed:'BLA10αβ'
+ "
+
+ "unicode name:
+ |key|
+ key := self key:'HKEY_CURRENT_USER\Software\ExeptTest\Foo'.
+ key valueNamed:'BLA10αβγ'
+ "
+
"
|key|
key := self key:'HKEY_CURRENT_USER\Software\ExeptTest'.
@@ -16598,14 +16746,42 @@
valueNamed:aValueName put:datum
"store a value; the value type depends upon the stored value:
- ByteArray -> REG_BINARY
- String -> REG_SZ
- Array of string -> REG_MULTI_SZ
- Integer -> REG_DWORD
- nil -> REG_NONE
- "
-
- |data stringArray errorNumber|
+ ByteArray -> REG_BINARY
+ String -> REG_SZ
+ Array of string -> REG_MULTI_SZ
+ Integer -> REG_DWORD
+ nil -> REG_NONE
+ aValueName name may be a string or unicode16string.
+ "
+
+ |nameA nameW dataA dataW stringArray errorNumber badArg |
+
+ nameA := aValueName asSingleByteStringIfPossible.
+ nameA isSingleByteString ifFalse:[
+ nameW := aValueName asUnicode16StringZ.
+ nameA := nil
+ ].
+
+ "/ when value is a unicode string, we'll need a unicode name as well.
+ "/ when name is a unicode name, we'll need a unicode string as well
+ dataA := datum.
+ dataA isString ifTrue:[
+ dataA := datum asSingleByteStringIfPossible.
+ dataA isSingleByteString ifFalse:[
+ nameW isNil ifTrue:[
+ nameW := aValueName asUnicode16StringZ.
+ nameA := nil.
+ ].
+ dataW := datum asUnicode16StringZ.
+ dataA := nil.
+ ] ifTrue:[
+ nameA isNil ifTrue:[
+ dataW := datum asUnicode16StringZ.
+ dataA := nil.
+ ].
+ ].
+ ].
+
%{
HKEY myKey;
DWORD valueType = -1;
@@ -16613,110 +16789,160 @@
DWORD dataSize = -1;
unsigned char *dataPointer = NULL;
int datumOk = 1, mustFreeData = 0;
-
- if (__isExternalAddressLike(__INST(handle))
- && __isStringLike(aValueName)) {
- int ret;
- OBJ cls;
-
- myKey = (HKEY)__externalAddressVal(__INST(handle));
-
- if (datum == nil) {
- valueType = REG_NONE;
- dataSize = 0;
- } else if (__isSmallInteger(datum)) {
- valueType = REG_DWORD;
- val = __intVal(datum);
- dataPointer = (unsigned char *)(&val);
- dataSize = sizeof(val);
- } else if (__isStringLike(datum)) {
- valueType = REG_SZ;
- dataPointer = __stringVal(datum);
- dataSize = __stringSize(datum) + 1;
- } else if (__Class(datum) == ByteArray) {
- valueType = REG_BINARY;
- dataPointer = __ByteArrayInstPtr(datum)->ba_element;
- dataSize = __byteArraySize(datum);
- } else if (__Class(datum) == LargeInteger) {
- valueType = REG_DWORD;
- val = __longIntVal(datum);
- if (val) {
- dataPointer = (unsigned char *)(&val);
- dataSize = sizeof(val);
- } else {
- datumOk = 0;
- }
- } else if (__Class(datum) == Array) {
- int i = 0, ns = 0, totalSize = 0;
-
- valueType = REG_MULTI_SZ;
-
- /*
- * must allocate a local buffer
- * find size ...
- */
- for (i=0; i<__arraySize(datum); i++) {
- OBJ s = __ArrayInstPtr(datum)->a_element[i];
-
- if (__isStringLike(s)) {
- totalSize += __stringSize(s) + 1;
- } else {
- datumOk = 0;
- break;
- }
- ns++;
- }
- if (datumOk) {
- char *cp;
-
- /*
- * allocate and fill...
- */
- totalSize ++;
- dataPointer = (char *)(malloc(totalSize));
- mustFreeData = 1;
- cp = dataPointer;
- for (i=0; i<__arraySize(datum); i++) {
- OBJ s = __ArrayInstPtr(datum)->a_element[i];
-
- strcpy(cp, __stringVal(s));
- cp += __stringSize(s);
- *cp++ = '\0';
- }
- *cp++ = '\0';
- dataSize = totalSize;
- }
- } else {
- datumOk = 0;
- }
-
- if (datumOk) {
- ret = RegSetValueExA(myKey, __stringVal(aValueName),
- 0, valueType,
- dataPointer, dataSize);
- if (mustFreeData) {
- free(dataPointer);
- }
- if (ret == ERROR_SUCCESS) {
- RETURN (true);
- }
- if ((ret != ERROR_PATH_NOT_FOUND)
- && (ret != ERROR_FILE_NOT_FOUND)) {
- errorNumber = __MKSMALLINT(ret);
- }
- }
- }
+ int ret;
+ OBJ cls;
+ WCHAR *_nameW = NULL;
+ char *_nameA = NULL;
+
+ badArg = true;
+
+ if (__isExternalAddressLike(__INST(handle))) {
+ myKey = (HKEY)__externalAddressVal(__INST(handle));
+
+ if (__isStringLike(nameA)) {
+ _nameA = __unicode16StringVal(aValueName);
+ }
+ if (__isUnicode16String(nameW)) {
+ _nameW = __unicode16StringVal(nameW);
+ }
+ if ((_nameA == NULL) && (_nameW == NULL)) {
+ errorNumber = __MKSMALLINT(-1);
+ goto getOutOfHere;
+ }
+
+ badArg = false;
+
+ if (datum == nil) {
+ valueType = REG_NONE;
+ dataSize = 0;
+ } else if (__isSmallInteger(datum)) {
+ valueType = REG_DWORD;
+ val = __intVal(datum);
+ dataPointer = (unsigned char *)(&val);
+ dataSize = sizeof(val);
+ } else if (__isStringLike(dataA)) {
+ valueType = REG_SZ;
+ dataPointer = __stringVal(dataA);
+ dataSize = __stringSize(dataA) + 1;
+ } else if (__isUnicode16String(dataW)) {
+ valueType = REG_SZ;
+ dataPointer = __unicode16StringVal(dataW);
+ dataSize = (__unicode16StringSize(dataW) + 1)*2;
+ nameA = NULL; // must use WideChar-interface
+ } else if (__Class(datum) == ByteArray) {
+ valueType = REG_BINARY;
+ dataPointer = __ByteArrayInstPtr(datum)->ba_element;
+ dataSize = __byteArraySize(datum);
+ } else if (__Class(datum) == LargeInteger) {
+ valueType = REG_DWORD;
+ val = __longIntVal(datum);
+ if (val) {
+ dataPointer = (unsigned char *)(&val);
+ dataSize = sizeof(val);
+ } else {
+ datumOk = 0;
+ }
+ } else if (__Class(datum) == Array) {
+ int i = 0, ns = 0, totalSize = 0;
+
+ nameW = NULL; // must use Ascii-interface (for now)
+
+ valueType = REG_MULTI_SZ;
+
+ /*
+ * must allocate a local buffer
+ * find size ...
+ */
+ for (i=0; i<__arraySize(datum); i++) {
+ OBJ s = __ArrayInstPtr(datum)->a_element[i];
+
+ if (__isStringLike(s)) {
+ totalSize += __stringSize(s) + 1;
+ } else {
+ datumOk = 0;
+ break;
+ }
+ ns++;
+ }
+ if (datumOk) {
+ char *cp;
+
+ /*
+ * allocate and fill...
+ */
+ totalSize ++;
+ dataPointer = (char *)(malloc(totalSize));
+ mustFreeData = 1;
+ cp = dataPointer;
+ for (i=0; i<__arraySize(datum); i++) {
+ OBJ s = __ArrayInstPtr(datum)->a_element[i];
+
+ strcpy(cp, __stringVal(s));
+ cp += __stringSize(s);
+ *cp++ = '\0';
+ }
+ *cp++ = '\0';
+ dataSize = totalSize;
+ }
+ } else {
+ datumOk = 0;
+ badArg = true;
+ }
+
+ if (datumOk) {
+ if (_nameA != NULL) {
+ ret = RegSetValueExA(myKey, _nameA,
+ 0, valueType,
+ dataPointer, dataSize);
+ } else {
+ ret = RegSetValueExW(myKey, _nameW,
+ 0, valueType,
+ dataPointer, dataSize);
+ }
+
+ if (mustFreeData) {
+ free(dataPointer);
+ }
+ if (ret == ERROR_SUCCESS) {
+ RETURN (true);
+ }
+ if ((ret != ERROR_PATH_NOT_FOUND)
+ && (ret != ERROR_FILE_NOT_FOUND)) {
+ errorNumber = __MKSMALLINT(ret);
+ }
+ }
+ }
+ getOutOfHere:
%}.
errorNumber notNil ifTrue:[
- (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ badArg ifTrue:[
+ self primitiveFailed:'bad argument'
+ ] ifFalse:[
+ (OperatingSystem errorHolderForNumber:errorNumber) reportError.
+ ]
].
^ false
- "
+ "unicode name:
+
+ |key|
+
+ key := self key:'HKEY_CURRENT_USER\Software\ExeptTest\Foo'.
+ key valueNamed:'BLA10αβγ' put:'1234567890'.
+ "
+
+ "unicode value; ascii name:
|key|
- key := self key:'HKEY_LOCAL_MACHINE\SOFTWARE\eXept\Smalltalk/X'.
- key valueNamed:'CurrentVersion' put:'3.5.2'
+ key := self key:'HKEY_CURRENT_USER\Software\ExeptTest\Foo'.
+ key valueNamed:'BLA10' put:'αβγ'
+ "
+
+ "both unicode:
+ |key|
+
+ key := self key:'HKEY_CURRENT_USER\Software\ExeptTest\Foo'.
+ key valueNamed:'BLA10αβ' put:'αβγ123αβγ'
"
! !