From 453185b136e3c065cd367e3cdf980126b31e709b Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Sun, 28 Aug 2005 17:30:34 +0000 Subject: [PATCH] * cygwin.din: Correct readdir_r typo. --- winsup/cygwin/ChangeLog | 4 + winsup/cygwin/cygtls.h | 2 +- winsup/cygwin/cygwin.din | 2 +- winsup/cygwin/errno.cc | 47 ++++++---- winsup/cygwin/exceptions.cc | 2 +- winsup/cygwin/include/cygwin/version.h | 3 +- winsup/cygwin/tlsoffsets.h | 122 ++++++++++++------------- 7 files changed, 99 insertions(+), 83 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 2d891b82e..873ef5fa1 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,7 @@ +2005-08-28 Christopher Faylor + + * cygwin.din: Correct readdir_r typo. + 2005-08-27 Bas van Gompel * dir.cc (readdir_r): Invert sense on error test. diff --git a/winsup/cygwin/cygtls.h b/winsup/cygwin/cygtls.h index 3a5adba8a..777031cd1 100644 --- a/winsup/cygwin/cygtls.h +++ b/winsup/cygwin/cygtls.h @@ -97,7 +97,7 @@ struct _local_storage struct sockaddr_in exitsock_sin; /* strerror */ - char strerror_buf[20]; + char strerror_buf[sizeof ("Unknown error 4294967295")]; /* sysloc.cc */ char *process_ident; // note: malloced diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din index e8a98c4f8..4543352ad 100644 --- a/winsup/cygwin/cygwin.din +++ b/winsup/cygwin/cygwin.din @@ -1120,7 +1120,7 @@ read SIGFE _read = read SIGFE readdir SIGFE _readdir = readdir SIGFE -readdir_r = readdir SIGFE +readdir_r SIGFE readlink SIGFE _readlink = readlink SIGFE readv SIGFE diff --git a/winsup/cygwin/errno.cc b/winsup/cygwin/errno.cc index 1d9220f21..a33a41945 100644 --- a/winsup/cygwin/errno.cc +++ b/winsup/cygwin/errno.cc @@ -318,27 +318,38 @@ seterrno (const char *file, int line) extern char *_user_strerror _PARAMS ((int)); -/* FIXME: Why is strerror() a long switch and not just: - return sys_errlist[errnum]; - (or moral equivalent). - Some entries in sys_errlist[] don't match the corresponding - entries in strerror(). This seems odd. -*/ +static char * +strerror_worker (int errnum) +{ + char *res; + if (errnum >= 0 && errnum < _sys_nerr) + res = (char *) _sys_errlist [errnum]; + else + res = NULL; + return res; +} -/* CYGWIN internal */ /* strerror: convert from errno values to error strings */ extern "C" char * strerror (int errnum) { - const char *error; - if (errnum >= 0 && errnum < _sys_nerr) - error = _sys_errlist [errnum]; - else - { - __small_sprintf (_my_tls.locals.strerror_buf, "error %d", errnum); - error = _my_tls.locals.strerror_buf; - } - /* FIXME: strerror should really be const in the appropriate newlib - include files. */ - return (char *) error; + char *errstr = strerror_worker (errnum); + if (!errstr) + __small_sprintf (errstr = _my_tls.locals.strerror_buf, "Unknown error %u", + (unsigned) errnum); + return errstr; } + +#if 0 +extern "C" int +strerror_r (int errnum, char *buf, size_t n) +{ + char *errstr = strerror_worker (errnum); + if (!errstr) + return EINVAL; + if (strlen (errstr) >= n) + return ERANGE; + strcpy (buf, errstr); + return 0; +} +#endif diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index e75ee610a..98539d41d 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -984,11 +984,11 @@ set_signal_mask (sigset_t newmask, sigset_t& oldmask) sigproc_printf ("oldmask %p, newmask %p, mask_bits %p", oldmask, newmask, mask_bits); oldmask = newmask; + mask_sync.release (); if (mask_bits) sig_dispatch_pending (true); else sigproc_printf ("not calling sig_dispatch_pending"); - mask_sync.release (); return; } diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 7984df7f2..d55253608 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -266,12 +266,13 @@ details. */ 137: fts_children, fts_close, fts_get_clientptr, fts_get_stream, fts_open, fts_read, fts_set, fts_set_clientptr, ftw, nftw. 138: Export readdir_r. + 139: Change strerror_r to be ISO C compliant. */ /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 138 +#define CYGWIN_VERSION_API_MINOR 139 /* There is also a compatibity version number associated with the shared memory regions. It is incremented when incompatible diff --git a/winsup/cygwin/tlsoffsets.h b/winsup/cygwin/tlsoffsets.h index 448f24f8f..fa79106bb 100644 --- a/winsup/cygwin/tlsoffsets.h +++ b/winsup/cygwin/tlsoffsets.h @@ -1,125 +1,125 @@ //;# autogenerated: Do not edit. -//; $tls::sizeof__cygtls = 3980; -//; $tls::func = -3980; +//; $tls::sizeof__cygtls = 3988; +//; $tls::func = -3988; //; $tls::pfunc = 0; -//; $tls::saved_errno = -3976; +//; $tls::saved_errno = -3984; //; $tls::psaved_errno = 4; -//; $tls::sa_flags = -3972; +//; $tls::sa_flags = -3980; //; $tls::psa_flags = 8; -//; $tls::oldmask = -3968; +//; $tls::oldmask = -3976; //; $tls::poldmask = 12; -//; $tls::deltamask = -3964; +//; $tls::deltamask = -3972; //; $tls::pdeltamask = 16; -//; $tls::event = -3960; +//; $tls::event = -3968; //; $tls::pevent = 20; -//; $tls::errno_addr = -3956; +//; $tls::errno_addr = -3964; //; $tls::perrno_addr = 24; -//; $tls::initialized = -3952; +//; $tls::initialized = -3960; //; $tls::pinitialized = 28; -//; $tls::sigmask = -3948; +//; $tls::sigmask = -3956; //; $tls::psigmask = 32; -//; $tls::sigwait_mask = -3944; +//; $tls::sigwait_mask = -3952; //; $tls::psigwait_mask = 36; -//; $tls::sigwait_info = -3940; +//; $tls::sigwait_info = -3948; //; $tls::psigwait_info = 40; -//; $tls::threadkill = -3936; +//; $tls::threadkill = -3944; //; $tls::pthreadkill = 44; -//; $tls::infodata = -3932; +//; $tls::infodata = -3940; //; $tls::pinfodata = 48; -//; $tls::tid = -3784; +//; $tls::tid = -3792; //; $tls::ptid = 196; -//; $tls::local_clib = -3780; +//; $tls::local_clib = -3788; //; $tls::plocal_clib = 200; -//; $tls::__dontuse = -3780; +//; $tls::__dontuse = -3788; //; $tls::p__dontuse = 200; -//; $tls::locals = -2716; +//; $tls::locals = -2724; //; $tls::plocals = 1264; //; $tls::_ctinfo = -1092; -//; $tls::p_ctinfo = 2888; +//; $tls::p_ctinfo = 2896; //; $tls::_myfault = -1088; -//; $tls::p_myfault = 2892; +//; $tls::p_myfault = 2900; //; $tls::_myfault_errno = -1084; -//; $tls::p_myfault_errno = 2896; +//; $tls::p_myfault_errno = 2904; //; $tls::wq = -1080; -//; $tls::pwq = 2900; +//; $tls::pwq = 2908; //; $tls::prev = -1052; -//; $tls::pprev = 2928; +//; $tls::pprev = 2936; //; $tls::next = -1048; -//; $tls::pnext = 2932; +//; $tls::pnext = 2940; //; $tls::stackptr = -1044; -//; $tls::pstackptr = 2936; +//; $tls::pstackptr = 2944; //; $tls::sig = -1040; -//; $tls::psig = 2940; +//; $tls::psig = 2948; //; $tls::incyg = -1036; -//; $tls::pincyg = 2944; +//; $tls::pincyg = 2952; //; $tls::spinning = -1032; -//; $tls::pspinning = 2948; +//; $tls::pspinning = 2956; //; $tls::stacklock = -1028; -//; $tls::pstacklock = 2952; +//; $tls::pstacklock = 2960; //; $tls::stack = -1024; -//; $tls::pstack = 2956; +//; $tls::pstack = 2964; //; $tls::padding = 0; -//; $tls::ppadding = 3980; +//; $tls::ppadding = 3988; //; __DATA__ -#define tls_func (-3980) +#define tls_func (-3988) #define tls_pfunc (0) -#define tls_saved_errno (-3976) +#define tls_saved_errno (-3984) #define tls_psaved_errno (4) -#define tls_sa_flags (-3972) +#define tls_sa_flags (-3980) #define tls_psa_flags (8) -#define tls_oldmask (-3968) +#define tls_oldmask (-3976) #define tls_poldmask (12) -#define tls_deltamask (-3964) +#define tls_deltamask (-3972) #define tls_pdeltamask (16) -#define tls_event (-3960) +#define tls_event (-3968) #define tls_pevent (20) -#define tls_errno_addr (-3956) +#define tls_errno_addr (-3964) #define tls_perrno_addr (24) -#define tls_initialized (-3952) +#define tls_initialized (-3960) #define tls_pinitialized (28) -#define tls_sigmask (-3948) +#define tls_sigmask (-3956) #define tls_psigmask (32) -#define tls_sigwait_mask (-3944) +#define tls_sigwait_mask (-3952) #define tls_psigwait_mask (36) -#define tls_sigwait_info (-3940) +#define tls_sigwait_info (-3948) #define tls_psigwait_info (40) -#define tls_threadkill (-3936) +#define tls_threadkill (-3944) #define tls_pthreadkill (44) -#define tls_infodata (-3932) +#define tls_infodata (-3940) #define tls_pinfodata (48) -#define tls_tid (-3784) +#define tls_tid (-3792) #define tls_ptid (196) -#define tls_local_clib (-3780) +#define tls_local_clib (-3788) #define tls_plocal_clib (200) -#define tls___dontuse (-3780) +#define tls___dontuse (-3788) #define tls_p__dontuse (200) -#define tls_locals (-2716) +#define tls_locals (-2724) #define tls_plocals (1264) #define tls__ctinfo (-1092) -#define tls_p_ctinfo (2888) +#define tls_p_ctinfo (2896) #define tls__myfault (-1088) -#define tls_p_myfault (2892) +#define tls_p_myfault (2900) #define tls__myfault_errno (-1084) -#define tls_p_myfault_errno (2896) +#define tls_p_myfault_errno (2904) #define tls_wq (-1080) -#define tls_pwq (2900) +#define tls_pwq (2908) #define tls_prev (-1052) -#define tls_pprev (2928) +#define tls_pprev (2936) #define tls_next (-1048) -#define tls_pnext (2932) +#define tls_pnext (2940) #define tls_stackptr (-1044) -#define tls_pstackptr (2936) +#define tls_pstackptr (2944) #define tls_sig (-1040) -#define tls_psig (2940) +#define tls_psig (2948) #define tls_incyg (-1036) -#define tls_pincyg (2944) +#define tls_pincyg (2952) #define tls_spinning (-1032) -#define tls_pspinning (2948) +#define tls_pspinning (2956) #define tls_stacklock (-1028) -#define tls_pstacklock (2952) +#define tls_pstacklock (2960) #define tls_stack (-1024) -#define tls_pstack (2956) +#define tls_pstack (2964) #define tls_padding (0) -#define tls_ppadding (3980) +#define tls_ppadding (3988)