__set_errno (const char *fn, int ln, int 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))
save_errno (int what) {saved = get_errno (); set_errno (what); }
void set (int what) {set_errno (what); saved = what;}
void reset () {saved = get_errno ();}
- ~save_errno () {errno = saved;}
+ ~save_errno () {errno = _impure_ptr->_errno = saved;}
};
extern const char *__sp_fn;
memcpy (outenv, src, 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);
else
{
seterrno_from_win_error (const char *file, int line, DWORD 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
SetLastError (code);
syscall_printf ("%s:%d status %y -> windows error %u",
file, line, status, code);
- errno = geterrno_from_win_error (code, EACCES);
+ errno = _impure_ptr->_errno = geterrno_from_win_error (code, EACCES);
}
static char *