[svn] gpg-error - r238 - in trunk: . src

svn author wk cvs at cvs.gnupg.org
Wed Apr 14 12:57:59 CEST 2010


Author: wk
Date: 2010-04-14 12:57:58 +0200 (Wed, 14 Apr 2010)
New Revision: 238

Modified:
   trunk/ChangeLog
   trunk/src/Makefile.am
   trunk/src/init.c
   trunk/src/mkw32errmap.c
Log:
MAp some W32 error codes.


Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2010-03-15 12:21:59 UTC (rev 237)
+++ trunk/ChangeLog	2010-04-14 10:57:58 UTC (rev 238)
@@ -1,3 +1,11 @@
+2010-04-14  Werner Koch  <wk at g10code.com>
+
+	* src/init.c (_gpg_w32ce_get_errno): Add native error mapping.
+	* src/Makefile.am (mkw32errmap.map.c): New.
+	* src/mkw32errmap.c (struct table_s): Add field W32CODE2.
+	(table): Init this field.
+	(main): Add option --map.
+
 2010-03-15  Werner Koch  <wk at g10code.com>
 
 	* src/mkheader.awk: Add emacs local-var line.

Modified: trunk/src/Makefile.am
===================================================================
--- trunk/src/Makefile.am	2010-03-15 12:21:59 UTC (rev 237)
+++ trunk/src/Makefile.am	2010-04-14 10:57:58 UTC (rev 238)
@@ -47,14 +47,14 @@
 
 BUILT_SOURCES = err-sources.h err-codes.h code-to-errno.h code-from-errno.h \
 	err-sources-sym.h err-codes-sym.h errnos-sym.h gpg-error.h \
-	gpg-error.def extra-h.in
+	gpg-error.def extra-h.in mkw32errmap.map.c 
 
-tmp_files = _mkerrcodes.h _gpg-error.def.h mkw32errmap.tab.h 
+tmp_files = _mkerrcodes.h _gpg-error.def.h mkw32errmap.tab.h mkw32errmap.map.c 
 
 CLEANFILES = err-sources.h err-codes.h code-to-errno.h code-from-errno.h \
 	gpg-error.h mkerrcodes mkerrcodes.h gpg-error.def mkw32errmap.tab.h \
-	err-sources-sym.h err-codes-sym.h errnos-sym.h gpg-extra/errno.h \
-	extra-h.in $(tmp_files)
+	mkw32errmap.map.c err-sources-sym.h err-codes-sym.h errnos-sym.h \
+	gpg-extra/errno.h extra-h.in $(tmp_files)
 
 if HAVE_W32_SYSTEM
 arch_sources = w32-gettext.c
@@ -142,9 +142,14 @@
 mkw32errmap.tab.h: Makefile mkw32errmap.c
 	$(CPP) -DRESOLVE_MACROS $(srcdir)/mkw32errmap.c | \
 	      grep '{&mkw32errmap_marker' >$@
+mkw32errmap.map.c: mkw32errmap
+	./mkw32errmap --map > $@
 gpg-extra/errno.h: mkw32errmap
 	-$(MKDIR_P) gpg-extra
 	./mkw32errmap > $@
+else
+mkw32errmap.map.c:
+	echo "/*dummy*/" > $@
 endif
 
 # We use CC proper for preprocessing thus we have to convince it that

Modified: trunk/src/init.c
===================================================================
--- trunk/src/init.c	2010-03-15 12:21:59 UTC (rev 237)
+++ trunk/src/init.c	2010-04-14 10:57:58 UTC (rev 238)
@@ -31,6 +31,10 @@
 #include "gettext.h"
 #include "init.h"
 
+#ifdef HAVE_W32CE_SYSTEM
+# include "mkw32errmap.map.c"  /* Generated map_w32codes () */
+#endif
+
 
 /* Locale directory support.  */
 
@@ -239,12 +243,7 @@
 int
 _gpg_w32ce_get_errno (void)
 {
-  int err;
-
-  err = GetLastError ();
-  /* FIXME: Should we fold some W32 error codes into the same errno
-     value? */
-  return err;
+  return map_w32codes ( GetLastError () );
 }
 #endif /*HAVE_W32CE_SYSTEM*/
 

Modified: trunk/src/mkw32errmap.c
===================================================================
--- trunk/src/mkw32errmap.c	2010-03-15 12:21:59 UTC (rev 237)
+++ trunk/src/mkw32errmap.c	2010-04-14 10:57:58 UTC (rev 238)
@@ -72,47 +72,45 @@
   int *dummy;
   const char *name;
   int w32code;
+  int w32code2;
 };
 
 struct table_s table[] = 
   {
 #ifdef RESOLVE_MACROS
-#define X(a,b) \
-    {&mkw32errmap_marker, (a), (b)}
-   X( "EPERM",	ERROR_CANNOT_MAKE                 ), 
-   X( "ENOENT",	ERROR_FILE_NOT_FOUND              ),
-   X( "EINTR",	ERROR_INVALID_AT_INTERRUPT_TIME   ),
-   X( "EIO",	ERROR_IO_DEVICE                   ),
-   X( "ENXIO",	ERROR_FILE_INVALID                ),
-   X( "EBADF",	ERROR_INVALID_HANDLE              ),
-   X( "EAGAIN",	ERROR_MORE_DATA                   ),
-   /* FIXME:  Add WSAEWOULDBLOCK */
+#define X(a,b,c)                                 \
+    {&mkw32errmap_marker, (a), (b), (c)}
+   X( "EPERM",	ERROR_CANNOT_MAKE               , 0 ), 
+   X( "ENOENT",	ERROR_FILE_NOT_FOUND            , ERROR_PATH_NOT_FOUND ),
+   X( "EINTR",	ERROR_INVALID_AT_INTERRUPT_TIME , 0 ),
+   X( "EIO",	ERROR_IO_DEVICE                 , 0 ),
+   X( "ENXIO",	ERROR_FILE_INVALID              , 0 ),
+   X( "EBADF",	ERROR_INVALID_HANDLE            , 0 ),
+   X( "EAGAIN",	ERROR_MORE_DATA                 , WSAEWOULDBLOCK ),
 
-   X( "ENOMEM",	ERROR_NOT_ENOUGH_MEMORY           ),
-   X( "EACCES",	ERROR_ACCESS_DENIED               ),
-   X( "EFAULT",	ERROR_PROCESS_ABORTED             ),
-   X( "EBUSY",	ERROR_BUSY                        ),
-   X( "EEXIST",	ERROR_FILE_EXISTS                 ),
-   /* FIXME: Add WSAEADDRINUSE.  */
+   X( "ENOMEM",	ERROR_NOT_ENOUGH_MEMORY         , 0 ),
+   X( "EACCES",	ERROR_ACCESS_DENIED             , 0 ),
+   X( "EFAULT",	ERROR_PROCESS_ABORTED           , 0 ),
+   X( "EBUSY",	ERROR_BUSY                      , 0 ),
+   X( "EEXIST",	ERROR_FILE_EXISTS               , WSAEADDRINUSE  ),
 
-   X( "EXDEV",	ERROR_NOT_SAME_DEVICE             ),
-   X( "ENODEV",	ERROR_BAD_DEVICE                  ),
-   /* FIXME: ERROR_DEV_NOT_EXIST */
+   X( "EXDEV",	ERROR_NOT_SAME_DEVICE           , 0 ),
+   X( "ENODEV",	ERROR_BAD_DEVICE                , ERROR_DEV_NOT_EXIST ),
 
-   X( "ENOTDIR",ERROR_DIRECTORY                   ),
-   X( "EINVAL",	ERROR_INVALID_PARAMETER           ),
-   X( "ENFILE",	ERROR_NO_MORE_FILES               ),
-   X( "EMFILE",	ERROR_TOO_MANY_OPEN_FILES         ),
-   X( "ENOSPC",	ERROR_DISK_FULL                   ),
-   X( "EROFS",	ERROR_WRITE_PROTECT               ),
-   X( "EPIPE",	ERROR_BROKEN_PIPE                 ),
-   X( "ERANGE",	ERROR_ARITHMETIC_OVERFLOW         ),
-   X( "EDEADLOCK",ERROR_POSSIBLE_DEADLOCK         ),
-   X( "ENAMETOOLONG", ERROR_FILENAME_EXCED_RANGE  ),
-   X( "ENOLCK",	ERROR_SHARING_BUFFER_EXCEEDED     ),
-   X( "ENOSYS",	ERROR_NOT_SUPPORTED               ),
-   X( "ENOTEMPTY",ERROR_DIR_NOT_EMPTY             ),
-   X( "ESPIPE",  ERROR_SEEK_ON_DEVICE             ),
+   X( "ENOTDIR",ERROR_DIRECTORY                 , 0 ),
+   X( "EINVAL",	ERROR_INVALID_PARAMETER         , 0 ),
+   X( "ENFILE",	ERROR_NO_MORE_FILES             , 0 ),
+   X( "EMFILE",	ERROR_TOO_MANY_OPEN_FILES       , 0 ),
+   X( "ENOSPC",	ERROR_DISK_FULL                 , 0 ),
+   X( "EROFS",	ERROR_WRITE_PROTECT             , 0 ),
+   X( "EPIPE",	ERROR_BROKEN_PIPE               , 0 ),
+   X( "ERANGE",	ERROR_ARITHMETIC_OVERFLOW       , 0 ),
+   X( "EDEADLOCK",ERROR_POSSIBLE_DEADLOCK       , 0 ),
+   X( "ENAMETOOLONG", ERROR_FILENAME_EXCED_RANGE, 0 ),
+   X( "ENOLCK",	ERROR_SHARING_BUFFER_EXCEEDED   , 0 ),
+   X( "ENOSYS",	ERROR_NOT_SUPPORTED             , 0 ),
+   X( "ENOTEMPTY",ERROR_DIR_NOT_EMPTY           , 0 ),
+   X( "ESPIPE",  ERROR_SEEK_ON_DEVICE           , 0 ),
 #if 0 /* FIXME: Find appropriate mappings.  */
    X( "EILSEQ",		), 
    X( "EDOM",		), 
@@ -152,11 +150,29 @@
   for (idx=0; table[idx].name; idx++)
     ;
   qsort (table, idx, sizeof *table, compare_table);
+  
+  if (argc == 2 && !strcmp (argv[1], "--map"))
+    {
+      fputs ("static int\n"
+             "map_w32codes (int err)\n"
+             "{\n"
+             "  switch (err)\n"
+             "    {\n", stdout );
+      for (idx=0; table[idx].name; idx++)
+        if (table[idx].w32code2)
+          printf ("    case %d: return %d;\n",
+                  table[idx].w32code2, table[idx].w32code);
+      fputs ("    default: return err;\n"
+             "    }\n"
+             "}\n", stdout);
+    }
+  else
+    {
+      fputs (header_gpg_extra_errno_h, stdout);
+      for (idx=0; table[idx].name; idx++)
+        printf ("#define %-12s %5d\n", table[idx].name, table[idx].w32code);
+      fputs (footer_gpg_extra_errno_h, stdout);
+    }
 
-  fputs (header_gpg_extra_errno_h, stdout);
-  for (idx=0; table[idx].name; idx++)
-    printf ("#define %-12s %5d\n", table[idx].name, table[idx].w32code);
-  fputs (footer_gpg_extra_errno_h, stdout);
-
   return 0;
 }




More information about the Gnupg-commits mailing list