http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/README.rst
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/README.rst
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/README.rst
deleted file mode 100644
index 5b1b147..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/README.rst
+++ /dev/null
@@ -1,76 +0,0 @@
-==================
-Eventloop examples
-==================
-
-Overview and usage
-==================
-
-A few examples on how an event loop can be implemented with Duktape, mainly
-illlustrating how the Duktape interface works (not how event loops should be
-built otherwise).
-
-To test (Linux only, perhaps other Unix)::
-
-  $ make
-  $ ./evloop curses-timers.js     # run with Ecmascript eventloop
-  $ ./evloop -c curses-timers.js  # run with C eventloop
-
-Implementation approaches
-=========================
-
-There are several approaches to implementation timers.  Here we demonstrate
-two main approaches:
-
-1. Using a C eventloop which calls into Javascript.  All the event loop state
-   like timers, sockets, etc, is held in C structures.
-   (See ``c_eventloop.c`` and ``c_eventloop.js``.)
-
-2. Using an Ecmascript eventloop which never returns.  All the event loop state
-   can be managed with Ecmascript code instead of C structures.  The Ecmascript
-   eventloop calls a Duktape/C helper to do the lowest level poll() call.
-   (See ``ecma_eventloop.js``.)
-
-Services provided
-=================
-
-The event loop API provided by both examples is the same, and includes:
-
-* Timers: setTimeout, clearTimeout, setInterval, clearInterval
-
-* Sockets: simple network sockets
-
-In addition there are a few synchronous API bindings which are not event loop
-related:
-
-* File I/O
-
-* Curses, for doing beautiful character graphics
-
-Limitations
-===========
-
-This is **not** a production quality event loop.  This is on purpose, to
-keep the example somewhat simple.  Some shortcomings include:
-
-* A production quality event loop would track its internal state (active
-  timers and sockets) much more efficiently.  In general memory usage and
-  code footprint can be reduced.
-
-* Buffer churn caused by allocating a new buffer for every socket read
-  should be eliminated by reusing buffers where appropriate.  Although
-  churn doesn't increase memory footprint with reference counting, it
-  is slower than reusing buffers and might increase memory fragmentation.
-
-* There is no way to suspend reading or writing in the example.  Adding
-  them is straightforward: the poll set needs to be managed dynamically.
-
-* The example uses poll() while one should use epoll() on Linux, kqueue()
-  on BSD systems, etc.
-
-* Timers are not very accurate, e.g. setInterval() does not try to guarantee
-  a steady schedule.  Instead, the next interval is scheduled after the
-  current callback has finished.  This is not the best behavior for some
-  environments, but avoids bunching callbacks.
-
-* Error handling is mostly missing.  Debug prints don't interact well
-  with curses.

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/basic-test.js
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/basic-test.js
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/basic-test.js
deleted file mode 100644
index 04b3392..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/basic-test.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- *  A few basic tests
- */
-
-var count = 0;
-var intervalId;
-
-setTimeout(function (x) { print('timer 1', x); }, 1234, 'foo');
-setTimeout('print("timer 2");', 4321);
-setTimeout(function () { print('timer 3'); }, 2345);
-intervalId = setInterval(function (x, y) {
-    print('interval', ++count, x, y);
-    if (count >= 10) {
-        clearInterval(intervalId);
-    }
-}, 400, 'foo', 'bar');
-

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/c_eventloop.c
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/c_eventloop.c
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/c_eventloop.c
deleted file mode 100644
index 75d768b..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/c_eventloop.c
+++ /dev/null
@@ -1,618 +0,0 @@
-/*
- *  C eventloop example.
- *
- *  Timer management is similar to eventloop.js but implemented in C.
- *  In particular, timer insertion is an O(n) operation; in a real world
- *  eventloop based on a heap insertion would be O(log N).
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdint.h>
-#include <sys/time.h>
-#include <poll.h>
-
-#include "duktape.h"
-
-#define  MAX_TIMERS             4096     /* this is quite excessive for 
embedded use, but good for testing */
-#define  MIN_DELAY              1.0
-#define  MIN_WAIT               1.0
-#define  MAX_WAIT               60000.0
-#define  MAX_EXPIRYS            10
-
-#define  MAX_FDS                256
-
-typedef struct {
-       int64_t id;       /* numeric ID (returned from e.g. setTimeout); zero 
if unused */
-       double target;    /* next target time */
-       double delay;     /* delay/interval */
-       int oneshot;      /* oneshot=1 (setTimeout), repeated=0 (setInterval) */
-       int removed;      /* timer has been requested for removal */
-
-       /* The callback associated with the timer is held in the "global stash",
-        * in <stash>.eventTimers[String(id)].  The references must be deleted
-        * when a timer struct is deleted.
-        */
-} ev_timer;
-
-/* Active timers.  Dense list, terminates to end of list or first unused timer.
- * The list is sorted by 'target', with lowest 'target' (earliest expiry) last
- * in the list.  When a timer's callback is being called, the timer is moved
- * to 'timer_expiring' as it needs special handling should the user callback
- * delete that particular timer.
- */
-static ev_timer timer_list[MAX_TIMERS];
-static ev_timer timer_expiring;
-static int timer_count;  /* last timer at timer_count - 1 */
-static int64_t timer_next_id = 1;
-
-/* Socket poll state. */
-static struct pollfd poll_list[MAX_FDS];
-static int poll_count = 0;
-
-/* Misc */
-static int exit_requested = 0;
-
-/* Get Javascript compatible 'now' timestamp (millisecs since 1970). */
-static double get_now(void) {
-       struct timeval tv;
-       int rc;
-
-       rc = gettimeofday(&tv, NULL);
-       if (rc != 0) {
-               /* Should never happen, so return whatever. */
-               return 0.0;
-       }
-       return ((double) tv.tv_sec) * 1000.0 + ((double) tv.tv_usec) / 1000.0;
-}
-
-static ev_timer *find_nearest_timer(void) {
-       /* Last timer expires first (list is always kept sorted). */
-       if (timer_count <= 0) {
-               return NULL;
-       }
-       return timer_list + timer_count - 1;
-}
-
-/* Bubble last timer on timer list backwards until it has been moved to
- * its proper sorted position (based on 'target' time).
- */
-static void bubble_last_timer(void) {
-       int i;
-       int n = timer_count;
-       ev_timer *t;
-       ev_timer tmp;
-
-       for (i = n - 1; i > 0; i--) {
-               /* Timer to bubble is at index i, timer to compare to is
-                * at i-1 (both guaranteed to exist).
-                */
-               t = timer_list + i;
-               if (t->target <= (t-1)->target) {
-                       /* 't' expires earlier than (or same time as) 't-1', so 
we're done. */
-                       break;
-               } else {
-                       /* 't' expires later than 't-1', so swap them and 
repeat. */
-                       memcpy((void *) &tmp, (void *) (t - 1), 
sizeof(ev_timer));
-                       memcpy((void *) (t - 1), (void *) t, sizeof(ev_timer));
-                       memcpy((void *) t, (void *) &tmp, sizeof(ev_timer));
-               }
-       }
-}
-
-static void expire_timers(duk_context *ctx) {
-       ev_timer *t;
-       int sanity = MAX_EXPIRYS;
-       double now;
-       int rc;
-
-       /* Because a user callback can mutate the timer list (by adding or 
deleting
-        * a timer), we expire one timer and then rescan from the end again.  
There
-        * is a sanity limit on how many times we do this per expiry round.
-        */
-
-       duk_push_global_stash(ctx);
-       duk_get_prop_string(ctx, -1, "eventTimers");
-
-       /* [ ... stash eventTimers ] */
-
-       now = get_now();
-       while (sanity-- > 0) {
-               /*
-                *  If exit has been requested, exit without running further
-                *  callbacks.
-                */
-
-               if (exit_requested) {
-#if 0
-                       fprintf(stderr, "exit requested, exiting timer expiry 
loop\n");
-                       fflush(stderr);
-#endif
-                       break;
-               }
-
-               /*
-                *  Expired timer(s) still exist?
-                */
-
-               if (timer_count <= 0) {
-                       break;
-               }
-               t = timer_list + timer_count - 1;
-               if (t->target > now) {
-                       break;
-               }
-
-               /*
-                *  Move the timer to 'expiring' for the duration of the 
callback.
-                *  Mark a one-shot timer deleted, compute a new target for an 
interval.
-                */
-
-               memcpy((void *) &timer_expiring, (void *) t, sizeof(ev_timer));
-               memset((void *) t, 0, sizeof(ev_timer));
-               timer_count--;
-               t = &timer_expiring;
-
-               if (t->oneshot) {
-                       t->removed = 1;
-               } else {
-                       t->target = now + t->delay;  /* XXX: or t->target + 
t->delay? */
-               }
-
-               /*
-                *  Call timer callback.  The callback can operate on the timer 
list:
-                *  add new timers, remove timers.  The callback can even 
remove the
-                *  expired timer whose callback we're calling.  However, 
because the
-                *  timer being expired has been moved to 'timer_expiring', we 
don't
-                *  need to worry about the timer's offset changing on the 
timer list.
-                */
-
-#if 0
-               fprintf(stderr, "calling user callback for timer id %d\n", 
(int) t->id);
-               fflush(stderr);
-#endif
-
-               duk_push_number(ctx, (double) t->id);
-               duk_get_prop(ctx, -2);  /* -> [ ... stash eventTimers func ] */
-               rc = duk_pcall(ctx, 0 /*nargs*/);  /* -> [ ... stash 
eventTimers retval ] */
-               if (rc != 0) {
-#if 0
-                       fprintf(stderr, "timer callback failed for timer %d: 
%s\n", (int) t->id, duk_to_string(ctx, -1));
-                       fflush(stderr);
-#endif
-               }
-               duk_pop(ctx);    /* ignore errors for now -> [ ... stash 
eventTimers ] */
-
-               if (t->removed) {
-                       /* One-shot timer (always removed) or removed by user 
callback. */
-#if 0
-                       fprintf(stderr, "deleting callback state for timer 
%d\n", (int) t->id);
-                       fflush(stderr);
-#endif
-                       duk_push_number(ctx, (double) t->id);
-                       duk_del_prop(ctx, -2);
-               } else {
-                       /* Interval timer, not removed by user callback.  Queue 
back to
-                        * timer list and bubble to its final sorted position.
-                        */
-#if 0
-                       fprintf(stderr, "queueing timer %d back into active 
list\n", (int) t->id);
-                       fflush(stderr);
-#endif
-                       if (timer_count >= MAX_TIMERS) {
-                               duk_error(ctx, DUK_ERR_RANGE_ERROR, "out of 
timer slots");
-                       }
-                       memcpy((void *) (timer_list + timer_count), (void *) t, 
sizeof(ev_timer));
-                       timer_count++;
-                       bubble_last_timer();
-               }
-       }
-
-       memset((void *) &timer_expiring, 0, sizeof(ev_timer));
-
-       duk_pop_2(ctx);  /* -> [ ... ] */
-}
-
-static void compact_poll_list(void) {
-       int i, j, n;
-
-       /* i = input index
-        * j = output index (initially same as i)
-        */
-
-       n = poll_count;
-       for (i = 0, j = 0; i < n; i++) {
-               struct pollfd *pfd = poll_list + i;
-               if (pfd->fd == 0) {
-                       /* keep output index the same */
-#if 0
-                       fprintf(stderr, "remove pollfd (index %d): fd=%d, 
events=%d, revents=%d\n",
-                               i, pfd->fd, pfd->events, pfd->revents),
-                       fflush(stderr);
-#endif
-
-                       continue;
-               }
-#if 0
-               fprintf(stderr, "keep pollfd (index %d -> %d): fd=%d, 
events=%d, revents=%d\n",
-                       i, j, pfd->fd, pfd->events, pfd->revents),
-               fflush(stderr);
-#endif
-               if (i != j) {
-                       /* copy only if indices have diverged */
-                       memcpy((void *) (poll_list + j), (void *) (poll_list + 
i), sizeof(struct pollfd));
-               }
-               j++;
-       }
-
-       if (j < poll_count) {
-               /* zeroize unused entries for sanity */
-               memset((void *) (poll_list + j), 0, (poll_count - j) * 
sizeof(struct pollfd));
-       }
-
-       poll_count = j;
-}
-
-int eventloop_run(duk_context *ctx) {
-       ev_timer *t;
-       double now;
-       double diff;
-       int timeout;
-       int rc;
-       int i, n;
-       int idx_eventloop;
-       int idx_fd_handler;
-
-       /* The Ecmascript poll handler is passed through EventLoop.fdPollHandler
-        * which c_eventloop.js sets before we come here.
-        */
-       duk_push_global_object(ctx);
-       duk_get_prop_string(ctx, -1, "EventLoop");
-       duk_get_prop_string(ctx, -1, "fdPollHandler");  /* -> [ global 
EventLoop fdPollHandler ] */
-       idx_fd_handler = duk_get_top_index(ctx);
-       idx_eventloop = idx_fd_handler - 1;
-
-       for (;;) {
-               /*
-                *  Expire timers.
-                */
-
-               expire_timers(ctx);
-
-               /*
-                *  If exit requested, bail out as fast as possible.
-                */
-
-               if (exit_requested) {
-#if 0
-                       fprintf(stderr, "exit requested, exiting event loop\n");
-                       fflush(stderr);
-#endif
-                       break;
-               }
-
-               /*
-                *  Compact poll list by removing pollfds with fd == 0.
-                */
-
-               compact_poll_list();
-
-               /*
-                *  Determine poll() timeout (as close to poll() as possible as
-                *  the wait is relative).
-                */
-
-               now = get_now();
-               t = find_nearest_timer();
-               if (t) {
-                       diff = t->target - now;
-                       if (diff < MIN_WAIT) {
-                               diff = MIN_WAIT;
-                       } else if (diff > MAX_WAIT) {
-                               diff = MAX_WAIT;
-                       }
-                       timeout = (int) diff;  /* clamping ensures that fits */
-               } else {
-                       if (poll_count == 0) {
-#if 0
-                               fprintf(stderr, "no timers and no sockets to 
poll, exiting\n");
-                               fflush(stderr);
-#endif
-                               break;
-                       }
-                       timeout = (int) MAX_WAIT;
-               }
-
-               /*
-                *  Poll for activity or timeout.
-                */
-
-#if 0
-               fprintf(stderr, "going to poll, timeout %d ms, pollfd count 
%d\n", timeout, poll_count);
-               fflush(stderr);
-#endif
-
-               rc = poll(poll_list, poll_count, timeout);
-#if 0
-               fprintf(stderr, "poll rc: %d\n", rc);
-               fflush(stderr);
-#endif
-               if (rc < 0) {
-                       /* error */
-               } else if (rc == 0) {
-                       /* timeout */
-               } else {
-                       /* 'rc' fds active */
-               }
-
-               /*
-                *  Check socket activity, handle all sockets.  Handling is 
offloaded to
-                *  Ecmascript code (fd + revents).
-                *
-                *  If FDs are removed from the poll list while we're 
processing callbacks,
-                *  the entries are simply marked unused (fd set to 0) without 
actually
-                *  removing them from the poll list.  This ensures indices are 
not
-                *  disturbed.  The poll list is compacted before next poll().
-                */
-
-               n = (rc == 0 ? 0 : poll_count);  /* if timeout, no need to 
check pollfd */
-               for (i = 0; i < n; i++) {
-                       struct pollfd *pfd = poll_list + i;
-
-                       if (pfd->fd == 0) {
-                               /* deleted, perhaps by previous callback */
-                               continue;
-                       }
-
-                       if (pfd->revents) {
-#if 0
-                               fprintf(stderr, "fd %d has revents: %d\n", 
(int) pfd->fd, (int) pfd->revents);
-                               fflush(stderr);
-#endif
-                               duk_dup(ctx, idx_fd_handler);
-                               duk_dup(ctx, idx_eventloop);
-                               duk_push_int(ctx, pfd->fd);
-                               duk_push_int(ctx, pfd->revents);
-                               rc = duk_pcall_method(ctx, 2 /*nargs*/);
-                               if (rc) {
-#if 0
-                                       fprintf(stderr, "fd callback failed for 
fd %d: %s\n", (int) pfd->fd, duk_to_string(ctx, -1));
-                                       fflush(stderr);
-#endif
-                               }
-                               duk_pop(ctx);
-
-                               pfd->revents = 0;
-                       }
-
-               }
-       }
-
-       duk_pop_n(ctx, 3);
-
-       return 0;
-}
-
-static int create_timer(duk_context *ctx) {
-       double delay;
-       int oneshot;
-       int idx;
-       int64_t timer_id;
-       double now;
-       ev_timer *t;
-
-       now = get_now();
-
-       /* indexes:
-        *   0 = function (callback)
-        *   1 = delay
-        *   2 = boolean: oneshot
-        */
-
-       delay = duk_require_number(ctx, 1);
-       if (delay < MIN_DELAY) {
-               delay = MIN_DELAY;
-       }
-       oneshot = duk_require_boolean(ctx, 2);
-
-       if (timer_count >= MAX_TIMERS) {
-               duk_error(ctx, DUK_ERR_RANGE_ERROR, "out of timer slots");
-       }
-       idx = timer_count++;
-       timer_id = timer_next_id++;
-       t = timer_list + idx;
-
-       memset((void *) t, 0, sizeof(ev_timer));
-       t->id = timer_id;
-       t->target = now + delay;
-       t->delay = delay;
-       t->oneshot = oneshot;
-       t->removed = 0;
-
-       /* Timer is now at the last position; use swaps to "bubble" it to its
-        * correct sorted position.
-        */
-
-       bubble_last_timer();
-
-       /* Finally, register the callback to the global stash 'eventTimers' 
object. */
-
-       duk_push_global_stash(ctx);
-       duk_get_prop_string(ctx, -1, "eventTimers");  /* -> [ func delay 
oneshot stash eventTimers ] */
-       duk_push_number(ctx, (double) timer_id);
-       duk_dup(ctx, 0);
-       duk_put_prop(ctx, -3);  /* eventTimers[timer_id] = callback */
-
-       /* Return timer id. */
-
-       duk_push_number(ctx, (double) timer_id);
-#if 0
-       fprintf(stderr, "created timer id: %d\n", (int) timer_id);
-       fflush(stderr);
-#endif
-       return 1;
-}
-
-static int delete_timer(duk_context *ctx) {
-       int i, n;
-       int64_t timer_id;
-       ev_timer *t;
-       int found = 0;
-
-       /* indexes:
-        *   0 = timer id
-        */
-
-       timer_id = (int64_t) duk_require_number(ctx, 0);
-
-       /*
-        *  Unlike insertion, deletion needs a full scan of the timer list
-        *  and an expensive remove.  If no match is found, nothing is deleted.
-        *  Caller gets a boolean return code indicating match.
-        *
-        *  When a timer is being expired and its user callback is running,
-        *  the timer has been moved to 'timer_expiring' and its deletion
-        *  needs special handling: just mark it to-be-deleted and let the
-        *  expiry code remove it.
-        */
-
-       t = &timer_expiring;
-       if (t->id == timer_id) {
-               t->removed = 1;
-               duk_push_true(ctx);
-#if 0
-               fprintf(stderr, "deleted expiring timer id: %d\n", (int) 
timer_id);
-               fflush(stderr);
-#endif
-               return 1;
-       }
-
-       n = timer_count;
-       for (i = 0; i < n; i++) {
-               t = timer_list + i;
-               if (t->id == timer_id) {
-                       found = 1;
-
-                       /* Shift elements downwards to keep the timer list dense
-                        * (no need if last element).
-                        */
-                       if (i < timer_count - 1) {
-                               memmove((void *) t, (void *) (t + 1), 
(timer_count - i - 1) * sizeof(ev_timer));
-                       }
-
-                       /* Zero last element for clarity. */
-                       memset((void *) (timer_list + n - 1), 0, 
sizeof(ev_timer));
-
-                       /* Update timer_count. */
-                       timer_count--;
-
-                       /* The C state is now up-to-date, but we still need to 
delete
-                        * the timer callback state from the global 'stash'.
-                        */
-
-                       duk_push_global_stash(ctx);
-                       duk_get_prop_string(ctx, -1, "eventTimers");  /* -> [ 
timer_id stash eventTimers ] */
-                       duk_push_number(ctx, (double) timer_id);
-                       duk_del_prop(ctx, -2);  /* delete eventTimers[timer_id] 
*/
-
-#if 0
-                       fprintf(stderr, "deleted timer id: %d\n", (int) 
timer_id);
-                       fflush(stderr);
-#endif
-                       break;
-               }
-       }
-
-#if 0
-       if (!found) {
-               fprintf(stderr, "trying to delete timer id %d, but not found; 
ignoring\n", (int) timer_id);
-               fflush(stderr);
-       }
-#endif
-
-       duk_push_boolean(ctx, found);
-       return 1;
-}
-
-static int listen_fd(duk_context *ctx) {
-       int fd = duk_require_int(ctx, 0);
-       int events = duk_require_int(ctx, 1);
-       int i, n;
-       struct pollfd *pfd;
-
-#if 0
-       fprintf(stderr, "listen_fd: fd=%d, events=%d\n", fd, events);
-       fflush(stderr);
-#endif
-       /* events == 0 means stop listening to the FD */
-
-       n = poll_count;
-       for (i = 0; i < n; i++) {
-               pfd = poll_list + i;
-               if (pfd->fd == fd) {
-#if 0
-                       fprintf(stderr, "listen_fd: fd found at index %d\n", i);
-                       fflush(stderr);
-#endif
-                       if (events == 0) {
-                               /* mark to-be-deleted, cleaned up by next poll 
*/
-                               pfd->fd = 0;
-                       } else {
-                               pfd->events = events;
-                       }
-                       return 0;
-               }
-       }
-
-       /* not found, append to list */
-#if 0
-       fprintf(stderr, "listen_fd: fd not found on list, add new entry\n");
-       fflush(stderr);
-#endif
-
-       if (poll_count >= MAX_FDS) {
-               duk_error(ctx, DUK_ERR_ERROR, "out of fd slots");
-       }
-
-       pfd = poll_list + poll_count;
-       pfd->fd = fd;
-       pfd->events = events;
-       pfd->revents = 0;
-       poll_count++;
-
-       return 0;
-}
-
-static int request_exit(duk_context *ctx) {
-       (void) ctx;
-       exit_requested = 1;
-       return 0;
-}
-
-static duk_function_list_entry eventloop_funcs[] = {
-       { "createTimer", create_timer, 3 },
-       { "deleteTimer", delete_timer, 1 },
-       { "listenFd", listen_fd, 2 },
-       { "requestExit", request_exit, 0 },
-       { NULL, NULL, 0 }
-};
-
-void eventloop_register(duk_context *ctx) {
-       memset((void *) timer_list, 0, MAX_TIMERS * sizeof(ev_timer));
-       memset((void *) &timer_expiring, 0, sizeof(ev_timer));
-       memset((void *) poll_list, 0, MAX_FDS * sizeof(struct pollfd));
-
-       /* Set global 'EventLoop'. */
-       duk_push_global_object(ctx);
-       duk_push_object(ctx);
-       duk_put_function_list(ctx, -1, eventloop_funcs);
-       duk_put_prop_string(ctx, -2, "EventLoop");
-       duk_pop(ctx);
-
-       /* Initialize global stash 'eventTimers'. */
-       duk_push_global_stash(ctx);
-       duk_push_object(ctx);
-       duk_put_prop_string(ctx, -2, "eventTimers");
-       duk_pop(ctx);
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/c_eventloop.js
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/c_eventloop.js
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/c_eventloop.js
deleted file mode 100644
index b9e2d63..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/c_eventloop.js
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- *  C eventloop example (c_eventloop.c).
- *
- *  Ecmascript code to initialize the exposed API (setTimeout() etc) when
- *  using the C eventloop.
- *
- *  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Timers
- */
-
-/*
- *  Timer API
- */
-
-function setTimeout(func, delay) {
-    var cb_func;
-    var bind_args;
-    var timer_id;
-
-    if (typeof delay !== 'number') {
-        throw new TypeError('delay is not a number');
-    }
-
-    if (typeof func === 'string') {
-        // Legacy case: callback is a string.
-        cb_func = eval.bind(this, func);
-    } else if (typeof func !== 'function') {
-        throw new TypeError('callback is not a function/string');
-    } else if (arguments.length > 2) {
-        // Special case: callback arguments are provided.
-        bind_args = Array.prototype.slice.call(arguments, 2);  // [ arg1, 
arg2, ... ]
-        bind_args.unshift(this);  // [ global(this), arg1, arg2, ... ]
-        cb_func = func.bind.apply(func, bind_args);
-    } else {
-        // Normal case: callback given as a function without arguments.
-        cb_func = func;
-    }
-
-    timer_id = EventLoop.createTimer(cb_func, delay, true /*oneshot*/);
-
-    return timer_id;
-}
-
-function clearTimeout(timer_id) {
-    if (typeof timer_id !== 'number') {
-        throw new TypeError('timer ID is not a number');
-    }
-    var success = EventLoop.deleteTimer(timer_id);  /* retval ignored */
-}
-
-function setInterval(func, delay) {
-    var cb_func;
-    var bind_args;
-    var timer_id;
-
-    if (typeof delay !== 'number') {
-        throw new TypeError('delay is not a number');
-    }
-
-    if (typeof func === 'string') {
-        // Legacy case: callback is a string.
-        cb_func = eval.bind(this, func);
-    } else if (typeof func !== 'function') {
-        throw new TypeError('callback is not a function/string');
-    } else if (arguments.length > 2) {
-        // Special case: callback arguments are provided.
-        bind_args = Array.prototype.slice.call(arguments, 2);  // [ arg1, 
arg2, ... ]
-        bind_args.unshift(this);  // [ global(this), arg1, arg2, ... ]
-        cb_func = func.bind.apply(func, bind_args);
-    } else {
-        // Normal case: callback given as a function without arguments.
-        cb_func = func;
-    }
-
-    timer_id = EventLoop.createTimer(cb_func, delay, false /*oneshot*/);
-
-    return timer_id;
-}
-
-function clearInterval(timer_id) {
-    if (typeof timer_id !== 'number') {
-        throw new TypeError('timer ID is not a number');
-    }
-    EventLoop.deleteTimer(timer_id);
-}
-
-function requestEventLoopExit() {
-    EventLoop.requestExit();
-}
-
-/*
- *  Socket handling
- *
- *  Ideally this would be implemented more in C than here for more speed
- *  and smaller footprint: C code would directly maintain the callback state
- *  and such.
- *
- *  Also for more optimal I/O, the buffer churn caused by allocating and
- *  freeing a lot of buffer values could be eliminated by reusing buffers.
- *  Socket reads would then go into a pre-allocated buffer, for instance.
- */
-
-EventLoop.socketListening = {};
-EventLoop.socketReading = {};
-EventLoop.socketConnecting = {};
-
-EventLoop.fdPollHandler = function(fd, revents) {
-    var data;
-    var cb;
-    var rc;
-    var acc_res;
-
-    //print('activity on fd', fd, 'revents', revents);
-
-    if (revents & Poll.POLLIN) {
-        cb = this.socketReading[fd];
-        if (cb) {
-            data = Socket.read(fd);  // no size control now
-            //print('READ', Duktape.enc('jx', data));
-            if (data.length === 0) {
-                this.close(fd);
-                return;
-            }
-            cb(fd, data);
-        } else {
-            cb = this.socketListening[fd];
-            if (cb) {
-                acc_res = Socket.accept(fd);
-                //print('ACCEPT:', Duktape.enc('jx', acc_res));
-                cb(acc_res.fd, acc_res.addr, acc_res.port);
-            } else {
-                //print('UNKNOWN');
-            }
-        }
-    }
-
-    if (revents & Poll.POLLOUT) {
-        // Connected
-        cb = this.socketConnecting[fd];
-        if (cb) {
-            delete this.socketConnecting[fd];
-            cb(fd);
-        }
-    }
-
-    if ((revents & ~(Poll.POLLIN | Poll.POLLOUT)) !== 0) {
-        //print('unexpected revents, close fd');
-        this.close(fd);
-    }
-}
-
-EventLoop.server = function(address, port, cb_accepted) {
-    var fd = Socket.createServerSocket(address, port);
-    this.socketListening[fd] = cb_accepted;
-    this.listenFd(fd, Poll.POLLIN);
-}
-
-EventLoop.connect = function(address, port, cb_connected) {
-    var fd = Socket.connect(address, port);
-    this.socketConnecting[fd] = cb_connected;
-    this.listenFd(fd, Poll.POLLOUT);
-}
-
-EventLoop.close = function(fd) {
-    EventLoop.listenFd(fd, 0);
-    delete this.socketListening[fd];
-    delete this.socketReading[fd];
-    delete this.socketConnecting[fd];
-    Socket.close(fd);
-}
-
-EventLoop.setReader = function(fd, cb_read) {
-    this.socketReading[fd] = cb_read;
-    this.listenFd(fd, Poll.POLLIN);
-}
-
-EventLoop.write = function(fd, data) {
-    // This simple example doesn't have support for write blocking / draining
-    var rc = Socket.write(fd, Duktape.Buffer(data));
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/client-socket-test.js
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/client-socket-test.js
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/client-socket-test.js
deleted file mode 100644
index ff87784..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/client-socket-test.js
+++ /dev/null
@@ -1,24 +0,0 @@
-
-var HOST = 'localhost';
-var PORT = 80;
-var EXIT_TIMEOUT = 300e3;
-
-print('automatic exit after ' + (EXIT_TIMEOUT / 1e3) + ' seconds');
-setTimeout(function () {
-    print('exit timer');
-    EventLoop.requestExit();
-}, EXIT_TIMEOUT);
-
-EventLoop.connect(HOST, PORT, function (fd) {
-    print('connected to ' + HOST + ':' + PORT + ', fd', fd);
-    EventLoop.setReader(fd, function (fd, data) {
-        print('read from fd', fd);
-        print(data);
-        EventLoop.close(fd);
-    });
-    EventLoop.write(fd, "GET / HTTP/1.1\r\n" +
-                        "Host: " + HOST + "\r\n" +
-                        "User-Agent: client-socket-test.js\r\n" +
-                        "\r\n");
-});
-

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/curses-timers.js
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/curses-timers.js
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/curses-timers.js
deleted file mode 100644
index 4508665..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/curses-timers.js
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- *  Test using timers and intervals with curses.
- */
-
-if (typeof Ncurses !== 'object') {
-    throw new Error('Ncurses required');
-}
-
-function fillScreen(ch) {
-    var size, w, h;
-    var i, j;
-
-    size = Ncurses.getmaxyx();
-    h = size[0];
-    w = size[1];
-
-    for (i = 0; i < h; i++) {
-        for (j = 0; j < w; j++) {
-            Ncurses.mvprintw(i, j, ch);
-        }
-    }
-    Ncurses.refresh();
-}
-
-function main() {
-    var i, j;
-    var counters = [];
-    var size, w, h;
-
-    Ncurses.initscr();
-    size = Ncurses.getmaxyx();
-    h = size[0];
-    w = size[1];
-
-    fillScreen('.');
-
-    setInterval(function () {
-        Ncurses.mvprintw(1, 4, new Date().toISOString());
-        Ncurses.refresh();
-    }, 1000);
-
-    function addCounter(row, index, interval) {
-        counters[index] = 0;
-        setInterval(function () {
-            counters[index]++;
-            Ncurses.mvprintw(row, 4, '' + Date.now() + ' ' + counters[index]);
-            Ncurses.refresh();
-        }, interval);
-    }
-
-    function addRandomChar(row, col, interval) {
-        setTimeout(function () {
-            Ncurses.mvprintw(row, col, String.fromCharCode(Math.random() * 64 
+ 0x20));
-            Ncurses.refresh();
-        }, interval);
-    }
-
-    for (i = 0; i < h - 5; i++) {
-        addCounter(3 + i, i, 363 * i + 400);
-    }
-
-    /* Here the inserts take a lot of time because the underlying timer manager
-     * data structure has O(n) insertion performance.
-     */
-    for (i = 0; i < h - 5; i++) {
-        for (j = 0; j < w - 50; j++) {
-            // Math.exp(0)...Math.exp(8) is an uneven distribution between 
1...~2980.
-            addRandomChar(3 + i, 28 + j, 58000 - Math.exp(Math.random() * 8) * 
20);
-        }
-    }
-
-    setTimeout(function () {
-        Ncurses.endwin();
-        Ncurses.delscreen();
-        requestEventLoopExit();
-    }, 120e3);
-}
-
-main();

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/ecma_eventloop.js
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/ecma_eventloop.js
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/ecma_eventloop.js
deleted file mode 100644
index bad4e4d..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/ecma_eventloop.js
+++ /dev/null
@@ -1,466 +0,0 @@
-/*
- *  Pure Ecmascript eventloop example.
- *
- *  Timer state handling is inefficient in this trivial example.  Timers are
- *  kept in an array sorted by their expiry time which works well for expiring
- *  timers, but has O(n) insertion performance.  A better implementation would
- *  use a heap or some other efficient structure for managing timers so that
- *  all operations (insert, remove, get nearest timer) have good performance.
- *
- *  https://developer.mozilla.org/en-US/docs/Web/JavaScript/Timers
- */
-
-/*
- *  Event loop
- *
- *  Timers are sorted by 'target' property which indicates expiry time of
- *  the timer.  The timer expiring next is last in the array, so that
- *  removals happen at the end, and inserts for timers expiring in the
- *  near future displace as few elements in the array as possible.
- */
-
-EventLoop = {
-    // timers
-    timers: [],         // active timers, sorted (nearest expiry last)
-    expiring: null,     // set to timer being expired (needs special handling 
in clearTimeout/clearInterval)
-    nextTimerId: 1,
-    minimumDelay: 1,
-    minimumWait: 1,
-    maximumWait: 60000,
-    maxExpirys: 10,
-
-    // sockets
-    socketListening: {},  // fd -> callback
-    socketReading: {},    // fd -> callback
-    socketConnecting: {}, // fd -> callback
-
-    // misc
-    exitRequested: false
-};
-
-EventLoop.dumpState = function() {
-    print('TIMER STATE:');
-    this.timers.forEach(function(t) {
-        print('    ' + Duktape.enc('jx', t));
-    });
-    if (this.expiring) {
-        print('    EXPIRING: ' + Duktape.enc('jx', this.expiring));
-    }
-}
-
-// Get timer with lowest expiry time.  Since the active timers list is
-// sorted, it's always the last timer.
-EventLoop.getEarliestTimer = function() {
-    var timers = this.timers;
-    n = timers.length;
-    return (n > 0 ? timers[n - 1] : null);
-}
-
-EventLoop.getEarliestWait = function() {
-    var t = this.getEarliestTimer();
-    return (t ? t.target - Date.now() : null);
-}
-
-EventLoop.insertTimer = function(timer) {
-    var timers = this.timers;
-    var i, n, t;
-
-    /*
-     *  Find 'i' such that we want to insert *after* timers[i] at index i+1.
-     *  If no such timer, for-loop terminates with i-1, and we insert at 
-1+1=0.
-     */
-
-    n = timers.length;
-    for (i = n - 1; i >= 0; i--) {
-        t = timers[i];
-        if (timer.target <= t.target) {
-            // insert after 't', to index i+1
-            break;
-        }
-    }
-
-    timers.splice(i + 1 /*start*/, 0 /*deleteCount*/, timer);
-}
-
-// Remove timer/interval with a timer ID.  The timer/interval can reside
-// either on the active list or it may be an expired timer (this.expiring)
-// whose user callback we're running when this function gets called.
-EventLoop.removeTimerById = function(timer_id) {
-    var timers = this.timers;
-    var i, n, t;
-
-    t = this.expiring;
-    if (t) {
-        if (t.id === timer_id) {
-            // Timer has expired and we're processing its callback.  User
-            // callback has requested timer deletion.  Mark removed, so
-            // that the timer is not reinserted back into the active list.
-            // This is actually a common case because an interval may very
-            // well cancel itself.
-            t.removed = true;
-            return;
-        }
-    }
-
-    n = timers.length;
-    for (i = 0; i < n; i++) {
-        t = timers[i];
-        if (t.id === timer_id) {
-            // Timer on active list: mark removed (not really necessary, but
-            // nice for dumping), and remove from active list.
-            t.removed = true;
-            this.timers.splice(i /*start*/, 1 /*deleteCount*/);
-            return;
-        }
-    }
-
-   // no such ID, ignore
-}
-
-EventLoop.processTimers = function() {
-    var now = Date.now();
-    var timers = this.timers;
-    var sanity = this.maxExpirys;
-    var n, t;
-
-    /*
-     *  Here we must be careful with mutations: user callback may add and
-     *  delete an arbitrary number of timers.
-     *
-     *  Current solution is simple: check whether the timer at the end of
-     *  the list has expired.  If not, we're done.  If it has expired,
-     *  remove it from the active list, record it in this.expiring, and call
-     *  the user callback.  If user code deletes the this.expiring timer,
-     *  there is special handling which just marks the timer deleted so
-     *  it won't get inserted back into the active list.
-     *
-     *  This process is repeated at most maxExpirys times to ensure we don't
-     *  get stuck forever; user code could in principle add more and more
-     *  already expired timers.
-     */
-
-    while (sanity-- > 0) {
-        // If exit requested, don't call any more callbacks.  This allows
-        // a callback to do cleanups and request exit, and can be sure that
-        // no more callbacks are processed.
-
-        if (this.exitRequested) {
-            //print('exit requested, exit');
-            break;
-        }
-
-        // Timers to expire?
-
-        n = timers.length;
-        if (n <= 0) {
-            break;
-        }
-        t = timers[n - 1];
-        if (now <= t.target) {
-            // Timer has not expired, and no other timer could have expired
-            // either because the list is sorted.
-            break;
-        }
-        timers.pop();
-
-        // Remove the timer from the active list and process it.  The user
-        // callback may add new timers which is not a problem.  The callback
-        // may also delete timers which is not a problem unless the timer
-        // being deleted is the timer whose callback we're running; this is
-        // why the timer is recorded in this.expiring so that clearTimeout()
-        // and clearInterval() can detect this situation.
-
-        if (t.oneshot) {
-            t.removed = true;  // flag for removal
-        } else {
-            t.target = now + t.delay;
-        }
-        this.expiring = t;
-        try {
-            t.cb();
-        } catch (e) {
-            print('timer callback failed, ignored: ' + e);
-        }
-        this.expiring = null;
-
-        // If the timer was one-shot, it's marked 'removed'.  If the user 
callback
-        // requested deletion for the timer, it's also marked 'removed'.  If 
the
-        // timer is an interval (and is not marked removed), insert it back 
into
-        // the timer list.
-
-        if (!t.removed) {
-            // Reinsert interval timer to correct sorted position.  The timer
-            // must be an interval timer because one-shot timers are marked
-            // 'removed' above.
-            this.insertTimer(t);
-        }
-    }
-}
-
-EventLoop.run = function() {
-    var wait;
-    var POLLIN = Poll.POLLIN;
-    var POLLOUT = Poll.POLLOUT;
-    var poll_set;
-    var poll_count;
-    var fd;
-    var t, rev;
-    var rc;
-    var acc_res;
-
-    for (;;) {
-        /*
-         *  Process expired timers.
-         */
-
-        this.processTimers();
-        //this.dumpState();
-
-        /*
-         *  Exit check (may be requested by a user callback)
-         */
-
-        if (this.exitRequested) {
-            //print('exit requested, exit');
-            break;
-        }
-
-        /*
-         *  Create poll socket list.  This is a very naive approach.
-         *  On Linux, one could use e.g. epoll() and manage socket lists
-         *  incrementally.
-         */
-
-        poll_set = {};
-        poll_count = 0;
-        for (fd in this.socketListening) {
-            poll_set[fd] = { events: POLLIN, revents: 0 };
-            poll_count++;
-        }
-        for (fd in this.socketReading) {
-            poll_set[fd] = { events: POLLIN, revents: 0 };
-            poll_count++;
-        }
-        for (fd in this.socketConnecting) {
-            poll_set[fd] = { events: POLLOUT, revents: 0 };
-            poll_count++;
-        }
-        //print(new Date(), 'poll_set IN:', Duktape.enc('jx', poll_set));
-
-        /*
-         *  Wait timeout for timer closest to expiry.  Since the poll
-         *  timeout is relative, get this as close to poll() as possible.
-         */
-
-        wait = this.getEarliestWait();
-        if (wait === null) {
-            if (poll_count === 0) {
-                print('no active timers and no sockets to poll, exit');
-                break;
-            } else {
-                wait = this.maximumWait;
-            }
-        } else {
-            wait = Math.min(this.maximumWait, Math.max(this.minimumWait, 
wait));
-        }
-
-        /*
-         *  Do the actual poll.
-         */
-
-        try {
-            Poll.poll(poll_set, wait);
-        } catch (e) {
-            // Eat errors silently.  When resizing curses window an EINTR
-            // happens now.
-        }
-
-        /*
-         *  Process all sockets so that nothing is left unhandled for the
-         *  next round.
-         */
-
-        //print(new Date(), 'poll_set OUT:', Duktape.enc('jx', poll_set));
-        for (fd in poll_set) {
-            t = poll_set[fd];
-            rev = t.revents;
-
-            if (rev & POLLIN) {
-                cb = this.socketReading[fd];
-                if (cb) {
-                    data = Socket.read(fd);  // no size control now
-                    //print('READ', Duktape.enc('jx', data));
-                    if (data.length === 0) {
-                        //print('zero read for fd ' + fd + ', closing 
forcibly');
-                        rc = Socket.close(fd);  // ignore result
-                        delete this.socketListening[fd];
-                        delete this.socketReading[fd];
-                    } else {
-                        cb(fd, data);
-                    }
-                } else {
-                    cb = this.socketListening[fd];
-                    if (cb) {
-                        acc_res = Socket.accept(fd);
-                        //print('ACCEPT:', Duktape.enc('jx', acc_res));
-                        cb(acc_res.fd, acc_res.addr, acc_res.port);
-                    } else {
-                        //print('UNKNOWN');
-                    }
-                }
-            }
-
-            if (rev & POLLOUT) {
-                cb = this.socketConnecting[fd];
-                if (cb) {
-                    delete this.socketConnecting[fd];
-                    cb(fd);
-                } else {
-                    //print('UNKNOWN POLLOUT');
-                }
-            }
-
-            if ((rev & ~(POLLIN | POLLOUT)) !== 0) {
-                //print('revents ' + t.revents + ' for fd ' + fd + ', closing 
forcibly');
-                rc = Socket.close(fd);  // ignore result
-                delete this.socketListening[fd];
-                delete this.socketReading[fd];
-            }
-        }
-    }
-}
-
-EventLoop.requestExit = function() {
-    this.exitRequested = true;
-}
-
-EventLoop.server = function(address, port, cb_accepted) {
-    var fd = Socket.createServerSocket(address, port);
-    this.socketListening[fd] = cb_accepted;
-}
-
-EventLoop.connect = function(address, port, cb_connected) {
-    var fd = Socket.connect(address, port);
-    this.socketConnecting[fd] = cb_connected;
-}
-
-EventLoop.close = function(fd) {
-    delete this.socketReading[fd];
-    delete this.socketListening[fd];
-}
-
-EventLoop.setReader = function(fd, cb_read) {
-    this.socketReading[fd] = cb_read;
-}
-
-EventLoop.write = function(fd, data) {
-    // This simple example doesn't have support for write blocking / draining
-    var rc = Socket.write(fd, Duktape.Buffer(data));
-}
-
-/*
- *  Timer API
- *
- *  These interface with the singleton EventLoop.
- */
-
-function setTimeout(func, delay) {
-    var cb_func;
-    var bind_args;
-    var timer_id;
-    var evloop = EventLoop;
-
-    if (typeof delay !== 'number') {
-        throw new TypeError('delay is not a number');
-    }
-    delay = Math.max(evloop.minimumDelay, delay);
-
-    if (typeof func === 'string') {
-        // Legacy case: callback is a string.
-        cb_func = eval.bind(this, func);
-    } else if (typeof func !== 'function') {
-        throw new TypeError('callback is not a function/string');
-    } else if (arguments.length > 2) {
-        // Special case: callback arguments are provided.
-        bind_args = Array.prototype.slice.call(arguments, 2);  // [ arg1, 
arg2, ... ]
-        bind_args.unshift(this);  // [ global(this), arg1, arg2, ... ]
-        cb_func = func.bind.apply(func, bind_args);
-    } else {
-        // Normal case: callback given as a function without arguments.
-        cb_func = func;
-    }
-
-    timer_id = evloop.nextTimerId++;
-
-    evloop.insertTimer({
-        id: timer_id,
-        oneshot: true,
-        cb: cb_func,
-        delay: delay,
-        target: Date.now() + delay
-    });
-
-    return timer_id;
-}
-
-function clearTimeout(timer_id) {
-    var evloop = EventLoop;
-
-    if (typeof timer_id !== 'number') {
-        throw new TypeError('timer ID is not a number');
-    }
-    evloop.removeTimerById(timer_id);
-}
-
-function setInterval(func, delay) {
-    var cb_func;
-    var bind_args;
-    var timer_id;
-    var evloop = EventLoop;
-
-    if (typeof delay !== 'number') {
-        throw new TypeError('delay is not a number');
-    }
-    delay = Math.max(evloop.minimumDelay, delay);
-
-    if (typeof func === 'string') {
-        // Legacy case: callback is a string.
-        cb_func = eval.bind(this, func);
-    } else if (typeof func !== 'function') {
-        throw new TypeError('callback is not a function/string');
-    } else if (arguments.length > 2) {
-        // Special case: callback arguments are provided.
-        bind_args = Array.prototype.slice.call(arguments, 2);  // [ arg1, 
arg2, ... ]
-        bind_args.unshift(this);  // [ global(this), arg1, arg2, ... ]
-        cb_func = func.bind.apply(func, bind_args);
-    } else {
-        // Normal case: callback given as a function without arguments.
-        cb_func = func;
-    }
-
-    timer_id = evloop.nextTimerId++;
-
-    evloop.insertTimer({
-        id: timer_id,
-        oneshot: false,
-        cb: cb_func,
-        delay: delay,
-        target: Date.now() + delay
-    });
-
-    return timer_id;
-}
-
-function clearInterval(timer_id) {
-    var evloop = EventLoop;
-
-    if (typeof timer_id !== 'number') {
-        throw new TypeError('timer ID is not a number');
-    }
-    evloop.removeTimerById(timer_id);
-}
-
-/* custom call */
-function requestEventLoopExit() {
-    EventLoop.requestExit();
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/fileio.c
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/fileio.c
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/fileio.c
deleted file mode 100644
index df94cd4..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/fileio.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *  File I/O binding example.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "duktape.h"
-
-static int fileio_readfile(duk_context *ctx) {
-       const char *filename = duk_to_string(ctx, 0);
-       FILE *f = NULL;
-       long len;
-       void *buf;
-       size_t got;
-
-       if (!filename) {
-               goto error;
-       }
-
-       f = fopen(filename, "rb");
-       if (!f) {
-               goto error;
-       }
-
-       if (fseek(f, 0, SEEK_END) != 0) {
-               goto error;
-       }
-
-       len = ftell(f);
-
-       if (fseek(f, 0, SEEK_SET) != 0) {
-               goto error;
-       }
-
-       buf = duk_push_fixed_buffer(ctx, (size_t) len);
-
-       got = fread(buf, 1, len, f);
-       if (got != (size_t) len) {
-               goto error;
-       }
-
-       fclose(f);
-       f = NULL;
-
-       return 1;
-
- error:
-       if (f) {
-               fclose(f);
-       }
-
-       return DUK_RET_ERROR;
-}
-
-static duk_function_list_entry fileio_funcs[] = {
-       { "readfile", fileio_readfile, 1 },
-       { NULL, NULL, 0 }
-};
-
-void fileio_register(duk_context *ctx) {
-       /* Set global 'FileIo'. */
-       duk_push_global_object(ctx);
-       duk_push_object(ctx);
-       duk_put_function_list(ctx, -1, fileio_funcs);
-       duk_put_prop_string(ctx, -2, "FileIo");
-       duk_pop(ctx);
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/main.c
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/main.c
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/main.c
deleted file mode 100644
index 7627921..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/main.c
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- *  Main for evloop command line tool.
- *
- *  Runs a given script from file or stdin inside an eventloop.  The
- *  script can then access setTimeout() etc.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#ifndef NO_SIGNAL
-#include <signal.h>
-#endif
-
-#include "duktape.h"
-
-extern void poll_register(duk_context *ctx);
-extern void ncurses_register(duk_context *ctx);
-extern void socket_register(duk_context *ctx);
-extern void fileio_register(duk_context *ctx);
-extern void eventloop_register(duk_context *ctx);
-extern int eventloop_run(duk_context *ctx);  /* Duktape/C function, safe 
called */
-
-static int c_evloop = 0;
-
-#ifndef NO_SIGNAL
-static void my_sighandler(int x) {
-       fprintf(stderr, "Got signal %d\n", x);
-       fflush(stderr);
-}
-static void set_sigint_handler(void) {
-       (void) signal(SIGINT, my_sighandler);
-}
-#endif  /* NO_SIGNAL */
-
-/* Print error to stderr and pop error. */
-static void print_error(duk_context *ctx, FILE *f) {
-       if (duk_is_object(ctx, -1) && duk_has_prop_string(ctx, -1, "stack")) {
-               /* XXX: print error objects specially */
-               /* XXX: pcall the string coercion */
-               duk_get_prop_string(ctx, -1, "stack");
-               if (duk_is_string(ctx, -1)) {
-                       fprintf(f, "%s\n", duk_get_string(ctx, -1));
-                       fflush(f);
-                       duk_pop_2(ctx);
-                       return;
-               } else {
-                       duk_pop(ctx);
-               }
-       }
-       duk_to_string(ctx, -1);
-       fprintf(f, "%s\n", duk_get_string(ctx, -1));
-       fflush(f);
-       duk_pop(ctx);
-}
-
-int wrapped_compile_execute(duk_context *ctx) {
-       int comp_flags = 0;
-       int rc;
-
-       /* Compile input and place it into global _USERCODE */
-       duk_compile(ctx, comp_flags);
-       duk_push_global_object(ctx);
-       duk_insert(ctx, -2);  /* [ ... global func ] */
-       duk_put_prop_string(ctx, -2, "_USERCODE");
-       duk_pop(ctx);
-#if 0
-       printf("compiled usercode\n");
-#endif
-
-       /* Start a zero timer which will call _USERCODE from within
-        * the event loop.
-        */
-       fprintf(stderr, "set _USERCODE timer\n");
-       fflush(stderr);
-       duk_eval_string(ctx, "setTimeout(function() { _USERCODE(); }, 0);");
-       duk_pop(ctx);
-
-       /* Finally, launch eventloop.  This call only returns after the
-        * eventloop terminates.
-        */
-       if (c_evloop) {
-               fprintf(stderr, "calling eventloop_run()\n");
-               fflush(stderr);
-               rc = duk_safe_call(ctx, eventloop_run, 0 /*nargs*/, 1 
/*nrets*/);
-               if (rc != 0) {
-                       fprintf(stderr, "eventloop_run() failed: %s\n", 
duk_to_string(ctx, -1));
-                       fflush(stderr);
-               }
-               duk_pop(ctx);
-       } else {
-               fprintf(stderr, "calling EventLoop.run()\n");
-               fflush(stderr);
-               duk_eval_string(ctx, "EventLoop.run();");
-               duk_pop(ctx);
-       }
-
-       return 0;
-}
-
-int handle_fh(duk_context *ctx, FILE *f, const char *filename) {
-       char *buf = NULL;
-       int len;
-       int got;
-       int rc;
-       int retval = -1;
-
-       if (fseek(f, 0, SEEK_END) < 0) {
-               goto error;
-       }
-       len = (int) ftell(f);
-       if (fseek(f, 0, SEEK_SET) < 0) {
-               goto error;
-       }
-       buf = (char *) malloc(len);
-       if (!buf) {
-               goto error;
-       }
-
-       got = fread((void *) buf, (size_t) 1, (size_t) len, f);
-
-       duk_push_lstring(ctx, buf, got);
-       duk_push_string(ctx, filename);
-
-       free(buf);
-       buf = NULL;
-
-       rc = duk_safe_call(ctx, wrapped_compile_execute, 2 /*nargs*/, 1 
/*nret*/);
-       if (rc != DUK_EXEC_SUCCESS) {
-               print_error(ctx, stderr);
-               goto error;
-       } else {
-               duk_pop(ctx);
-               retval = 0;
-       }
-       /* fall thru */
-
- error:
-       if (buf) {
-               free(buf);
-       }
-       return retval;
-}
-
-int handle_file(duk_context *ctx, const char *filename) {
-       FILE *f = NULL;
-       int retval;
-
-       f = fopen(filename, "rb");
-       if (!f) {
-               fprintf(stderr, "failed to open source file: %s\n", filename);
-               fflush(stderr);
-               goto error;
-       }
-
-       retval = handle_fh(ctx, f, filename);
-
-       fclose(f);
-       return retval;
-
- error:
-       return -1;
-}
-
-int handle_stdin(duk_context *ctx) {
-       int retval;
-
-       retval = handle_fh(ctx, stdin, "stdin");
-
-       return retval;
-}
-
-int main(int argc, char *argv[]) {
-       duk_context *ctx = NULL;
-       int retval = 0;
-       const char *filename = NULL;
-       int i;
-
-#ifndef NO_SIGNAL
-       set_sigint_handler();
-
-       /* This is useful at the global level; libraries should avoid SIGPIPE 
though */
-       /*signal(SIGPIPE, SIG_IGN);*/
-#endif
-
-       for (i = 1; i < argc; i++) {
-               char *arg = argv[i];
-               if (!arg) {
-                       goto usage;
-               }
-               if (strcmp(arg, "-c") == 0) {
-                       c_evloop = 1;
-               } else if (strlen(arg) > 1 && arg[0] == '-') {
-                       goto usage;
-               } else {
-                       if (filename) {
-                               goto usage;
-                       }
-                       filename = arg;
-               }
-       }
-       if (!filename) {
-               goto usage;
-       }
-
-       ctx = duk_create_heap_default();
-
-       poll_register(ctx);
-       ncurses_register(ctx);
-       socket_register(ctx);
-       fileio_register(ctx);
-
-       if (c_evloop) {
-               fprintf(stderr, "Using C based eventloop (omit -c to use 
Ecmascript based eventloop)\n");
-               fflush(stderr);
-
-               eventloop_register(ctx);
-               duk_eval_file(ctx, "c_eventloop.js");
-       } else {
-               fprintf(stderr, "Using Ecmascript based eventloop (give -c to 
use C based eventloop)\n");
-               fflush(stderr);
-
-               duk_eval_file(ctx, "ecma_eventloop.js");
-       }
-
-       fprintf(stderr, "Executing code from: '%s'\n", filename);
-       fflush(stderr);
-
-       if (strcmp(filename, "-") == 0) {
-               if (handle_stdin(ctx) != 0) {
-                       retval = 1;
-                       goto cleanup;
-               }
-       } else {
-               if (handle_file(ctx, filename) != 0) {
-                       retval = 1;
-                       goto cleanup;
-               }
-       }
-
- cleanup:
-       if (ctx) {
-               duk_destroy_heap(ctx);
-       }
-
-       return retval;
-
- usage:
-       fprintf(stderr, "Usage: evloop [-c] <filename>\n");
-       fprintf(stderr, "\n");
-       fprintf(stderr, "Uses an Ecmascript based eventloop (ecma_eventloop.js) 
by default.\n");
-       fprintf(stderr, "If -c option given, uses a C based eventloop 
(c_eventloop.{c,js}).\n");
-       fprintf(stderr, "If <filename> is '-', the entire STDIN executed.\n");
-       fflush(stderr);
-       exit(1);
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/ncurses.c
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/ncurses.c
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/ncurses.c
deleted file mode 100644
index 7734fcc..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/ncurses.c
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- *  Ncurses bindings example.
- *
- *  VALGRIND NOTE: when you use ncurses, there seems to be no way to get a
- *  clean valgrind run.  Even if ncurses state is properly shut down, there
- *  will still be some residual leaks.
- *
- *  Debian: install libncurses5-dev
- */
-
-#include <curses.h>
-#include "duktape.h"
-
-static int ncurses_initscr(duk_context *ctx) {
-       WINDOW *win;
-
-       win = initscr();
-       duk_push_pointer(ctx, (void *) win);
-       return 1;
-}
-
-static int ncurses_endwin(duk_context *ctx) {
-       int rc;
-
-       rc = endwin();
-       duk_push_int(ctx, rc);
-       return 1;
-}
-
-static int ncurses_delscreen(duk_context *ctx) {
-       /* XXX: no screen management now */
-       (void) ctx;
-       return 0;
-}
-
-static int ncurses_getmaxyx(duk_context *ctx) {
-       int row, col;
-
-       getmaxyx(stdscr, row, col);
-
-       duk_push_array(ctx);
-       duk_push_int(ctx, row);
-       duk_put_prop_index(ctx, -2, 0);
-       duk_push_int(ctx, col);
-       duk_put_prop_index(ctx, -2, 1);
-       return 1;
-}
-
-static int ncurses_printw(duk_context *ctx) {
-       int rc;
-       const char *str;
-
-       str = duk_to_string(ctx, 0);
-       rc = printw("%s", str);
-       duk_push_int(ctx, rc);
-       return 1;
-}
-
-static int ncurses_mvprintw(duk_context *ctx) {
-       int y = duk_to_int(ctx, 0);
-       int x = duk_to_int(ctx, 1);
-       const char *str = duk_to_string(ctx, 2);
-       int rc;
-
-       rc = mvprintw(y, x, "%s", str);
-       duk_push_int(ctx, rc);
-       return 1;
-}
-
-static int ncurses_refresh(duk_context *ctx) {
-       int rc;
-
-       rc = refresh();
-       duk_push_int(ctx, rc);
-       return 1;
-}
-
-static int ncurses_getch(duk_context *ctx) {
-       int rc;
-
-       rc = getch();
-       duk_push_int(ctx, rc);
-       return 1;
-}
-
-static duk_function_list_entry ncurses_funcs[] = {
-       { "initscr", ncurses_initscr, 0 },
-       { "endwin", ncurses_endwin, 0 },
-       { "delscreen", ncurses_delscreen, 0 },
-       { "getmaxyx", ncurses_getmaxyx, 0 },
-       { "printw", ncurses_printw, 1 },
-       { "mvprintw", ncurses_mvprintw, 3 },
-       { "refresh", ncurses_refresh, 0 },
-       { "getch", ncurses_getch, 0 },
-       { NULL, NULL, 0 }
-};
-
-void ncurses_register(duk_context *ctx) {
-       /* Set global 'Ncurses'. */
-       duk_push_global_object(ctx);
-       duk_push_object(ctx);
-       duk_put_function_list(ctx, -1, ncurses_funcs);
-       duk_put_prop_string(ctx, -2, "Ncurses");
-       duk_pop(ctx);
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/poll.c
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/poll.c
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/poll.c
deleted file mode 100644
index c78745d..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/poll.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- *  C wrapper for poll().
- */
-
-#define _GNU_SOURCE
-#include <errno.h>
-#include <string.h>
-#include <stdio.h>
-#include <poll.h>
-#include <time.h>
-
-#include "duktape.h"
-
-static int poll_poll(duk_context *ctx) {
-       int timeout = duk_to_int(ctx, 1);
-       int i, n, nchanged;
-       int fd, rc;
-       struct pollfd fds[20];
-       struct timespec ts;
-
-       memset(fds, 0, sizeof(fds));
-
-       n = 0;
-       duk_enum(ctx, 0, 0 /*enum_flags*/);
-       while (duk_next(ctx, -1, 0)) {
-               if ((size_t) n >= sizeof(fds) / sizeof(struct pollfd)) {
-                       return -1;
-               }
-
-               /* [... enum key] */
-               duk_dup_top(ctx);  /* -> [... enum key key] */
-               duk_get_prop(ctx, 0);  /* -> [... enum key val] */
-               fd = duk_to_int(ctx, -2);
-
-               duk_push_string(ctx, "events");
-               duk_get_prop(ctx, -2);  /* -> [... enum key val events] */
-
-               fds[n].fd = fd;
-               fds[n].events = duk_to_int(ctx, -1);
-               fds[n].revents = 0;
-
-               duk_pop_n(ctx, 3);  /* -> [... enum] */
-
-               n++;
-       }
-       /* leave enum on stack */
-
-       memset(&ts, 0, sizeof(ts));
-       ts.tv_nsec = (timeout % 1000) * 1000000;
-       ts.tv_sec = timeout / 1000;
-
-       /*rc = ppoll(fds, n, &ts, NULL);*/
-       rc = poll(fds, n, timeout);
-       if (rc < 0) {
-               duk_error(ctx, DUK_ERR_ERROR, "%s (errno=%d)", strerror(errno), 
errno);
-       }
-
-       duk_push_array(ctx);
-       nchanged = 0;
-       for (i = 0; i < n; i++) {
-               /* update revents */
-
-               if (fds[i].revents) {
-                       duk_push_int(ctx, fds[i].fd);  /* -> [... retarr fd] */
-                       duk_put_prop_index(ctx, -2, nchanged);
-                       nchanged++;
-               }
-
-               duk_push_int(ctx, fds[i].fd);  /* -> [... retarr key] */
-               duk_get_prop(ctx, 0);  /* -> [... retarr val] */
-               duk_push_string(ctx, "revents");
-               duk_push_int(ctx, fds[i].revents);  /* -> [... retarr val 
"revents" fds[i].revents] */
-               duk_put_prop(ctx, -3);  /* -> [... retarr val] */
-               duk_pop(ctx);
-       }
-
-       /* [retarr] */
-
-       return 1;
-}
-
-static duk_function_list_entry poll_funcs[] = {
-       { "poll", poll_poll, 2 },
-       { NULL, NULL, 0 }
-};
-
-static duk_number_list_entry poll_consts[] = {
-       { "POLLIN", (double) POLLIN },
-       { "POLLPRI", (double) POLLPRI },
-       { "POLLOUT", (double) POLLOUT },
-#if 0
-       /* Linux 2.6.17 and upwards, requires _GNU_SOURCE etc, not added
-        * now because we don't use it.
-        */
-       { "POLLRDHUP", (double) POLLRDHUP },
-#endif
-       { "POLLERR", (double) POLLERR },
-       { "POLLHUP", (double) POLLHUP },
-       { "POLLNVAL", (double) POLLNVAL },
-       { NULL, 0.0 }
-};
-
-void poll_register(duk_context *ctx) {
-       /* Set global 'Poll' with functions and constants. */
-       duk_push_global_object(ctx);
-       duk_push_object(ctx);
-       duk_put_function_list(ctx, -1, poll_funcs);
-       duk_put_number_list(ctx, -1, poll_consts);
-       duk_put_prop_string(ctx, -2, "Poll");
-       duk_pop(ctx);
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/server-socket-test.js
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/server-socket-test.js
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/server-socket-test.js
deleted file mode 100644
index 68510af..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/server-socket-test.js
+++ /dev/null
@@ -1,34 +0,0 @@
-
-var HOST = 'localhost'
-var PORT = 12345;
-var EXIT_TIMEOUT = 300e3;
-
-print('automatic exit after ' + (EXIT_TIMEOUT / 1e3) + ' seconds');
-setTimeout(function () {
-    print('exit timer');
-    EventLoop.requestExit();
-}, EXIT_TIMEOUT);
-
-print('listen on ' + HOST + ':' + PORT);
-EventLoop.server(HOST, PORT, function (fd, addr, port) {
-    print('new connection on fd ' + fd + ' from ' + addr + ':' + port);
-    EventLoop.setReader(fd, function (fd, data) {
-        var b, i, n, x;
-
-        // Handle socket data carefully: if you convert it to a string,
-        // it may not be valid UTF-8 etc.  Here we operate on the data
-        // directly in the buffer.
-
-        b = data.valueOf();  // ensure we get a plain buffer
-        n = b.length;
-        for (i = 0; i < n; i++) {
-            x = b[i];
-            if (x >= 0x61 && x <= 0x7a) {
-                b[i] = x - 0x20;  // uppercase
-            }
-        }
-
-        print('read data on fd ' + fd + ', length ' + data.length);
-        EventLoop.write(fd, data);
-    });
-});

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/socket.c
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/socket.c
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/socket.c
deleted file mode 100644
index a1587fa..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/eventloop/socket.c
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- *  TCP sockets binding example.
- */
-
-#define _GNU_SOURCE
-#include <errno.h>
-#include <string.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <netdb.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <time.h>
-
-#include "duktape.h"
-
-#define  ERROR_FROM_ERRNO(ctx)  do { \
-               duk_error(ctx, DUK_ERR_ERROR, "%s (errno=%d)", strerror(errno), 
errno); \
-       } while (0)
-
-static void set_nonblocking(duk_context *ctx, int fd) {
-       int rc;
-       int flags;
-
-       rc = fcntl(fd, F_GETFL);
-       if (rc < 0) {
-               ERROR_FROM_ERRNO(ctx);
-       }
-       flags = rc;
-
-       flags |= O_NONBLOCK;
-
-       rc = fcntl(fd, F_SETFL, flags);
-       if (rc < 0) {
-               ERROR_FROM_ERRNO(ctx);
-       }
-}
-
-static void set_reuseaddr(duk_context *ctx, int fd) {
-       int val;
-       int rc;
-
-       val = 1;
-       rc = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, (const void *) &val, 
sizeof(val));
-       if (rc != 0) {
-               ERROR_FROM_ERRNO(ctx);
-       }
-}
-
-#ifdef __APPLE__
-static void set_nosigpipe(duk_context *ctx, int fd) {
-       int val;
-       int rc;
-
-       val = 1;
-       rc = setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, (const void *) &val, 
sizeof(val));
-       if (rc != 0) {
-               ERROR_FROM_ERRNO(ctx);
-       }
-}
-#endif
-
-static int socket_create_server_socket(duk_context *ctx) {
-       const char *addr = duk_to_string(ctx, 0);
-       int port = duk_to_int(ctx, 1);
-       int sock;
-       struct sockaddr_in sockaddr;
-       struct hostent *ent;
-       struct in_addr **addr_list;
-       struct in_addr *addr_inet;
-       int i;
-       int rc;
-
-       sock = socket(AF_INET, SOCK_STREAM, 0);
-       if (sock < 0) {
-               ERROR_FROM_ERRNO(ctx);
-       }
-
-       set_nonblocking(ctx, sock);
-       set_reuseaddr(ctx, sock);
-#ifdef __APPLE__
-       set_nosigpipe(ctx, sock);
-#endif
-
-       ent = gethostbyname(addr);
-       if (!ent) {
-               ERROR_FROM_ERRNO(ctx);
-       }
-
-       addr_list = (struct in_addr **) ent->h_addr_list;
-       addr_inet = NULL;
-       for (i = 0; addr_list[i]; i++) {
-               addr_inet = addr_list[i];
-               break;
-       }
-       if (!addr_inet) {
-               duk_error(ctx, DUK_ERR_ERROR, "cannot resolve %s", addr);
-       }
-
-       memset(&sockaddr, 0, sizeof(sockaddr));
-       sockaddr.sin_family = AF_INET;
-       sockaddr.sin_port = htons(port);
-       sockaddr.sin_addr = *addr_inet;
-
-       rc = bind(sock, (const struct sockaddr *) &sockaddr, sizeof(sockaddr));
-       if (rc < 0) {
-               ERROR_FROM_ERRNO(ctx);
-       }
-
-       rc = listen(sock, 10 /*backlog*/);
-       if (rc < 0) {
-               (void) close(sock);
-               ERROR_FROM_ERRNO(ctx);
-       }
-
-       duk_push_int(ctx, sock);
-       return 1;
-}
-
-static int socket_close(duk_context *ctx) {
-       int sock = duk_to_int(ctx, 0);
-       int rc;
-
-       rc = close(sock);
-       if (rc < 0) {
-               ERROR_FROM_ERRNO(ctx);
-       }
-       return 0;
-}
-
-static int socket_accept(duk_context *ctx) {
-       int sock = duk_to_int(ctx, 0);
-       int rc;
-       struct sockaddr_in addr;
-       socklen_t addrlen;
-
-       memset(&addr, 0, sizeof(addr));
-       addr.sin_family = AF_INET;
-       addrlen = sizeof(addr);
-
-       rc = accept(sock, (struct sockaddr *) &addr, &addrlen);
-       if (rc < 0) {
-               ERROR_FROM_ERRNO(ctx);
-       }
-
-       set_nonblocking(ctx, sock);
-#ifdef __APPLE__
-       set_nosigpipe(ctx, sock);
-#endif
-
-       if (addrlen == sizeof(addr)) {
-               uint32_t tmp = ntohl(addr.sin_addr.s_addr);
-
-               duk_push_object(ctx);
-
-               duk_push_string(ctx, "fd");
-               duk_push_int(ctx, rc);
-               duk_put_prop(ctx, -3);
-               duk_push_string(ctx, "addr");
-               duk_push_sprintf(ctx, "%d.%d.%d.%d", ((tmp >> 24) & 0xff), 
((tmp >> 16) & 0xff), ((tmp >> 8) & 0xff), (tmp & 0xff));
-               duk_put_prop(ctx, -3);
-               duk_push_string(ctx, "port");
-               duk_push_int(ctx, ntohs(addr.sin_port));
-               duk_put_prop(ctx, -3);
-
-               return 1;
-       }
-
-       return 0;
-}
-
-static int socket_connect(duk_context *ctx) {
-       const char *addr = duk_to_string(ctx, 0);
-       int port = duk_to_int(ctx, 1);
-       int sock;
-       struct sockaddr_in sockaddr;
-       struct hostent *ent;
-       struct in_addr **addr_list;
-       struct in_addr *addr_inet;
-       int i;
-       int rc;
-
-       sock = socket(AF_INET, SOCK_STREAM, 0);
-       if (sock < 0) {
-               ERROR_FROM_ERRNO(ctx);
-       }
-
-       set_nonblocking(ctx, sock);
-#ifdef __APPLE__
-       set_nosigpipe(ctx, sock);
-#endif
-
-       ent = gethostbyname(addr);
-       if (!ent) {
-               ERROR_FROM_ERRNO(ctx);
-       }
-
-       addr_list = (struct in_addr **) ent->h_addr_list;
-       addr_inet = NULL;
-       for (i = 0; addr_list[i]; i++) {
-               addr_inet = addr_list[i];
-               break;
-       }
-       if (!addr_inet) {
-               duk_error(ctx, DUK_ERR_ERROR, "cannot resolve %s", addr);
-       }
-
-       memset(&sockaddr, 0, sizeof(sockaddr));
-       sockaddr.sin_family = AF_INET;
-       sockaddr.sin_port = htons(port);
-       sockaddr.sin_addr = *addr_inet;
-
-       rc = connect(sock, (const struct sockaddr *) &sockaddr, (socklen_t) 
sizeof(sockaddr));
-       if (rc < 0) {
-               if (errno == EINPROGRESS) {
-#if 0
-                       fprintf(stderr, "connect() returned EINPROGRESS as 
expected, need to poll writability\n");
-                       fflush(stderr);
-#endif
-               } else {
-                       ERROR_FROM_ERRNO(ctx);
-               }
-       }
-
-       duk_push_int(ctx, sock);
-       return 1;
-}
-
-static int socket_read(duk_context *ctx) {
-       int sock = duk_to_int(ctx, 0);
-       char readbuf[1024];
-       int rc;
-       void *data;
-
-       rc = recvfrom(sock, (void *) readbuf, sizeof(readbuf), 0, NULL, NULL);
-       if (rc < 0) {
-               ERROR_FROM_ERRNO(ctx);
-       }
-
-       data = duk_push_fixed_buffer(ctx, rc);
-       memcpy(data, readbuf, rc);
-       return 1;
-}
-
-static int socket_write(duk_context *ctx) {
-       int sock = duk_to_int(ctx, 0);
-       const char *data;
-       size_t len;
-       ssize_t rc;
-
-       data = duk_to_buffer(ctx, 1, &len);
-
-       /* MSG_NOSIGNAL: avoid SIGPIPE */
-#ifdef __APPLE__
-       rc = sendto(sock, (void *) data, len, 0, NULL, 0);
-#else
-       rc = sendto(sock, (void *) data, len, MSG_NOSIGNAL, NULL, 0);
-#endif
-       if (rc < 0) {
-               ERROR_FROM_ERRNO(ctx);
-       }
-
-       duk_push_int(ctx, rc);
-       return 1;
-}
-
-static duk_function_list_entry socket_funcs[] = {
-       { "createServerSocket", socket_create_server_socket, 2 },
-       { "close", socket_close, 1 },
-       { "accept", socket_accept, 1 },
-       { "connect", socket_connect, 2 },
-       { "read", socket_read, 1 },
-       { "write", socket_write, 2 },
-       { NULL, NULL, 0 }
-};
-
-void socket_register(duk_context *ctx) {
-       /* Set global 'Socket'. */
-       duk_push_global_object(ctx);
-       duk_push_object(ctx);
-       duk_put_function_list(ctx, -1, socket_funcs);
-       duk_put_prop_string(ctx, -2, "Socket");
-       duk_pop(ctx);
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/README.rst
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/README.rst
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/README.rst
deleted file mode 100644
index 1933094..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/README.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-===========================
-Duktape guide example files
-===========================
-
-Examples used in the Duktape guide.

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/fib.js
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/fib.js 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/fib.js
deleted file mode 100644
index 2b2982f..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/fib.js
+++ /dev/null
@@ -1,16 +0,0 @@
-// fib.js
-function fib(n) {
-    if (n == 0) { return 0; }
-    if (n == 1) { return 1; }
-    return fib(n-1) + fib(n-2);
-}
-
-function test() {
-    var res = [];
-    for (i = 0; i < 20; i++) {
-        res.push(fib(i));
-    }
-    print(res.join(' '));
-}
-
-test();

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/prime.js
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/prime.js
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/prime.js
deleted file mode 100644
index 8959754..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/prime.js
+++ /dev/null
@@ -1,32 +0,0 @@
-// prime.js
-
-// Pure Ecmascript version of low level helper
-function primeCheckEcmascript(val, limit) {
-    for (var i = 2; i <= limit; i++) {
-        if ((val % i) == 0) { return false; }
-    }
-    return true;
-}
-
-// Select available helper at load time
-var primeCheckHelper = (this.primeCheckNative || primeCheckEcmascript);
-
-// Check 'val' for primality
-function primeCheck(val) {
-    if (val == 1 || val == 2) { return true; }
-    var limit = Math.ceil(Math.sqrt(val));
-    while (limit * limit < val) { limit += 1; }
-    return primeCheckHelper(val, limit);
-}
-
-// Find primes below one million ending in '9999'.
-function primeTest() {
-    var res = [];
-
-    print('Have native helper: ' + (primeCheckHelper !== 
primeCheckEcmascript));
-    for (var i = 1; i < 1000000; i++) {
-        if (primeCheck(i) && (i % 10000) == 9999) { res.push(i); }
-    } 
-    print(res.join(' '));
-}
-

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/primecheck.c
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/primecheck.c
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/primecheck.c
deleted file mode 100644
index 36fa5d6..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/primecheck.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* primecheck.c */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "duktape.h"
-
-static duk_ret_t native_prime_check(duk_context *ctx) {
-    int val = duk_require_int(ctx, 0);
-    int lim = duk_require_int(ctx, 1);
-    int i;
-
-    for (i = 2; i <= lim; i++) {
-        if (val % i == 0) {
-            duk_push_false(ctx);
-            return 1;
-        }
-    }
-
-    duk_push_true(ctx);
-    return 1;
-}
-
-int main(int argc, const char *argv[]) {
-    duk_context *ctx = NULL;
-
-    ctx = duk_create_heap_default();
-    if (!ctx) {
-        printf("Failed to create a Duktape heap.\n");
-        exit(1);
-    }
-
-    duk_push_global_object(ctx);
-    duk_push_c_function(ctx, native_prime_check, 2 /*nargs*/);
-    duk_put_prop_string(ctx, -2, "primeCheckNative");
-
-    if (duk_peval_file(ctx, "prime.js") != 0) {
-        printf("Error: %s\n", duk_safe_to_string(ctx, -1));
-        goto finished;
-    }
-    duk_pop(ctx);  /* ignore result */
-
-    duk_get_prop_string(ctx, -1, "primeTest");
-    if (duk_pcall(ctx, 0) != 0) {
-        printf("Error: %s\n", duk_safe_to_string(ctx, -1));
-    }
-    duk_pop(ctx);  /* ignore result */
-
- finished:
-    duk_destroy_heap(ctx);
-
-    exit(0);
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/process.js
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/process.js
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/process.js
deleted file mode 100644
index 62b5011..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/process.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// process.js
-function processLine(line) {
-    return line.trim()
-        .replace(/[<>&"'\u0000-\u001F\u007E-\uFFFF]/g, function(x) {
-            // escape HTML characters
-            return '&#' + x.charCodeAt(0) + ';'
-         })
-        .replace(/\*(.*?)\*/g, function(x, m) {
-            // automatically bold text between stars
-            return '<b>' + m + '</b>';
-         });
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/processlines.c
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/processlines.c
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/processlines.c
deleted file mode 100644
index f91bdff..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/processlines.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* processlines.c */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "duktape.h"
-
-int main(int argc, const char *argv[]) {
-    duk_context *ctx = NULL;
-    char line[4096];
-    char idx;
-    int ch;
-
-    ctx = duk_create_heap_default();
-    if (!ctx) {
-        printf("Failed to create a Duktape heap.\n");
-        exit(1);
-    }
-
-    if (duk_peval_file(ctx, "process.js") != 0) {
-        printf("Error: %s\n", duk_safe_to_string(ctx, -1));
-        goto finished;
-    }
-    duk_pop(ctx);  /* ignore result */
-
-    memset(line, 0, sizeof(line));
-    idx = 0;
-    for (;;) {
-        if (idx >= sizeof(line)) {
-            printf("Line too long\n");
-            exit(1);
-        }
-
-        ch = fgetc(stdin);
-        if (ch == 0x0a) {
-            line[idx++] = '\0';
-
-            duk_push_global_object(ctx);
-            duk_get_prop_string(ctx, -1 /*index*/, "processLine");
-            duk_push_string(ctx, line);
-            if (duk_pcall(ctx, 1 /*nargs*/) != 0) {
-                printf("Error: %s\n", duk_safe_to_string(ctx, -1));
-            } else {
-                printf("%s\n", duk_safe_to_string(ctx, -1));
-            }
-            duk_pop(ctx);  /* pop result/error */
-
-            idx = 0;
-        } else if (ch == EOF) {
-            break;
-        } else {
-            line[idx++] = (char) ch;
-        }
-    }
-
- finished:
-    duk_destroy_heap(ctx);
-
-    exit(0);
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/uppercase.c
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/uppercase.c
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/uppercase.c
deleted file mode 100644
index 03d0869..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/guide/uppercase.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* uppercase.c */
-#include <stdio.h>
-#include <stdlib.h>
-#include "duktape.h"
-
-static int dummy_upper_case(duk_context *ctx) {
-    size_t sz;
-    const char *val = duk_require_lstring(ctx, 0, &sz);
-    size_t i;
-
-    /* We're going to need 'sz' additional entries on the stack. */
-    duk_require_stack(ctx, sz);
-
-    for (i = 0; i < sz; i++) {
-        char ch = val[i];
-        if (ch >= 'a' && ch <= 'z') {
-            ch = ch - 'a' + 'A';
-        }
-        duk_push_lstring(ctx, (const char *) &ch, 1);
-    }
-
-    duk_concat(ctx, sz);
-    return 1;
-}
-
-int main(int argc, char *argv[]) {
-    duk_context *ctx;
-
-    if (argc < 2) { exit(1); }
-
-    ctx = duk_create_heap_default();
-    if (!ctx) { exit(1); }
-
-    duk_push_c_function(ctx, dummy_upper_case, 1);
-    duk_push_string(ctx, argv[1]);
-    duk_call(ctx, 1);
-    printf("%s -> %s\n", argv[1], duk_to_string(ctx, -1));
-    duk_pop(ctx);
-
-    duk_destroy_heap(ctx);
-    return 0;
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/hello/README.rst
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/hello/README.rst
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/hello/README.rst
deleted file mode 100644
index 7afef53..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/hello/README.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-===================
-Hello world example
-===================
-
-Very simple example, most useful for compilation tests.

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/hello/hello.c
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/hello/hello.c 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/hello/hello.c
deleted file mode 100644
index 9113d2f..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/hello/hello.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  Very simple example program
- */
-
-#include "duktape.h"
-
-int adder(duk_context *ctx) {
-       int i;
-       int n = duk_get_top(ctx);  /* #args */
-       double res = 0.0;
-
-       for (i = 0; i < n; i++) {
-               res += duk_to_number(ctx, i);
-       }
-
-       duk_push_number(ctx, res);
-       return 1;  /* one return value */
-}
-
-int main(int argc, char *argv[]) {
-       duk_context *ctx = duk_create_heap_default();
-
-       (void) argc; (void) argv;  /* suppress warning */
-
-       duk_eval_string(ctx, "print('Hello world!');");
-
-       duk_push_global_object(ctx);
-       duk_push_c_function(ctx, adder, DUK_VARARGS);
-       duk_put_prop_string(ctx, -2, "adder");
-       duk_pop(ctx);  /* pop global */
-
-       duk_eval_string(ctx, "print('2+3=' + adder(2, 3));");
-       duk_pop(ctx);  /* pop eval result */
-
-       duk_destroy_heap(ctx);
-
-       return 0;
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/jxpretty/README.rst
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/jxpretty/README.rst
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/jxpretty/README.rst
deleted file mode 100644
index 5ab43a8..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/jxpretty/README.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-================
-Jxpretty example
-================
-
-Simple command line utility to pretty print JSON in the JX format.

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/jxpretty/jxpretty.c
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/jxpretty/jxpretty.c
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/jxpretty/jxpretty.c
deleted file mode 100644
index 1e483ef..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/jxpretty/jxpretty.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- *  Pretty print JSON from stdin into indented JX.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "duktape.h"
-
-static duk_ret_t do_jxpretty(duk_context *ctx) {
-       FILE *f = stdin;
-       char buf[4096];
-       size_t ret;
-
-       for (;;) {
-               if (ferror(f)) {
-                       duk_error(ctx, DUK_ERR_ERROR, "ferror() on stdin");
-               }
-               if (feof(f)) {
-                       break;
-               }
-
-               ret = fread(buf, 1, sizeof(buf), f);
-#if 0
-               fprintf(stderr, "Read: %ld\n", (long) ret);
-               fflush(stderr);
-#endif
-               if (ret == 0) {
-                       break;
-               }
-
-               duk_require_stack(ctx, 1);
-               duk_push_lstring(ctx, (const char *) buf, ret);
-       }
-
-       duk_concat(ctx, duk_get_top(ctx));
-
-       duk_eval_string(ctx, "(function (v) { print(Duktape.enc('jx', 
JSON.parse(v), null, 4)); })");
-       duk_insert(ctx, -2);
-       duk_call(ctx, 1);
-
-       return 0;
-}
-
-int main(int argc, char *argv[]) {
-       duk_context *ctx;
-       duk_int_t rc;
-
-       /* suppress warnings */
-       (void) argc;
-       (void) argv;
-
-       ctx = duk_create_heap_default();
-
-       rc = duk_safe_call(ctx, do_jxpretty, 0 /*nargs*/, 1 /*nrets*/);
-       if (rc) {
-               fprintf(stderr, "ERROR: %s\n", duk_safe_to_string(ctx, -1));
-               fflush(stderr);
-       }
-
-       duk_destroy_heap(ctx);
-
-       return 0;
-}

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/sandbox/README.rst
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/sandbox/README.rst
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/sandbox/README.rst
deleted file mode 100644
index 24df0a2..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/sandbox/README.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-===============
-Sandbox example
-===============
-
-Very simple, minimal sandboxing example.

http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/ede68a10/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/sandbox/sandbox.c
----------------------------------------------------------------------
diff --git 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/sandbox/sandbox.c
 
b/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/sandbox/sandbox.c
deleted file mode 100644
index 915faa9..0000000
--- 
a/thirdparty/civetweb-1.10/src/third_party/duktape-1.5.2/examples/sandbox/sandbox.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- *  Sandboxing example
- *
- *  Uses custom memory allocation functions which keep track of total amount
- *  of memory allocated, imposing a maximum total allocation size.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "duktape.h"
-
-/*
- *  Memory allocator which backs to standard library memory functions but
- *  keeps a small header to track current allocation size.
- *
- *  Many other sandbox allocation models are useful, e.g. preallocated pools.
- */
-
-typedef struct {
-       /* The double value in the union is there to ensure alignment is
-        * good for IEEE doubles too.  In many 32-bit environments 4 bytes
-        * would be sufficiently aligned and the double value is unnecessary.
-        */
-       union {
-               size_t sz;
-               double d;
-       } u;
-} alloc_hdr;
-
-static size_t total_allocated = 0;
-static size_t max_allocated = 256 * 1024;  /* 256kB sandbox */
-
-static void sandbox_dump_memstate(void) {
-#if 0
-       fprintf(stderr, "Total allocated: %ld\n", (long) total_allocated);
-       fflush(stderr);
-#endif
-}
-
-static void *sandbox_alloc(void *udata, duk_size_t size) {
-       alloc_hdr *hdr;
-
-       (void) udata;  /* Suppress warning. */
-
-       if (size == 0) {
-               return NULL;
-       }
-
-       if (total_allocated + size > max_allocated) {
-               fprintf(stderr, "Sandbox maximum allocation size reached, %ld 
requested in sandbox_alloc\n",
-                       (long) size);
-               fflush(stderr);
-               return NULL;
-       }
-
-       hdr = (alloc_hdr *) malloc(size + sizeof(alloc_hdr));
-       if (!hdr) {
-               return NULL;
-       }
-       hdr->u.sz = size;
-       total_allocated += size;
-       sandbox_dump_memstate();
-       return (void *) (hdr + 1);
-}
-
-static void *sandbox_realloc(void *udata, void *ptr, duk_size_t size) {
-       alloc_hdr *hdr;
-       size_t old_size;
-       void *t;
-
-       (void) udata;  /* Suppress warning. */
-
-       /* Handle the ptr-NULL vs. size-zero cases explicitly to minimize
-        * platform assumptions.  You can get away with much less in specific
-        * well-behaving environments.
-        */
-
-       if (ptr) {
-               hdr = (alloc_hdr *) (((char *) ptr) - sizeof(alloc_hdr));
-               old_size = hdr->u.sz;
-
-               if (size == 0) {
-                       total_allocated -= old_size;
-                       free((void *) hdr);
-                       sandbox_dump_memstate();
-                       return NULL;
-               } else {
-                       if (total_allocated - old_size + size > max_allocated) {
-                               fprintf(stderr, "Sandbox maximum allocation 
size reached, %ld requested in sandbox_realloc\n",
-                                       (long) size);
-                               fflush(stderr);
-                               return NULL;
-                       }
-
-                       t = realloc((void *) hdr, size + sizeof(alloc_hdr));
-                       if (!t) {
-                               return NULL;
-                       }
-                       hdr = (alloc_hdr *) t;
-                       total_allocated -= old_size;
-                       total_allocated += size;
-                       hdr->u.sz = size;
-                       sandbox_dump_memstate();
-                       return (void *) (hdr + 1);
-               }
-       } else {
-               if (size == 0) {
-                       return NULL;
-               } else {
-                       if (total_allocated + size > max_allocated) {
-                               fprintf(stderr, "Sandbox maximum allocation 
size reached, %ld requested in sandbox_realloc\n",
-                                       (long) size);
-                               fflush(stderr);
-                               return NULL;
-                       }
-
-                       hdr = (alloc_hdr *) malloc(size + sizeof(alloc_hdr));
-                       if (!hdr) {
-                               return NULL;
-                       }
-                       hdr->u.sz = size;
-                       total_allocated += size;
-                       sandbox_dump_memstate();
-                       return (void *) (hdr + 1);
-               }
-       }
-}
-
-static void sandbox_free(void *udata, void *ptr) {
-       alloc_hdr *hdr;
-
-       (void) udata;  /* Suppress warning. */
-
-       if (!ptr) {
-               return;
-       }
-       hdr = (alloc_hdr *) (((char *) ptr) - sizeof(alloc_hdr));
-       total_allocated -= hdr->u.sz;
-       free((void *) hdr);
-       sandbox_dump_memstate();
-}
-
-/*
- *  Sandbox setup and test
- */
-
-static duk_ret_t do_sandbox_test(duk_context *ctx) {
-       FILE *f;
-       char buf[4096];
-       size_t ret;
-       const char *globobj;
-
-       /*
-        *  Setup sandbox
-        */
-
-       globobj =
-               "({\n"
-               "    print: print,\n"
-               "    Math: {\n"
-               "        max: Math.max\n"
-               "    }\n"
-               "})\n";
-#if 1
-       fprintf(stderr, "Sandbox global 
object:\n----------------\n%s----------------\n", globobj);
-       fflush(stderr);
-#endif
-       duk_eval_string(ctx, globobj);
-       duk_set_global_object(ctx);
-
-       /*
-        *  Execute code from specified file
-        */
-
-       f = fopen(duk_require_string(ctx, -1), "rb");
-       if (!f) {
-               duk_error(ctx, DUK_ERR_ERROR, "failed to open file");
-       }
-
-       for (;;) {
-               if (ferror(f)) {
-                       fclose(f);
-                       duk_error(ctx, DUK_ERR_ERROR, "ferror when reading 
file");
-               }
-               if (feof(f)) {
-                       break;
-               }
-
-               ret = fread(buf, 1, sizeof(buf), f);
-               if (ret == 0) {
-                       break;
-               }
-
-               duk_push_lstring(ctx, (const char *) buf, ret);
-       }
-
-       duk_concat(ctx, duk_get_top(ctx) - 1);  /* -1 for filename */
-
-       /* -> [ ... filename source ] */
-
-       duk_insert(ctx, -2);
-
-       /* -> [ ... source filename ] */
-
-       duk_compile(ctx, 0 /*flags*/);  /* Compile as program */
-       duk_call(ctx, 0 /*nargs*/);
-
-       return 0;
-}
-
-/*
- *  Main
- */
-
-static void sandbox_fatal(duk_context *ctx, duk_errcode_t code, const char 
*msg) {
-       (void) ctx;  /* Suppress warning. */
-       fprintf(stderr, "FATAL %ld: %s\n", (long) code, (msg ? msg : "no 
message"));
-       fflush(stderr);
-       exit(1);  /* must not return */
-}
-
-int main(int argc, char *argv[]) {
-       duk_context *ctx;
-       duk_int_t rc;
-
-       if (argc < 2) {
-               fprintf(stderr, "Usage: sandbox <test.js>\n");
-               fflush(stderr);
-               exit(1);
-       }
-
-       ctx = duk_create_heap(sandbox_alloc,
-                             sandbox_realloc,
-                             sandbox_free,
-                             NULL,
-                             sandbox_fatal);
-
-       duk_push_string(ctx, argv[1]);
-       rc = duk_safe_call(ctx, do_sandbox_test, 1 /*nargs*/, 1 /*nrets*/);
-       if (rc) {
-               fprintf(stderr, "ERROR: %s\n", duk_safe_to_string(ctx, -1));
-               fflush(stderr);
-       }
-
-       duk_destroy_heap(ctx);
-
-       /* Should be zero. */
-       fprintf(stderr, "Final allocation: %ld\n", (long) total_allocated);
-       fflush(stderr);
-
-       return 1;
-}

Reply via email to