Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2000-08-22 07:58:47 +0400
committerChristopher Faylor <me@cgf.cx>2000-08-22 07:58:47 +0400
commit9e2baf8dfad8c1d2ebb00363a83be49767eca77f (patch)
treea66c765b39b52aec0e0cc28b40522a7964b06b0c /winsup/cygwin/cygerrno.h
parent6b85369f8267a463c02571f2bd4b2406d185ee9a (diff)
* 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.h34
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;