PROTON-1585: Remove un-necessary include/pncompat from C examples.

Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/d7f6e066
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/d7f6e066
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/d7f6e066

Branch: refs/heads/master
Commit: d7f6e0662980fb8196dfd3b536210e76f851c6cd
Parents: ec3c8f6
Author: Alan Conway <acon...@redhat.com>
Authored: Tue Sep 12 13:56:35 2017 -0400
Committer: Alan Conway <acon...@redhat.com>
Committed: Tue Sep 12 16:22:23 2017 -0400

----------------------------------------------------------------------
 examples/c/include/pncompat/internal/LICENSE    |  33 ---
 examples/c/include/pncompat/internal/getopt.c   | 250 -------------------
 examples/c/include/pncompat/internal/getopt.h   |  63 -----
 examples/c/include/pncompat/misc_defs.h         |  50 ----
 examples/c/include/pncompat/misc_funcs.inc      |  68 -----
 tests/tools/apps/c/CMakeLists.txt               |   2 +-
 .../apps/c/include/pncompat/internal/LICENSE    |  32 +++
 .../apps/c/include/pncompat/internal/getopt.c   | 250 +++++++++++++++++++
 .../apps/c/include/pncompat/internal/getopt.h   |  63 +++++
 tests/tools/apps/c/include/pncompat/misc_defs.h |  50 ++++
 .../apps/c/include/pncompat/misc_funcs.inc      |  68 +++++
 11 files changed, 464 insertions(+), 465 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d7f6e066/examples/c/include/pncompat/internal/LICENSE
----------------------------------------------------------------------
diff --git a/examples/c/include/pncompat/internal/LICENSE 
b/examples/c/include/pncompat/internal/LICENSE
deleted file mode 100644
index 99efb42..0000000
--- a/examples/c/include/pncompat/internal/LICENSE
+++ /dev/null
@@ -1,33 +0,0 @@
-Free Getopt
-Copyright (c)2002-2003 Mark K. Kim
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
-
-  * Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in
-    the documentation and/or other materials provided with the
-    distribution.
-
-  * Neither the original author of this software nor the names of its
-    contributors may be used to endorse or promote products derived
-    from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
-THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d7f6e066/examples/c/include/pncompat/internal/getopt.c
----------------------------------------------------------------------
diff --git a/examples/c/include/pncompat/internal/getopt.c 
b/examples/c/include/pncompat/internal/getopt.c
deleted file mode 100644
index 7ef9a68..0000000
--- a/examples/c/include/pncompat/internal/getopt.c
+++ /dev/null
@@ -1,250 +0,0 @@
-/*****************************************************************************
-* getopt.c - competent and free getopt library.
-* $Header: /cvsroot/freegetopt/freegetopt/getopt.c,v 1.2 2003/10/26 03:10:20 
vindaci Exp $
-*
-* Copyright (c)2002-2003 Mark K. Kim
-* All rights reserved.
-* 
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions
-* are met:
-*
-*   * Redistributions of source code must retain the above copyright
-*     notice, this list of conditions and the following disclaimer.
-*
-*   * Redistributions in binary form must reproduce the above copyright
-*     notice, this list of conditions and the following disclaimer in
-*     the documentation and/or other materials provided with the
-*     distribution.
-*
-*   * Neither the original author of this software nor the names of its
-*     contributors may be used to endorse or promote products derived
-*     from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
-* THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-* DAMAGE.
-*/
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "getopt.h"
-
-
-static const char* ID = "$Id: getopt.c,v 1.2 2003/10/26 03:10:20 vindaci Exp 
$";
-
-
-char* optarg = NULL;
-int optind = 0;
-int opterr = 1;
-int optopt = '?';
-
-
-static char** prev_argv = NULL;        /* Keep a copy of argv and argc to */
-static int prev_argc = 0;              /*    tell if getopt params change */
-static int argv_index = 0;             /* Option we're checking */
-static int argv_index2 = 0;            /* Option argument we're checking */
-static int opt_offset = 0;             /* Index into compounded "-option" */
-static int dashdash = 0;               /* True if "--" option reached */
-static int nonopt = 0;                 /* How many nonopts we've found */
-
-static void increment_index()
-{
-       /* Move onto the next option */
-       if(argv_index < argv_index2)
-       {
-               while(prev_argv[++argv_index] && prev_argv[argv_index][0] != '-'
-                               && argv_index < argv_index2+1);
-       }
-       else argv_index++;
-       opt_offset = 1;
-}
-
-
-/*
-* Permutes argv[] so that the argument currently being processed is moved
-* to the end.
-*/
-static int permute_argv_once()
-{
-       /* Movability check */
-       if(argv_index + nonopt >= prev_argc) return 1;
-       /* Move the current option to the end, bring the others to front */
-       else
-       {
-               char* tmp = prev_argv[argv_index];
-
-               /* Move the data */
-               memmove(&prev_argv[argv_index], &prev_argv[argv_index+1],
-                               sizeof(char**) * (prev_argc - argv_index - 1));
-               prev_argv[prev_argc - 1] = tmp;
-
-               nonopt++;
-               return 0;
-       }
-}
-
-
-int getopt(int argc, char** argv, char* optstr)
-{
-       int c = 0;
-
-       /* If we have new argv, reinitialize */
-       if(prev_argv != argv || prev_argc != argc)
-       {
-               /* Initialize variables */
-               prev_argv = argv;
-               prev_argc = argc;
-               argv_index = 1;
-               argv_index2 = 1;
-               opt_offset = 1;
-               dashdash = 0;
-               nonopt = 0;
-       }
-
-       /* Jump point in case we want to ignore the current argv_index */
-       getopt_top:
-
-       /* Misc. initializations */
-       optarg = NULL;
-
-       /* Dash-dash check */
-       if(argv[argv_index] && !strcmp(argv[argv_index], "--"))
-       {
-               dashdash = 1;
-               increment_index();
-       }
-
-       /* If we're at the end of argv, that's it. */
-       if(argv[argv_index] == NULL)
-       {
-               c = -1;
-       }
-       /* Are we looking at a string? Single dash is also a string */
-       else if(dashdash || argv[argv_index][0] != '-' || 
!strcmp(argv[argv_index], "-"))
-       {
-               /* If we want a string... */
-               if(optstr[0] == '-')
-               {
-                       c = 1;
-                       optarg = argv[argv_index];
-                       increment_index();
-               }
-               /* If we really don't want it (we're in POSIX mode), we're done 
*/
-               else if(optstr[0] == '+' || getenv("POSIXLY_CORRECT"))
-               {
-                       c = -1;
-
-                       /* Everything else is a non-opt argument */
-                       nonopt = argc - argv_index;
-               }
-               /* If we mildly don't want it, then move it back */
-               else
-               {
-                       if(!permute_argv_once()) goto getopt_top;
-                       else c = -1;
-               }
-       }
-       /* Otherwise we're looking at an option */
-       else
-       {
-               char* opt_ptr = NULL;
-
-               /* Grab the option */
-               c = argv[argv_index][opt_offset++];
-
-               /* Is the option in the optstr? */
-               if(optstr[0] == '-') opt_ptr = strchr(optstr+1, c);
-               else opt_ptr = strchr(optstr, c);
-               /* Invalid argument */
-               if(!opt_ptr)
-               {
-                       if(opterr)
-                       {
-                               fprintf(stderr, "%s: invalid option -- %c\n", 
argv[0], c);
-                       }
-
-                       optopt = c;
-                       c = '?';
-
-                       /* Move onto the next option */
-                       increment_index();
-               }
-               /* Option takes argument */
-               else if(opt_ptr[1] == ':')
-               {
-                       /* ie, -oARGUMENT, -xxxoARGUMENT, etc. */
-                       if(argv[argv_index][opt_offset] != '\0')
-                       {
-                               optarg = &argv[argv_index][opt_offset];
-                               increment_index();
-                       }
-                       /* ie, -o ARGUMENT (only if it's a required argument) */
-                       else if(opt_ptr[2] != ':')
-                       {
-                               /* One of those "you're not expected to 
understand this" moment */
-                               if(argv_index2 < argv_index) argv_index2 = 
argv_index;
-                               while(argv[++argv_index2] && 
argv[argv_index2][0] == '-');
-                               optarg = argv[argv_index2];
-
-                               /* Don't cross into the non-option argument 
list */
-                               if(argv_index2 + nonopt >= prev_argc) optarg = 
NULL;
-
-                               /* Move onto the next option */
-                               increment_index();
-                       }
-                       else
-                       {
-                               /* Move onto the next option */
-                               increment_index();
-                       }
-
-                       /* In case we got no argument for an option with 
required argument */
-                       if(optarg == NULL && opt_ptr[2] != ':')
-                       {
-                               optopt = c;
-                               c = '?';
-
-                               if(opterr)
-                               {
-                                       fprintf(stderr,"%s: option requires an 
argument -- %c\n",
-                                                       argv[0], optopt);
-                               }
-                       }
-               }
-               /* Option does not take argument */
-               else
-               {
-                       /* Next argv_index */
-                       if(argv[argv_index][opt_offset] == '\0')
-                       {
-                               increment_index();
-                       }
-               }
-       }
-
-       /* Calculate optind */
-       if(c == -1)
-       {
-               optind = argc - nonopt;
-       }
-       else
-       {
-               optind = argv_index;
-       }
-
-       return c;
-}
-
-
-/* vim:ts=3
-*/

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d7f6e066/examples/c/include/pncompat/internal/getopt.h
----------------------------------------------------------------------
diff --git a/examples/c/include/pncompat/internal/getopt.h 
b/examples/c/include/pncompat/internal/getopt.h
deleted file mode 100644
index 0b78650..0000000
--- a/examples/c/include/pncompat/internal/getopt.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*****************************************************************************
-* getopt.h - competent and free getopt library.
-* $Header: /cvsroot/freegetopt/freegetopt/getopt.h,v 1.2 2003/10/26 03:10:20 
vindaci Exp $
-*
-* Copyright (c)2002-2003 Mark K. Kim
-* All rights reserved.
-* 
-* Redistribution and use in source and binary forms, with or without
-* modification, are permitted provided that the following conditions
-* are met:
-*
-*   * Redistributions of source code must retain the above copyright
-*     notice, this list of conditions and the following disclaimer.
-*
-*   * Redistributions in binary form must reproduce the above copyright
-*     notice, this list of conditions and the following disclaimer in
-*     the documentation and/or other materials provided with the
-*     distribution.
-*
-*   * Neither the original author of this software nor the names of its
-*     contributors may be used to endorse or promote products derived
-*     from this software without specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
-* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
-* THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-* DAMAGE.
-*/
-#ifndef GETOPT_H_
-#define GETOPT_H_
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-extern char* optarg;
-extern int optind;
-extern int opterr;
-extern int optopt;
-
-int getopt(int argc, char** argv, char* optstr);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* GETOPT_H_ */
-
-
-/* vim:ts=3
-*/

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d7f6e066/examples/c/include/pncompat/misc_defs.h
----------------------------------------------------------------------
diff --git a/examples/c/include/pncompat/misc_defs.h 
b/examples/c/include/pncompat/misc_defs.h
deleted file mode 100644
index 90b0d4e..0000000
--- a/examples/c/include/pncompat/misc_defs.h
+++ /dev/null
@@ -1,50 +0,0 @@
-#ifndef PNCOMAPT_MISC_DEFS_H
-#define PNCOMAPT_MISC_DEFS_H
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-#if defined(qpid_proton_EXPORTS)
-#error This include file is not for use in the main proton library
-#endif
-
-/*
- * Platform neutral definitions. Only intended for use by Proton
- * examples and test/debug programs.
- *
- * This file and any related support files may change or be removed
- * at any time.
- */
-
-// getopt()
-
-#include <proton/types.h>
-
-#if defined(__IBMC__)
-#  include <stdlib.h>
-#elif !defined(_WIN32) || defined (__CYGWIN__)
-#  include <getopt.h>
-#else
-#  include "internal/getopt.h"
-#endif
-
-pn_timestamp_t time_now(void);
-
-#endif /* PNCOMPAT_MISC_DEFS_H */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d7f6e066/examples/c/include/pncompat/misc_funcs.inc
----------------------------------------------------------------------
diff --git a/examples/c/include/pncompat/misc_funcs.inc 
b/examples/c/include/pncompat/misc_funcs.inc
deleted file mode 100644
index 821aaf4..0000000
--- a/examples/c/include/pncompat/misc_funcs.inc
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-/*
- * This file provides the functions for "misc_defs.h" in the form of
- * included code, as opposed to a separate library or object
- * dependency.  In the absence of portable "pragma weak" compiler
- * directives, this provides a simple workaround.
- *
- * Usage for a single compilation unit:
- *
- *  #include "pncompat/misc_funcs.inc"
- *
- * Usage for multiple combined compilation units: chose one to include
- * "pncompat/misc_funcs.inc" as above and in each other unit needing the
- * definitions use
- *
- *  #include "pncompat/misc_defs.h"
- *
- */
-
-#include "misc_defs.h"
-
-#if defined(_WIN32) && ! defined(__CYGWIN__)
-#include "pncompat/internal/getopt.c"
-#endif
-
-#if defined(_WIN32) && ! defined(__CYGWIN__)
-#include <windows.h>
-pn_timestamp_t time_now(void)
-{
-  FILETIME now;
-  ULARGE_INTEGER t;
-  GetSystemTimeAsFileTime(&now);
-  t.u.HighPart = now.dwHighDateTime;
-  t.u.LowPart = now.dwLowDateTime;
-  // Convert to milliseconds and adjust base epoch
-  return t.QuadPart / 10000 - 11644473600000;
-}
-#else
-#include <sys/time.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-pn_timestamp_t time_now(void)
-{
-  struct timeval now;
-  if (gettimeofday(&now, NULL)) {fprintf(stderr, "gettimeofday failed\n"); 
abort();}
-  return ((pn_timestamp_t)now.tv_sec) * 1000 + (now.tv_usec / 1000);
-}
-#endif

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d7f6e066/tests/tools/apps/c/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/tests/tools/apps/c/CMakeLists.txt 
b/tests/tools/apps/c/CMakeLists.txt
index 2c801c4..7851c7b 100644
--- a/tests/tools/apps/c/CMakeLists.txt
+++ b/tests/tools/apps/c/CMakeLists.txt
@@ -19,7 +19,7 @@
 
 include(CheckIncludeFiles)
 
-include_directories(${CMAKE_SOURCE_DIR}/examples/c/include)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
 
 CHECK_INCLUDE_FILES("inttypes.h" INTTYPES_AVAILABLE)
 if (INTTYPES_AVAILABLE)

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d7f6e066/tests/tools/apps/c/include/pncompat/internal/LICENSE
----------------------------------------------------------------------
diff --git a/tests/tools/apps/c/include/pncompat/internal/LICENSE 
b/tests/tools/apps/c/include/pncompat/internal/LICENSE
new file mode 100644
index 0000000..2c1799c
--- /dev/null
+++ b/tests/tools/apps/c/include/pncompat/internal/LICENSE
@@ -0,0 +1,32 @@
+Free Getopt
+Copyright (c)2002-2003 Mark K. Kim
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the original author of this software nor the names of its
+    contributors may be used to endorse or promote products derived
+    from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d7f6e066/tests/tools/apps/c/include/pncompat/internal/getopt.c
----------------------------------------------------------------------
diff --git a/tests/tools/apps/c/include/pncompat/internal/getopt.c 
b/tests/tools/apps/c/include/pncompat/internal/getopt.c
new file mode 100644
index 0000000..5f24dd8
--- /dev/null
+++ b/tests/tools/apps/c/include/pncompat/internal/getopt.c
@@ -0,0 +1,250 @@
+/*****************************************************************************
+* getopt.c - competent and free getopt library.
+* $Header: /cvsroot/freegetopt/freegetopt/getopt.c,v 1.2 2003/10/26 03:10:20 
vindaci Exp $
+*
+* Copyright (c)2002-2003 Mark K. Kim
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*
+*   * Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*
+*   * Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*
+*   * Neither the original author of this software nor the names of its
+*     contributors may be used to endorse or promote products derived
+*     from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+* THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+* DAMAGE.
+*/
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "getopt.h"
+
+
+static const char* ID = "$Id: getopt.c,v 1.2 2003/10/26 03:10:20 vindaci Exp 
$";
+
+
+char* optarg = NULL;
+int optind = 0;
+int opterr = 1;
+int optopt = '?';
+
+
+static char** prev_argv = NULL;        /* Keep a copy of argv and argc to */
+static int prev_argc = 0;              /*    tell if getopt params change */
+static int argv_index = 0;             /* Option we're checking */
+static int argv_index2 = 0;            /* Option argument we're checking */
+static int opt_offset = 0;             /* Index into compounded "-option" */
+static int dashdash = 0;               /* True if "--" option reached */
+static int nonopt = 0;                 /* How many nonopts we've found */
+
+static void increment_index()
+{
+       /* Move onto the next option */
+       if(argv_index < argv_index2)
+       {
+               while(prev_argv[++argv_index] && prev_argv[argv_index][0] != '-'
+                               && argv_index < argv_index2+1);
+       }
+       else argv_index++;
+       opt_offset = 1;
+}
+
+
+/*
+* Permutes argv[] so that the argument currently being processed is moved
+* to the end.
+*/
+static int permute_argv_once()
+{
+       /* Movability check */
+       if(argv_index + nonopt >= prev_argc) return 1;
+       /* Move the current option to the end, bring the others to front */
+       else
+       {
+               char* tmp = prev_argv[argv_index];
+
+               /* Move the data */
+               memmove(&prev_argv[argv_index], &prev_argv[argv_index+1],
+                               sizeof(char**) * (prev_argc - argv_index - 1));
+               prev_argv[prev_argc - 1] = tmp;
+
+               nonopt++;
+               return 0;
+       }
+}
+
+
+int getopt(int argc, char** argv, char* optstr)
+{
+       int c = 0;
+
+       /* If we have new argv, reinitialize */
+       if(prev_argv != argv || prev_argc != argc)
+       {
+               /* Initialize variables */
+               prev_argv = argv;
+               prev_argc = argc;
+               argv_index = 1;
+               argv_index2 = 1;
+               opt_offset = 1;
+               dashdash = 0;
+               nonopt = 0;
+       }
+
+       /* Jump point in case we want to ignore the current argv_index */
+       getopt_top:
+
+       /* Misc. initializations */
+       optarg = NULL;
+
+       /* Dash-dash check */
+       if(argv[argv_index] && !strcmp(argv[argv_index], "--"))
+       {
+               dashdash = 1;
+               increment_index();
+       }
+
+       /* If we're at the end of argv, that's it. */
+       if(argv[argv_index] == NULL)
+       {
+               c = -1;
+       }
+       /* Are we looking at a string? Single dash is also a string */
+       else if(dashdash || argv[argv_index][0] != '-' || 
!strcmp(argv[argv_index], "-"))
+       {
+               /* If we want a string... */
+               if(optstr[0] == '-')
+               {
+                       c = 1;
+                       optarg = argv[argv_index];
+                       increment_index();
+               }
+               /* If we really don't want it (we're in POSIX mode), we're done 
*/
+               else if(optstr[0] == '+' || getenv("POSIXLY_CORRECT"))
+               {
+                       c = -1;
+
+                       /* Everything else is a non-opt argument */
+                       nonopt = argc - argv_index;
+               }
+               /* If we mildly don't want it, then move it back */
+               else
+               {
+                       if(!permute_argv_once()) goto getopt_top;
+                       else c = -1;
+               }
+       }
+       /* Otherwise we're looking at an option */
+       else
+       {
+               char* opt_ptr = NULL;
+
+               /* Grab the option */
+               c = argv[argv_index][opt_offset++];
+
+               /* Is the option in the optstr? */
+               if(optstr[0] == '-') opt_ptr = strchr(optstr+1, c);
+               else opt_ptr = strchr(optstr, c);
+               /* Invalid argument */
+               if(!opt_ptr)
+               {
+                       if(opterr)
+                       {
+                               fprintf(stderr, "%s: invalid option -- %c\n", 
argv[0], c);
+                       }
+
+                       optopt = c;
+                       c = '?';
+
+                       /* Move onto the next option */
+                       increment_index();
+               }
+               /* Option takes argument */
+               else if(opt_ptr[1] == ':')
+               {
+                       /* ie, -oARGUMENT, -xxxoARGUMENT, etc. */
+                       if(argv[argv_index][opt_offset] != '\0')
+                       {
+                               optarg = &argv[argv_index][opt_offset];
+                               increment_index();
+                       }
+                       /* ie, -o ARGUMENT (only if it's a required argument) */
+                       else if(opt_ptr[2] != ':')
+                       {
+                               /* One of those "you're not expected to 
understand this" moment */
+                               if(argv_index2 < argv_index) argv_index2 = 
argv_index;
+                               while(argv[++argv_index2] && 
argv[argv_index2][0] == '-');
+                               optarg = argv[argv_index2];
+
+                               /* Don't cross into the non-option argument 
list */
+                               if(argv_index2 + nonopt >= prev_argc) optarg = 
NULL;
+
+                               /* Move onto the next option */
+                               increment_index();
+                       }
+                       else
+                       {
+                               /* Move onto the next option */
+                               increment_index();
+                       }
+
+                       /* In case we got no argument for an option with 
required argument */
+                       if(optarg == NULL && opt_ptr[2] != ':')
+                       {
+                               optopt = c;
+                               c = '?';
+
+                               if(opterr)
+                               {
+                                       fprintf(stderr,"%s: option requires an 
argument -- %c\n",
+                                                       argv[0], optopt);
+                               }
+                       }
+               }
+               /* Option does not take argument */
+               else
+               {
+                       /* Next argv_index */
+                       if(argv[argv_index][opt_offset] == '\0')
+                       {
+                               increment_index();
+                       }
+               }
+       }
+
+       /* Calculate optind */
+       if(c == -1)
+       {
+               optind = argc - nonopt;
+       }
+       else
+       {
+               optind = argv_index;
+       }
+
+       return c;
+}
+
+
+/* vim:ts=3
+*/

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d7f6e066/tests/tools/apps/c/include/pncompat/internal/getopt.h
----------------------------------------------------------------------
diff --git a/tests/tools/apps/c/include/pncompat/internal/getopt.h 
b/tests/tools/apps/c/include/pncompat/internal/getopt.h
new file mode 100644
index 0000000..d4c0932
--- /dev/null
+++ b/tests/tools/apps/c/include/pncompat/internal/getopt.h
@@ -0,0 +1,63 @@
+/*****************************************************************************
+* getopt.h - competent and free getopt library.
+* $Header: /cvsroot/freegetopt/freegetopt/getopt.h,v 1.2 2003/10/26 03:10:20 
vindaci Exp $
+*
+* Copyright (c)2002-2003 Mark K. Kim
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*
+*   * Redistributions of source code must retain the above copyright
+*     notice, this list of conditions and the following disclaimer.
+*
+*   * Redistributions in binary form must reproduce the above copyright
+*     notice, this list of conditions and the following disclaimer in
+*     the documentation and/or other materials provided with the
+*     distribution.
+*
+*   * Neither the original author of this software nor the names of its
+*     contributors may be used to endorse or promote products derived
+*     from this software without specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+* THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+* DAMAGE.
+*/
+#ifndef GETOPT_H_
+#define GETOPT_H_
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+extern char* optarg;
+extern int optind;
+extern int opterr;
+extern int optopt;
+
+int getopt(int argc, char** argv, char* optstr);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* GETOPT_H_ */
+
+
+/* vim:ts=3
+*/

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d7f6e066/tests/tools/apps/c/include/pncompat/misc_defs.h
----------------------------------------------------------------------
diff --git a/tests/tools/apps/c/include/pncompat/misc_defs.h 
b/tests/tools/apps/c/include/pncompat/misc_defs.h
new file mode 100644
index 0000000..90b0d4e
--- /dev/null
+++ b/tests/tools/apps/c/include/pncompat/misc_defs.h
@@ -0,0 +1,50 @@
+#ifndef PNCOMAPT_MISC_DEFS_H
+#define PNCOMAPT_MISC_DEFS_H
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+#if defined(qpid_proton_EXPORTS)
+#error This include file is not for use in the main proton library
+#endif
+
+/*
+ * Platform neutral definitions. Only intended for use by Proton
+ * examples and test/debug programs.
+ *
+ * This file and any related support files may change or be removed
+ * at any time.
+ */
+
+// getopt()
+
+#include <proton/types.h>
+
+#if defined(__IBMC__)
+#  include <stdlib.h>
+#elif !defined(_WIN32) || defined (__CYGWIN__)
+#  include <getopt.h>
+#else
+#  include "internal/getopt.h"
+#endif
+
+pn_timestamp_t time_now(void);
+
+#endif /* PNCOMPAT_MISC_DEFS_H */

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d7f6e066/tests/tools/apps/c/include/pncompat/misc_funcs.inc
----------------------------------------------------------------------
diff --git a/tests/tools/apps/c/include/pncompat/misc_funcs.inc 
b/tests/tools/apps/c/include/pncompat/misc_funcs.inc
new file mode 100644
index 0000000..821aaf4
--- /dev/null
+++ b/tests/tools/apps/c/include/pncompat/misc_funcs.inc
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+/*
+ * This file provides the functions for "misc_defs.h" in the form of
+ * included code, as opposed to a separate library or object
+ * dependency.  In the absence of portable "pragma weak" compiler
+ * directives, this provides a simple workaround.
+ *
+ * Usage for a single compilation unit:
+ *
+ *  #include "pncompat/misc_funcs.inc"
+ *
+ * Usage for multiple combined compilation units: chose one to include
+ * "pncompat/misc_funcs.inc" as above and in each other unit needing the
+ * definitions use
+ *
+ *  #include "pncompat/misc_defs.h"
+ *
+ */
+
+#include "misc_defs.h"
+
+#if defined(_WIN32) && ! defined(__CYGWIN__)
+#include "pncompat/internal/getopt.c"
+#endif
+
+#if defined(_WIN32) && ! defined(__CYGWIN__)
+#include <windows.h>
+pn_timestamp_t time_now(void)
+{
+  FILETIME now;
+  ULARGE_INTEGER t;
+  GetSystemTimeAsFileTime(&now);
+  t.u.HighPart = now.dwHighDateTime;
+  t.u.LowPart = now.dwLowDateTime;
+  // Convert to milliseconds and adjust base epoch
+  return t.QuadPart / 10000 - 11644473600000;
+}
+#else
+#include <sys/time.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+pn_timestamp_t time_now(void)
+{
+  struct timeval now;
+  if (gettimeofday(&now, NULL)) {fprintf(stderr, "gettimeofday failed\n"); 
abort();}
+  return ((pn_timestamp_t)now.tv_sec) * 1000 + (now.tv_usec / 1000);
+}
+#endif


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org

Reply via email to