You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by pf...@apache.org on 2012/01/28 00:14:29 UTC

svn commit: r1236920 [2/2] - /incubator/ooo/trunk/main/icc/SampleICC-1.3.2.patch

Modified: incubator/ooo/trunk/main/icc/SampleICC-1.3.2.patch
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/icc/SampleICC-1.3.2.patch?rev=1236920&r1=1236919&r2=1236920&view=diff
==============================================================================
--- incubator/ooo/trunk/main/icc/SampleICC-1.3.2.patch (original)
+++ incubator/ooo/trunk/main/icc/SampleICC-1.3.2.patch Fri Jan 27 23:14:28 2012
@@ -1,3187 +1,5146 @@
-diff -ru misc/SampleICC-1.3.2/Contrib/CmdLine/Makefile.in misc/build/SampleICC-1.3.2/Contrib/CmdLine/Makefile.in
---- misc/SampleICC-1.3.2/Contrib/CmdLine/Makefile.in	2007-08-20 15:10:34.000000000 -0500
-+++ misc/build/SampleICC-1.3.2/Contrib/CmdLine/Makefile.in	2012-01-24 10:39:23.000000000 -0500
-@@ -102,15 +102,11 @@
- install_sh = @install_sh@
- 
- SUBDIRS = \
--	create_CLUT_profile \
--	create_CLUT_profile_from_probe \
--	create_display_profile
-+	create_sRGB_profile
- 
- 
- DIST_SUBDIRS = \
--	create_CLUT_profile \
--	create_CLUT_profile_from_probe \
--	create_display_profile
-+	create_sRGB_profile
- 
- subdir = Contrib/CmdLine
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-Only in misc/build/SampleICC-1.3.2/Contrib/CmdLine: create_sRGB_profile
-diff -ru misc/SampleICC-1.3.2/Contrib/ICC_utils/CLUT.cpp misc/build/SampleICC-1.3.2/Contrib/ICC_utils/CLUT.cpp
---- misc/SampleICC-1.3.2/Contrib/ICC_utils/CLUT.cpp	2007-08-20 15:04:53.000000000 -0500
-+++ misc/build/SampleICC-1.3.2/Contrib/ICC_utils/CLUT.cpp	2012-01-24 10:39:23.000000000 -0500
-@@ -77,6 +77,8 @@
- //
- //////////////////////////////////////////////////////////////////////
- 
-+#include <stdlib.h>
-+#include <string.h>
- #include <iostream>
- #include <fstream>
- #include <sstream>
-diff -ru misc/SampleICC-1.3.2/Contrib/ICC_utils/ICC_tool_exception.h misc/build/SampleICC-1.3.2/Contrib/ICC_utils/ICC_tool_exception.h
---- misc/SampleICC-1.3.2/Contrib/ICC_utils/ICC_tool_exception.h	2007-08-20 15:04:54.000000000 -0500
-+++ misc/build/SampleICC-1.3.2/Contrib/ICC_utils/ICC_tool_exception.h	2012-01-24 10:39:23.000000000 -0500
-@@ -83,6 +83,7 @@
- #ifndef __DEFINED_ICC_TOOL_EXCEPTION_H__
- #define __DEFINED_ICC_TOOL_EXCEPTION_H__
- 
-+#include <string.h>
- #include <exception>
- #include <string>
- 
-diff -ru misc/SampleICC-1.3.2/Contrib/ICC_utils/Makefile.in misc/build/SampleICC-1.3.2/Contrib/ICC_utils/Makefile.in
---- misc/SampleICC-1.3.2/Contrib/ICC_utils/Makefile.in	2007-08-20 15:10:35.000000000 -0500
-+++ misc/build/SampleICC-1.3.2/Contrib/ICC_utils/Makefile.in	2012-01-24 10:39:23.000000000 -0500
-@@ -133,7 +133,7 @@
- CONFIG_CLEAN_FILES =
- LTLIBRARIES = $(lib_LTLIBRARIES)
- 
--libICC_utils_la_LIBADD =
-+libICC_utils_la_LIBADD = $(LDADD)
- am_libICC_utils_la_OBJECTS = Stubs.lo CAT.lo CLUT.lo CLUT_stuffer.lo \
- 	ICC_tool_exception.lo Vetters.lo
- libICC_utils_la_OBJECTS = $(am_libICC_utils_la_OBJECTS)
-diff -ru misc/SampleICC-1.3.2/Contrib/ICC_utils/Stubs.h misc/build/SampleICC-1.3.2/Contrib/ICC_utils/Stubs.h
---- misc/SampleICC-1.3.2/Contrib/ICC_utils/Stubs.h	2007-08-20 15:04:53.000000000 -0500
-+++ misc/build/SampleICC-1.3.2/Contrib/ICC_utils/Stubs.h	2012-01-24 10:39:23.000000000 -0500
-@@ -130,7 +130,7 @@
- 
-   // use one of these to force desired sort order in assoc. containers of DPX
-   bool
--  DPX::operator<(const DPX& p) const
-+  operator<(const DPX& p) const
-   {
-     return (r_ != p.r_) ? (r_ < p.r_) : ((g_ != p.g_) ? (g_ < p.g_) : (b_ < p.b_));
-   }
-diff -ru misc/SampleICC-1.3.2/Contrib/ICC_utils/Vetters.cpp misc/build/SampleICC-1.3.2/Contrib/ICC_utils/Vetters.cpp
---- misc/SampleICC-1.3.2/Contrib/ICC_utils/Vetters.cpp	2007-08-20 15:04:54.000000000 -0500
-+++ misc/build/SampleICC-1.3.2/Contrib/ICC_utils/Vetters.cpp	2012-01-24 10:39:23.000000000 -0500
-@@ -1,322 +1,329 @@
--/*
-- File:       Vetters.cpp
-- 
-- Contains:   Utility functions to handle common argument-checking tasks, in a 
--             way that hides platform-specific details from higher-level code.
-- 
-- Version:    V1
-- 
-- Copyright:  ?? see below
-- */
--
--/*
-- * The ICC Software License, Version 0.1
-- *
-- *
-- * Copyright (c) 2003-2006 The International Color Consortium. All rights 
-- * reserved.
-- *
-- * Redistribution and use in source and binary forms, with or without
-- * modification, are permitted provided that the following conditions
-- * are met:
-- *
-- * 1. Redistributions of source code must retain the above copyright
-- *    notice, this list of conditions and the following disclaimer. 
-- *
-- * 2. Redistributions in binary form must reproduce the above copyright
-- *    notice, this list of conditions and the following disclaimer in
-- *    the documentation and/or other materials provided with the
-- *    distribution.
-- *
-- * 3. The end-user documentation included with the redistribution,
-- *    if any, must include the following acknowledgment:  
-- *       "This product includes software developed by the
-- *        The International Color Consortium (www.color.org)"
-- *    Alternately, this acknowledgment may appear in the software itself,
-- *    if and wherever such third-party acknowledgments normally appear.
-- *
-- * 4. The names "ICC" and "The International Color Consortium" must
-- *    not be used to imply that the ICC organization endorses or
-- *    promotes products derived from this software without prior
-- *    written permission. For written permission, please see
-- *    <http://www.color.org/>.
-- *
-- *
-- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
-- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-- * DISCLAIMED.  IN NO EVENT SHALL THE INTERNATIONAL COLOR CONSORTIUM OR
-- * ITS CONTRIBUTING MEMBERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-- * SUCH DAMAGE.
-- * ====================================================================
-- *
-- * This software consists of voluntary contributions made by many
-- * individuals on behalf of the The International Color Consortium. 
-- *
-- *
-- * Membership in the ICC is encouraged when this software is used for
-- * commercial purposes. 
-- *
-- *  
-- * For more information on The International Color Consortium, please
-- * see <http://www.color.org/>.
-- *  
-- * 
-- */
--
--////////////////////////////////////////////////////////////////////// 
--// HISTORY:
--//
--// -Initial implementation by Joseph Goldstone sumer 2007
--//
--//////////////////////////////////////////////////////////////////////
--
--#include "Vetters.h"
--
--#include <sstream>
--using namespace std;
--
--#ifndef WIN32
--#include <sys/errno.h>
--#else
--#include <string.h>
--int strerror_r(int errnum, char *str, int strsize)
--{
--  const char *errstr = strerror(errnum);
--
--  if (errstr) {
--    strncpy(str, errstr, strsize);
--    return 0;
--  }
--
--  return -1;
--}
--#define stat _stat
--#endif
--
--#include "ICC_tool_exception.h"
--
--const char*
--path_tail(const char* const s)
--{
--  const char* tail = strdup(s);
--  const char* last_slash = strrchr(tail, '/');
--  if (last_slash != NULL)
--    tail = last_slash + 1;
--  return tail;
--}
--    
--void
--vet_as_int(const char* const s, const string& name,
--           const string& description)
--{
--  istringstream ss(s);
--  int i;
--  ss >> i;
--  if (ss.fail())
--  {
--    ostringstream oss;
--    oss << "The " << name << " argument given, `" << s << "', cannot be parsed as"
--      << " an integer.  It should be an integer representing "
--      << description << ".";
--    throw ICC_tool_exception(oss.str());
--  }
--}
--
--void
--vet_as_float(const char* const s, const string& name,
--             const string& description)
--{
--  istringstream ss(s);
--  float i;
--  ss >> i;
--  if (ss.fail())
--  {
--    ostringstream oss;
--    oss << "The " << name << " argument given, `" << s << "', cannot be parsed as"
--      << " a floating-point number.  It should be a floating-point number"
--      << " representing " << description << ".";
--    throw ICC_tool_exception(oss.str());
--  }
--}
--
--#define STRERROR_BUF_SIZE 256
--off_t
--get_size(const char* const s)
--{ 
--  struct stat sb;
--  int stat_returned = stat(s, &sb);
--  if (stat_returned < 0)
--  {
--    int stat_errno = errno;
--    char strerror_buf[STRERROR_BUF_SIZE];
--    strerror_r(stat_errno, strerror_buf, STRERROR_BUF_SIZE);
--    ostringstream oss;
--    oss << "Could not access information for file `" << s << "': "
--      << strerror_buf;
--    throw ICC_tool_exception(oss.str());
--  }
--  return sb.st_size;
--}
--
--bool
--check_mode(const char* const s, mode_t mode)
--{ 
--  struct stat sb;
--  int stat_returned = stat(s, &sb);
--  if (stat_returned < 0)
--  {
--    int stat_errno = errno;
--    char strerror_buf[STRERROR_BUF_SIZE];
--    strerror_r(stat_errno, strerror_buf, STRERROR_BUF_SIZE);
--    ostringstream oss;
--    oss << "Could not access information for file `" << s << "': "
--      << strerror_buf;
--    throw ICC_tool_exception(oss.str());
--  }
--  return (sb.st_mode & mode) != 0;
--}
--
--bool
--is_existent_file_pathname(const char* const s)
--{
--  struct stat sb;
--  return stat(s, &sb) == 0;
--}
--
--bool
--is_plain_file_pathname(const char* const s)
--{
--  return check_mode(s, S_IFREG);
--}
--
--bool
--is_directory(const char* const s)
--{
--  return check_mode(s, S_IFDIR);
--}
--
--const char* const
--containing_directory(const char* const s)
--{
--  if (strlen(s) == 0)
--    throw ICC_tool_exception("name of directory passed to containing_directory"
--                             " function was zero-length.");
--  char* tmp = strdup(s);
--  // lop off any trailing seperator
--  if (tmp[strlen(tmp) - 1] == '/')
--    tmp[strlen(tmp) - 1] = 0;
--  if (strlen(tmp) == 0)
--    throw ICC_tool_exception("root directory (which has no containing"
--                             " directory) passed to containing_directory"
--                             " function");
--  char* idx = strrchr(tmp, '/');
--  if (idx != NULL)
--  {
--    *idx = 0;
--    return tmp;
--  }
--  char* current_directory = getenv("PWD");
--  if (current_directory == NULL)
--    throw ICC_tool_exception("pathname passed to containing_directory has no"
--                             " embedded seperator, and there is no value for"
--                             " PWD defined in the environment");
--  return strdup(current_directory);
--}
--
--bool
--is_readable_pathname(const char* const s)
--{
--  return check_mode(s, S_IRUSR)
--  || check_mode(s, S_IRGRP)
--  || check_mode(s, S_IROTH);
--}
--
--bool
--is_writable_pathname(const char* const s)
--{
--  return check_mode(s, S_IWUSR)
--  || check_mode(s, S_IWGRP)
--  || check_mode(s, S_IWOTH);
--}
--
--bool
--is_pathname_of_empty_file(const char* const s)
--{
--  return get_size(s) > 0;
--}
--
--void
--vet_input_file_pathname(const char* const s, const string& name,
--                        const string& description)
--{
--  if (! is_plain_file_pathname(s))
--  {
--    ostringstream oss;
--    oss << "The " << name << " argument given, `" << s << "', is not the pathname"
--      << " of a plain file (i.e. it is the pathname of a directory, or of a"
--      << " symbolic link, or of some other sort of special file.)  It should be"
--      << " " << description << ".";
--    throw ICC_tool_exception(oss.str());
--  }
--  if (! is_readable_pathname(s))
--  {
--    ostringstream oss;
--    oss << "The " << name << " argument given, `" << s << "', is not the pathname"
--      << " of a readable file (i.e. you do not have permission to read that"
--      << " file, or you do not have permission to read some directory"
--      << " containing that file.";
--      throw ICC_tool_exception(oss.str());
--  }
--  if (! is_pathname_of_empty_file(s))
--  {
--    ostringstream oss;
--    oss << "The " << name << " argument given, `" << s << "', is not the pathname"
--      << " of an existing readable file, but that file is of zero length."
--      << " The argument should be " << description << ".";
--    throw ICC_tool_exception(oss.str());
--  }
--}
--
--void
--vet_output_file_pathname(const char* const s, const string& name,
--                         const string& description,
--                         bool silent_overwrite_OK)
--{
--  const char* const container = containing_directory(s);
--  if (! is_writable_pathname(container))
--  {
--    ostringstream oss;
--    oss << "The " << name << " argument given, `" << s << "', has a directory"
--      << " component which is not writable."
--      << " The argument should be " << description << ".";
--    throw ICC_tool_exception(oss.str());
--  }
--  if (is_existent_file_pathname(s))
--  {
--    if (is_plain_file_pathname(s))
--      if (is_writable_pathname(s))
--      {
--        if (! silent_overwrite_OK)
--        {
--          ostringstream oss;
--          oss << "The " << name << " argument given, `" << s << "' is of an existing"
--            << " file."
--            << " The argument should be " << description << ".";
--          throw ICC_tool_exception(oss.str());
--        }
--      } else {
--        ostringstream oss;
--        oss << "The " << name << " argument given, `" << s << "' is of an existing"
--          << " file which is not writable."
--          << " The argument should be " << description << ".";
--        throw ICC_tool_exception(oss.str());
--      }
--  }
--}
-\ No newline at end of file
-+/*
-+ File:       Vetters.cpp
-+ 
-+ Contains:   Utility functions to handle common argument-checking tasks, in a 
-+             way that hides platform-specific details from higher-level code.
-+ 
-+ Version:    V1
-+ 
-+ Copyright:  ?? see below
-+ */
-+
-+/*
-+ * The ICC Software License, Version 0.1
-+ *
-+ *
-+ * Copyright (c) 2003-2006 The International Color Consortium. All rights 
-+ * reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ *
-+ * 1. Redistributions of source code must retain the above copyright
-+ *    notice, this list of conditions and the following disclaimer. 
-+ *
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ *    notice, this list of conditions and the following disclaimer in
-+ *    the documentation and/or other materials provided with the
-+ *    distribution.
-+ *
-+ * 3. The end-user documentation included with the redistribution,
-+ *    if any, must include the following acknowledgment:  
-+ *       "This product includes software developed by the
-+ *        The International Color Consortium (www.color.org)"
-+ *    Alternately, this acknowledgment may appear in the software itself,
-+ *    if and wherever such third-party acknowledgments normally appear.
-+ *
-+ * 4. The names "ICC" and "The International Color Consortium" must
-+ *    not be used to imply that the ICC organization endorses or
-+ *    promotes products derived from this software without prior
-+ *    written permission. For written permission, please see
-+ *    <http://www.color.org/>.
-+ *
-+ *
-+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
-+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-+ * DISCLAIMED.  IN NO EVENT SHALL THE INTERNATIONAL COLOR CONSORTIUM OR
-+ * ITS CONTRIBUTING MEMBERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
-+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+ * ====================================================================
-+ *
-+ * This software consists of voluntary contributions made by many
-+ * individuals on behalf of the The International Color Consortium. 
-+ *
-+ *
-+ * Membership in the ICC is encouraged when this software is used for
-+ * commercial purposes. 
-+ *
-+ *  
-+ * For more information on The International Color Consortium, please
-+ * see <http://www.color.org/>.
-+ *  
-+ * 
-+ */
-+
-+////////////////////////////////////////////////////////////////////// 
-+// HISTORY:
-+//
-+// -Initial implementation by Joseph Goldstone sumer 2007
-+//
-+//////////////////////////////////////////////////////////////////////
-+
-+#include "Vetters.h"
-+
-+#include <sstream>
-+using namespace std;
-+
-+#ifndef WIN32
-+#ifdef sun
-+#include <errno.h>
-+#else
-+#include <sys/errno.h>
-+#endif
-+#else
-+#include <string.h>
-+#define stat _stat
-+#endif
-+
-+#if defined WIN32 || defined sun
-+int strerror_r(int errnum, char *str, int strsize)
-+{
-+  const char *errstr = strerror(errnum);
-+
-+  if (errstr) {
-+    strncpy(str, errstr, strsize);
-+    return 0;
-+  }
-+
-+  return -1;
-+}
-+#endif
-+
-+#include "ICC_tool_exception.h"
-+
-+const char*
-+path_tail(const char* const s)
-+{
-+  const char* tail = strdup(s);
-+  const char* last_slash = strrchr(tail, '/');
-+  if (last_slash != NULL)
-+    tail = last_slash + 1;
-+  return tail;
-+}
-+    
-+void
-+vet_as_int(const char* const s, const string& name,
-+           const string& description)
-+{
-+  istringstream ss(s);
-+  int i;
-+  ss >> i;
-+  if (ss.fail())
-+  {
-+    ostringstream oss;
-+    oss << "The " << name << " argument given, `" << s << "', cannot be parsed as"
-+      << " an integer.  It should be an integer representing "
-+      << description << ".";
-+    throw ICC_tool_exception(oss.str());
-+  }
-+}
-+
-+void
-+vet_as_float(const char* const s, const string& name,
-+             const string& description)
-+{
-+  istringstream ss(s);
-+  float i;
-+  ss >> i;
-+  if (ss.fail())
-+  {
-+    ostringstream oss;
-+    oss << "The " << name << " argument given, `" << s << "', cannot be parsed as"
-+      << " a floating-point number.  It should be a floating-point number"
-+      << " representing " << description << ".";
-+    throw ICC_tool_exception(oss.str());
-+  }
-+}
-+
-+#define STRERROR_BUF_SIZE 256
-+off_t
-+get_size(const char* const s)
-+{ 
-+  struct stat sb;
-+  int stat_returned = stat(s, &sb);
-+  if (stat_returned < 0)
-+  {
-+    int stat_errno = errno;
-+    char strerror_buf[STRERROR_BUF_SIZE];
-+    strerror_r(stat_errno, strerror_buf, STRERROR_BUF_SIZE);
-+    ostringstream oss;
-+    oss << "Could not access information for file `" << s << "': "
-+      << strerror_buf;
-+    throw ICC_tool_exception(oss.str());
-+  }
-+  return sb.st_size;
-+}
-+
-+bool
-+check_mode(const char* const s, mode_t mode)
-+{ 
-+  struct stat sb;
-+  int stat_returned = stat(s, &sb);
-+  if (stat_returned < 0)
-+  {
-+    int stat_errno = errno;
-+    char strerror_buf[STRERROR_BUF_SIZE];
-+    strerror_r(stat_errno, strerror_buf, STRERROR_BUF_SIZE);
-+    ostringstream oss;
-+    oss << "Could not access information for file `" << s << "': "
-+      << strerror_buf;
-+    throw ICC_tool_exception(oss.str());
-+  }
-+  return (sb.st_mode & mode) != 0;
-+}
-+
-+bool
-+is_existent_file_pathname(const char* const s)
-+{
-+  struct stat sb;
-+  return stat(s, &sb) == 0;
-+}
-+
-+bool
-+is_plain_file_pathname(const char* const s)
-+{
-+  return check_mode(s, S_IFREG);
-+}
-+
-+bool
-+is_directory(const char* const s)
-+{
-+  return check_mode(s, S_IFDIR);
-+}
-+
-+const char* const
-+containing_directory(const char* const s)
-+{
-+  if (strlen(s) == 0)
-+    throw ICC_tool_exception("name of directory passed to containing_directory"
-+                             " function was zero-length.");
-+  char* tmp = strdup(s);
-+  // lop off any trailing seperator
-+  if (tmp[strlen(tmp) - 1] == '/')
-+    tmp[strlen(tmp) - 1] = 0;
-+  if (strlen(tmp) == 0)
-+    throw ICC_tool_exception("root directory (which has no containing"
-+                             " directory) passed to containing_directory"
-+                             " function");
-+  char* idx = strrchr(tmp, '/');
-+  if (idx != NULL)
-+  {
-+    *idx = 0;
-+    return tmp;
-+  }
-+  char* current_directory = getenv("PWD");
-+  if (current_directory == NULL)
-+    throw ICC_tool_exception("pathname passed to containing_directory has no"
-+                             " embedded seperator, and there is no value for"
-+                             " PWD defined in the environment");
-+  return strdup(current_directory);
-+}
-+
-+bool
-+is_readable_pathname(const char* const s)
-+{
-+  return check_mode(s, S_IRUSR)
-+  || check_mode(s, S_IRGRP)
-+  || check_mode(s, S_IROTH);
-+}
-+
-+bool
-+is_writable_pathname(const char* const s)
-+{
-+  return check_mode(s, S_IWUSR)
-+  || check_mode(s, S_IWGRP)
-+  || check_mode(s, S_IWOTH);
-+}
-+
-+bool
-+is_pathname_of_empty_file(const char* const s)
-+{
-+  return get_size(s) > 0;
-+}
-+
-+void
-+vet_input_file_pathname(const char* const s, const string& name,
-+                        const string& description)
-+{
-+  if (! is_plain_file_pathname(s))
-+  {
-+    ostringstream oss;
-+    oss << "The " << name << " argument given, `" << s << "', is not the pathname"
-+      << " of a plain file (i.e. it is the pathname of a directory, or of a"
-+      << " symbolic link, or of some other sort of special file.)  It should be"
-+      << " " << description << ".";
-+    throw ICC_tool_exception(oss.str());
-+  }
-+  if (! is_readable_pathname(s))
-+  {
-+    ostringstream oss;
-+    oss << "The " << name << " argument given, `" << s << "', is not the pathname"
-+      << " of a readable file (i.e. you do not have permission to read that"
-+      << " file, or you do not have permission to read some directory"
-+      << " containing that file.";
-+      throw ICC_tool_exception(oss.str());
-+  }
-+  if (! is_pathname_of_empty_file(s))
-+  {
-+    ostringstream oss;
-+    oss << "The " << name << " argument given, `" << s << "', is not the pathname"
-+      << " of an existing readable file, but that file is of zero length."
-+      << " The argument should be " << description << ".";
-+    throw ICC_tool_exception(oss.str());
-+  }
-+}
-+
-+void
-+vet_output_file_pathname(const char* const s, const string& name,
-+                         const string& description,
-+                         bool silent_overwrite_OK)
-+{
-+  const char* const container = containing_directory(s);
-+  if (! is_writable_pathname(container))
-+  {
-+    ostringstream oss;
-+    oss << "The " << name << " argument given, `" << s << "', has a directory"
-+      << " component which is not writable."
-+      << " The argument should be " << description << ".";
-+    throw ICC_tool_exception(oss.str());
-+  }
-+  if (is_existent_file_pathname(s))
-+  {
-+    if (is_plain_file_pathname(s))
-+      if (is_writable_pathname(s))
-+      {
-+        if (! silent_overwrite_OK)
-+        {
-+          ostringstream oss;
-+          oss << "The " << name << " argument given, `" << s << "' is of an existing"
-+            << " file."
-+            << " The argument should be " << description << ".";
-+          throw ICC_tool_exception(oss.str());
-+        }
-+      } else {
-+        ostringstream oss;
-+        oss << "The " << name << " argument given, `" << s << "' is of an existing"
-+          << " file which is not writable."
-+          << " The argument should be " << description << ".";
-+        throw ICC_tool_exception(oss.str());
-+      }
-+  }
-+}
-diff -ru misc/SampleICC-1.3.2/Contrib/ICC_utils/Vetters.h misc/build/SampleICC-1.3.2/Contrib/ICC_utils/Vetters.h
---- misc/SampleICC-1.3.2/Contrib/ICC_utils/Vetters.h	2007-08-20 15:04:53.000000000 -0500
-+++ misc/build/SampleICC-1.3.2/Contrib/ICC_utils/Vetters.h	2012-01-24 10:39:23.000000000 -0500
-@@ -83,6 +83,7 @@
- #include <string>
- #include <sys/types.h>
- #include <sys/stat.h>
-+#include <stdlib.h>
- 
- #ifdef WIN32
- typedef unsigned short mode_t;
-Only in misc/build/SampleICC-1.3.2/Contrib/ICC_utils: makefile.mk
-diff -ru misc/SampleICC-1.3.2/Contrib/Makefile.in misc/build/SampleICC-1.3.2/Contrib/Makefile.in
---- misc/SampleICC-1.3.2/Contrib/Makefile.in	2007-08-20 15:10:37.000000000 -0500
-+++ misc/build/SampleICC-1.3.2/Contrib/Makefile.in	2012-01-24 10:39:23.000000000 -0500
-@@ -103,18 +103,12 @@
- 
- SUBDIRS = \
- 	ICC_utils \
--	CmdLine \
--	examples \
--	Mac_OS_X \
--	tests
-+	CmdLine
- 
- 
- DIST_SUBDIRS = \
- 	ICC_utils \
--	CmdLine \
--	examples \
--	Mac_OS_X \
--	tests
-+	CmdLine
- 
- subdir = Contrib
- mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-diff -ru misc/SampleICC-1.3.2/IccProfLib/IccCmm.cpp misc/build/SampleICC-1.3.2/IccProfLib/IccCmm.cpp
---- misc/SampleICC-1.3.2/IccProfLib/IccCmm.cpp	2007-08-20 15:05:00.000000000 -0500
-+++ misc/build/SampleICC-1.3.2/IccProfLib/IccCmm.cpp	2012-01-24 10:39:23.000000000 -0500
-@@ -79,6 +79,8 @@
- #pragma warning( disable: 4786) //disable warning in <list.h>
- #endif
- 
-+#include <stdlib.h>
-+#include <string.h>
- #include "IccCmm.h"
- #include "IccTag.h"
- #include "IccIO.h"
-diff -ru misc/SampleICC-1.3.2/IccProfLib/IccIO.cpp misc/build/SampleICC-1.3.2/IccProfLib/IccIO.cpp
---- misc/SampleICC-1.3.2/IccProfLib/IccIO.cpp	2007-08-20 15:05:00.000000000 -0500
-+++ misc/build/SampleICC-1.3.2/IccProfLib/IccIO.cpp	2012-01-24 10:39:23.000000000 -0500
-@@ -78,7 +78,7 @@
- #include "IccIO.h"
- #include "IccUtil.h"
- #include <stdlib.h>
--#include <memory.h>
-+#include <memory>
- #include <string.h>
- 
- #ifndef __max
-diff -ru misc/SampleICC-1.3.2/IccProfLib/IccIO.h misc/build/SampleICC-1.3.2/IccProfLib/IccIO.h
---- misc/SampleICC-1.3.2/IccProfLib/IccIO.h	2007-08-20 15:05:00.000000000 -0500
-+++ misc/build/SampleICC-1.3.2/IccProfLib/IccIO.h	2012-01-24 10:39:23.000000000 -0500
-@@ -79,6 +79,7 @@
- #define _ICCIO_H
- 
- #include "IccDefs.h"
-+#include "memory"
- #include "stdio.h"
- 
- #ifdef USESAMPLEICCNAMESPACE
-diff -ru misc/SampleICC-1.3.2/IccProfLib/IccMpeACS.cpp misc/build/SampleICC-1.3.2/IccProfLib/IccMpeACS.cpp
---- misc/SampleICC-1.3.2/IccProfLib/IccMpeACS.cpp	2007-08-20 15:05:00.000000000 -0500
-+++ misc/build/SampleICC-1.3.2/IccProfLib/IccMpeACS.cpp	2012-01-24 10:39:23.000000000 -0500
-@@ -136,17 +136,17 @@
-   icChar sigBuf[30];
- 
-   if (GetBAcsSig())
--    sDescription += "ELEM_bACS\r\n";
-+    sDescription += "ELEM_bACS\n";
-   else
--    sDescription += "ELEM_eACS\r\n";
-+    sDescription += "ELEM_eACS\n";
- 
-   icGetSig(sigBuf, m_signature);
-   sDescription += "  Signature = ";
-   sDescription += sigBuf;
--  sDescription += "\r\n";
-+  sDescription += "\n";
- 
-   if (m_pData) {
--    sDescription += "\r\nData Follows:\r\n";
-+    sDescription += "\nData Follows:\n";
- 
-     icMemDump(sDescription, m_pData, m_nDataSize);
-   }
-diff -ru misc/SampleICC-1.3.2/IccProfLib/IccMpeBasic.cpp misc/build/SampleICC-1.3.2/IccProfLib/IccMpeBasic.cpp
---- misc/SampleICC-1.3.2/IccProfLib/IccMpeBasic.cpp	2007-08-20 15:05:00.000000000 -0500
-+++ misc/build/SampleICC-1.3.2/IccProfLib/IccMpeBasic.cpp	2012-01-24 10:39:23.000000000 -0500
-@@ -218,43 +218,43 @@
-   sprintf(buf, "%.8f", m_endPoint);
-   sDescription += buf;
-   }
--  sprintf(buf, "]\r\nFunctionType: %04Xh\r\n", m_nFunctionType);
-+  sprintf(buf, "]\nFunctionType: %04Xh\n", m_nFunctionType);
-   sDescription += buf;
- 
-   switch(m_nFunctionType) {
-   case 0x0000:
-     if (m_params[1]==0.0 && m_params[2]==0.0)
--      sprintf(buf, "Y = %.8f\r\n\r\n", m_params[3]);
-+      sprintf(buf, "Y = %.8f\n\n", m_params[3]);
-     else if (m_params[0]==1.0 && m_params[1]==1.0 && m_params[2]==0.0 && m_params[3]==0.0)
--      sprintf(buf, "Y = X\r\n\r\n");
-+      sprintf(buf, "Y = X\n\n");
-     else if (m_params[0]==1.0 && m_params[2]==0.0)
--      sprintf(buf, "Y = %.8f * X + %.8f\r\n\r\n", 
-+      sprintf(buf, "Y = %.8f * X + %.8f\n\n", 
-               m_params[1], m_params[3]);
-     else
--      sprintf(buf, "Y = (%.8f * X + %.8f)^%.4f + %.8f\r\n\r\n", 
-+      sprintf(buf, "Y = (%.8f * X + %.8f)^%.4f + %.8f\n\n", 
-               m_params[1], m_params[2], m_params[0], m_params[3]);
-     sDescription += buf;
-     return;
- 
-   case 0x0001:
--    sprintf(buf, "Y = %.8f * log (%.8f * (X ^ %.8f)  + %.8f) + %.8f\r\n\r\n",
-+    sprintf(buf, "Y = %.8f * log (%.8f * (X ^ %.8f)  + %.8f) + %.8f\n\n",
-             m_params[1], m_params[2], m_params[0], m_params[3], m_params[4]);
-     sDescription += buf;
-     return;
- 
-   case 0x0002:
--    sprintf(buf, "Y = %.8f * (%.8f ^ (%.8f * X + %.8f)) + %.8f\r\n\r\n",
-+    sprintf(buf, "Y = %.8f * (%.8f ^ (%.8f * X + %.8f)) + %.8f\n\n",
-             m_params[0], m_params[1], m_params[2], m_params[3], m_params[4]);
-     sDescription += buf;
-     return;
- 
-   default:
-     int i;
--    sprintf(buf, "Unknown Function with %d parameters:\r\n\r\n", m_nParameters);
-+    sprintf(buf, "Unknown Function with %d parameters:\n\n", m_nParameters);
-     sDescription += buf;
- 
-     for (i=0; i<m_nParameters; i++) {
--      sprintf(buf, "Param[%d] = %.8lf\r\n\r\n", i, m_params[i]);
-+      sprintf(buf, "Param[%d] = %.8lf\n\n", i, m_params[i]);
-       sDescription += buf;
-     }
-   }
-@@ -496,7 +496,7 @@
-   if (m_nReserved || m_nReserved2) {
-     sReport += icValidateWarningMsg;
-     sReport += sSigName;
--    sReport += " formula curve has non zero reserved data.\r\n";
-+    sReport += " formula curve has non zero reserved data.\n";
-     rv = icValidateWarning;
-   }
- 
-@@ -505,13 +505,13 @@
-     if (!m_params || m_nParameters<4) {
-       sReport += icValidateCriticalErrorMsg;
-       sReport += sSigName;
--      sReport += " formula curve has Invalid formulaCurveSegment parameters.\r\n";
-+      sReport += " formula curve has Invalid formulaCurveSegment parameters.\n";
-       rv = icValidateCriticalError;
-     }
-     else if (m_nParameters > 4) {
-       sReport += icValidateWarningMsg;
-       sReport += sSigName;
--      sReport += " formula curve has too many formulaCurveSegment parameters.\r\n";
-+      sReport += " formula curve has too many formulaCurveSegment parameters.\n";
-       rv = icValidateWarning;
-     }
-     break;
-@@ -520,13 +520,13 @@
-     if (!m_params || m_nParameters<5) {
-       sReport += icValidateCriticalErrorMsg;
-       sReport += sSigName;
--      sReport += " formula curve has Invalid formulaCurveSegment parameters.\r\n";
-+      sReport += " formula curve has Invalid formulaCurveSegment parameters.\n";
-       rv = icValidateCriticalError;
-     }
-     else if (m_nParameters > 5) {
-       sReport += icValidateWarningMsg;
-       sReport += sSigName;
--      sReport += " formula curve has too many formulaCurveSegment parameters.\r\n";
-+      sReport += " formula curve has too many formulaCurveSegment parameters.\n";
-       rv = icValidateWarning;
-     }
-     break;
-@@ -535,13 +535,13 @@
-     if (!m_params || m_nParameters<5) {
-       sReport += icValidateCriticalErrorMsg;
-       sReport += sSigName;
--      sReport += " formula curve has Invalid formulaCurveSegment parameters.\r\n";
-+      sReport += " formula curve has Invalid formulaCurveSegment parameters.\n";
-       rv = icValidateCriticalError;
-     }
-     else if (m_nParameters > 5) {
-       sReport += icValidateWarningMsg;
-       sReport += sSigName;
--      sReport += " formula curve has too many formulaCurveSegment parameters.\r\n";
-+      sReport += " formula curve has too many formulaCurveSegment parameters.\n";
-       rv = icValidateWarning;
-     }
-     break;
-@@ -551,7 +551,7 @@
-       icChar buf[128];
-       sReport += icValidateCriticalErrorMsg;
-       sReport += sSigName;
--      sprintf(buf, " formula curve uses unknown formulaCurveSegment function type %d\r\n", m_nFunctionType);
-+      sprintf(buf, " formula curve uses unknown formulaCurveSegment function type %d\n", m_nFunctionType);
-       sReport += buf;
-       rv = icValidateCriticalError;
-     }
-@@ -727,7 +727,7 @@
-     sDescription += buf;
-     }
- 
--    sprintf(buf, "]\r\n");
-+    sprintf(buf, "]\n");
-     sDescription += buf;
-   }
-   else {
-@@ -744,9 +744,9 @@
-     sprintf(buf, "%.8f", m_endPoint);
-     sDescription += buf;
-     }
--    sprintf(buf, "]\r\n");
-+    sprintf(buf, "]\n");
-     sDescription += buf;
--    sDescription += "IN  OUT\r\n";
-+    sDescription += "IN  OUT\n";
- 
-     icUInt32Number i;
- 
-@@ -754,11 +754,11 @@
-     icFloatNumber last = (icFloatNumber)(m_nCount-1);
- 
-     for (i=0; i<m_nCount; i++) {
--      sprintf(buf, "%.8f %.8f\r\n", m_startPoint + (icFloatNumber)i*range/last, m_pSamples[i]);
-+      sprintf(buf, "%.8f %.8f\n", m_startPoint + (icFloatNumber)i*range/last, m_pSamples[i]);
-       sDescription += buf;
-     }
-   }
--  sDescription += "\r\n";
-+  sDescription += "\n";
- }
- 
- /**
-@@ -910,20 +910,20 @@
-   if (m_nReserved) {
-     sReport += icValidateWarningMsg;
-     sReport += sSigName;
--    sReport += " sampled curve has non zero reserved data.\r\n";
-+    sReport += " sampled curve has non zero reserved data.\n";
-     rv = icValidateWarning;
-   }
- 
-   if (m_nCount<2) {
-     sReport += icValidateCriticalErrorMsg;
-     sReport += sSigName;
--    sReport += " sampled curve has too few sample points.\r\n";
-+    sReport += " sampled curve has too few sample points.\n";
-     rv = icValidateCriticalError;
-   }
-   else if (m_endPoint-m_startPoint == 0.0) {
-     sReport += icValidateWarningMsg;
-     sReport += sSigName;
--    sReport += " sampled curve has a range of zero.\r\n";
-+    sReport += " sampled curve has a range of zero.\n";
-     rv = icMaxStatus(rv, icValidateWarning);
-   }
- 
-@@ -1054,7 +1054,7 @@
- {
-   CIccCurveSegmentList::iterator i;
- 
--  sDescription += "BEGIN_CURVE\r\n";
-+  sDescription += "BEGIN_CURVE\n";
-   for (i=m_list->begin(); i!=m_list->end(); i++) {
-     (*i)->Describe(sDescription);
-   }
-@@ -1342,14 +1342,14 @@
-   if (m_nReserved1 || m_nReserved2) {
-     sReport += icValidateWarningMsg;
-     sReport += sSigName;
--    sReport += " Segmented curve has non zero reserved data.\r\n";
-+    sReport += " Segmented curve has non zero reserved data.\n";
-     rv = icValidateWarning;
-   }
- 
-   if (m_list->size()==0) {
-     sReport += icValidateCriticalErrorMsg;
-     sReport += sSigName;
--    sReport += " Has Empty CurveSegment!\r\n";
-+    sReport += " Has Empty CurveSegment!\n";
-     return icValidateCriticalError;
-   }
- 
-@@ -1599,11 +1599,11 @@
-     icChar buf[81];
-     int i;
- 
--    sprintf(buf, "BEGIN_CURVE_SET %d\r\n", m_nInputChannels);
-+    sprintf(buf, "BEGIN_CURVE_SET %d\n", m_nInputChannels);
-     sDescription += buf;
- 
-     for (i=0; i<m_nInputChannels; i++) {
--      sprintf(buf, "Curve %d of %d\r\n", i+1, m_nInputChannels);
-+      sprintf(buf, "Curve %d of %d\n", i+1, m_nInputChannels);
-       sDescription += buf;
-       if (m_curve[i]) {
-         m_curve[i]->Describe(sDescription);
-@@ -1877,7 +1877,7 @@
-     sReport += " - Element ";
-     sSigName = Info.GetSigName(GetType());
-     sReport += sSigName;
--    sReport += " Has Empty Curve Element(s)!\r\n";
-+    sReport += " Has Empty Curve Element(s)!\n";
-     return icValidateCriticalError;
-   }
- 
-@@ -2042,7 +2042,7 @@
-   int i, j;
-   icFloatNumber *data = m_pMatrix;
- 
--  sprintf(buf, "BEGIN_ELEM_MATRIX %d %d\r\n", m_nInputChannels, m_nOutputChannels);
-+  sprintf(buf, "BEGIN_ELEM_MATRIX %d %d\n", m_nInputChannels, m_nOutputChannels);
-   sDescription += buf;
- 
-   for (j=0; j<m_nOutputChannels; j++) {
-@@ -2052,7 +2052,7 @@
-       sprintf(buf, "%12.8lf", data[i]);
-       sDescription += buf;
-     }
--    sprintf(buf, "  +  %12.8lf\r\n", m_pConstants[j]);
-+    sprintf(buf, "  +  %12.8lf\n", m_pConstants[j]);
-     sDescription += buf;
-     data += i;
-   }
-@@ -2273,7 +2273,7 @@
-     sReport += " - Element ";
-     sSigName = Info.GetSigName(GetType());
-     sReport += sSigName;
--    sReport += " Has Empty Matrix data!\r\n";
-+    sReport += " Has Empty Matrix data!\n";
-     return icValidateCriticalError;
-   }
- 
-@@ -2620,7 +2620,7 @@
-     sReport += " - Element ";
-     sSigName = Info.GetSigName(GetType());
-     sReport += sSigName;
--    sReport += " Has No CLUT!\r\n";
-+    sReport += " Has No CLUT!\n";
-     return icValidateCriticalError;
-   }
- 
-diff -ru misc/SampleICC-1.3.2/IccProfLib/IccProfLibConf.h misc/build/SampleICC-1.3.2/IccProfLib/IccProfLibConf.h
---- misc/SampleICC-1.3.2/IccProfLib/IccProfLibConf.h	2007-08-20 15:05:00.000000000 -0500
-+++ misc/build/SampleICC-1.3.2/IccProfLib/IccProfLibConf.h	2012-01-24 10:39:23.000000000 -0500
-@@ -107,20 +107,23 @@
- 
- #else // non-PC, perhaps Mac or Linux
- 
--  #define ICCUINT64 unsigned long long
--  #define ICCINT64  long long
--  #define ICUINT64TYPE unsigned long long
--  #define ICINT64TYPE long long
--
--  #if defined(__APPLE__)
--    #if  defined(__LITTLE_ENDIAN__)
--      #define ICC_BYTE_ORDER_LITTLE_ENDIAN
--    #else
--      #define ICC_BYTE_ORDER_BIG_ENDIAN
--    #endif
--  #else
--    #define ICC_BYTE_ORDER_LITTLE_ENDIAN
--  #endif
-+#include <sal/types.h>
-+#include <osl/endian.h>
-+
-+  #define ICCUINT64 sal_uInt64
-+  #define ICCINT64 sal_Int64
-+  #define ICUINT64TYPE sal_uInt64
-+  #define ICINT64TYPE sal_Int64
-+  #define ICINT32TYPE sal_Int32
-+  #define ICUINT32TYPE sal_uInt32
-+
-+#if defined(_LITTLE_ENDIAN)
-+#    define ICC_BYTE_ORDER_LITTLE_ENDIAN
-+#elif defined(_BIG_ENDIAN)
-+#    define ICC_BYTE_ORDER_BIG_ENDIAN
-+#else
-+#    error "ENDIAN unknown"
-+#endif
- 
-   #define ICCPROFLIB_API
-   #define ICCPROFLIB_EXTERN
-diff -ru misc/SampleICC-1.3.2/IccProfLib/IccProfile.cpp misc/build/SampleICC-1.3.2/IccProfLib/IccProfile.cpp
---- misc/SampleICC-1.3.2/IccProfLib/IccProfile.cpp	2007-08-20 15:05:00.000000000 -0500
-+++ misc/build/SampleICC-1.3.2/IccProfLib/IccProfile.cpp	2012-01-24 10:39:23.000000000 -0500
-@@ -567,7 +567,7 @@
- 
-   if (!ReadBasic(pIO)) {
-     sReport += icValidateCriticalErrorMsg;
--    sReport += " - Unable to read profile!**\r\n\tProfile has invalid structure!\r\n";
-+    sReport += " - Unable to read profile!**\n\tProfile has invalid structure!\n";
-     Cleanup();
- 
-     return icValidateCriticalError;
-@@ -576,7 +576,7 @@
-   // Check profile header
-   if (!CheckFileSize(pIO)) {
-     sReport += icValidateNonCompliantMsg;
--    sReport += "Bad Header File Size\r\n";
-+    sReport += "Bad Header File Size\n";
-     rv = icMaxStatus(rv, icValidateNonCompliant);
-   }
- 
-@@ -588,7 +588,7 @@
-     CalcProfileID(pIO, &profileID);
-     if (strncmp((char*)profileID.ID8, (char*)m_Header.profileID.ID8, 16) != 0) {
-       sReport += icValidateNonCompliantMsg;
--      sReport += "Bad Profile ID\r\n";
-+      sReport += "Bad Profile ID\n";
- 
-       rv = icMaxStatus(rv, icValidateNonCompliant);
-     }
-@@ -601,7 +601,7 @@
-       sReport += icValidateCriticalErrorMsg;
-       sReport += " - ";
-       sReport += Info.GetTagSigName(i->TagInfo.sig);
--      sReport += " - Tag has invalid structure!\r\n";
-+      sReport += " - Tag has invalid structure!\n";
- 
-       rv = icMaxStatus(rv, icValidateCriticalError);
-     }
-@@ -1026,14 +1026,14 @@
- 
-   default:
-     sReport += icValidateCriticalErrorMsg;
--    sprintf(buf, " - %s: Unknown profile class!\r\n", Info.GetProfileClassSigName(m_Header.deviceClass));
-+    sprintf(buf, " - %s: Unknown profile class!\n", Info.GetProfileClassSigName(m_Header.deviceClass));
-     sReport += buf;
-     rv = icMaxStatus(rv, icValidateCriticalError);
-   }
- 
-   if (!Info.IsValidSpace(m_Header.colorSpace)) {
-     sReport += icValidateCriticalErrorMsg;
--    sprintf(buf, " - %s: Unknown color space!\r\n", Info.GetColorSpaceSigName(m_Header.colorSpace));
-+    sprintf(buf, " - %s: Unknown color space!\n", Info.GetColorSpaceSigName(m_Header.colorSpace));
-     sReport += buf;
-     rv = icMaxStatus(rv, icValidateCriticalError);
-   }
-@@ -1041,7 +1041,7 @@
-   if (m_Header.deviceClass==icSigLinkClass) {
-     if (!Info.IsValidSpace(m_Header.pcs)) {
-       sReport += icValidateCriticalErrorMsg;
--      sprintf(buf, " - %s: Unknown pcs color space!\r\n", Info.GetColorSpaceSigName(m_Header.pcs));
-+      sprintf(buf, " - %s: Unknown pcs color space!\n", Info.GetColorSpaceSigName(m_Header.pcs));
-       sReport += buf;
-       rv = icMaxStatus(rv, icValidateCriticalError);
-     }
-@@ -1049,7 +1049,7 @@
-   else {
-     if (m_Header.pcs!=icSigXYZData && m_Header.pcs!=icSigLabData) {
-       sReport += icValidateCriticalErrorMsg;
--      sprintf(buf, " - %s: Invalid pcs color space!\r\n", Info.GetColorSpaceSigName(m_Header.pcs));
-+      sprintf(buf, " - %s: Invalid pcs color space!\n", Info.GetColorSpaceSigName(m_Header.pcs));
-       sReport += buf;
-       rv = icMaxStatus(rv, icValidateCriticalError);
-     }
-@@ -1068,7 +1068,7 @@
-   
-   default:
-     sReport += icValidateWarningMsg;
--    sprintf(buf, " - %s: Unknown platform signature.\r\n", Info.GetPlatformSigName(m_Header.platform));
-+    sprintf(buf, " - %s: Unknown platform signature.\n", Info.GetPlatformSigName(m_Header.platform));
-     sReport += buf;
-     rv = icMaxStatus(rv, icValidateWarning);
-   }
-@@ -1095,7 +1095,7 @@
- 
-   default:
-     sReport += icValidateWarningMsg;
--    sprintf(buf, " - %s: Unregisterd CMM signature.\r\n", Info.GetCmmSigName((icCmmSignature)m_Header.cmmId));
-+    sprintf(buf, " - %s: Unregisterd CMM signature.\n", Info.GetCmmSigName((icCmmSignature)m_Header.cmmId));
-     sReport += buf;
-     rv = icMaxStatus(rv, icValidateWarning);
-   }
-@@ -1109,7 +1109,7 @@
- 
-   default:
-     sReport += icValidateCriticalErrorMsg;
--    sprintf(buf, " - %s: Unknown rendering intent!\r\n", Info.GetRenderingIntentName((icRenderingIntent)m_Header.renderingIntent));
-+    sprintf(buf, " - %s: Unknown rendering intent!\n", Info.GetRenderingIntentName((icRenderingIntent)m_Header.renderingIntent));
-     sReport += buf;
-     rv = icMaxStatus(rv, icValidateCriticalError);
-   }
-@@ -1120,7 +1120,7 @@
-   icFloatNumber Z = icFtoD(m_Header.illuminant.Z);
-   if (X<0.9640 || X>0.9644 || Y!=1.0 || Z<0.8247 || Z>0.8251) {
-     sReport += icValidateNonCompliantMsg;
--    sReport += " - Non D50 Illuminant XYZ values.\r\n";
-+    sReport += " - Non D50 Illuminant XYZ values.\n";
-     rv = icMaxStatus(rv, icValidateNonCompliant);
-   }
- 
-@@ -1130,7 +1130,7 @@
-   }
-   if (sum) {
-     sReport += icValidateNonCompliantMsg;
--    sReport += " - Reserved value must be zero.\r\n";
-+    sReport += " - Reserved value must be zero.\n";
-     rv = icMaxStatus(rv, icValidateNonCompliant);
-   }
- 
-@@ -1163,7 +1163,7 @@
-     {
-       sReport += icValidateWarningMsg;
-       sReport += buf;
--      sReport += " - Tag exclusion test failed.\r\n";
-+      sReport += " - Tag exclusion test failed.\n";
-       rv = false;
-     }
-   }
-@@ -1177,7 +1177,7 @@
-       {
-         sReport += icValidateWarningMsg;
-         sReport += buf;
--        sReport += " - Tag exclusion test failed.\r\n";
-+        sReport += " - Tag exclusion test failed.\n";
-         rv = false;
-       }
-       break;
-@@ -1192,7 +1192,7 @@
-       {
-         sReport += icValidateWarningMsg;
-         sReport += buf;
--        sReport += " - Tag exclusion test failed.\r\n";
-+        sReport += " - Tag exclusion test failed.\n";
-         rv = false;
-       }
-       break;
-@@ -1234,7 +1234,7 @@
-     if (!IsTypeValid(tagsig, typesig)) {
-       sReport += icValidateNonCompliantMsg;
-       sReport += buf;
--      sprintf(buf," - %s: Invalid tag type (Might be critical!).\r\n", Info.GetTagTypeSigName(typesig));
-+      sprintf(buf," - %s: Invalid tag type (Might be critical!).\n", Info.GetTagTypeSigName(typesig));
-       sReport += buf;
-       rv = icMaxStatus(rv, icValidateNonCompliant);
-     }
-@@ -1477,7 +1477,7 @@
- {
-   if (m_Tags->size() <= 0) {
-     sReport += icValidateCriticalErrorMsg;
--    sReport += "No tags present.\r\n";
-+    sReport += "No tags present.\n";
-     return icValidateCriticalError;
-   }
- 
-@@ -1486,7 +1486,7 @@
-   if (!GetTag(icSigProfileDescriptionTag) ||
-      !GetTag(icSigCopyrightTag)) {
+*** misc/SampleICC-1.3.2/configure	Mon Aug 20 22:10:59 2007
+--- misc/build/SampleICC-1.3.2/configure	Fri Jan 25 14:23:09 2008
+***************
+*** 19991,19997 ****
+  
+  
+  
+!                                                                                                                                                                                                                                                                     ac_config_files="$ac_config_files Makefile IccProfLib/Makefile Tools/Makefile Tools/CmdLine/Makefile Tools/CmdLine/IccApplyNamedCmm/Makefile Tools/CmdLine/IccApplyProfiles/Makefile Tools/CmdLine/IccDumpProfile/Makefile Tools/CmdLine/IccProfLibTest/Makefile Tools/CmdLine/IccStripUnknownTags/Makefile Tools/CmdLine/IccV4ToMPE/Makefile Contrib/Makefile Contrib/CmdLine/Makefile Contrib/CmdLine/create_CLUT_profile/Makefile Contrib/CmdLine/create_CLUT_profile_from_probe/Makefile Contrib/CmdLine/create_display_profile/Makefile Contrib/ICC_utils/Makefile Contrib/Mac_OS_X/Makefile Contrib/Mac_OS_X/create_probe/Makefile Contrib/Mac_OS_X/extract_probe_data/Makefile Contrib/examples/Makefile Contrib/examples/RSR/Makefile Contrib/t
 ests/Makefile Contrib/tests/flatten_AToB_tag/Makefile Contrib/tests/generate_device_codes/Makefile Contrib/tests/reconstruct_measurements/Makefile Contrib/tests/round_trip_PCS_LAB/Makefile"
+  cat >confcache <<\_ACEOF
+  # This file is a shell script that caches the results of configure
+  # tests run on this system so they can be shared between configure
+--- 19991,19997 ----
+  
+  
+  
+!                                                                                                                                                                                                                                                                     ac_config_files="$ac_config_files Makefile IccProfLib/Makefile Tools/Makefile Tools/CmdLine/Makefile Tools/CmdLine/IccDumpProfile/Makefile Tools/CmdLine/IccProfLibTest/Makefile Tools/CmdLine/IccStripUnknownTags/Makefile Tools/CmdLine/IccV4ToMPE/Makefile Contrib/Makefile Contrib/CmdLine/Makefile Contrib/ICC_utils/Makefile Contrib/CmdLine/create_sRGB_profile/Makefile"
+  cat >confcache <<\_ACEOF
+  # This file is a shell script that caches the results of configure
+  # tests run on this system so they can be shared between configure
+***************
+*** 20571,20578 ****
+    "IccProfLib/Makefile" ) CONFIG_FILES="$CONFIG_FILES IccProfLib/Makefile" ;;
+    "Tools/Makefile" ) CONFIG_FILES="$CONFIG_FILES Tools/Makefile" ;;
+    "Tools/CmdLine/Makefile" ) CONFIG_FILES="$CONFIG_FILES Tools/CmdLine/Makefile" ;;
+-   "Tools/CmdLine/IccApplyNamedCmm/Makefile" ) CONFIG_FILES="$CONFIG_FILES Tools/CmdLine/IccApplyNamedCmm/Makefile" ;;
+-   "Tools/CmdLine/IccApplyProfiles/Makefile" ) CONFIG_FILES="$CONFIG_FILES Tools/CmdLine/IccApplyProfiles/Makefile" ;;
+    "Tools/CmdLine/IccDumpProfile/Makefile" ) CONFIG_FILES="$CONFIG_FILES Tools/CmdLine/IccDumpProfile/Makefile" ;;
+    "Tools/CmdLine/IccProfLibTest/Makefile" ) CONFIG_FILES="$CONFIG_FILES Tools/CmdLine/IccProfLibTest/Makefile" ;;
+    "Tools/CmdLine/IccStripUnknownTags/Makefile" ) CONFIG_FILES="$CONFIG_FILES Tools/CmdLine/IccStripUnknownTags/Makefile" ;;
+--- 20571,20576 ----
+***************
+*** 20579,20598 ****
+    "Tools/CmdLine/IccV4ToMPE/Makefile" ) CONFIG_FILES="$CONFIG_FILES Tools/CmdLine/IccV4ToMPE/Makefile" ;;
+    "Contrib/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/Makefile" ;;
+    "Contrib/CmdLine/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/CmdLine/Makefile" ;;
+!   "Contrib/CmdLine/create_CLUT_profile/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/CmdLine/create_CLUT_profile/Makefile" ;;
+!   "Contrib/CmdLine/create_CLUT_profile_from_probe/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/CmdLine/create_CLUT_profile_from_probe/Makefile" ;;
+!   "Contrib/CmdLine/create_display_profile/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/CmdLine/create_display_profile/Makefile" ;;
+    "Contrib/ICC_utils/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/ICC_utils/Makefile" ;;
+-   "Contrib/Mac_OS_X/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/Mac_OS_X/Makefile" ;;
+-   "Contrib/Mac_OS_X/create_probe/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/Mac_OS_X/create_probe/Makefile" ;;
+-   "Contrib/Mac_OS_X/extract_probe_data/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/Mac_OS_X/extract_probe_data/Makefile" ;;
+-   "Contrib/examples/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/examples/Makefile" ;;
+-   "Contrib/examples/RSR/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/examples/RSR/Makefile" ;;
+-   "Contrib/tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/tests/Makefile" ;;
+-   "Contrib/tests/flatten_AToB_tag/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/tests/flatten_AToB_tag/Makefile" ;;
+-   "Contrib/tests/generate_device_codes/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/tests/generate_device_codes/Makefile" ;;
+-   "Contrib/tests/reconstruct_measurements/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/tests/reconstruct_measurements/Makefile" ;;
+-   "Contrib/tests/round_trip_PCS_LAB/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/tests/round_trip_PCS_LAB/Makefile" ;;
+    "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+  echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+--- 20577,20584 ----
+    "Tools/CmdLine/IccV4ToMPE/Makefile" ) CONFIG_FILES="$CONFIG_FILES Tools/CmdLine/IccV4ToMPE/Makefile" ;;
+    "Contrib/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/Makefile" ;;
+    "Contrib/CmdLine/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/CmdLine/Makefile" ;;
+!   "Contrib/CmdLine/create_sRGB_profile/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/CmdLine/create_sRGB_profile/Makefile" ;;
+    "Contrib/ICC_utils/Makefile" ) CONFIG_FILES="$CONFIG_FILES Contrib/ICC_utils/Makefile" ;;
+    "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+  echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+*** misc/SampleICC-1.3.2/Contrib/Makefile.in	Mon Aug 20 22:10:37 2007
+--- misc/build/SampleICC-1.3.2/Contrib/Makefile.in	Fri Jan 25 14:23:09 2008
+***************
+*** 103,120 ****
+  
+  SUBDIRS = \
+  	ICC_utils \
+! 	CmdLine \
+! 	examples \
+! 	Mac_OS_X \
+! 	tests
+  
+  
+  DIST_SUBDIRS = \
+  	ICC_utils \
+! 	CmdLine \
+! 	examples \
+! 	Mac_OS_X \
+! 	tests
+  
+  subdir = Contrib
+  mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+--- 103,114 ----
+  
+  SUBDIRS = \
+  	ICC_utils \
+! 	CmdLine
+  
+  
+  DIST_SUBDIRS = \
+  	ICC_utils \
+! 	CmdLine
+  
+  subdir = Contrib
+  mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+*** misc/SampleICC-1.3.2/Contrib/CmdLine/Makefile.in	Mon Aug 20 22:10:34 2007
+--- misc/build/SampleICC-1.3.2/Contrib/CmdLine/Makefile.in	Fri Jan 25 14:23:09 2008
+***************
+*** 102,116 ****
+  install_sh = @install_sh@
+  
+  SUBDIRS = \
+! 	create_CLUT_profile \
+! 	create_CLUT_profile_from_probe \
+! 	create_display_profile
+  
+  
+  DIST_SUBDIRS = \
+! 	create_CLUT_profile \
+! 	create_CLUT_profile_from_probe \
+! 	create_display_profile
+  
+  subdir = Contrib/CmdLine
+  mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+--- 102,112 ----
+  install_sh = @install_sh@
+  
+  SUBDIRS = \
+! 	create_sRGB_profile
+  
+  
+  DIST_SUBDIRS = \
+! 	create_sRGB_profile
+  
+  subdir = Contrib/CmdLine
+  mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+*** misc/SampleICC-1.3.2/Contrib/ICC_utils/Makefile.in	Mon Aug 20 22:10:35 2007
+--- misc/build/SampleICC-1.3.2/Contrib/ICC_utils/Makefile.in	Fri Jan 25 14:23:09 2008
+***************
+*** 133,139 ****
+  CONFIG_CLEAN_FILES =
+  LTLIBRARIES = $(lib_LTLIBRARIES)
+  
+! libICC_utils_la_LIBADD =
+  am_libICC_utils_la_OBJECTS = Stubs.lo CAT.lo CLUT.lo CLUT_stuffer.lo \
+  	ICC_tool_exception.lo Vetters.lo
+  libICC_utils_la_OBJECTS = $(am_libICC_utils_la_OBJECTS)
+--- 133,139 ----
+  CONFIG_CLEAN_FILES =
+  LTLIBRARIES = $(lib_LTLIBRARIES)
+  
+! libICC_utils_la_LIBADD = $(LDADD)
+  am_libICC_utils_la_OBJECTS = Stubs.lo CAT.lo CLUT.lo CLUT_stuffer.lo \
+  	ICC_tool_exception.lo Vetters.lo
+  libICC_utils_la_OBJECTS = $(am_libICC_utils_la_OBJECTS)
+*** misc/SampleICC-1.3.2/Contrib/ICC_utils/Stubs.h	Mon Aug 20 22:04:53 2007
+--- misc/build/SampleICC-1.3.2/Contrib/ICC_utils/Stubs.h	Fri Jan 25 14:23:09 2008
+***************
+*** 130,136 ****
+  
+    // use one of these to force desired sort order in assoc. containers of DPX
+    bool
+!   DPX::operator<(const DPX& p) const
+    {
+      return (r_ != p.r_) ? (r_ < p.r_) : ((g_ != p.g_) ? (g_ < p.g_) : (b_ < p.b_));
+    }
+--- 130,136 ----
+  
+    // use one of these to force desired sort order in assoc. containers of DPX
+    bool
+!   operator<(const DPX& p) const
+    {
+      return (r_ != p.r_) ? (r_ < p.r_) : ((g_ != p.g_) ? (g_ < p.g_) : (b_ < p.b_));
+    }
+*** misc/SampleICC-1.3.2/Contrib/ICC_utils/Vetters.cpp	Mon Aug 20 22:04:54 2007
+--- misc/build/SampleICC-1.3.2/Contrib/ICC_utils/Vetters.cpp	Fri Jan 25 14:57:06 2008
+***************
+*** 1,322 ****
+! /*
+!  File:       Vetters.cpp
+!  
+!  Contains:   Utility functions to handle common argument-checking tasks, in a 
+!              way that hides platform-specific details from higher-level code.
+!  
+!  Version:    V1
+!  
+!  Copyright:  © see below
+!  */
+! 
+! /*
+!  * The ICC Software License, Version 0.1
+!  *
+!  *
+!  * Copyright (c) 2003-2006 The International Color Consortium. All rights 
+!  * reserved.
+!  *
+!  * Redistribution and use in source and binary forms, with or without
+!  * modification, are permitted provided that the following conditions
+!  * are met:
+!  *
+!  * 1. Redistributions of source code must retain the above copyright
+!  *    notice, this list of conditions and the following disclaimer. 
+!  *
+!  * 2. Redistributions in binary form must reproduce the above copyright
+!  *    notice, this list of conditions and the following disclaimer in
+!  *    the documentation and/or other materials provided with the
+!  *    distribution.
+!  *
+!  * 3. The end-user documentation included with the redistribution,
+!  *    if any, must include the following acknowledgment:  
+!  *       "This product includes software developed by the
+!  *        The International Color Consortium (www.color.org)"
+!  *    Alternately, this acknowledgment may appear in the software itself,
+!  *    if and wherever such third-party acknowledgments normally appear.
+!  *
+!  * 4. The names "ICC" and "The International Color Consortium" must
+!  *    not be used to imply that the ICC organization endorses or
+!  *    promotes products derived from this software without prior
+!  *    written permission. For written permission, please see
+!  *    <http://www.color.org/>.
+!  *
+!  *
+!  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+!  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+!  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+!  * DISCLAIMED.  IN NO EVENT SHALL THE INTERNATIONAL COLOR CONSORTIUM OR
+!  * ITS CONTRIBUTING MEMBERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+!  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+!  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+!  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+!  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+!  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+!  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+!  * SUCH DAMAGE.
+!  * ====================================================================
+!  *
+!  * This software consists of voluntary contributions made by many
+!  * individuals on behalf of the The International Color Consortium. 
+!  *
+!  *
+!  * Membership in the ICC is encouraged when this software is used for
+!  * commercial purposes. 
+!  *
+!  *  
+!  * For more information on The International Color Consortium, please
+!  * see <http://www.color.org/>.
+!  *  
+!  * 
+!  */
+! 
+! ////////////////////////////////////////////////////////////////////// 
+! // HISTORY:
+! //
+! // -Initial implementation by Joseph Goldstone sumer 2007
+! //
+! //////////////////////////////////////////////////////////////////////
+! 
+! #include "Vetters.h"
+! 
+! #include <sstream>
+! using namespace std;
+! 
+! #ifndef WIN32
+! #include <sys/errno.h>
+! #else
+! #include <string.h>
+! int strerror_r(int errnum, char *str, int strsize)
+! {
+!   const char *errstr = strerror(errnum);
+! 
+!   if (errstr) {
+!     strncpy(str, errstr, strsize);
+!     return 0;
+!   }
+! 
+!   return -1;
+! }
+! #define stat _stat
+! #endif
+! 
+! #include "ICC_tool_exception.h"
+! 
+! const char*
+! path_tail(const char* const s)
+! {
+!   const char* tail = strdup(s);
+!   const char* last_slash = strrchr(tail, '/');
+!   if (last_slash != NULL)
+!     tail = last_slash + 1;
+!   return tail;
+! }
+!     
+! void
+! vet_as_int(const char* const s, const string& name,
+!            const string& description)
+! {
+!   istringstream ss(s);
+!   int i;
+!   ss >> i;
+!   if (ss.fail())
+!   {
+!     ostringstream oss;
+!     oss << "The " << name << " argument given, `" << s << "', cannot be parsed as"
+!       << " an integer.  It should be an integer representing "
+!       << description << ".";
+!     throw ICC_tool_exception(oss.str());
+!   }
+! }
+! 
+! void
+! vet_as_float(const char* const s, const string& name,
+!              const string& description)
+! {
+!   istringstream ss(s);
+!   float i;
+!   ss >> i;
+!   if (ss.fail())
+!   {
+!     ostringstream oss;
+!     oss << "The " << name << " argument given, `" << s << "', cannot be parsed as"
+!       << " a floating-point number.  It should be a floating-point number"
+!       << " representing " << description << ".";
+!     throw ICC_tool_exception(oss.str());
+!   }
+! }
+! 
+! #define STRERROR_BUF_SIZE 256
+! off_t
+! get_size(const char* const s)
+! { 
+!   struct stat sb;
+!   int stat_returned = stat(s, &sb);
+!   if (stat_returned < 0)
+!   {
+!     int stat_errno = errno;
+!     char strerror_buf[STRERROR_BUF_SIZE];
+!     strerror_r(stat_errno, strerror_buf, STRERROR_BUF_SIZE);
+!     ostringstream oss;
+!     oss << "Could not access information for file `" << s << "': "
+!       << strerror_buf;
+!     throw ICC_tool_exception(oss.str());
+!   }
+!   return sb.st_size;
+! }
+! 
+! bool
+! check_mode(const char* const s, mode_t mode)
+! { 
+!   struct stat sb;
+!   int stat_returned = stat(s, &sb);
+!   if (stat_returned < 0)
+!   {
+!     int stat_errno = errno;
+!     char strerror_buf[STRERROR_BUF_SIZE];
+!     strerror_r(stat_errno, strerror_buf, STRERROR_BUF_SIZE);
+!     ostringstream oss;
+!     oss << "Could not access information for file `" << s << "': "
+!       << strerror_buf;
+!     throw ICC_tool_exception(oss.str());
+!   }
+!   return (sb.st_mode & mode) != 0;
+! }
+! 
+! bool
+! is_existent_file_pathname(const char* const s)
+! {
+!   struct stat sb;
+!   return stat(s, &sb) == 0;
+! }
+! 
+! bool
+! is_plain_file_pathname(const char* const s)
+! {
+!   return check_mode(s, S_IFREG);
+! }
+! 
+! bool
+! is_directory(const char* const s)
+! {
+!   return check_mode(s, S_IFDIR);
+! }
+! 
+! const char* const
+! containing_directory(const char* const s)
+! {
+!   if (strlen(s) == 0)
+!     throw ICC_tool_exception("name of directory passed to containing_directory"
+!                              " function was zero-length.");
+!   char* tmp = strdup(s);
+!   // lop off any trailing seperator
+!   if (tmp[strlen(tmp) - 1] == '/')
+!     tmp[strlen(tmp) - 1] = 0;
+!   if (strlen(tmp) == 0)
+!     throw ICC_tool_exception("root directory (which has no containing"
+!                              " directory) passed to containing_directory"
+!                              " function");
+!   char* idx = strrchr(tmp, '/');
+!   if (idx != NULL)
+!   {
+!     *idx = 0;
+!     return tmp;
+!   }
+!   char* current_directory = getenv("PWD");
+!   if (current_directory == NULL)
+!     throw ICC_tool_exception("pathname passed to containing_directory has no"
+!                              " embedded seperator, and there is no value for"
+!                              " PWD defined in the environment");
+!   return strdup(current_directory);
+! }
+! 
+! bool
+! is_readable_pathname(const char* const s)
+! {
+!   return check_mode(s, S_IRUSR)
+!   || check_mode(s, S_IRGRP)
+!   || check_mode(s, S_IROTH);
+! }
+! 
+! bool
+! is_writable_pathname(const char* const s)
+! {
+!   return check_mode(s, S_IWUSR)
+!   || check_mode(s, S_IWGRP)
+!   || check_mode(s, S_IWOTH);
+! }
+! 
+! bool
+! is_pathname_of_empty_file(const char* const s)
+! {
+!   return get_size(s) > 0;
+! }
+! 
+! void
+! vet_input_file_pathname(const char* const s, const string& name,
+!                         const string& description)
+! {
+!   if (! is_plain_file_pathname(s))
+!   {
+!     ostringstream oss;
+!     oss << "The " << name << " argument given, `" << s << "', is not the pathname"
+!       << " of a plain file (i.e. it is the pathname of a directory, or of a"
+!       << " symbolic link, or of some other sort of special file.)  It should be"
+!       << " " << description << ".";
+!     throw ICC_tool_exception(oss.str());
+!   }
+!   if (! is_readable_pathname(s))
+!   {
+!     ostringstream oss;
+!     oss << "The " << name << " argument given, `" << s << "', is not the pathname"
+!       << " of a readable file (i.e. you do not have permission to read that"
+!       << " file, or you do not have permission to read some directory"
+!       << " containing that file.";
+!       throw ICC_tool_exception(oss.str());
+!   }
+!   if (! is_pathname_of_empty_file(s))
+!   {
+!     ostringstream oss;
+!     oss << "The " << name << " argument given, `" << s << "', is not the pathname"
+!       << " of an existing readable file, but that file is of zero length."
+!       << " The argument should be " << description << ".";
+!     throw ICC_tool_exception(oss.str());
+!   }
+! }
+! 
+! void
+! vet_output_file_pathname(const char* const s, const string& name,
+!                          const string& description,
+!                          bool silent_overwrite_OK)
+! {
+!   const char* const container = containing_directory(s);
+!   if (! is_writable_pathname(container))
+!   {
+!     ostringstream oss;
+!     oss << "The " << name << " argument given, `" << s << "', has a directory"
+!       << " component which is not writable."
+!       << " The argument should be " << description << ".";
+!     throw ICC_tool_exception(oss.str());
+!   }
+!   if (is_existent_file_pathname(s))
+!   {
+!     if (is_plain_file_pathname(s))
+!       if (is_writable_pathname(s))
+!       {
+!         if (! silent_overwrite_OK)
+!         {
+!           ostringstream oss;
+!           oss << "The " << name << " argument given, `" << s << "' is of an existing"
+!             << " file."
+!             << " The argument should be " << description << ".";
+!           throw ICC_tool_exception(oss.str());
+!         }
+!       } else {
+!         ostringstream oss;
+!         oss << "The " << name << " argument given, `" << s << "' is of an existing"
+!           << " file which is not writable."
+!           << " The argument should be " << description << ".";
+!         throw ICC_tool_exception(oss.str());
+!       }
+!   }
+! }
+--- 1,329 ----
+! /*
+!  File:       Vetters.cpp
+!  
+!  Contains:   Utility functions to handle common argument-checking tasks, in a 
+!              way that hides platform-specific details from higher-level code.
+!  
+!  Version:    V1
+!  
+!  Copyright:  © see below
+!  */
+! 
+! /*
+!  * The ICC Software License, Version 0.1
+!  *
+!  *
+!  * Copyright (c) 2003-2006 The International Color Consortium. All rights 
+!  * reserved.
+!  *
+!  * Redistribution and use in source and binary forms, with or without
+!  * modification, are permitted provided that the following conditions
+!  * are met:
+!  *
+!  * 1. Redistributions of source code must retain the above copyright
+!  *    notice, this list of conditions and the following disclaimer. 
+!  *
+!  * 2. Redistributions in binary form must reproduce the above copyright
+!  *    notice, this list of conditions and the following disclaimer in
+!  *    the documentation and/or other materials provided with the
+!  *    distribution.
+!  *
+!  * 3. The end-user documentation included with the redistribution,
+!  *    if any, must include the following acknowledgment:  
+!  *       "This product includes software developed by the
+!  *        The International Color Consortium (www.color.org)"
+!  *    Alternately, this acknowledgment may appear in the software itself,
+!  *    if and wherever such third-party acknowledgments normally appear.
+!  *
+!  * 4. The names "ICC" and "The International Color Consortium" must
+!  *    not be used to imply that the ICC organization endorses or
+!  *    promotes products derived from this software without prior
+!  *    written permission. For written permission, please see
+!  *    <http://www.color.org/>.
+!  *
+!  *
+!  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+!  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+!  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+!  * DISCLAIMED.  IN NO EVENT SHALL THE INTERNATIONAL COLOR CONSORTIUM OR
+!  * ITS CONTRIBUTING MEMBERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+!  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+!  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+!  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+!  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+!  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+!  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+!  * SUCH DAMAGE.
+!  * ====================================================================
+!  *
+!  * This software consists of voluntary contributions made by many
+!  * individuals on behalf of the The International Color Consortium. 
+!  *
+!  *
+!  * Membership in the ICC is encouraged when this software is used for
+!  * commercial purposes. 
+!  *
+!  *  
+!  * For more information on The International Color Consortium, please
+!  * see <http://www.color.org/>.
+!  *  
+!  * 
+!  */
+! 
+! ////////////////////////////////////////////////////////////////////// 
+! // HISTORY:
+! //
+! // -Initial implementation by Joseph Goldstone sumer 2007
+! //
+! //////////////////////////////////////////////////////////////////////
+! 
+! #include "Vetters.h"
+! 
+! #include <sstream>
+! using namespace std;
+! 
+! #ifndef WIN32
+! #ifdef sun
+! #include <errno.h>
+! #else
+! #include <sys/errno.h>
+! #endif
+! #else
+! #include <string.h>
+! #define stat _stat
+! #endif
+! 
+! #if defined WIN32 || defined sun
+! int strerror_r(int errnum, char *str, int strsize)
+! {
+!   const char *errstr = strerror(errnum);
+! 
+!   if (errstr) {
+!     strncpy(str, errstr, strsize);
+!     return 0;
+!   }
+! 
+!   return -1;
+! }
+! #endif
+! 
+! #include "ICC_tool_exception.h"
+! 
+! const char*
+! path_tail(const char* const s)
+! {
+!   const char* tail = strdup(s);
+!   const char* last_slash = strrchr(tail, '/');
+!   if (last_slash != NULL)
+!     tail = last_slash + 1;
+!   return tail;
+! }
+!     
+! void
+! vet_as_int(const char* const s, const string& name,
+!            const string& description)
+! {
+!   istringstream ss(s);
+!   int i;
+!   ss >> i;
+!   if (ss.fail())
+!   {
+!     ostringstream oss;
+!     oss << "The " << name << " argument given, `" << s << "', cannot be parsed as"
+!       << " an integer.  It should be an integer representing "
+!       << description << ".";
+!     throw ICC_tool_exception(oss.str());
+!   }
+! }
+! 
+! void
+! vet_as_float(const char* const s, const string& name,
+!              const string& description)
+! {
+!   istringstream ss(s);
+!   float i;
+!   ss >> i;
+!   if (ss.fail())
+!   {
+!     ostringstream oss;
+!     oss << "The " << name << " argument given, `" << s << "', cannot be parsed as"
+!       << " a floating-point number.  It should be a floating-point number"
+!       << " representing " << description << ".";
+!     throw ICC_tool_exception(oss.str());
+!   }
+! }
+! 
+! #define STRERROR_BUF_SIZE 256
+! off_t
+! get_size(const char* const s)
+! { 
+!   struct stat sb;
+!   int stat_returned = stat(s, &sb);
+!   if (stat_returned < 0)
+!   {
+!     int stat_errno = errno;
+!     char strerror_buf[STRERROR_BUF_SIZE];
+!     strerror_r(stat_errno, strerror_buf, STRERROR_BUF_SIZE);
+!     ostringstream oss;
+!     oss << "Could not access information for file `" << s << "': "
+!       << strerror_buf;
+!     throw ICC_tool_exception(oss.str());
+!   }
+!   return sb.st_size;
+! }
+! 
+! bool
+! check_mode(const char* const s, mode_t mode)
+! { 
+!   struct stat sb;
+!   int stat_returned = stat(s, &sb);
+!   if (stat_returned < 0)
+!   {
+!     int stat_errno = errno;
+!     char strerror_buf[STRERROR_BUF_SIZE];
+!     strerror_r(stat_errno, strerror_buf, STRERROR_BUF_SIZE);
+!     ostringstream oss;
+!     oss << "Could not access information for file `" << s << "': "
+!       << strerror_buf;
+!     throw ICC_tool_exception(oss.str());
+!   }
+!   return (sb.st_mode & mode) != 0;
+! }
+! 
+! bool
+! is_existent_file_pathname(const char* const s)
+! {
+!   struct stat sb;
+!   return stat(s, &sb) == 0;
+! }
+! 
+! bool
+! is_plain_file_pathname(const char* const s)
+! {
+!   return check_mode(s, S_IFREG);
+! }
+! 
+! bool
+! is_directory(const char* const s)
+! {
+!   return check_mode(s, S_IFDIR);
+! }
+! 
+! const char* const
+! containing_directory(const char* const s)
+! {
+!   if (strlen(s) == 0)
+!     throw ICC_tool_exception("name of directory passed to containing_directory"
+!                              " function was zero-length.");
+!   char* tmp = strdup(s);
+!   // lop off any trailing seperator
+!   if (tmp[strlen(tmp) - 1] == '/')
+!     tmp[strlen(tmp) - 1] = 0;
+!   if (strlen(tmp) == 0)
+!     throw ICC_tool_exception("root directory (which has no containing"
+!                              " directory) passed to containing_directory"
+!                              " function");
+!   char* idx = strrchr(tmp, '/');
+!   if (idx != NULL)
+!   {
+!     *idx = 0;
+!     return tmp;
+!   }
+!   char* current_directory = getenv("PWD");
+!   if (current_directory == NULL)
+!     throw ICC_tool_exception("pathname passed to containing_directory has no"
+!                              " embedded seperator, and there is no value for"
+!                              " PWD defined in the environment");
+!   return strdup(current_directory);
+! }
+! 
+! bool
+! is_readable_pathname(const char* const s)
+! {
+!   return check_mode(s, S_IRUSR)
+!   || check_mode(s, S_IRGRP)
+!   || check_mode(s, S_IROTH);
+! }
+! 
+! bool
+! is_writable_pathname(const char* const s)
+! {
+!   return check_mode(s, S_IWUSR)
+!   || check_mode(s, S_IWGRP)
+!   || check_mode(s, S_IWOTH);
+! }
+! 
+! bool
+! is_pathname_of_empty_file(const char* const s)
+! {
+!   return get_size(s) > 0;
+! }
+! 
+! void
+! vet_input_file_pathname(const char* const s, const string& name,
+!                         const string& description)
+! {
+!   if (! is_plain_file_pathname(s))
+!   {
+!     ostringstream oss;
+!     oss << "The " << name << " argument given, `" << s << "', is not the pathname"
+!       << " of a plain file (i.e. it is the pathname of a directory, or of a"
+!       << " symbolic link, or of some other sort of special file.)  It should be"
+!       << " " << description << ".";
+!     throw ICC_tool_exception(oss.str());
+!   }
+!   if (! is_readable_pathname(s))
+!   {
+!     ostringstream oss;
+!     oss << "The " << name << " argument given, `" << s << "', is not the pathname"
+!       << " of a readable file (i.e. you do not have permission to read that"
+!       << " file, or you do not have permission to read some directory"
+!       << " containing that file.";
+!       throw ICC_tool_exception(oss.str());
+!   }
+!   if (! is_pathname_of_empty_file(s))
+!   {
+!     ostringstream oss;
+!     oss << "The " << name << " argument given, `" << s << "', is not the pathname"
+!       << " of an existing readable file, but that file is of zero length."
+!       << " The argument should be " << description << ".";
+!     throw ICC_tool_exception(oss.str());
+!   }
+! }
+! 
+! void
+! vet_output_file_pathname(const char* const s, const string& name,
+!                          const string& description,
+!                          bool silent_overwrite_OK)
+! {
+!   const char* const container = containing_directory(s);
+!   if (! is_writable_pathname(container))
+!   {
+!     ostringstream oss;
+!     oss << "The " << name << " argument given, `" << s << "', has a directory"
+!       << " component which is not writable."
+!       << " The argument should be " << description << ".";
+!     throw ICC_tool_exception(oss.str());
+!   }
+!   if (is_existent_file_pathname(s))
+!   {
+!     if (is_plain_file_pathname(s))
+!       if (is_writable_pathname(s))
+!       {
+!         if (! silent_overwrite_OK)
+!         {
+!           ostringstream oss;
+!           oss << "The " << name << " argument given, `" << s << "' is of an existing"
+!             << " file."
+!             << " The argument should be " << description << ".";
+!           throw ICC_tool_exception(oss.str());
+!         }
+!       } else {
+!         ostringstream oss;
+!         oss << "The " << name << " argument given, `" << s << "' is of an existing"
+!           << " file which is not writable."
+!           << " The argument should be " << description << ".";
+!         throw ICC_tool_exception(oss.str());
+!       }
+!   }
+! }
+*** misc/SampleICC-1.3.2/IccProfLib/IccIO.cpp	Mon Aug 20 22:05:00 2007
+--- misc/build/SampleICC-1.3.2/IccProfLib/IccIO.cpp	Fri Jan 25 14:23:09 2008
+***************
+*** 78,84 ****
+  #include "IccIO.h"
+  #include "IccUtil.h"
+  #include <stdlib.h>
+! #include <memory.h>
+  #include <string.h>
+  
+  #ifndef __max
+--- 78,84 ----
+  #include "IccIO.h"
+  #include "IccUtil.h"
+  #include <stdlib.h>
+! #include <memory>
+  #include <string.h>
+  
+  #ifndef __max
+*** misc/SampleICC-1.3.2/IccProfLib/IccIO.h	Mon Aug 20 22:05:00 2007
+--- misc/build/SampleICC-1.3.2/IccProfLib/IccIO.h	Fri Jan 25 14:23:09 2008
+***************
+*** 79,84 ****
+--- 79,85 ----
+  #define _ICCIO_H
+  
+  #include "IccDefs.h"
++ #include "memory"
+  #include "stdio.h"
+  
+  #ifdef USESAMPLEICCNAMESPACE
+*** misc/SampleICC-1.3.2/IccProfLib/IccMpeACS.cpp	Mon Aug 20 22:05:00 2007
+--- misc/build/SampleICC-1.3.2/IccProfLib/IccMpeACS.cpp	Fri Jan 25 14:23:09 2008
+***************
+*** 136,152 ****
+    icChar sigBuf[30];
+  
+    if (GetBAcsSig())
+!     sDescription += "ELEM_bACS\r\n";
+    else
+!     sDescription += "ELEM_eACS\r\n";
+  
+    icGetSig(sigBuf, m_signature);
+    sDescription += "  Signature = ";
+    sDescription += sigBuf;
+!   sDescription += "\r\n";
+  
+    if (m_pData) {
+!     sDescription += "\r\nData Follows:\r\n";
+  
+      icMemDump(sDescription, m_pData, m_nDataSize);
+    }
+--- 136,152 ----
+    icChar sigBuf[30];
+  
+    if (GetBAcsSig())
+!     sDescription += "ELEM_bACS\n";
+    else
+!     sDescription += "ELEM_eACS\n";
+  
+    icGetSig(sigBuf, m_signature);
+    sDescription += "  Signature = ";
+    sDescription += sigBuf;
+!   sDescription += "\n";
+  
+    if (m_pData) {
+!     sDescription += "\nData Follows:\n";
+  
+      icMemDump(sDescription, m_pData, m_nDataSize);
+    }
+*** misc/SampleICC-1.3.2/IccProfLib/IccMpeBasic.cpp	Mon Aug 20 22:05:00 2007
+--- misc/build/SampleICC-1.3.2/IccProfLib/IccMpeBasic.cpp	Fri Jan 25 14:23:09 2008
+***************
+*** 218,249 ****
+    sprintf(buf, "%.8f", m_endPoint);
+    sDescription += buf;
+    }
+!   sprintf(buf, "]\r\nFunctionType: %04Xh\r\n", m_nFunctionType);
+    sDescription += buf;
+  
+    switch(m_nFunctionType) {
+    case 0x0000:
+      if (m_params[1]==0.0 && m_params[2]==0.0)
+!       sprintf(buf, "Y = %.8f\r\n\r\n", m_params[3]);
+      else if (m_params[0]==1.0 && m_params[1]==1.0 && m_params[2]==0.0 && m_params[3]==0.0)
+!       sprintf(buf, "Y = X\r\n\r\n");
+      else if (m_params[0]==1.0 && m_params[2]==0.0)
+!       sprintf(buf, "Y = %.8f * X + %.8f\r\n\r\n", 
+                m_params[1], m_params[3]);
+      else
+!       sprintf(buf, "Y = (%.8f * X + %.8f)^%.4f + %.8f\r\n\r\n", 
+                m_params[1], m_params[2], m_params[0], m_params[3]);
+      sDescription += buf;
+      return;
+  
+    case 0x0001:
+!     sprintf(buf, "Y = %.8f * log (%.8f * (X ^ %.8f)  + %.8f) + %.8f\r\n\r\n",
+              m_params[1], m_params[2], m_params[0], m_params[3], m_params[4]);
+      sDescription += buf;
+      return;
+  
+    case 0x0002:
+!     sprintf(buf, "Y = %.8f * (%.8f ^ (%.8f * X + %.8f)) + %.8f\r\n\r\n",
+              m_params[0], m_params[1], m_params[2], m_params[3], m_params[4]);
+      sDescription += buf;
+      return;
+--- 218,249 ----
+    sprintf(buf, "%.8f", m_endPoint);
+    sDescription += buf;
+    }
+!   sprintf(buf, "]\nFunctionType: %04Xh\n", m_nFunctionType);
+    sDescription += buf;
+  
+    switch(m_nFunctionType) {
+    case 0x0000:
+      if (m_params[1]==0.0 && m_params[2]==0.0)
+!       sprintf(buf, "Y = %.8f\n\n", m_params[3]);
+      else if (m_params[0]==1.0 && m_params[1]==1.0 && m_params[2]==0.0 && m_params[3]==0.0)
+!       sprintf(buf, "Y = X\n\n");
+      else if (m_params[0]==1.0 && m_params[2]==0.0)
+!       sprintf(buf, "Y = %.8f * X + %.8f\n\n", 
+                m_params[1], m_params[3]);
+      else
+!       sprintf(buf, "Y = (%.8f * X + %.8f)^%.4f + %.8f\n\n", 
+                m_params[1], m_params[2], m_params[0], m_params[3]);
+      sDescription += buf;
+      return;
+  
+    case 0x0001:
+!     sprintf(buf, "Y = %.8f * log (%.8f * (X ^ %.8f)  + %.8f) + %.8f\n\n",
+              m_params[1], m_params[2], m_params[0], m_params[3], m_params[4]);
+      sDescription += buf;
+      return;
+  
+    case 0x0002:
+!     sprintf(buf, "Y = %.8f * (%.8f ^ (%.8f * X + %.8f)) + %.8f\n\n",
+              m_params[0], m_params[1], m_params[2], m_params[3], m_params[4]);
+      sDescription += buf;
+      return;
+***************
+*** 250,260 ****
+  
+    default:
+      int i;
+!     sprintf(buf, "Unknown Function with %d parameters:\r\n\r\n", m_nParameters);
+      sDescription += buf;
+  
+      for (i=0; i<m_nParameters; i++) {
+!       sprintf(buf, "Param[%d] = %.8lf\r\n\r\n", i, m_params[i]);
+        sDescription += buf;
+      }
+    }
+--- 250,260 ----
+  
+    default:
+      int i;
+!     sprintf(buf, "Unknown Function with %d parameters:\n\n", m_nParameters);
+      sDescription += buf;
+  
+      for (i=0; i<m_nParameters; i++) {
+!       sprintf(buf, "Param[%d] = %.8lf\n\n", i, m_params[i]);
+        sDescription += buf;
+      }
+    }
+***************
+*** 496,502 ****
+    if (m_nReserved || m_nReserved2) {
+      sReport += icValidateWarningMsg;
+      sReport += sSigName;
+!     sReport += " formula curve has non zero reserved data.\r\n";
+      rv = icValidateWarning;
+    }
+  
+--- 496,502 ----
+    if (m_nReserved || m_nReserved2) {
+      sReport += icValidateWarningMsg;
+      sReport += sSigName;
+!     sReport += " formula curve has non zero reserved data.\n";
+      rv = icValidateWarning;
+    }
+  
+***************
+*** 505,517 ****
+      if (!m_params || m_nParameters<4) {
+        sReport += icValidateCriticalErrorMsg;
+        sReport += sSigName;
+!       sReport += " formula curve has Invalid formulaCurveSegment parameters.\r\n";
+        rv = icValidateCriticalError;
+      }
+      else if (m_nParameters > 4) {
+        sReport += icValidateWarningMsg;
+        sReport += sSigName;
+!       sReport += " formula curve has too many formulaCurveSegment parameters.\r\n";
+        rv = icValidateWarning;
+      }
+      break;
+--- 505,517 ----
+      if (!m_params || m_nParameters<4) {
+        sReport += icValidateCriticalErrorMsg;
+        sReport += sSigName;
+!       sReport += " formula curve has Invalid formulaCurveSegment parameters.\n";
+        rv = icValidateCriticalError;
+      }
+      else if (m_nParameters > 4) {
+        sReport += icValidateWarningMsg;
+        sReport += sSigName;
+!       sReport += " formula curve has too many formulaCurveSegment parameters.\n";
+        rv = icValidateWarning;
+      }
+      break;
+***************
+*** 520,532 ****
+      if (!m_params || m_nParameters<5) {
+        sReport += icValidateCriticalErrorMsg;
+        sReport += sSigName;
+!       sReport += " formula curve has Invalid formulaCurveSegment parameters.\r\n";
+        rv = icValidateCriticalError;
+      }
+      else if (m_nParameters > 5) {
+        sReport += icValidateWarningMsg;
+        sReport += sSigName;
+!       sReport += " formula curve has too many formulaCurveSegment parameters.\r\n";
+        rv = icValidateWarning;
+      }
+      break;
+--- 520,532 ----
+      if (!m_params || m_nParameters<5) {
+        sReport += icValidateCriticalErrorMsg;
+        sReport += sSigName;
+!       sReport += " formula curve has Invalid formulaCurveSegment parameters.\n";
+        rv = icValidateCriticalError;
+      }
+      else if (m_nParameters > 5) {
+        sReport += icValidateWarningMsg;
+        sReport += sSigName;
+!       sReport += " formula curve has too many formulaCurveSegment parameters.\n";
+        rv = icValidateWarning;
+      }
+      break;
+***************
+*** 535,547 ****
+      if (!m_params || m_nParameters<5) {
+        sReport += icValidateCriticalErrorMsg;
+        sReport += sSigName;
+!       sReport += " formula curve has Invalid formulaCurveSegment parameters.\r\n";
+        rv = icValidateCriticalError;
+      }
+      else if (m_nParameters > 5) {
+        sReport += icValidateWarningMsg;
+        sReport += sSigName;
+!       sReport += " formula curve has too many formulaCurveSegment parameters.\r\n";
+        rv = icValidateWarning;
+      }
+      break;
+--- 535,547 ----
+      if (!m_params || m_nParameters<5) {
+        sReport += icValidateCriticalErrorMsg;
+        sReport += sSigName;
+!       sReport += " formula curve has Invalid formulaCurveSegment parameters.\n";
+        rv = icValidateCriticalError;
+      }
+      else if (m_nParameters > 5) {
+        sReport += icValidateWarningMsg;
+        sReport += sSigName;
+!       sReport += " formula curve has too many formulaCurveSegment parameters.\n";
+        rv = icValidateWarning;
+      }
+      break;
+***************
+*** 551,557 ****
+        icChar buf[128];
+        sReport += icValidateCriticalErrorMsg;
+        sReport += sSigName;
+!       sprintf(buf, " formula curve uses unknown formulaCurveSegment function type %d\r\n", m_nFunctionType);
+        sReport += buf;
+        rv = icValidateCriticalError;
+      }
+--- 551,557 ----
+        icChar buf[128];
+        sReport += icValidateCriticalErrorMsg;
+        sReport += sSigName;
+!       sprintf(buf, " formula curve uses unknown formulaCurveSegment function type %d\n", m_nFunctionType);
+        sReport += buf;
+        rv = icValidateCriticalError;
+      }
+***************
+*** 727,733 ****
+      sDescription += buf;
+      }
+  
+!     sprintf(buf, "]\r\n");
+      sDescription += buf;
+    }
+    else {
+--- 727,733 ----
+      sDescription += buf;
+      }
+  
+!     sprintf(buf, "]\n");
+      sDescription += buf;
+    }
+    else {
+***************
+*** 744,752 ****
+      sprintf(buf, "%.8f", m_endPoint);
+      sDescription += buf;
+      }
+!     sprintf(buf, "]\r\n");
+      sDescription += buf;
+!     sDescription += "IN  OUT\r\n";
+  
+      icUInt32Number i;
+  
+--- 744,752 ----
+      sprintf(buf, "%.8f", m_endPoint);
+      sDescription += buf;
+      }
+!     sprintf(buf, "]\n");
+      sDescription += buf;
+!     sDescription += "IN  OUT\n";
+  
+      icUInt32Number i;
+  
+***************
+*** 754,764 ****
+      icFloatNumber last = (icFloatNumber)(m_nCount-1);
+  
+      for (i=0; i<m_nCount; i++) {
+!       sprintf(buf, "%.8f %.8f\r\n", m_startPoint + (icFloatNumber)i*range/last, m_pSamples[i]);
+        sDescription += buf;
+      }
+    }
+!   sDescription += "\r\n";
+  }
+  
+  /**
+--- 754,764 ----
+      icFloatNumber last = (icFloatNumber)(m_nCount-1);
+  
+      for (i=0; i<m_nCount; i++) {
+!       sprintf(buf, "%.8f %.8f\n", m_startPoint + (icFloatNumber)i*range/last, m_pSamples[i]);
+        sDescription += buf;
+      }
+    }
+!   sDescription += "\n";
+  }
+  
+  /**
+***************
+*** 910,916 ****
+    if (m_nReserved) {
+      sReport += icValidateWarningMsg;
+      sReport += sSigName;
+!     sReport += " sampled curve has non zero reserved data.\r\n";
+      rv = icValidateWarning;
+    }
+  
+--- 910,916 ----
+    if (m_nReserved) {
+      sReport += icValidateWarningMsg;
+      sReport += sSigName;
+!     sReport += " sampled curve has non zero reserved data.\n";
+      rv = icValidateWarning;
+    }
+  
+***************
+*** 917,929 ****
+    if (m_nCount<2) {
+      sReport += icValidateCriticalErrorMsg;
+      sReport += sSigName;
+!     sReport += " sampled curve has too few sample points.\r\n";
+      rv = icValidateCriticalError;
+    }
+    else if (m_endPoint-m_startPoint == 0.0) {
+      sReport += icValidateWarningMsg;
+      sReport += sSigName;
+!     sReport += " sampled curve has a range of zero.\r\n";
+      rv = icMaxStatus(rv, icValidateWarning);
+    }
+  
+--- 917,929 ----
+    if (m_nCount<2) {
+      sReport += icValidateCriticalErrorMsg;
+      sReport += sSigName;
+!     sReport += " sampled curve has too few sample points.\n";
+      rv = icValidateCriticalError;
+    }
+    else if (m_endPoint-m_startPoint == 0.0) {
+      sReport += icValidateWarningMsg;
+      sReport += sSigName;
+!     sReport += " sampled curve has a range of zero.\n";
+      rv = icMaxStatus(rv, icValidateWarning);
+    }
+  
+***************
+*** 1054,1060 ****
+  {
+    CIccCurveSegmentList::iterator i;
+  
+!   sDescription += "BEGIN_CURVE\r\n";
+    for (i=m_list->begin(); i!=m_list->end(); i++) {
+      (*i)->Describe(sDescription);
+    }
+--- 1054,1060 ----
+  {
+    CIccCurveSegmentList::iterator i;
+  
+!   sDescription += "BEGIN_CURVE\n";
+    for (i=m_list->begin(); i!=m_list->end(); i++) {
+      (*i)->Describe(sDescription);
+    }
+***************
+*** 1342,1348 ****
+    if (m_nReserved1 || m_nReserved2) {
+      sReport += icValidateWarningMsg;
+      sReport += sSigName;
+!     sReport += " Segmented curve has non zero reserved data.\r\n";
+      rv = icValidateWarning;
+    }
+  
+--- 1342,1348 ----
+    if (m_nReserved1 || m_nReserved2) {
+      sReport += icValidateWarningMsg;
+      sReport += sSigName;
+!     sReport += " Segmented curve has non zero reserved data.\n";
+      rv = icValidateWarning;
+    }
+  
+***************
+*** 1349,1355 ****
+    if (m_list->size()==0) {
+      sReport += icValidateCriticalErrorMsg;
+      sReport += sSigName;
+!     sReport += " Has Empty CurveSegment!\r\n";
+      return icValidateCriticalError;
+    }
+  
+--- 1349,1355 ----
+    if (m_list->size()==0) {
+      sReport += icValidateCriticalErrorMsg;
+      sReport += sSigName;
+!     sReport += " Has Empty CurveSegment!\n";
+      return icValidateCriticalError;
+    }
+  
+***************
+*** 1599,1609 ****
+      icChar buf[81];
+      int i;
+  
+!     sprintf(buf, "BEGIN_CURVE_SET %d\r\n", m_nInputChannels);
+      sDescription += buf;
+  
+      for (i=0; i<m_nInputChannels; i++) {
+!       sprintf(buf, "Curve %d of %d\r\n", i+1, m_nInputChannels);
+        sDescription += buf;
+        if (m_curve[i]) {
+          m_curve[i]->Describe(sDescription);
+--- 1599,1609 ----
+      icChar buf[81];
+      int i;
+  
+!     sprintf(buf, "BEGIN_CURVE_SET %d\n", m_nInputChannels);
+      sDescription += buf;
+  
+      for (i=0; i<m_nInputChannels; i++) {
+!       sprintf(buf, "Curve %d of %d\n", i+1, m_nInputChannels);
+        sDescription += buf;
+        if (m_curve[i]) {
+          m_curve[i]->Describe(sDescription);
+***************
+*** 1877,1883 ****
+      sReport += " - Element ";
+      sSigName = Info.GetSigName(GetType());
+      sReport += sSigName;
+!     sReport += " Has Empty Curve Element(s)!\r\n";
+      return icValidateCriticalError;
+    }
+  
+--- 1877,1883 ----
+      sReport += " - Element ";
+      sSigName = Info.GetSigName(GetType());
+      sReport += sSigName;
+!     sReport += " Has Empty Curve Element(s)!\n";
+      return icValidateCriticalError;
+    }
+  
+***************
+*** 2042,2048 ****
+    int i, j;
+    icFloatNumber *data = m_pMatrix;
+  
+!   sprintf(buf, "BEGIN_ELEM_MATRIX %d %d\r\n", m_nInputChannels, m_nOutputChannels);
+    sDescription += buf;
+  
+    for (j=0; j<m_nOutputChannels; j++) {
+--- 2042,2048 ----

[... 5702 lines stripped ...]