GNU bug report logs -
#12968
Assume POSIX 1003.1-1988 or later for errno.h.
Previous Next
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.
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your bug report
#12968: Assume POSIX 1003.1-1988 or later for errno.h.
which was filed against the emacs package, has been closed.
The explanation is attached below, along with your original report.
If you require more details, please reply to 12968 <at> debbugs.gnu.org.
--
12968: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12968
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
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.
[Message part 3 (message/rfc822, inline)]
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
This bug report was last modified 12 years and 180 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.