hawq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From w...@apache.org
Subject incubator-hawq git commit: HAWQ-1350. Add --enable-rps option to build ranger-plugin when build hawq.
Date Fri, 24 Feb 2017 08:11:27 GMT
Repository: incubator-hawq
Updated Branches:
  refs/heads/master 51590b991 -> 6bc9fd7aa


HAWQ-1350. Add --enable-rps option to build ranger-plugin when build hawq.


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/6bc9fd7a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/6bc9fd7a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/6bc9fd7a

Branch: refs/heads/master
Commit: 6bc9fd7aa837d1254d43efbe42cfbde6f1456659
Parents: 51590b9
Author: stanlyxiang <stanly.sxiang@gmail.com>
Authored: Thu Feb 23 16:08:30 2017 +0800
Committer: Wen Lin <wlin@pivotal.io>
Committed: Fri Feb 24 16:10:29 2017 +0800

----------------------------------------------------------------------
 GNUmakefile.in                   |   5 +
 aclocal.m4                       |   1 +
 config/tomcat.m4                 |  57 +++++++++++
 configure                        | 177 +++++++++++++++++++++++++++++++++-
 configure.in                     |  15 ++-
 ranger-plugin/.gitignore         |   2 +
 ranger-plugin/Makefile           |  59 ++++++++++++
 ranger-plugin/Makefile.global.in |  28 ++++++
 src/include/pg_config.h.in       |   3 +
 9 files changed, 345 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/6bc9fd7a/GNUmakefile.in
----------------------------------------------------------------------
diff --git a/GNUmakefile.in b/GNUmakefile.in
index 6a7ca9b..081e6fe 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -17,6 +17,7 @@ all:
 	$(MAKE) -C config $@
 	$(MAKE) -C contrib $@
 	$(MAKE) -C tools $@
+	$(MAKE) -C ranger-plugin $@
 	@echo "All of HAWQ successfully made. Ready to install."
 
 install:
@@ -28,6 +29,7 @@ install:
 	$(MAKE) -C config $@
 	$(MAKE) -C contrib $@
 	$(MAKE) -C tools $@
+	$(MAKE) -C ranger-plugin $@
 	@echo "HAWQ installation complete."
 
 installdirs uninstall:
@@ -35,6 +37,7 @@ installdirs uninstall:
 	$(MAKE) -C src $@
 	$(MAKE) -C config $@
 	$(MAKE) -C contrib $@
+	$(MAKE) -C ranger-plugin $@
 
 distprep:
 #	$(MAKE) -C doc $@
@@ -60,6 +63,7 @@ clean:
 	$(MAKE) -C config $@
 	$(MAKE) -C contrib $@
 	$(MAKE) -C tools $@
+	$(MAKE) -C ranger-plugin $@
 	-$(MAKE) -C src feature-test-clean
 # Garbage from autoconf:
 	@rm -rf autom4te.cache/
@@ -76,6 +80,7 @@ distclean maintainer-clean:
 	-$(MAKE) -C tools $@
 	-$(MAKE) -C src feature-test-clean
 	-$(MAKE) -C src $@
+	-$(MAKE) -C ranger-plugin $@
 	-rm -f config.cache config.log config.status GNUmakefile
 # Garbage from autoconf:
 	@rm -rf autom4te.cache/

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/6bc9fd7a/aclocal.m4
----------------------------------------------------------------------
diff --git a/aclocal.m4 b/aclocal.m4
index 80dfe03..08f4519 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -14,3 +14,4 @@ m4_include([config/java.m4])
 m4_include([config/tcl.m4])
 m4_include([config/curl.m4])
 m4_include([config/maven.m4])
+m4_include([config/tomcat.m4])

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/6bc9fd7a/config/tomcat.m4
----------------------------------------------------------------------
diff --git a/config/tomcat.m4 b/config/tomcat.m4
new file mode 100644
index 0000000..9e122a3
--- /dev/null
+++ b/config/tomcat.m4
@@ -0,0 +1,57 @@
+dnl
+dnl tomcat.m4: Locates the Apache Tomcat/6.0.x and its scripts and jars. 
+dnl
+
+# PGAC_CATALINA_HOME
+# ------------------
+AC_DEFUN([PGAC_CATALINA_HOME],
+[
+  AC_MSG_CHECKING([CATALINA_HOME])
+
+  dnl Use $CATALINA_HOME if specifed, otherwise look for java in the likely places.
+  dnl /usr/local/Cellar/tomcat@6/6.0.45/libexec 
+  dnl /usr/lib/bigtop-tomcat
+  if test -x "${CATALINA_HOME}/bin/catalina.sh"; then
+    TOMCAT="${CATALINA_HOME}"
+  elif test -x "/usr/lib/bigtop-tomcat/bin/catalina.sh"; then
+    TOMCAT="/usr/lib/bigtop-tomcat/"
+  else
+    AC_MSG_RESULT(not found)
+    AC_MSG_ERROR([CATALINA_HOME not found])
+  fi
+  CATALINA_HOME="$TOMCAT"
+  
+  AC_MSG_RESULT(${CATALINA_HOME})
+  AC_SUBST(CATALINA_HOME)
+])
+
+# PGAC_PATH_TOMCAT
+# ----------------
+AC_DEFUN([PGAC_PATH_TOMCAT],
+[
+  CATALINA=none
+  SETCLASSPATH=none
+  
+  AC_REQUIRE([PGAC_CATALINA_HOME])
+  AC_PATH_PROGS(CATALINA,catalina.sh,,${CATALINA_HOME}/bin)
+  AC_PATH_PROGS(SETCLASSPATH,setclasspath.sh,,${CATALINA_HOME}/bin)
+])
+
+# PGAC_CHECK_TOMCAT_EMBED_SETUP
+# ----------------------------
+AC_DEFUN([PGAC_CHECK_TOMCAT_EMBED_SETUP],
+[
+  AC_REQUIRE([PGAC_PATH_TOMCAT])
+
+  # Check the current tomcat version
+  AC_MSG_CHECKING([for tomcat version])
+  version=`${CATALINA} version 2>&1 | grep "Server version" | cut -d '/' -f2`
+  AC_MSG_RESULT("$version")
+
+  if echo "$version" | sed ['s/[^0-9]/ /g'] | $AWK '{ if ([$]1 != 6) exit 0; else exit 1;}'
+  then
+    AC_MSG_ERROR([The installed version of tomcat is not compatiable to use with ranger-plugin.
+                  Apache Tomcat/6.0.x is required, but this is $version])
+  fi
+
+])

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/6bc9fd7a/configure
----------------------------------------------------------------------
diff --git a/configure b/configure
index 69d68a6..b5dca4f 100755
--- a/configure
+++ b/configure
@@ -667,6 +667,9 @@ CURL_CFLAGS
 CURL_CONFIG
 R_HOME
 ZIC
+SETCLASSPATH
+CATALINA
+CATALINA_HOME
 JAVAC_FLAGS
 JAVADOC
 JAR
@@ -734,6 +737,7 @@ with_python
 with_perl
 with_tcl
 enable_thread_safety
+enable_rps
 enable_orca
 enable_email
 enable_gphdfs
@@ -846,6 +850,7 @@ enable_snmp
 enable_gphdfs
 enable_email
 enable_orca
+enable_rps
 enable_thread_safety
 enable_thread_safety_force
 with_tcl
@@ -1523,6 +1528,7 @@ disable 64-bit integer date/time support
   --enable-gphdfs        enables GPHDFS support
   --enable-email        enable email alerts
   --enable-orca        enable Pivotal Query Optimizer
+  --enable-rps         enable hawq ranger plugin
   --disable-thread-safety  Do not make client libraries thread-safe
   --enable-thread-safety-force  force thread-safety despite thread test failure
   --disable-xmltest       Do not try to compile and run a test LIBXML program
@@ -5501,6 +5507,37 @@ fi
 
 
 #
+# Enable hawq ranger plugin
+#
+
+pgac_args="$pgac_args enable_rps"
+
+# Check whether --enable-rps was given.
+if test "${enable_rps+set}" = set; then :
+  enableval=$enable_rps;
+  case $enableval in
+    yes)
+
+$as_echo "#define USE_RANGER 1" >>confdefs.h
+
+      ;;
+    no)
+      :
+      ;;
+    *)
+      as_fn_error $? "no argument expected for --enable-rps option" "$LINENO" 5
+      ;;
+  esac
+
+else
+  enable_rps=no
+
+fi
+
+
+
+
+#
 # Enable thread-safe client libraries
 #
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking allow thread-safe client libraries" >&5
@@ -8169,6 +8206,143 @@ $as_echo "yes" >&6; }
 
 fi
 
+if test "$enable_rps" = yes; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking CATALINA_HOME" >&5
+$as_echo_n "checking CATALINA_HOME... " >&6; }
+
+        if test -x "${CATALINA_HOME}/bin/catalina.sh"; then
+    TOMCAT="${CATALINA_HOME}"
+  elif test -x "/usr/local/Cellar/tomcat@6/6.0.45/libexec/bin/catalina.sh"; then
+    TOMCAT="/usr/local/Cellar/tomcat@6/6.0.45/libexec/"
+  elif test -x "/usr/lib/bigtop-tomcat/bin/catalina.sh"; then
+    TOMCAT="/usr/lib/bigtop-tomcat/"
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+$as_echo "not found" >&6; }
+    as_fn_error $? "CATALINA_HOME not found" "$LINENO" 5
+  fi
+  CATALINA_HOME="$TOMCAT"
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${CATALINA_HOME}" >&5
+$as_echo "${CATALINA_HOME}" >&6; }
+
+
+
+  CATALINA=none
+  SETCLASSPATH=none
+
+
+  for ac_prog in catalina.sh
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_CATALINA+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $CATALINA in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CATALINA="$CATALINA" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in ${CATALINA_HOME}/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_CATALINA="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+CATALINA=$ac_cv_path_CATALINA
+if test -n "$CATALINA"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CATALINA" >&5
+$as_echo "$CATALINA" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$CATALINA" && break
+done
+
+  for ac_prog in setclasspath.sh
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_SETCLASSPATH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $SETCLASSPATH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_SETCLASSPATH="$SETCLASSPATH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in ${CATALINA_HOME}/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_SETCLASSPATH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+SETCLASSPATH=$ac_cv_path_SETCLASSPATH
+if test -n "$SETCLASSPATH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SETCLASSPATH" >&5
+$as_echo "$SETCLASSPATH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$SETCLASSPATH" && break
+done
+
+
+
+
+
+  # Check the current tomcat version
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tomcat version" >&5
+$as_echo_n "checking for tomcat version... " >&6; }
+  version=`${CATALINA} version 2>&1 | grep "Server version" | cut -d '/' -f2`
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"$version\"" >&5
+$as_echo "\"$version\"" >&6; }
+
+  if echo "$version" | sed 's/[^0-9]/ /g' | $AWK '{ if ($1 != 6) exit 0; else exit 1;}'
+  then
+    as_fn_error $? "The installed version of tomcat is not compatiable to use with ranger-plugin.
+                  Apache Tomcat/6.0.x is required, but this is $version" "$LINENO" 5
+  fi
+
+
+fi
+
 ZIC=
 if test "$cross_compiling" = yes && test -z "$with_system_tzdata"; then
   # Extract the first word of "zic", so it can be a program name with args.
@@ -16544,7 +16718,7 @@ $as_echo "done" >&6; }
 fi
 
 
-ac_config_files="$ac_config_files GNUmakefile src/VERSIONS.mk depends/thirdparty/googletest/Makefile.global
depends/libhdfs3/Makefile.global depends/libyarn/Makefile.global src/Makefile.global src/pl/pljava/src/java/Makefile.global"
+ac_config_files="$ac_config_files GNUmakefile src/VERSIONS.mk depends/thirdparty/googletest/Makefile.global
depends/libhdfs3/Makefile.global depends/libyarn/Makefile.global src/Makefile.global src/pl/pljava/src/java/Makefile.global
ranger-plugin/Makefile.global"
 
 
 ac_config_links="$ac_config_links src/backend/port/dynloader.c:src/backend/port/dynloader/${template}.c
src/backend/port/pg_sema.c:${SEMA_IMPLEMENTATION} src/backend/port/pg_shmem.c:${SHMEM_IMPLEMENTATION}
src/include/dynloader.h:src/backend/port/dynloader/${template}.h src/include/pg_config_os.h:src/include/port/${template}.h
src/Makefile.port:src/makefiles/Makefile.${template}"
@@ -17277,6 +17451,7 @@ do
     "depends/libyarn/Makefile.global") CONFIG_FILES="$CONFIG_FILES depends/libyarn/Makefile.global"
;;
     "src/Makefile.global") CONFIG_FILES="$CONFIG_FILES src/Makefile.global" ;;
     "src/pl/pljava/src/java/Makefile.global") CONFIG_FILES="$CONFIG_FILES src/pl/pljava/src/java/Makefile.global"
;;
+    "ranger-plugin/Makefile.global") CONFIG_FILES="$CONFIG_FILES ranger-plugin/Makefile.global"
;;
     "src/backend/port/dynloader.c") CONFIG_LINKS="$CONFIG_LINKS src/backend/port/dynloader.c:src/backend/port/dynloader/${template}.c"
;;
     "src/backend/port/pg_sema.c") CONFIG_LINKS="$CONFIG_LINKS src/backend/port/pg_sema.c:${SEMA_IMPLEMENTATION}"
;;
     "src/backend/port/pg_shmem.c") CONFIG_LINKS="$CONFIG_LINKS src/backend/port/pg_shmem.c:${SHMEM_IMPLEMENTATION}"
;;

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/6bc9fd7a/configure.in
----------------------------------------------------------------------
diff --git a/configure.in b/configure.in
index 4f091e1..2f35e16 100644
--- a/configure.in
+++ b/configure.in
@@ -644,6 +644,14 @@ PGAC_ARG_BOOL(enable, orca, no, [  --enable-orca        enable Pivotal
Query Opt
 AC_SUBST(enable_orca)
 
 #
+# Enable hawq ranger plugin
+#
+PGAC_ARG_BOOL(enable, rps, no, [  --enable-rps         enable hawq ranger plugin],
+              [AC_DEFINE([USE_RANGER], 1,
+                         [Define to 1 to build with hawq ranger plugin. (--enable-rps)])])
+AC_SUBST(enable_rps)
+
+#
 # Enable thread-safe client libraries
 #
 AC_MSG_CHECKING([allow thread-safe client libraries])
@@ -988,6 +996,11 @@ if test "$with_java" = yes; then
   PGAC_CHECK_JAVA_EMBED_SETUP
 fi
 
+if test "$enable_rps" = yes; then
+  PGAC_PATH_TOMCAT
+  PGAC_CHECK_TOMCAT_EMBED_SETUP
+fi
+
 ZIC=
 if test "$cross_compiling" = yes && test -z "$with_system_tzdata"; then
   AC_PATH_PROG(ZIC, zic)
@@ -2140,7 +2153,7 @@ else
 fi
 AC_SUBST(vpath_build)
 
-AC_CONFIG_FILES([GNUmakefile src/VERSIONS.mk depends/thirdparty/googletest/Makefile.global
depends/libhdfs3/Makefile.global depends/libyarn/Makefile.global src/Makefile.global src/pl/pljava/src/java/Makefile.global])
+AC_CONFIG_FILES([GNUmakefile src/VERSIONS.mk depends/thirdparty/googletest/Makefile.global
depends/libhdfs3/Makefile.global depends/libyarn/Makefile.global src/Makefile.global src/pl/pljava/src/java/Makefile.global
ranger-plugin/Makefile.global])
 
 AC_CONFIG_LINKS([
   src/backend/port/dynloader.c:src/backend/port/dynloader/${template}.c

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/6bc9fd7a/ranger-plugin/.gitignore
----------------------------------------------------------------------
diff --git a/ranger-plugin/.gitignore b/ranger-plugin/.gitignore
new file mode 100644
index 0000000..9f5b5c2
--- /dev/null
+++ b/ranger-plugin/.gitignore
@@ -0,0 +1,2 @@
+target/
+Makefile.global

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/6bc9fd7a/ranger-plugin/Makefile
----------------------------------------------------------------------
diff --git a/ranger-plugin/Makefile b/ranger-plugin/Makefile
new file mode 100644
index 0000000..4bac4fe
--- /dev/null
+++ b/ranger-plugin/Makefile
@@ -0,0 +1,59 @@
+# 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.
+#
+# HAWQ ranger-plugin makefile
+subdir = ranger-plugin
+top_builddir = ../
+include Makefile.global
+
+MVN_OPTS="-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
-B -e"
+##########################################################################
+#
+.PHONY: all install distclean clean uninstall
+
+ifeq ($(enable_rps), yes)
+
+all:
+ifdef MAVEN
+	$(MAVEN) $(MVN_OPTS) clean package install
+else
+	@$(missing) mvn $< $(MVN_OPTS) clean package install
+endif
+
+install:
+	@echo "Install ranger-plugin by copy ranger-plugin to HAWQ install dir."
+	@echo "install `find $(top_builddir)$(subdir)/target -name ranger` into ${prefix}/ranger"
+	cp -r `find $(top_builddir)$(subdir)/target -name ranger` ${prefix}/
+	chmod -R 750 $(prefix)/ranger/bin
+
+uninstall:
+	rm -rf $(prefix)/ranger
+
+clean:
+ifdef MAVEN
+	$(MAVEN) $(MVN_OPTS) clean
+else
+	@$(missing) mvn $< $@
+endif
+
+distclean: clean
+
+else
+
+all install distclean clean uninstall:
+
+endif

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/6bc9fd7a/ranger-plugin/Makefile.global.in
----------------------------------------------------------------------
diff --git a/ranger-plugin/Makefile.global.in b/ranger-plugin/Makefile.global.in
new file mode 100644
index 0000000..35d290f
--- /dev/null
+++ b/ranger-plugin/Makefile.global.in
@@ -0,0 +1,28 @@
+# 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.
+#
+# -*-makefile-*-
+#------------------------------------------------------------------------------
+# A makefile that integrate building this module with hawq
+#------------------------------------------------------------------------------
+
+prefix := @prefix@
+enable_rps = @enable_rps@
+
+abs_top_srcdir = @abs_top_srcdir@
+abs_top_builddir = @abs_top_builddir@
+

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/6bc9fd7a/src/include/pg_config.h.in
----------------------------------------------------------------------
diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in
index d5c47d9..10cb221 100644
--- a/src/include/pg_config.h.in
+++ b/src/include/pg_config.h.in
@@ -822,6 +822,9 @@
 /* Define to 1 to build with PAM support. (--with-pam) */
 #undef USE_PAM
 
+/* Define to 1 to build with hawq ranger plugin. (--enable-rps) */
+#undef USE_RANGER
+
 /* Use replacement snprintf() functions. */
 #undef USE_REPL_SNPRINTF
 


Mime
View raw message