GNU bug report logs - #12968
Assume POSIX 1003.1-1988 or later for errno.h.

Previous Next

Package: emacs;

Reported by: Paul Eggert <eggert <at> cs.ucla.edu>

Date: Fri, 23 Nov 2012 09:07:02 UTC

Severity: normal

Tags: patch

Done: Paul Eggert <eggert <at> cs.ucla.edu>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 12968 in the body.
You can then email your comments to 12968 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#12968; Package emacs. (Fri, 23 Nov 2012 09:07:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Paul Eggert <eggert <at> cs.ucla.edu>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Fri, 23 Nov 2012 09:07:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: bug-gnu-emacs <at> gnu.org
Subject: Assume POSIX 1003.1-1988 or later for errno.h.
Date: Fri, 23 Nov 2012 01:04:27 -0800
Here's a patch to simplify Emacs by assuming
POSIX 1003.1-1988 or later for errno.h, which I plan
to install soon.  This should be safe as other parts of Emacs
are already assuming the relevant macros.  I haven't tested
this on Microsoft platforms though.

=== modified file 'lib-src/ChangeLog'
--- lib-src/ChangeLog	2012-11-23 08:28:06 +0000
+++ lib-src/ChangeLog	2012-11-23 08:56:17 +0000
@@ -1,5 +1,8 @@
 2012-11-23  Paul Eggert  <eggert <at> cs.ucla.edu>
 
+	Assume POSIX 1003.1-1988 or later for errno.h.
+	* movemail.c (main): Assume EAGAIN and EBUSY.
+
 	movemail: treat EACCES etc. failures as permanent
 	* movemail.c (main): Treat any link failure other than EEXIST as a
 	permanent failure, not just EPERM.  EACCES, for example.

=== modified file 'lib-src/movemail.c'
--- lib-src/movemail.c	2012-11-23 08:28:06 +0000
+++ lib-src/movemail.c	2012-11-23 08:56:17 +0000
@@ -430,22 +430,10 @@
 	 for certain failure codes.  */
       if (status < 0)
 	{
-	  if (++lockcount <= 5)
+	  if (++lockcount <= 5 && (errno == EAGAIN || errno == EBUSY))
 	    {
-#ifdef EAGAIN
-	      if (errno == EAGAIN)
-		{
-		  sleep (1);
-		  goto retry_lock;
-		}
-#endif
-#ifdef EBUSY
-	      if (errno == EBUSY)
-		{
-		  sleep (1);
-		  goto retry_lock;
-		}
-#endif
+	      sleep (1);
+	      goto retry_lock;
 	    }
 
 	  pfatal_with_name (inname);

=== modified file 'src/ChangeLog'
--- src/ChangeLog	2012-11-23 08:47:34 +0000
+++ src/ChangeLog	2012-11-23 08:59:17 +0000
@@ -1,3 +1,16 @@
+2012-11-23  Paul Eggert  <eggert <at> cs.ucla.edu>
+
+	Assume POSIX 1003.1-1988 or later for errno.h.
+	* dired.c (directory_files_internal, file_name_completion):
+	Assume EAGAIN and EINTR are defined.
+	* fileio.c (Fcopy_file): Assume EISDIR is defined.
+	* gmalloc.c (ENOMEM, EINVAL): Assume they're defined.
+	* gnutls.c (emacs_gnutls_write): Assume EAGAIN is defined.
+	* lread.c (readbyte_from_file): Assume EINTR is defined.
+	* process.c (wait_reading_process_output, send_process) [subprocesses]:
+	Assume EIO and EAGAIN are defined.
+	* unexcoff.c (write_segment): Assume EFAULT is defined.
+
 2012-11-23  Eli Zaretskii  <eliz <at> gnu.org>
 
 	* makefile.w32-in (globals.h, gl-stamp): Use $(SWITCHCHAR) instead

=== modified file 'src/dired.c'
--- src/dired.c	2012-11-23 07:48:43 +0000
+++ src/dired.c	2012-11-23 08:56:17 +0000
@@ -193,19 +193,15 @@
 
       errno = 0;
       dp = readdir (d);
-
-      if (dp == NULL && (0
-#ifdef EAGAIN
-			 || errno == EAGAIN
-#endif
-#ifdef EINTR
-			 || errno == EINTR
-#endif
-			 ))
-	{ QUIT; continue; }
-
-      if (dp == NULL)
-	break;
+      if (!dp)
+	{
+	  if (errno == EAGAIN || errno == EINTR)
+	    {
+	      QUIT;
+	      continue;
+	    }
+	  break;
+	}
 
       len = dirent_namelen (dp);
       name = finalname = make_unibyte_string (dp->d_name, len);
@@ -480,17 +476,15 @@
 
       errno = 0;
       dp = readdir (d);
-      if (dp == NULL && (0
-# ifdef EAGAIN
-			 || errno == EAGAIN
-# endif
-# ifdef EINTR
-			 || errno == EINTR
-# endif
-			 ))
-	{ QUIT; continue; }
-
-      if (!dp) break;
+      if (!dp)
+	{
+	  if (errno == EAGAIN || errno == EINTR)
+	    {
+	      QUIT;
+	      continue;
+	    }
+	  break;
+	}
 
       len = dirent_namelen (dp);
 

=== modified file 'src/fileio.c'
--- src/fileio.c	2012-11-21 21:06:52 +0000
+++ src/fileio.c	2012-11-23 08:56:17 +0000
@@ -1995,10 +1995,8 @@
     {
       if (!(S_ISREG (st.st_mode)) && !(S_ISLNK (st.st_mode)))
 	{
-#if defined (EISDIR)
 	  /* Get a better looking error message. */
 	  errno = EISDIR;
-#endif /* EISDIR */
 	  report_file_error ("Non-regular file", Fcons (file, Qnil));
 	}
     }

=== modified file 'src/gmalloc.c'
--- src/gmalloc.c	2012-10-01 06:36:54 +0000
+++ src/gmalloc.c	2012-11-23 08:56:17 +0000
@@ -1645,14 +1645,6 @@
   return result;
 }
 
-#ifndef ENOMEM
-#define ENOMEM 12
-#endif
-
-#ifndef EINVAL
-#define EINVAL 22
-#endif
-
 int
 posix_memalign (void **memptr, size_t alignment, size_t size)
 {

=== modified file 'src/gnutls.c'
--- src/gnutls.c	2012-09-23 19:36:31 +0000
+++ src/gnutls.c	2012-11-23 08:56:17 +0000
@@ -359,12 +359,7 @@
 
   if (proc->gnutls_initstage != GNUTLS_STAGE_READY)
     {
-#ifdef EWOULDBLOCK
-      errno = EWOULDBLOCK;
-#endif
-#ifdef EAGAIN
       errno = EAGAIN;
-#endif
       return 0;
     }
 
@@ -384,14 +379,7 @@
 		 appropriately so that send_process retries the
 		 correct way instead of erroring out. */
 	      if (rtnval == GNUTLS_E_AGAIN)
-		{
-#ifdef EWOULDBLOCK
-		  errno = EWOULDBLOCK;
-#endif
-#ifdef EAGAIN
-		  errno = EAGAIN;
-#endif
-		}
+		errno = EAGAIN;
 	      break;
 	    }
 	}

=== modified file 'src/keyboard.c'
--- src/keyboard.c	2012-11-17 22:12:47 +0000
+++ src/keyboard.c	2012-11-23 08:56:17 +0000
@@ -6986,10 +6986,7 @@
             an EAGAIN error.  Does anybody know of a situation
             where a retry is actually needed?  */
 #if 0
-         nread < 0 && (errno == EAGAIN
-#ifdef EFAULT
-                       || errno == EFAULT
-#endif
+         nread < 0 && (errno == EAGAIN || errno == EFAULT
 #ifdef EBADSLT
                        || errno == EBADSLT
 #endif

=== modified file 'src/lread.c'
--- src/lread.c	2012-11-20 20:06:17 +0000
+++ src/lread.c	2012-11-23 08:56:17 +0000
@@ -440,7 +440,6 @@
   block_input ();
   c = getc (instream);
 
-#ifdef EINTR
   /* Interrupted reads have been observed while reading over the network.  */
   while (c == EOF && ferror (instream) && errno == EINTR)
     {
@@ -450,7 +449,6 @@
       clearerr (instream);
       c = getc (instream);
     }
-#endif
 
   unblock_input ();
 

=== modified file 'src/process.c'
--- src/process.c	2012-11-17 22:12:47 +0000
+++ src/process.c	2012-11-23 08:56:17 +0000
@@ -4432,14 +4432,8 @@
 		  total_nread += nread;
 		  got_some_input = 1;
 		}
-#ifdef EIO
-	      else if (nread == -1 && EIO == errno)
-		break;
-#endif
-#ifdef EAGAIN
-	      else if (nread == -1 && EAGAIN == errno)
-		break;
-#endif
+	      else if (nread == -1 && (errno == EIO || errno == EAGAIN))
+		break;
 #ifdef EWOULDBLOCK
 	      else if (nread == -1 && EWOULDBLOCK == errno)
 		break;
@@ -5517,13 +5511,10 @@
 
 	  if (rv < 0)
 	    {
-	      if (0
+	      if (errno == EAGAIN
 #ifdef EWOULDBLOCK
 		  || errno == EWOULDBLOCK
 #endif
-#ifdef EAGAIN
-		  || errno == EAGAIN
-#endif
 		  )
 		/* Buffer is full.  Wait, accepting input;
 		   that may allow the program

=== modified file 'src/unexcoff.c'
--- src/unexcoff.c	2012-09-15 07:06:56 +0000
+++ src/unexcoff.c	2012-11-23 08:56:17 +0000
@@ -332,11 +332,7 @@
 	 a gap between the old text segment and the old data segment.
 	 This gap has probably been remapped into part of the text segment.
 	 So write zeros for it.  */
-      if (ret == -1
-#ifdef EFAULT
-	  && errno == EFAULT
-#endif
-	  )
+      if (ret == -1 && errno == EFAULT)
 	{
 	  /* Write only a page of zeros at once,
 	     so that we don't overshoot the start





Added tag(s) patch. Request was from Paul Eggert <eggert <at> cs.ucla.edu> to control <at> debbugs.gnu.org. (Fri, 23 Nov 2012 09:09:01 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#12968; Package emacs. (Fri, 23 Nov 2012 09:41:02 GMT) Full text and rfc822 format available.

Message #10 received at 12968 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: 12968 <at> debbugs.gnu.org
Subject: Re: bug#12968: Assume POSIX 1003.1-1988 or later for errno.h.
Date: Fri, 23 Nov 2012 11:38:30 +0200
> Date: Fri, 23 Nov 2012 01:04:27 -0800
> From: Paul Eggert <eggert <at> cs.ucla.edu>
> 
> Here's a patch to simplify Emacs by assuming
> POSIX 1003.1-1988 or later for errno.h, which I plan
> to install soon.  This should be safe as other parts of Emacs
> are already assuming the relevant macros.  I haven't tested
> this on Microsoft platforms though.

Looks OK for MS-Windows, all the referenced errno values are defined
in errno.h.




Reply sent to Paul Eggert <eggert <at> cs.ucla.edu>:
You have taken responsibility. (Tue, 27 Nov 2012 05:20:02 GMT) Full text and rfc822 format available.

Notification sent to Paul Eggert <eggert <at> cs.ucla.edu>:
bug acknowledged by developer. (Tue, 27 Nov 2012 05:20:02 GMT) Full text and rfc822 format available.

Message #15 received at 12968-done <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 12968-done <at> debbugs.gnu.org
Subject: Re: bug#12968: Assume POSIX 1003.1-1988 or later for errno.h.
Date: Mon, 26 Nov 2012 21:17:42 -0800
On 11/23/2012 01:38 AM, Eli Zaretskii wrote:
> Looks OK for MS-Windows, all the referenced errno values are defined
> in errno.h.

Thanks for the review, I committed the patch as
trunk bzr 111016.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 25 Dec 2012 12:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 11 years and 130 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.