Alexandre Julliard : msvcrt: Added _sys_errlist (based on a patch by Uwe Bonnes).

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jan 23 14:48:07 CST 2006


Module: wine
Branch: refs/heads/master
Commit: 401ead5c8ff854c296ac02771356472190b7d2f3
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=401ead5c8ff854c296ac02771356472190b7d2f3

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Jan 23 19:30:21 2006 +0100

msvcrt: Added _sys_errlist (based on a patch by Uwe Bonnes).

---

 dlls/msvcrt/data.c  |    3 --
 dlls/msvcrt/errno.c |   91 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 91 insertions(+), 3 deletions(-)

diff --git a/dlls/msvcrt/data.c b/dlls/msvcrt/data.c
index 67f9625..a01757b 100644
--- a/dlls/msvcrt/data.c
+++ b/dlls/msvcrt/data.c
@@ -43,8 +43,6 @@ unsigned int MSVCRT_osversion; /* FIXME:
 unsigned int MSVCRT__winmajor;
 unsigned int MSVCRT__winminor;
 unsigned int MSVCRT__winver;
-unsigned int MSVCRT__sys_nerr; /* FIXME: not accessible from Winelib apps */
-char**       MSVCRT__sys_errlist; /* FIXME: not accessible from Winelib apps */
 unsigned int MSVCRT___setlc_active;
 unsigned int MSVCRT___unguarded_readlc_active;
 double MSVCRT__HUGE;
@@ -270,7 +268,6 @@ void msvcrt_init_args(void)
   MSVCRT_osversion   = version & 0xFFFF;
   MSVCRT_osminor     = version & 0xFF;
   MSVCRT_osmajor     = (version>>8) & 0xFF;
-  MSVCRT__sys_nerr   = 43;
   MSVCRT__HUGE = HUGE_VAL;
   MSVCRT___setlc_active = 0;
   MSVCRT___unguarded_readlc_active = 0;
diff --git a/dlls/msvcrt/errno.c b/dlls/msvcrt/errno.c
index 5d014a6..cca743d 100644
--- a/dlls/msvcrt/errno.c
+++ b/dlls/msvcrt/errno.c
@@ -26,6 +26,97 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
 
+/* error strings generated with glibc strerror */
+char str_success[]       = "Success";
+char str_EPERM[]         = "Operation not permitted";
+char str_ENOENT[]        = "No such file or directory";
+char str_ESRCH[]         = "No such process";
+char str_EINTR[]         = "Interrupted system call";
+char str_EIO[]           = "Input/output error";
+char str_ENXIO[]         = "No such device or address";
+char str_E2BIG[]         = "Argument list too long";
+char str_ENOEXEC[]       = "Exec format error";
+char str_EBADF[]         = "Bad file descriptor";
+char str_ECHILD[]        = "No child processes";
+char str_EAGAIN[]        = "Resource temporarily unavailable";
+char str_ENOMEM[]        = "Cannot allocate memory";
+char str_EACCES[]        = "Permission denied";
+char str_EFAULT[]        = "Bad address";
+char str_EBUSY[]         = "Device or resource busy";
+char str_EEXIST[]        = "File exists";
+char str_EXDEV[]         = "Invalid cross-device link";
+char str_ENODEV[]        = "No such device";
+char str_ENOTDIR[]       = "Not a directory";
+char str_EISDIR[]        = "Is a directory";
+char str_EINVAL[]        = "Invalid argument";
+char str_ENFILE[]        = "Too many open files in system";
+char str_EMFILE[]        = "Too many open files";
+char str_ENOTTY[]        = "Inappropriate ioctl for device";
+char str_EFBIG[]         = "File too large";
+char str_ENOSPC[]        = "No space left on device";
+char str_ESPIPE[]        = "Illegal seek";
+char str_EROFS[]         = "Read-only file system";
+char str_EMLINK[]        = "Too many links";
+char str_EPIPE[]         = "Broken pipe";
+char str_EDOM[]          = "Numerical argument out of domain";
+char str_ERANGE[]        = "Numerical result out of range";
+char str_EDEADLK[]       = "Resource deadlock avoided";
+char str_ENAMETOOLONG[]  = "File name too long";
+char str_ENOLCK[]        = "No locks available";
+char str_ENOSYS[]        = "Function not implemented";
+char str_ENOTEMPTY[]     = "Directory not empty";
+char str_EILSEQ[]        = "Invalid or incomplete multibyte or wide character";
+char str_generic_error[] = "Unknown error";
+
+char *MSVCRT__sys_errlist[] =
+{
+    str_success,
+    str_EPERM,
+    str_ENOENT,
+    str_ESRCH,
+    str_EINTR,
+    str_EIO,
+    str_ENXIO,
+    str_E2BIG,
+    str_ENOEXEC,
+    str_EBADF,
+    str_ECHILD,
+    str_EAGAIN,
+    str_ENOMEM,
+    str_EACCES,
+    str_EFAULT,
+    str_generic_error,
+    str_EBUSY,
+    str_EEXIST,
+    str_EXDEV,
+    str_ENODEV,
+    str_ENOTDIR,
+    str_EISDIR,
+    str_EINVAL,
+    str_ENFILE,
+    str_EMFILE,
+    str_ENOTTY,
+    str_generic_error,
+    str_EFBIG,
+    str_ENOSPC,
+    str_ESPIPE,
+    str_EROFS,
+    str_EMLINK,
+    str_EPIPE,
+    str_EDOM,
+    str_ERANGE,
+    str_generic_error,
+    str_EDEADLK,
+    str_generic_error,
+    str_ENAMETOOLONG,
+    str_ENOLCK,
+    str_ENOSYS,
+    str_ENOTEMPTY,
+    str_EILSEQ,
+    str_generic_error
+};
+
+unsigned int MSVCRT__sys_nerr = sizeof(MSVCRT__sys_errlist)/sizeof(MSVCRT__sys_errlist[0]) - 1;
 
 /* INTERNAL: Set the crt and dos errno's from the OS error given. */
 void msvcrt_set_errno(int err)




More information about the wine-cvs mailing list