Revert "errno: Stop using _impure_ptr->_errno completely"

This reverts commit 44b1746a41.

Bad idea.  _impure_ptr->_errno is used by newlib

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2017-07-19 10:28:39 +02:00
parent bb12a1e587
commit 78ade082fe
3 changed files with 6 additions and 5 deletions

View File

@ -30,7 +30,7 @@ extern inline int
__set_errno (const char *fn, int ln, int val) __set_errno (const char *fn, int ln, int val)
{ {
debug_printf ("%s:%d setting errno %d", fn, ln, val); debug_printf ("%s:%d setting errno %d", fn, ln, val);
return errno = val; return errno = _impure_ptr->_errno = val;
} }
#define set_errno(val) __set_errno (__PRETTY_FUNCTION__, __LINE__, (val)) #define set_errno(val) __set_errno (__PRETTY_FUNCTION__, __LINE__, (val))
@ -45,7 +45,7 @@ class save_errno
save_errno (int what) {saved = get_errno (); set_errno (what); } save_errno (int what) {saved = get_errno (); set_errno (what); }
void set (int what) {set_errno (what); saved = what;} void set (int what) {set_errno (what); saved = what;}
void reset () {saved = get_errno ();} void reset () {saved = get_errno ();}
~save_errno () {errno = saved;} ~save_errno () {errno = _impure_ptr->_errno = saved;}
}; };
extern const char *__sp_fn; extern const char *__sp_fn;

View File

@ -454,7 +454,8 @@ posify_maybe (char **here, const char *value, char *outenv)
memcpy (outenv, src, len); memcpy (outenv, src, len);
char *newvalue = outenv + len; char *newvalue = outenv + len;
if (!conv->toposix (value, newvalue, NT_MAX_PATH - len) || errno != EIDRM) if (!conv->toposix (value, newvalue, NT_MAX_PATH - len)
|| _impure_ptr->_errno != EIDRM)
conv->add_cache (newvalue, *value != '/' ? value : NULL); conv->add_cache (newvalue, *value != '/' ? value : NULL);
else else
{ {

View File

@ -339,7 +339,7 @@ void __reg3
seterrno_from_win_error (const char *file, int line, DWORD code) seterrno_from_win_error (const char *file, int line, DWORD code)
{ {
syscall_printf ("%s:%d windows error %u", file, line, code); syscall_printf ("%s:%d windows error %u", file, line, code);
errno = geterrno_from_win_error (code, EACCES); errno = _impure_ptr->_errno = geterrno_from_win_error (code, EACCES);
} }
int __reg2 int __reg2
@ -357,7 +357,7 @@ seterrno_from_nt_status (const char *file, int line, NTSTATUS status)
SetLastError (code); SetLastError (code);
syscall_printf ("%s:%d status %y -> windows error %u", syscall_printf ("%s:%d status %y -> windows error %u",
file, line, status, code); file, line, status, code);
errno = geterrno_from_win_error (code, EACCES); errno = _impure_ptr->_errno = geterrno_from_win_error (code, EACCES);
} }
static char * static char *