You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by al...@apache.org on 2017/05/04 19:10:51 UTC
[43/51] [abbrv] [partial] nifi-minifi-cpp git commit: MINIFI-293
Remove thirdparty dependencies no longer utilized inclusive of libxml2 and
all of civetweb thirdparty
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b8103f03/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-logging/log2gnuplot.py
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-logging/log2gnuplot.py b/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-logging/log2gnuplot.py
deleted file mode 100644
index 0528259..0000000
--- a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-logging/log2gnuplot.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env python2
-#
-# Analyze allocator logs and write total-bytes-in-use after every
-# operation to stdout. The output can be gnuplotted as:
-#
-# $ python log2gnuplot.py </tmp/duk-alloc-log.txt >/tmp/output.txt
-# $ gnuplot
-# > plot "output.txt" with lines
-#
-
-import os
-import sys
-
-def main():
- allocated = 0
-
- for line in sys.stdin:
- line = line.strip()
- parts = line.split(' ')
-
- # A ptr/NULL/FAIL size
- # F ptr/NULL size
- # R ptr/NULL oldsize ptr/NULL/FAIL newsize
-
- # Note: ajduk doesn't log oldsize (uses -1 instead)
-
- if parts[0] == 'A':
- if parts[1] != 'NULL' and parts[1] != 'FAIL':
- allocated += long(parts[2])
- elif parts[0] == 'F':
- allocated -= long(parts[2])
- elif parts[0] == 'R':
- allocated -= long(parts[2])
- if parts[3] != 'NULL' and parts[3] != 'FAIL':
- allocated += long(parts[4])
- print(allocated)
-
- print(allocated)
-
-if __name__ == '__main__':
- main()
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b8103f03/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-torture/README.rst
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-torture/README.rst b/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-torture/README.rst
deleted file mode 100644
index f3278bb..0000000
--- a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-torture/README.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-==========================================
-Allocator with memory wiping and red zones
-==========================================
-
-Example allocator that wipes memory on free and checks that no out-of-bounds
-writes have been made to bytes just before and after the allocated area.
-
-Valgrind is a better tool for detecting these memory issues, but it's not
-available for all targets so you can use something like this to detect
-memory lifecycle or out-of-bounds issues.
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b8103f03/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-torture/duk_alloc_torture.c
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-torture/duk_alloc_torture.c b/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-torture/duk_alloc_torture.c
deleted file mode 100644
index abca2f7..0000000
--- a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-torture/duk_alloc_torture.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Example torture memory allocator with memory wiping and check for
- * out-of-bounds writes.
- *
- * Allocation structure:
- *
- * [ alloc_hdr | red zone before | user area | red zone after ]
- *
- * ^ ^
- * | `--- pointer returned to Duktape
- * `--- underlying malloc ptr
- */
-
-#include "duktape.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdint.h>
-
-#define RED_ZONE_SIZE 16
-#define RED_ZONE_BYTE 0x5a
-#define INIT_BYTE 0xa5
-#define WIPE_BYTE 0x27
-
-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 void check_red_zone(alloc_hdr *hdr) {
- size_t size;
- int i;
- int err;
- unsigned char *p;
- unsigned char *userptr;
-
- size = hdr->u.sz;
- userptr = (unsigned char *) hdr + sizeof(alloc_hdr) + RED_ZONE_SIZE;
-
- err = 0;
- p = (unsigned char *) hdr + sizeof(alloc_hdr);
- for (i = 0; i < RED_ZONE_SIZE; i++) {
- if (p[i] != RED_ZONE_BYTE) {
- err = 1;
- }
- }
- if (err) {
- fprintf(stderr, "RED ZONE CORRUPTED BEFORE ALLOC: hdr=%p ptr=%p size=%ld\n",
- (void *) hdr, (void *) userptr, (long) size);
- fflush(stderr);
- }
-
- err = 0;
- p = (unsigned char *) hdr + sizeof(alloc_hdr) + RED_ZONE_SIZE + size;
- for (i = 0; i < RED_ZONE_SIZE; i++) {
- if (p[i] != RED_ZONE_BYTE) {
- err = 1;
- }
- }
- if (err) {
- fprintf(stderr, "RED ZONE CORRUPTED AFTER ALLOC: hdr=%p ptr=%p size=%ld\n",
- (void *) hdr, (void *) userptr, (long) size);
- fflush(stderr);
- }
-}
-
-void *duk_alloc_torture(void *udata, duk_size_t size) {
- unsigned char *p;
-
- (void) udata; /* Suppress warning. */
-
- if (size == 0) {
- return NULL;
- }
-
- p = (unsigned char *) malloc(size + sizeof(alloc_hdr) + 2 * RED_ZONE_SIZE);
- if (!p) {
- return NULL;
- }
-
- ((alloc_hdr *) (void *) p)->u.sz = size;
- p += sizeof(alloc_hdr);
- memset((void *) p, RED_ZONE_BYTE, RED_ZONE_SIZE);
- p += RED_ZONE_SIZE;
- memset((void *) p, INIT_BYTE, size);
- p += size;
- memset((void *) p, RED_ZONE_BYTE, RED_ZONE_SIZE);
- p -= size;
- return (void *) p;
-}
-
-void *duk_realloc_torture(void *udata, void *ptr, duk_size_t size) {
- unsigned char *p, *old_p;
- size_t old_size;
-
- (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) {
- old_p = (unsigned char *) ptr - sizeof(alloc_hdr) - RED_ZONE_SIZE;
- old_size = ((alloc_hdr *) (void *) old_p)->u.sz;
- check_red_zone((alloc_hdr *) (void *) old_p);
-
- if (size == 0) {
- memset((void *) old_p, WIPE_BYTE, old_size + sizeof(alloc_hdr) + 2 * RED_ZONE_SIZE);
- free((void *) old_p);
- return NULL;
- } else {
- /* Force address change on every realloc. */
- p = (unsigned char *) malloc(size + sizeof(alloc_hdr) + 2 * RED_ZONE_SIZE);
- if (!p) {
- return NULL;
- }
-
- ((alloc_hdr *) (void *) p)->u.sz = size;
- p += sizeof(alloc_hdr);
- memset((void *) p, RED_ZONE_BYTE, RED_ZONE_SIZE);
- p += RED_ZONE_SIZE;
- if (size > old_size) {
- memcpy((void *) p, (void *) (old_p + sizeof(alloc_hdr) + RED_ZONE_SIZE), old_size);
- memset((void *) (p + old_size), INIT_BYTE, size - old_size);
- } else {
- memcpy((void *) p, (void *) (old_p + sizeof(alloc_hdr) + RED_ZONE_SIZE), size);
- }
- p += size;
- memset((void *) p, RED_ZONE_BYTE, RED_ZONE_SIZE);
- p -= size;
-
- memset((void *) old_p, WIPE_BYTE, old_size + sizeof(alloc_hdr) + 2 * RED_ZONE_SIZE);
- free((void *) old_p);
-
- return (void *) p;
- }
- } else {
- if (size == 0) {
- return NULL;
- } else {
- p = (unsigned char *) malloc(size + sizeof(alloc_hdr) + 2 * RED_ZONE_SIZE);
- if (!p) {
- return NULL;
- }
-
- ((alloc_hdr *) (void *) p)->u.sz = size;
- p += sizeof(alloc_hdr);
- memset((void *) p, RED_ZONE_BYTE, RED_ZONE_SIZE);
- p += RED_ZONE_SIZE;
- memset((void *) p, INIT_BYTE, size);
- p += size;
- memset((void *) p, RED_ZONE_BYTE, RED_ZONE_SIZE);
- p -= size;
- return (void *) p;
- }
- }
-}
-
-void duk_free_torture(void *udata, void *ptr) {
- unsigned char *p;
- size_t old_size;
-
- (void) udata; /* Suppress warning. */
-
- if (!ptr) {
- return;
- }
-
- p = (unsigned char *) ptr - sizeof(alloc_hdr) - RED_ZONE_SIZE;
- old_size = ((alloc_hdr *) (void *) p)->u.sz;
-
- check_red_zone((alloc_hdr *) (void *) p);
- memset((void *) p, WIPE_BYTE, old_size + sizeof(alloc_hdr) + 2 * RED_ZONE_SIZE);
- free((void *) p);
-}
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b8103f03/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-torture/duk_alloc_torture.h
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-torture/duk_alloc_torture.h b/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-torture/duk_alloc_torture.h
deleted file mode 100644
index a12153a..0000000
--- a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/alloc-torture/duk_alloc_torture.h
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef DUK_ALLOC_TORTURE_H_INCLUDED
-#define DUK_ALLOC_TORTURE_H_INCLUDED
-
-#include "duktape.h"
-
-void *duk_alloc_torture(void *udata, duk_size_t size);
-void *duk_realloc_torture(void *udata, void *ptr, duk_size_t size);
-void duk_free_torture(void *udata, void *ptr);
-
-#endif /* DUK_ALLOC_TORTURE_H_INCLUDED */
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b8103f03/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/cmdline/README.rst
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/cmdline/README.rst b/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/cmdline/README.rst
deleted file mode 100644
index e0c6bce..0000000
--- a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/cmdline/README.rst
+++ /dev/null
@@ -1,6 +0,0 @@
-====================
-Duktape command line
-====================
-
-Ecmascript command line execution tool, useful for running Ecmascript code
-from a file, stdin, or interactively. Also used by automatic testing.
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b8103f03/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/cmdline/duk_cmdline.c
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/cmdline/duk_cmdline.c b/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/cmdline/duk_cmdline.c
deleted file mode 100644
index ea5af55..0000000
--- a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/cmdline/duk_cmdline.c
+++ /dev/null
@@ -1,1463 +0,0 @@
-/*
- * Command line execution tool. Useful for test cases and manual testing.
- *
- * To enable linenoise and other fancy stuff, compile with -DDUK_CMDLINE_FANCY.
- * It is not the default to maximize portability. You can also compile in
- * support for example allocators, grep for DUK_CMDLINE_*.
- */
-
-/* Helper define to enable a feature set; can also use separate defines. */
-#if defined(DUK_CMDLINE_FANCY)
-#define DUK_CMDLINE_LINENOISE
-#define DUK_CMDLINE_LINENOISE_COMPLETION
-#define DUK_CMDLINE_RLIMIT
-#define DUK_CMDLINE_SIGNAL
-#endif
-
-#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || \
- defined(WIN64) || defined(_WIN64) || defined(__WIN64__)
-/* Suppress warnings about plain fopen() etc. */
-#define _CRT_SECURE_NO_WARNINGS
-#if defined(_MSC_VER) && (_MSC_VER < 1900)
-/* Workaround for snprintf() missing in older MSVC versions.
- * Note that _snprintf() may not NUL terminate the string, but
- * this difference does not matter here as a NUL terminator is
- * always explicitly added.
- */
-#define snprintf _snprintf
-#endif
-#endif
-
-#define GREET_CODE(variant) \
- "print('((o) Duktape" variant " ' + " \
- "Math.floor(Duktape.version / 10000) + '.' + " \
- "Math.floor(Duktape.version / 100) % 100 + '.' + " \
- "Duktape.version % 100" \
- ", '(" DUK_GIT_DESCRIBE ")');"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#if defined(DUK_CMDLINE_SIGNAL)
-#include <signal.h>
-#endif
-#if defined(DUK_CMDLINE_RLIMIT)
-#include <sys/resource.h>
-#endif
-#if defined(DUK_CMDLINE_LINENOISE)
-#include "linenoise.h"
-#endif
-#if defined(DUK_CMDLINE_FILEIO)
-#include <errno.h>
-#endif
-#if defined(EMSCRIPTEN)
-#include <emscripten.h>
-#endif
-#if defined(DUK_CMDLINE_ALLOC_LOGGING)
-#include "duk_alloc_logging.h"
-#endif
-#if defined(DUK_CMDLINE_ALLOC_TORTURE)
-#include "duk_alloc_torture.h"
-#endif
-#if defined(DUK_CMDLINE_ALLOC_HYBRID)
-#include "duk_alloc_hybrid.h"
-#endif
-#include "duktape.h"
-
-#if defined(DUK_CMDLINE_AJSHEAP)
-/* Defined in duk_cmdline_ajduk.c or alljoyn.js headers. */
-void ajsheap_init(void);
-void ajsheap_free(void);
-void ajsheap_dump(void);
-void ajsheap_register(duk_context *ctx);
-void ajsheap_start_exec_timeout(void);
-void ajsheap_clear_exec_timeout(void);
-void *ajsheap_alloc_wrapped(void *udata, duk_size_t size);
-void *ajsheap_realloc_wrapped(void *udata, void *ptr, duk_size_t size);
-void ajsheap_free_wrapped(void *udata, void *ptr);
-void *AJS_Alloc(void *udata, duk_size_t size);
-void *AJS_Realloc(void *udata, void *ptr, duk_size_t size);
-void AJS_Free(void *udata, void *ptr);
-#endif
-
-#if defined(DUK_CMDLINE_DEBUGGER_SUPPORT)
-#include "duk_trans_socket.h"
-#endif
-
-#define MEM_LIMIT_NORMAL (128*1024*1024) /* 128 MB */
-#define MEM_LIMIT_HIGH (2047*1024*1024) /* ~2 GB */
-#define LINEBUF_SIZE 65536
-
-static int main_argc = 0;
-static char **main_argv = NULL;
-static int interactive_mode = 0;
-#if defined(DUK_CMDLINE_DEBUGGER_SUPPORT)
-static int debugger_reattach = 0;
-#endif
-
-/*
- * Misc helpers
- */
-
-#if defined(DUK_CMDLINE_RLIMIT)
-static void set_resource_limits(rlim_t mem_limit_value) {
- int rc;
- struct rlimit lim;
-
- rc = getrlimit(RLIMIT_AS, &lim);
- if (rc != 0) {
- fprintf(stderr, "Warning: cannot read RLIMIT_AS\n");
- return;
- }
-
- if (lim.rlim_max < mem_limit_value) {
- fprintf(stderr, "Warning: rlim_max < mem_limit_value (%d < %d)\n", (int) lim.rlim_max, (int) mem_limit_value);
- return;
- }
-
- lim.rlim_cur = mem_limit_value;
- lim.rlim_max = mem_limit_value;
-
- rc = setrlimit(RLIMIT_AS, &lim);
- if (rc != 0) {
- fprintf(stderr, "Warning: setrlimit failed\n");
- return;
- }
-
-#if 0
- fprintf(stderr, "Set RLIMIT_AS to %d\n", (int) mem_limit_value);
-#endif
-}
-#endif /* DUK_CMDLINE_RLIMIT */
-
-#if defined(DUK_CMDLINE_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);
- (void) signal(SIGPIPE, SIG_IGN); /* avoid SIGPIPE killing process */
-}
-#endif /* DUK_CMDLINE_SIGNAL */
-
-static int get_stack_raw(duk_context *ctx) {
- if (!duk_is_object(ctx, -1)) {
- return 1;
- }
- if (!duk_has_prop_string(ctx, -1, "stack")) {
- return 1;
- }
- if (!duk_is_error(ctx, -1)) {
- /* Not an Error instance, don't read "stack". */
- return 1;
- }
-
- duk_get_prop_string(ctx, -1, "stack"); /* caller coerces */
- duk_remove(ctx, -2);
- return 1;
-}
-
-/* Print error to stderr and pop error. */
-static void print_pop_error(duk_context *ctx, FILE *f) {
- /* Print error objects with a stack trace specially.
- * Note that getting the stack trace may throw an error
- * so this also needs to be safe call wrapped.
- */
- (void) duk_safe_call(ctx, get_stack_raw, 1 /*nargs*/, 1 /*nrets*/);
- fprintf(f, "%s\n", duk_safe_to_string(ctx, -1));
- fflush(f);
- duk_pop(ctx);
-}
-
-static int wrapped_compile_execute(duk_context *ctx) {
- const char *src_data;
- duk_size_t src_len;
- int comp_flags;
-
- /* XXX: Here it'd be nice to get some stats for the compilation result
- * when a suitable command line is given (e.g. code size, constant
- * count, function count. These are available internally but not through
- * the public API.
- */
-
- /* Use duk_compile_lstring_filename() variant which avoids interning
- * the source code. This only really matters for low memory environments.
- */
-
- /* [ ... bytecode_filename src_data src_len filename ] */
-
- src_data = (const char *) duk_require_pointer(ctx, -3);
- src_len = (duk_size_t) duk_require_uint(ctx, -2);
-
- if (src_data != NULL && src_len >= 2 && src_data[0] == (char) 0xff) {
- /* Bytecode. */
- duk_push_lstring(ctx, src_data, src_len);
- duk_to_buffer(ctx, -1, NULL);
- duk_load_function(ctx);
- } else {
- /* Source code. */
- comp_flags = 0;
- duk_compile_lstring_filename(ctx, comp_flags, src_data, src_len);
- }
-
- /* [ ... bytecode_filename src_data src_len function ] */
-
- /* Optional bytecode dump. */
- if (duk_is_string(ctx, -4)) {
- FILE *f;
- void *bc_ptr;
- duk_size_t bc_len;
- size_t wrote;
- char fnbuf[256];
- const char *filename;
-
- duk_dup_top(ctx);
- duk_dump_function(ctx);
- bc_ptr = duk_require_buffer(ctx, -1, &bc_len);
- filename = duk_require_string(ctx, -5);
-#if defined(EMSCRIPTEN)
- if (filename[0] == '/') {
- snprintf(fnbuf, sizeof(fnbuf), "%s", filename);
- } else {
- snprintf(fnbuf, sizeof(fnbuf), "/working/%s", filename);
- }
-#else
- snprintf(fnbuf, sizeof(fnbuf), "%s", filename);
-#endif
- fnbuf[sizeof(fnbuf) - 1] = (char) 0;
-
- f = fopen(fnbuf, "wb");
- if (!f) {
- duk_error(ctx, DUK_ERR_ERROR, "failed to open bytecode output file");
- }
- wrote = fwrite(bc_ptr, 1, (size_t) bc_len, f); /* XXX: handle partial writes */
- (void) fclose(f);
- if (wrote != bc_len) {
- duk_error(ctx, DUK_ERR_ERROR, "failed to write all bytecode");
- }
-
- return 0; /* duk_safe_call() cleans up */
- }
-
-#if 0
- /* Manual test for bytecode dump/load cycle: dump and load before
- * execution. Enable manually, then run "make qecmatest" for a
- * reasonably good coverage of different functions and programs.
- */
- duk_dump_function(ctx);
- duk_load_function(ctx);
-#endif
-
-#if defined(DUK_CMDLINE_AJSHEAP)
- ajsheap_start_exec_timeout();
-#endif
-
- duk_push_global_object(ctx); /* 'this' binding */
- duk_call_method(ctx, 0);
-
-#if defined(DUK_CMDLINE_AJSHEAP)
- ajsheap_clear_exec_timeout();
-#endif
-
- if (interactive_mode) {
- /*
- * In interactive mode, write to stdout so output won't
- * interleave as easily.
- *
- * NOTE: the ToString() coercion may fail in some cases;
- * for instance, if you evaluate:
- *
- * ( {valueOf: function() {return {}},
- * toString: function() {return {}}});
- *
- * The error is:
- *
- * TypeError: failed to coerce with [[DefaultValue]]
- * duk_api.c:1420
- *
- * These are handled now by the caller which also has stack
- * trace printing support. User code can print out errors
- * safely using duk_safe_to_string().
- */
-
- fprintf(stdout, "= %s\n", duk_to_string(ctx, -1));
- fflush(stdout);
- } else {
- /* In non-interactive mode, success results are not written at all.
- * It is important that the result value is not string coerced,
- * as the string coercion may cause an error in some cases.
- */
- }
-
- return 0; /* duk_safe_call() cleans up */
-}
-
-/*
- * Minimal Linenoise completion support
- */
-
-#if defined(DUK_CMDLINE_LINENOISE_COMPLETION)
-static duk_context *completion_ctx;
-
-static int completion_idpart(unsigned char c) {
- /* Very simplified "is identifier part" check. */
- if ((c >= (unsigned char) 'a' && c <= (unsigned char) 'z') ||
- (c >= (unsigned char) 'A' && c <= (unsigned char) 'Z') ||
- (c >= (unsigned char) '0' && c <= (unsigned char) '9') ||
- c == (unsigned char) '$' || c == (unsigned char) '_') {
- return 1;
- }
- return 0;
-}
-
-static int completion_digit(unsigned char c) {
- return (c >= (unsigned char) '0' && c <= (unsigned char) '9');
-}
-
-static duk_ret_t linenoise_completion_lookup(duk_context *ctx) {
- duk_size_t len;
- const char *orig;
- const unsigned char *p;
- const unsigned char *p_curr;
- const unsigned char *p_end;
- const char *key;
- const char *prefix;
- linenoiseCompletions *lc;
- duk_idx_t idx_obj;
-
- orig = duk_require_string(ctx, -3);
- p_curr = (const unsigned char *) duk_require_lstring(ctx, -2, &len);
- p_end = p_curr + len;
- lc = duk_require_pointer(ctx, -1);
-
- duk_push_global_object(ctx);
- idx_obj = duk_require_top_index(ctx);
-
- while (p_curr <= p_end) {
- /* p_curr == p_end allowed on purpose, to handle 'Math.' for example. */
- p = p_curr;
- while (p < p_end && p[0] != (unsigned char) '.') {
- p++;
- }
- /* 'p' points to a NUL (p == p_end) or a period. */
- prefix = duk_push_lstring(ctx, (const char *) p_curr, (duk_size_t) (p - p_curr));
-
-#if 0
- fprintf(stderr, "Completion check: '%s'\n", prefix);
- fflush(stderr);
-#endif
-
- if (p == p_end) {
- /* 'idx_obj' points to the object matching the last
- * full component, use [p_curr,p[ as a filter for
- * that object.
- */
-
- duk_enum(ctx, idx_obj, DUK_ENUM_INCLUDE_NONENUMERABLE);
- while (duk_next(ctx, -1, 0 /*get_value*/)) {
- key = duk_get_string(ctx, -1);
-#if 0
- fprintf(stderr, "Key: %s\n", key ? key : "");
- fflush(stderr);
-#endif
- if (!key) {
- /* Should never happen, just in case. */
- goto next;
- }
-
- /* Ignore array index keys: usually not desirable, and would
- * also require ['0'] quoting.
- */
- if (completion_digit(key[0])) {
- goto next;
- }
-
- /* XXX: There's no key quoting now, it would require replacing the
- * last component with a ['foo\nbar'] style lookup when appropriate.
- */
-
- if (strlen(prefix) == 0) {
- /* Partial ends in a period, e.g. 'Math.' -> complete all Math properties. */
- duk_push_string(ctx, orig); /* original, e.g. 'Math.' */
- duk_push_string(ctx, key);
- duk_concat(ctx, 2);
- linenoiseAddCompletion(lc, duk_require_string(ctx, -1));
- duk_pop(ctx);
- } else if (prefix && strcmp(key, prefix) == 0) {
- /* Full completion, add a period, e.g. input 'Math' -> 'Math.'. */
- duk_push_string(ctx, orig); /* original, including partial last component */
- duk_push_string(ctx, ".");
- duk_concat(ctx, 2);
- linenoiseAddCompletion(lc, duk_require_string(ctx, -1));
- duk_pop(ctx);
- } else if (prefix && strncmp(key, prefix, strlen(prefix)) == 0) {
- /* Last component is partial, complete. */
- duk_push_string(ctx, orig); /* original, including partial last component */
- duk_push_string(ctx, key + strlen(prefix)); /* completion to last component */
- duk_concat(ctx, 2);
- linenoiseAddCompletion(lc, duk_require_string(ctx, -1));
- duk_pop(ctx);
- }
-
- next:
- duk_pop(ctx);
- }
- return 0;
- } else {
- if (duk_get_prop(ctx, idx_obj)) {
- duk_to_object(ctx, -1); /* for properties of plain strings etc */
- duk_replace(ctx, idx_obj);
- p_curr = p + 1;
- } else {
- /* Not found. */
- return 0;
- }
- }
- }
-
- return 0;
-}
-
-static void linenoise_completion(const char *buf, linenoiseCompletions *lc) {
- duk_context *ctx;
- const unsigned char *p_start;
- const unsigned char *p_end;
- const unsigned char *p;
- duk_int_t rc;
-
- if (!buf) {
- return;
- }
- ctx = completion_ctx;
- if (!ctx) {
- return;
- }
-
- p_start = (const unsigned char *) buf;
- p_end = (const unsigned char *) (buf + strlen(buf));
- p = p_end;
-
- /* Scan backwards for a maximal string which looks like a property
- * chain (e.g. foo.bar.quux).
- */
-
- while (--p >= p_start) {
- if (p[0] == (unsigned char) '.') {
- if (p <= p_start) {
- break;
- }
- if (!completion_idpart(p[-1])) {
- /* Catches e.g. 'foo..bar' -> we want 'bar' only. */
- break;
- }
- } else if (!completion_idpart(p[0])) {
- break;
- }
- }
- /* 'p' will either be p_start - 1 (ran out of buffer) or point to
- * the first offending character.
- */
- p++;
- if (p < p_start || p >= p_end) {
- return; /* should never happen, but just in case */
- }
-
- /* 'p' now points to a string of the form 'foo.bar.quux'. Look up
- * all the components except the last; treat the last component as
- * a partial name which is used as a filter for the previous full
- * component. All lookups are from the global object now.
- */
-
-#if 0
- fprintf(stderr, "Completion starting point: '%s'\n", p);
- fflush(stderr);
-#endif
-
- duk_push_string(ctx, (const char *) buf);
- duk_push_lstring(ctx, (const char *) p, (duk_size_t) (p_end - p));
- duk_push_pointer(ctx, (void *) lc);
-
- rc = duk_safe_call(ctx, linenoise_completion_lookup, 3 /*nargs*/, 1 /*nrets*/);
- if (rc != DUK_EXEC_SUCCESS) {
- fprintf(stderr, "Completion handling failure: %s\n", duk_safe_to_string(ctx, -1));
- }
- duk_pop(ctx);
-}
-#endif /* DUK_CMDLINE_LINENOISE_COMPLETION */
-
-/*
- * Execute from file handle etc
- */
-
-static int handle_fh(duk_context *ctx, FILE *f, const char *filename, const char *bytecode_filename) {
- char *buf = NULL;
- size_t bufsz;
- size_t bufoff;
- size_t got;
- int rc;
- int retval = -1;
-
- buf = (char *) malloc(1024);
- if (!buf) {
- goto error;
- }
- bufsz = 1024;
- bufoff = 0;
-
- /* Read until EOF, avoid fseek/stat because it won't work with stdin. */
- for (;;) {
- size_t avail;
-
- avail = bufsz - bufoff;
- if (avail < 1024) {
- size_t newsz;
- char *buf_new;
-#if 0
- fprintf(stderr, "resizing read buffer: %ld -> %ld\n", (long) bufsz, (long) (bufsz * 2));
-#endif
- newsz = bufsz + (bufsz >> 2) + 1024; /* +25% and some extra */
- buf_new = (char *) realloc(buf, newsz);
- if (!buf_new) {
- goto error;
- }
- buf = buf_new;
- bufsz = newsz;
- }
-
- avail = bufsz - bufoff;
-#if 0
- fprintf(stderr, "reading input: buf=%p bufsz=%ld bufoff=%ld avail=%ld\n",
- (void *) buf, (long) bufsz, (long) bufoff, (long) avail);
-#endif
-
- got = fread((void *) (buf + bufoff), (size_t) 1, avail, f);
-#if 0
- fprintf(stderr, "got=%ld\n", (long) got);
-#endif
- if (got == 0) {
- break;
- }
- bufoff += got;
-
- /* Emscripten specific: stdin EOF doesn't work as expected.
- * Instead, when 'emduk' is executed using Node.js, a file
- * piped to stdin repeats (!). Detect that repeat and cut off
- * the stdin read. Ensure the loop repeats enough times to
- * avoid detecting spurious loops.
- *
- * This only seems to work for inputs up to 256 bytes long.
- */
-#if defined(EMSCRIPTEN)
- if (bufoff >= 16384) {
- size_t i, j, nloops;
- int looped = 0;
-
- for (i = 16; i < bufoff / 8; i++) {
- int ok;
-
- nloops = bufoff / i;
- ok = 1;
- for (j = 1; j < nloops; j++) {
- if (memcmp((void *) buf, (void *) (buf + i * j), i) != 0) {
- ok = 0;
- break;
- }
- }
- if (ok) {
- fprintf(stderr, "emscripten workaround: detect looping at index %ld, verified with %ld loops\n", (long) i, (long) (nloops - 1));
- bufoff = i;
- looped = 1;
- break;
- }
- }
-
- if (looped) {
- break;
- }
- }
-#endif
- }
-
- duk_push_string(ctx, bytecode_filename);
- duk_push_pointer(ctx, (void *) buf);
- duk_push_uint(ctx, (duk_uint_t) bufoff);
- duk_push_string(ctx, filename);
-
- interactive_mode = 0; /* global */
-
- rc = duk_safe_call(ctx, wrapped_compile_execute, 4 /*nargs*/, 1 /*nret*/);
-
-#if defined(DUK_CMDLINE_AJSHEAP)
- ajsheap_clear_exec_timeout();
-#endif
-
- free(buf);
- buf = NULL;
-
- if (rc != DUK_EXEC_SUCCESS) {
- print_pop_error(ctx, stderr);
- goto error;
- } else {
- duk_pop(ctx);
- retval = 0;
- }
- /* fall thru */
-
- cleanup:
- if (buf) {
- free(buf);
- buf = NULL;
- }
- return retval;
-
- error:
- fprintf(stderr, "error in executing file %s\n", filename);
- fflush(stderr);
- goto cleanup;
-}
-
-static int handle_file(duk_context *ctx, const char *filename, const char *bytecode_filename) {
- FILE *f = NULL;
- int retval;
- char fnbuf[256];
-
- /* Example of sending an application specific debugger notification. */
- duk_push_string(ctx, "DebuggerHandleFile");
- duk_push_string(ctx, filename);
- duk_debugger_notify(ctx, 2);
-
-#if defined(EMSCRIPTEN)
- if (filename[0] == '/') {
- snprintf(fnbuf, sizeof(fnbuf), "%s", filename);
- } else {
- snprintf(fnbuf, sizeof(fnbuf), "/working/%s", filename);
- }
-#else
- snprintf(fnbuf, sizeof(fnbuf), "%s", filename);
-#endif
- fnbuf[sizeof(fnbuf) - 1] = (char) 0;
-
- f = fopen(fnbuf, "rb");
- if (!f) {
- fprintf(stderr, "failed to open source file: %s\n", filename);
- fflush(stderr);
- goto error;
- }
-
- retval = handle_fh(ctx, f, filename, bytecode_filename);
-
- fclose(f);
- return retval;
-
- error:
- return -1;
-}
-
-static int handle_eval(duk_context *ctx, char *code) {
- int rc;
- int retval = -1;
-
- duk_push_pointer(ctx, (void *) code);
- duk_push_uint(ctx, (duk_uint_t) strlen(code));
- duk_push_string(ctx, "eval");
-
- interactive_mode = 0; /* global */
-
- rc = duk_safe_call(ctx, wrapped_compile_execute, 3 /*nargs*/, 1 /*nret*/);
-
-#if defined(DUK_CMDLINE_AJSHEAP)
- ajsheap_clear_exec_timeout();
-#endif
-
- if (rc != DUK_EXEC_SUCCESS) {
- print_pop_error(ctx, stderr);
- } else {
- duk_pop(ctx);
- retval = 0;
- }
-
- return retval;
-}
-
-#if defined(DUK_CMDLINE_LINENOISE)
-static int handle_interactive(duk_context *ctx) {
- const char *prompt = "duk> ";
- char *buffer = NULL;
- int retval = 0;
- int rc;
-
- duk_eval_string(ctx, GREET_CODE(" [linenoise]"));
- duk_pop(ctx);
-
- linenoiseSetMultiLine(1);
- linenoiseHistorySetMaxLen(64);
-#if defined(DUK_CMDLINE_LINENOISE_COMPLETION)
- linenoiseSetCompletionCallback(linenoise_completion);
-#endif
-
- for (;;) {
- if (buffer) {
- linenoiseFree(buffer);
- buffer = NULL;
- }
-
-#if defined(DUK_CMDLINE_LINENOISE_COMPLETION)
- completion_ctx = ctx;
-#endif
- buffer = linenoise(prompt);
-#if defined(DUK_CMDLINE_LINENOISE_COMPLETION)
- completion_ctx = NULL;
-#endif
-
- if (!buffer) {
- break;
- }
-
- if (buffer && buffer[0] != (char) 0) {
- linenoiseHistoryAdd(buffer);
- }
-
- duk_push_pointer(ctx, (void *) buffer);
- duk_push_uint(ctx, (duk_uint_t) strlen(buffer));
- duk_push_string(ctx, "input");
-
- interactive_mode = 1; /* global */
-
- rc = duk_safe_call(ctx, wrapped_compile_execute, 3 /*nargs*/, 1 /*nret*/);
-
-#if defined(DUK_CMDLINE_AJSHEAP)
- ajsheap_clear_exec_timeout();
-#endif
-
- if (buffer) {
- linenoiseFree(buffer);
- buffer = NULL;
- }
-
- if (rc != DUK_EXEC_SUCCESS) {
- /* in interactive mode, write to stdout */
- print_pop_error(ctx, stdout);
- retval = -1; /* an error 'taints' the execution */
- } else {
- duk_pop(ctx);
- }
- }
-
- if (buffer) {
- linenoiseFree(buffer);
- buffer = NULL;
- }
-
- return retval;
-}
-#else /* DUK_CMDLINE_LINENOISE */
-static int handle_interactive(duk_context *ctx) {
- const char *prompt = "duk> ";
- char *buffer = NULL;
- int retval = 0;
- int rc;
- int got_eof = 0;
-
- duk_eval_string(ctx, GREET_CODE(""));
- duk_pop(ctx);
-
- buffer = (char *) malloc(LINEBUF_SIZE);
- if (!buffer) {
- fprintf(stderr, "failed to allocated a line buffer\n");
- fflush(stderr);
- retval = -1;
- goto done;
- }
-
- while (!got_eof) {
- size_t idx = 0;
-
- fwrite(prompt, 1, strlen(prompt), stdout);
- fflush(stdout);
-
- for (;;) {
- int c = fgetc(stdin);
- if (c == EOF) {
- got_eof = 1;
- break;
- } else if (c == '\n') {
- break;
- } else if (idx >= LINEBUF_SIZE) {
- fprintf(stderr, "line too long\n");
- fflush(stderr);
- retval = -1;
- goto done;
- } else {
- buffer[idx++] = (char) c;
- }
- }
-
- duk_push_pointer(ctx, (void *) buffer);
- duk_push_uint(ctx, (duk_uint_t) idx);
- duk_push_string(ctx, "input");
-
- interactive_mode = 1; /* global */
-
- rc = duk_safe_call(ctx, wrapped_compile_execute, 3 /*nargs*/, 1 /*nret*/);
-
-#if defined(DUK_CMDLINE_AJSHEAP)
- ajsheap_clear_exec_timeout();
-#endif
-
- if (rc != DUK_EXEC_SUCCESS) {
- /* in interactive mode, write to stdout */
- print_pop_error(ctx, stdout);
- retval = -1; /* an error 'taints' the execution */
- } else {
- duk_pop(ctx);
- }
- }
-
- done:
- if (buffer) {
- free(buffer);
- buffer = NULL;
- }
-
- return retval;
-}
-#endif /* DUK_CMDLINE_LINENOISE */
-
-/*
- * Simple file read/write bindings
- */
-
-#if defined(DUK_CMDLINE_FILEIO)
-static duk_ret_t fileio_read_file(duk_context *ctx) {
- const char *fn;
- char *buf;
- size_t len;
- size_t off;
- int rc;
- FILE *f;
-
- fn = duk_require_string(ctx, 0);
- f = fopen(fn, "rb");
- if (!f) {
- duk_error(ctx, DUK_ERR_TYPE_ERROR, "cannot open file %s for reading, errno %ld: %s",
- fn, (long) errno, strerror(errno));
- }
-
- rc = fseek(f, 0, SEEK_END);
- if (rc < 0) {
- (void) fclose(f);
- duk_error(ctx, DUK_ERR_TYPE_ERROR, "fseek() failed for %s, errno %ld: %s",
- fn, (long) errno, strerror(errno));
- }
- len = (size_t) ftell(f);
- rc = fseek(f, 0, SEEK_SET);
- if (rc < 0) {
- (void) fclose(f);
- duk_error(ctx, DUK_ERR_TYPE_ERROR, "fseek() failed for %s, errno %ld: %s",
- fn, (long) errno, strerror(errno));
- }
-
- buf = (char *) duk_push_fixed_buffer(ctx, (duk_size_t) len);
- for (off = 0; off < len;) {
- size_t got;
- got = fread((void *) (buf + off), 1, len - off, f);
- if (ferror(f)) {
- (void) fclose(f);
- duk_error(ctx, DUK_ERR_TYPE_ERROR, "error while reading %s", fn);
- }
- if (got == 0) {
- if (feof(f)) {
- break;
- } else {
- (void) fclose(f);
- duk_error(ctx, DUK_ERR_TYPE_ERROR, "error while reading %s", fn);
- }
- }
- off += got;
- }
-
- if (f) {
- (void) fclose(f);
- }
-
- return 1;
-}
-
-static duk_ret_t fileio_write_file(duk_context *ctx) {
- const char *fn;
- const char *buf;
- size_t len;
- size_t off;
- FILE *f;
-
- fn = duk_require_string(ctx, 0);
- f = fopen(fn, "wb");
- if (!f) {
- duk_error(ctx, DUK_ERR_TYPE_ERROR, "cannot open file %s for writing, errno %ld: %s",
- fn, (long) errno, strerror(errno));
- }
-
- len = 0;
- buf = (char *) duk_to_buffer(ctx, 1, &len);
- for (off = 0; off < len;) {
- size_t got;
- got = fwrite((const void *) (buf + off), 1, len - off, f);
- if (ferror(f)) {
- (void) fclose(f);
- duk_error(ctx, DUK_ERR_TYPE_ERROR, "error while writing %s", fn);
- }
- if (got == 0) {
- (void) fclose(f);
- duk_error(ctx, DUK_ERR_TYPE_ERROR, "error while writing %s", fn);
- }
- off += got;
- }
-
- if (f) {
- (void) fclose(f);
- }
-
- return 0;
-}
-#endif /* DUK_CMDLINE_FILEIO */
-
-/*
- * Duktape heap lifecycle
- */
-
-#if defined(DUK_CMDLINE_DEBUGGER_SUPPORT)
-static duk_idx_t debugger_request(duk_context *ctx, void *udata, duk_idx_t nvalues) {
- const char *cmd;
- int i;
-
- (void) udata;
-
- if (nvalues < 1) {
- duk_push_string(ctx, "missing AppRequest argument(s)");
- return -1;
- }
-
- cmd = duk_get_string(ctx, -nvalues + 0);
-
- if (cmd && strcmp(cmd, "CommandLine") == 0) {
- if (!duk_check_stack(ctx, main_argc)) {
- /* Callback should avoid errors for now, so use
- * duk_check_stack() rather than duk_require_stack().
- */
- duk_push_string(ctx, "failed to extend stack");
- return -1;
- }
- for (i = 0; i < main_argc; i++) {
- duk_push_string(ctx, main_argv[i]);
- }
- return main_argc;
- }
- duk_push_sprintf(ctx, "command not supported");
- return -1;
-}
-
-static void debugger_detached(void *udata) {
- duk_context *ctx = (duk_context *) udata;
- (void) ctx;
- fprintf(stderr, "Debugger detached, udata: %p\n", (void *) udata);
- fflush(stderr);
-
- /* Ensure socket is closed even when detach is initiated by Duktape
- * rather than debug client.
- */
- duk_trans_socket_finish();
-
- if (debugger_reattach) {
- /* For automatic reattach testing. */
- duk_trans_socket_init();
- duk_trans_socket_waitconn();
- fprintf(stderr, "Debugger reconnected, call duk_debugger_attach()\n");
- fflush(stderr);
-#if 0
- /* This is not necessary but should be harmless. */
- duk_debugger_detach(ctx);
-#endif
- duk_debugger_attach_custom(ctx,
- duk_trans_socket_read_cb,
- duk_trans_socket_write_cb,
- duk_trans_socket_peek_cb,
- duk_trans_socket_read_flush_cb,
- duk_trans_socket_write_flush_cb,
- debugger_request,
- debugger_detached,
- (void *) ctx);
- }
-}
-#endif
-
-#define ALLOC_DEFAULT 0
-#define ALLOC_LOGGING 1
-#define ALLOC_TORTURE 2
-#define ALLOC_HYBRID 3
-#define ALLOC_AJSHEAP 4
-
-static duk_context *create_duktape_heap(int alloc_provider, int debugger, int ajsheap_log) {
- duk_context *ctx;
-
- (void) ajsheap_log; /* suppress warning */
-
- ctx = NULL;
- if (!ctx && alloc_provider == ALLOC_LOGGING) {
-#if defined(DUK_CMDLINE_ALLOC_LOGGING)
- ctx = duk_create_heap(duk_alloc_logging,
- duk_realloc_logging,
- duk_free_logging,
- (void *) 0xdeadbeef,
- NULL);
-#else
- fprintf(stderr, "Warning: option --alloc-logging ignored, no logging allocator support\n");
- fflush(stderr);
-#endif
- }
- if (!ctx && alloc_provider == ALLOC_TORTURE) {
-#if defined(DUK_CMDLINE_ALLOC_TORTURE)
- ctx = duk_create_heap(duk_alloc_torture,
- duk_realloc_torture,
- duk_free_torture,
- (void *) 0xdeadbeef,
- NULL);
-#else
- fprintf(stderr, "Warning: option --alloc-torture ignored, no torture allocator support\n");
- fflush(stderr);
-#endif
- }
- if (!ctx && alloc_provider == ALLOC_HYBRID) {
-#if defined(DUK_CMDLINE_ALLOC_HYBRID)
- void *udata = duk_alloc_hybrid_init();
- if (!udata) {
- fprintf(stderr, "Failed to init hybrid allocator\n");
- fflush(stderr);
- } else {
- ctx = duk_create_heap(duk_alloc_hybrid,
- duk_realloc_hybrid,
- duk_free_hybrid,
- udata,
- NULL);
- }
-#else
- fprintf(stderr, "Warning: option --alloc-hybrid ignored, no hybrid allocator support\n");
- fflush(stderr);
-#endif
- }
- if (!ctx && alloc_provider == ALLOC_AJSHEAP) {
-#if defined(DUK_CMDLINE_AJSHEAP)
- ajsheap_init();
-
- ctx = duk_create_heap(
- ajsheap_log ? ajsheap_alloc_wrapped : AJS_Alloc,
- ajsheap_log ? ajsheap_realloc_wrapped : AJS_Realloc,
- ajsheap_log ? ajsheap_free_wrapped : AJS_Free,
- (void *) 0xdeadbeef, /* heap_udata: ignored by AjsHeap, use as marker */
- NULL
- ); /* fatal_handler */
-#else
- fprintf(stderr, "Warning: option --alloc-ajsheap ignored, no ajsheap allocator support\n");
- fflush(stderr);
-#endif
- }
- if (!ctx && alloc_provider == ALLOC_DEFAULT) {
- ctx = duk_create_heap_default();
- }
-
- if (!ctx) {
- fprintf(stderr, "Failed to create Duktape heap\n");
- fflush(stderr);
- exit(-1);
- }
-
-#if defined(DUK_CMDLINE_AJSHEAP)
- if (alloc_provider == ALLOC_AJSHEAP) {
- fprintf(stdout, "Pool dump after heap creation\n");
- ajsheap_dump();
- }
-#endif
-
-#if defined(DUK_CMDLINE_AJSHEAP)
- if (alloc_provider == ALLOC_AJSHEAP) {
- ajsheap_register(ctx);
- }
-#endif
-
-#if defined(DUK_CMDLINE_FILEIO)
- duk_push_c_function(ctx, fileio_read_file, 1 /*nargs*/);
- duk_put_global_string(ctx, "readFile");
- duk_push_c_function(ctx, fileio_write_file, 2 /*nargs*/);
- duk_put_global_string(ctx, "writeFile");
-#endif
-
- if (debugger) {
-#if defined(DUK_CMDLINE_DEBUGGER_SUPPORT)
- fprintf(stderr, "Debugger enabled, create socket and wait for connection\n");
- fflush(stderr);
- duk_trans_socket_init();
- duk_trans_socket_waitconn();
- fprintf(stderr, "Debugger connected, call duk_debugger_attach() and then execute requested file(s)/eval\n");
- fflush(stderr);
- duk_debugger_attach_custom(ctx,
- duk_trans_socket_read_cb,
- duk_trans_socket_write_cb,
- duk_trans_socket_peek_cb,
- duk_trans_socket_read_flush_cb,
- duk_trans_socket_write_flush_cb,
- debugger_request,
- debugger_detached,
- (void *) ctx);
-#else
- fprintf(stderr, "Warning: option --debugger ignored, no debugger support\n");
- fflush(stderr);
-#endif
- }
-
-#if 0
- /* Manual test for duk_debugger_cooperate() */
- {
- for (i = 0; i < 60; i++) {
- printf("cooperate: %d\n", i);
- usleep(1000000);
- duk_debugger_cooperate(ctx);
- }
- }
-#endif
-
- return ctx;
-}
-
-static void destroy_duktape_heap(duk_context *ctx, int alloc_provider) {
- (void) alloc_provider;
-
-#if defined(DUK_CMDLINE_AJSHEAP)
- if (alloc_provider == ALLOC_AJSHEAP) {
- fprintf(stdout, "Pool dump before duk_destroy_heap(), before forced gc\n");
- ajsheap_dump();
-
- duk_gc(ctx, 0);
-
- fprintf(stdout, "Pool dump before duk_destroy_heap(), after forced gc\n");
- ajsheap_dump();
- }
-#endif
-
- if (ctx) {
- duk_destroy_heap(ctx);
- }
-
-#if defined(DUK_CMDLINE_AJSHEAP)
- if (alloc_provider == ALLOC_AJSHEAP) {
- fprintf(stdout, "Pool dump after duk_destroy_heap() (should have zero allocs)\n");
- ajsheap_dump();
- }
- ajsheap_free();
-#endif
-}
-
-/*
- * Main
- */
-
-int main(int argc, char *argv[]) {
- duk_context *ctx = NULL;
- int retval = 0;
- int have_files = 0;
- int have_eval = 0;
- int interactive = 0;
- int memlimit_high = 1;
- int alloc_provider = ALLOC_DEFAULT;
- int ajsheap_log = 0;
- int debugger = 0;
- int recreate_heap = 0;
- int no_heap_destroy = 0;
- int verbose = 0;
- int run_stdin = 0;
- const char *compile_filename = NULL;
- int i;
-
- main_argc = argc;
- main_argv = (char **) argv;
-
-#if defined(EMSCRIPTEN)
- /* Try to use NODEFS to provide access to local files. Mount the
- * CWD as /working, and then prepend "/working/" to relative native
- * paths in file calls to get something that works reasonably for
- * relative paths. Emscripten doesn't support replacing virtual
- * "/" with host "/" (the default MEMFS at "/" can't be unmounted)
- * but we can mount "/tmp" as host "/tmp" to allow testcase runs.
- *
- * https://kripken.github.io/emscripten-site/docs/api_reference/Filesystem-API.html#filesystem-api-nodefs
- * https://github.com/kripken/emscripten/blob/master/tests/fs/test_nodefs_rw.c
- */
- EM_ASM(
- /* At the moment it's not possible to replace the default MEMFS mounted at '/':
- * https://github.com/kripken/emscripten/issues/2040
- * https://github.com/kripken/emscripten/blob/incoming/src/library_fs.js#L1341-L1358
- */
- /*
- try {
- FS.unmount("/");
- } catch (e) {
- console.log("Failed to unmount default '/' MEMFS mount: " + e);
- }
- */
- try {
- FS.mkdir("/working");
- FS.mount(NODEFS, { root: "." }, "/working");
- } catch (e) {
- console.log("Failed to mount NODEFS /working: " + e);
- }
- /* A virtual '/tmp' exists by default:
- * https://gist.github.com/evanw/e6be28094f34451bd5bd#file-temp-js-L3806-L3809
- */
- /*
- try {
- FS.mkdir("/tmp");
- } catch (e) {
- console.log("Failed to create virtual /tmp: " + e);
- }
- */
- try {
- FS.mount(NODEFS, { root: "/tmp" }, "/tmp");
- } catch (e) {
- console.log("Failed to mount NODEFS /tmp: " + e);
- }
- );
-#endif /* EMSCRIPTEN */
-
-#if defined(DUK_CMDLINE_AJSHEAP)
- alloc_provider = ALLOC_AJSHEAP;
-#endif
- (void) ajsheap_log;
-
- /*
- * Signal handling setup
- */
-
-#if defined(DUK_CMDLINE_SIGNAL)
- set_sigint_handler();
-
- /* This is useful at the global level; libraries should avoid SIGPIPE though */
- /*signal(SIGPIPE, SIG_IGN);*/
-#endif
-
- /*
- * Parse options
- */
-
- for (i = 1; i < argc; i++) {
- char *arg = argv[i];
- if (!arg) {
- goto usage;
- }
- if (strcmp(arg, "--restrict-memory") == 0) {
- memlimit_high = 0;
- } else if (strcmp(arg, "-i") == 0) {
- interactive = 1;
- } else if (strcmp(arg, "-c") == 0) {
- if (i == argc - 1) {
- goto usage;
- }
- i++;
- compile_filename = argv[i];
- } else if (strcmp(arg, "-e") == 0) {
- have_eval = 1;
- if (i == argc - 1) {
- goto usage;
- }
- i++; /* skip code */
- } else if (strcmp(arg, "--alloc-default") == 0) {
- alloc_provider = ALLOC_DEFAULT;
- } else if (strcmp(arg, "--alloc-logging") == 0) {
- alloc_provider = ALLOC_LOGGING;
- } else if (strcmp(arg, "--alloc-torture") == 0) {
- alloc_provider = ALLOC_TORTURE;
- } else if (strcmp(arg, "--alloc-hybrid") == 0) {
- alloc_provider = ALLOC_HYBRID;
- } else if (strcmp(arg, "--alloc-ajsheap") == 0) {
- alloc_provider = ALLOC_AJSHEAP;
- } else if (strcmp(arg, "--ajsheap-log") == 0) {
- ajsheap_log = 1;
- } else if (strcmp(arg, "--debugger") == 0) {
- debugger = 1;
-#if defined(DUK_CMDLINE_DEBUGGER_SUPPORT)
- } else if (strcmp(arg, "--reattach") == 0) {
- debugger_reattach = 1;
-#endif
- } else if (strcmp(arg, "--recreate-heap") == 0) {
- recreate_heap = 1;
- } else if (strcmp(arg, "--no-heap-destroy") == 0) {
- no_heap_destroy = 1;
- } else if (strcmp(arg, "--verbose") == 0) {
- verbose = 1;
- } else if (strcmp(arg, "--run-stdin") == 0) {
- run_stdin = 1;
- } else if (strlen(arg) >= 1 && arg[0] == '-') {
- goto usage;
- } else {
- have_files = 1;
- }
- }
- if (!have_files && !have_eval && !run_stdin) {
- interactive = 1;
- }
-
- /*
- * Memory limit
- */
-
-#if defined(DUK_CMDLINE_RLIMIT)
- set_resource_limits(memlimit_high ? MEM_LIMIT_HIGH : MEM_LIMIT_NORMAL);
-#else
- if (memlimit_high == 0) {
- fprintf(stderr, "Warning: option --restrict-memory ignored, no rlimit support\n");
- fflush(stderr);
- }
-#endif
-
- /*
- * Create heap
- */
-
- ctx = create_duktape_heap(alloc_provider, debugger, ajsheap_log);
-
- /*
- * Execute any argument file(s)
- */
-
- for (i = 1; i < argc; i++) {
- char *arg = argv[i];
- if (!arg) {
- continue;
- } else if (strlen(arg) == 2 && strcmp(arg, "-e") == 0) {
- /* Here we know the eval arg exists but check anyway */
- if (i == argc - 1) {
- retval = 1;
- goto cleanup;
- }
- if (handle_eval(ctx, argv[i + 1]) != 0) {
- retval = 1;
- goto cleanup;
- }
- i++; /* skip code */
- continue;
- } else if (strlen(arg) == 2 && strcmp(arg, "-c") == 0) {
- i++; /* skip filename */
- continue;
- } else if (strlen(arg) >= 1 && arg[0] == '-') {
- continue;
- }
-
- if (verbose) {
- fprintf(stderr, "*** Executing file: %s\n", arg);
- fflush(stderr);
- }
-
- if (handle_file(ctx, arg, compile_filename) != 0) {
- retval = 1;
- goto cleanup;
- }
-
- if (recreate_heap) {
- if (verbose) {
- fprintf(stderr, "*** Recreating heap...\n");
- fflush(stderr);
- }
-
- destroy_duktape_heap(ctx, alloc_provider);
- ctx = create_duktape_heap(alloc_provider, debugger, ajsheap_log);
- }
- }
-
- if (run_stdin) {
- /* Running stdin like a full file (reading all lines before
- * compiling) is useful with emduk:
- * cat test.js | ./emduk --run-stdin
- */
- if (handle_fh(ctx, stdin, "stdin", compile_filename) != 0) {
- retval = 1;
- goto cleanup;
- }
-
- if (recreate_heap) {
- if (verbose) {
- fprintf(stderr, "*** Recreating heap...\n");
- fflush(stderr);
- }
-
- destroy_duktape_heap(ctx, alloc_provider);
- ctx = create_duktape_heap(alloc_provider, debugger, ajsheap_log);
- }
- }
-
- /*
- * Enter interactive mode if options indicate it
- */
-
- if (interactive) {
- if (handle_interactive(ctx) != 0) {
- retval = 1;
- goto cleanup;
- }
- }
-
- /*
- * Cleanup and exit
- */
-
- cleanup:
- if (interactive) {
- fprintf(stderr, "Cleaning up...\n");
- fflush(stderr);
- }
-
- if (ctx && no_heap_destroy) {
- duk_gc(ctx, 0);
- }
- if (ctx && !no_heap_destroy) {
- destroy_duktape_heap(ctx, alloc_provider);
- }
- ctx = NULL;
-
- return retval;
-
- /*
- * Usage
- */
-
- usage:
- fprintf(stderr, "Usage: duk [options] [<filenames>]\n"
- "\n"
- " -i enter interactive mode after executing argument file(s) / eval code\n"
- " -e CODE evaluate code\n"
- " -c FILE compile into bytecode (use with only one file argument)\n"
- " --run-stdin treat stdin like a file, i.e. compile full input (not line by line)\n"
- " --verbose verbose messages to stderr\n"
- " --restrict-memory use lower memory limit (used by test runner)\n"
- " --alloc-default use Duktape default allocator\n"
-#if defined(DUK_CMDLINE_ALLOC_LOGGING)
- " --alloc-logging use logging allocator (writes to /tmp)\n"
-#endif
-#if defined(DUK_CMDLINE_ALLOC_TORTURE)
- " --alloc-torture use torture allocator\n"
-#endif
-#if defined(DUK_CMDLINE_ALLOC_HYBRID)
- " --alloc-hybrid use hybrid allocator\n"
-#endif
-#if defined(DUK_CMDLINE_AJSHEAP)
- " --alloc-ajsheap use ajsheap allocator (enabled by default with 'ajduk')\n"
- " --ajsheap-log write alloc log to /tmp/ajduk-alloc-log.txt\n"
-#endif
-#if defined(DUK_CMDLINE_DEBUGGER_SUPPORT)
- " --debugger start example debugger\n"
- " --reattach automatically reattach debugger on detach\n"
-#endif
- " --recreate-heap recreate heap after every file\n"
- " --no-heap-destroy force GC, but don't destroy heap at end (leak testing)\n"
- "\n"
- "If <filename> is omitted, interactive mode is started automatically.\n");
- fflush(stderr);
- exit(1);
-}
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b8103f03/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/cmdline/duk_cmdline_ajduk.c
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/cmdline/duk_cmdline_ajduk.c b/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/cmdline/duk_cmdline_ajduk.c
deleted file mode 100644
index ae28ede..0000000
--- a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/cmdline/duk_cmdline_ajduk.c
+++ /dev/null
@@ -1,1008 +0,0 @@
-/*
- * 'ajduk' specific functionality, examples for low memory techniques
- */
-
-#ifdef DUK_CMDLINE_AJSHEAP
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include "ajs.h"
-#include "ajs_heap.h"
-#include "duktape.h"
-
-extern uint8_t dbgHEAPDUMP;
-
-#if defined(DUK_USE_ROM_OBJECTS) && defined(DUK_USE_HEAPPTR16)
-/* Pointer compression with ROM strings/objects:
- *
- * For now, use DUK_USE_ROM_OBJECTS to signal the need for compressed ROM
- * pointers. DUK_USE_ROM_PTRCOMP_FIRST is provided for the ROM pointer
- * compression range minimum to avoid duplication in user code.
- */
-#if 0 /* This extern declaration is provided by duktape.h, array provided by duktape.c. */
-extern const void * const duk_rom_compressed_pointers[];
-#endif
-static const void *duk__romptr_low = NULL;
-static const void *duk__romptr_high = NULL;
-#define DUK__ROMPTR_COMPRESSION
-#define DUK__ROMPTR_FIRST DUK_USE_ROM_PTRCOMP_FIRST
-#endif
-
-/*
- * Helpers
- */
-
-static void *ajduk__lose_const(const void *ptr) {
- /* Somewhat portable way of losing a const without warnings.
- * Another approach is to cast through intptr_t, but that
- * type is not always available.
- */
- union {
- const void *p;
- void *q;
- } u;
- u.p = ptr;
- return u.q;
-}
-
-static void safe_print_chars(const char *p, duk_size_t len, int until_nul) {
- duk_size_t i;
-
- printf("\"");
- for (i = 0; i < len; i++) {
- unsigned char x = (unsigned char) p[i];
- if (until_nul && x == 0U) {
- break;
- }
- if (x < 0x20 || x >= 0x7e || x == '"' || x == '\'' || x == '\\') {
- printf("\\x%02x", (int) x);
- } else {
- printf("%c", (char) x);
- }
- }
- printf("\"");
-}
-
-/*
- * Heap initialization when using AllJoyn.js pool allocator (without any
- * other AllJoyn.js integration). This serves as an example of how to
- * integrate Duktape with a pool allocator and is useful for low memory
- * testing.
- *
- * The pool sizes are not optimized here. The sizes are chosen so that
- * you can look at the high water mark (hwm) and use counts (use) and see
- * how much allocations are needed for each pool size. To optimize pool
- * sizes more accurately, you can use --alloc-logging and inspect the memory
- * allocation log which provides exact byte counts etc.
- *
- * https://git.allseenalliance.org/cgit/core/alljoyn-js.git
- * https://git.allseenalliance.org/cgit/core/alljoyn-js.git/tree/ajs.c
- */
-
-static const AJS_HeapConfig ajsheap_config[] = {
- { 8, 10, AJS_POOL_BORROW, 0 },
- { 12, 600, AJS_POOL_BORROW, 0 },
- { 16, 300, AJS_POOL_BORROW, 0 },
- { 20, 300, AJS_POOL_BORROW, 0 },
- { 24, 300, AJS_POOL_BORROW, 0 },
- { 28, 150, AJS_POOL_BORROW, 0 },
- { 32, 150, AJS_POOL_BORROW, 0 },
- { 40, 150, AJS_POOL_BORROW, 0 },
- { 48, 50, AJS_POOL_BORROW, 0 },
- { 52, 50, AJS_POOL_BORROW, 0 },
- { 56, 50, AJS_POOL_BORROW, 0 },
- { 60, 50, AJS_POOL_BORROW, 0 },
- { 64, 50, AJS_POOL_BORROW, 0 },
- { 128, 80, AJS_POOL_BORROW, 0 },
- { 256, 16, AJS_POOL_BORROW, 0 },
- { 320, 1, AJS_POOL_BORROW, 0 },
- { 392, 1, AJS_POOL_BORROW, 0 }, /* duk_hthread, with heap ptr compression, ROM strings+objects */
- { 512, 16, AJS_POOL_BORROW, 0 },
- { 964, 1, AJS_POOL_BORROW, 0 }, /* duk_heap, with heap ptr compression, ROM strings+objects */
- { 1024, 6, AJS_POOL_BORROW, 0 },
- { 1344, 1, AJS_POOL_BORROW, 0 }, /* duk_heap, with heap ptr compression, RAM strings+objects */
- { 2048, 5, AJS_POOL_BORROW, 0 },
- { 4096, 3, 0, 0 },
- { 8192, 3, 0, 0 },
- { 16384, 1, 0, 0 },
- { 32768, 1, 0, 0 }
-};
-
-uint8_t *ajsheap_ram = NULL;
-
-void ajsheap_init(void) {
- size_t heap_sz[1];
- uint8_t *heap_array[1];
- uint8_t num_pools, i;
- AJ_Status ret;
-
- num_pools = (uint8_t) (sizeof(ajsheap_config) / sizeof(AJS_HeapConfig));
- heap_sz[0] = AJS_HeapRequired(ajsheap_config, /* heapConfig */
- num_pools, /* numPools */
- 0); /* heapNum */
- ajsheap_ram = (uint8_t *) malloc(heap_sz[0]);
- if (ajsheap_ram == NULL) {
- fprintf(stderr, "Failed to allocate AJS heap\n");
- fflush(stderr);
- exit(1);
- }
- heap_array[0] = ajsheap_ram;
-
- fprintf(stderr, "Allocated AJS heap of %ld bytes, pools:", (long) heap_sz[0]);
- for (i = 0; i < num_pools; i++) {
- fprintf(stderr, " (sz:%ld,num:%ld,brw:%ld,idx:%ld)",
- (long) ajsheap_config[i].size, (long) ajsheap_config[i].entries,
- (long) ajsheap_config[i].borrow, (long) ajsheap_config[i].heapIndex);
- }
- fprintf(stderr, "\n");
- fflush(stderr);
-
- ret = AJS_HeapInit((void **) heap_array, /* heap */
- (size_t *) heap_sz, /* heapSz */
- ajsheap_config, /* heapConfig */
- num_pools, /* numPools */
- 1); /* numHeaps */
- fprintf(stderr, "AJS_HeapInit() -> %ld\n", (long) ret);
- fflush(stderr);
-
- /* Enable heap dumps */
- dbgHEAPDUMP = 1;
-
-#if defined(DUK__ROMPTR_COMPRESSION)
- /* Scan ROM pointer range for faster detection of "is 'p' a ROM pointer"
- * later on.
- */
- if (1) {
- const void * const * ptrs = (const void * const *) duk_rom_compressed_pointers;
- duk__romptr_low = duk__romptr_high = (const void *) *ptrs;
- while (*ptrs) {
- if (*ptrs > duk__romptr_high) {
- duk__romptr_high = (const void *) *ptrs;
- }
- if (*ptrs < duk__romptr_low) {
- duk__romptr_low = (const void *) *ptrs;
- }
- ptrs++;
- }
- fprintf(stderr, "romptrs: low=%p high=%p\n",
- (const void *) duk__romptr_low, (const void *) duk__romptr_high);
- fflush(stderr);
- }
-#endif
-}
-
-void ajsheap_free(void) {
- if (ajsheap_ram != NULL) {
- free(ajsheap_ram);
- ajsheap_ram = NULL;
- }
-}
-
-/* AjsHeap.dump(), allows Ecmascript code to dump heap status at suitable
- * points.
- */
-duk_ret_t ajsheap_dump_binding(duk_context *ctx) {
- AJS_HeapDump();
- fflush(stdout);
- return 0;
-}
-
-void ajsheap_dump(void) {
- AJS_HeapDump();
- fflush(stdout);
-}
-
-void ajsheap_register(duk_context *ctx) {
- duk_push_object(ctx);
- duk_push_c_function(ctx, ajsheap_dump_binding, 0);
- duk_put_prop_string(ctx, -2, "dump");
- duk_put_global_string(ctx, "AjsHeap");
-}
-
-/*
- * Wrapped ajs_heap.c alloc functions
- *
- * Used to write an alloc log.
- */
-
-static FILE *ajsheap_alloc_log = NULL;
-
-static void ajsheap_write_alloc_log(const char *fmt, ...) {
- va_list ap;
- char buf[256];
-
- va_start(ap, fmt);
- vsnprintf(buf, sizeof(buf), fmt, ap);
- buf[sizeof(buf) - 1] = (char) 0;
- va_end(ap);
-
- if (ajsheap_alloc_log == NULL) {
- ajsheap_alloc_log = fopen("/tmp/ajduk-alloc-log.txt", "wb");
- if (ajsheap_alloc_log == NULL) {
- fprintf(stderr, "WARNING: failed to write alloc log, ignoring\n");
- fflush(stderr);
- return;
- }
- }
-
- (void) fwrite((const void *) buf, 1, strlen(buf), ajsheap_alloc_log);
- (void) fflush(ajsheap_alloc_log);
-}
-
-void *ajsheap_alloc_wrapped(void *udata, duk_size_t size) {
- void *ret = AJS_Alloc(udata, size);
- if (size > 0 && ret == NULL) {
- ajsheap_write_alloc_log("A FAIL %ld\n", (long) size);
- } else if (ret == NULL) {
- ajsheap_write_alloc_log("A NULL %ld\n", (long) size);
- } else {
- ajsheap_write_alloc_log("A %p %ld\n", ret, (long) size);
- }
- return ret;
-}
-
-void *ajsheap_realloc_wrapped(void *udata, void *ptr, duk_size_t size) {
- void *ret = AJS_Realloc(udata, ptr, size);
- if (size > 0 && ret == NULL) {
- if (ptr == NULL) {
- ajsheap_write_alloc_log("R NULL -1 FAIL %ld\n", (long) size);
- } else {
- ajsheap_write_alloc_log("R %p -1 FAIL %ld\n", ptr, (long) size);
- }
- } else if (ret == NULL) {
- if (ptr == NULL) {
- ajsheap_write_alloc_log("R NULL -1 NULL %ld\n", (long) size);
- } else {
- ajsheap_write_alloc_log("R %p -1 NULL %ld\n", ptr, (long) size);
- }
- } else {
- if (ptr == NULL) {
- ajsheap_write_alloc_log("R NULL -1 %p %ld\n", ret, (long) size);
- } else {
- ajsheap_write_alloc_log("R %p -1 %p %ld\n", ptr, ret, (long) size);
- }
- }
- return ret;
-}
-
-void ajsheap_free_wrapped(void *udata, void *ptr) {
- AJS_Free(udata, ptr);
- if (ptr == NULL) {
- } else {
- ajsheap_write_alloc_log("F %p -1\n", ptr);
- }
-}
-
-/*
- * Example pointer compression functions.
- *
- * 'base' is chosen so that no non-NULL pointer results in a zero result
- * which is reserved for NULL pointers.
- */
-
-duk_uint16_t ajsheap_enc16(void *ud, void *p) {
- duk_uint32_t ret;
- char *base = (char *) ajsheap_ram - 4;
-
-#if defined(DUK__ROMPTR_COMPRESSION)
- if (p >= duk__romptr_low && p <= duk__romptr_high) {
- /* The if-condition should be the fastest possible check
- * for "is 'p' in ROM?". If pointer is in ROM, we'd like
- * to compress it quickly. Here we just scan a ~1K array
- * which is very bad for performance and for illustration
- * only.
- */
- const void * const * ptrs = duk_rom_compressed_pointers;
- while (*ptrs) {
- if (*ptrs == p) {
- ret = DUK__ROMPTR_FIRST + (ptrs - duk_rom_compressed_pointers);
-#if 0
- fprintf(stderr, "ajsheap_enc16: rom pointer: %p -> 0x%04lx\n", (void *) p, (long) ret);
- fflush(stderr);
-#endif
- return (duk_uint16_t) ret;
- }
- ptrs++;
- }
-
- /* We should really never be here: Duktape should only be
- * compressing pointers which are in the ROM compressed
- * pointers list, which are known at 'make dist' time.
- * We go on, causing a pointer compression error.
- */
- fprintf(stderr, "ajsheap_enc16: rom pointer: %p could not be compressed, should never happen\n", (void *) p);
- fflush(stderr);
- }
-#endif
-
- /* Userdata is not needed in this case but would be useful if heap
- * pointer compression were used for multiple heaps. The userdata
- * allows the callback to distinguish between heaps and their base
- * pointers.
- *
- * If not needed, the userdata can be left out during compilation
- * by simply ignoring the userdata argument of the pointer encode
- * and decode macros. It is kept here so that any bugs in actually
- * providing the value inside Duktape are revealed during compilation.
- */
- (void) ud;
-#if 1
- /* Ensure that we always get the heap_udata given in heap creation.
- * (Useful for Duktape development, not needed for user programs.)
- */
- if (ud != (void *) 0xdeadbeef) {
- fprintf(stderr, "invalid udata for ajsheap_enc16: %p\n", ud);
- fflush(stderr);
- }
-#endif
-
- if (p == NULL) {
- ret = 0;
- } else {
- ret = (duk_uint32_t) (((char *) p - base) >> 2);
- }
-#if 0
- printf("ajsheap_enc16: %p -> %u\n", p, (unsigned int) ret);
-#endif
- if (ret > 0xffffUL) {
- fprintf(stderr, "Failed to compress pointer: %p (ret was %ld)\n", (void *) p, (long) ret);
- fflush(stderr);
- abort();
- }
-#if defined(DUK__ROMPTR_COMPRESSION)
- if (ret >= DUK__ROMPTR_FIRST) {
- fprintf(stderr, "Failed to compress pointer, in 16-bit range but matches romptr range: %p (ret was %ld)\n", (void *) p, (long) ret);
- fflush(stderr);
- abort();
- }
-#endif
- return (duk_uint16_t) ret;
-}
-
-void *ajsheap_dec16(void *ud, duk_uint16_t x) {
- void *ret;
- char *base = (char *) ajsheap_ram - 4;
-
-#if defined(DUK__ROMPTR_COMPRESSION)
- if (x >= DUK__ROMPTR_FIRST) {
- /* This is a blind lookup, could check index validity.
- * Duktape should never decompress a pointer which would
- * be out-of-bounds here.
- */
- ret = (void *) ajduk__lose_const(duk_rom_compressed_pointers[x - DUK__ROMPTR_FIRST]);
-#if 0
- fprintf(stderr, "ajsheap_dec16: rom pointer: 0x%04lx -> %p\n", (long) x, ret);
- fflush(stderr);
-#endif
- return ret;
- }
-#endif
-
- /* See userdata discussion in ajsheap_enc16(). */
- (void) ud;
-#if 1
- /* Ensure that we always get the heap_udata given in heap creation. */
- if (ud != (void *) 0xdeadbeef) {
- fprintf(stderr, "invalid udata for ajsheap_dec16: %p\n", ud);
- fflush(stderr);
- }
-#endif
-
- if (x == 0) {
- ret = NULL;
- } else {
- ret = (void *) (base + (((duk_uint32_t) x) << 2));
- }
-#if 0
- printf("ajsheap_dec16: %u -> %p\n", (unsigned int) x, ret);
-#endif
- return ret;
-}
-
-/*
- * Simplified example of an external strings strategy where incoming strings
- * are written sequentially into a fixed, memory mapped flash area.
- *
- * The example first scans if the string is already in the flash (which may
- * happen if the same string is interned multiple times), then adds it to
- * flash if there is space.
- *
- * This example is too slow to be used in a real world application: there
- * should be e.g. a hash table to quickly check for strings that are already
- * present in the string data (similarly to how string interning works in
- * Duktape itself).
- */
-
-static uint8_t ajsheap_strdata[65536];
-static size_t ajsheap_strdata_used = 0;
-
-const void *ajsheap_extstr_check_1(const void *ptr, duk_size_t len) {
- uint8_t *p, *p_end;
- uint8_t initial;
- uint8_t *ret;
- size_t left;
-
- (void) safe_print_chars; /* potentially unused */
-
- if (len <= 3) {
- /* It's not worth it to make very small strings external, as
- * they would take the same space anyway. Also avoids zero
- * length degenerate case.
- */
- return NULL;
- }
-
- /*
- * Check if we already have the string. Be careful to compare for
- * NUL terminator too, it is NOT present in 'ptr'. This algorithm
- * is too simplistic and way too slow for actual use.
- */
-
- initial = ((const uint8_t *) ptr)[0];
- for (p = ajsheap_strdata, p_end = p + ajsheap_strdata_used; p != p_end; p++) {
- if (*p != initial) {
- continue;
- }
- left = (size_t) (p_end - p);
- if (left >= len + 1 &&
- memcmp(p, ptr, len) == 0 &&
- p[len] == 0) {
- ret = p;
-#if 0
- printf("ajsheap_extstr_check_1: ptr=%p, len=%ld ",
- (void *) ptr, (long) len);
- safe_print_chars((const char *) ptr, len, 0 /*until_nul*/);
- printf(" -> existing %p (used=%ld)\n",
- (void *) ret, (long) ajsheap_strdata_used);
-#endif
- return ret;
- }
- }
-
- /*
- * Not present yet, check if we have space. Again, be careful to
- * ensure there is space for a NUL following the input data.
- */
-
- if (ajsheap_strdata_used + len + 1 > sizeof(ajsheap_strdata)) {
-#if 0
- printf("ajsheap_extstr_check_1: ptr=%p, len=%ld ", (void *) ptr, (long) len);
- safe_print_chars((const char *) ptr, len, 0 /*until_nul*/);
- printf(" -> no space (used=%ld)\n", (long) ajsheap_strdata_used);
-#endif
- return NULL;
- }
-
- /*
- * There is space, add the string to our collection, being careful
- * to append the NUL.
- */
-
- ret = ajsheap_strdata + ajsheap_strdata_used;
- memcpy(ret, ptr, len);
- ret[len] = (uint8_t) 0;
- ajsheap_strdata_used += len + 1;
-
-#if 0
- printf("ajsheap_extstr_check_1: ptr=%p, len=%ld -> ", (void *) ptr, (long) len);
- safe_print_chars((const char *) ptr, len, 0 /*until_nul*/);
- printf(" -> %p (used=%ld)\n", (void *) ret, (long) ajsheap_strdata_used);
-#endif
- return (const void *) ret;
-}
-
-void ajsheap_extstr_free_1(const void *ptr) {
- (void) ptr;
-#if 0
- printf("ajsheap_extstr_free_1: freeing extstr %p -> ", ptr);
- safe_print_chars((const char *) ptr, DUK_SIZE_MAX, 1 /*until_nul*/);
- printf("\n");
-#endif
-}
-
-/*
- * Simplified example of an external strings strategy where a set of strings
- * is gathered during application compile time and baked into the application
- * binary.
- *
- * Duktape built-in strings are available from duk_build_meta.json, see
- * util/duk_meta_to_strarray.py. There may also be a lot of application
- * specific strings, e.g. those used by application specific APIs. These
- * must be gathered through some other means, see e.g. util/scan_strings.py.
- */
-
-static const char *strdata_duk_builtin_strings[] = {
- /*
- * These strings are from util/duk_meta_to_strarray.py
- */
-
- "Logger",
- "Thread",
- "Pointer",
- "Buffer",
- "DecEnv",
- "ObjEnv",
- "",
- "global",
- "Arguments",
- "JSON",
- "Math",
- "Error",
- "RegExp",
- "Date",
- "Number",
- "Boolean",
- "String",
- "Array",
- "Function",
- "Object",
- "Null",
- "Undefined",
- "{_func:true}",
- "{\x22" "_func\x22" ":true}",
- "{\x22" "_ninf\x22" ":true}",
- "{\x22" "_inf\x22" ":true}",
- "{\x22" "_nan\x22" ":true}",
- "{\x22" "_undef\x22" ":true}",
- "toLogString",
- "clog",
- "l",
- "n",
- "fatal",
- "error",
- "warn",
- "debug",
- "trace",
- "raw",
- "fmt",
- "current",
- "resume",
- "compact",
- "jc",
- "jx",
- "base64",
- "hex",
- "dec",
- "enc",
- "fin",
- "gc",
- "act",
- "info",
- "version",
- "env",
- "modLoaded",
- "modSearch",
- "errThrow",
- "errCreate",
- "compile",
- "\xff" "Regbase",
- "\xff" "Thread",
- "\xff" "Handler",
- "\xff" "Finalizer",
- "\xff" "Callee",
- "\xff" "Map",
- "\xff" "Args",
- "\xff" "This",
- "\xff" "Pc2line",
- "\xff" "Source",
- "\xff" "Varenv",
- "\xff" "Lexenv",
- "\xff" "Varmap",
- "\xff" "Formals",
- "\xff" "Bytecode",
- "\xff" "Next",
- "\xff" "Target",
- "\xff" "Value",
- "pointer",
- "buffer",
- "\xff" "Tracedata",
- "lineNumber",
- "fileName",
- "pc",
- "stack",
- "ThrowTypeError",
- "Duktape",
- "id",
- "require",
- "__proto__",
- "setPrototypeOf",
- "ownKeys",
- "enumerate",
- "deleteProperty",
- "has",
- "Proxy",
- "callee",
- "Invalid Date",
- "[...]",
- "\x0a" "\x09",
- " ",
- ",",
- "-0",
- "+0",
- "0",
- "-Infinity",
- "+Infinity",
- "Infinity",
- "object",
- "string",
- "number",
- "boolean",
- "undefined",
- "stringify",
- "tan",
- "sqrt",
- "sin",
- "round",
- "random",
- "pow",
- "min",
- "max",
- "log",
- "floor",
- "exp",
- "cos",
- "ceil",
- "atan2",
- "atan",
- "asin",
- "acos",
- "abs",
- "SQRT2",
- "SQRT1_2",
- "PI",
- "LOG10E",
- "LOG2E",
- "LN2",
- "LN10",
- "E",
- "message",
- "name",
- "input",
- "index",
- "(?:)",
- "lastIndex",
- "multiline",
- "ignoreCase",
- "source",
- "test",
- "exec",
- "toGMTString",
- "setYear",
- "getYear",
- "toJSON",
- "toISOString",
- "toUTCString",
- "setUTCFullYear",
- "setFullYear",
- "setUTCMonth",
- "setMonth",
- "setUTCDate",
- "setDate",
- "setUTCHours",
- "setHours",
- "setUTCMinutes",
- "setMinutes",
- "setUTCSeconds",
- "setSeconds",
- "setUTCMilliseconds",
- "setMilliseconds",
- "setTime",
- "getTimezoneOffset",
- "getUTCMilliseconds",
- "getMilliseconds",
- "getUTCSeconds",
- "getSeconds",
- "getUTCMinutes",
- "getMinutes",
- "getUTCHours",
- "getHours",
- "getUTCDay",
- "getDay",
- "getUTCDate",
- "getDate",
- "getUTCMonth",
- "getMonth",
- "getUTCFullYear",
- "getFullYear",
- "getTime",
- "toLocaleTimeString",
- "toLocaleDateString",
- "toTimeString",
- "toDateString",
- "now",
- "UTC",
- "parse",
- "toPrecision",
- "toExponential",
- "toFixed",
- "POSITIVE_INFINITY",
- "NEGATIVE_INFINITY",
- "NaN",
- "MIN_VALUE",
- "MAX_VALUE",
- "substr",
- "trim",
- "toLocaleUpperCase",
- "toUpperCase",
- "toLocaleLowerCase",
- "toLowerCase",
- "substring",
- "split",
- "search",
- "replace",
- "match",
- "localeCompare",
- "charCodeAt",
- "charAt",
- "fromCharCode",
- "reduceRight",
- "reduce",
- "filter",
- "map",
- "forEach",
- "some",
- "every",
- "lastIndexOf",
- "indexOf",
- "unshift",
- "splice",
- "sort",
- "slice",
- "shift",
- "reverse",
- "push",
- "pop",
- "join",
- "concat",
- "isArray",
- "arguments",
- "caller",
- "bind",
- "call",
- "apply",
- "propertyIsEnumerable",
- "isPrototypeOf",
- "hasOwnProperty",
- "valueOf",
- "toLocaleString",
- "toString",
- "constructor",
- "set",
- "get",
- "enumerable",
- "configurable",
- "writable",
- "value",
- "keys",
- "isExtensible",
- "isFrozen",
- "isSealed",
- "preventExtensions",
- "freeze",
- "seal",
- "defineProperties",
- "defineProperty",
- "create",
- "getOwnPropertyNames",
- "getOwnPropertyDescriptor",
- "getPrototypeOf",
- "prototype",
- "length",
- "alert",
- "print",
- "unescape",
- "escape",
- "encodeURIComponent",
- "encodeURI",
- "decodeURIComponent",
- "decodeURI",
- "isFinite",
- "isNaN",
- "parseFloat",
- "parseInt",
- "eval",
- "URIError",
- "TypeError",
- "SyntaxError",
- "ReferenceError",
- "RangeError",
- "EvalError",
- "break",
- "case",
- "catch",
- "continue",
- "debugger",
- "default",
- "delete",
- "do",
- "else",
- "finally",
- "for",
- "function",
- "if",
- "in",
- "instanceof",
- "new",
- "return",
- "switch",
- "this",
- "throw",
- "try",
- "typeof",
- "var",
- "void",
- "while",
- "with",
- "class",
- "const",
- "enum",
- "export",
- "extends",
- "import",
- "super",
- "null",
- "true",
- "false",
- "implements",
- "interface",
- "let",
- "package",
- "private",
- "protected",
- "public",
- "static",
- "yield",
-
- /*
- * These strings are manually added, and would be gathered in some
- * application specific manner.
- */
-
- "foo",
- "bar",
- "quux",
- "enableFrob",
- "disableFrob"
- /* ... */
-};
-
-const void *ajsheap_extstr_check_2(const void *ptr, duk_size_t len) {
- int i, n;
-
- (void) safe_print_chars; /* potentially unused */
-
- /* Linear scan. An actual implementation would need some acceleration
- * structure, e.g. select a sublist based on first character.
- *
- * NOTE: input string (behind 'ptr' with 'len' bytes) DOES NOT have a
- * trailing NUL character. Any strings returned from this function
- * MUST have a trailing NUL character.
- */
-
- n = (int) (sizeof(strdata_duk_builtin_strings) / sizeof(const char *));
- for (i = 0; i < n; i++) {
- const char *str;
-
- str = strdata_duk_builtin_strings[i];
- if (strlen(str) == len && memcmp(ptr, (const void *) str, len) == 0) {
-#if 0
- printf("ajsheap_extstr_check_2: ptr=%p, len=%ld ",
- (void *) ptr, (long) len);
- safe_print_chars((const char *) ptr, len, 0 /*until_nul*/);
- printf(" -> constant string index %ld\n", (long) i);
-#endif
- return (void *) ajduk__lose_const(strdata_duk_builtin_strings[i]);
- }
- }
-
-#if 0
- printf("ajsheap_extstr_check_2: ptr=%p, len=%ld ",
- (void *) ptr, (long) len);
- safe_print_chars((const char *) ptr, len, 0 /*until_nul*/);
- printf(" -> not found\n");
-#endif
- return NULL;
-}
-
-void ajsheap_extstr_free_2(const void *ptr) {
- (void) ptr;
-#if 0
- printf("ajsheap_extstr_free_2: freeing extstr %p -> ", ptr);
- safe_print_chars((const char *) ptr, DUK_SIZE_MAX, 1 /*until_nul*/);
- printf("\n");
-#endif
-}
-
-/*
- * External strings strategy intended for valgrind testing: external strings
- * are allocated using malloc()/free() so that valgrind can be used to ensure
- * that strings are e.g. freed exactly once.
- */
-
-const void *ajsheap_extstr_check_3(const void *ptr, duk_size_t len) {
- duk_uint8_t *ret;
-
- (void) safe_print_chars; /* potentially unused */
-
- ret = malloc((size_t) len + 1);
- if (ret == NULL) {
-#if 0
- printf("ajsheap_extstr_check_3: ptr=%p, len=%ld ",
- (void *) ptr, (long) len);
- safe_print_chars((const char *) ptr, len, 0 /*until_nul*/);
- printf(" -> malloc failed, return NULL\n");
-#endif
- return (const void *) NULL;
- }
-
- if (len > 0) {
- memcpy((void *) ret, ptr, (size_t) len);
- }
- ret[len] = (duk_uint8_t) 0;
-
-#if 0
- printf("ajsheap_extstr_check_3: ptr=%p, len=%ld ",
- (void *) ptr, (long) len);
- safe_print_chars((const char *) ptr, len, 0 /*until_nul*/);
- printf(" -> %p\n", (void *) ret);
-#endif
- return (const void *) ret;
-}
-
-void ajsheap_extstr_free_3(const void *ptr) {
- (void) ptr;
-#if 0
- printf("ajsheap_extstr_free_3: freeing extstr %p -> ", ptr);
- safe_print_chars((const char *) ptr, DUK_SIZE_MAX, 1 /*until_nul*/);
- printf("\n");
-#endif
- free((void *) ajduk__lose_const(ptr));
-}
-
-/*
- * Execution timeout example
- */
-
-#define AJSHEAP_EXEC_TIMEOUT 5 /* seconds */
-
-static time_t curr_pcall_start = 0;
-static long exec_timeout_check_counter = 0;
-
-void ajsheap_start_exec_timeout(void) {
- curr_pcall_start = time(NULL);
-}
-
-void ajsheap_clear_exec_timeout(void) {
- curr_pcall_start = 0;
-}
-
-duk_bool_t ajsheap_exec_timeout_check(void *udata) {
- time_t now = time(NULL);
- time_t diff = now - curr_pcall_start;
-
- (void) udata; /* not needed */
-
- exec_timeout_check_counter++;
-#if 0
- printf("exec timeout check %ld: now=%ld, start=%ld, diff=%ld\n",
- (long) exec_timeout_check_counter, (long) now, (long) curr_pcall_start, (long) diff);
- fflush(stdout);
-#endif
-
- if (curr_pcall_start == 0) {
- /* protected call not yet running */
- return 0;
- }
- if (diff > AJSHEAP_EXEC_TIMEOUT) {
- return 1;
- }
- return 0;
-}
-
-#else /* DUK_CMDLINE_AJSHEAP */
-
-int ajs_dummy = 0; /* to avoid empty source file */
-
-#endif /* DUK_CMDLINE_AJSHEAP */
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b8103f03/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/README.rst
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/README.rst b/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/README.rst
deleted file mode 100644
index 98b53d2..0000000
--- a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/README.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-Codepage conversion example
-===========================
-
-Example of how to convert an 8-bit input string (e.g. ISO-8859-1 or Windows
-codepage 1252) into CESU-8 without using an external library like iconv.
-
-This is useful e.g. when compiling non-UTF-8 source code which cannot be
-converted to UTF-8 (CESU-8) at build time.
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b8103f03/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/duk_codepage_conv.c
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/duk_codepage_conv.c b/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/duk_codepage_conv.c
deleted file mode 100644
index 932e9a6..0000000
--- a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/duk_codepage_conv.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Convert an 8-bit input string (e.g. ISO-8859-1) into CESU-8.
- * Calling code supplies the "code page" as a 256-entry array of
- * codepoints for the conversion.
- *
- * This is useful when input data is in non-UTF-8 format and must
- * be converted at runtime, e.g. when compiling non-UTF-8 source
- * code. Another alternative is to use e.g. iconv.
- */
-
-#include "duktape.h"
-
-/* Decode an 8-bit string using 'codepage' into Unicode codepoints and
- * re-encode into CESU-8. Codepage argument must point to a 256-entry
- * table. Only supports BMP (codepoints U+0000 to U+FFFF).
- */
-void duk_decode_string_codepage(duk_context *ctx, const char *str, size_t len, unsigned int *codepage) {
- unsigned char *tmp;
- size_t tmplen, i;
- unsigned char *p;
- unsigned int cp;
-
- tmplen = 3 * len; /* max expansion is 1 input byte -> 3 output bytes */
- if (tmplen / 3 != len) {
- /* Temporary buffer length wraps. */
- duk_error(ctx, DUK_ERR_RANGE_ERROR, "input string too long");
- return;
- }
-
- tmp = (unsigned char *) duk_push_fixed_buffer(ctx, tmplen);
-
- for (i = 0, p = tmp; i < len; i++) {
- cp = codepage[((unsigned char *) str)[i]] & 0xffffUL;
- if (cp < 0x80UL) {
- *p++ = (unsigned char) cp;
- } else if (cp < 0x800UL) {
- *p++ = (unsigned char) (0xc0 + ((cp >> 6) & 0x1f));
- *p++ = (unsigned char) (0x80 + (cp & 0x3f));
- } else {
- /* In CESU-8 all codepoints in [0x0000,0xFFFF] are
- * allowed, including surrogates.
- */
- *p++ = (unsigned char) (0xe0 + ((cp >> 12) & 0x0f));
- *p++ = (unsigned char) (0x80 + ((cp >> 6) & 0x3f));
- *p++ = (unsigned char) (0x80 + (cp & 0x3f));
- }
- }
-
- duk_push_lstring(ctx, (const char *) tmp, (duk_size_t) (p - tmp));
-
- /* [ ... tmp res ] */
-
- duk_remove(ctx, -2);
-}
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b8103f03/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/duk_codepage_conv.h
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/duk_codepage_conv.h b/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/duk_codepage_conv.h
deleted file mode 100644
index d2705a0..0000000
--- a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/duk_codepage_conv.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef DUK_CODEPAGE_CONV_H_INCLUDED
-#define DUK_CODEPAGE_CONV_H_INCLUDED
-
-#include "duktape.h"
-
-void duk_decode_string_codepage(duk_context *ctx, const char *str, size_t len, unsigned int *codepage);
-
-#endif /* DUK_CODEPAGE_CONV_H_INCLUDED */
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b8103f03/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/test.c
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/test.c b/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/test.c
deleted file mode 100644
index c34299a..0000000
--- a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/codepage-conv/test.c
+++ /dev/null
@@ -1,286 +0,0 @@
-#include "duktape.h"
-#include "duk_codepage_conv.h"
-
-/* http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1252.TXT */
-unsigned int cp1252[256] = {
- (unsigned int) 0x0000,
- (unsigned int) 0x0001,
- (unsigned int) 0x0002,
- (unsigned int) 0x0003,
- (unsigned int) 0x0004,
- (unsigned int) 0x0005,
- (unsigned int) 0x0006,
- (unsigned int) 0x0007,
- (unsigned int) 0x0008,
- (unsigned int) 0x0009,
- (unsigned int) 0x000A,
- (unsigned int) 0x000B,
- (unsigned int) 0x000C,
- (unsigned int) 0x000D,
- (unsigned int) 0x000E,
- (unsigned int) 0x000F,
- (unsigned int) 0x0010,
- (unsigned int) 0x0011,
- (unsigned int) 0x0012,
- (unsigned int) 0x0013,
- (unsigned int) 0x0014,
- (unsigned int) 0x0015,
- (unsigned int) 0x0016,
- (unsigned int) 0x0017,
- (unsigned int) 0x0018,
- (unsigned int) 0x0019,
- (unsigned int) 0x001A,
- (unsigned int) 0x001B,
- (unsigned int) 0x001C,
- (unsigned int) 0x001D,
- (unsigned int) 0x001E,
- (unsigned int) 0x001F,
- (unsigned int) 0x0020,
- (unsigned int) 0x0021,
- (unsigned int) 0x0022,
- (unsigned int) 0x0023,
- (unsigned int) 0x0024,
- (unsigned int) 0x0025,
- (unsigned int) 0x0026,
- (unsigned int) 0x0027,
- (unsigned int) 0x0028,
- (unsigned int) 0x0029,
- (unsigned int) 0x002A,
- (unsigned int) 0x002B,
- (unsigned int) 0x002C,
- (unsigned int) 0x002D,
- (unsigned int) 0x002E,
- (unsigned int) 0x002F,
- (unsigned int) 0x0030,
- (unsigned int) 0x0031,
- (unsigned int) 0x0032,
- (unsigned int) 0x0033,
- (unsigned int) 0x0034,
- (unsigned int) 0x0035,
- (unsigned int) 0x0036,
- (unsigned int) 0x0037,
- (unsigned int) 0x0038,
- (unsigned int) 0x0039,
- (unsigned int) 0x003A,
- (unsigned int) 0x003B,
- (unsigned int) 0x003C,
- (unsigned int) 0x003D,
- (unsigned int) 0x003E,
- (unsigned int) 0x003F,
- (unsigned int) 0x0040,
- (unsigned int) 0x0041,
- (unsigned int) 0x0042,
- (unsigned int) 0x0043,
- (unsigned int) 0x0044,
- (unsigned int) 0x0045,
- (unsigned int) 0x0046,
- (unsigned int) 0x0047,
- (unsigned int) 0x0048,
- (unsigned int) 0x0049,
- (unsigned int) 0x004A,
- (unsigned int) 0x004B,
- (unsigned int) 0x004C,
- (unsigned int) 0x004D,
- (unsigned int) 0x004E,
- (unsigned int) 0x004F,
- (unsigned int) 0x0050,
- (unsigned int) 0x0051,
- (unsigned int) 0x0052,
- (unsigned int) 0x0053,
- (unsigned int) 0x0054,
- (unsigned int) 0x0055,
- (unsigned int) 0x0056,
- (unsigned int) 0x0057,
- (unsigned int) 0x0058,
- (unsigned int) 0x0059,
- (unsigned int) 0x005A,
- (unsigned int) 0x005B,
- (unsigned int) 0x005C,
- (unsigned int) 0x005D,
- (unsigned int) 0x005E,
- (unsigned int) 0x005F,
- (unsigned int) 0x0060,
- (unsigned int) 0x0061,
- (unsigned int) 0x0062,
- (unsigned int) 0x0063,
- (unsigned int) 0x0064,
- (unsigned int) 0x0065,
- (unsigned int) 0x0066,
- (unsigned int) 0x0067,
- (unsigned int) 0x0068,
- (unsigned int) 0x0069,
- (unsigned int) 0x006A,
- (unsigned int) 0x006B,
- (unsigned int) 0x006C,
- (unsigned int) 0x006D,
- (unsigned int) 0x006E,
- (unsigned int) 0x006F,
- (unsigned int) 0x0070,
- (unsigned int) 0x0071,
- (unsigned int) 0x0072,
- (unsigned int) 0x0073,
- (unsigned int) 0x0074,
- (unsigned int) 0x0075,
- (unsigned int) 0x0076,
- (unsigned int) 0x0077,
- (unsigned int) 0x0078,
- (unsigned int) 0x0079,
- (unsigned int) 0x007A,
- (unsigned int) 0x007B,
- (unsigned int) 0x007C,
- (unsigned int) 0x007D,
- (unsigned int) 0x007E,
- (unsigned int) 0x007F,
- (unsigned int) 0x20AC,
- (unsigned int) 0xFFFD, /* undefined */
- (unsigned int) 0x201A,
- (unsigned int) 0x0192,
- (unsigned int) 0x201E,
- (unsigned int) 0x2026,
- (unsigned int) 0x2020,
- (unsigned int) 0x2021,
- (unsigned int) 0x02C6,
- (unsigned int) 0x2030,
- (unsigned int) 0x0160,
- (unsigned int) 0x2039,
- (unsigned int) 0x0152,
- (unsigned int) 0xFFFD, /* undefined */
- (unsigned int) 0x017D,
- (unsigned int) 0xFFFD, /* undefined */
- (unsigned int) 0xFFFD, /* undefined */
- (unsigned int) 0x2018,
- (unsigned int) 0x2019,
- (unsigned int) 0x201C,
- (unsigned int) 0x201D,
- (unsigned int) 0x2022,
- (unsigned int) 0x2013,
- (unsigned int) 0x2014,
- (unsigned int) 0x02DC,
- (unsigned int) 0x2122,
- (unsigned int) 0x0161,
- (unsigned int) 0x203A,
- (unsigned int) 0x0153,
- (unsigned int) 0xFFFD, /* undefined */
- (unsigned int) 0x017E,
- (unsigned int) 0x0178,
- (unsigned int) 0x00A0,
- (unsigned int) 0x00A1,
- (unsigned int) 0x00A2,
- (unsigned int) 0x00A3,
- (unsigned int) 0x00A4,
- (unsigned int) 0x00A5,
- (unsigned int) 0x00A6,
- (unsigned int) 0x00A7,
- (unsigned int) 0x00A8,
- (unsigned int) 0x00A9,
- (unsigned int) 0x00AA,
- (unsigned int) 0x00AB,
- (unsigned int) 0x00AC,
- (unsigned int) 0x00AD,
- (unsigned int) 0x00AE,
- (unsigned int) 0x00AF,
- (unsigned int) 0x00B0,
- (unsigned int) 0x00B1,
- (unsigned int) 0x00B2,
- (unsigned int) 0x00B3,
- (unsigned int) 0x00B4,
- (unsigned int) 0x00B5,
- (unsigned int) 0x00B6,
- (unsigned int) 0x00B7,
- (unsigned int) 0x00B8,
- (unsigned int) 0x00B9,
- (unsigned int) 0x00BA,
- (unsigned int) 0x00BB,
- (unsigned int) 0x00BC,
- (unsigned int) 0x00BD,
- (unsigned int) 0x00BE,
- (unsigned int) 0x00BF,
- (unsigned int) 0x00C0,
- (unsigned int) 0x00C1,
- (unsigned int) 0x00C2,
- (unsigned int) 0x00C3,
- (unsigned int) 0x00C4,
- (unsigned int) 0x00C5,
- (unsigned int) 0x00C6,
- (unsigned int) 0x00C7,
- (unsigned int) 0x00C8,
- (unsigned int) 0x00C9,
- (unsigned int) 0x00CA,
- (unsigned int) 0x00CB,
- (unsigned int) 0x00CC,
- (unsigned int) 0x00CD,
- (unsigned int) 0x00CE,
- (unsigned int) 0x00CF,
- (unsigned int) 0x00D0,
- (unsigned int) 0x00D1,
- (unsigned int) 0x00D2,
- (unsigned int) 0x00D3,
- (unsigned int) 0x00D4,
- (unsigned int) 0x00D5,
- (unsigned int) 0x00D6,
- (unsigned int) 0x00D7,
- (unsigned int) 0x00D8,
- (unsigned int) 0x00D9,
- (unsigned int) 0x00DA,
- (unsigned int) 0x00DB,
- (unsigned int) 0x00DC,
- (unsigned int) 0x00DD,
- (unsigned int) 0x00DE,
- (unsigned int) 0x00DF,
- (unsigned int) 0x00E0,
- (unsigned int) 0x00E1,
- (unsigned int) 0x00E2,
- (unsigned int) 0x00E3,
- (unsigned int) 0x00E4,
- (unsigned int) 0x00E5,
- (unsigned int) 0x00E6,
- (unsigned int) 0x00E7,
- (unsigned int) 0x00E8,
- (unsigned int) 0x00E9,
- (unsigned int) 0x00EA,
- (unsigned int) 0x00EB,
- (unsigned int) 0x00EC,
- (unsigned int) 0x00ED,
- (unsigned int) 0x00EE,
- (unsigned int) 0x00EF,
- (unsigned int) 0x00F0,
- (unsigned int) 0x00F1,
- (unsigned int) 0x00F2,
- (unsigned int) 0x00F3,
- (unsigned int) 0x00F4,
- (unsigned int) 0x00F5,
- (unsigned int) 0x00F6,
- (unsigned int) 0x00F7,
- (unsigned int) 0x00F8,
- (unsigned int) 0x00F9,
- (unsigned int) 0x00FA,
- (unsigned int) 0x00FB,
- (unsigned int) 0x00FC,
- (unsigned int) 0x00FD,
- (unsigned int) 0x00FE,
- (unsigned int) 0x00FF
-};
-
-/* Exercise all 3 byte lengths: any ASCII character is 1 byte, 0xFC maps to
- * U+00FC which is 2 bytes, and 0x80 maps to U+20AC which is 3 bytes.
- */
-static const char *example_source = "print('Hello w\xfcrld - \x80');";
-
-/* Example: compile and run test source encoded in Windows codepage 1252. */
-int main(int argc, char *argv[]) {
- duk_context *ctx;
-
- (void) argc; (void) argv;
-
- ctx = duk_create_heap_default();
- if (!ctx) {
- printf("Failed to create Duktape heap.\n");
- return 1;
- }
-
- duk_decode_string_codepage(ctx, example_source, strlen(example_source), cp1252);
- duk_eval_noresult(ctx);
-
- duk_destroy_heap(ctx);
- return 0;
-}
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b8103f03/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/coffee/README.rst
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/coffee/README.rst b/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/coffee/README.rst
deleted file mode 100644
index f147522..0000000
--- a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/coffee/README.rst
+++ /dev/null
@@ -1,10 +0,0 @@
-=====================
-Coffeescript examples
-=====================
-
-A few tests to see how CoffeeScript works with Duktape. Just convert the
-Coffeescript files to Javascript with the ``Makefile.coffee`` in the
-distributable, or manually::
-
- $ coffee -c hello.coffee
- $ cat hello.js
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b8103f03/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/coffee/globals.coffee
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/coffee/globals.coffee b/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/coffee/globals.coffee
deleted file mode 100644
index 25773cd..0000000
--- a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/coffee/globals.coffee
+++ /dev/null
@@ -1,7 +0,0 @@
-
-print '*** All globals'
-print(name) for name in Object.getOwnPropertyNames(this)
-
-print '*** Globals with a short name (<= 8 chars)'
-print(name) for name in Object.getOwnPropertyNames(this) when name.length <= 8
-
http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/b8103f03/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/coffee/hello.coffee
----------------------------------------------------------------------
diff --git a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/coffee/hello.coffee b/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/coffee/hello.coffee
deleted file mode 100644
index 088ed8d..0000000
--- a/thirdparty/civetweb-1.9.1/src/third_party/duktape-1.5.2/examples/coffee/hello.coffee
+++ /dev/null
@@ -1,2 +0,0 @@
-print 'Hello world!'
-print 'version: ' + Duktape.version