Author: logie
Date: Fri Oct 5 16:45:43 2012
New Revision: 1394633
URL: http://svn.apache.org/viewvc?rev=1394633&view=rev
Log:
Added a ruby conf writer and hooked it up in all the various build points.
Added:
lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriterRuby.c
lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriterRuby.h
Modified:
lucy/trunk/charmonizer/Makefile
lucy/trunk/charmonizer/Makefile.MSVC
lucy/trunk/charmonizer/Makefile.MinGW
lucy/trunk/charmonizer/buildbin/meld.pl
lucy/trunk/charmonizer/charmonize.c
Modified: lucy/trunk/charmonizer/Makefile
URL:
http://svn.apache.org/viewvc/lucy/trunk/charmonizer/Makefile?rev=1394633&r1=1394632&r2=1394633&view=diff
==============================================================================
--- lucy/trunk/charmonizer/Makefile (original)
+++ lucy/trunk/charmonizer/Makefile Fri Oct 5 16:45:43 2012
@@ -26,11 +26,11 @@ PERL=/usr/bin/perl
TESTS= TestDirManip TestFuncMacro TestHeaders TestIntegers TestLargeFiles
TestUnusedVars TestVariadicMacros
-OBJS= charmonize.o src/Charmonizer/Core/Compiler.o
src/Charmonizer/Core/ConfWriter.o src/Charmonizer/Core/ConfWriterC.o
src/Charmonizer/Core/ConfWriterPerl.o src/Charmonizer/Core/HeaderChecker.o
src/Charmonizer/Core/OperatingSystem.o src/Charmonizer/Core/Util.o
src/Charmonizer/Probe.o src/Charmonizer/Probe/AtomicOps.o
src/Charmonizer/Probe/DirManip.o src/Charmonizer/Probe/Floats.o
src/Charmonizer/Probe/FuncMacro.o src/Charmonizer/Probe/Headers.o
src/Charmonizer/Probe/Integers.o src/Charmonizer/Probe/LargeFiles.o
src/Charmonizer/Probe/Memory.o src/Charmonizer/Probe/SymbolVisibility.o
src/Charmonizer/Probe/UnusedVars.o src/Charmonizer/Probe/VariadicMacros.o
+OBJS= charmonize.o src/Charmonizer/Core/Compiler.o
src/Charmonizer/Core/ConfWriter.o src/Charmonizer/Core/ConfWriterC.o
src/Charmonizer/Core/ConfWriterPerl.o src/Charmonizer/Core/ConfWriterRuby.o
src/Charmonizer/Core/HeaderChecker.o src/Charmonizer/Core/OperatingSystem.o
src/Charmonizer/Core/Util.o src/Charmonizer/Probe.o
src/Charmonizer/Probe/AtomicOps.o src/Charmonizer/Probe/DirManip.o
src/Charmonizer/Probe/Floats.o src/Charmonizer/Probe/FuncMacro.o
src/Charmonizer/Probe/Headers.o src/Charmonizer/Probe/Integers.o
src/Charmonizer/Probe/LargeFiles.o src/Charmonizer/Probe/Memory.o
src/Charmonizer/Probe/SymbolVisibility.o src/Charmonizer/Probe/UnusedVars.o
src/Charmonizer/Probe/VariadicMacros.o
TEST_OBJS= src/Charmonizer/Test.o src/Charmonizer/Test/TestDirManip.o
src/Charmonizer/Test/TestFuncMacro.o src/Charmonizer/Test/TestHeaders.o
src/Charmonizer/Test/TestIntegers.o src/Charmonizer/Test/TestLargeFiles.o
src/Charmonizer/Test/TestUnusedVars.o src/Charmonizer/Test/TestVariadicMacros.o
-HEADERS= src/Charmonizer/Core/Compiler.h src/Charmonizer/Core/ConfWriter.h
src/Charmonizer/Core/ConfWriterC.h src/Charmonizer/Core/ConfWriterPerl.h
src/Charmonizer/Core/Defines.h src/Charmonizer/Core/HeaderChecker.h
src/Charmonizer/Core/OperatingSystem.h src/Charmonizer/Core/Util.h
src/Charmonizer/Probe.h src/Charmonizer/Probe/AtomicOps.h
src/Charmonizer/Probe/DirManip.h src/Charmonizer/Probe/Floats.h
src/Charmonizer/Probe/FuncMacro.h src/Charmonizer/Probe/Headers.h
src/Charmonizer/Probe/Integers.h src/Charmonizer/Probe/LargeFiles.h
src/Charmonizer/Probe/Memory.h src/Charmonizer/Probe/SymbolVisibility.h
src/Charmonizer/Probe/UnusedVars.h src/Charmonizer/Probe/VariadicMacros.h
src/Charmonizer/Test.h
+HEADERS= src/Charmonizer/Core/Compiler.h src/Charmonizer/Core/ConfWriter.h
src/Charmonizer/Core/ConfWriterC.h src/Charmonizer/Core/ConfWriterPerl.h
src/Charmonizer/Core/ConfWriterRuby.h src/Charmonizer/Core/Defines.h
src/Charmonizer/Core/HeaderChecker.h src/Charmonizer/Core/OperatingSystem.h
src/Charmonizer/Core/Util.h src/Charmonizer/Probe.h
src/Charmonizer/Probe/AtomicOps.h src/Charmonizer/Probe/DirManip.h
src/Charmonizer/Probe/Floats.h src/Charmonizer/Probe/FuncMacro.h
src/Charmonizer/Probe/Headers.h src/Charmonizer/Probe/Integers.h
src/Charmonizer/Probe/LargeFiles.h src/Charmonizer/Probe/Memory.h
src/Charmonizer/Probe/SymbolVisibility.h src/Charmonizer/Probe/UnusedVars.h
src/Charmonizer/Probe/VariadicMacros.h src/Charmonizer/Test.h
CLEANABLE= $(OBJS) $(PROGNAME) $(TEST_OBJS) $(TESTS)
Modified: lucy/trunk/charmonizer/Makefile.MSVC
URL:
http://svn.apache.org/viewvc/lucy/trunk/charmonizer/Makefile.MSVC?rev=1394633&r1=1394632&r2=1394633&view=diff
==============================================================================
--- lucy/trunk/charmonizer/Makefile.MSVC (original)
+++ lucy/trunk/charmonizer/Makefile.MSVC Fri Oct 5 16:45:43 2012
@@ -26,11 +26,14 @@ PERL=/usr/bin/perl
TESTS= TestDirManip.exe TestFuncMacro.exe TestHeaders.exe TestIntegers.exe
TestLargeFiles.exe TestUnusedVars.exe TestVariadicMacros.exe
-OBJS= charmonize.obj src\Charmonizer\Core\Compiler.obj
src\Charmonizer\Core\ConfWriter.obj src\Charmonizer\Core\ConfWriterC.obj
src\Charmonizer\Core\ConfWriterPerl.obj src\Charmonizer\Core\HeaderChecker.obj
src\Charmonizer\Core\OperatingSystem.obj src\Charmonizer\Core\Util.obj
src\Charmonizer\Probe.obj src\Charmonizer\Probe\AtomicOps.obj
src\Charmonizer\Probe\DirManip.obj src\Charmonizer\Probe\Floats.obj
src\Charmonizer\Probe\FuncMacro.obj src\Charmonizer\Probe\Headers.obj
src\Charmonizer\Probe\Integers.obj src\Charmonizer\Probe\LargeFiles.obj
src\Charmonizer\Probe\Memory.obj src\Charmonizer\Probe\SymbolVisibility.obj
src\Charmonizer\Probe\UnusedVars.obj src\Charmonizer\Probe\VariadicMacros.obj
+OBJS= charmonize.obj src\Charmonizer\Core\Compiler.obj
+src\Charmonizer\Core\ConfWriter.obj src\Charmonizer\Core\ConfWriterC.obj
+src\Charmonizer\Core\ConfWriterPerl.obj
src\Charmonizer\Core\ConfWriterRuby.obj src\Charmonizer\Core\HeaderChecker.obj
src\Charmonizer\Core\OperatingSystem.obj src\Charmonizer\Core\Util.obj
src\Charmonizer\Probe.obj src\Charmonizer\Probe\AtomicOps.obj
src\Charmonizer\Probe\DirManip.obj src\Charmonizer\Probe\Floats.obj
src\Charmonizer\Probe\FuncMacro.obj src\Charmonizer\Probe\Headers.obj
src\Charmonizer\Probe\Integers.obj src\Charmonizer\Probe\LargeFiles.obj
src\Charmonizer\Probe\Memory.obj src\Charmonizer\Probe\SymbolVisibility.obj
src\Charmonizer\Probe\UnusedVars.obj src\Charmonizer\Probe\VariadicMacros.obj
TEST_OBJS= src\Charmonizer\Test.obj src\Charmonizer\Test\TestDirManip.obj
src\Charmonizer\Test\TestFuncMacro.obj src\Charmonizer\Test\TestHeaders.obj
src\Charmonizer\Test\TestIntegers.obj src\Charmonizer\Test\TestLargeFiles.obj
src\Charmonizer\Test\TestUnusedVars.obj
src\Charmonizer\Test\TestVariadicMacros.obj
-HEADERS= src\Charmonizer\Core\Compiler.h src\Charmonizer\Core\ConfWriter.h
src\Charmonizer\Core\ConfWriterC.h src\Charmonizer\Core\ConfWriterPerl.h
src\Charmonizer\Core\Defines.h src\Charmonizer\Core\HeaderChecker.h
src\Charmonizer\Core\OperatingSystem.h src\Charmonizer\Core\Util.h
src\Charmonizer\Probe.h src\Charmonizer\Probe\AtomicOps.h
src\Charmonizer\Probe\DirManip.h src\Charmonizer\Probe\Floats.h
src\Charmonizer\Probe\FuncMacro.h src\Charmonizer\Probe\Headers.h
src\Charmonizer\Probe\Integers.h src\Charmonizer\Probe\LargeFiles.h
src\Charmonizer\Probe\Memory.h src\Charmonizer\Probe\SymbolVisibility.h
src\Charmonizer\Probe\UnusedVars.h src\Charmonizer\Probe\VariadicMacros.h
src\Charmonizer\Test.h
+HEADERS= src\Charmonizer\Core\Compiler.h src\Charmonizer\Core\ConfWriter.h
+src\Charmonizer\Core\ConfWriterC.h src\Charmonizer\Core\ConfWriterPerl.h
src\Charmonizer\Core\ConfWriterRuby.h src\Charmonizer\Core\Defines.h
src\Charmonizer\Core\HeaderChecker.h src\Charmonizer\Core\OperatingSystem.h
src\Charmonizer\Core\Util.h src\Charmonizer\Probe.h
src\Charmonizer\Probe\AtomicOps.h src\Charmonizer\Probe\DirManip.h
src\Charmonizer\Probe\Floats.h src\Charmonizer\Probe\FuncMacro.h
src\Charmonizer\Probe\Headers.h src\Charmonizer\Probe\Integers.h
src\Charmonizer\Probe\LargeFiles.h src\Charmonizer\Probe\Memory.h
src\Charmonizer\Probe\SymbolVisibility.h src\Charmonizer\Probe\UnusedVars.h
src\Charmonizer\Probe\VariadicMacros.h src\Charmonizer\Test.h
CLEANABLE= $(OBJS) $(PROGNAME) $(TEST_OBJS) $(TESTS) *.pdb
Modified: lucy/trunk/charmonizer/Makefile.MinGW
URL:
http://svn.apache.org/viewvc/lucy/trunk/charmonizer/Makefile.MinGW?rev=1394633&r1=1394632&r2=1394633&view=diff
==============================================================================
--- lucy/trunk/charmonizer/Makefile.MinGW (original)
+++ lucy/trunk/charmonizer/Makefile.MinGW Fri Oct 5 16:45:43 2012
@@ -26,11 +26,13 @@ PERL=/usr/bin/perl
TESTS= TestDirManip.exe TestFuncMacro.exe TestHeaders.exe TestIntegers.exe
TestLargeFiles.exe TestUnusedVars.exe TestVariadicMacros.exe
-OBJS= charmonize.o src\Charmonizer\Core\Compiler.o
src\Charmonizer\Core\ConfWriter.o src\Charmonizer\Core\ConfWriterC.o
src\Charmonizer\Core\ConfWriterPerl.o src\Charmonizer\Core\HeaderChecker.o
src\Charmonizer\Core\OperatingSystem.o src\Charmonizer\Core\Util.o
src\Charmonizer\Probe.o src\Charmonizer\Probe\AtomicOps.o
src\Charmonizer\Probe\DirManip.o src\Charmonizer\Probe\Floats.o
src\Charmonizer\Probe\FuncMacro.o src\Charmonizer\Probe\Headers.o
src\Charmonizer\Probe\Integers.o src\Charmonizer\Probe\LargeFiles.o
src\Charmonizer\Probe\Memory.o src\Charmonizer\Probe\SymbolVisibility.o
src\Charmonizer\Probe\UnusedVars.o src\Charmonizer\Probe\VariadicMacros.o
+OBJS= charmonize.o src\Charmonizer\Core\Compiler.o
+src\Charmonizer\Core\ConfWriter.o src\Charmonizer\Core\ConfWriterC.o
src\Charmonizer\Core\ConfWriterPerl.o src\Charmonizer\Core\ConfWriterRuby.o
src\Charmonizer\Core\HeaderChecker.o src\Charmonizer\Core\OperatingSystem.o
src\Charmonizer\Core\Util.o src\Charmonizer\Probe.o
src\Charmonizer\Probe\AtomicOps.o src\Charmonizer\Probe\DirManip.o
src\Charmonizer\Probe\Floats.o src\Charmonizer\Probe\FuncMacro.o
src\Charmonizer\Probe\Headers.o src\Charmonizer\Probe\Integers.o
src\Charmonizer\Probe\LargeFiles.o src\Charmonizer\Probe\Memory.o
src\Charmonizer\Probe\SymbolVisibility.o src\Charmonizer\Probe\UnusedVars.o
src\Charmonizer\Probe\VariadicMacros.o
TEST_OBJS= src\Charmonizer\Test.o src\Charmonizer\Test\TestDirManip.o
src\Charmonizer\Test\TestFuncMacro.o src\Charmonizer\Test\TestHeaders.o
src\Charmonizer\Test\TestIntegers.o src\Charmonizer\Test\TestLargeFiles.o
src\Charmonizer\Test\TestUnusedVars.o src\Charmonizer\Test\TestVariadicMacros.o
-HEADERS= src\Charmonizer\Core\Compiler.h src\Charmonizer\Core\ConfWriter.h
src\Charmonizer\Core\ConfWriterC.h src\Charmonizer\Core\ConfWriterPerl.h
src\Charmonizer\Core\Defines.h src\Charmonizer\Core\HeaderChecker.h
src\Charmonizer\Core\OperatingSystem.h src\Charmonizer\Core\Util.h
src\Charmonizer\Probe.h src\Charmonizer\Probe\AtomicOps.h
src\Charmonizer\Probe\DirManip.h src\Charmonizer\Probe\Floats.h
src\Charmonizer\Probe\FuncMacro.h src\Charmonizer\Probe\Headers.h
src\Charmonizer\Probe\Integers.h src\Charmonizer\Probe\LargeFiles.h
src\Charmonizer\Probe\Memory.h src\Charmonizer\Probe\SymbolVisibility.h
src\Charmonizer\Probe\UnusedVars.h src\Charmonizer\Probe\VariadicMacros.h
src\Charmonizer\Test.h
+HEADERS= src\Charmonizer\Core\Compiler.h src\Charmonizer\Core\ConfWriter.h
+src\Charmonizer\Core\ConfWriterC.h src\Charmonizer\Core\ConfWriterPerl.h
src\Charmonizer\Core\ConfWriterRuby.h src\Charmonizer\Core\Defines.h
src\Charmonizer\Core\HeaderChecker.h src\Charmonizer\Core\OperatingSystem.h
src\Charmonizer\Core\Util.h src\Charmonizer\Probe.h
src\Charmonizer\Probe\AtomicOps.h src\Charmonizer\Probe\DirManip.h
src\Charmonizer\Probe\Floats.h src\Charmonizer\Probe\FuncMacro.h
src\Charmonizer\Probe\Headers.h src\Charmonizer\Probe\Integers.h
src\Charmonizer\Probe\LargeFiles.h src\Charmonizer\Probe\Memory.h
src\Charmonizer\Probe\SymbolVisibility.h src\Charmonizer\Probe\UnusedVars.h
src\Charmonizer\Probe\VariadicMacros.h src\Charmonizer\Test.h
CLEANABLE= $(OBJS) $(PROGNAME) $(TEST_OBJS) $(TESTS)
Modified: lucy/trunk/charmonizer/buildbin/meld.pl
URL:
http://svn.apache.org/viewvc/lucy/trunk/charmonizer/buildbin/meld.pl?rev=1394633&r1=1394632&r2=1394633&view=diff
==============================================================================
--- lucy/trunk/charmonizer/buildbin/meld.pl (original)
+++ lucy/trunk/charmonizer/buildbin/meld.pl Fri Oct 5 16:45:43 2012
@@ -66,6 +66,7 @@ my @core = qw(
ConfWriter
ConfWriterC
ConfWriterPerl
+ ConfWriterRuby
HeaderChecker
OperatingSystem
Util
Modified: lucy/trunk/charmonizer/charmonize.c
URL:
http://svn.apache.org/viewvc/lucy/trunk/charmonizer/charmonize.c?rev=1394633&r1=1394632&r2=1394633&view=diff
==============================================================================
--- lucy/trunk/charmonizer/charmonize.c (original)
+++ lucy/trunk/charmonizer/charmonize.c Fri Oct 5 16:45:43 2012
@@ -36,6 +36,7 @@
#include "Charmonizer/Core/ConfWriter.h"
#include "Charmonizer/Core/ConfWriterC.h"
#include "Charmonizer/Core/ConfWriterPerl.h"
+#include "Charmonizer/Core/ConfWriterRuby.h"
#define MAX_CC_LEN 128
#define MAX_FLAGS_LEN 2048
@@ -45,6 +46,7 @@ struct CLIArgs {
char cc_flags[MAX_FLAGS_LEN + 1];
int enable_c;
int enable_perl;
+ int enable_ruby;
};
/* Parse command line arguments. */
@@ -69,6 +71,10 @@ S_parse_arguments(int argc, char **argv,
args->enable_perl = 1;
output_enabled = 1;
}
+ else if (strcmp(arg, "--enable-ruby") == 0) {
+ args->enable_ruby = 1;
+ output_enabled = 1;
+ }
else if (memcmp(arg, "--cc=", 5) == 0) {
if (strlen(arg) > MAX_CC_LEN - 5) {
fprintf(stderr, "Exceeded max length for compiler command");
@@ -97,7 +103,7 @@ S_parse_arguments(int argc, char **argv,
) {
fprintf(stderr,
"Usage: ./charmonize --cc=CC_COMMAND [--enable-c] "
- "[--enable-perl] -- CC_FLAGS\n");
+ "[--enable-perl] [--enable-ruby] -- CC_FLAGS\n");
exit(1);
}
@@ -115,6 +121,9 @@ int main(int argc, char **argv) {
if (args.enable_perl) {
chaz_ConfWriterPerl_enable();
}
+ if (args.enable_ruby) {
+ chaz_ConfWriterRuby_enable();
+ }
/* Run probe modules. */
chaz_DirManip_run();
Added: lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriterRuby.c
URL:
http://svn.apache.org/viewvc/lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriterRuby.c?rev=1394633&view=auto
==============================================================================
--- lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriterRuby.c (added)
+++ lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriterRuby.c Fri Oct 5
16:45:43 2012
@@ -0,0 +1,206 @@
+/* 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.
+ */
+
+#define CHAZ_USE_SHORT_NAMES
+#define CHAZ_CONFWRITER_INTERNAL
+
+#include "Charmonizer/Core/Util.h"
+#include "Charmonizer/Core/ConfWriter.h"
+#include "Charmonizer/Core/ConfWriterRuby.h"
+#include <errno.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Static vars. */
+static FILE *config_rb_fh = NULL;
+static ConfWriter CWRuby_conf_writer;
+
+/* Open the Charmony.rb file handle.
+ */
+static void
+S_open_config_rb(void);
+
+static void
+S_ConfWriterRuby_clean_up(void);
+static void
+S_ConfWriterRuby_vappend_conf(const char *fmt, va_list args);
+static void
+S_ConfWriterRuby_add_def(const char *sym, const char *value);
+static void
+S_ConfWriterRuby_add_typedef(const char *type, const char *alias);
+static void
+S_ConfWriterRuby_add_sys_include(const char *header);
+static void
+S_ConfWriterRuby_add_local_include(const char *header);
+static void
+S_ConfWriterRuby_start_module(const char *module_name);
+static void
+S_ConfWriterRuby_end_module(void);
+
+void
+ConfWriterRuby_enable(void) {
+ CWRuby_conf_writer.clean_up = S_ConfWriterRuby_clean_up;
+ CWRuby_conf_writer.vappend_conf = S_ConfWriterRuby_vappend_conf;
+ CWRuby_conf_writer.add_def = S_ConfWriterRuby_add_def;
+ CWRuby_conf_writer.add_typedef = S_ConfWriterRuby_add_typedef;
+ CWRuby_conf_writer.add_sys_include = S_ConfWriterRuby_add_sys_include;
+ CWRuby_conf_writer.add_local_include = S_ConfWriterRuby_add_local_include;
+ CWRuby_conf_writer.start_module = S_ConfWriterRuby_start_module;
+ CWRuby_conf_writer.end_module = S_ConfWriterRuby_end_module;
+ S_open_config_rb();
+ ConfWriter_add_writer(&CWRuby_conf_writer);
+ return;
+}
+
+static void
+S_open_config_rb(void) {
+ /* Open the filehandle. */
+ config_rb_fh = fopen("Charmony.rb", "w+");
+ if (config_rb_fh == NULL) {
+ Util_die("Can't open 'Charmony.rb': %s", strerror(errno));
+ }
+
+ /* Start the module. */
+ fprintf(config_rb_fh,
+ "# Auto-generated by Charmonizer. \n"
+ "# DO NOT EDIT THIS FILE!!\n"
+ "\n"
+ "module Charmony\n"
+ "\n"
+ "%%defs\n"
+ "\n"
+ "def config\n\\%%defs\nend\n"
+ "\n"
+ );
+}
+
+static void
+S_ConfWriterRuby_clean_up(void) {
+ /* Write the last bit of Charmony.rb and close. */
+ fprintf(config_rb_fh, "\nend\n\n");
+ if (fclose(config_rb_fh)) {
+ Util_die("Couldn't close 'Charmony.rb': %s", strerror(errno));
+ }
+}
+
+static void
+S_ConfWriterRuby_vappend_conf(const char *fmt, va_list args) {
+ (void)fmt;
+ (void)args;
+}
+
+static char*
+S_ConfWriterRuby_quotify(const char *string, char *buf, size_t buf_size) {
+ char *quoted = buf;
+
+ /* Don't bother with undef values here. */
+ if (!string) {
+ return NULL;
+ }
+
+ /* Allocate memory if necessary. */
+ {
+ const char *ptr;
+ size_t space = 3; /* Quotes plus NUL termination. */
+ for (ptr = string; *ptr; ptr++) {
+ if (*ptr == '\'' || *ptr == '\\') {
+ space += 2;
+ }
+ else {
+ space += 1;
+ }
+ }
+ if (space > buf_size) {
+ quoted = (char*)malloc(space);
+ }
+ }
+
+ /* Perform copying and escaping */
+ {
+ const char *ptr;
+ size_t pos = 0;
+ quoted[pos++] = '\'';
+ for (ptr = string; *ptr; ptr++) {
+ if (*ptr == '\'' || *ptr == '\\') {
+ quoted[pos++] = '\\';
+ }
+ quoted[pos++] = *ptr;
+ }
+ quoted[pos++] = '\'';
+ quoted[pos++] = '\0';
+ }
+
+ return quoted;
+}
+
+#define CFRUBY_MAX_BUF 100
+static void
+S_ConfWriterRuby_add_def(const char *sym, const char *value) {
+ char sym_buf[CFRUBY_MAX_BUF + 1];
+ char value_buf[CFRUBY_MAX_BUF + 1];
+ char *quoted_sym;
+ char *quoted_value;
+
+ /* Quote key. */
+ if (!sym) {
+ Util_die("Can't handle NULL key");
+ }
+ quoted_sym = S_ConfWriterRuby_quotify(sym, sym_buf, CFRUBY_MAX_BUF);
+
+ /* Quote value or use "undef". */
+ if (!value) {
+ strcpy(value_buf, "undef");
+ quoted_value = value_buf;
+ }
+ else {
+ quoted_value = S_ConfWriterRuby_quotify(value, value_buf,
+ CFRUBY_MAX_BUF);
+ }
+
+ fprintf(config_rb_fh, "defs[%s] = %s\n", quoted_sym, quoted_value);
+
+ if (quoted_sym != sym_buf) { free(quoted_sym); }
+ if (quoted_value != value_buf) { free(quoted_value); }
+}
+
+static void
+S_ConfWriterRuby_add_typedef(const char *type, const char *alias) {
+ (void)type;
+ (void)alias;
+}
+
+static void
+S_ConfWriterRuby_add_sys_include(const char *header) {
+ (void)header;
+}
+
+static void
+S_ConfWriterRuby_add_local_include(const char *header) {
+ (void)header;
+}
+
+static void
+S_ConfWriterRuby_start_module(const char *module_name) {
+ fprintf(config_rb_fh, "# %s\n", module_name);
+}
+
+static void
+S_ConfWriterRuby_end_module(void) {
+ fprintf(config_rb_fh, "\n");
+}
+
Added: lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriterRuby.h
URL:
http://svn.apache.org/viewvc/lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriterRuby.h?rev=1394633&view=auto
==============================================================================
--- lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriterRuby.h (added)
+++ lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriterRuby.h Fri Oct 5
16:45:43 2012
@@ -0,0 +1,41 @@
+/* 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.
+ */
+
+/* Charmonizer/Core/ConfWriterRuby.h -- Write to a Ruby module file.
+ */
+
+#ifndef H_CHAZ_CONFWRITERRUBY
+#define H_CHAZ_CONFWRITERRUBY 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Enable writing config to a Ruby module file.
+ */
+void
+chaz_ConfWriterRuby_enable(void);
+
+#ifdef CHAZ_USE_SHORT_NAMES
+ #define ConfWriterRuby_enable chaz_ConfWriterRuby_enable
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* H_CHAZ_CONFWRITERRUBY */
+