diff options
author | Christopher Faylor <me@cgf.cx> | 2000-08-22 03:58:47 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2000-08-22 03:58:47 +0000 |
commit | 9e2baf8dfad8c1d2ebb00363a83be49767eca77f (patch) | |
tree | a66c765b39b52aec0e0cc28b40522a7964b06b0c /winsup/cygwin/cygerrno.h | |
parent | 6b85369f8267a463c02571f2bd4b2406d185ee9a (diff) | |
download | cygnal-9e2baf8dfad8c1d2ebb00363a83be49767eca77f.tar.gz cygnal-9e2baf8dfad8c1d2ebb00363a83be49767eca77f.tar.bz2 cygnal-9e2baf8dfad8c1d2ebb00363a83be49767eca77f.zip |
* cygerrno.h: New file. Use this throughout whenever errno manipulation is
required.
* errno.cc: Use DWORD to hold Windows errors.
(geterrno_from_win_error): New function.
(seterrno_from_win_error): Use geterrno_from_win_error to convert supplied
windows error (suggested by Corinna Vinschen).
* path.cc (symlink_info): Add error element.
* path.cc (path_conv::check): Remove errno setting. Use new symlink_info errno
element to set path_conv error, where appropriate.
(symlink_info::check): Set error element rather than attempting to manipulate
errno. Add more checks for trailing / and /.. even though they are currently
useless. Avoid setting EINVAL.
* path.cc (normalize_posix_path): Correct check for trailing /.
Diffstat (limited to 'winsup/cygwin/cygerrno.h')
-rw-r--r-- | winsup/cygwin/cygerrno.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/winsup/cygwin/cygerrno.h b/winsup/cygwin/cygerrno.h new file mode 100644 index 000000000..c83120095 --- /dev/null +++ b/winsup/cygwin/cygerrno.h @@ -0,0 +1,34 @@ +/* cygerrno.h: main Cygwin header file. + + Copyright 2000 Red Hat, Inc. + +This file is part of Cygwin. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. */ + +void __stdcall seterrno_from_win_error (const char *file, int line, DWORD code); +void __stdcall seterrno (const char *, int line); +int __stdcall geterrno_from_win_error (DWORD code, int deferrno); + +#define __seterrno() seterrno (__FILE__, __LINE__) +#define __seterrno_from_win_error(val) seterrno_from_win_error (__FILE__, __LINE__, val) + +#define set_errno(val) (_impure_ptr->_errno = (val)) +#define get_errno() (_impure_ptr->_errno) +extern "C" void __stdcall set_sig_errno (int e); + +class save_errno + { + int saved; + public: + save_errno () {saved = get_errno ();} + 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 () {set_errno (saved);} + }; + +extern const char *__sp_fn; +extern int __sp_ln; |