diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2007-06-12 19:24:46 +0400 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2007-06-12 19:24:46 +0400 |
commit | ead5b131e0755ed69f0b67def2fa8c8fefca5d55 (patch) | |
tree | 9666c823cf14fea91b7912fbbbf1658e1981b661 /winsup/cygwin/libc/xsique.cc | |
parent | 5ef61dd044112b2c37d580b83d912a301d4f82e7 (diff) |
* Makefile.in (DLL_OFILES): Add xsique.o.
* cygwin.din (confstr): Make NOSIGFE.
(insque): Export.
(remque): Export.
* lsearch.cc: Remove superfluous _SEARCH_PRIVATE define.
* posix.sgml: Move insque to defined SUSv3 interfaces. Remove
comment for remque.
* include/search.h: Remove _SEARCH_PRIVATE guarded definitions.
Add struct qelem definition. Add insque and remque declarations.
* include/cygwin/version.h: Bump API minor number.
* include/sys/queue.h: Remove insque/remque definitions so as not
to collide with SUSv3 compatible declaration in search.h.
* libc/xsique.cc: New file implementing insque and remque.
Diffstat (limited to 'winsup/cygwin/libc/xsique.cc')
-rw-r--r-- | winsup/cygwin/libc/xsique.cc | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/winsup/cygwin/libc/xsique.cc b/winsup/cygwin/libc/xsique.cc new file mode 100644 index 000000000..e451863ee --- /dev/null +++ b/winsup/cygwin/libc/xsique.cc @@ -0,0 +1,48 @@ +/* xsique.cc. XSI insque and remque functions. + + Copyright 2007 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. */ + +#include <search.h> + +extern "C" void +insque (void *velement, void *vpred) +{ + if (!velement) + return; + + struct qelem *element = (struct qelem *) velement; + struct qelem *pred = (struct qelem *) vpred; + struct qelem *succ; + + if (pred) + { + if ((succ = element->q_forw = pred->q_forw)) + succ->q_back = element; + pred->q_forw = element; + } + else + element->q_forw = NULL; + element->q_back = pred; +} + +extern "C" void +remque (void *velement) +{ + if (!velement) + return; + + struct qelem *pred = ((struct qelem *) velement)->q_back; + struct qelem *succ = ((struct qelem *) velement)->q_forw; + + if (succ) + succ->q_back = pred; + if (pred) + pred->q_forw = succ; +} + |