You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/net-libs/wvstreams/files/wvstreams-4.6.1_p14-llvm.patch

413 lines
11 KiB

--- a/include/uniconf.h
+++ b/include/uniconf.h
@@ -434,7 +434,7 @@
*/
class UniConf::Iter : public UniConf::IterBase
{
- UniConfGen::Iter *it;
+ IUniConfGen::Iter *it;
public:
/** Creates an iterator over the direct children of a branch. */
@@ -465,7 +465,7 @@
*/
class UniConf::RecursiveIter : public UniConf::IterBase
{
- UniConfGen::Iter *it;
+ IUniConfGen::Iter *it;
public:
/** Creates a recursive iterator over a branch. */
--- a/include/uniconfgen.h
+++ b/include/uniconfgen.h
@@ -153,8 +153,50 @@
*/
virtual bool haschildren(const UniConfKey &key) = 0;
- /** The abstract iterator type (see below) */
- class Iter;
+ /**
+ * An abstract iterator over keys and values in a generator.
+ *
+ * Unlike other WvStreams iterators, this one declares virtual methods so
+ * that UniConfGen implementations can supply the right behaviour
+ * through a common interface that does not depend on static typing.
+ *
+ * The precise traversal sequence is defined by the iterator implementation.
+ *
+ * The iterator need not support concurrent modifications of the underlying
+ * data structures.
+ *
+ * TODO: Consider changing this rule depending on observed usage patterns.
+ */
+ class Iter
+ {
+ public:
+ /** Destroys the iterator. */
+ virtual ~Iter() { }
+
+ /**
+ * Rewinds the iterator.
+ * Must be called prior to the first invocation of next().
+ */
+ virtual void rewind() = 0;
+
+ /**
+ * Seeks to the next element in the sequence.
+ * Returns true if that element exists.
+ * Must be called prior to the first invocation of key().
+ */
+ virtual bool next() = 0;
+
+ /** Returns the current key. */
+ virtual UniConfKey key() const = 0;
+
+ /**
+ * Returns the value of the current key. You could just do a get(),
+ * but maybe your generator has a more efficient way.
+ */
+ virtual WvString value() const = 0;
+ };
+
+
/** A concrete null iterator type (see below) */
class NullIter;
@@ -214,7 +256,7 @@
public:
/** Destroys the UniConfGen and may discard uncommitted data. */
virtual ~UniConfGen();
-
+
/***** Notification API *****/
/**
@@ -300,70 +342,28 @@
protected:
// A naive implementation of setv() that uses only set().
void setv_naive(const UniConfPairList &pairs);
-};
-
-DeclareWvList(IUniConfGen);
-DeclareWvList2(UniConfGenList, IUniConfGen);
-
-/**
- * An abstract iterator over keys and values in a generator.
- *
- * Unlike other WvStreams iterators, this one declares virtual methods so
- * that UniConfGen implementations can supply the right behaviour
- * through a common interface that does not depend on static typing.
- *
- * The precise traversal sequence is defined by the iterator implementation.
- *
- * The iterator need not support concurrent modifications of the underlying
- * data structures.
- *
- * TODO: Consider changing this rule depending on observed usage patterns.
- */
-class UniConfGen::Iter
-{
public:
- /** Destroys the iterator. */
- virtual ~Iter() { }
-
- /**
- * Rewinds the iterator.
- * Must be called prior to the first invocation of next().
- */
- virtual void rewind() = 0;
-
/**
- * Seeks to the next element in the sequence.
- * Returns true if that element exists.
- * Must be called prior to the first invocation of key().
- */
- virtual bool next() = 0;
-
- /** Returns the current key. */
- virtual UniConfKey key() const = 0;
-
- /**
- * Returns the value of the current key. You could just do a get(),
- * but maybe your generator has a more efficient way.
+ * An iterator that's always empty.
+ * This is handy if you don't have anything good to iterate over.
*/
- virtual WvString value() const = 0;
+ class NullIter : public UniConfGen::Iter
+ {
+ public:
+ /***** Overridden members *****/
+
+ virtual void rewind() { }
+ virtual bool next() { return false; }
+ virtual UniConfKey key() const { return UniConfKey::EMPTY; }
+ virtual WvString value() const { return WvString(); }
+ };
};
+DeclareWvList(IUniConfGen);
+DeclareWvList2(UniConfGenList, IUniConfGen);
+
-/**
- * An iterator that's always empty.
- * This is handy if you don't have anything good to iterate over.
- */
-class UniConfGen::NullIter : public UniConfGen::Iter
-{
-public:
- /***** Overridden members *****/
-
- virtual void rewind() { }
- virtual bool next() { return false; }
- virtual UniConfKey key() const { return UniConfKey::EMPTY; }
- virtual WvString value() const { return WvString(); }
-};
#endif // __UNICONFGEN_H
--- a/include/unifastregetgen.h
+++ b/include/unifastregetgen.h
@@ -42,7 +42,6 @@
virtual bool haschildren(const UniConfKey &key);
private:
- IUniConfGen *inner;
UniConfValueTree *tree;
protected:
--- a/include/unifiltergen.h
+++ b/include/unifiltergen.h
@@ -68,8 +68,8 @@
virtual bool exists(const UniConfKey &key);
virtual bool haschildren(const UniConfKey &key);
virtual bool isok();
- virtual Iter *iterator(const UniConfKey &key);
- virtual Iter *recursiveiterator(const UniConfKey &key);
+ virtual IUniConfGen::Iter *iterator(const UniConfKey &key);
+ virtual IUniConfGen::Iter *recursiveiterator(const UniConfKey &key);
protected:
/**
--- a/include/unihashtree.h
+++ b/include/unihashtree.h
@@ -62,10 +62,11 @@
UniHashTreeBase *xparent; /*!< the parent of this subtree */
Container *xchildren; /*!< the hash table of children */
-private:
void _setparent(UniHashTreeBase *parent);
UniHashTreeBase *_root() const;
+private:
+
/** Called by a child to link itself to this node. */
void link(UniHashTreeBase *node);
--- a/include/unimountgen.h
+++ b/include/unimountgen.h
@@ -103,8 +103,8 @@
virtual void commit();
virtual bool refresh();
virtual void flush_buffers() { }
- virtual Iter *iterator(const UniConfKey &key);
- virtual Iter *recursiveiterator(const UniConfKey &key);
+ virtual IUniConfGen::Iter *iterator(const UniConfKey &key);
+ virtual IUniConfGen::Iter *recursiveiterator(const UniConfKey &key);
private:
/** Find the active generator for a given key. */
--- a/include/wvmoniker.h
+++ b/include/wvmoniker.h
@@ -72,7 +72,7 @@
// from IObject, which is very important. The 'for' avoids a
// warning.
for(IObject *silly = (T *)NULL; silly; )
- ;
+ silly = (T *)NULL;
};
};
--- a/include/wvpushdir.h
+++ b/include/wvpushdir.h
@@ -27,12 +27,11 @@
WvPushDir(WvStringParm new_dir)
{
-#ifdef MACOS
- old_dir = static_cast<char *>(calloc(PATH_MAX, sizeof(char *)));
- getcwd(old_dir, PATH_MAX);;
-#else
- old_dir = get_current_dir_name();
-#endif
+ old_dir = new char[2048];
+ if (!getcwd(old_dir, 2048)) {
+ errnum = errno;
+ return;
+ }
dir_handle = opendir(old_dir);
if (chdir(new_dir) == -1)
errnum = errno;
--- a/include/wvscatterhash.h
+++ b/include/wvscatterhash.h
@@ -183,7 +183,7 @@
Iter(WvScatterHash &_table) : IterBase(_table) { }
Iter(const Iter &other) : IterBase(other) { }
- unsigned char *getstatus() { return &xstatus[index-1]; }
+ unsigned char *getstatus() { return &this->xstatus[index-1]; }
T *ptr() const
{ return (T *)(get()); }
--- a/include/wvserialize.h
+++ b/include/wvserialize.h
@@ -60,6 +60,7 @@
return htons(i);
}
+#ifndef ntohll
/**
* Helper functions to convert 64 bit ints to and from host byteorder
*/
@@ -80,6 +81,7 @@
return (((uint64_t)htonl(n)) << 32) | htonl(n >> 32);
#endif
}
+#endif
/**
* A helper function that serializes different types of integers. Since
--- a/include/wvtask.h
+++ b/include/wvtask.h
@@ -24,6 +24,7 @@
#include "wvstreamsdebugger.h"
#include "wvstringlist.h"
#include "setjmp.h"
+#define _XOPEN_SOURCE
#include <ucontext.h>
#define WVTASK_MAGIC 0x123678
--- a/uniconf/unicachegen.cc
+++ b/uniconf/unicachegen.cc
@@ -69,7 +69,7 @@
void UniCacheGen::loadtree(const UniConfKey &key)
{
- UniConfGen::Iter *i = inner->recursiveiterator(key);
+ IUniConfGen::Iter *i = inner->recursiveiterator(key);
if (!i) return;
//assert(false);
--- a/uniconf/uniconfgen.cc
+++ b/uniconf/uniconfgen.cc
@@ -104,7 +104,7 @@
hold_delta();
- Iter *it = iterator(key);
+ IUniConfGen::Iter *it = iterator(key);
if (it)
{
it->rewind();
@@ -257,7 +257,7 @@
};
-UniConfGen::Iter *UniConfGen::recursiveiterator(const UniConfKey &key)
+IUniConfGen::Iter *UniConfGen::recursiveiterator(const UniConfKey &key)
{
return new _UniConfGenRecursiveIter(this, key);
}
--- a/uniconf/unifiltergen.cc
+++ b/uniconf/unifiltergen.cc
@@ -134,7 +134,7 @@
}
-UniConfGen::Iter *UniFilterGen::iterator(const UniConfKey &key)
+IUniConfGen::Iter *UniFilterGen::iterator(const UniConfKey &key)
{
UniConfKey mapped_key;
if (xinner && keymap(key, mapped_key))
@@ -144,7 +144,7 @@
}
-UniConfGen::Iter *UniFilterGen::recursiveiterator(const UniConfKey &key)
+IUniConfGen::Iter *UniFilterGen::recursiveiterator(const UniConfKey &key)
{
UniConfKey mapped_key;
if (xinner && keymap(key, mapped_key))
--- a/uniconf/unifstreegen.cc
+++ b/uniconf/unifstreegen.cc
@@ -62,7 +62,7 @@
log("Key '%s' not found.\n", key);
}
- virtual Iter *recursiveiterator(const UniConfKey &key)
+ virtual IUniConfGen::Iter *recursiveiterator(const UniConfKey &key)
{
// don't try to optimize this like UniMountGen does, because we're
// going to mount things *as* we iterate through them, not sooner.
--- a/uniconf/unimountgen.cc
+++ b/uniconf/unimountgen.cc
@@ -305,7 +305,7 @@
return strcmp(*l, *r);
}
-UniMountGen::Iter *UniMountGen::iterator(const UniConfKey &key)
+IUniConfGen::Iter *UniMountGen::iterator(const UniConfKey &key)
{
UniGenMount *found = findmount(key);
if (found)
@@ -345,7 +345,7 @@
// FIXME: this function will be rather slow if you try to iterate over multiple
// generators and the latency level is high (as is the case with e.g.: the tcp generator).
// the fast path will only kick in if you iterate over a single generator.
-UniMountGen::Iter *UniMountGen::recursiveiterator(const UniConfKey &key)
+IUniConfGen::Iter *UniMountGen::recursiveiterator(const UniConfKey &key)
{
UniGenMount *found = findmountunder(key);
if (found)
--- a/utils/t/wvpushdir.t.cc
+++ b/utils/t/wvpushdir.t.cc
@@ -15,14 +15,9 @@
WVPASS(newpushdir.isok());
-#ifdef MACOS
- char *pwd = static_cast<char *>(calloc(PATH_MAX,sizeof(char *)));
- getcwd(pwd,PATH_MAX);
-#else
- char *pwd = get_current_dir_name();
-#endif
+ char pwd[1024] = "";
+ getcwd(pwd, sizeof(pwd));
WVPASSEQ(pwd, dir);
- free(pwd);
unlink(dir);
}
--- a/utils/wvpam.cc
+++ b/utils/wvpam.cc
@@ -5,6 +5,7 @@
* A WvStream that authenticates with PAM before allowing any reading or
* writing. See wvpam.h.
*/
+#include <pwd.h>
#include "wvlog.h"
#include "wvpam.h"
#include "wvautoconf.h"
--- a/xplc/modulemgr.cc
+++ b/xplc/modulemgr.cc
@@ -23,6 +23,7 @@
#include <assert.h>
#include "modulemgr.h"
#include <xplc/IModuleLoader.h>
+#include <unistd.h>
#include "config.h"