[med-svn] [libvistaio] 01/06: Imported Upstream version 1.2.19

Gert Wollny gert-guest at moszumanska.debian.org
Tue Nov 24 15:25:13 UTC 2015


This is an automated email from the git hooks/post-receive script.

gert-guest pushed a commit to branch master
in repository libvistaio.

commit 3abacb66596ca9bb85361fb1a6a2586e779521da
Author: Gert Wollny <gw.fossdev at gmail.com>
Date:   Tue Nov 24 16:10:05 2015 +0100

    Imported Upstream version 1.2.19
---
 .gitignore                              |   1 +
 .travis.yml                             |  29 +++++++
 CMakeLists.txt                          |  15 ++--
 ChangeLog                               |  10 +++
 README => README.md                     |  56 ++++++++----
 vistaio/CMakeLists.txt                  |   5 +-
 vistaio/alloc.c                         |   3 +-
 vistaio/edgesType.c                     |  12 ++-
 vistaio/fileio.c                        |  37 +++++---
 vistaio/graphType.c                     |   9 +-
 vistaio/imageType.c                     |   2 +-
 vistaio/option.c                        |   5 +-
 vistaio/{2dfield.c => test_2dfield.c}   |   0
 vistaio/{2dspline.c => test_2dspline.c} |   0
 vistaio/{3dfield.c => test_3dfield.c}   |   0
 vistaio/test_attributes.c               | 133 ++++++++++++++++++++++++++++
 vistaio/test_images.c                   | 148 ++++++++++++++++++++++++++++++++
 vistaio/vcplist.c                       |   1 +
 vistaio/vfield2d.c                      |   3 +
 vistaio/vfield3d.c                      |   3 +
 vistaio/volumes.c                       |   4 +-
 vistaio/volumesType.c                   |  24 ++++--
 vistaio/vspline2d.c                     |   3 +-
 vistaio_change_names.py                 |  76 ++++++++++++++++
 24 files changed, 522 insertions(+), 57 deletions(-)

diff --git a/.gitignore b/.gitignore
index 96e8239..a0887d3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
 build 
 *~
+build-*
 
 
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..62f84dd
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,29 @@
+sudo: required
+dist: trusty
+before_script:
+- mkdir build
+- cd build
+- cmake ..
+script:
+- make -j2
+after_success:
+- make test
+
+env:
+  global:
+    secure: Swxl0u3vHytVnzKcv2QWDpjjOObA2H9QkUv9vtD6kEQsknVw2P9HYlhZgVGOLiH31SXNw2YN5qlZrPgDR96GwTtjmoWRKf7kNgM0SFtWYU1h4JbKfX/csLk6r3Vr/MAf7hPp4RPhmnzRU8wKNfWkUSIXYZ98oDqDdoD81prSDSlKKdm92EeOQ4PAimswWywzQJbBdSv49gT3tdQoure+1S+tbYcr7uUJVcOyFcDrO3sfgpdem+OTbVyP4BMdy3Q+ZsAvwwMMPFWnc67uMRzjxkEB6sU5L27Uu15IYMpYXmwdNYvsS+KdIEqOzYv+TD/GF8h4+JKaURPt1nuzPDKVrWqU+pdEGak625x1JMFqRl3x5/9cy1jIeRrpBjrq3B+V1JuB3t3iI9N3Ob7+ZRJLgwcQ02ikqtUbGY0Qiggi86GWGiOgHEpMfQ9e0gZ0DwBnRFwbd3hIssSBZKBxDDbaX73DBHEXGX6H [...]
+
+
+addons:
+  coverity_scan:
+
+    project:
+      name: vistaio
+      version: 1.2.19
+      description: VistaIO library 
+
+    notification_email: gw.fossdev at gmail.com
+
+    build_command: make
+
+    branch_pattern: coverity_scan
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3ead488..aa057d1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,16 +25,15 @@ SET(VENDOR "Gert Wollny")
 SET(PACKAGE_NAME "vistaio")
 SET(MAJOR_VERSION 1)
 SET(MINOR_VERSION 2)
-SET(MICRO_VERSION 18)
-SET(INTERFACE_AGE 1)
-SET(BINARY_AGE    4)
+SET(MICRO_VERSION 19)
 
 INCLUDE(GNUInstallDirs)
 
-MATH(EXPR VISTAIO_CURRENT "${MICRO_VERSION} - ${BINARY_AGE}")
-MATH(EXPR VISTAIO_AGE     "${BINARY_AGE} - ${INTERFACE_AGE}")
-
-SET(LIBRARY_VERSION_INFO "${VISTAIO_CURRENT}.${INTERFACE_AGE}.${VISTAIO_AGE}")
+SET(VISTAIO_CURRENT 14)
+SET(VISTAIO_AGE 1)
+SET(VISTAIO_REVISION 4)
+  
+SET(LIBRARY_VERSION_INFO "${VISTAIO_CURRENT}.${VISTAIO_AGE}.${VISTAIO_REVISION}")
 
 SET(PACKAGE_VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}")
 SET(VERSION "${MAJOR_VERSION}.${MINOR_VERSION}")
@@ -51,7 +50,7 @@ ADD_SUBDIRECTORY(doc)
 
 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/libvistaio.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libvistaio.pc)
 
-SET(DOC_FILES Authors COPYING)
+SET(DOC_FILES Authors COPYING README.md)
 
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libvistaio.pc DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig)
 INSTALL(FILES ${DOC_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/doc/${VISTAIO_NAME})
diff --git a/ChangeLog b/ChangeLog
index cd48b87..f4919e7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2.1.19
+
+  * Add test for attribute IO
+  * Add test for basic image IO
+  * Add travis-ci build check
+
+2.1.18
+
+   * Correct code for problems discovered by Coverity
+
 2.1.17
 
    * Add a function to chech whether a file is actually a vista file
diff --git a/README b/README.md
similarity index 70%
rename from README
rename to README.md
index 1316ca2..e5d4e42 100644
--- a/README
+++ b/README.md
@@ -1,3 +1,5 @@
+# Resume
+
 This library includes the IO and data type part of the 
 vista library originaly implemented by 
 
@@ -9,6 +11,42 @@ and Heike Jähnike at the Max-Planck-Institute of Human
 Cognitive and Brain Sciences, Leipzig, Germany, and later by 
 Gert Wollny at the ETSI Telecomunicacion, UPM, Madrid, Spain.  
 
+
+# Installation
+
+## Pre-packaged
+
+* The library is available as libvistaio-dev/libvistaio14 from
+  the official Debian archives.
+* Ebuild for Gentoo Linux are available from the overlay gentoo-imaging
+  (currently not availabe from _layman_)
+
+     https://github.com/gerddie/gentoo-imaging
+
+## Compilation from source: 
+
+Requirements:
+
+ * cmake - http://www.cmake.org
+ * a  POSIX compatible C compiler (GNU gcc will do just fine). 
+
+Then after unpacking the software to
+
+    vistaio-X.X.X one does: 
+    cd vistaio-X.X.X
+    mkdir build 
+    cd build 
+    cmake .. -DCMAKE_INSTALL_PATH=<prefix> 
+    make 
+    make test 
+    make install 
+
+The "make install" command you may have to run as root. 
+The tests cover only the 2d/3dfield loading and storing, and
+the attribute IO. 
+
+# Function naming remark 
+
 In order to avoid naming conflicts with other libraries that build 
 onm the same source code, all functions, types and macro names have 
 been  changed from the name V.* to VistaIO.*. A python script to 
@@ -31,24 +69,8 @@ stored using the original library. If data is saved to one of the
 original formats the original library should also be able to read 
 the files properly.
 
-To compile and install the library, you need 
- * cmake - http://www.cmahe.org 
-and a  POSIX compatible C compiler (GNU gcc will do just fine). 
-
-Then after unpacking the software to 
-  vistaio-X.X.X one does: 
-  cd vistaio-X.X.X
-  mkdir build 
-  cd build 
-  cmake .. -DCMAKE_INSTALL_PATH=<prefix> 
-  make 
-  make test 
-  make install 
-
-The "make install" command you may have to run as root. 
-The tests cover only the 2d/3dfield loading and storing. 
 
-Remark aboud endianess: 
+# About endianess: 
 
 The vista file format was initially developed on a big-endian machine, 
 as a result Arthur Pope decided it is best to store the data in big-endian 
diff --git a/vistaio/CMakeLists.txt b/vistaio/CMakeLists.txt
index 4e6fb51..9bb60d6 100644
--- a/vistaio/CMakeLists.txt
+++ b/vistaio/CMakeLists.txt
@@ -57,15 +57,18 @@ SET_TARGET_PROPERTIES(vistaio PROPERTIES
 
 
 MACRO(ADD_SIMPLE_TEST name)
-  add_executable(test-${name} ${name}.c)
+  add_executable(test-${name} test_${name}.c)
   target_link_libraries(test-${name} vistaio)
   add_test(${name} test-${name})
 ENDMACRO(ADD_SIMPLE_TEST)
 
+ADD_SIMPLE_TEST(attributes)
+ADD_SIMPLE_TEST(images)
 ADD_SIMPLE_TEST(3dfield)
 ADD_SIMPLE_TEST(2dfield)
 ADD_SIMPLE_TEST(2dspline)
 
+
 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/vconfig.h.in ${CMAKE_CURRENT_BINARY_DIR}/vconfig.h)
 
 INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/vconfig.h DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}/${VISTAIO_NAME}/vistaio)
diff --git a/vistaio/alloc.c b/vistaio/alloc.c
index 580145e..3734058 100644
--- a/vistaio/alloc.c
+++ b/vistaio/alloc.c
@@ -31,7 +31,8 @@ VistaIOPointer VistaIOMalloc (size_t size)
 
 	if (size == 0)
 		return NULL;
-	if (!(p = (VistaIOPointer) malloc (size)))
+	p = (VistaIOPointer) malloc (size); 
+	if (!p)
 		VistaIOSystemError ("VistaIOMalloc: Memory allocation failure");
 	return p;
 }
diff --git a/vistaio/edgesType.c b/vistaio/edgesType.c
index cfe7f2f..076ae23 100644
--- a/vistaio/edgesType.c
+++ b/vistaio/edgesType.c
@@ -186,8 +186,10 @@ static VistaIOPointer VistaIOEdgesEncodeDataMethod (VistaIOPointer value, VistaI
 			pcount = -pcount;
 		len = length;
 		if (!VistaIOPackData
-		    (VistaIOFloatRepn, 1, &pcount, VistaIOMsbFirst, &len, &p, NULL))
+		    (VistaIOFloatRepn, 1, &pcount, VistaIOMsbFirst, &len, &p, NULL)) {
+			VistaIOFree(ptr); 
 			return NULL;
+		}
 		p = (char *)p + len;
 		length -= len;
 
@@ -196,8 +198,10 @@ static VistaIOPointer VistaIOEdgesEncodeDataMethod (VistaIOPointer value, VistaI
 			len = length;
 			if (!VistaIOPackData
 			    (VistaIOFloatRepn, edges->nedge_fields, e->edge_fields,
-			     VistaIOMsbFirst, &len, &p, NULL))
+			     VistaIOMsbFirst, &len, &p, NULL)) {
+				VistaIOFree(ptr); 
 				return NULL;
+			}
 			p = (char *)p + len;
 			length -= len;
 		}
@@ -205,8 +209,10 @@ static VistaIOPointer VistaIOEdgesEncodeDataMethod (VistaIOPointer value, VistaI
 		/* Pack point fields: */
 		len = length;
 		if (!VistaIOPackData (VistaIOFloatRepn, edges->npoint_fields * e->npoints,
-				e->point_index[0], VistaIOMsbFirst, &len, &p, NULL))
+				      e->point_index[0], VistaIOMsbFirst, &len, &p, NULL)) {
+			VistaIOFree(ptr); 
 			return NULL;
+		}
 		p = (char *)p + len;
 		length -= len;
 	}
diff --git a/vistaio/fileio.c b/vistaio/fileio.c
index ec73747..e359fb3 100644
--- a/vistaio/fileio.c
+++ b/vistaio/fileio.c
@@ -308,6 +308,8 @@ static VistaIOAttrList ReadAttrList (FILE * f, ReadStringBuf *sbuf)
 	/* For each attribute up to the next "}": */
 	while (fscanf (f, " %255[^}: \t\n]", name_buf) == 1) {
 		name_size = strlen (name_buf);
+		/* Covertiy does not detect that strlen(name_buf) <= 255 */
+		   
 		
 		/* Read a : */
 		if (fscanf (f, " %1s", buf) != 1 || buf[0] != ':') {
@@ -316,9 +318,15 @@ static VistaIOAttrList ReadAttrList (FILE * f, ReadStringBuf *sbuf)
 		}
 		
 		do {
-			buf[0] = fgetc(f);
-		} while (buf[0] == ' ');
+			ch = fgetc(f);
+		} while (ch == ' ');
 
+		/* File terminated early? */ 
+		if (ch == EOF)
+			goto Fail;
+		
+		buf[0] = (char)ch;
+		
 		/* The first character of the value tells us whether its an attribute
 		   list, quoted string, or unquoted string: */
 		if (buf[0] == '{') {
@@ -357,6 +365,7 @@ static VistaIOAttrList ReadAttrList (FILE * f, ReadStringBuf *sbuf)
 			} else {
 
 				/* ...otherwise store it as a simple string value: */
+				/*coverity[INTEGER_OVERFLOW]   name_size is at most 255 (line 309)*/
 				a = VistaIOMalloc (sizeof (VistaIOAttrRec) + name_size +
 					     strlen (str) + 1);
 				a->repn = VistaIOStringRepn;
@@ -387,7 +396,8 @@ static VistaIOAttrList ReadAttrList (FILE * f, ReadStringBuf *sbuf)
 	/* Swallow the terminating "}": */
 	if (fscanf (f, " %1s", buf) != 1 || buf[0] != '}') {
 		VistaIOWarning ("VistaIOReadFile: Missing }");
-	      Fail:VistaIODestroyAttrList (list);
+	Fail:
+		VistaIODestroyAttrList (list);
 		return NULL;
 	}
 	return list;
@@ -414,6 +424,7 @@ static char *ReadString (FILE * f, char ch, VistaIOStringConst name, ReadStringB
 	VistaIOBoolean escaped = (ch == '"');
 	size_t len = 0;
 	char *cp;
+	int in_char; 
 
 	if (!buf->buf) {
 		buf->buf = VistaIOMalloc (StringAllocIncrement);
@@ -425,28 +436,32 @@ static char *ReadString (FILE * f, char ch, VistaIOStringConst name, ReadStringB
 
 	cp = buf->buf;
 	while (1) {
-		ch = fgetc (f);
+		in_char = fgetc (f);
 
 		/* Check for premature EOF: */
-		if (ch == EOF) {
+		if (in_char == EOF) {
 			VistaIOWarning ("VistaIOReadFile: EOF encountered in %s attribute", name);
 			return NULL;
 		}
 
 		/* Check for closing " or escape sequence: */
 		if (escaped) {
-			if (ch == '"')
+			if (in_char == '"')
 				break;
-			if (ch == '\\')
-				switch (ch = fgetc (f)) {
+			if (in_char == '\\')
+				switch (in_char = fgetc (f)) {
 
 				case '\n':
 					continue;
 
 				case 'n':
-					ch = '\n';
+					in_char = '\n';
+					break;
+				case EOF:
+					VistaIOWarning ("VistaIOReadFile: EOF encountered in %s attribute", name);
+					return NULL;
 				}
-		} else if (isspace (ch))
+		} else if (isspace (in_char))
 			break;
 
 		/* If the buffer in which we're accumulating the value is full,
@@ -457,7 +472,7 @@ static char *ReadString (FILE * f, char ch, VistaIOStringConst name, ReadStringB
 		}
 
 		/* Store the character in the current buffer: */
-		*cp++ = ch;
+		*cp++ = (char)in_char;
 	}
 	*cp = 0;
 
diff --git a/vistaio/graphType.c b/vistaio/graphType.c
index 6077cb0..60d1c82 100644
--- a/vistaio/graphType.c
+++ b/vistaio/graphType.c
@@ -227,8 +227,11 @@ static VistaIOPointer VistaIOGraphEncodeDataMethod (VistaIOPointer value, VistaI
 	int i, nadj;
 
 #define pack(repn, cnt, dest) \
-    if (! VistaIOPackData (repn, cnt, dest, VistaIOMsbFirst, &len, &p, NULL)) return NULL; \
-    p = (char *) p + len; length -= len; len = length;
+	if (! VistaIOPackData (repn, cnt, dest, VistaIOMsbFirst, &len, &p, NULL)) { \
+		VistaIOFree(ptr);					\
+		return NULL;						\
+	}								\
+	p = (char *) p + len; length -= len; len = length;
 
 	/* Remove the attributes prepended by the VistaIOGraphEncodeAttrsMethod: */
 	for (VistaIOFirstAttr (list, &posn);
@@ -242,7 +245,7 @@ static VistaIOPointer VistaIOGraphEncodeDataMethod (VistaIOPointer value, VistaI
 		return value;	/* we may return anything != 0 here */
 	};
 
-	p = ptr = VistaIOMalloc (length);
+p = ptr = VistaIOMalloc (length);
 	len = length;
 
 	/* Pack each node: */
diff --git a/vistaio/imageType.c b/vistaio/imageType.c
index 3cda06a..b40b106 100644
--- a/vistaio/imageType.c
+++ b/vistaio/imageType.c
@@ -192,7 +192,7 @@ static VistaIOPointer VistaIOImageEncodeDataMethod (VistaIOPointer value, VistaI
 	VistaIOImage image = value;
 	VistaIOAttrListPosn posn;
 	size_t len;
-	VistaIOPointer ptr;
+	VistaIOPointer ptr = NULL;
 
 	/* Remove the attributes prepended by the VistaIOImageEncodeAttrsMethod: */
 	for (VistaIOFirstAttr (list, &posn);
diff --git a/vistaio/option.c b/vistaio/option.c
index 2dbe899..49da8cf 100644
--- a/vistaio/option.c
+++ b/vistaio/option.c
@@ -27,6 +27,8 @@
 /* Later in this file: */
 static int ParseArgValues (int *, int, char **, VistaIOOptionDescRec *);
 
+/* from error.c */
+extern EXPORT_VISTA void VistaIOSetProgramName (VistaIOStringConst name); 
 /* The following provide distinguished values for the found field of a
    VistaIOOptionDescRec: */
 VistaIOBoolean VistaIO_RequiredOpt;
@@ -227,6 +229,7 @@ VistaIOBoolean VistaIOParseCommand (int noptions, VistaIOOptionDescRec options[]
 
 			/* If found, return FALSE to force printing of usage info: */
 			*argc = 1;
+			VistaIOFree ((VistaIOPointer) opts_seen);
 			return FALSE;
 		}
 
@@ -460,7 +463,7 @@ void VistaIOParseFilterCmd (int noptions, VistaIOOptionDescRec opts[],
 		 VerboseDict, "Verbosity level"}
 	};
 	int i, n;
-	VistaIOOptionDescRec options[100];
+	VistaIOOptionDescRec options[101];
 
 	/* Check that number of options will not overflow the options array. */
 	if (noptions >= 98) {
diff --git a/vistaio/2dfield.c b/vistaio/test_2dfield.c
similarity index 100%
rename from vistaio/2dfield.c
rename to vistaio/test_2dfield.c
diff --git a/vistaio/2dspline.c b/vistaio/test_2dspline.c
similarity index 100%
rename from vistaio/2dspline.c
rename to vistaio/test_2dspline.c
diff --git a/vistaio/3dfield.c b/vistaio/test_3dfield.c
similarity index 100%
rename from vistaio/3dfield.c
rename to vistaio/test_3dfield.c
diff --git a/vistaio/test_attributes.c b/vistaio/test_attributes.c
new file mode 100644
index 0000000..9ceac95
--- /dev/null
+++ b/vistaio/test_attributes.c
@@ -0,0 +1,133 @@
+/*
+ *  Copyright (c) Madrid 2015
+ *
+ *  Permission to use, copy, modify, distribute, and sell this software and its
+ *  documentation for any purpose is hereby granted without fee, provided that
+ *  the above copyright notice appears in all copies and that both that
+ *  copyright notice and this permission notice appear in supporting
+ *  documentation. The authors makes no representations about the suitability 
+ *  of this software for any purpose. It is provided "as is" without express or
+ *  implied warranty.
+ *
+ *  Author: Gert Wollny <gw.fossdev at gmail.com>
+ */
+
+#include <vistaio/vistaio.h>
+#include <stdio.h>
+
+
+
+int main(int UNUSED(argc), const char **UNUSED(args))
+{
+	FILE *file;
+	
+	VistaIOAttrList test_list;
+	VistaIODouble test_double = -3.0;
+	VistaIOFloat test_float = 2.0;
+	VistaIOShort test_short = 3;
+	VistaIOLong  test_long = 6;
+	VistaIOString test_string = "This is a test string \" ;}:"; 
+
+
+	VistaIOAttrList read_list;
+	VistaIODouble read_double = 1.0;
+	VistaIOFloat read_float = 1.0;
+	VistaIOShort read_short = 0;
+	VistaIOLong  read_long = 0;
+	VistaIOString read_string = NULL;
+
+	int test_failed = FALSE; 
+	
+	test_list = VistaIOCreateAttrList();
+
+	VistaIOSetAttr(test_list, "test-double", NULL, VistaIODoubleRepn, test_double);
+	VistaIOSetAttr(test_list, "test-float", NULL, VistaIOFloatRepn, test_float);
+	VistaIOSetAttr(test_list, "test-short", NULL, VistaIOShortRepn, test_short);
+	VistaIOSetAttr(test_list, "test-long", NULL, VistaIOLongRepn, test_long);
+	VistaIOSetAttr(test_list, "test-string", NULL, VistaIOStringRepn, test_string);
+
+	
+	/* open file for saving */
+	if ((file = fopen("test-attr.v","w"))==0) {
+		VistaIOError("Unable to open file 'test-attr.v' for writing");
+		++test_failed;  
+	}
+	
+	VistaIOWriteFile(file,test_list);
+	fclose(file);
+
+	
+	/* open file for reading */
+	if ((file = fopen("test-attr.v","r")) == NULL) {
+	    VistaIOError("Unable to open file test-attr.v for reading");
+	    ++test_failed;  
+	}
+
+	/* Read field from file */     
+	read_list = VistaIOReadFile(file, NULL);
+
+	if (VistaIOAttrFound !=
+	    VistaIOGetAttr(test_list, "test-double", NULL, VistaIODoubleRepn, &read_double)) {
+		VistaIOWarning("Attribute test-double not found");
+		++test_failed; 
+	}
+
+	if (VistaIOAttrFound !=
+	    VistaIOGetAttr(test_list, "test-float", NULL, VistaIOFloatRepn, &read_float)) {
+		VistaIOWarning("Attribute test-float not found");
+		++test_failed;  
+	}
+		
+	if (VistaIOAttrFound !=
+	    VistaIOGetAttr(test_list, "test-short", NULL, VistaIOShortRepn, &read_short)) {
+		++test_failed;  
+		VistaIOWarning("Attribute test-short not found");
+	}
+
+	if (VistaIOAttrFound !=
+	    VistaIOGetAttr(test_list, "test-long", NULL, VistaIOLongRepn, &read_long)) {
+		++test_failed;  
+		VistaIOWarning("Attribute test-short not found");
+	}
+	
+	if (VistaIOAttrFound !=
+	    VistaIOGetAttr(test_list, "test-string", NULL, VistaIOStringRepn, &read_string)) {
+		VistaIOWarning("Attribute test-string not found");
+		++test_failed;  
+	}
+	
+	if (test_double != read_double) {
+		VistaIOWarning("Attribute test-double: read %f, expected %f", read_double, test_double);
+		++test_failed;  
+	}
+
+	if (test_float != read_float) {
+		VistaIOWarning("Attribute test-float: read %f, expected %f", read_float, test_float);
+		++test_failed;  
+	}
+
+	if (test_short != read_short) {
+		VistaIOWarning("Attribute test-short: read %f, expected %f", read_short, test_short);
+		++test_failed;  
+	}
+		
+	if (test_long != read_long) {
+		VistaIOWarning("Attribute test-long: read %f, expected %f", read_long, test_long);
+		++test_failed;  
+	}
+
+	if (strcmp(read_string, test_string)) {
+		VistaIOWarning("Attribute test-string: read '%s', expected '%s'", read_string, test_string);
+		++test_failed;  
+	}
+			
+	
+	VistaIODestroyAttrList(test_list);
+	VistaIODestroyAttrList(read_list);
+
+	if (remove( "test-attr.v" ) != 0) {
+		VistaIOWarning("Unable to remove test file test-attr.v");
+	}
+	
+	return test_failed;
+}
diff --git a/vistaio/test_images.c b/vistaio/test_images.c
new file mode 100644
index 0000000..2eaacd8
--- /dev/null
+++ b/vistaio/test_images.c
@@ -0,0 +1,148 @@
+/*
+ *  Copyright (c) Leipzig, Madrid 2004 - 2015
+ *
+ *  Permission to use, copy, modify, distribute, and sell this software and its
+ *  documentation for any purpose is hereby granted without fee, provided that
+ *  the above copyright notice appears in all copies and that both that
+ *  copyright notice and this permission notice appear in supporting
+ *  documentation. The authors makes no representations about the suitability 
+ *  of this software for any purpose. It is provided "as is" without express or
+ *  implied warranty.
+ *
+ *  Author:  Gert Wollny <gw.fossdev at gmail.com> 
+ * 
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <vistaio/vistaio.h>
+
+
+
+int nx = 7; 
+int ny = 8;
+int nz = 9; 
+
+float dx = 1.6; 
+float dy = 2.2;
+float dz = 3.2; 
+
+
+#define VTYPE double
+#define TYPEREPN VistaIODoubleRepn
+
+VistaIOBoolean RepnFilter(VistaIOBundle UNUSED(bundle), VistaIORepnKind repn) 
+{
+	return repn == VistaIOImageRepn; 
+}
+
+
+#define CHECK_EQUAL(A, B, ErrorMsg) \
+	if (A != B) VWarning(ErrorMsg, A, B)
+
+
+int main(int UNUSED(argc), const char **UNUSED(args))
+{
+	VistaIOImage image1; 
+	VistaIOImage image2;
+	VistaIOAttrList list; 
+	VistaIOAttrList in_list; 
+	int x,y,z; 
+	float test_float,number; 
+	FILE *file; 
+	int tests_run = 0;
+	int tests_failed = 0;
+	
+	image2 = NULL; 
+	test_float = 1.2;
+	
+	/* Create the image */ 
+	image1 = VistaIOCreateImage(nz, ny, nx, VistaIOShortRepn);
+
+	
+	/* put in some data */
+	VistaIOShort *s = VistaIOPixelPtr(image1, 0, 0, 0);
+	for (z = 0; z < nz; z++) 
+		for (y = 0; y < ny; y++) 
+			for (x = 0; x < nx; x++){
+				*s++ = x + 10 * y + 100 * z;
+			}
+
+	/* add some attribute the the field */
+	VistaIOSetAttr(VistaIOImageAttrList(image1),"test_attribute", NULL, VistaIOFloatRepn, test_float);
+
+
+	list = VistaIOCreateAttrList();
+	VistaIOSetAttr(list, "test-image", NULL, VistaIOImageRepn, image1);
+
+	/* open file for saving */
+	if ((file = fopen("test-image.v","w"))==0)
+		VistaIOError("Unable to open file 'test-image.v' for writing");
+
+	VistaIOWriteFile(file, list);
+	fclose(file);
+
+	if ((file = fopen("test-image.v","r")) == NULL)
+		VistaIOError("Unable to open file test-image.v for reading");
+
+	/* Read field from file */     
+	in_list = VistaIOReadFile(file, RepnFilter);
+
+	++tests_run; 
+	if (VistaIOAttrFound !=
+	    VistaIOGetAttr(in_list, "test-image", NULL, VistaIOImageRepn, &image2)) {
+		VistaIOWarning("Attribute test-image not found");
+		++tests_failed; 
+	}
+	
+	++tests_run; 
+	if (VistaIOAttrFound !=
+	    VistaIOGetAttr(VistaIOImageAttrList(image1),"test_attribute", NULL, VistaIOFloatRepn, &number)) {
+		VistaIOWarning("Attribute test_attribute not found");
+		++tests_failed;
+	}
+
+	++tests_run; 
+	if ( number != test_float) {
+		VistaIOWarning("Attribute test_float: got %f, expect %f", number, test_float); 
+		++tests_failed;
+	}
+	
+	
+#define CHECK_EQUAL_IMAGE_ATTRIBUTE(A, B, ATTR)				\
+	++tests_run;							\
+	if (A -> ATTR != B -> ATTR) {					\
+		VistaIOWarning( "Image %s: got %d, expect %d", #ATTR,  A -> ATTR, B -> ATTR); \
+		++tests_failed;						\
+	}
+	
+	
+	CHECK_EQUAL_IMAGE_ATTRIBUTE(image2, image1, nrows);
+	CHECK_EQUAL_IMAGE_ATTRIBUTE(image2, image1, nbands);
+	CHECK_EQUAL_IMAGE_ATTRIBUTE(image2, image1, ncolumns);
+	CHECK_EQUAL_IMAGE_ATTRIBUTE(image2, image1, nframes);
+	CHECK_EQUAL_IMAGE_ATTRIBUTE(image2, image1, pixel_repn);
+	CHECK_EQUAL_IMAGE_ATTRIBUTE(image2, image1, nviewpoints);
+	CHECK_EQUAL_IMAGE_ATTRIBUTE(image2, image1, ncolors);
+	CHECK_EQUAL_IMAGE_ATTRIBUTE(image2, image1, ncomponents); 
+
+	/* put in some data */
+	VistaIOShort *t = VistaIOPixelPtr(image2, 0, 0, 0);
+	for (z = 0; z < nz; z++) 
+		for (y = 0; y < ny; y++) 
+			for (x = 0; x < nx; x++, ++t){
+				++tests_run;
+				if (*t != x + 10 * y + 100 * z) {
+					VistaIOWarning("Pixel value at (%d, %d, %d): got %hd, expect %d",
+						 x,y,z,*t, x + 10 * y + 100 * z);
+					++tests_failed; 
+				}
+			}
+	
+	
+	remove( "test-image.v" );
+
+	fprintf(stderr,"%d out of %d tests failed\n", tests_failed, tests_run); 
+	
+	return tests_failed != 0; 
+}
diff --git a/vistaio/vcplist.c b/vistaio/vcplist.c
index bafa35b..41a5bfb 100644
--- a/vistaio/vcplist.c
+++ b/vistaio/vcplist.c
@@ -59,6 +59,7 @@ VistaIOCPEList VistaIOCreateCPEList(VistaIOLong _n_element)
 	result->data = malloc(result->nsize);
 	if (!result->data) {
 		VistaIOWarning("VistaIOCreateCPEList: Unable to allocate %d byte of memory",result->nsize);
+		free(result); 
 		return NULL; 
 	}
 	memset(result->data,0,result->nsize);
diff --git a/vistaio/vfield2d.c b/vistaio/vfield2d.c
index ead249d..fa610af 100644
--- a/vistaio/vfield2d.c
+++ b/vistaio/vfield2d.c
@@ -67,6 +67,7 @@ EXPORT_VISTA VistaIOField2D VistaIOCreateField2DFrom(VistaIOLong x_dim,
 	case VistaIODoubleRepn:result->nsize *= 8;
 		break;
 	default:VistaIOWarning("Requested wrong Repn type in VistaIOCreateField2D");
+		free(result); 
 		return NULL; 
 	}
 	
@@ -105,6 +106,7 @@ EXPORT_VISTA VistaIOField2D VistaIOCreateField2D(VistaIOLong x_dim,
 	case VistaIODoubleRepn:result->nsize *= 8;
 		break;
 	default:VistaIOWarning("Requested wrong Repn type in VistaIOCreateField2D");
+		free(result); 
 		return NULL; 
 	}
 	
@@ -113,6 +115,7 @@ EXPORT_VISTA VistaIOField2D VistaIOCreateField2D(VistaIOLong x_dim,
 	result->p.data = malloc(result->nsize);
 	if (!result->p.data) {
 		VistaIOWarning("VistaIOCreateField2D: Unable to allocate %d byte of memory",result->nsize);
+		free(result);
 		return NULL; 
 	}
 	memset(result->p.data,0,result->nsize);
diff --git a/vistaio/vfield3d.c b/vistaio/vfield3d.c
index ef8950f..220742f 100644
--- a/vistaio/vfield3d.c
+++ b/vistaio/vfield3d.c
@@ -76,6 +76,7 @@ EXPORT_VISTA VistaIOField3D VistaIOCreateField3DFrom(VistaIOLong x_dim,
 	case VistaIODoubleRepn:result->nsize *= 8;
 		break;
 	default:VistaIOWarning("Requested wrong Repn type in VistaIOCreateField3D");
+		free(result); 
 		return NULL; 
 	}
 	
@@ -116,6 +117,7 @@ EXPORT_VISTA VistaIOField3D VistaIOCreateField3D(VistaIOLong x_dim,
 	case VistaIODoubleRepn:result->nsize *= 8;
 		break;
 	default:VistaIOWarning("Requested wrong Repn type in VistaIOCreateField3D");
+		free(result); 
 		return NULL; 
 	}
 	
@@ -124,6 +126,7 @@ EXPORT_VISTA VistaIOField3D VistaIOCreateField3D(VistaIOLong x_dim,
 	result->p.data = malloc(result->nsize);
 	if (!result->p.data) {
 		VistaIOWarning("VistaIOCreateField3D: Unable to allocate %d byte of memory",result->nsize);
+		free(result); 
 		return NULL; 
 	}
 	memset(result->p.data,0,result->nsize);
diff --git a/vistaio/volumes.c b/vistaio/volumes.c
index c78868d..22da8c3 100644
--- a/vistaio/volumes.c
+++ b/vistaio/volumes.c
@@ -78,8 +78,10 @@ Volume VistaIOCreateVolume (short label, short nbands, short nrows, short ncolum
 	else
 		vol->nbuckets = (short)nbuckets;
 	vol->bucket = (VistaIOBucket) VistaIOMalloc (sizeof (VistaIOBucketRec) * vol->nbuckets);
-	if (!vol->bucket)
+	if (!vol->bucket) {
+		VistaIOFree(vol); 
 		return NULL;
+	}
 
 	for (i = 0; i < vol->nbuckets; i++) {
 		vol->bucket[i].ntracks = 0;
diff --git a/vistaio/volumesType.c b/vistaio/volumesType.c
index 8e3c5f7..fe69f03 100644
--- a/vistaio/volumesType.c
+++ b/vistaio/volumesType.c
@@ -68,6 +68,7 @@ static VistaIOPointer VolumesDecodeMethod (VistaIOStringConst UNUSED(name), Vist
 	short *p;
 	VistaIOTrack t;
 	VistaIOPointer data;
+	VistaIOPointer data_allocated_ptr;
 	Volume vol;
 
 #define Extract(name, dict, locn, required)	\
@@ -99,7 +100,7 @@ static VistaIOPointer VolumesDecodeMethod (VistaIOStringConst UNUSED(name), Vist
 	length = nels * (VistaIORepnPrecision (VistaIOShortRepn) / 8);
 
 	/* Allocate storage for the Volumes binary data: */
-	data = VistaIOMalloc (nels * sizeof (VistaIOShort));
+	data_allocated_ptr = data = VistaIOMalloc (nels * sizeof (VistaIOShort));
 
 	/* Unpack the binary data: */
 	if (!VistaIOUnpackData
@@ -127,6 +128,7 @@ static VistaIOPointer VolumesDecodeMethod (VistaIOStringConst UNUSED(name), Vist
 		}
 		VistaIOAddVolume (volumes, vol);
 	}
+	VistaIOFree(data_allocated_ptr); 
 	return volumes;
 
 #undef Extract
@@ -229,7 +231,7 @@ VolumesEncodeDataMethod (VistaIOPointer value, VistaIOAttrList UNUSED(list), siz
 		len = VistaIORepnPrecision (VistaIOShortRepn) / 8;
 		if (!VistaIOPackData
 		    (VistaIOShortRepn, 1, &ntracks, VistaIOMsbFirst, &len, &p, NULL))
-			return NULL;
+			goto Fail; 
 		p = (char *)p + len;
 		length -= len;
 
@@ -237,7 +239,7 @@ VolumesEncodeDataMethod (VistaIOPointer value, VistaIOAttrList UNUSED(list), siz
 		len = VistaIORepnPrecision (VistaIOShortRepn) / 8;
 		if (!VistaIOPackData
 		    (VistaIOShortRepn, 1, &ntracks, VistaIOMsbFirst, &len, &p, NULL))
-			return NULL;
+			goto Fail; 
 		p = (char *)p + len;
 		length -= len;
 
@@ -246,7 +248,7 @@ VolumesEncodeDataMethod (VistaIOPointer value, VistaIOAttrList UNUSED(list), siz
 		len = VistaIORepnPrecision (VistaIOShortRepn) / 8;
 		if (!VistaIOPackData
 		    (VistaIOShortRepn, 1, &hashlen, VistaIOMsbFirst, &len, &p, NULL))
-			return NULL;
+			goto Fail; 
 		p = (char *)p + len;
 		length -= len;
 
@@ -255,7 +257,7 @@ VolumesEncodeDataMethod (VistaIOPointer value, VistaIOAttrList UNUSED(list), siz
 		len = VistaIORepnPrecision (VistaIOShortRepn) / 8;
 		if (!VistaIOPackData
 		    (VistaIOShortRepn, 1, &nbands, VistaIOMsbFirst, &len, &p, NULL))
-			return NULL;
+			goto Fail; 
 		p = (char *)p + len;
 		length -= len;
 
@@ -263,8 +265,9 @@ VolumesEncodeDataMethod (VistaIOPointer value, VistaIOAttrList UNUSED(list), siz
 		label = (VistaIOShort) v->label;
 		len = VistaIORepnPrecision (VistaIOShortRepn) / 8;
 		if (!VistaIOPackData
-		    (VistaIOShortRepn, 1, &label, VistaIOMsbFirst, &len, &p, NULL))
-			return NULL;
+		    (VistaIOShortRepn, 1, &label, VistaIOMsbFirst, &len, &p, NULL)) {
+			goto Fail; 
+		}
 		p = (char *)p + len;
 		length -= len;
 
@@ -277,8 +280,8 @@ VolumesEncodeDataMethod (VistaIOPointer value, VistaIOAttrList UNUSED(list), siz
 				len = 4 * VistaIORepnPrecision (VistaIOShortRepn) / 8;
 				if (!VistaIOPackData
 				    (VistaIOShortRepn, 4, &idata[0], VistaIOMsbFirst,
-				     &len, &p, NULL))
-					return NULL;
+				     &len, &p, NULL)) 
+					goto Fail; 
 				p = (char *)p + len;
 				length -= len;
 			}
@@ -287,4 +290,7 @@ VolumesEncodeDataMethod (VistaIOPointer value, VistaIOAttrList UNUSED(list), siz
 
 	*free_itp = TRUE;
 	return ptr;
+Fail:
+	VistaIOFree(ptr);
+	return NULL; 
 }
diff --git a/vistaio/vspline2d.c b/vistaio/vspline2d.c
index 0d3340b..e29678c 100644
--- a/vistaio/vspline2d.c
+++ b/vistaio/vspline2d.c
@@ -84,7 +84,8 @@ EXPORT_VISTA VistaIOSpline2D VistaIOCreateSpline2D(VistaIOLong _x_dim,
 	result->data = VistaIOCreateField2D(_x_dim, _y_dim, nsize_element, repn); 
 	result->x_range = _x_range; 
 	result->y_range = _y_range; 
-	result->kernel_descr = kernel_descr; 
+	result->kernel_descr = kernel_descr;
+	result->attr = NULL; 
 	return result; 
 }
 
diff --git a/vistaio_change_names.py b/vistaio_change_names.py
new file mode 100644
index 0000000..2cd1d91
--- /dev/null
+++ b/vistaio_change_names.py
@@ -0,0 +1,76 @@
+#!/usr/bin/python 
+#
+# Copyright (C) 2011-2015 Gert Wollny <gw.fossdev at gmail.com>
+#  
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appears in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation. The authors makes no representations about the suitability 
+# of this software for any purpose. It is provided "as is" without express or
+# implied warranty.
+#
+
+import sys
+import re
+from os import rename 
+import string 
+from fnmatch import fnmatch
+from os.path import walk
+
+
+
+class CPatternCollector:
+   def __init__(self, pattern):
+      self.pattern = pattern
+      self.files=[]
+
+      
+def collect_files(arg, dirname, names):
+   for f in names:
+      for p in arg.pattern:
+         if fnmatch(f, p):
+            arg.files.append(dirname + "/" + f)
+   
+
+
+def find_files(root, pattern): 
+   arg = CPatternCollector(pattern)
+   walk(root, collect_files, arg)
+   return arg.files 
+
+
+root= sys.argv[1]
+files = find_files(root, ["*.C", "*.H", "*.c", "*.h", "*.cc", "*.hh", "*.cpp", "*.hpp"])
+
+
+# read all files and extract comment blocks 
+for f in files: 
+
+    # ignore some emacs security copies 
+    h = re.search("/\.#[-a-z0-9]*\.[ch]*", f)
+    if h:
+        continue 
+
+
+    
+    infile = open(f, "r");
+    lines = infile.readlines()
+    infile.close(),
+
+    changed = False
+    out_lines = []
+    for l in lines:
+        ol = re.sub("\\bV(_*[A-Z]*[a-z][a-zA-Z0-9_]*)\\b", "VistaIO\\1",l)
+        out_lines.append(ol)
+        changed = changed or (ol != l)
+
+    if changed:
+        print f, " updated"
+        outfile = open(f, "w")
+        outfile.writelines(out_lines)
+        outfile.close();
+    else:
+        print f, " unchanged"
+    
+

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/libvistaio.git



More information about the debian-med-commit mailing list