avro-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bru...@apache.org
Subject svn commit: r947962 - in /avro/trunk/lang/c: ./ examples/ src/ tests/ tests/linux/ tests/windows/
Date Tue, 25 May 2010 08:40:25 GMT
Author: brucem
Date: Tue May 25 08:40:25 2010
New Revision: 947962

URL: http://svn.apache.org/viewvc?rev=947962&view=rev
Log:
AVRO-552: Fix build issues for Windows. Still needs Jansson to be fixed or replaced.

Added:
    avro/trunk/lang/c/src/config.h
    avro/trunk/lang/c/src/types.h
    avro/trunk/lang/c/tests/dir_iterator.h
      - copied, changed from r947795, avro/trunk/lang/c/src/dump.h
    avro/trunk/lang/c/tests/linux/
    avro/trunk/lang/c/tests/linux/dir_iterator.c
    avro/trunk/lang/c/tests/windows/
    avro/trunk/lang/c/tests/windows/dir_iterator.c
Modified:
    avro/trunk/lang/c/CMakeLists.txt
    avro/trunk/lang/c/examples/quickstop.c
    avro/trunk/lang/c/src/CMakeLists.txt
    avro/trunk/lang/c/src/avro.h
    avro/trunk/lang/c/src/datafile.c
    avro/trunk/lang/c/src/datum.c
    avro/trunk/lang/c/src/dump.h
    avro/trunk/lang/c/src/encoding_binary.c
    avro/trunk/lang/c/src/io.c
    avro/trunk/lang/c/src/schema.c
    avro/trunk/lang/c/src/st.h
    avro/trunk/lang/c/tests/CMakeLists.txt
    avro/trunk/lang/c/tests/generate_interop_data.c
    avro/trunk/lang/c/tests/test_avro_data.c
    avro/trunk/lang/c/tests/test_avro_schema.c

Modified: avro/trunk/lang/c/CMakeLists.txt
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/CMakeLists.txt?rev=947962&r1=947961&r2=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/CMakeLists.txt (original)
+++ avro/trunk/lang/c/CMakeLists.txt Tue May 25 08:40:25 2010
@@ -36,6 +36,8 @@ add_subdirectory(src)
 add_subdirectory(examples)
 add_subdirectory(tests)
 
+if(NOT WIN32)
 add_custom_target(pretty
     "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_SOURCE_DIR}/cmake_pretty.cmake")
+endif()
 

Modified: avro/trunk/lang/c/examples/quickstop.c
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/examples/quickstop.c?rev=947962&r1=947961&r2=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/examples/quickstop.c (original)
+++ avro/trunk/lang/c/examples/quickstop.c Tue May 25 08:40:25 2010
@@ -19,7 +19,9 @@
 #include <inttypes.h>
 #include <stdio.h>
 #include <stdlib.h>
+#ifndef WIN32
 #include <unistd.h>
+#endif
 
 avro_schema_t person_schema;
 int64_t id = 0;

Modified: avro/trunk/lang/c/src/CMakeLists.txt
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/src/CMakeLists.txt?rev=947962&r1=947961&r2=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/src/CMakeLists.txt (original)
+++ avro/trunk/lang/c/src/CMakeLists.txt Tue May 25 08:40:25 2010
@@ -26,6 +26,7 @@ set(AVRO_SRC
     avro.c
     avro.h
     avro_private.h
+    config.h
     datafile.c
     datum.c
     datum.h
@@ -45,6 +46,7 @@ set(AVRO_SRC
     schema_equal.c
     st.c
     st.h
+    types.h
 )
 
 set(JANSSON_SRC
@@ -67,15 +69,24 @@ source_group(Jansson FILES ${JANSSON_SRC
 
 add_library(avro-static STATIC ${AVRO_SRC} ${JANSSON_SRC})
 set_target_properties(avro-static PROPERTIES OUTPUT_NAME avro)
+
 add_library(avro-shared SHARED ${AVRO_SRC} ${JANSSON_SRC})
 set_target_properties(avro-shared PROPERTIES
-        OUTPUT_NAME avro
-        SOVERSION ${AVRO_VERSION})
+    OUTPUT_NAME avro
+    SOVERSION ${AVRO_VERSION}
+)
 
+if(MSVC)
+    set_target_properties(avro-static avro-shared PROPERTIES
+        COMPILE_DEFINITIONS "_CRT_SECURE_NO_WARNINGS"
+    )
+endif()
+
+if(NOT WIN32)
 install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/avro.h DESTINATION include)
 install(TARGETS avro-static avro-shared
         RUNTIME DESTINATION bin
         LIBRARY DESTINATION lib
         ARCHIVE DESTINATION lib
 )
-
+endif()

Modified: avro/trunk/lang/c/src/avro.h
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/src/avro.h?rev=947962&r1=947961&r2=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/src/avro.h (original)
+++ avro/trunk/lang/c/src/avro.h Tue May 25 08:40:25 2010
@@ -24,7 +24,7 @@ extern "C" {
 #endif
 
 #include <stdio.h>
-#include <stdint.h>
+#include "types.h"
 
 typedef int32_t avro_atom_t;
 
@@ -201,7 +201,7 @@ avro_datum_t avro_givefixed(const char *
 			    const int64_t size);
 avro_datum_t avro_map(void);
 avro_datum_t avro_array(void);
-avro_datum_t avro_union(int64_t discriminant, const avro_datum_t datum);
+avro_datum_t avro_union(int64_t discriminant, avro_datum_t datum);
 
 /* getters */
 int avro_string_get(avro_datum_t datum, char **p);
@@ -255,7 +255,7 @@ void avro_datum_decref(avro_datum_t valu
 
 void avro_datum_print(avro_datum_t value, FILE * fp);
 
-int avro_datum_equal(avro_datum_t a, avro_datum_t b);
+int avro_datum_equal(const avro_datum_t a, const avro_datum_t b);
 
 int avro_schema_match(avro_schema_t writers_schema,
 		      avro_schema_t readers_schema);

Added: avro/trunk/lang/c/src/config.h
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/src/config.h?rev=947962&view=auto
==============================================================================
--- avro/trunk/lang/c/src/config.h (added)
+++ avro/trunk/lang/c/src/config.h Tue May 25 08:40:25 2010
@@ -0,0 +1,14 @@
+#ifndef AVRO_CONFIG_H
+#define AVRO_CONFIG_H
+
+#ifdef WIN32
+
+// MSVC doesn't support C99, hence inline is not recognized as a keyword,
+// so we need to use the MSVC specific __inline instead.
+#define inline __inline
+
+#define snprintf _snprintf
+
+#endif // WIN32
+
+#endif // AVRO_CONFIG_H

Modified: avro/trunk/lang/c/src/datafile.c
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/src/datafile.c?rev=947962&r1=947961&r2=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/src/datafile.c (original)
+++ avro/trunk/lang/c/src/datafile.c Tue May 25 08:40:25 2010
@@ -109,7 +109,11 @@ file_writer_init_fp(const char *path, co
 static int
 file_writer_create(const char *path, avro_schema_t schema, avro_file_writer_t w)
 {
+#ifdef WIN32
+	int rval = file_writer_init_fp(path, "w", w);
+#else
 	int rval = file_writer_init_fp(path, "wx", w);
+#endif
 	if (rval) {
 		check(rval, file_writer_init_fp(path, "w", w));
 	}

Modified: avro/trunk/lang/c/src/datum.c
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/src/datum.c?rev=947962&r1=947961&r2=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/src/datum.c (original)
+++ avro/trunk/lang/c/src/datum.c Tue May 25 08:40:25 2010
@@ -379,9 +379,9 @@ int avro_boolean_get(avro_datum_t datum,
 avro_datum_t avro_null(void)
 {
 	static struct avro_obj_t obj = {
-		.type = AVRO_NULL,
-		.class_type = AVRO_DATUM,
-		.refcount = 1
+		AVRO_NULL,  // type
+		AVRO_DATUM, // class_type
+		1           // refcount
 	};
 	return &obj;
 }

Modified: avro/trunk/lang/c/src/dump.h
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/src/dump.h?rev=947962&r1=947961&r2=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/src/dump.h (original)
+++ avro/trunk/lang/c/src/dump.h Tue May 25 08:40:25 2010
@@ -19,7 +19,7 @@
 #define DUMP_H
 
 #include <stdio.h>
-#include <sys/types.h>
+#include "types.h"
 
 void dump(FILE * out, const caddr_t addr, const long len);
 

Modified: avro/trunk/lang/c/src/encoding_binary.c
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/src/encoding_binary.c?rev=947962&r1=947961&r2=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/src/encoding_binary.c (original)
+++ avro/trunk/lang/c/src/encoding_binary.c Tue May 25 08:40:25 2010
@@ -22,7 +22,7 @@
 #include <limits.h>
 #include <errno.h>
 #include <string.h>
-#include <sys/types.h>
+#include "types.h"
 
 #define MAX_VARINT_BUF_SIZE 10
 
@@ -78,8 +78,6 @@ static int write_long(avro_writer_t writ
 
 static int64_t size_long(avro_writer_t writer, int64_t l)
 {
-	AVRO_UNUSED(writer);
-
 	int64_t len = 0;
 	uint64_t n = (l << 1) ^ (l >> 63);
 	while (n & ~0x7F) {
@@ -87,6 +85,9 @@ static int64_t size_long(avro_writer_t w
 		n >>= 7;
 	}
 	len++;
+
+	AVRO_UNUSED(writer);
+
 	return len;
 }
 
@@ -372,61 +373,61 @@ static int64_t size_null(avro_writer_t w
 }
 
 const avro_encoding_t avro_binary_encoding = {
-	.description = "BINARY FORMAT",
+	"BINARY FORMAT",
 	/*
 	 * string 
 	 */
-	.read_string = read_string,
-	.skip_string = skip_string,
-	.write_string = write_string,
-	.size_string = size_string,
+	read_string,
+	skip_string,
+	write_string,
+	size_string,
 	/*
 	 * bytes 
 	 */
-	.read_bytes = read_bytes,
-	.skip_bytes = skip_bytes,
-	.write_bytes = write_bytes,
-	.size_bytes = size_bytes,
+	read_bytes,
+	skip_bytes,
+	write_bytes,
+	size_bytes,
 	/*
 	 * int 
 	 */
-	.read_int = read_int,
-	.skip_int = skip_int,
-	.write_int = write_int,
-	.size_int = size_int,
+	read_int,
+	skip_int,
+	write_int,
+	size_int,
 	/*
 	 * long 
 	 */
-	.read_long = read_long,
-	.skip_long = skip_long,
-	.write_long = write_long,
-	.size_long = size_long,
+	read_long,
+	skip_long,
+	write_long,
+	size_long,
 	/*
 	 * float 
 	 */
-	.read_float = read_float,
-	.skip_float = skip_float,
-	.write_float = write_float,
-	.size_float = size_float,
+	read_float,
+	skip_float,
+	write_float,
+	size_float,
 	/*
 	 * double 
 	 */
-	.read_double = read_double,
-	.skip_double = skip_double,
-	.write_double = write_double,
-	.size_double = size_double,
+	read_double,
+	skip_double,
+	write_double,
+	size_double,
 	/*
 	 * boolean 
 	 */
-	.read_boolean = read_boolean,
-	.skip_boolean = skip_boolean,
-	.write_boolean = write_boolean,
-	.size_boolean = size_boolean,
+	read_boolean,
+	skip_boolean,
+	write_boolean,
+	size_boolean,
 	/*
 	 * null 
 	 */
-	.read_null = read_skip_null,
-	.skip_null = read_skip_null,
-	.write_null = write_null,
-	.size_null = size_null
+	read_skip_null,
+	read_skip_null,
+	write_null,
+	size_null
 };

Modified: avro/trunk/lang/c/src/io.c
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/src/io.c?rev=947962&r1=947961&r2=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/src/io.c (original)
+++ avro/trunk/lang/c/src/io.c Tue May 25 08:40:25 2010
@@ -160,7 +160,7 @@ static int
 avro_read_file(struct _avro_reader_file_t *reader, void *buf, int64_t len)
 {
 	int64_t needed = len;
-	void *p = buf;
+	char *p = buf;
 	int rval;
 
 	if (len == 0) {

Modified: avro/trunk/lang/c/src/schema.c
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/src/schema.c?rev=947962&r1=947961&r2=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/src/schema.c (original)
+++ avro/trunk/lang/c/src/schema.c Tue May 25 08:40:25 2010
@@ -15,6 +15,7 @@
  * permissions and limitations under the License. 
  */
 
+#include "config.h"
 #include "avro_private.h"
 #include <inttypes.h>
 #include <stdlib.h>
@@ -198,9 +199,9 @@ void avro_schema_decref(avro_schema_t sc
 avro_schema_t avro_schema_string(void)
 {
 	static struct avro_obj_t obj = {
-		.type = AVRO_STRING,
-		.class_type = AVRO_SCHEMA,
-		.refcount = 1
+		AVRO_STRING, // type
+		AVRO_SCHEMA, // class_type
+		1            // refcount
 	};
 	return &obj;
 }
@@ -208,9 +209,9 @@ avro_schema_t avro_schema_string(void)
 avro_schema_t avro_schema_bytes(void)
 {
 	static struct avro_obj_t obj = {
-		.type = AVRO_BYTES,
-		.class_type = AVRO_SCHEMA,
-		.refcount = 1
+		AVRO_BYTES,  // type
+		AVRO_SCHEMA, // class_type
+		1            // refcount
 	};
 	return &obj;
 }
@@ -218,9 +219,9 @@ avro_schema_t avro_schema_bytes(void)
 avro_schema_t avro_schema_int(void)
 {
 	static struct avro_obj_t obj = {
-		.type = AVRO_INT32,
-		.class_type = AVRO_SCHEMA,
-		.refcount = 1
+		AVRO_INT32,  // type
+		AVRO_SCHEMA, // class_type
+		1            // refcount
 	};
 	return &obj;
 }
@@ -228,9 +229,9 @@ avro_schema_t avro_schema_int(void)
 avro_schema_t avro_schema_long(void)
 {
 	static struct avro_obj_t obj = {
-		.type = AVRO_INT64,
-		.class_type = AVRO_SCHEMA,
-		.refcount = 1
+		AVRO_INT64,  // type
+		AVRO_SCHEMA, // class_type
+		1            // refcount
 	};
 	return &obj;
 }
@@ -238,9 +239,9 @@ avro_schema_t avro_schema_long(void)
 avro_schema_t avro_schema_float(void)
 {
 	static struct avro_obj_t obj = {
-		.type = AVRO_FLOAT,
-		.class_type = AVRO_SCHEMA,
-		.refcount = 1
+		AVRO_FLOAT,  // type
+		AVRO_SCHEMA, // class_type
+		1            // refcount
 	};
 	return &obj;
 }
@@ -248,9 +249,9 @@ avro_schema_t avro_schema_float(void)
 avro_schema_t avro_schema_double(void)
 {
 	static struct avro_obj_t obj = {
-		.type = AVRO_DOUBLE,
-		.class_type = AVRO_SCHEMA,
-		.refcount = 1
+		AVRO_DOUBLE, // type
+		AVRO_SCHEMA, // class_type
+		1            // refcount
 	};
 	return &obj;
 }
@@ -258,9 +259,9 @@ avro_schema_t avro_schema_double(void)
 avro_schema_t avro_schema_boolean(void)
 {
 	static struct avro_obj_t obj = {
-		.type = AVRO_BOOLEAN,
-		.class_type = AVRO_SCHEMA,
-		.refcount = 1
+		AVRO_BOOLEAN, // type
+		AVRO_SCHEMA,  // class_type
+		1             // refcount
 	};
 	return &obj;
 }
@@ -268,9 +269,9 @@ avro_schema_t avro_schema_boolean(void)
 avro_schema_t avro_schema_null(void)
 {
 	static struct avro_obj_t obj = {
-		.type = AVRO_NULL,
-		.class_type = AVRO_SCHEMA,
-		.refcount = 1
+		AVRO_NULL,   // type
+		AVRO_SCHEMA, // class_type
+		1            // refcount
 	};
 	return &obj;
 }
@@ -921,9 +922,9 @@ avro_schema_t avro_schema_copy(avro_sche
 					st_data_t data;
 					struct avro_record_field_t *field;
 				} val;
+				avro_schema_t type_copy;
 				st_lookup(record_schema->fields, i, &val.data);
-				avro_schema_t type_copy =
-				    avro_schema_copy(val.field->type);
+				type_copy = avro_schema_copy(val.field->type);
 				// FIXME: Remove avro_atom_to_string() here.
 				avro_schema_record_field_append(new_schema,
 								avro_atom_to_string(val.field->name),

Modified: avro/trunk/lang/c/src/st.h
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/src/st.h?rev=947962&r1=947961&r2=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/src/st.h (original)
+++ avro/trunk/lang/c/src/st.h Tue May 25 08:40:25 2010
@@ -10,7 +10,7 @@
 #ifndef ST_INCLUDED
 #define ST_INCLUDED
 
-#include <stdint.h>		/* for uintptr_t */
+#include "types.h"	/* for uintptr_t */
 
 typedef uintptr_t st_data_t;
 typedef struct st_table st_table;

Added: avro/trunk/lang/c/src/types.h
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/src/types.h?rev=947962&view=auto
==============================================================================
--- avro/trunk/lang/c/src/types.h (added)
+++ avro/trunk/lang/c/src/types.h Tue May 25 08:40:25 2010
@@ -0,0 +1,24 @@
+#ifndef AVRO_TYPES_H
+#define AVRO_TYPES_H
+
+#ifdef WIN32
+
+typedef signed __int8  int8_t;
+typedef signed __int16 int16_t;
+typedef signed __int32 int32_t;
+typedef signed __int64 int64_t;
+
+typedef unsigned __int8  uint8_t;
+typedef unsigned __int16 uint16_t;
+typedef unsigned __int32 uint32_t;
+typedef unsigned __int64 uint64_t;
+
+typedef char* caddr_t;
+
+#else // if not WIN32
+#include <stdint.h>
+#include <sys/types.h>
+#endif // WIN32
+
+#endif // AVRO_TYPES_H
+

Modified: avro/trunk/lang/c/tests/CMakeLists.txt
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/tests/CMakeLists.txt?rev=947962&r1=947961&r2=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/tests/CMakeLists.txt (original)
+++ avro/trunk/lang/c/tests/CMakeLists.txt Tue May 25 08:40:25 2010
@@ -22,7 +22,19 @@ target_link_libraries(generate_interop_d
 add_executable(test_interop_data test_interop_data.c)
 target_link_libraries(test_interop_data avro-static)
 
-add_executable(test_avro_schema test_avro_schema.c)
+if(WIN32)
+    add_executable(test_avro_schema
+        test_avro_schema.c
+        dir_iterator.h
+        windows/dir_iterator.c
+    )
+else()
+    add_executable(test_avro_schema
+        test_avro_schema.c
+        dir_iterator.h
+        linux/dir_iterator.c
+    )
+endif()
 target_link_libraries(test_avro_schema avro-static)
 add_test(test_avro_schema ${CMAKE_COMMAND} -E chdir ${AvroC_SOURCE_DIR}/tests ${CMAKE_CURRENT_BINARY_DIR}/test_avro_schema)
 

Copied: avro/trunk/lang/c/tests/dir_iterator.h (from r947795, avro/trunk/lang/c/src/dump.h)
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/tests/dir_iterator.h?p2=avro/trunk/lang/c/tests/dir_iterator.h&p1=avro/trunk/lang/c/src/dump.h&r1=947795&r2=947962&rev=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/src/dump.h (original)
+++ avro/trunk/lang/c/tests/dir_iterator.h Tue May 25 08:40:25 2010
@@ -15,12 +15,9 @@
  * permissions and limitations under the License. 
  */
 
-#ifndef DUMP_H
-#define DUMP_H
+typedef struct dir_iterator_t_* dir_iterator_t;
 
-#include <stdio.h>
-#include <sys/types.h>
-
-void dump(FILE * out, const caddr_t addr, const long len);
-
-#endif
+dir_iterator_t dir_iterator_new(char *dir_path);
+void           dir_iterator_destroy(dir_iterator_t dir);
+int            dir_iterator_next(dir_iterator_t dir);
+const char*    dir_iterator_value(dir_iterator_t dir);

Modified: avro/trunk/lang/c/tests/generate_interop_data.c
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/tests/generate_interop_data.c?rev=947962&r1=947961&r2=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/tests/generate_interop_data.c (original)
+++ avro/trunk/lang/c/tests/generate_interop_data.c Tue May 25 08:40:25 2010
@@ -18,7 +18,7 @@
 #include "avro_private.h"
 #include <stdio.h>
 #include <stdlib.h>
-#include <unistd.h>
+#include "config.h"
 
 struct atom_holder {
 	avro_atom_t arrayField;

Added: avro/trunk/lang/c/tests/linux/dir_iterator.c
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/tests/linux/dir_iterator.c?rev=947962&view=auto
==============================================================================
--- avro/trunk/lang/c/tests/linux/dir_iterator.c (added)
+++ avro/trunk/lang/c/tests/linux/dir_iterator.c Tue May 25 08:40:25 2010
@@ -0,0 +1,62 @@
+/*
+ * 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. 
+ */
+
+#include "avro_private.h"
+#include "../dir_iterator.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <dirent.h>
+
+struct dir_iterator_t_
+{
+	DIR *dir;
+	struct dirent *dent;
+};
+
+dir_iterator_t dir_iterator_new(char *dir_path)
+{
+	dir_iterator_t dir = (dir_iterator_t)malloc(sizeof(struct dir_iterator_t_));
+	if (dir)
+	{
+		dir->dir = opendir(dir_path);
+	}
+	return dir;
+}
+
+void dir_iterator_destroy(dir_iterator_t dir)
+{
+	free(dir);
+}
+
+int dir_iterator_next(dir_iterator_t dir)
+{
+	dir->dent = readdir(dir->dir);
+	if (!dir->dent)
+	{
+		return 0;
+	}
+	else
+	{
+		return 1;
+	}
+}
+
+const char* dir_iterator_value(dir_iterator_t dir)
+{
+	return dir->dent->d_name;
+}

Modified: avro/trunk/lang/c/tests/test_avro_data.c
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/tests/test_avro_data.c?rev=947962&r1=947961&r2=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/tests/test_avro_data.c (original)
+++ avro/trunk/lang/c/tests/test_avro_data.c Tue May 25 08:40:25 2010
@@ -55,6 +55,7 @@ write_read_check(avro_schema_t writers_s
 {
 	avro_datum_t datum_out;
 	int validate;
+	int64_t size;
 
 	for (validate = 0; validate <= 1; validate++) {
 
@@ -68,7 +69,7 @@ write_read_check(avro_schema_t writers_s
 				type, validate);
 			exit(EXIT_FAILURE);
 		}
-		int64_t size =
+		size =
 		    avro_size_data(writer, validate ? writers_schema : NULL,
 				   datum);
 		if (size != avro_writer_tell(writer)) {

Modified: avro/trunk/lang/c/tests/test_avro_schema.c
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/tests/test_avro_schema.c?rev=947962&r1=947961&r2=947962&view=diff
==============================================================================
--- avro/trunk/lang/c/tests/test_avro_schema.c (original)
+++ avro/trunk/lang/c/tests/test_avro_schema.c Tue May 25 08:40:25 2010
@@ -16,10 +16,11 @@
  */
 
 #include "avro_private.h"
+#include "config.h"
+#include "dir_iterator.h"
 #include <stdio.h>
 #include <stdlib.h>
-#include <sys/types.h>
-#include <dirent.h>
+#include <stdio.h>
 
 int test_cases = 0;
 avro_writer_t avro_stderr;
@@ -29,23 +30,23 @@ static void run_tests(char *dirpath, int
 	char jsontext[4096];
 	size_t jsonlen, rval;
 	char filepath[1024];
-	DIR *dir;
-	struct dirent *dent;
+	dir_iterator_t dir;
+	const char *dent;
 	FILE *fp;
 	avro_schema_t schema;
 	avro_schema_error_t avro_schema_error;
 
-	dir = opendir(dirpath);
+	dir = dir_iterator_new(dirpath);
 	if (dir == NULL) {
 		fprintf(stderr, "Unable to open '%s'\n", dirpath);
 		exit(EXIT_FAILURE);
 	}
-	do {
-		dent = readdir(dir);
-		if (dent && dent->d_name[0] != '.') {
+	while (dir_iterator_next(dir)) {
+		dent = dir_iterator_value(dir);
+		if (dent && dent[0] != '.') {
 			int test_rval;
 			snprintf(filepath, sizeof(filepath), "%s/%s", dirpath,
-				 dent->d_name);
+				 dent);
 			fprintf(stderr, "TEST %s...", filepath);
 			jsonlen = 0;
 			fp = fopen(filepath, "r");
@@ -94,7 +95,10 @@ static void run_tests(char *dirpath, int
 			}
 		}
 	}
-	while (dent != NULL);
+	if (NULL != dir)
+	{
+		dir_iterator_destroy(dir);
+	}
 }
 
 int main(int argc, char *argv[])

Added: avro/trunk/lang/c/tests/windows/dir_iterator.c
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c/tests/windows/dir_iterator.c?rev=947962&view=auto
==============================================================================
--- avro/trunk/lang/c/tests/windows/dir_iterator.c (added)
+++ avro/trunk/lang/c/tests/windows/dir_iterator.c Tue May 25 08:40:25 2010
@@ -0,0 +1,79 @@
+/*
+ * 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. 
+ */
+
+#include "../dir_iterator.h"
+#include "config.h"
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+#include <Windows.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+struct dir_iterator_t_
+{
+	HANDLE handle;
+	WIN32_FIND_DATA find_data;
+	char dir_path[MAX_PATH + 1];
+};
+
+dir_iterator_t dir_iterator_new(char *dir_path)
+{
+	dir_iterator_t dir = (dir_iterator_t)malloc(sizeof(struct dir_iterator_t_));
+	if (dir)
+	{
+		dir->handle = INVALID_HANDLE_VALUE;
+		strcpy(dir->dir_path, dir_path);
+	}
+	return dir;
+}
+
+void dir_iterator_destroy(dir_iterator_t dir)
+{
+	if (INVALID_HANDLE_VALUE != dir->handle)
+	{
+		FindClose(dir->handle);
+	}
+	free(dir);
+}
+
+int dir_iterator_next(dir_iterator_t dir)
+{
+	if (INVALID_HANDLE_VALUE == dir->handle)
+	{
+		char search_path[MAX_PATH + 1];
+		snprintf(search_path, sizeof(search_path), "%s/*", dir->dir_path);
+		dir->handle = FindFirstFile(search_path, &dir->find_data);
+		if (INVALID_HANDLE_VALUE == dir->handle)
+		{
+			return 0;
+		}
+	}
+	else
+	{
+		if (!FindNextFile(dir->handle, &dir->find_data))
+		{
+			return 0;
+		}
+	}
+	return 1;
+}
+
+const char* dir_iterator_value(dir_iterator_t dir)
+{
+	return dir->find_data.cFileName;
+}



Mime
View raw message