diff --git a/framework/RUNNING_msvs.txt b/framework/RUNNING_msvs.txt
index 8201f8ba6aa446c135857cfad38ee0cf902ea6d7..b25230acdba0d06d2153d39e2110d03a772df0a3 100755
--- a/framework/RUNNING_msvs.txt
+++ b/framework/RUNNING_msvs.txt
@@ -1,7 +1,7 @@
-This file contains some notes on running this library and tools as a developer from within Visual Studio.
-
-The libframework project will copy a framework config file into the debug or release folder. This is specially crafted to refer to the directory structure of the source code folder (which is different from the directory structure of the binary distribution of tsk_analyzeimg). 
-
-You should be able to run tsk_analyzeimg from inside of the debug or release folders. tsk_analyzeimg will find the framework_config file in the current folder and then refer to the pipeline config file in the SampleConfig folder. 
-
-If you want to debug tsk_analyzeimg, then you will need to edit the debug properties to change the working directory.  By default, Visual Studio will put you in the folder above the Debug or Release folders.  Set the "Working Directory" (set in Properties -> Configuration Properties -> Debugging) to be $(OutDir), which will be set to the Debug or Release folder.  You should then be able to use the Visual Studio debugger and use the standard framework and pipeline settings. 
+This file contains some notes on running this library and tools as a developer from within Visual Studio.
+
+The libframework project will copy a framework config file into the debug or release folder. This is specially crafted to refer to the directory structure of the source code folder (which is different from the directory structure of the binary distribution of tsk_analyzeimg). 
+
+You should be able to run tsk_analyzeimg from inside of the debug or release folders. tsk_analyzeimg will find the framework_config file in the current folder and then refer to the pipeline config file in the SampleConfig folder. 
+
+If you want to debug tsk_analyzeimg, then you will need to edit the debug properties to change the working directory.  By default, Visual Studio will put you in the folder above the Debug or Release folders.  Set the "Working Directory" (set in Properties -> Configuration Properties -> Debugging) to be $(OutDir), which will be set to the Debug or Release folder.  You should then be able to use the Visual Studio debugger and use the standard framework and pipeline settings. 
diff --git a/framework/SampleConfig/framework_config.xml b/framework/SampleConfig/framework_config.xml
index a6cb724bd09d7ec7ad76c8e3fb7535bd3245481d..72c332089cda0d309cdfe1be3914838ad9a9822b 100755
--- a/framework/SampleConfig/framework_config.xml
+++ b/framework/SampleConfig/framework_config.xml
@@ -1,22 +1,22 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- General version of the framework config.  Contains all possible settings -->
-<!-- For more information please consult the TskSystemProperties::PredefinedProperty member enumeration documentation at http://www.sleuthkit.org/sleuthkit/docs/framework-docs/classTskSystemProperties.html -->
-<TSK_FRAMEWORK_CONFIG>
-  <!-- <PROG_DIR>path</PROG_DIR> -->
-  <!-- <CONFIG_DIR>absolute path or #PROG_DIR#\... </CONFIG_DIR> -->
-  <!-- <MODULE_DIR>absolute path or #PROG_DIR#\... </MODULE_DIR> -->
-  <!-- <OUT_DIR>path</OUT_DIR> -->
-  <!-- <SYSTEM_OUT_DIR>path</SYSTEM_OUT_DIR> -->
-  <!-- <MODULE_OUT_DIR>path</MODULE_OUT_DIR> -->
-  <!-- <LOG_DIR>path</LOG_DIR> -->
-  <!-- <DB_HOST>host</DB_HOST> -->
-  <!-- <DB_PORT>port</DB_PORT> -->
-  <!-- <CARVE_DIR>path</CARVE_DIR> -->
-  <!-- <UNALLOC_SECTORS_IMG_FILE_NAME>filename</UNALLOC_SECTORS_IMG_FILE_NAME> -->
-  <!-- <MAX_UNALLOC_SECTORS_IMG_FILE_SIZE>number</MAX_UNALLOC_SECTORS_IMG_FILE_SIZE> -->
-  <!-- <CARVE_EXTRACT_KEEP_INPUT_FILES>true|false</CARVE_EXTRACT_KEEP_INPUT_FILES> -->
-  <!-- <CARVE_EXTRACT_KEEP_OUTPUT_FILES>true|false</CARVE_EXTRACT_KEEP_OUTPUT_FILES> -->
-  <!-- <SCALPEL_DIR>path</SCALPEL_DIR> -->
-  <!-- <SCALPEL_CONFIG_FILE>path</SCALPEL_CONFIG_FILE> -->  
-  <!-- <PIPELINE_CONFIG_FILE>path</PIPELINE_CONFIG_FILE>-->
-</TSK_FRAMEWORK_CONFIG>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- General version of the framework config.  Contains all possible settings -->
+<!-- For more information please consult the TskSystemProperties::PredefinedProperty member enumeration documentation at http://www.sleuthkit.org/sleuthkit/docs/framework-docs/classTskSystemProperties.html -->
+<TSK_FRAMEWORK_CONFIG>
+  <!-- <PROG_DIR>path</PROG_DIR> -->
+  <!-- <CONFIG_DIR>absolute path or #PROG_DIR#\... </CONFIG_DIR> -->
+  <!-- <MODULE_DIR>absolute path or #PROG_DIR#\... </MODULE_DIR> -->
+  <!-- <OUT_DIR>path</OUT_DIR> -->
+  <!-- <SYSTEM_OUT_DIR>path</SYSTEM_OUT_DIR> -->
+  <!-- <MODULE_OUT_DIR>path</MODULE_OUT_DIR> -->
+  <!-- <LOG_DIR>path</LOG_DIR> -->
+  <!-- <DB_HOST>host</DB_HOST> -->
+  <!-- <DB_PORT>port</DB_PORT> -->
+  <!-- <CARVE_DIR>path</CARVE_DIR> -->
+  <!-- <UNALLOC_SECTORS_IMG_FILE_NAME>filename</UNALLOC_SECTORS_IMG_FILE_NAME> -->
+  <!-- <MAX_UNALLOC_SECTORS_IMG_FILE_SIZE>number</MAX_UNALLOC_SECTORS_IMG_FILE_SIZE> -->
+  <!-- <CARVE_EXTRACT_KEEP_INPUT_FILES>true|false</CARVE_EXTRACT_KEEP_INPUT_FILES> -->
+  <!-- <CARVE_EXTRACT_KEEP_OUTPUT_FILES>true|false</CARVE_EXTRACT_KEEP_OUTPUT_FILES> -->
+  <!-- <SCALPEL_DIR>path</SCALPEL_DIR> -->
+  <!-- <SCALPEL_CONFIG_FILE>path</SCALPEL_CONFIG_FILE> -->  
+  <!-- <PIPELINE_CONFIG_FILE>path</PIPELINE_CONFIG_FILE>-->
+</TSK_FRAMEWORK_CONFIG>
diff --git a/framework/SampleConfig/framework_config_bindist.xml b/framework/SampleConfig/framework_config_bindist.xml
index dff56876218d3d161cad9993e716ff05658e3597..aa8be9d31d9737c17e06d2d91ab05e3b1af3a7a6 100755
--- a/framework/SampleConfig/framework_config_bindist.xml
+++ b/framework/SampleConfig/framework_config_bindist.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Used in binary distribution of framework  - Contains only the settings that are relevant for it -->
-<!-- For more information please consult the TskSystemProperties::PredefinedProperty member enumeration documentation at http://www.sleuthkit.org/sleuthkit/docs/framework-docs/classTskSystemProperties.html -->
-<TSK_FRAMEWORK_CONFIG>
-  <CONFIG_DIR>#PROG_DIR#</CONFIG_DIR>
-  <MODULE_DIR>#PROG_DIR#\..\modules\</MODULE_DIR>  
-  <!-- <SCALPEL_DIR>path</SCALPEL_DIR> -->
-</TSK_FRAMEWORK_CONFIG>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Used in binary distribution of framework  - Contains only the settings that are relevant for it -->
+<!-- For more information please consult the TskSystemProperties::PredefinedProperty member enumeration documentation at http://www.sleuthkit.org/sleuthkit/docs/framework-docs/classTskSystemProperties.html -->
+<TSK_FRAMEWORK_CONFIG>
+  <CONFIG_DIR>#PROG_DIR#</CONFIG_DIR>
+  <MODULE_DIR>#PROG_DIR#\..\modules\</MODULE_DIR>  
+  <!-- <SCALPEL_DIR>path</SCALPEL_DIR> -->
+</TSK_FRAMEWORK_CONFIG>
diff --git a/framework/SampleConfig/framework_config_template.xml b/framework/SampleConfig/framework_config_template.xml
index 6355eeb781807d79b60cb91e5cb4e34dec2f2f8e..167602a60747d23509462a9153f34518b9d11d71 100644
--- a/framework/SampleConfig/framework_config_template.xml
+++ b/framework/SampleConfig/framework_config_template.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Template of framework config.  Contains enough settings for installation. -->
-<!-- For more information please consult the TskSystemProperties::PredefinedProperty member enumeration documentation at http://www.sleuthkit.org/sleuthkit/docs/framework-docs/classTskSystemProperties.html -->
-<TSK_FRAMEWORK_CONFIG>
-  <CONFIG_DIR>#CONFIGDIRPATH#</CONFIG_DIR>
-  <MODULE_DIR>#MODULEDIRPATH#</MODULE_DIR>
-  <MODULE_CONFIG_DIR>#MODULECONFIGDIRPATH#</MODULE_CONFIG_DIR>
-  <PIPELINE_CONFIG_FILE>#CONFIG_DIR#/pipeline_config.xml</PIPELINE_CONFIG_FILE>
-</TSK_FRAMEWORK_CONFIG>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Template of framework config.  Contains enough settings for installation. -->
+<!-- For more information please consult the TskSystemProperties::PredefinedProperty member enumeration documentation at http://www.sleuthkit.org/sleuthkit/docs/framework-docs/classTskSystemProperties.html -->
+<TSK_FRAMEWORK_CONFIG>
+  <CONFIG_DIR>#CONFIGDIRPATH#</CONFIG_DIR>
+  <MODULE_DIR>#MODULEDIRPATH#</MODULE_DIR>
+  <MODULE_CONFIG_DIR>#MODULECONFIGDIRPATH#</MODULE_CONFIG_DIR>
+  <PIPELINE_CONFIG_FILE>#CONFIG_DIR#/pipeline_config.xml</PIPELINE_CONFIG_FILE>
+</TSK_FRAMEWORK_CONFIG>
diff --git a/framework/SampleConfig/framework_config_unixdev.xml b/framework/SampleConfig/framework_config_unixdev.xml
index 8e5344a93230f2e3dcbca5c8f781ed3779cd7f33..7175b280003d1c5efffd3905010d58e7c907f072 100644
--- a/framework/SampleConfig/framework_config_unixdev.xml
+++ b/framework/SampleConfig/framework_config_unixdev.xml
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- General version of the framework config for running in src tree in Linux/OS X. -->
-<!-- For more information please consult the TskSystemProperties::PredefinedProperty member enumeration documentation at http://www.sleuthkit.org/sleuthkit/docs/framework-docs/classTskSystemProperties.html -->
-<TSK_FRAMEWORK_CONFIG>
-  <CONFIG_DIR>#PROG_DIR#/../../../SampleConfig</CONFIG_DIR>
-  <PIPELINE_CONFIG_FILE>#CONFIG_DIR#/pipeline_config.xml</PIPELINE_CONFIG_FILE>
-  <MODULE_DIR>#PROG_DIR#/../../../runtime/modules</MODULE_DIR>
-  <MODULE_CONFIG_DIR>#PROG_DIR#/../../../runtime/modules_config</MODULE_CONFIG_DIR>
-</TSK_FRAMEWORK_CONFIG>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- General version of the framework config for running in src tree in Linux/OS X. -->
+<!-- For more information please consult the TskSystemProperties::PredefinedProperty member enumeration documentation at http://www.sleuthkit.org/sleuthkit/docs/framework-docs/classTskSystemProperties.html -->
+<TSK_FRAMEWORK_CONFIG>
+  <CONFIG_DIR>#PROG_DIR#/../../../SampleConfig</CONFIG_DIR>
+  <PIPELINE_CONFIG_FILE>#CONFIG_DIR#/pipeline_config.xml</PIPELINE_CONFIG_FILE>
+  <MODULE_DIR>#PROG_DIR#/../../../runtime/modules</MODULE_DIR>
+  <MODULE_CONFIG_DIR>#PROG_DIR#/../../../runtime/modules_config</MODULE_CONFIG_DIR>
+</TSK_FRAMEWORK_CONFIG>
diff --git a/framework/SampleConfig/framework_config_win32dev.xml b/framework/SampleConfig/framework_config_win32dev.xml
index 2530836bd2383542dcc6ee9a4b0880fd2ff60a67..6fdfb1bdecf7c7df3b77a45fb88d8019d8736654 100755
--- a/framework/SampleConfig/framework_config_win32dev.xml
+++ b/framework/SampleConfig/framework_config_win32dev.xml
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Framework config that is used when running from the VS dev environment - gets copied into debug/release folder. - contains only relevant settings -->
-<!-- For more information please consult the TskSystemProperties::PredefinedProperty member enumeration documentation at http://www.sleuthkit.org/sleuthkit/docs/framework-docs/classTskSystemProperties.html -->
-<TSK_FRAMEWORK_CONFIG>
-  <CONFIG_DIR>#PROG_DIR#\..\SampleConfig</CONFIG_DIR>
-  <MODULE_DIR>#PROG_DIR#</MODULE_DIR>
-  <MODULE_CONFIG_DIR>#PROG_DIR#</MODULE_CONFIG_DIR>
-</TSK_FRAMEWORK_CONFIG>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Framework config that is used when running from the VS dev environment - gets copied into debug/release folder. - contains only relevant settings -->
+<!-- For more information please consult the TskSystemProperties::PredefinedProperty member enumeration documentation at http://www.sleuthkit.org/sleuthkit/docs/framework-docs/classTskSystemProperties.html -->
+<TSK_FRAMEWORK_CONFIG>
+  <CONFIG_DIR>#PROG_DIR#\..\SampleConfig</CONFIG_DIR>
+  <MODULE_DIR>#PROG_DIR#</MODULE_DIR>
+  <MODULE_CONFIG_DIR>#PROG_DIR#</MODULE_CONFIG_DIR>
+</TSK_FRAMEWORK_CONFIG>
diff --git a/framework/SampleConfig/pipeline_config.xml b/framework/SampleConfig/pipeline_config.xml
index 247ef67599b69a79c797b579431c3f801abc489a..317275343820ec05131771cf95363240cbceed92 100755
--- a/framework/SampleConfig/pipeline_config.xml
+++ b/framework/SampleConfig/pipeline_config.xml
@@ -1,25 +1,25 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Contains only the modules that ship with TSK -->
-<PIPELINE_CONFIG>
-    <PIPELINE type="FileAnalysis">
-      <MODULE order="1" type="plugin" location="tskHashCalcModule"/>
-<!--<MODULE order="2" type="plugin" location="tskHashLookupModule" arguments="TODO: See README for how to create NSRL index file"/>-->
-
-      <MODULE order="3" type="plugin" location="tskFileTypeSigModule"/>
-      <MODULE order="4" type="plugin" location="tskEntropyModule"/>
-      <MODULE order="5" type="plugin" location="tskZipExtractionModule"/>
-      <MODULE order="6" type="plugin" location="tskLibExifModule"/>
-    </PIPELINE>
-
-    <PIPELINE type="PostProcessing">
-      <!--This pipeline configuration assumes that the RegRipper executable is named rip.exe and is present in the program directory-->
-      <!--<MODULE order="1" type="plugin" location="tskRegRipperModule" arguments="-e #PROG_DIR#/RegRipper/rip.exe; -o #MODULE_OUT_DIR#/RegRipper/"/>-->
-
-      <MODULE order="2" type="plugin" location="tskInterestingFilesModule"/>
-
-      <MODULE order="3" type="plugin" location="tskSaveInterestingFilesModule"/>
-
-      <MODULE order="4" type="plugin" location="tskSummaryReportModule"/>
-
-    </PIPELINE>
-</PIPELINE_CONFIG>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Contains only the modules that ship with TSK -->
+<PIPELINE_CONFIG>
+    <PIPELINE type="FileAnalysis">
+      <MODULE order="1" type="plugin" location="tskHashCalcModule"/>
+<!--<MODULE order="2" type="plugin" location="tskHashLookupModule" arguments="TODO: See README for how to create NSRL index file"/>-->
+
+      <MODULE order="3" type="plugin" location="tskFileTypeSigModule"/>
+      <MODULE order="4" type="plugin" location="tskEntropyModule"/>
+      <MODULE order="5" type="plugin" location="tskZipExtractionModule"/>
+      <MODULE order="6" type="plugin" location="tskLibExifModule"/>
+    </PIPELINE>
+
+    <PIPELINE type="PostProcessing">
+      <!--This pipeline configuration assumes that the RegRipper executable is named rip.exe and is present in the program directory-->
+      <!--<MODULE order="1" type="plugin" location="tskRegRipperModule" arguments="-e #PROG_DIR#/RegRipper/rip.exe; -o #MODULE_OUT_DIR#/RegRipper/"/>-->
+
+      <MODULE order="2" type="plugin" location="tskInterestingFilesModule"/>
+
+      <MODULE order="3" type="plugin" location="tskSaveInterestingFilesModule"/>
+
+      <MODULE order="4" type="plugin" location="tskSummaryReportModule"/>
+
+    </PIPELINE>
+</PIPELINE_CONFIG>
diff --git a/framework/docs/fileToDoxPage.py b/framework/docs/fileToDoxPage.py
index 17c71d871ecfb88ec619ddeaf9e342f0c142154f..c5ff196e32911c7492812069f3ad2400b938d9e0 100755
--- a/framework/docs/fileToDoxPage.py
+++ b/framework/docs/fileToDoxPage.py
@@ -1,28 +1,28 @@
-from __future__ import with_statement
-
-import os
-from optparse import OptionParser
-                 
-"""
-Creates a Doxygen page that displays the contents of a file.
-"""
-if __name__ == "__main__":
-    parser = OptionParser(usage = 'usage: %prog <src_file_path> <output_dir> <page_name> <page_title>')
-    (options, args) = parser.parse_args()
-    if len(args) != 4:
-        parser.error("incorrect number of arguments")
-
-    with open(args[0], 'r') as srcFile:
-        srcFileContents = srcFile.read()
-        
-    (fileName, fileExt) = os.path.splitext(args[0])
-        
-    with open(os.path.join(args[1], args[2] + '.dox'), 'w') as doxFile:
-        doxFile.write('/*! \\page ' + args[2] + '_page ' + args[3] + '\n\n')
-        if fileExt is None:
-            doxFile.write('\\code\n\n')
-        else:
-            doxFile.write('\\code{' + fileExt + '}\n\n')
-        doxFile.write(srcFileContents)
-        doxFile.write('\n\n\\endcode\n\n*/')
-
+from __future__ import with_statement
+
+import os
+from optparse import OptionParser
+                 
+"""
+Creates a Doxygen page that displays the contents of a file.
+"""
+if __name__ == "__main__":
+    parser = OptionParser(usage = 'usage: %prog <src_file_path> <output_dir> <page_name> <page_title>')
+    (options, args) = parser.parse_args()
+    if len(args) != 4:
+        parser.error("incorrect number of arguments")
+
+    with open(args[0], 'r') as srcFile:
+        srcFileContents = srcFile.read()
+        
+    (fileName, fileExt) = os.path.splitext(args[0])
+        
+    with open(os.path.join(args[1], args[2] + '.dox'), 'w') as doxFile:
+        doxFile.write('/*! \\page ' + args[2] + '_page ' + args[3] + '\n\n')
+        if fileExt is None:
+            doxFile.write('\\code\n\n')
+        else:
+            doxFile.write('\\code{' + fileExt + '}\n\n')
+        doxFile.write(srcFileContents)
+        doxFile.write('\n\n\\endcode\n\n*/')
+
diff --git a/framework/docs/img_db_schema_v1_5.dox b/framework/docs/img_db_schema_v1_5.dox
index 970edd1f04a3bbb7679a0ef18da20f2661507d6a..6ec1db548ed8bcd5b2dab9fc2ed42d092fc2d95a 100755
--- a/framework/docs/img_db_schema_v1_5.dox
+++ b/framework/docs/img_db_schema_v1_5.dox
@@ -1,181 +1,181 @@
-/*! \page img_db_schema_v1_5_page SQLite Image Database Schema v1.5
-
-\section general_information_tables Analysis Process Metadata Tables
-
-\subsection db_info_table db_info
-Contains metadata about the software that produced the image database.
-- <i>name</i> - Name of the software, e.g., DBSchema, Sleuth Kit, etc. (TEXT)
-- <i>version</i> - Version of the software, e.g., 1.5, 4.0.0, etc. (TEXT)
-
-\subsection modules_table modules
-Contains one row for each module used to produce the image database.
-- <i>module_id</i> - Id assigned to the module (INTEGER) 
-- <i>name</i> - Name of the module (TEXT)
-- <i>description</i> - Description of the module (TEXT)
-
-\subsection module_status_table module_status
-Contains one row for each status code returned by the modules in the file analysis pipeline.
-- <i>module_id</i> - Id assigned to the module (INTEGER - foreign key, \ref modules_table) 
-- <i>file_id</i> - Id assigned to the file the module analyzed (INTEGER - foreign key, \ref files_table)
-- <i>status</i> - Status reported by the module on completion of its analysis of the file (INTEGER -  \ref TskModule::Status) 
-
-\section image_tables Image Tables
-
-\subsection image_info_table image_info 
-Contains one row for each image in the set of images analyzed to produce the image database.  
-There will be more than one row in this table for split images. 
-- <i>type</i> - Disk image file type (INTEGER - \ref TSK_IMG_TYPE_ENUM)
-- <i>ssize</i> - Block (sector) size of imaged device in bytes (INTEGER)
-
-\subsection image_names_table img_names
-Contains one row for each image in the set of images analyzed to produce the image database.  
-There will be more than one row in this table for split images. 
-- <i>name</i> - Image file path (TEXT)
-- <i>seq</i> - Sequence number, counting up from one, of the image within the image set (INTEGER) 
-
-\section volume_tables Volume / Partition Tables 
-
-\subsection vol_info_table vol_info
-Contains one row for every volume/partition in the set of images analyzed to produce the database.
-- <i>vol_id</i> - Id assigned to the volume / partition (INTEGER)
-- <i>sect_start</i> - Block (sector) offset of the start of the volume / partition in the image (INTEGER)
-- <i>sect_len</i> - Number of blocks (sectors) in the volume / partition (INTEGER)
-- <i>description</i> - Description of the volume/partition (TEXT)
-- <i>flags</i> - Flags for the the volume/partition (INTEGER - \ref TSK_VS_PART_FLAG_ENUM)
-
-\section file_system_tables File System Tables
-
-\subsection fs_info_table fs_info
-Contains one row for for every file system in the set of images analyzed to produce the database. 
-- <i>fs_id</i> - Id assigned to the file system (INTEGER)
-- <i>img_byte_offset</i> - Byte offset of the start of the file system within the image (INTEGER)
-- <i>vol_id</i> - Id of the volume/partition where the file system resides (INTEGER - foreign key, \ref vol_info_table)
-- <i>fs_type</i> - File system type (INTEGER - \ref TSK_FS_TYPE_ENUM)
-- <i>block_size</i> - Block size in bytes (INTEGER)
-- <i>block_count</i> - Number of blocks (INTEGER)
-- <i>root_inum</i> - Metadata address of root directory (INTEGER)
-- <i>first_inum</i> - First valid metadata address (INTEGER)
-- <i>last_inum</i> - Last valid metadata address (INTEGER)
-
-\subsection files_table files
-Contains one row for for every file found in the set of images analyzed to produce the database.  
-- <i>file_id</i> - Id assigned to the file (INTEGER)
-- <i>par_file_id</i> - Parent file of the file, e.g., a directory for a regular file, an archive file for a derived file (INTEGER - foreign key, \ref files_table)
-- <i>name</i> - File name (TEXT)
-- <i>full_path</i> - Path of the file in the image (TEXT)
-- <i>size</i> - Size in bytes (INTEGER)
-- <i>type_id</i> - File classification by image analysis system, e.g., file system file, carved file, etc. (INTEGER - \ref TSK_DB_FILES_TYPE_ENUM)
-- <i>dir_type</i> - File type as specified in the directory metadata structure, e.g., directory, regular file, etc. (INTEGER - \ref TSK_FS_NAME_TYPE_ENUM)
-- <i>meta_type</i> - File meta-type, e.g., directory, regular file, etc. (INTEGER - \ref TSK_FS_META_TYPE_ENUM)
-- <i>dir_flags</i> -  Allocation status (INTEGER - \ref TSK_FS_NAME_FLAG_ENUM)
-- <i>meta_flags</i> - File metadata structure flags (INTEGER - \ref TSK_FS_META_FLAG_ENUM)
-- <i>ctime</i> - Last file / metadata status change time as seconds since Jan 1, 1970 UTC (INTEGER)
-- <i>crtime</i> - Create time (INTEGER)
-- <i>atime</i> - Access time (INTEGER)
-- <i>mtime</i> - Modification time (INTEGER)
-- <i>mode</i> - Unix-style file permissions (INTEGER - \ref TSK_FS_META_MODE_ENUM)
-- <i>uid</i> - Owner id (INTEGER)
-- <i>gid</i> - Group id (INTEGER)
-- <i>status</i> - Analysis status (INTEGER - \ref TskImgDB::FILE_STATUS)
-
-\subsection file_hashes_table file_hashes
-Contains one row of file content hash values for every file found in the set of images analyzed to produce the database.
-The hash values may be NULL if not computed.
-- <i>file_id</i> - Id assigned to the file (INTEGER - foreign key, \ref files_table)
-- <i>md5</i> - MD5 hash (TEXT)
-- <i>sha1</i> - SHA-1 hash (TEXT)
-- <i>sha2_256</i> - SHA-256 hash (TEXT)
-- <i>sha2_512</i> - SHA-512 hash (TEXT)
-- <i>known</i> - Known status as determined by hash database lookups (INTEGER - \ref TskImgDB::KNOWN_STATUS)
-
-\subsection fs_files_table fs_files
-Contains one row for each file discovered during file system analysis.
-- <i>file_id</i> - Id assigned to the file (INTEGER - foreign key, \ref files_table)
-- <i>fs_id</i> - Id of the file system that contained the file (INTEGER - foreign key, \ref fs_info_table)
-- <i>fs_file_id</i> - Id assigned to the file by the file system, e.g., an inode number (INTEGER)
-- <i>attr_id</i> - The MFT attribute id of files in NTFS file systems (INTEGER)
-- <i>attr_type</i> - The MFT attribute type of files in NTFS file systems (INTEGER - \ref TSK_FS_ATTR_TYPE_ENUM)
-
-\subsection fs_blocks_table fs_blocks
-Contains one row for each contiguous run of blocks in a file system file.
-- <i>file_id</i> - Id assigned to the file (INTEGER - foreign key, \ref files_table)
-- <i>fs_id</i> - Id assigned to the file system that contains the file (INTEGER - foreign key, \ref fs_info_table)
-- <i>seq</i> - Sequence number, counting up from one, of the run within the set of runs (INTEGER)
-- <i>blk_start</i> - Logical block offset of the beginning of the run (INTEGER)
-- <i>blk_len</i> - Number of blocks in the run (INTEGER)
-
-\subsection alloc_unalloc_map_table alloc_unalloc_map
-Contains one row for each contiguous run of unallocated blocks (sectors) in a volume / partition.
-These runs are used to create unallocated sectors files in preparation for carving.
-- <i>unalloc_img_id</i> - Id assigned to the unallocated sectors file that contains the run (INTEGER)
-- <i>vol_id</i> - Id of the volume / partition that contains the run (INTEGER - foreign key, \ref vol_info_table)
-- <i>unalloc_img_sect_start</i> - Sector offset of the beginning of the run in the unallocated sectors image file (INTEGER)
-- <i>orig_img_sect_start</i> - Sector offset of the beginning of the run in the image (INTEGER)
-- <i>sect_len</i> - Length of the run in sectors (INTEGER)
-
-\subsection unalloc_img_status_table unalloc_img_status
-Contains one row for each unallocated sectors file created in preparation for carving.
-- <i>unalloc_img_id</i> - Id assigned to the file (INTEGER) 
-- <i>status</i> - Analysis status (INTEGER - \ref TskImgDB::UNALLOC_IMG_STATUS) 
-
-\subsection carved_files_table carved_files
-Contains one row for each file carved from unallocated space.
-- <i>file_id</i> - Id assigned to the file (INTEGER - foreign key, \ref files_table)
-- <i>vol_id</i> - Volume/partition where the carved file resided (INTEGER - foreign key, \ref vol_info_table)
-
-\subsection carved_sectors_table carved_sectors
-Contains one row for each contiguous run of blocks (sectors) of unallocated space used to create carved files.
-- <i>file_id</i> - Id assigned to the carved file that contains the run (INTEGER - foreign key, \ref files_table)
-- <i>seq</i> - Sequence number, counting up from one, of the run within the set of runs in the carved file (INTEGER)
-- <i>sect_start</i> - Sector offset of the run in the image (INTEGER)
-- <i>sect_len</i> - Length of the run in sectors (INTEGER)
-
-\subsection unused_sectors_table unused_sectors
-Contains one row for each contiguous run of blocks (sectors) of unallocated space left over after carving.
-These runs are used to create unused sectors files to pass through the file analysis pipeline.
-- <i>file_id</i> - Id assigned to the unused sectors file that contains the run (INTEGER - foreign key, \ref files_table)
-- <i>vol_id</i> - Id of the volume / partition that contains the run (INTEGER - foreign key, \ref vol_info_table)
-- <i>sect_start</i> - Sector offset of the run in the image (INTEGER)
-- <i>sect_len</i> - Length of the run in sectors (INTEGER)
-
-\subsection derived_files_table derived_files
-Contains one row for each file derived from another file, e.g., files extracted from archive files.
-- <i>file_id</i> - Id assigned to the file (INTEGER - foreign key, \ref files_table)
-- <i>derivation_details</i> - Unused (TEXT)
-
-\section blackboard_tables Blackboard Tables
-
-\subsection blackboard_artifacts_table blackboard_artifacts
-Contains one row for each artifact found in the set of images analyzed to produce the database.
-- <i>artifact_id</i> - Id assigned to the artifact (INTEGER)
-- <i>obj_id</i> - Id assigned to the file associated with the artifact (INTEGER - foreign key, \ref files_table)
-- <i>artifact_type_id</i> - Id assigned to the type of artifact (INTEGER - foreign key, \ref blackboard_attribute_types_table)
-
-\subsection blackboard_attributes_table blackboard_attributes
-Stores the values of the name-value pairs that are the attributes associated with an artifact. 
-Only one of the value columns should be populated.
-- <i>artifact_id</i> - Id assigned to the artifact (INTEGER)
-- <i>source</i> - Source string, should be the name of the module that discovered the artifact (TEXT)
-- <i>context</i> - Additional context information (TEXT)
-- <i>attribute_type_id</i> - Id for the type of attribute (INTEGER - foreign key, \ref blackboard_attribute_types_table)
-- <i>value_type</i> - The type of the value, serves as discriminant for the union of the value columns ( INTEGER - \ref TskImgDB::VALUE_TYPE)
-- <i>value_byte</i> - A blob of binary data (BLOB)
-- <i>value_text</i> - A string of text (TEXT)
-- <i>value_int32</i> - An 32-bit integer (INTEGER - 0 by default default)
-- <i>value_int64</i> - A 64-bit integer (INTEGER - 0 by default default)
-- <i>value_double</i> - A double (NUMERIC - 0 by default default)
-- <i>obj_id</i> - Id assigned to the file associated with the attribute (INTEGER - foreign key, \ref files_table)
-
-\subsection blackboard_artifact_types_table blackboard_artifact_types
-Artifact types.
-- <i>artifact_type_id</i> - Id assigned to the type (INTEGER)
-- <i>type_name</i> - A unique string identifier for the type (TEXT)
-- <i>display_name</i> - A human-readable display name for the type (TEXT)
-
-\subsection blackboard_attribute_types_table blackboard_attribute_types
-Artifact attribute types.
-- <i>attribute_type_id</i> - Id assigned to the type (INTEGER)
-- <i>type_name</i> - A unique string identifier for the type (TEXT)
-- <i>display_name</i> - A human-readable display name for the type (TEXT)
-
+/*! \page img_db_schema_v1_5_page SQLite Image Database Schema v1.5
+
+\section general_information_tables Analysis Process Metadata Tables
+
+\subsection db_info_table db_info
+Contains metadata about the software that produced the image database.
+- <i>name</i> - Name of the software, e.g., DBSchema, Sleuth Kit, etc. (TEXT)
+- <i>version</i> - Version of the software, e.g., 1.5, 4.0.0, etc. (TEXT)
+
+\subsection modules_table modules
+Contains one row for each module used to produce the image database.
+- <i>module_id</i> - Id assigned to the module (INTEGER) 
+- <i>name</i> - Name of the module (TEXT)
+- <i>description</i> - Description of the module (TEXT)
+
+\subsection module_status_table module_status
+Contains one row for each status code returned by the modules in the file analysis pipeline.
+- <i>module_id</i> - Id assigned to the module (INTEGER - foreign key, \ref modules_table) 
+- <i>file_id</i> - Id assigned to the file the module analyzed (INTEGER - foreign key, \ref files_table)
+- <i>status</i> - Status reported by the module on completion of its analysis of the file (INTEGER -  \ref TskModule::Status) 
+
+\section image_tables Image Tables
+
+\subsection image_info_table image_info 
+Contains one row for each image in the set of images analyzed to produce the image database.  
+There will be more than one row in this table for split images. 
+- <i>type</i> - Disk image file type (INTEGER - \ref TSK_IMG_TYPE_ENUM)
+- <i>ssize</i> - Block (sector) size of imaged device in bytes (INTEGER)
+
+\subsection image_names_table img_names
+Contains one row for each image in the set of images analyzed to produce the image database.  
+There will be more than one row in this table for split images. 
+- <i>name</i> - Image file path (TEXT)
+- <i>seq</i> - Sequence number, counting up from one, of the image within the image set (INTEGER) 
+
+\section volume_tables Volume / Partition Tables 
+
+\subsection vol_info_table vol_info
+Contains one row for every volume/partition in the set of images analyzed to produce the database.
+- <i>vol_id</i> - Id assigned to the volume / partition (INTEGER)
+- <i>sect_start</i> - Block (sector) offset of the start of the volume / partition in the image (INTEGER)
+- <i>sect_len</i> - Number of blocks (sectors) in the volume / partition (INTEGER)
+- <i>description</i> - Description of the volume/partition (TEXT)
+- <i>flags</i> - Flags for the the volume/partition (INTEGER - \ref TSK_VS_PART_FLAG_ENUM)
+
+\section file_system_tables File System Tables
+
+\subsection fs_info_table fs_info
+Contains one row for for every file system in the set of images analyzed to produce the database. 
+- <i>fs_id</i> - Id assigned to the file system (INTEGER)
+- <i>img_byte_offset</i> - Byte offset of the start of the file system within the image (INTEGER)
+- <i>vol_id</i> - Id of the volume/partition where the file system resides (INTEGER - foreign key, \ref vol_info_table)
+- <i>fs_type</i> - File system type (INTEGER - \ref TSK_FS_TYPE_ENUM)
+- <i>block_size</i> - Block size in bytes (INTEGER)
+- <i>block_count</i> - Number of blocks (INTEGER)
+- <i>root_inum</i> - Metadata address of root directory (INTEGER)
+- <i>first_inum</i> - First valid metadata address (INTEGER)
+- <i>last_inum</i> - Last valid metadata address (INTEGER)
+
+\subsection files_table files
+Contains one row for for every file found in the set of images analyzed to produce the database.  
+- <i>file_id</i> - Id assigned to the file (INTEGER)
+- <i>par_file_id</i> - Parent file of the file, e.g., a directory for a regular file, an archive file for a derived file (INTEGER - foreign key, \ref files_table)
+- <i>name</i> - File name (TEXT)
+- <i>full_path</i> - Path of the file in the image (TEXT)
+- <i>size</i> - Size in bytes (INTEGER)
+- <i>type_id</i> - File classification by image analysis system, e.g., file system file, carved file, etc. (INTEGER - \ref TSK_DB_FILES_TYPE_ENUM)
+- <i>dir_type</i> - File type as specified in the directory metadata structure, e.g., directory, regular file, etc. (INTEGER - \ref TSK_FS_NAME_TYPE_ENUM)
+- <i>meta_type</i> - File meta-type, e.g., directory, regular file, etc. (INTEGER - \ref TSK_FS_META_TYPE_ENUM)
+- <i>dir_flags</i> -  Allocation status (INTEGER - \ref TSK_FS_NAME_FLAG_ENUM)
+- <i>meta_flags</i> - File metadata structure flags (INTEGER - \ref TSK_FS_META_FLAG_ENUM)
+- <i>ctime</i> - Last file / metadata status change time as seconds since Jan 1, 1970 UTC (INTEGER)
+- <i>crtime</i> - Create time (INTEGER)
+- <i>atime</i> - Access time (INTEGER)
+- <i>mtime</i> - Modification time (INTEGER)
+- <i>mode</i> - Unix-style file permissions (INTEGER - \ref TSK_FS_META_MODE_ENUM)
+- <i>uid</i> - Owner id (INTEGER)
+- <i>gid</i> - Group id (INTEGER)
+- <i>status</i> - Analysis status (INTEGER - \ref TskImgDB::FILE_STATUS)
+
+\subsection file_hashes_table file_hashes
+Contains one row of file content hash values for every file found in the set of images analyzed to produce the database.
+The hash values may be NULL if not computed.
+- <i>file_id</i> - Id assigned to the file (INTEGER - foreign key, \ref files_table)
+- <i>md5</i> - MD5 hash (TEXT)
+- <i>sha1</i> - SHA-1 hash (TEXT)
+- <i>sha2_256</i> - SHA-256 hash (TEXT)
+- <i>sha2_512</i> - SHA-512 hash (TEXT)
+- <i>known</i> - Known status as determined by hash database lookups (INTEGER - \ref TskImgDB::KNOWN_STATUS)
+
+\subsection fs_files_table fs_files
+Contains one row for each file discovered during file system analysis.
+- <i>file_id</i> - Id assigned to the file (INTEGER - foreign key, \ref files_table)
+- <i>fs_id</i> - Id of the file system that contained the file (INTEGER - foreign key, \ref fs_info_table)
+- <i>fs_file_id</i> - Id assigned to the file by the file system, e.g., an inode number (INTEGER)
+- <i>attr_id</i> - The MFT attribute id of files in NTFS file systems (INTEGER)
+- <i>attr_type</i> - The MFT attribute type of files in NTFS file systems (INTEGER - \ref TSK_FS_ATTR_TYPE_ENUM)
+
+\subsection fs_blocks_table fs_blocks
+Contains one row for each contiguous run of blocks in a file system file.
+- <i>file_id</i> - Id assigned to the file (INTEGER - foreign key, \ref files_table)
+- <i>fs_id</i> - Id assigned to the file system that contains the file (INTEGER - foreign key, \ref fs_info_table)
+- <i>seq</i> - Sequence number, counting up from one, of the run within the set of runs (INTEGER)
+- <i>blk_start</i> - Logical block offset of the beginning of the run (INTEGER)
+- <i>blk_len</i> - Number of blocks in the run (INTEGER)
+
+\subsection alloc_unalloc_map_table alloc_unalloc_map
+Contains one row for each contiguous run of unallocated blocks (sectors) in a volume / partition.
+These runs are used to create unallocated sectors files in preparation for carving.
+- <i>unalloc_img_id</i> - Id assigned to the unallocated sectors file that contains the run (INTEGER)
+- <i>vol_id</i> - Id of the volume / partition that contains the run (INTEGER - foreign key, \ref vol_info_table)
+- <i>unalloc_img_sect_start</i> - Sector offset of the beginning of the run in the unallocated sectors image file (INTEGER)
+- <i>orig_img_sect_start</i> - Sector offset of the beginning of the run in the image (INTEGER)
+- <i>sect_len</i> - Length of the run in sectors (INTEGER)
+
+\subsection unalloc_img_status_table unalloc_img_status
+Contains one row for each unallocated sectors file created in preparation for carving.
+- <i>unalloc_img_id</i> - Id assigned to the file (INTEGER) 
+- <i>status</i> - Analysis status (INTEGER - \ref TskImgDB::UNALLOC_IMG_STATUS) 
+
+\subsection carved_files_table carved_files
+Contains one row for each file carved from unallocated space.
+- <i>file_id</i> - Id assigned to the file (INTEGER - foreign key, \ref files_table)
+- <i>vol_id</i> - Volume/partition where the carved file resided (INTEGER - foreign key, \ref vol_info_table)
+
+\subsection carved_sectors_table carved_sectors
+Contains one row for each contiguous run of blocks (sectors) of unallocated space used to create carved files.
+- <i>file_id</i> - Id assigned to the carved file that contains the run (INTEGER - foreign key, \ref files_table)
+- <i>seq</i> - Sequence number, counting up from one, of the run within the set of runs in the carved file (INTEGER)
+- <i>sect_start</i> - Sector offset of the run in the image (INTEGER)
+- <i>sect_len</i> - Length of the run in sectors (INTEGER)
+
+\subsection unused_sectors_table unused_sectors
+Contains one row for each contiguous run of blocks (sectors) of unallocated space left over after carving.
+These runs are used to create unused sectors files to pass through the file analysis pipeline.
+- <i>file_id</i> - Id assigned to the unused sectors file that contains the run (INTEGER - foreign key, \ref files_table)
+- <i>vol_id</i> - Id of the volume / partition that contains the run (INTEGER - foreign key, \ref vol_info_table)
+- <i>sect_start</i> - Sector offset of the run in the image (INTEGER)
+- <i>sect_len</i> - Length of the run in sectors (INTEGER)
+
+\subsection derived_files_table derived_files
+Contains one row for each file derived from another file, e.g., files extracted from archive files.
+- <i>file_id</i> - Id assigned to the file (INTEGER - foreign key, \ref files_table)
+- <i>derivation_details</i> - Unused (TEXT)
+
+\section blackboard_tables Blackboard Tables
+
+\subsection blackboard_artifacts_table blackboard_artifacts
+Contains one row for each artifact found in the set of images analyzed to produce the database.
+- <i>artifact_id</i> - Id assigned to the artifact (INTEGER)
+- <i>obj_id</i> - Id assigned to the file associated with the artifact (INTEGER - foreign key, \ref files_table)
+- <i>artifact_type_id</i> - Id assigned to the type of artifact (INTEGER - foreign key, \ref blackboard_attribute_types_table)
+
+\subsection blackboard_attributes_table blackboard_attributes
+Stores the values of the name-value pairs that are the attributes associated with an artifact. 
+Only one of the value columns should be populated.
+- <i>artifact_id</i> - Id assigned to the artifact (INTEGER)
+- <i>source</i> - Source string, should be the name of the module that discovered the artifact (TEXT)
+- <i>context</i> - Additional context information (TEXT)
+- <i>attribute_type_id</i> - Id for the type of attribute (INTEGER - foreign key, \ref blackboard_attribute_types_table)
+- <i>value_type</i> - The type of the value, serves as discriminant for the union of the value columns ( INTEGER - \ref TskImgDB::VALUE_TYPE)
+- <i>value_byte</i> - A blob of binary data (BLOB)
+- <i>value_text</i> - A string of text (TEXT)
+- <i>value_int32</i> - An 32-bit integer (INTEGER - 0 by default default)
+- <i>value_int64</i> - A 64-bit integer (INTEGER - 0 by default default)
+- <i>value_double</i> - A double (NUMERIC - 0 by default default)
+- <i>obj_id</i> - Id assigned to the file associated with the attribute (INTEGER - foreign key, \ref files_table)
+
+\subsection blackboard_artifact_types_table blackboard_artifact_types
+Artifact types.
+- <i>artifact_type_id</i> - Id assigned to the type (INTEGER)
+- <i>type_name</i> - A unique string identifier for the type (TEXT)
+- <i>display_name</i> - A human-readable display name for the type (TEXT)
+
+\subsection blackboard_attribute_types_table blackboard_attribute_types
+Artifact attribute types.
+- <i>attribute_type_id</i> - Id assigned to the type (INTEGER)
+- <i>type_name</i> - A unique string identifier for the type (TEXT)
+- <i>display_name</i> - A human-readable display name for the type (TEXT)
+
 */
\ No newline at end of file
diff --git a/framework/docs/module_dev.dox b/framework/docs/module_dev.dox
index abb0472d350bb0a1a88d6f66dac585513717a36c..a0e9aaa1cb3ca90b9c424ae77fc56268fc238ebf 100644
--- a/framework/docs/module_dev.dox
+++ b/framework/docs/module_dev.dox
@@ -89,7 +89,7 @@ Unlike the module execution function for a file analysis pipeline, this function
 
The <tt>report</tt> function does not have access to an individual file pointer as an argument, but may access files as described in the \ref  mod_stuff_files section below.  
 Like the <tt>run</tt> function, the report() function can stop subsequent modules in the pipeline from executing by returning a TskModule::STOP status. 
 This should not be done lightly. 
-Returning TskModule::STOP from the <tt>run</tt> function terminates analysis of the current file, but returning TskModule::STOP from <tt>report</tt> terminates analysis of the current disk image.
+Returning TskModule::STOP from the <tt>run</tt> function terminates analysis of the current file, but returning TskModule::STOP from <tt>report</tt> terminates analysis of the current disk image.
 
 
 \subsection mod_setup_cleanup Module Cleanup Function
@@ -173,7 +173,7 @@ Now that you know how to structure your module, we'll examine how your module ca
 \subsection mod_stuff_services Framework Services
 The framework provides a set of services to each module.  
 These services allow the module to access common resources and information, and can be accessed through the singleton TskServices class. 
-The following code snippet demonstrates how to use the TskServices class to get access to the Log service:
+The following code snippet demonstrates how to use the TskServices class to get access to the Log service:
 
 <pre>Log& tskLog = TskServices::Instance().getLog();</pre>
 
Other framework services can be accessed in a similar manner.  
@@ -194,7 +194,7 @@ Because of this, some services may be unavailable in a given application:
   <li>Scheduler provides a mechanism to schedule other types of analysis (especially useful for distributed implementations).  For example, if a module opens up a ZIP file, it might schedule analysis of each of the extracted files. </li>
 
   <li>ImageFile provides access to the disk image being analyzed.  This allows a module to access a specific file or raw data directly from the image.</li>
-</ul>
+</ul>
 
 
 \subsection mod_stuff_file Accessing File Content and Metadata
diff --git a/framework/docs/pipeline.dox b/framework/docs/pipeline.dox
index c72a97485ea4adb6c7c1c335c55ef5d4a55f65f1..efb22927efc05573689b37c0f49358266835b2b2 100755
--- a/framework/docs/pipeline.dox
+++ b/framework/docs/pipeline.dox
@@ -48,11 +48,11 @@ Note that each module to be included in a pipeline is represented by a <tt>MODUL
 <table>
 <tr><th>Attribute</th><th>Description</th><th>Required?</th></tr>
 
-<tr><td>order</td><td>The position of the module within the pipeline.</td><td>Yes</td></tr>
-<tr><td>type</td><td>Either "executable" or "plugin".</td><td>Yes</td></tr>
-<tr><td>location</td><td>The path of the program to be run by an executable module or the dynamic library to be loaded for a plug-in module. This can either be a fully qualified path or a relative path. If the path is relative, the framework will look for the file in the current working directory, TskSystemProperties::MODULE_DIR, and TskSystemProperties::PROG_DIR.</td><td>Yes</td></tr>
-<tr><td>arguments</td><td>The arguments to pass to the module.  See \ref pipe_config_macros to learn how arguments can incorporate information not available until runtime.</td><td>No</td></tr> 
-<tr><td>output</td><td>The path to a file to contain anything the module writes to <tt>stdout</tt>. This attribute applies only to executable modules.  See \ref pipe_config_macros to learn how output file paths can incorporate information not available until runtime.</td><td>No</td></tr>
+<tr><td>order</td><td>The position of the module within the pipeline.</td><td>Yes</td></tr>
+<tr><td>type</td><td>Either "executable" or "plugin".</td><td>Yes</td></tr>
+<tr><td>location</td><td>The path of the program to be run by an executable module or the dynamic library to be loaded for a plug-in module. This can either be a fully qualified path or a relative path. If the path is relative, the framework will look for the file in the current working directory, TskSystemProperties::MODULE_DIR, and TskSystemProperties::PROG_DIR.</td><td>Yes</td></tr>
+<tr><td>arguments</td><td>The arguments to pass to the module.  See \ref pipe_config_macros to learn how arguments can incorporate information not available until runtime.</td><td>No</td></tr> 
+<tr><td>output</td><td>The path to a file to contain anything the module writes to <tt>stdout</tt>. This attribute applies only to executable modules.  See \ref pipe_config_macros to learn how output file paths can incorporate information not available until runtime.</td><td>No</td></tr>
 
 </table>
 
@@ -63,15 +63,15 @@ When configuring a pipeline module pay particular attention to the following det
 - Redirected output on executable modules will be appended to the specified output file. 
 Attempting to write output to a shared file may result in file access errors when multiple pipelines (in a multithreaded or distributed environment) attempt to write data to the same file. 
 You can avoid this by using the TskSystemProperties::UNIQUE_ID macro (if the property is set) to construct the output file name for an executable module (see \ref pipe_config_macros for more on configuration file macros).
-
-- You must escape the following characters if you wish to include them in the command line:
+
+- You must escape the following characters if you wish to include them in the command line:
 
 
 <table>
<tr><th>Character</th><th>Escaped Character</th></tr>
<tr><td>&amp;</td><td>&amp;amp;</td></tr>
<tr><td>&quot;</td><td>&amp;quot;</td></tr>
<tr><td>&gt;</td><td>&amp;gt;</td></tr>
<tr><td>&lt;</td><td>&amp;lt;</td></tr>
<tr><td>&apos;</td><td>&amp;apos;</td></tr>
 </table>
 
 
-\subsection pipe_config_macros Configuration File Macros
+\subsection pipe_config_macros Configuration File Macros
 
 The <tt>arguments</tt> and <tt>output</tt> attributes of a <tt>MODULE</tt> element in a pipeline configuration file allow for the substitution of runtime values into the associated strings. 
 This is possible because there is a set of configuration file macros that the framework expands when it reads in a pipeline configuration file.   
@@ -88,5 +88,5 @@ Note that although this macro is not strictly necessary for plug-in modules beca
 
 The tsk_validatepipeline tool, which comes with the framework, can be used to verify that a pipeline configuration file is well-formed and all of the modules specified in the file can be found.
 
-
+
 */
diff --git a/framework/docs/sample_pipeline_config_file.dox b/framework/docs/sample_pipeline_config_file.dox
index 2bcc9d4a4ac401bab1a3006e6d1dd0145aa7fd1b..b429becd653847a8de0058f545e5e95d117e51be 100755
--- a/framework/docs/sample_pipeline_config_file.dox
+++ b/framework/docs/sample_pipeline_config_file.dox
@@ -1,34 +1,34 @@
-/*! \page sample_pipeline_config_file_page Sample Pipeline Config File
-
-\code{.xml}
-
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Contains only the modules that ship with TSK -->
-<PIPELINE_CONFIG>
-    <PIPELINE type="FileAnalysis">
-      <MODULE order="1" type="plugin" location="tskHashCalcModule"/>
-<!--<MODULE order="2" type="plugin" location="tskHashLookupModule" arguments="TODO: See README for how to create NSRL index file"/>-->
-
-      <MODULE order="3" type="plugin" location="tskFileTypeSigModule"/>
-      <MODULE order="4" type="plugin" location="tskEntropyModule"/>
-      <MODULE order="5" type="plugin" location="tskZipExtractionModule"/>
-      <MODULE order="6" type="plugin" location="tskLibExifModule"/>
-    </PIPELINE>
-
-    <PIPELINE type="PostProcessing">
-      <!--This pipeline configuration assumes that the RegRipper executable is named rip.exe and is present in the program directory-->
-      <!--<MODULE order="1" type="plugin" location="tskRegRipperModule" arguments="-e #PROG_DIR#/RegRipper/rip.exe; -o #MODULE_OUT_DIR#/RegRipper/"/>-->
-
-      <MODULE order="2" type="plugin" location="tskInterestingFilesModule" arguments="#MODULE_CONFIG_DIR#/InterestingFilesModule/interesting_files.xml"/>
-
-      <MODULE order="3" type="plugin" location="tskSaveInterestingFilesModule"/>
-
-      <MODULE order="4" type="plugin" location="tskSummaryReportModule"/>
-
-    </PIPELINE>
-</PIPELINE_CONFIG>
-
-
-\endcode
-
-*/
+/*! \page sample_pipeline_config_file_page Sample Pipeline Config File
+
+\code{.xml}
+
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Contains only the modules that ship with TSK -->
+<PIPELINE_CONFIG>
+    <PIPELINE type="FileAnalysis">
+      <MODULE order="1" type="plugin" location="tskHashCalcModule"/>
+<!--<MODULE order="2" type="plugin" location="tskHashLookupModule" arguments="TODO: See README for how to create NSRL index file"/>-->
+
+      <MODULE order="3" type="plugin" location="tskFileTypeSigModule"/>
+      <MODULE order="4" type="plugin" location="tskEntropyModule"/>
+      <MODULE order="5" type="plugin" location="tskZipExtractionModule"/>
+      <MODULE order="6" type="plugin" location="tskLibExifModule"/>
+    </PIPELINE>
+
+    <PIPELINE type="PostProcessing">
+      <!--This pipeline configuration assumes that the RegRipper executable is named rip.exe and is present in the program directory-->
+      <!--<MODULE order="1" type="plugin" location="tskRegRipperModule" arguments="-e #PROG_DIR#/RegRipper/rip.exe; -o #MODULE_OUT_DIR#/RegRipper/"/>-->
+
+      <MODULE order="2" type="plugin" location="tskInterestingFilesModule" arguments="#MODULE_CONFIG_DIR#/InterestingFilesModule/interesting_files.xml"/>
+
+      <MODULE order="3" type="plugin" location="tskSaveInterestingFilesModule"/>
+
+      <MODULE order="4" type="plugin" location="tskSummaryReportModule"/>
+
+    </PIPELINE>
+</PIPELINE_CONFIG>
+
+
+\endcode
+
+*/
diff --git a/framework/msvcpp/Makefile b/framework/msvcpp/Makefile
index 9de593d39e4041b29ec2677bf375b4764a658848..372a2620b34b507df058b8e52888e20f2d746139 100755
--- a/framework/msvcpp/Makefile
+++ b/framework/msvcpp/Makefile
@@ -1,77 +1,77 @@
-BUILDLOG = BuildLog.txt
-RM	= rm -f
-MORE	= cat
-MSBUILD	= msbuild.exe
-
-TSK_SOLN = "$(TSK_HOME)\win32\tsk-win.sln"
-EWF_SOLN = "$(LIBEWF_HOME)\msvscpp\libewf.sln"
-FRMWK_SOLN = "$(TSK_HOME)\framework\msvcpp\framework\framework.sln"
-POCO_SOLN = "$(POCO_HOME)\Foundation\Foundation_vs100.sln"
-POCO_UTIL_SOLN = "$(POCO_HOME)\Util\Util_vs100.sln"
-POCO_XML_SOLN = "$(POCO_HOME)\XML\XML_vs100.sln"
-POCO_NET_SOLN = "$(POCO_HOME)\Net\Net_vs100.sln"
-POCO_ZIP_SOLN = "$(POCO_HOME)\Zip\Zip_vs100.sln"
-
-RELEASE_FLAGS = "/property:Configuration=Release"
-DEBUG_FLAGS = "/property:Configuration=Debug"
-POCO_RELEASE_FLAGS = "/property:Configuration=release_shared"
-POCO_DEBUG_FLAGS = "/property:Configuration=debug_shared"
-
-LOGFILE_FLAGS = "/fileloggerparameters:logfile=$(BUILDLOG);Append;Verbosity=detailed"
-
-all:	debug
-
-usage:
-    @echo Usage: nmake [poco ^| libewf ^| all_deps ^| debug ^| release ^| clean ^| spotless]
-    @echo "   poco: Builds debug and release versions of Poco libraries"
-    @echo "   libewf: Builds release version of libewf_dll and zlib"
-    @echo "   all_deps: Builds all dependencies (i.e. Poco, libewf and zlib)"
-    @echo "   release: Builds release versions of libtsk and libtskframework"
-    @echo "   debug: Builds debug versions of libtsk and libtskframework"
-    @echo "   clean: Cleans debug and release versions of libtsk and libtskframework"
-    @echo "   spotless: Cleans libtsk, libtskframework, libewf, zlib and Poco."
-
-poco:
-	$(MSBUILD)  $(POCO_SOLN) /target:Foundation $(POCO_DEBUG_FLAGS) $(LOGFILE_FLAGS)
-	$(MSBUILD)  $(POCO_XML_SOLN) /target:XML $(POCO_DEBUG_FLAGS) $(LOGFILE_FLAGS)
-	$(MSBUILD)  $(POCO_NET_SOLN) /target:Net $(POCO_DEBUG_FLAGS) $(LOGFILE_FLAGS)
-	$(MSBUILD)  $(POCO_ZIP_SOLN) /target:Zip $(POCO_DEBUG_FLAGS) $(LOGFILE_FLAGS)
-	$(MSBUILD)  $(POCO_UTIL_SOLN) /target:Util $(POCO_DEBUG_FLAGS) $(LOGFILE_FLAGS)
-	$(MSBUILD)  $(POCO_SOLN) /target:Foundation $(POCO_RELEASE_FLAGS) $(LOGFILE_FLAGS)
-	$(MSBUILD)  $(POCO_XML_SOLN) /target:XML $(POCO_RELEASE_FLAGS) $(LOGFILE_FLAGS)
-	$(MSBUILD)  $(POCO_NET_SOLN) /target:Net $(POCO_RELEASE_FLAGS) $(LOGFILE_FLAGS)
-	$(MSBUILD)  $(POCO_ZIP_SOLN) /target:Zip $(POCO_RELEASE_FLAGS) $(LOGFILE_FLAGS)
-	$(MSBUILD)  $(POCO_UTIL_SOLN) /target:Util $(POCO_RELEASE_FLAGS) $(LOGFILE_FLAGS)
-
-libewf:
-	$(MSBUILD)  $(EWF_SOLN) /target:libewf_dll $(RELEASE_FLAGS) $(LOGFILE_FLAGS)
-    
-all_deps: poco libewf
-
-release: all_deps
-	$(MSBUILD)  $(TSK_SOLN) /target:libtsk $(RELEASE_FLAGS) $(LOGFILE_FLAGS)
-	$(MSBUILD)  $(FRMWK_SOLN) $(RELEASE_FLAGS) $(LOGFILE_FLAGS)
-
-debug: all_deps
-	$(MSBUILD)  $(TSK_SOLN) /target:libtsk $(DEBUG_FLAGS) $(LOGFILE_FLAGS)
-	$(MSBUILD)  $(FRMWK_SOLN) $(DEBUG_FLAGS) $(LOGFILE_FLAGS)
-
-clean:
-    $(RM) $(BUILDLOG)
-	$(MSBUILD) $(TSK_SOLN) /target:Clean $(DEBUG_FLAGS)
-	$(MSBUILD) $(FRMWK_SOLN) /target:Clean $(DEBUG_FLAGS)
-	$(MSBUILD) $(TSK_SOLN) /target:Clean $(RELEASE_FLAGS)
-	$(MSBUILD) $(FRMWK_SOLN) /target:Clean $(RELEASE_FLAGS)
-
-spotless: clean
-	$(MSBUILD) $(EWF_SOLN) /target:Clean $(RELEASE_FLAGS)
-	$(MSBUILD) $(POCO_SOLN) /target:Clean $(POCO_DEBUG_FLAGS)
-	$(MSBUILD) $(POCO_XML_SOLN) /target:Clean $(POCO_DEBUG_FLAGS)
-	$(MSBUILD) $(POCO_NET_SOLN) /target:Clean $(POCO_DEBUG_FLAGS)
-	$(MSBUILD) $(POCO_ZIP_SOLN) /target:Clean $(POCO_DEBUG_FLAGS)
-	$(MSBUILD) $(POCO_UTIL_SOLN) /target:Clean $(POCO_DEBUG_FLAGS)
-	$(MSBUILD) $(POCO_SOLN) /target:Clean $(POCO_RELEASE_FLAGS)
-	$(MSBUILD) $(POCO_XML_SOLN) /target:Clean $(POCO_RELEASE_FLAGS)
-	$(MSBUILD) $(POCO_NET_SOLN) /target:Clean $(POCO_RELEASE_FLAGS)
-	$(MSBUILD) $(POCO_ZIP_SOLN) /target:Clean $(POCO_RELEASE_FLAGS)
-	$(MSBUILD) $(POCO_UTIL_SOLN) /target:Clean $(POCO_RELEASE_FLAGS)
+BUILDLOG = BuildLog.txt
+RM	= rm -f
+MORE	= cat
+MSBUILD	= msbuild.exe
+
+TSK_SOLN = "$(TSK_HOME)\win32\tsk-win.sln"
+EWF_SOLN = "$(LIBEWF_HOME)\msvscpp\libewf.sln"
+FRMWK_SOLN = "$(TSK_HOME)\framework\msvcpp\framework\framework.sln"
+POCO_SOLN = "$(POCO_HOME)\Foundation\Foundation_vs100.sln"
+POCO_UTIL_SOLN = "$(POCO_HOME)\Util\Util_vs100.sln"
+POCO_XML_SOLN = "$(POCO_HOME)\XML\XML_vs100.sln"
+POCO_NET_SOLN = "$(POCO_HOME)\Net\Net_vs100.sln"
+POCO_ZIP_SOLN = "$(POCO_HOME)\Zip\Zip_vs100.sln"
+
+RELEASE_FLAGS = "/property:Configuration=Release"
+DEBUG_FLAGS = "/property:Configuration=Debug"
+POCO_RELEASE_FLAGS = "/property:Configuration=release_shared"
+POCO_DEBUG_FLAGS = "/property:Configuration=debug_shared"
+
+LOGFILE_FLAGS = "/fileloggerparameters:logfile=$(BUILDLOG);Append;Verbosity=detailed"
+
+all:	debug
+
+usage:
+    @echo Usage: nmake [poco ^| libewf ^| all_deps ^| debug ^| release ^| clean ^| spotless]
+    @echo "   poco: Builds debug and release versions of Poco libraries"
+    @echo "   libewf: Builds release version of libewf_dll and zlib"
+    @echo "   all_deps: Builds all dependencies (i.e. Poco, libewf and zlib)"
+    @echo "   release: Builds release versions of libtsk and libtskframework"
+    @echo "   debug: Builds debug versions of libtsk and libtskframework"
+    @echo "   clean: Cleans debug and release versions of libtsk and libtskframework"
+    @echo "   spotless: Cleans libtsk, libtskframework, libewf, zlib and Poco."
+
+poco:
+	$(MSBUILD)  $(POCO_SOLN) /target:Foundation $(POCO_DEBUG_FLAGS) $(LOGFILE_FLAGS)
+	$(MSBUILD)  $(POCO_XML_SOLN) /target:XML $(POCO_DEBUG_FLAGS) $(LOGFILE_FLAGS)
+	$(MSBUILD)  $(POCO_NET_SOLN) /target:Net $(POCO_DEBUG_FLAGS) $(LOGFILE_FLAGS)
+	$(MSBUILD)  $(POCO_ZIP_SOLN) /target:Zip $(POCO_DEBUG_FLAGS) $(LOGFILE_FLAGS)
+	$(MSBUILD)  $(POCO_UTIL_SOLN) /target:Util $(POCO_DEBUG_FLAGS) $(LOGFILE_FLAGS)
+	$(MSBUILD)  $(POCO_SOLN) /target:Foundation $(POCO_RELEASE_FLAGS) $(LOGFILE_FLAGS)
+	$(MSBUILD)  $(POCO_XML_SOLN) /target:XML $(POCO_RELEASE_FLAGS) $(LOGFILE_FLAGS)
+	$(MSBUILD)  $(POCO_NET_SOLN) /target:Net $(POCO_RELEASE_FLAGS) $(LOGFILE_FLAGS)
+	$(MSBUILD)  $(POCO_ZIP_SOLN) /target:Zip $(POCO_RELEASE_FLAGS) $(LOGFILE_FLAGS)
+	$(MSBUILD)  $(POCO_UTIL_SOLN) /target:Util $(POCO_RELEASE_FLAGS) $(LOGFILE_FLAGS)
+
+libewf:
+	$(MSBUILD)  $(EWF_SOLN) /target:libewf_dll $(RELEASE_FLAGS) $(LOGFILE_FLAGS)
+    
+all_deps: poco libewf
+
+release: all_deps
+	$(MSBUILD)  $(TSK_SOLN) /target:libtsk $(RELEASE_FLAGS) $(LOGFILE_FLAGS)
+	$(MSBUILD)  $(FRMWK_SOLN) $(RELEASE_FLAGS) $(LOGFILE_FLAGS)
+
+debug: all_deps
+	$(MSBUILD)  $(TSK_SOLN) /target:libtsk $(DEBUG_FLAGS) $(LOGFILE_FLAGS)
+	$(MSBUILD)  $(FRMWK_SOLN) $(DEBUG_FLAGS) $(LOGFILE_FLAGS)
+
+clean:
+    $(RM) $(BUILDLOG)
+	$(MSBUILD) $(TSK_SOLN) /target:Clean $(DEBUG_FLAGS)
+	$(MSBUILD) $(FRMWK_SOLN) /target:Clean $(DEBUG_FLAGS)
+	$(MSBUILD) $(TSK_SOLN) /target:Clean $(RELEASE_FLAGS)
+	$(MSBUILD) $(FRMWK_SOLN) /target:Clean $(RELEASE_FLAGS)
+
+spotless: clean
+	$(MSBUILD) $(EWF_SOLN) /target:Clean $(RELEASE_FLAGS)
+	$(MSBUILD) $(POCO_SOLN) /target:Clean $(POCO_DEBUG_FLAGS)
+	$(MSBUILD) $(POCO_XML_SOLN) /target:Clean $(POCO_DEBUG_FLAGS)
+	$(MSBUILD) $(POCO_NET_SOLN) /target:Clean $(POCO_DEBUG_FLAGS)
+	$(MSBUILD) $(POCO_ZIP_SOLN) /target:Clean $(POCO_DEBUG_FLAGS)
+	$(MSBUILD) $(POCO_UTIL_SOLN) /target:Clean $(POCO_DEBUG_FLAGS)
+	$(MSBUILD) $(POCO_SOLN) /target:Clean $(POCO_RELEASE_FLAGS)
+	$(MSBUILD) $(POCO_XML_SOLN) /target:Clean $(POCO_RELEASE_FLAGS)
+	$(MSBUILD) $(POCO_NET_SOLN) /target:Clean $(POCO_RELEASE_FLAGS)
+	$(MSBUILD) $(POCO_ZIP_SOLN) /target:Clean $(POCO_RELEASE_FLAGS)
+	$(MSBUILD) $(POCO_UTIL_SOLN) /target:Clean $(POCO_RELEASE_FLAGS)
diff --git a/framework/msvcpp/framework/framework.sln b/framework/msvcpp/framework/framework.sln
index 3ba0bf016754f7e4155da48d9dbf3f9836df8ba0..a7c32c0ecb0311c6e20bfdf88ad87f9bf7e7d798 100755
--- a/framework/msvcpp/framework/framework.sln
+++ b/framework/msvcpp/framework/framework.sln
@@ -1,119 +1,119 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual C++ Express 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtskframework", "framework.vcxproj", "{F791B16A-1489-4526-9FFF-CB481CEC5414}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EntropyModule", "..\..\modules\c_EntropyModule\win32\EntropyModule.vcxproj", "{00E3B0EE-B612-433A-A43E-1CE0B3DE1015}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HashCalcModule", "..\..\modules\c_HashCalcModule\win32\HashCalcModule.vcxproj", "{46CD18AC-3A1C-405D-B39F-F86BA0FD1820}"
-	ProjectSection(ProjectDependencies) = postProject
-		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InterestingFilesModule", "..\..\modules\c_InterestingFilesModule\win32\InterestingFilesModule.vcxproj", "{8F956113-11D2-4288-985D-53CBF84648E0}"
-	ProjectSection(ProjectDependencies) = postProject
-		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RegRipperModule", "..\..\modules\c_RegRipperModule\win32\RegRipperModule.vcxproj", "{4DD49717-8C15-4E07-8C18-D47A093184AA}"
-	ProjectSection(ProjectDependencies) = postProject
-		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SaveInterestingFilesModule", "..\..\modules\c_SaveInterestingFilesModule\win32\SaveInterestingFilesModule.vcxproj", "{39CDF492-FCD0-42E8-B2E2-42D2E0F6D2CC}"
-	ProjectSection(ProjectDependencies) = postProject
-		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TskHashLookupModule", "..\..\modules\c_TskHashLookupModule\win32\TskHashLookupModule.vcxproj", "{430B8E55-C5F4-4936-A0C7-DABD8B34788A}"
-	ProjectSection(ProjectDependencies) = postProject
-		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZipExtractionModule", "..\..\modules\c_ZIPExtractionModule\win32\ZipExtractionModule.vcxproj", "{506823BC-AE48-4827-B72A-BA4C9E1E4670}"
-	ProjectSection(ProjectDependencies) = postProject
-		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tsk_analyzeimg", "..\tsk_analyzeimg\tsk_analyzeimg.vcxproj", "{13BD0806-028E-42F1-A91D-5128565A9717}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SummaryReportModule", "..\..\modules\c_SummaryReportModule\win32\SummaryReportModule.vcxproj", "{1CA42FA6-A110-4BB1-B7D6-C0AB6C4FA1AD}"
-	ProjectSection(ProjectDependencies) = postProject
-		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tsk_validatepipeline", "..\tsk_validatepipeline\tsk_validatepipeline.vcxproj", "{352C3C04-1F31-4138-97A6-1DC6EC5FD379}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FileTypeSigModule", "..\..\modules\c_FileTypeSigModule\win32\FileTypeSigModule.vcxproj", "{18EC105E-A0F9-43D2-B66E-287828E61E7D}"
-	ProjectSection(ProjectDependencies) = postProject
-		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LibExifModule", "..\..\modules\c_LibExifModule\win32\LibExifModule.vcxproj", "{A4B7B046-EA19-4179-9712-8A7B085443D8}"
-	ProjectSection(ProjectDependencies) = postProject
-		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Release|Win32 = Release|Win32
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{F791B16A-1489-4526-9FFF-CB481CEC5414}.Debug|Win32.ActiveCfg = Debug|Win32
-		{F791B16A-1489-4526-9FFF-CB481CEC5414}.Debug|Win32.Build.0 = Debug|Win32
-		{F791B16A-1489-4526-9FFF-CB481CEC5414}.Release|Win32.ActiveCfg = Release|Win32
-		{F791B16A-1489-4526-9FFF-CB481CEC5414}.Release|Win32.Build.0 = Release|Win32
-		{00E3B0EE-B612-433A-A43E-1CE0B3DE1015}.Debug|Win32.ActiveCfg = Debug|Win32
-		{00E3B0EE-B612-433A-A43E-1CE0B3DE1015}.Debug|Win32.Build.0 = Debug|Win32
-		{00E3B0EE-B612-433A-A43E-1CE0B3DE1015}.Release|Win32.ActiveCfg = Release|Win32
-		{00E3B0EE-B612-433A-A43E-1CE0B3DE1015}.Release|Win32.Build.0 = Release|Win32
-		{46CD18AC-3A1C-405D-B39F-F86BA0FD1820}.Debug|Win32.ActiveCfg = Debug|Win32
-		{46CD18AC-3A1C-405D-B39F-F86BA0FD1820}.Debug|Win32.Build.0 = Debug|Win32
-		{46CD18AC-3A1C-405D-B39F-F86BA0FD1820}.Release|Win32.ActiveCfg = Release|Win32
-		{46CD18AC-3A1C-405D-B39F-F86BA0FD1820}.Release|Win32.Build.0 = Release|Win32
-		{8F956113-11D2-4288-985D-53CBF84648E0}.Debug|Win32.ActiveCfg = Debug|Win32
-		{8F956113-11D2-4288-985D-53CBF84648E0}.Debug|Win32.Build.0 = Debug|Win32
-		{8F956113-11D2-4288-985D-53CBF84648E0}.Release|Win32.ActiveCfg = Release|Win32
-		{8F956113-11D2-4288-985D-53CBF84648E0}.Release|Win32.Build.0 = Release|Win32
-		{4DD49717-8C15-4E07-8C18-D47A093184AA}.Debug|Win32.ActiveCfg = Debug|Win32
-		{4DD49717-8C15-4E07-8C18-D47A093184AA}.Debug|Win32.Build.0 = Debug|Win32
-		{4DD49717-8C15-4E07-8C18-D47A093184AA}.Release|Win32.ActiveCfg = Release|Win32
-		{4DD49717-8C15-4E07-8C18-D47A093184AA}.Release|Win32.Build.0 = Release|Win32
-		{39CDF492-FCD0-42E8-B2E2-42D2E0F6D2CC}.Debug|Win32.ActiveCfg = Debug|Win32
-		{39CDF492-FCD0-42E8-B2E2-42D2E0F6D2CC}.Debug|Win32.Build.0 = Debug|Win32
-		{39CDF492-FCD0-42E8-B2E2-42D2E0F6D2CC}.Release|Win32.ActiveCfg = Release|Win32
-		{39CDF492-FCD0-42E8-B2E2-42D2E0F6D2CC}.Release|Win32.Build.0 = Release|Win32
-		{430B8E55-C5F4-4936-A0C7-DABD8B34788A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{430B8E55-C5F4-4936-A0C7-DABD8B34788A}.Debug|Win32.Build.0 = Debug|Win32
-		{430B8E55-C5F4-4936-A0C7-DABD8B34788A}.Release|Win32.ActiveCfg = Release|Win32
-		{430B8E55-C5F4-4936-A0C7-DABD8B34788A}.Release|Win32.Build.0 = Release|Win32
-		{506823BC-AE48-4827-B72A-BA4C9E1E4670}.Debug|Win32.ActiveCfg = Debug|Win32
-		{506823BC-AE48-4827-B72A-BA4C9E1E4670}.Debug|Win32.Build.0 = Debug|Win32
-		{506823BC-AE48-4827-B72A-BA4C9E1E4670}.Release|Win32.ActiveCfg = Release|Win32
-		{506823BC-AE48-4827-B72A-BA4C9E1E4670}.Release|Win32.Build.0 = Release|Win32
-		{13BD0806-028E-42F1-A91D-5128565A9717}.Debug|Win32.ActiveCfg = Debug|Win32
-		{13BD0806-028E-42F1-A91D-5128565A9717}.Debug|Win32.Build.0 = Debug|Win32
-		{13BD0806-028E-42F1-A91D-5128565A9717}.Release|Win32.ActiveCfg = Release|Win32
-		{13BD0806-028E-42F1-A91D-5128565A9717}.Release|Win32.Build.0 = Release|Win32
-		{1CA42FA6-A110-4BB1-B7D6-C0AB6C4FA1AD}.Debug|Win32.ActiveCfg = Debug|Win32
-		{1CA42FA6-A110-4BB1-B7D6-C0AB6C4FA1AD}.Debug|Win32.Build.0 = Debug|Win32
-		{1CA42FA6-A110-4BB1-B7D6-C0AB6C4FA1AD}.Release|Win32.ActiveCfg = Release|Win32
-		{1CA42FA6-A110-4BB1-B7D6-C0AB6C4FA1AD}.Release|Win32.Build.0 = Release|Win32
-		{352C3C04-1F31-4138-97A6-1DC6EC5FD379}.Debug|Win32.ActiveCfg = Debug|Win32
-		{352C3C04-1F31-4138-97A6-1DC6EC5FD379}.Debug|Win32.Build.0 = Debug|Win32
-		{352C3C04-1F31-4138-97A6-1DC6EC5FD379}.Release|Win32.ActiveCfg = Release|Win32
-		{352C3C04-1F31-4138-97A6-1DC6EC5FD379}.Release|Win32.Build.0 = Release|Win32
-		{18EC105E-A0F9-43D2-B66E-287828E61E7D}.Debug|Win32.ActiveCfg = Debug|Win32
-		{18EC105E-A0F9-43D2-B66E-287828E61E7D}.Debug|Win32.Build.0 = Debug|Win32
-		{18EC105E-A0F9-43D2-B66E-287828E61E7D}.Release|Win32.ActiveCfg = Release|Win32
-		{18EC105E-A0F9-43D2-B66E-287828E61E7D}.Release|Win32.Build.0 = Release|Win32
-		{A4B7B046-EA19-4179-9712-8A7B085443D8}.Debug|Win32.ActiveCfg = Debug|Win32
-		{A4B7B046-EA19-4179-9712-8A7B085443D8}.Debug|Win32.Build.0 = Debug|Win32
-		{A4B7B046-EA19-4179-9712-8A7B085443D8}.Release|Win32.ActiveCfg = Release|Win32
-		{A4B7B046-EA19-4179-9712-8A7B085443D8}.Release|Win32.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual C++ Express 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtskframework", "framework.vcxproj", "{F791B16A-1489-4526-9FFF-CB481CEC5414}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EntropyModule", "..\..\modules\c_EntropyModule\win32\EntropyModule.vcxproj", "{00E3B0EE-B612-433A-A43E-1CE0B3DE1015}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HashCalcModule", "..\..\modules\c_HashCalcModule\win32\HashCalcModule.vcxproj", "{46CD18AC-3A1C-405D-B39F-F86BA0FD1820}"
+	ProjectSection(ProjectDependencies) = postProject
+		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InterestingFilesModule", "..\..\modules\c_InterestingFilesModule\win32\InterestingFilesModule.vcxproj", "{8F956113-11D2-4288-985D-53CBF84648E0}"
+	ProjectSection(ProjectDependencies) = postProject
+		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RegRipperModule", "..\..\modules\c_RegRipperModule\win32\RegRipperModule.vcxproj", "{4DD49717-8C15-4E07-8C18-D47A093184AA}"
+	ProjectSection(ProjectDependencies) = postProject
+		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SaveInterestingFilesModule", "..\..\modules\c_SaveInterestingFilesModule\win32\SaveInterestingFilesModule.vcxproj", "{39CDF492-FCD0-42E8-B2E2-42D2E0F6D2CC}"
+	ProjectSection(ProjectDependencies) = postProject
+		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TskHashLookupModule", "..\..\modules\c_TskHashLookupModule\win32\TskHashLookupModule.vcxproj", "{430B8E55-C5F4-4936-A0C7-DABD8B34788A}"
+	ProjectSection(ProjectDependencies) = postProject
+		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZipExtractionModule", "..\..\modules\c_ZIPExtractionModule\win32\ZipExtractionModule.vcxproj", "{506823BC-AE48-4827-B72A-BA4C9E1E4670}"
+	ProjectSection(ProjectDependencies) = postProject
+		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tsk_analyzeimg", "..\tsk_analyzeimg\tsk_analyzeimg.vcxproj", "{13BD0806-028E-42F1-A91D-5128565A9717}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SummaryReportModule", "..\..\modules\c_SummaryReportModule\win32\SummaryReportModule.vcxproj", "{1CA42FA6-A110-4BB1-B7D6-C0AB6C4FA1AD}"
+	ProjectSection(ProjectDependencies) = postProject
+		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tsk_validatepipeline", "..\tsk_validatepipeline\tsk_validatepipeline.vcxproj", "{352C3C04-1F31-4138-97A6-1DC6EC5FD379}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FileTypeSigModule", "..\..\modules\c_FileTypeSigModule\win32\FileTypeSigModule.vcxproj", "{18EC105E-A0F9-43D2-B66E-287828E61E7D}"
+	ProjectSection(ProjectDependencies) = postProject
+		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LibExifModule", "..\..\modules\c_LibExifModule\win32\LibExifModule.vcxproj", "{A4B7B046-EA19-4179-9712-8A7B085443D8}"
+	ProjectSection(ProjectDependencies) = postProject
+		{F791B16A-1489-4526-9FFF-CB481CEC5414} = {F791B16A-1489-4526-9FFF-CB481CEC5414}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{F791B16A-1489-4526-9FFF-CB481CEC5414}.Debug|Win32.ActiveCfg = Debug|Win32
+		{F791B16A-1489-4526-9FFF-CB481CEC5414}.Debug|Win32.Build.0 = Debug|Win32
+		{F791B16A-1489-4526-9FFF-CB481CEC5414}.Release|Win32.ActiveCfg = Release|Win32
+		{F791B16A-1489-4526-9FFF-CB481CEC5414}.Release|Win32.Build.0 = Release|Win32
+		{00E3B0EE-B612-433A-A43E-1CE0B3DE1015}.Debug|Win32.ActiveCfg = Debug|Win32
+		{00E3B0EE-B612-433A-A43E-1CE0B3DE1015}.Debug|Win32.Build.0 = Debug|Win32
+		{00E3B0EE-B612-433A-A43E-1CE0B3DE1015}.Release|Win32.ActiveCfg = Release|Win32
+		{00E3B0EE-B612-433A-A43E-1CE0B3DE1015}.Release|Win32.Build.0 = Release|Win32
+		{46CD18AC-3A1C-405D-B39F-F86BA0FD1820}.Debug|Win32.ActiveCfg = Debug|Win32
+		{46CD18AC-3A1C-405D-B39F-F86BA0FD1820}.Debug|Win32.Build.0 = Debug|Win32
+		{46CD18AC-3A1C-405D-B39F-F86BA0FD1820}.Release|Win32.ActiveCfg = Release|Win32
+		{46CD18AC-3A1C-405D-B39F-F86BA0FD1820}.Release|Win32.Build.0 = Release|Win32
+		{8F956113-11D2-4288-985D-53CBF84648E0}.Debug|Win32.ActiveCfg = Debug|Win32
+		{8F956113-11D2-4288-985D-53CBF84648E0}.Debug|Win32.Build.0 = Debug|Win32
+		{8F956113-11D2-4288-985D-53CBF84648E0}.Release|Win32.ActiveCfg = Release|Win32
+		{8F956113-11D2-4288-985D-53CBF84648E0}.Release|Win32.Build.0 = Release|Win32
+		{4DD49717-8C15-4E07-8C18-D47A093184AA}.Debug|Win32.ActiveCfg = Debug|Win32
+		{4DD49717-8C15-4E07-8C18-D47A093184AA}.Debug|Win32.Build.0 = Debug|Win32
+		{4DD49717-8C15-4E07-8C18-D47A093184AA}.Release|Win32.ActiveCfg = Release|Win32
+		{4DD49717-8C15-4E07-8C18-D47A093184AA}.Release|Win32.Build.0 = Release|Win32
+		{39CDF492-FCD0-42E8-B2E2-42D2E0F6D2CC}.Debug|Win32.ActiveCfg = Debug|Win32
+		{39CDF492-FCD0-42E8-B2E2-42D2E0F6D2CC}.Debug|Win32.Build.0 = Debug|Win32
+		{39CDF492-FCD0-42E8-B2E2-42D2E0F6D2CC}.Release|Win32.ActiveCfg = Release|Win32
+		{39CDF492-FCD0-42E8-B2E2-42D2E0F6D2CC}.Release|Win32.Build.0 = Release|Win32
+		{430B8E55-C5F4-4936-A0C7-DABD8B34788A}.Debug|Win32.ActiveCfg = Debug|Win32
+		{430B8E55-C5F4-4936-A0C7-DABD8B34788A}.Debug|Win32.Build.0 = Debug|Win32
+		{430B8E55-C5F4-4936-A0C7-DABD8B34788A}.Release|Win32.ActiveCfg = Release|Win32
+		{430B8E55-C5F4-4936-A0C7-DABD8B34788A}.Release|Win32.Build.0 = Release|Win32
+		{506823BC-AE48-4827-B72A-BA4C9E1E4670}.Debug|Win32.ActiveCfg = Debug|Win32
+		{506823BC-AE48-4827-B72A-BA4C9E1E4670}.Debug|Win32.Build.0 = Debug|Win32
+		{506823BC-AE48-4827-B72A-BA4C9E1E4670}.Release|Win32.ActiveCfg = Release|Win32
+		{506823BC-AE48-4827-B72A-BA4C9E1E4670}.Release|Win32.Build.0 = Release|Win32
+		{13BD0806-028E-42F1-A91D-5128565A9717}.Debug|Win32.ActiveCfg = Debug|Win32
+		{13BD0806-028E-42F1-A91D-5128565A9717}.Debug|Win32.Build.0 = Debug|Win32
+		{13BD0806-028E-42F1-A91D-5128565A9717}.Release|Win32.ActiveCfg = Release|Win32
+		{13BD0806-028E-42F1-A91D-5128565A9717}.Release|Win32.Build.0 = Release|Win32
+		{1CA42FA6-A110-4BB1-B7D6-C0AB6C4FA1AD}.Debug|Win32.ActiveCfg = Debug|Win32
+		{1CA42FA6-A110-4BB1-B7D6-C0AB6C4FA1AD}.Debug|Win32.Build.0 = Debug|Win32
+		{1CA42FA6-A110-4BB1-B7D6-C0AB6C4FA1AD}.Release|Win32.ActiveCfg = Release|Win32
+		{1CA42FA6-A110-4BB1-B7D6-C0AB6C4FA1AD}.Release|Win32.Build.0 = Release|Win32
+		{352C3C04-1F31-4138-97A6-1DC6EC5FD379}.Debug|Win32.ActiveCfg = Debug|Win32
+		{352C3C04-1F31-4138-97A6-1DC6EC5FD379}.Debug|Win32.Build.0 = Debug|Win32
+		{352C3C04-1F31-4138-97A6-1DC6EC5FD379}.Release|Win32.ActiveCfg = Release|Win32
+		{352C3C04-1F31-4138-97A6-1DC6EC5FD379}.Release|Win32.Build.0 = Release|Win32
+		{18EC105E-A0F9-43D2-B66E-287828E61E7D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{18EC105E-A0F9-43D2-B66E-287828E61E7D}.Debug|Win32.Build.0 = Debug|Win32
+		{18EC105E-A0F9-43D2-B66E-287828E61E7D}.Release|Win32.ActiveCfg = Release|Win32
+		{18EC105E-A0F9-43D2-B66E-287828E61E7D}.Release|Win32.Build.0 = Release|Win32
+		{A4B7B046-EA19-4179-9712-8A7B085443D8}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A4B7B046-EA19-4179-9712-8A7B085443D8}.Debug|Win32.Build.0 = Debug|Win32
+		{A4B7B046-EA19-4179-9712-8A7B085443D8}.Release|Win32.ActiveCfg = Release|Win32
+		{A4B7B046-EA19-4179-9712-8A7B085443D8}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/framework/msvcpp/framework/framework.vcproj b/framework/msvcpp/framework/framework.vcproj
index 173a3b1f414560644c6a9aac347c33235cb05c2e..19df17688d838e439b3ff4d94817ce3af4311b07 100755
--- a/framework/msvcpp/framework/framework.vcproj
+++ b/framework/msvcpp/framework/framework.vcproj
@@ -1,468 +1,468 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="libtskframework"
-	ProjectGUID="{F791B16A-1489-4526-9FFF-CB481CEC5414}"
-	RootNamespace="framework"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="196613"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..&quot;;&quot;$(ProjectDir)\..\..\..&quot;;&quot;$(POCO_HOME)\Foundation\include&quot;;&quot;$(POCO_HOME)\Util\include&quot;;&quot;$(POCO_HOME)\XML\include&quot;;&quot;$(POCO_HOME)\Net\include&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;TSK_EXPORTS"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib libtsk.lib ws2_32.lib zlib.lib"
-				AdditionalLibraryDirectories="&quot;$(POCO_HOME)\lib&quot;;&quot;$(ProjectDir)\..\..\..\win32\Debug&quot;;&quot;$(LIBEWF_HOME)\msvscpp\Release&quot;"
-				GenerateDebugInformation="true"
-				ImportLibrary="$(OutDir)\$(ProjectName).lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine="xcopy &quot;$(POCO_HOME)\bin\PocoFoundationd.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(POCO_HOME)\bin\PocoNetd.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(POCO_HOME)\bin\PocoUtild.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(POCO_HOME)\bin\PocoXMLd.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(LIBEWF_HOME)\msvscpp\Release\libewf.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(LIBEWF_HOME)\msvscpp\Release\zlib.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;del &quot;$(OutDir)\framework_config.xml&quot;&#x0D;&#x0A;xcopy &quot;$(ProjectDir)..\..\SampleConfig\framework_config_win32dev.xml&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;ren &quot;$(OutDir)\framework_config_win32dev.xml&quot; framework_config.xml&#x0D;&#x0A;"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..&quot;;&quot;$(ProjectDir)\..\..\..&quot;;&quot;$(POCO_HOME)\Foundation\include&quot;;&quot;$(POCO_HOME)\Util\include&quot;;&quot;$(POCO_HOME)\XML\include&quot;;&quot;$(POCO_HOME)\Net\include&quot;"
-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;TSK_EXPORTS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib libtsk.lib ws2_32.lib zlib.lib"
-				AdditionalLibraryDirectories="&quot;$(POCO_HOME)\lib&quot;;&quot;$(ProjectDir)\..\..\..\win32\Release&quot;;&quot;$(LIBEWF_HOME)\msvscpp\Release&quot;"
-				ImportLibrary="$(OutDir)\$(ProjectName).lib"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine="xcopy &quot;$(POCO_HOME)\bin\PocoFoundation.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(POCO_HOME)\bin\PocoNet.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(POCO_HOME)\bin\PocoUtil.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(POCO_HOME)\bin\PocoXML.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(LIBEWF_HOME)\msvscpp\Release\libewf.dll&quot; &quot;$(outDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(LIBEWF_HOME)\msvscpp\Release\zlib.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;del &quot;$(OutDir)\framework_config.xml&quot;&#x0D;&#x0A;xcopy &quot;$(ProjectDir)..\..\SampleConfig\framework_config_win32dev.xml&quot; &quot;$(outDir)&quot; /R /Y&#x0D;&#x0A;ren &quot;$(OutDir)\framework_config_win32dev.xml&quot; framework_config.xml&#x0D;&#x0A;"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tsk\framework\services\Log.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\Scheduler.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\utilities\SectorRuns.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\extraction\TskAutoImpl.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskBlackboard.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskBlackboardArtifact.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskBlackboardAttribute.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\extraction\TskCarveExtractScalpel.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\extraction\TskCarvePrepSectorConcat.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskDBBlackboard.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\utilities\TskException.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskExecutableModule.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\file\TskFile.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskFileAnalysisPipeline.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskFileAnalysisPluginModule.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\file\TskFileManagerImpl.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\file\TskFileTsk.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\extraction\TskImageFile.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\extraction\TskImageFileTsk.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskImgDB.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskImgDBSqlite.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskModule.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskPipeline.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskPipelineManager.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskPluginModule.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskReportPipeline.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskReportPluginModule.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskSchedulerQueue.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskServices.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskSystemProperties.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskSystemPropertiesImpl.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\utilities\TskUtilities.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\utilities\UnallocRun.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\..\tsk\framework\extraction\CarveExtract.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\extraction\CarvePrep.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\framework.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\framework_i.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\Log.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\Scheduler.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\utilities\SectorRuns.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\extraction\TskAutoImpl.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskBlackboard.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskBlackboardArtifact.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskBlackBoardAttribute.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\extraction\TskCarveExtractScalpel.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\extraction\TskCarvePrepSectorConcat.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskDBBlackboard.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\utilities\TskException.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskExecutableModule.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\file\TskFile.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskFileAnalysisPipeline.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskFileAnalysisPluginModule.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\file\TskFileManager.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\file\TskFileManagerImpl.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\file\TskFileTsk.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\extraction\TskImageFile.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\extraction\TskImageFileTsk.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskImgDB.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskImgDBSqlite.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskModule.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskPipeline.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskPipelineManager.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskPluginModule.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskReportPipeline.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\pipeline\TskReportPluginModule.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskSchedulerQueue.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskServices.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskSystemProperties.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\services\TskSystemPropertiesImpl.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\utilities\TskUtilities.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\framework\utilities\UnallocRun.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="libtskframework"
+	ProjectGUID="{F791B16A-1489-4526-9FFF-CB481CEC5414}"
+	RootNamespace="framework"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="196613"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..&quot;;&quot;$(ProjectDir)\..\..\..&quot;;&quot;$(POCO_HOME)\Foundation\include&quot;;&quot;$(POCO_HOME)\Util\include&quot;;&quot;$(POCO_HOME)\XML\include&quot;;&quot;$(POCO_HOME)\Net\include&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;TSK_EXPORTS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib libtsk.lib ws2_32.lib zlib.lib"
+				AdditionalLibraryDirectories="&quot;$(POCO_HOME)\lib&quot;;&quot;$(ProjectDir)\..\..\..\win32\Debug&quot;;&quot;$(LIBEWF_HOME)\msvscpp\Release&quot;"
+				GenerateDebugInformation="true"
+				ImportLibrary="$(OutDir)\$(ProjectName).lib"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="xcopy &quot;$(POCO_HOME)\bin\PocoFoundationd.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(POCO_HOME)\bin\PocoNetd.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(POCO_HOME)\bin\PocoUtild.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(POCO_HOME)\bin\PocoXMLd.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(LIBEWF_HOME)\msvscpp\Release\libewf.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(LIBEWF_HOME)\msvscpp\Release\zlib.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;del &quot;$(OutDir)\framework_config.xml&quot;&#x0D;&#x0A;xcopy &quot;$(ProjectDir)..\..\SampleConfig\framework_config_win32dev.xml&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;ren &quot;$(OutDir)\framework_config_win32dev.xml&quot; framework_config.xml&#x0D;&#x0A;"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..&quot;;&quot;$(ProjectDir)\..\..\..&quot;;&quot;$(POCO_HOME)\Foundation\include&quot;;&quot;$(POCO_HOME)\Util\include&quot;;&quot;$(POCO_HOME)\XML\include&quot;;&quot;$(POCO_HOME)\Net\include&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;TSK_EXPORTS"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib libtsk.lib ws2_32.lib zlib.lib"
+				AdditionalLibraryDirectories="&quot;$(POCO_HOME)\lib&quot;;&quot;$(ProjectDir)\..\..\..\win32\Release&quot;;&quot;$(LIBEWF_HOME)\msvscpp\Release&quot;"
+				ImportLibrary="$(OutDir)\$(ProjectName).lib"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="xcopy &quot;$(POCO_HOME)\bin\PocoFoundation.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(POCO_HOME)\bin\PocoNet.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(POCO_HOME)\bin\PocoUtil.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(POCO_HOME)\bin\PocoXML.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(LIBEWF_HOME)\msvscpp\Release\libewf.dll&quot; &quot;$(outDir)&quot; /R /Y&#x0D;&#x0A;xcopy &quot;$(LIBEWF_HOME)\msvscpp\Release\zlib.dll&quot; &quot;$(OutDir)&quot; /R /Y&#x0D;&#x0A;del &quot;$(OutDir)\framework_config.xml&quot;&#x0D;&#x0A;xcopy &quot;$(ProjectDir)..\..\SampleConfig\framework_config_win32dev.xml&quot; &quot;$(outDir)&quot; /R /Y&#x0D;&#x0A;ren &quot;$(OutDir)\framework_config_win32dev.xml&quot; framework_config.xml&#x0D;&#x0A;"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tsk\framework\services\Log.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\Scheduler.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\utilities\SectorRuns.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\extraction\TskAutoImpl.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskBlackboard.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskBlackboardArtifact.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskBlackboardAttribute.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\extraction\TskCarveExtractScalpel.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\extraction\TskCarvePrepSectorConcat.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskDBBlackboard.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\utilities\TskException.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskExecutableModule.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\file\TskFile.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskFileAnalysisPipeline.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskFileAnalysisPluginModule.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\file\TskFileManagerImpl.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\file\TskFileTsk.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\extraction\TskImageFile.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\extraction\TskImageFileTsk.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskImgDB.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskImgDBSqlite.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskModule.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskPipeline.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskPipelineManager.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskPluginModule.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskReportPipeline.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskReportPluginModule.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskSchedulerQueue.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskServices.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskSystemProperties.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskSystemPropertiesImpl.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\utilities\TskUtilities.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\utilities\UnallocRun.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\tsk\framework\extraction\CarveExtract.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\extraction\CarvePrep.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\framework.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\framework_i.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\Log.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\Scheduler.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\utilities\SectorRuns.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\extraction\TskAutoImpl.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskBlackboard.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskBlackboardArtifact.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskBlackBoardAttribute.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\extraction\TskCarveExtractScalpel.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\extraction\TskCarvePrepSectorConcat.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskDBBlackboard.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\utilities\TskException.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskExecutableModule.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\file\TskFile.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskFileAnalysisPipeline.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskFileAnalysisPluginModule.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\file\TskFileManager.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\file\TskFileManagerImpl.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\file\TskFileTsk.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\extraction\TskImageFile.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\extraction\TskImageFileTsk.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskImgDB.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskImgDBSqlite.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskModule.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskPipeline.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskPipelineManager.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskPluginModule.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskReportPipeline.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\pipeline\TskReportPluginModule.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskSchedulerQueue.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskServices.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskSystemProperties.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\services\TskSystemPropertiesImpl.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\utilities\TskUtilities.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\framework\utilities\UnallocRun.h"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/framework/msvcpp/framework/framework.vcxproj b/framework/msvcpp/framework/framework.vcxproj
index 4240360f58a81e7be774cb33bf0ed8d77d05191c..6b860122148adeb9e76c52889831f3b7710059e7 100755
--- a/framework/msvcpp/framework/framework.vcxproj
+++ b/framework/msvcpp/framework/framework.vcxproj
@@ -1,195 +1,195 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectName>libtskframework</ProjectName>
-    <ProjectGuid>{F791B16A-1489-4526-9FFF-CB481CEC5414}</ProjectGuid>
-    <RootNamespace>framework</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..;$(ProjectDir)\..\..\..;$(POCO_HOME)\Foundation\include;$(POCO_HOME)\Util\include;$(POCO_HOME)\XML\include;$(POCO_HOME)\Net\include;$(LIBEWF_HOME)\common;$(LIBEWF_HOME)\include;$(ProjectDir)\..\..\..\tsk\img;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;TSK_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;libtsk.lib;ws2_32.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(POCO_HOME)\lib;$(ProjectDir)\..\..\..\win32\Debug;$(LIBEWF_HOME)\msvscpp\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <ImportLibrary>$(OutDir)$(ProjectName).lib</ImportLibrary>
-    </Link>
-    <PostBuildEvent>
-      <Command>mkdir "$(ProjectDir)..\..\runtime"
-move /Y "$(OutDir)$(TargetName)$(TargetExt)" "$(ProjectDir)..\..\runtime"
-xcopy "$(POCO_HOME)\bin\PocoFoundationd.dll" "$(ProjectDir)..\..\runtime" /R /Y
-xcopy "$(POCO_HOME)\bin\PocoNetd.dll" "$(ProjectDir)..\..\runtime" /R /Y
-xcopy "$(POCO_HOME)\bin\PocoUtild.dll" "$(ProjectDir)..\..\runtime" /R /Y
-xcopy "$(POCO_HOME)\bin\PocoXMLd.dll" "$(ProjectDir)..\..\runtime" /R /Y
-xcopy "$(LIBEWF_HOME)\msvscpp\Release\libewf.dll" "$(ProjectDir)..\..\runtime" /R /Y
-xcopy "$(LIBEWF_HOME)\msvscpp\Release\zlib.dll" "$(ProjectDir)..\..\runtime" /R /Y
-del "$(ProjectDir)..\..\runtime\framework_config.xml"
-xcopy "$(ProjectDir)..\..\SampleConfig\framework_config_win32dev.xml" "$(ProjectDir)..\..\runtime" /R /Y
-ren "$(ProjectDir)..\..\runtime\framework_config_win32dev.xml" framework_config.xml</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..;$(ProjectDir)\..\..\..;$(POCO_HOME)\Foundation\include;$(POCO_HOME)\Util\include;$(POCO_HOME)\XML\include;$(POCO_HOME)\Net\include;$(LIBEWF_HOME)\common;$(LIBEWF_HOME)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;TSK_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;libtsk.lib;ws2_32.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(POCO_HOME)\lib;$(ProjectDir)\..\..\..\win32\Release;$(LIBEWF_HOME)\msvscpp\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <ImportLibrary>$(OutDir)$(ProjectName).lib</ImportLibrary>
-    </Link>
-    <PostBuildEvent>
-      <Command>mkdir "$(ProjectDir)..\..\runtime"
-move /Y "$(OutDir)$(TargetName)$(TargetExt)" "$(ProjectDir)..\..\runtime"
-xcopy "$(POCO_HOME)\bin\PocoFoundation.dll" "$(ProjectDir)..\..\runtime" /R /Y
-xcopy "$(POCO_HOME)\bin\PocoNet.dll" "$(ProjectDir)..\..\runtime" /R /Y
-xcopy "$(POCO_HOME)\bin\PocoUtil.dll" "$(ProjectDir)..\..\runtime" /R /Y
-xcopy "$(POCO_HOME)\bin\PocoXML.dll" "$(ProjectDir)..\..\runtime" /R /Y
-xcopy "$(LIBEWF_HOME)\msvscpp\Release\libewf.dll" "$(ProjectDir)..\..\runtime" /R /Y
-xcopy "$(LIBEWF_HOME)\msvscpp\Release\zlib.dll" "$(ProjectDir)..\..\runtime" /R /Y
-del "$(ProjectDir)..\..\runtime\framework_config.xml"
-xcopy "$(ProjectDir)..\..\SampleConfig\framework_config_win32dev.xml" "$(ProjectDir)..\..\runtime" /R /Y
-ren "$(ProjectDir)..\..\runtime\framework_config_win32dev.xml" framework_config.xml</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tsk\framework\extraction\TskExtract.cpp" />
-    <ClCompile Include="..\..\tsk\framework\extraction\TskL01Extract.cpp" />
-    <ClCompile Include="..\..\tsk\framework\services\Log.cpp" />
-    <ClCompile Include="..\..\tsk\framework\services\Scheduler.cpp" />
-    <ClCompile Include="..\..\tsk\framework\utilities\SectorRuns.cpp" />
-    <ClCompile Include="..\..\tsk\framework\extraction\TskAutoImpl.cpp" />
-    <ClCompile Include="..\..\tsk\framework\services\TskBlackboard.cpp" />
-    <ClCompile Include="..\..\tsk\framework\services\TskBlackboardArtifact.cpp" />
-    <ClCompile Include="..\..\tsk\framework\services\TskBlackboardAttribute.cpp" />
-    <ClCompile Include="..\..\tsk\framework\extraction\TskCarveExtractScalpel.cpp" />
-    <ClCompile Include="..\..\tsk\framework\extraction\TskCarvePrepSectorConcat.cpp" />
-    <ClCompile Include="..\..\tsk\framework\services\TskDBBlackboard.cpp" />
-    <ClCompile Include="..\..\tsk\framework\utilities\TskException.cpp" />
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskExecutableModule.cpp" />
-    <ClCompile Include="..\..\tsk\framework\file\TskFile.cpp" />
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskFileAnalysisPipeline.cpp" />
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskFileAnalysisPluginModule.cpp" />
-    <ClCompile Include="..\..\tsk\framework\file\TskFileManagerImpl.cpp" />
-    <ClCompile Include="..\..\tsk\framework\file\TskFileTsk.cpp" />
-    <ClCompile Include="..\..\tsk\framework\extraction\TskImageFile.cpp" />
-    <ClCompile Include="..\..\tsk\framework\extraction\TskImageFileTsk.cpp" />
-    <ClCompile Include="..\..\tsk\framework\services\TskImgDB.cpp" />
-    <ClCompile Include="..\..\tsk\framework\services\TskImgDBSqlite.cpp" />
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskModule.cpp" />
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskPipeline.cpp" />
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskPipelineManager.cpp" />
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskPluginModule.cpp" />
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskReportPipeline.cpp" />
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskReportPluginModule.cpp" />
-    <ClCompile Include="..\..\tsk\framework\services\TskSchedulerQueue.cpp" />
-    <ClCompile Include="..\..\tsk\framework\services\TskServices.cpp" />
-    <ClCompile Include="..\..\tsk\framework\services\TskSystemProperties.cpp" />
-    <ClCompile Include="..\..\tsk\framework\services\TskSystemPropertiesImpl.cpp" />
-    <ClCompile Include="..\..\tsk\framework\utilities\TskUtilities.cpp" />
-    <ClCompile Include="..\..\tsk\framework\utilities\UnallocRun.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\tsk\framework\extraction\CarveExtract.h" />
-    <ClInclude Include="..\..\tsk\framework\extraction\CarvePrep.h" />
-    <ClInclude Include="..\..\tsk\framework\extraction\TskExtract.h" />
-    <ClInclude Include="..\..\tsk\framework\extraction\TskL01Extract.h" />
-    <ClInclude Include="..\..\tsk\framework\framework.h" />
-    <ClInclude Include="..\..\tsk\framework\framework_i.h" />
-    <ClInclude Include="..\..\tsk\framework\services\Log.h" />
-    <ClInclude Include="..\..\tsk\framework\services\Scheduler.h" />
-    <ClInclude Include="..\..\tsk\framework\TskVersionInfo.h" />
-    <ClInclude Include="..\..\tsk\framework\utilities\SectorRuns.h" />
-    <ClInclude Include="..\..\tsk\framework\extraction\TskAutoImpl.h" />
-    <ClInclude Include="..\..\tsk\framework\services\TskBlackboard.h" />
-    <ClInclude Include="..\..\tsk\framework\services\TskBlackboardArtifact.h" />
-    <ClInclude Include="..\..\tsk\framework\services\TskBlackBoardAttribute.h" />
-    <ClInclude Include="..\..\tsk\framework\extraction\TskCarveExtractScalpel.h" />
-    <ClInclude Include="..\..\tsk\framework\extraction\TskCarvePrepSectorConcat.h" />
-    <ClInclude Include="..\..\tsk\framework\services\TskDBBlackboard.h" />
-    <ClInclude Include="..\..\tsk\framework\utilities\TskException.h" />
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskExecutableModule.h" />
-    <ClInclude Include="..\..\tsk\framework\file\TskFile.h" />
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskFileAnalysisPipeline.h" />
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskFileAnalysisPluginModule.h" />
-    <ClInclude Include="..\..\tsk\framework\file\TskFileManager.h" />
-    <ClInclude Include="..\..\tsk\framework\file\TskFileManagerImpl.h" />
-    <ClInclude Include="..\..\tsk\framework\file\TskFileTsk.h" />
-    <ClInclude Include="..\..\tsk\framework\extraction\TskImageFile.h" />
-    <ClInclude Include="..\..\tsk\framework\extraction\TskImageFileTsk.h" />
-    <ClInclude Include="..\..\tsk\framework\services\TskImgDB.h" />
-    <ClInclude Include="..\..\tsk\framework\services\TskImgDBSqlite.h" />
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskModule.h" />
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskPipeline.h" />
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskPipelineManager.h" />
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskPluginModule.h" />
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskReportPipeline.h" />
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskReportPluginModule.h" />
-    <ClInclude Include="..\..\tsk\framework\services\TskSchedulerQueue.h" />
-    <ClInclude Include="..\..\tsk\framework\services\TskServices.h" />
-    <ClInclude Include="..\..\tsk\framework\services\TskSystemProperties.h" />
-    <ClInclude Include="..\..\tsk\framework\services\TskSystemPropertiesImpl.h" />
-    <ClInclude Include="..\..\tsk\framework\utilities\TskUtilities.h" />
-    <ClInclude Include="..\..\tsk\framework\utilities\UnallocRun.h" />
-    <ClInclude Include="..\..\tsk\framework\utilities\TskModuleDev.h" />
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>libtskframework</ProjectName>
+    <ProjectGuid>{F791B16A-1489-4526-9FFF-CB481CEC5414}</ProjectGuid>
+    <RootNamespace>framework</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..;$(ProjectDir)\..\..\..;$(POCO_HOME)\Foundation\include;$(POCO_HOME)\Util\include;$(POCO_HOME)\XML\include;$(POCO_HOME)\Net\include;$(LIBEWF_HOME)\common;$(LIBEWF_HOME)\include;$(ProjectDir)\..\..\..\tsk\img;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;TSK_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;libtsk.lib;ws2_32.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(POCO_HOME)\lib;$(ProjectDir)\..\..\..\win32\Debug;$(LIBEWF_HOME)\msvscpp\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <ImportLibrary>$(OutDir)$(ProjectName).lib</ImportLibrary>
+    </Link>
+    <PostBuildEvent>
+      <Command>mkdir "$(ProjectDir)..\..\runtime"
+move /Y "$(OutDir)$(TargetName)$(TargetExt)" "$(ProjectDir)..\..\runtime"
+xcopy "$(POCO_HOME)\bin\PocoFoundationd.dll" "$(ProjectDir)..\..\runtime" /R /Y
+xcopy "$(POCO_HOME)\bin\PocoNetd.dll" "$(ProjectDir)..\..\runtime" /R /Y
+xcopy "$(POCO_HOME)\bin\PocoUtild.dll" "$(ProjectDir)..\..\runtime" /R /Y
+xcopy "$(POCO_HOME)\bin\PocoXMLd.dll" "$(ProjectDir)..\..\runtime" /R /Y
+xcopy "$(LIBEWF_HOME)\msvscpp\Release\libewf.dll" "$(ProjectDir)..\..\runtime" /R /Y
+xcopy "$(LIBEWF_HOME)\msvscpp\Release\zlib.dll" "$(ProjectDir)..\..\runtime" /R /Y
+del "$(ProjectDir)..\..\runtime\framework_config.xml"
+xcopy "$(ProjectDir)..\..\SampleConfig\framework_config_win32dev.xml" "$(ProjectDir)..\..\runtime" /R /Y
+ren "$(ProjectDir)..\..\runtime\framework_config_win32dev.xml" framework_config.xml</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..;$(ProjectDir)\..\..\..;$(POCO_HOME)\Foundation\include;$(POCO_HOME)\Util\include;$(POCO_HOME)\XML\include;$(POCO_HOME)\Net\include;$(LIBEWF_HOME)\common;$(LIBEWF_HOME)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;TSK_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;libtsk.lib;ws2_32.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(POCO_HOME)\lib;$(ProjectDir)\..\..\..\win32\Release;$(LIBEWF_HOME)\msvscpp\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <ImportLibrary>$(OutDir)$(ProjectName).lib</ImportLibrary>
+    </Link>
+    <PostBuildEvent>
+      <Command>mkdir "$(ProjectDir)..\..\runtime"
+move /Y "$(OutDir)$(TargetName)$(TargetExt)" "$(ProjectDir)..\..\runtime"
+xcopy "$(POCO_HOME)\bin\PocoFoundation.dll" "$(ProjectDir)..\..\runtime" /R /Y
+xcopy "$(POCO_HOME)\bin\PocoNet.dll" "$(ProjectDir)..\..\runtime" /R /Y
+xcopy "$(POCO_HOME)\bin\PocoUtil.dll" "$(ProjectDir)..\..\runtime" /R /Y
+xcopy "$(POCO_HOME)\bin\PocoXML.dll" "$(ProjectDir)..\..\runtime" /R /Y
+xcopy "$(LIBEWF_HOME)\msvscpp\Release\libewf.dll" "$(ProjectDir)..\..\runtime" /R /Y
+xcopy "$(LIBEWF_HOME)\msvscpp\Release\zlib.dll" "$(ProjectDir)..\..\runtime" /R /Y
+del "$(ProjectDir)..\..\runtime\framework_config.xml"
+xcopy "$(ProjectDir)..\..\SampleConfig\framework_config_win32dev.xml" "$(ProjectDir)..\..\runtime" /R /Y
+ren "$(ProjectDir)..\..\runtime\framework_config_win32dev.xml" framework_config.xml</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tsk\framework\extraction\TskExtract.cpp" />
+    <ClCompile Include="..\..\tsk\framework\extraction\TskL01Extract.cpp" />
+    <ClCompile Include="..\..\tsk\framework\services\Log.cpp" />
+    <ClCompile Include="..\..\tsk\framework\services\Scheduler.cpp" />
+    <ClCompile Include="..\..\tsk\framework\utilities\SectorRuns.cpp" />
+    <ClCompile Include="..\..\tsk\framework\extraction\TskAutoImpl.cpp" />
+    <ClCompile Include="..\..\tsk\framework\services\TskBlackboard.cpp" />
+    <ClCompile Include="..\..\tsk\framework\services\TskBlackboardArtifact.cpp" />
+    <ClCompile Include="..\..\tsk\framework\services\TskBlackboardAttribute.cpp" />
+    <ClCompile Include="..\..\tsk\framework\extraction\TskCarveExtractScalpel.cpp" />
+    <ClCompile Include="..\..\tsk\framework\extraction\TskCarvePrepSectorConcat.cpp" />
+    <ClCompile Include="..\..\tsk\framework\services\TskDBBlackboard.cpp" />
+    <ClCompile Include="..\..\tsk\framework\utilities\TskException.cpp" />
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskExecutableModule.cpp" />
+    <ClCompile Include="..\..\tsk\framework\file\TskFile.cpp" />
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskFileAnalysisPipeline.cpp" />
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskFileAnalysisPluginModule.cpp" />
+    <ClCompile Include="..\..\tsk\framework\file\TskFileManagerImpl.cpp" />
+    <ClCompile Include="..\..\tsk\framework\file\TskFileTsk.cpp" />
+    <ClCompile Include="..\..\tsk\framework\extraction\TskImageFile.cpp" />
+    <ClCompile Include="..\..\tsk\framework\extraction\TskImageFileTsk.cpp" />
+    <ClCompile Include="..\..\tsk\framework\services\TskImgDB.cpp" />
+    <ClCompile Include="..\..\tsk\framework\services\TskImgDBSqlite.cpp" />
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskModule.cpp" />
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskPipeline.cpp" />
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskPipelineManager.cpp" />
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskPluginModule.cpp" />
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskReportPipeline.cpp" />
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskReportPluginModule.cpp" />
+    <ClCompile Include="..\..\tsk\framework\services\TskSchedulerQueue.cpp" />
+    <ClCompile Include="..\..\tsk\framework\services\TskServices.cpp" />
+    <ClCompile Include="..\..\tsk\framework\services\TskSystemProperties.cpp" />
+    <ClCompile Include="..\..\tsk\framework\services\TskSystemPropertiesImpl.cpp" />
+    <ClCompile Include="..\..\tsk\framework\utilities\TskUtilities.cpp" />
+    <ClCompile Include="..\..\tsk\framework\utilities\UnallocRun.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\tsk\framework\extraction\CarveExtract.h" />
+    <ClInclude Include="..\..\tsk\framework\extraction\CarvePrep.h" />
+    <ClInclude Include="..\..\tsk\framework\extraction\TskExtract.h" />
+    <ClInclude Include="..\..\tsk\framework\extraction\TskL01Extract.h" />
+    <ClInclude Include="..\..\tsk\framework\framework.h" />
+    <ClInclude Include="..\..\tsk\framework\framework_i.h" />
+    <ClInclude Include="..\..\tsk\framework\services\Log.h" />
+    <ClInclude Include="..\..\tsk\framework\services\Scheduler.h" />
+    <ClInclude Include="..\..\tsk\framework\TskVersionInfo.h" />
+    <ClInclude Include="..\..\tsk\framework\utilities\SectorRuns.h" />
+    <ClInclude Include="..\..\tsk\framework\extraction\TskAutoImpl.h" />
+    <ClInclude Include="..\..\tsk\framework\services\TskBlackboard.h" />
+    <ClInclude Include="..\..\tsk\framework\services\TskBlackboardArtifact.h" />
+    <ClInclude Include="..\..\tsk\framework\services\TskBlackBoardAttribute.h" />
+    <ClInclude Include="..\..\tsk\framework\extraction\TskCarveExtractScalpel.h" />
+    <ClInclude Include="..\..\tsk\framework\extraction\TskCarvePrepSectorConcat.h" />
+    <ClInclude Include="..\..\tsk\framework\services\TskDBBlackboard.h" />
+    <ClInclude Include="..\..\tsk\framework\utilities\TskException.h" />
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskExecutableModule.h" />
+    <ClInclude Include="..\..\tsk\framework\file\TskFile.h" />
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskFileAnalysisPipeline.h" />
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskFileAnalysisPluginModule.h" />
+    <ClInclude Include="..\..\tsk\framework\file\TskFileManager.h" />
+    <ClInclude Include="..\..\tsk\framework\file\TskFileManagerImpl.h" />
+    <ClInclude Include="..\..\tsk\framework\file\TskFileTsk.h" />
+    <ClInclude Include="..\..\tsk\framework\extraction\TskImageFile.h" />
+    <ClInclude Include="..\..\tsk\framework\extraction\TskImageFileTsk.h" />
+    <ClInclude Include="..\..\tsk\framework\services\TskImgDB.h" />
+    <ClInclude Include="..\..\tsk\framework\services\TskImgDBSqlite.h" />
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskModule.h" />
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskPipeline.h" />
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskPipelineManager.h" />
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskPluginModule.h" />
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskReportPipeline.h" />
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskReportPluginModule.h" />
+    <ClInclude Include="..\..\tsk\framework\services\TskSchedulerQueue.h" />
+    <ClInclude Include="..\..\tsk\framework\services\TskServices.h" />
+    <ClInclude Include="..\..\tsk\framework\services\TskSystemProperties.h" />
+    <ClInclude Include="..\..\tsk\framework\services\TskSystemPropertiesImpl.h" />
+    <ClInclude Include="..\..\tsk\framework\utilities\TskUtilities.h" />
+    <ClInclude Include="..\..\tsk\framework\utilities\UnallocRun.h" />
+    <ClInclude Include="..\..\tsk\framework\utilities\TskModuleDev.h" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/framework/msvcpp/framework/framework.vcxproj.filters b/framework/msvcpp/framework/framework.vcxproj.filters
index 4d38be4d485d5a083d5776d2f6cc50d2dde0e395..5fc3014944d8240986f21efc073c16a9f5a6c42c 100755
--- a/framework/msvcpp/framework/framework.vcxproj.filters
+++ b/framework/msvcpp/framework/framework.vcxproj.filters
@@ -1,248 +1,248 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tsk\framework\services\Log.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\services\Scheduler.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\utilities\SectorRuns.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\extraction\TskAutoImpl.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\services\TskBlackboard.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\services\TskBlackboardArtifact.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\services\TskBlackboardAttribute.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\extraction\TskCarveExtractScalpel.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\extraction\TskCarvePrepSectorConcat.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\services\TskDBBlackboard.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\utilities\TskException.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskExecutableModule.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\file\TskFile.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskFileAnalysisPipeline.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskFileAnalysisPluginModule.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\file\TskFileManagerImpl.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\file\TskFileTsk.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\extraction\TskImageFile.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\extraction\TskImageFileTsk.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\services\TskImgDB.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\services\TskImgDBSqlite.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskModule.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskPipeline.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskPipelineManager.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskPluginModule.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskReportPipeline.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\pipeline\TskReportPluginModule.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\services\TskSchedulerQueue.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\services\TskServices.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\services\TskSystemProperties.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\services\TskSystemPropertiesImpl.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\utilities\TskUtilities.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\utilities\UnallocRun.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\extraction\TskExtract.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\tsk\framework\extraction\TskL01Extract.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\tsk\framework\extraction\CarveExtract.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\extraction\CarvePrep.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\framework.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\framework_i.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\services\Log.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\services\Scheduler.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\utilities\SectorRuns.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\extraction\TskAutoImpl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\services\TskBlackboard.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\services\TskBlackboardArtifact.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\services\TskBlackBoardAttribute.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\extraction\TskCarveExtractScalpel.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\extraction\TskCarvePrepSectorConcat.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\services\TskDBBlackboard.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\utilities\TskException.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskExecutableModule.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\file\TskFile.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskFileAnalysisPipeline.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskFileAnalysisPluginModule.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\file\TskFileManager.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\file\TskFileManagerImpl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\file\TskFileTsk.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\extraction\TskImageFile.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\extraction\TskImageFileTsk.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\services\TskImgDB.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\services\TskImgDBSqlite.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskModule.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskPipeline.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskPipelineManager.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskPluginModule.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskReportPipeline.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\pipeline\TskReportPluginModule.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\services\TskSchedulerQueue.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\services\TskServices.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\services\TskSystemProperties.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\services\TskSystemPropertiesImpl.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\utilities\TskUtilities.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\utilities\UnallocRun.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\utilities\TskModuleDev.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\TskVersionInfo.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\extraction\TskExtract.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\tsk\framework\extraction\TskL01Extract.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tsk\framework\services\Log.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\services\Scheduler.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\utilities\SectorRuns.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\extraction\TskAutoImpl.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\services\TskBlackboard.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\services\TskBlackboardArtifact.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\services\TskBlackboardAttribute.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\extraction\TskCarveExtractScalpel.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\extraction\TskCarvePrepSectorConcat.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\services\TskDBBlackboard.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\utilities\TskException.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskExecutableModule.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\file\TskFile.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskFileAnalysisPipeline.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskFileAnalysisPluginModule.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\file\TskFileManagerImpl.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\file\TskFileTsk.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\extraction\TskImageFile.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\extraction\TskImageFileTsk.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\services\TskImgDB.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\services\TskImgDBSqlite.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskModule.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskPipeline.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskPipelineManager.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskPluginModule.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskReportPipeline.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\pipeline\TskReportPluginModule.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\services\TskSchedulerQueue.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\services\TskServices.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\services\TskSystemProperties.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\services\TskSystemPropertiesImpl.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\utilities\TskUtilities.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\utilities\UnallocRun.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\extraction\TskExtract.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\tsk\framework\extraction\TskL01Extract.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\tsk\framework\extraction\CarveExtract.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\extraction\CarvePrep.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\framework.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\framework_i.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\services\Log.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\services\Scheduler.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\utilities\SectorRuns.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\extraction\TskAutoImpl.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\services\TskBlackboard.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\services\TskBlackboardArtifact.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\services\TskBlackBoardAttribute.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\extraction\TskCarveExtractScalpel.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\extraction\TskCarvePrepSectorConcat.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\services\TskDBBlackboard.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\utilities\TskException.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskExecutableModule.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\file\TskFile.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskFileAnalysisPipeline.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskFileAnalysisPluginModule.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\file\TskFileManager.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\file\TskFileManagerImpl.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\file\TskFileTsk.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\extraction\TskImageFile.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\extraction\TskImageFileTsk.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\services\TskImgDB.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\services\TskImgDBSqlite.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskModule.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskPipeline.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskPipelineManager.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskPluginModule.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskReportPipeline.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\pipeline\TskReportPluginModule.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\services\TskSchedulerQueue.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\services\TskServices.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\services\TskSystemProperties.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\services\TskSystemPropertiesImpl.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\utilities\TskUtilities.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\utilities\UnallocRun.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\utilities\TskModuleDev.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\TskVersionInfo.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\extraction\TskExtract.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\tsk\framework\extraction\TskL01Extract.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/framework/msvcpp/tsk_analyzeimg/tsk_analyzeimg.vcproj b/framework/msvcpp/tsk_analyzeimg/tsk_analyzeimg.vcproj
index f9607c2651771cb5a362d8733e796dc6c35a62e1..74fe5e5a92263276f2484b1b062e7bc7a7617a94 100755
--- a/framework/msvcpp/tsk_analyzeimg/tsk_analyzeimg.vcproj
+++ b/framework/msvcpp/tsk_analyzeimg/tsk_analyzeimg.vcproj
@@ -1,187 +1,187 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="tsk_analyzeimg"
-	ProjectGUID="{13BD0806-028E-42F1-A91D-5128565A9717}"
-	RootNamespace="tsk_analyzeimg"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="196613"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(POCO_HOME)/XML/include/&quot;;&quot;$(POCO_HOME)/Foundation/include/&quot;;&quot;$(ProjectDir)../../..&quot;;&quot;$(ProjectDir)../..&quot;;&quot;$(POCO_HOME)/Util/include/&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libtsk.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(ProjectDir)/../../../win32/Debug/&quot;;&quot;$(POCO_HOME)/lib&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(POCO_HOME)/XML/include/&quot;;&quot;$(POCO_HOME)/Foundation/include/&quot;;&quot;$(ProjectDir)../../..&quot;;&quot;$(ProjectDir)../..&quot;;&quot;$(POCO_HOME)/Util/include/&quot;"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libtsk.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(ProjectDir)/../../../win32/Release&quot;;&quot;$(POCO_HOME)/lib&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tsk_analyzeimg\tsk_analyzeimg.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="tsk_analyzeimg"
+	ProjectGUID="{13BD0806-028E-42F1-A91D-5128565A9717}"
+	RootNamespace="tsk_analyzeimg"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="196613"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="&quot;$(POCO_HOME)/XML/include/&quot;;&quot;$(POCO_HOME)/Foundation/include/&quot;;&quot;$(ProjectDir)../../..&quot;;&quot;$(ProjectDir)../..&quot;;&quot;$(POCO_HOME)/Util/include/&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libtsk.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(ProjectDir)/../../../win32/Debug/&quot;;&quot;$(POCO_HOME)/lib&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				AdditionalIncludeDirectories="&quot;$(POCO_HOME)/XML/include/&quot;;&quot;$(POCO_HOME)/Foundation/include/&quot;;&quot;$(ProjectDir)../../..&quot;;&quot;$(ProjectDir)../..&quot;;&quot;$(POCO_HOME)/Util/include/&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libtsk.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(ProjectDir)/../../../win32/Release&quot;;&quot;$(POCO_HOME)/lib&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tsk_analyzeimg\tsk_analyzeimg.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/framework/msvcpp/tsk_analyzeimg/tsk_analyzeimg.vcxproj b/framework/msvcpp/tsk_analyzeimg/tsk_analyzeimg.vcxproj
index fc639ac2e4efcb031ef62463002be0f14257fc3a..1c95b3869b395223d6b6ee1ed87d561abe6f0132 100755
--- a/framework/msvcpp/tsk_analyzeimg/tsk_analyzeimg.vcxproj
+++ b/framework/msvcpp/tsk_analyzeimg/tsk_analyzeimg.vcxproj
@@ -1,109 +1,109 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{13BD0806-028E-42F1-A91D-5128565A9717}</ProjectGuid>
-    <RootNamespace>tsk_analyzeimg</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(POCO_HOME)/XML/include/;$(POCO_HOME)/Foundation/include/;$(ProjectDir)../../..;$(ProjectDir)../..;$(POCO_HOME)/Util/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libtsk.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(ProjectDir)/../../../win32/Debug/;$(POCO_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>move /Y "$(SolutionDir)$(Configuration)\$(ProjectName).exe" "$(ProjectDir)..\..\runtime"</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(POCO_HOME)/XML/include/;$(POCO_HOME)/Foundation/include/;$(ProjectDir)../../..;$(ProjectDir)../..;$(POCO_HOME)/Util/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libtsk.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(ProjectDir)/../../../win32/Release;$(POCO_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>move /Y "$(SolutionDir)$(Configuration)\$(ProjectName).exe" "$(ProjectDir)..\..\runtime"</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\tsk_analyzeimg\tsk_analyzeimg.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\framework\framework.vcxproj">
-      <Project>{f791b16a-1489-4526-9fff-cb481cec5414}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{13BD0806-028E-42F1-A91D-5128565A9717}</ProjectGuid>
+    <RootNamespace>tsk_analyzeimg</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(POCO_HOME)/XML/include/;$(POCO_HOME)/Foundation/include/;$(ProjectDir)../../..;$(ProjectDir)../..;$(POCO_HOME)/Util/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libtsk.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(ProjectDir)/../../../win32/Debug/;$(POCO_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>move /Y "$(SolutionDir)$(Configuration)\$(ProjectName).exe" "$(ProjectDir)..\..\runtime"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(POCO_HOME)/XML/include/;$(POCO_HOME)/Foundation/include/;$(ProjectDir)../../..;$(ProjectDir)../..;$(POCO_HOME)/Util/include/;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libtsk.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(ProjectDir)/../../../win32/Release;$(POCO_HOME)/lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>move /Y "$(SolutionDir)$(Configuration)\$(ProjectName).exe" "$(ProjectDir)..\..\runtime"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\tsk_analyzeimg\tsk_analyzeimg.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\framework\framework.vcxproj">
+      <Project>{f791b16a-1489-4526-9fff-cb481cec5414}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/framework/msvcpp/tsk_analyzeimg/tsk_analyzeimg.vcxproj.filters b/framework/msvcpp/tsk_analyzeimg/tsk_analyzeimg.vcxproj.filters
index 94e3f41cb91b273c2e479ad60dd2cc3ef015e399..5c0f653319fe96f9744de604b9fd7a532945d0b4 100755
--- a/framework/msvcpp/tsk_analyzeimg/tsk_analyzeimg.vcxproj.filters
+++ b/framework/msvcpp/tsk_analyzeimg/tsk_analyzeimg.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\tsk_analyzeimg\tsk_analyzeimg.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\tsk_analyzeimg\tsk_analyzeimg.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/framework/msvcpp/tsk_validatepipeline/tsk_validatepipeline.vcproj b/framework/msvcpp/tsk_validatepipeline/tsk_validatepipeline.vcproj
index 87e4978f2adfc6819f4e6e2532b7a3de32dbf5ba..e540a3d34b5196623598b5b2cf95afeb755924cf 100755
--- a/framework/msvcpp/tsk_validatepipeline/tsk_validatepipeline.vcproj
+++ b/framework/msvcpp/tsk_validatepipeline/tsk_validatepipeline.vcproj
@@ -1,187 +1,187 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="tsk_validatepipeline"
-	ProjectGUID="{352C3C04-1F31-4138-97A6-1DC6EC5FD379}"
-	RootNamespace="ValidatePipeline"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="196613"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(POCO_HOME)\Util\include&quot;;&quot;$(POCO_HOME)\XML\include&quot;;&quot;$(POCO_HOME)\Foundation\include&quot;;&quot;$(ProjectDir)/../../..&quot;;&quot;$(ProjectDir)/../..&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;POCO_NO_UNWINDOWS"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libtskframework.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(TSK_HOME)\framework\win32\framework\$(ConfigurationName)&quot;;&quot;$(POCO_HOME)\lib&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(POCO_HOME)\Util\include&quot;;&quot;$(POCO_HOME)\XML\include&quot;;&quot;$(POCO_HOME)\Foundation\include&quot;;&quot;$(ProjectDir)/../../..&quot;;&quot;$(ProjectDir)/../..&quot;"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;POCO_NO_UNWINDOWS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libtskframework.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(TSK_HOME)\framework\win32\framework\$(ConfigurationName)&quot;;&quot;$(POCO_HOME)\lib&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tsk_validatePipeline\tsk_validatePipeline.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="tsk_validatepipeline"
+	ProjectGUID="{352C3C04-1F31-4138-97A6-1DC6EC5FD379}"
+	RootNamespace="ValidatePipeline"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="196613"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="&quot;$(POCO_HOME)\Util\include&quot;;&quot;$(POCO_HOME)\XML\include&quot;;&quot;$(POCO_HOME)\Foundation\include&quot;;&quot;$(ProjectDir)/../../..&quot;;&quot;$(ProjectDir)/../..&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;POCO_NO_UNWINDOWS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libtskframework.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(TSK_HOME)\framework\win32\framework\$(ConfigurationName)&quot;;&quot;$(POCO_HOME)\lib&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				AdditionalIncludeDirectories="&quot;$(POCO_HOME)\Util\include&quot;;&quot;$(POCO_HOME)\XML\include&quot;;&quot;$(POCO_HOME)\Foundation\include&quot;;&quot;$(ProjectDir)/../../..&quot;;&quot;$(ProjectDir)/../..&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;POCO_NO_UNWINDOWS"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libtskframework.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(TSK_HOME)\framework\win32\framework\$(ConfigurationName)&quot;;&quot;$(POCO_HOME)\lib&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tsk_validatePipeline\tsk_validatePipeline.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/framework/msvcpp/tsk_validatepipeline/tsk_validatepipeline.vcxproj b/framework/msvcpp/tsk_validatepipeline/tsk_validatepipeline.vcxproj
index 4953dcb773895e8ea45a0dbe59ef6289a3845d66..fb10252f3af6c2833f62fb71ebb6d066533ad19e 100755
--- a/framework/msvcpp/tsk_validatepipeline/tsk_validatepipeline.vcxproj
+++ b/framework/msvcpp/tsk_validatepipeline/tsk_validatepipeline.vcxproj
@@ -1,109 +1,109 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{352C3C04-1F31-4138-97A6-1DC6EC5FD379}</ProjectGuid>
-    <RootNamespace>ValidatePipeline</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(POCO_HOME)\Util\include;$(POCO_HOME)\XML\include;$(POCO_HOME)\Foundation\include;$(ProjectDir)/../../..;$(ProjectDir)/../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;POCO_NO_UNWINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libtskframework.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(TSK_HOME)\framework\msvcpp\framework\$(Configuration);$(POCO_HOME)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>move /Y "$(SolutionDir)$(Configuration)\$(ProjectName).exe" "$(ProjectDir)..\..\runtime"</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(POCO_HOME)\Util\include;$(POCO_HOME)\XML\include;$(POCO_HOME)\Foundation\include;$(ProjectDir)/../../..;$(ProjectDir)/../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;POCO_NO_UNWINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libtskframework.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(TSK_HOME)\framework\msvcpp\framework\$(Configuration);$(POCO_HOME)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>move /Y "$(SolutionDir)$(Configuration)\$(ProjectName).exe" "$(ProjectDir)..\..\runtime"</Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\tsk_validatePipeline\tsk_validatePipeline.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\framework\framework.vcxproj">
-      <Project>{f791b16a-1489-4526-9fff-cb481cec5414}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{352C3C04-1F31-4138-97A6-1DC6EC5FD379}</ProjectGuid>
+    <RootNamespace>ValidatePipeline</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(POCO_HOME)\Util\include;$(POCO_HOME)\XML\include;$(POCO_HOME)\Foundation\include;$(ProjectDir)/../../..;$(ProjectDir)/../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;POCO_NO_UNWINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libtskframework.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TSK_HOME)\framework\msvcpp\framework\$(Configuration);$(POCO_HOME)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>move /Y "$(SolutionDir)$(Configuration)\$(ProjectName).exe" "$(ProjectDir)..\..\runtime"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(POCO_HOME)\Util\include;$(POCO_HOME)\XML\include;$(POCO_HOME)\Foundation\include;$(ProjectDir)/../../..;$(ProjectDir)/../..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;POCO_NO_UNWINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libtskframework.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(TSK_HOME)\framework\msvcpp\framework\$(Configuration);$(POCO_HOME)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>move /Y "$(SolutionDir)$(Configuration)\$(ProjectName).exe" "$(ProjectDir)..\..\runtime"</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\tsk_validatePipeline\tsk_validatePipeline.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\framework\framework.vcxproj">
+      <Project>{f791b16a-1489-4526-9fff-cb481cec5414}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/framework/msvcpp/tsk_validatepipeline/tsk_validatepipeline.vcxproj.filters b/framework/msvcpp/tsk_validatepipeline/tsk_validatepipeline.vcxproj.filters
index 7e5abb7f19ca662ead8dbc5545faef8c2a8e9dc2..4b9b25a127c33d55641d0f88cd079b1bf25bdc5c 100755
--- a/framework/msvcpp/tsk_validatepipeline/tsk_validatepipeline.vcxproj.filters
+++ b/framework/msvcpp/tsk_validatepipeline/tsk_validatepipeline.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\tsk_validatePipeline\tsk_validatePipeline.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\tsk_validatePipeline\tsk_validatePipeline.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/framework/tools/tsk_analyzeimg/tsk_analyzeimg.cpp b/framework/tools/tsk_analyzeimg/tsk_analyzeimg.cpp
index f574aba6b777364f5542903f16928376e8d61129..0435da03702780bd3f99cf216a52f9b8d110fbb7 100755
--- a/framework/tools/tsk_analyzeimg/tsk_analyzeimg.cpp
+++ b/framework/tools/tsk_analyzeimg/tsk_analyzeimg.cpp
@@ -1,448 +1,448 @@
-/*
-*
-*  The Sleuth Kit
-*
-*  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
-*  Copyright (c) 2011-2012 Basis Technology Corporation. All Rights
-*  reserved.
-*
-*  This software is distributed under the Common Public License 1.0
-*/
-#include <iostream>
-#include <cstdio>
-#include <cstdlib>
-#include <string>
-#include <sstream>
-#include <time.h>
-#include <memory>
-
-#include "tsk/tsk_tools_i.h" // Needed for tsk_getopt
-#include "tsk/framework/framework.h"
-#include "tsk/framework/services/TskSchedulerQueue.h"
-#include "tsk/framework/services/TskSystemPropertiesImpl.h"
-#include "tsk/framework/services/TskImgDBSqlite.h"
-#include "tsk/framework/file/TskFileManagerImpl.h"
-#include "tsk/framework/extraction/TskCarvePrepSectorConcat.h"
-#include "tsk/framework/extraction/TskCarveExtractScalpel.h"
-#include "tsk/framework/extraction/TskExtract.h"
-
-#include "Poco/Path.h"
-#include "Poco/File.h"
-
-#ifdef TSK_WIN32
-#include <Windows.h>
-#else
-#include <sys/stat.h>
-#endif
-
-#include "Poco/File.h"
-#include "Poco/UnicodeConverter.h"
-
-static uint8_t 
-makeDir(const char *dir) 
-{
-    Poco::File path(dir);
-    try {
-        if (!path.createDirectory()) {
-            fprintf(stderr, "Error creating directory: %s\n", dir);
-            return 1;
-        }
-    } catch (const Poco::Exception &ex) {
-        std::stringstream msg;
-        msg << "Error creating directory: " << dir << " Poco exception: " << ex.displayText();
-        fprintf(stderr, "%s\n", msg.str().c_str());
-        return 1;
-    }
-    return 0;
-}
-
-/**
- * Logs all messages to a log file and prints
- * error messages to STDERR
- */
-class StderrLog : public Log
-{
-public:
-    StderrLog() : Log() {
-    }
-
-    ~StderrLog() {
-    }
-
-    void log(Channel a_channel, const std::wstring &a_msg)
-    {
-        Log::log(a_channel, a_msg);
-        if (a_channel != Error) {
-            return;
-        }
-        fprintf(stderr, "%S\n", a_msg.c_str());
-    }
-};
-
-void 
-usage(const char *program) 
-{
-    fprintf(stderr, "%s [-c framework_config_file] [-p pipeline_config_file] [-d outdir] [-C] [-v] [-V] [-L] image_name\n", program);
-    fprintf(stderr, "\t-c framework_config_file: Path to XML framework config file\n");
-    fprintf(stderr, "\t-p pipeline_config_file: Path to XML pipeline config file (overrides pipeline config specified with -c)\n");
-    fprintf(stderr, "\t-d outdir: Path to output directory\n");
-    fprintf(stderr, "\t-C: Disable carving, overriding framework config file settings\n");
-    fprintf(stderr, "\t-v: Enable verbose mode to get more debug information\n");
-    fprintf(stderr, "\t-V: Display the tool version\n");
-    fprintf(stderr, "\t-L: Print no error messages to STDERR -- only log them\n");
-    exit(1);
-}
-
-int main(int argc, char **argv1)
-{
-    TSK_TCHAR **argv;
-    extern int OPTIND;
-    int ch;
-    std::string pipeline_config;
-    std::string framework_config;
-    std::string outDirPath;
-    bool suppressSTDERR = false;
-    bool doCarving = true;
-
-#ifdef TSK_WIN32
-    // On Windows, get the wide arguments (mingw doesn't support wmain)
-    argv = CommandLineToArgvW(GetCommandLineW(), &argc);
-    if (argv == NULL) {
-        fprintf(stderr, "Error getting wide arguments\n");
-        exit(1);
-    }
-#else
-    argv = (TSK_TCHAR **) argv1;
-#endif
-
-    while ((ch =
-        GETOPT(argc, argv, _TSK_T("d:c:p:vVLC"))) > 0) {
-        switch (ch) {
-        case _TSK_T('c'):
-#ifdef TSK_WIN32
-            framework_config.assign(TskUtilities::toUTF8(std::wstring(OPTARG)));
-#else
-            framework_config.assign(OPTARG);
-#endif
-            break;
-
-        case _TSK_T('p'):
-#ifdef TSK_WIN32
-            pipeline_config.assign(TskUtilities::toUTF8(std::wstring(OPTARG)));
-#else
-            pipeline_config.assign(OPTARG);
-#endif
-            break;
-
-        case _TSK_T('v'):
-            tsk_verbose++;
-            break;
-
-        case _TSK_T('V'):
-            tsk_version_print(stdout);
-            exit(0);
-            break;
-
-        case _TSK_T('d'):
-#ifdef TSK_WIN32
-            outDirPath.assign(TskUtilities::toUTF8(std::wstring(OPTARG)));
-#else
-            outDirPath.assign(OPTARG);
-#endif
-            break;
-
-        case _TSK_T('C'):
-            doCarving = false;
-            break;
-
-        case _TSK_T('L'):
-            suppressSTDERR = true;
-            break;
-
-        case _TSK_T('?'):
-        default:
-            TFPRINTF(stderr, _TSK_T("Invalid argument: %s\n"),
-                argv[OPTIND]);
-            usage(argv1[0]);
-        }
-    }
-
-    /* We need at least one more argument */
-    if (OPTIND == argc) {
-        tsk_fprintf(stderr, "Missing image name\n");
-        usage(argv1[0]);
-    }
-
-    std::string imagePath;
-#ifdef TSK_WIN32
-    imagePath = TskUtilities::toUTF8(std::wstring(argv[OPTIND]));
-#else
-    imagePath = argv1[OPTIND];
-#endif
-    
-    if (!Poco::File(imagePath).exists()) {
-        std::stringstream msg;
-        msg << "Image file not found: " << imagePath;
-        LOGERROR(msg.str());
-        return 1;
-    }
-
-    // Load the framework config if they specified it
-    try
-    {
-        // try the one specified on the command line
-        if (framework_config.size()) {
-            TskSystemPropertiesImpl *systemProperties = new TskSystemPropertiesImpl();
-            systemProperties->initialize(framework_config);
-            TskServices::Instance().setSystemProperties(*systemProperties);
-        }
-        // try the one in the current directory
-        else if (Poco::File("framework_config.xml").exists()) {
-            TskSystemPropertiesImpl *systemProperties = new TskSystemPropertiesImpl();
-            systemProperties->initialize("framework_config.xml");
-            TskServices::Instance().setSystemProperties(*systemProperties);
-        }
-        // try one back up a few directories for the use case that we built this in
-        // the source tree.
-        else {
-            TskSystemPropertiesImpl *systemProperties = new TskSystemPropertiesImpl();
-            systemProperties->initialize();
-            std::string progdir = systemProperties->get(TskSystemProperties::PROG_DIR);
-            std::string configPath = progdir + "../../../runtime/framework_config.xml";
-            if (Poco::File(configPath).exists()) {
-                systemProperties->initialize(configPath);
-                TskServices::Instance().setSystemProperties(*systemProperties);
-            } else {
-                fprintf(stderr, "No framework config file found\n");
-            }
-        }
-    }
-    catch (TskException& ex)
-    {
-        fprintf(stderr, "Loading framework config file: %s\n", ex.message().c_str());
-        return 1;
-    }
-
-    // if they didn't specify the output directory, make one
-    if (outDirPath == "") {
-        outDirPath.assign(imagePath);
-        outDirPath.append("_tsk_out");
-    }
-    if (Poco::File(outDirPath).exists()) {
-        std::stringstream msg;
-        msg << "Output directory already exists " << outDirPath;
-        LOGERROR(msg.str());
-        return 1;
-    }
-
-    SetSystemProperty(TskSystemProperties::OUT_DIR, outDirPath);
-    // make the output dirs, makeDir() logs the error.
-    if (makeDir(outDirPath.c_str()))  {
-        return 1;
-    }
-
-    if (makeDir(GetSystemProperty(TskSystemProperties::SYSTEM_OUT_DIR).c_str())) {
-        return 1;
-    }
-
-    if (makeDir(GetSystemProperty(TskSystemProperties::MODULE_OUT_DIR).c_str())) {
-        return 1;
-    }
-
-    std::string logDir = GetSystemProperty(TskSystemProperties::LOG_DIR);
-    if (makeDir(logDir.c_str()))  {
-        return 1;
-    }
-
-
-    // Create a log object
-    struct tm * newtime;
-    time_t aclock;
-
-    time(&aclock);   // Get time in seconds
-    newtime = localtime(&aclock);
-    char filename[MAX_BUFF_LENGTH];
-    snprintf(filename, MAX_BUFF_LENGTH, "/log_%.4d-%.2d-%.2d-%.2d-%.2d-%.2d.txt",
-        newtime->tm_year + 1900, newtime->tm_mon+1, newtime->tm_mday,  
-        newtime->tm_hour, newtime->tm_min, newtime->tm_sec);
-
-    logDir.append(filename);
-    std::auto_ptr<Log> log(NULL);
-
-    if(suppressSTDERR)
-        log = std::auto_ptr<Log>(new Log());
-    else
-        log = std::auto_ptr<Log>(new StderrLog());
-
-    log->open(logDir.c_str());
-    TskServices::Instance().setLog(*log);
-
-    // Create and register our SQLite ImgDB class   
-    std::auto_ptr<TskImgDB> pImgDB(NULL);
-    pImgDB = std::auto_ptr<TskImgDB>(new TskImgDBSqlite(outDirPath.c_str()));
-    if (pImgDB->initialize() != 0) {
-        std::stringstream msg;
-        msg << "Error initializing SQLite database: " << outDirPath;
-        LOGERROR(msg.str());
-        return 1;
-    }
-
-    // @@@ Call pImgDB->addToolInfo() as needed to set version info...
-
-    TskServices::Instance().setImgDB(*pImgDB);
-
-    // Create a Blackboard and register it with the framework.
-    TskServices::Instance().setBlackboard((TskBlackboard &) TskDBBlackboard::instance());
-
-    if (pipeline_config.size()) 
-        SetSystemProperty(TskSystemProperties::PIPELINE_CONFIG_FILE, pipeline_config);
-
-    // Create a Scheduler and register it
-    TskSchedulerQueue scheduler;
-    TskServices::Instance().setScheduler(scheduler);
-
-    // Create a FileManager and register it with the framework.
-    TskServices::Instance().setFileManager(TskFileManagerImpl::instance());
-
-    TskImageFileTsk imageFileTsk;
-
-    // Check to see if input image is actually a container file
-    TskArchiveExtraction::ExtractorPtr containerExtractor = TskArchiveExtraction::createExtractor(imagePath);
-
-    if (containerExtractor.isNull())
-    {
-        // Create an ImageFile and register it with the framework.
-        if (imageFileTsk.open(imagePath) != 0) {
-            std::stringstream msg;
-            msg << "Error opening image: " << imagePath;
-            LOGERROR(msg.str());
-            return 1;
-        }
-        TskServices::Instance().setImageFile(imageFileTsk);
-    }
-
-    // Let's get the pipelines setup to make sure there are no errors.
-    TskPipelineManager pipelineMgr;
-    TskPipeline *filePipeline;
-    try {
-        filePipeline = pipelineMgr.createPipeline(TskPipelineManager::FILE_ANALYSIS_PIPELINE);
-    }
-    catch (const TskException &e ) {
-        std::stringstream msg;
-        msg << "Error creating file analysis pipeline: " << e.message();
-        LOGERROR(msg.str());
-        filePipeline = NULL;
-    }
-
-    TskPipeline *reportPipeline;
-    try {
-        reportPipeline = pipelineMgr.createPipeline(TskPipelineManager::POST_PROCESSING_PIPELINE);
-    }
-    catch (const TskException &e ) {
-        std::stringstream msg;
-        msg << "Error creating reporting pipeline: " << e.message();
-        LOGERROR(msg.str());
-        reportPipeline = NULL;
-    }
-
-    if ((filePipeline == NULL) && (reportPipeline == NULL)) {
-        std::stringstream msg;
-        msg << "No pipelines configured.  Stopping";
-        LOGERROR(msg.str());
-        exit(1);
-    }
-
-    // Now we analyze the data.
-
-
-    std::auto_ptr<TskCarveExtractScalpel> carver;
-
-    // Extract
-    if (!containerExtractor.isNull())   // Input is an archive file
-    {
-        if (containerExtractor->extractFiles() != 0)
-        {
-            std::wstringstream msg;
-            msg << L"Error adding archived file info to database";
-            LOGERROR(msg.str());
-            return 1;
-        }
-    }
-    else // Input is an image file
-    {
-        if (imageFileTsk.extractFiles() != 0)
-        {
-            std::wstringstream msg;
-            msg << L"Error adding file system info to database";
-            LOGERROR(msg.str());
-            return 1;
-        }
-
-        if (doCarving && !GetSystemProperty("SCALPEL_DIR").empty())
-        {
-            TskCarvePrepSectorConcat carvePrep;
-            carvePrep.processSectors(true);
-            carver.reset(new TskCarveExtractScalpel());
-        }
-    }
-
-    TskSchedulerQueue::task_struct *task;
-    while ((task = scheduler.nextTask()) != NULL) 
-    {
-        try
-        {
-            if (task->task == Scheduler::FileAnalysis && filePipeline && !filePipeline->isEmpty())
-            {
-                filePipeline->run(task->id);
-            }
-            else if (task->task == Scheduler::Carve && carver.get())
-            {
-                carver->processFile(static_cast<int>(task->id));
-            }
-            else
-            {
-                std::stringstream msg;
-                msg << "WARNING: Skipping task: " << task->task;
-                LOGWARN(msg.str());
-            }
-            delete task;
-        }
-        catch (...) 
-        {
-            // Error message has been logged already.
-        }
-    }
-
-    if (filePipeline && !filePipeline->isEmpty())
-    {
-        filePipeline->logModuleExecutionTimes();
-    }
-
-    // Do image analysis tasks.
-    if (reportPipeline) 
-    {
-        try 
-        {
-            reportPipeline->run();
-        }
-        catch (...) 
-        {
-            std::stringstream msg;
-            msg << "Error running reporting pipeline";
-            LOGERROR(msg.str());
-            return 1;
-        }
-        
-        if (!reportPipeline->isEmpty())
-        {
-            reportPipeline->logModuleExecutionTimes();
-        }
-    }
-
-    std::stringstream msg;
-    msg << "image analysis complete";
-    LOGINFO(msg.str());
-    cout << "Results saved to " << outDirPath << std::endl;
-    return 0;
-}
-
+/*
+*
+*  The Sleuth Kit
+*
+*  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+*  Copyright (c) 2011-2012 Basis Technology Corporation. All Rights
+*  reserved.
+*
+*  This software is distributed under the Common Public License 1.0
+*/
+#include <iostream>
+#include <cstdio>
+#include <cstdlib>
+#include <string>
+#include <sstream>
+#include <time.h>
+#include <memory>
+
+#include "tsk/tsk_tools_i.h" // Needed for tsk_getopt
+#include "tsk/framework/framework.h"
+#include "tsk/framework/services/TskSchedulerQueue.h"
+#include "tsk/framework/services/TskSystemPropertiesImpl.h"
+#include "tsk/framework/services/TskImgDBSqlite.h"
+#include "tsk/framework/file/TskFileManagerImpl.h"
+#include "tsk/framework/extraction/TskCarvePrepSectorConcat.h"
+#include "tsk/framework/extraction/TskCarveExtractScalpel.h"
+#include "tsk/framework/extraction/TskExtract.h"
+
+#include "Poco/Path.h"
+#include "Poco/File.h"
+
+#ifdef TSK_WIN32
+#include <Windows.h>
+#else
+#include <sys/stat.h>
+#endif
+
+#include "Poco/File.h"
+#include "Poco/UnicodeConverter.h"
+
+static uint8_t 
+makeDir(const char *dir) 
+{
+    Poco::File path(dir);
+    try {
+        if (!path.createDirectory()) {
+            fprintf(stderr, "Error creating directory: %s\n", dir);
+            return 1;
+        }
+    } catch (const Poco::Exception &ex) {
+        std::stringstream msg;
+        msg << "Error creating directory: " << dir << " Poco exception: " << ex.displayText();
+        fprintf(stderr, "%s\n", msg.str().c_str());
+        return 1;
+    }
+    return 0;
+}
+
+/**
+ * Logs all messages to a log file and prints
+ * error messages to STDERR
+ */
+class StderrLog : public Log
+{
+public:
+    StderrLog() : Log() {
+    }
+
+    ~StderrLog() {
+    }
+
+    void log(Channel a_channel, const std::wstring &a_msg)
+    {
+        Log::log(a_channel, a_msg);
+        if (a_channel != Error) {
+            return;
+        }
+        fprintf(stderr, "%S\n", a_msg.c_str());
+    }
+};
+
+void 
+usage(const char *program) 
+{
+    fprintf(stderr, "%s [-c framework_config_file] [-p pipeline_config_file] [-d outdir] [-C] [-v] [-V] [-L] image_name\n", program);
+    fprintf(stderr, "\t-c framework_config_file: Path to XML framework config file\n");
+    fprintf(stderr, "\t-p pipeline_config_file: Path to XML pipeline config file (overrides pipeline config specified with -c)\n");
+    fprintf(stderr, "\t-d outdir: Path to output directory\n");
+    fprintf(stderr, "\t-C: Disable carving, overriding framework config file settings\n");
+    fprintf(stderr, "\t-v: Enable verbose mode to get more debug information\n");
+    fprintf(stderr, "\t-V: Display the tool version\n");
+    fprintf(stderr, "\t-L: Print no error messages to STDERR -- only log them\n");
+    exit(1);
+}
+
+int main(int argc, char **argv1)
+{
+    TSK_TCHAR **argv;
+    extern int OPTIND;
+    int ch;
+    std::string pipeline_config;
+    std::string framework_config;
+    std::string outDirPath;
+    bool suppressSTDERR = false;
+    bool doCarving = true;
+
+#ifdef TSK_WIN32
+    // On Windows, get the wide arguments (mingw doesn't support wmain)
+    argv = CommandLineToArgvW(GetCommandLineW(), &argc);
+    if (argv == NULL) {
+        fprintf(stderr, "Error getting wide arguments\n");
+        exit(1);
+    }
+#else
+    argv = (TSK_TCHAR **) argv1;
+#endif
+
+    while ((ch =
+        GETOPT(argc, argv, _TSK_T("d:c:p:vVLC"))) > 0) {
+        switch (ch) {
+        case _TSK_T('c'):
+#ifdef TSK_WIN32
+            framework_config.assign(TskUtilities::toUTF8(std::wstring(OPTARG)));
+#else
+            framework_config.assign(OPTARG);
+#endif
+            break;
+
+        case _TSK_T('p'):
+#ifdef TSK_WIN32
+            pipeline_config.assign(TskUtilities::toUTF8(std::wstring(OPTARG)));
+#else
+            pipeline_config.assign(OPTARG);
+#endif
+            break;
+
+        case _TSK_T('v'):
+            tsk_verbose++;
+            break;
+
+        case _TSK_T('V'):
+            tsk_version_print(stdout);
+            exit(0);
+            break;
+
+        case _TSK_T('d'):
+#ifdef TSK_WIN32
+            outDirPath.assign(TskUtilities::toUTF8(std::wstring(OPTARG)));
+#else
+            outDirPath.assign(OPTARG);
+#endif
+            break;
+
+        case _TSK_T('C'):
+            doCarving = false;
+            break;
+
+        case _TSK_T('L'):
+            suppressSTDERR = true;
+            break;
+
+        case _TSK_T('?'):
+        default:
+            TFPRINTF(stderr, _TSK_T("Invalid argument: %s\n"),
+                argv[OPTIND]);
+            usage(argv1[0]);
+        }
+    }
+
+    /* We need at least one more argument */
+    if (OPTIND == argc) {
+        tsk_fprintf(stderr, "Missing image name\n");
+        usage(argv1[0]);
+    }
+
+    std::string imagePath;
+#ifdef TSK_WIN32
+    imagePath = TskUtilities::toUTF8(std::wstring(argv[OPTIND]));
+#else
+    imagePath = argv1[OPTIND];
+#endif
+    
+    if (!Poco::File(imagePath).exists()) {
+        std::stringstream msg;
+        msg << "Image file not found: " << imagePath;
+        LOGERROR(msg.str());
+        return 1;
+    }
+
+    // Load the framework config if they specified it
+    try
+    {
+        // try the one specified on the command line
+        if (framework_config.size()) {
+            TskSystemPropertiesImpl *systemProperties = new TskSystemPropertiesImpl();
+            systemProperties->initialize(framework_config);
+            TskServices::Instance().setSystemProperties(*systemProperties);
+        }
+        // try the one in the current directory
+        else if (Poco::File("framework_config.xml").exists()) {
+            TskSystemPropertiesImpl *systemProperties = new TskSystemPropertiesImpl();
+            systemProperties->initialize("framework_config.xml");
+            TskServices::Instance().setSystemProperties(*systemProperties);
+        }
+        // try one back up a few directories for the use case that we built this in
+        // the source tree.
+        else {
+            TskSystemPropertiesImpl *systemProperties = new TskSystemPropertiesImpl();
+            systemProperties->initialize();
+            std::string progdir = systemProperties->get(TskSystemProperties::PROG_DIR);
+            std::string configPath = progdir + "../../../runtime/framework_config.xml";
+            if (Poco::File(configPath).exists()) {
+                systemProperties->initialize(configPath);
+                TskServices::Instance().setSystemProperties(*systemProperties);
+            } else {
+                fprintf(stderr, "No framework config file found\n");
+            }
+        }
+    }
+    catch (TskException& ex)
+    {
+        fprintf(stderr, "Loading framework config file: %s\n", ex.message().c_str());
+        return 1;
+    }
+
+    // if they didn't specify the output directory, make one
+    if (outDirPath == "") {
+        outDirPath.assign(imagePath);
+        outDirPath.append("_tsk_out");
+    }
+    if (Poco::File(outDirPath).exists()) {
+        std::stringstream msg;
+        msg << "Output directory already exists " << outDirPath;
+        LOGERROR(msg.str());
+        return 1;
+    }
+
+    SetSystemProperty(TskSystemProperties::OUT_DIR, outDirPath);
+    // make the output dirs, makeDir() logs the error.
+    if (makeDir(outDirPath.c_str()))  {
+        return 1;
+    }
+
+    if (makeDir(GetSystemProperty(TskSystemProperties::SYSTEM_OUT_DIR).c_str())) {
+        return 1;
+    }
+
+    if (makeDir(GetSystemProperty(TskSystemProperties::MODULE_OUT_DIR).c_str())) {
+        return 1;
+    }
+
+    std::string logDir = GetSystemProperty(TskSystemProperties::LOG_DIR);
+    if (makeDir(logDir.c_str()))  {
+        return 1;
+    }
+
+
+    // Create a log object
+    struct tm * newtime;
+    time_t aclock;
+
+    time(&aclock);   // Get time in seconds
+    newtime = localtime(&aclock);
+    char filename[MAX_BUFF_LENGTH];
+    snprintf(filename, MAX_BUFF_LENGTH, "/log_%.4d-%.2d-%.2d-%.2d-%.2d-%.2d.txt",
+        newtime->tm_year + 1900, newtime->tm_mon+1, newtime->tm_mday,  
+        newtime->tm_hour, newtime->tm_min, newtime->tm_sec);
+
+    logDir.append(filename);
+    std::auto_ptr<Log> log(NULL);
+
+    if(suppressSTDERR)
+        log = std::auto_ptr<Log>(new Log());
+    else
+        log = std::auto_ptr<Log>(new StderrLog());
+
+    log->open(logDir.c_str());
+    TskServices::Instance().setLog(*log);
+
+    // Create and register our SQLite ImgDB class   
+    std::auto_ptr<TskImgDB> pImgDB(NULL);
+    pImgDB = std::auto_ptr<TskImgDB>(new TskImgDBSqlite(outDirPath.c_str()));
+    if (pImgDB->initialize() != 0) {
+        std::stringstream msg;
+        msg << "Error initializing SQLite database: " << outDirPath;
+        LOGERROR(msg.str());
+        return 1;
+    }
+
+    // @@@ Call pImgDB->addToolInfo() as needed to set version info...
+
+    TskServices::Instance().setImgDB(*pImgDB);
+
+    // Create a Blackboard and register it with the framework.
+    TskServices::Instance().setBlackboard((TskBlackboard &) TskDBBlackboard::instance());
+
+    if (pipeline_config.size()) 
+        SetSystemProperty(TskSystemProperties::PIPELINE_CONFIG_FILE, pipeline_config);
+
+    // Create a Scheduler and register it
+    TskSchedulerQueue scheduler;
+    TskServices::Instance().setScheduler(scheduler);
+
+    // Create a FileManager and register it with the framework.
+    TskServices::Instance().setFileManager(TskFileManagerImpl::instance());
+
+    TskImageFileTsk imageFileTsk;
+
+    // Check to see if input image is actually a container file
+    TskArchiveExtraction::ExtractorPtr containerExtractor = TskArchiveExtraction::createExtractor(imagePath);
+
+    if (containerExtractor.isNull())
+    {
+        // Create an ImageFile and register it with the framework.
+        if (imageFileTsk.open(imagePath) != 0) {
+            std::stringstream msg;
+            msg << "Error opening image: " << imagePath;
+            LOGERROR(msg.str());
+            return 1;
+        }
+        TskServices::Instance().setImageFile(imageFileTsk);
+    }
+
+    // Let's get the pipelines setup to make sure there are no errors.
+    TskPipelineManager pipelineMgr;
+    TskPipeline *filePipeline;
+    try {
+        filePipeline = pipelineMgr.createPipeline(TskPipelineManager::FILE_ANALYSIS_PIPELINE);
+    }
+    catch (const TskException &e ) {
+        std::stringstream msg;
+        msg << "Error creating file analysis pipeline: " << e.message();
+        LOGERROR(msg.str());
+        filePipeline = NULL;
+    }
+
+    TskPipeline *reportPipeline;
+    try {
+        reportPipeline = pipelineMgr.createPipeline(TskPipelineManager::POST_PROCESSING_PIPELINE);
+    }
+    catch (const TskException &e ) {
+        std::stringstream msg;
+        msg << "Error creating reporting pipeline: " << e.message();
+        LOGERROR(msg.str());
+        reportPipeline = NULL;
+    }
+
+    if ((filePipeline == NULL) && (reportPipeline == NULL)) {
+        std::stringstream msg;
+        msg << "No pipelines configured.  Stopping";
+        LOGERROR(msg.str());
+        exit(1);
+    }
+
+    // Now we analyze the data.
+
+
+    std::auto_ptr<TskCarveExtractScalpel> carver;
+
+    // Extract
+    if (!containerExtractor.isNull())   // Input is an archive file
+    {
+        if (containerExtractor->extractFiles() != 0)
+        {
+            std::wstringstream msg;
+            msg << L"Error adding archived file info to database";
+            LOGERROR(msg.str());
+            return 1;
+        }
+    }
+    else // Input is an image file
+    {
+        if (imageFileTsk.extractFiles() != 0)
+        {
+            std::wstringstream msg;
+            msg << L"Error adding file system info to database";
+            LOGERROR(msg.str());
+            return 1;
+        }
+
+        if (doCarving && !GetSystemProperty("SCALPEL_DIR").empty())
+        {
+            TskCarvePrepSectorConcat carvePrep;
+            carvePrep.processSectors(true);
+            carver.reset(new TskCarveExtractScalpel());
+        }
+    }
+
+    TskSchedulerQueue::task_struct *task;
+    while ((task = scheduler.nextTask()) != NULL) 
+    {
+        try
+        {
+            if (task->task == Scheduler::FileAnalysis && filePipeline && !filePipeline->isEmpty())
+            {
+                filePipeline->run(task->id);
+            }
+            else if (task->task == Scheduler::Carve && carver.get())
+            {
+                carver->processFile(static_cast<int>(task->id));
+            }
+            else
+            {
+                std::stringstream msg;
+                msg << "WARNING: Skipping task: " << task->task;
+                LOGWARN(msg.str());
+            }
+            delete task;
+        }
+        catch (...) 
+        {
+            // Error message has been logged already.
+        }
+    }
+
+    if (filePipeline && !filePipeline->isEmpty())
+    {
+        filePipeline->logModuleExecutionTimes();
+    }
+
+    // Do image analysis tasks.
+    if (reportPipeline) 
+    {
+        try 
+        {
+            reportPipeline->run();
+        }
+        catch (...) 
+        {
+            std::stringstream msg;
+            msg << "Error running reporting pipeline";
+            LOGERROR(msg.str());
+            return 1;
+        }
+        
+        if (!reportPipeline->isEmpty())
+        {
+            reportPipeline->logModuleExecutionTimes();
+        }
+    }
+
+    std::stringstream msg;
+    msg << "image analysis complete";
+    LOGINFO(msg.str());
+    cout << "Results saved to " << outDirPath << std::endl;
+    return 0;
+}
+
diff --git a/framework/tools/tsk_validatepipeline/tsk_validatepipeline.cpp b/framework/tools/tsk_validatepipeline/tsk_validatepipeline.cpp
index d38c3bca577b7de834995d5def653cdc664a97be..e6c5cde2a16f2c230b6e1d0b1f3a4c36fe56473b 100755
--- a/framework/tools/tsk_validatepipeline/tsk_validatepipeline.cpp
+++ b/framework/tools/tsk_validatepipeline/tsk_validatepipeline.cpp
@@ -1,178 +1,178 @@
-/*
-*
-*  The Sleuth Kit
-*
-*  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
-*  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
-*  reserved.
-*
-*  This software is distributed under the Common Public License 1.0
-*/
-#include <cstdio>
-#include <cstdlib>
-#include <fstream>
-#include <sstream>
-
-#include "tsk/framework/framework.h"
-#include "tsk/framework/services/TskSystemPropertiesImpl.h"
-
-#include "Poco/AutoPtr.h"
-#include "Poco/Path.h"
-#include "Poco/UnicodeConverter.h"
-#include "Poco/DOM/DOMParser.h"
-#include "Poco/DOM/Document.h"
-#include "Poco/DOM/NodeList.h"
-#include "Poco/DOM/NodeIterator.h"
-#include "Poco/DOM/DOMWriter.h"
-#include "Poco/SAX/InputSource.h"
-#include "Poco/SAX/SAXException.h"
-#include "Poco/Util/XMLConfiguration.h"
-#include "Poco/Util/AbstractConfiguration.h"
-#include "Poco/TemporaryFile.h"
-
-#define VALIDATE_PIPELINE_VERSION "1.0.0.0"
-
-class ValidatePipeline
-{
-public:
-    ValidatePipeline();
-    ~ValidatePipeline();
-
-    bool isValid(const char * a_configPath) const;
-
-private:
-    const char *m_configPath;
-};
-
-static char *progname;
-
-static void usage()
-{
-    fprintf(stderr, "Usage: %s framework_config_file pipeline_config_file \n", progname);
-    fprintf(stderr, "\tframework_config_file: Framework config file that identifies where module directory, etc. is found.\n");
-    fprintf(stderr, "\tpipeline_config_file: Pipeline config file to validate.\n");
-}
-
-ValidatePipeline::ValidatePipeline()
-{
-}
-
-ValidatePipeline::~ValidatePipeline()
-{
-}
-
-/* Validate all of the pipelines in the given config file. 
-* This method does some basic parsing of the config file to learn
-* about the various pipelines that exist in the file.
-*/
-bool ValidatePipeline::isValid(const char *a_configPath) const
-{
-    bool failed = false;
-
-    std::ifstream in(a_configPath);
-    if (!in) {
-        fprintf(stdout, "Error opening pipeline config file: %s\n", a_configPath);
-    } else {
-        try {
-            Poco::XML::InputSource src(in);
-            Poco::XML::DOMParser parser;
-            // basic parsing
-            Poco::AutoPtr<Poco::XML::Document> xmlDoc = parser.parse(&src);
-
-            // must have at least one pipeline element
-            Poco::AutoPtr<Poco::XML::NodeList> pipelines = 
-                xmlDoc->getElementsByTagName(TskPipelineManager::PIPELINE_ELEMENT);
-
-            if (pipelines->length() == 0) {
-                fprintf(stdout, "No pipelines found in config file.\n");
-            } else {
-                // parse all pipelines in the config file
-                for (unsigned long i = 0; i < pipelines->length(); i++)
-                {
-                    Poco::XML::Node * pNode = pipelines->item(i);
-                    Poco::XML::Element* pElem = dynamic_cast<Poco::XML::Element*>(pNode);
-                    Poco::XML::DOMWriter writer;
-                    std::ostringstream pipelineXml;
-                    writer.writeNode(pipelineXml, pNode);
-
-                    std::string pipelineType = pElem->getAttribute(TskPipelineManager::PIPELINE_TYPE_ATTRIBUTE);
-
-                    TskPipeline * pipeline = 0;
-                    if (pipelineType == TskPipelineManager::FILE_ANALYSIS_PIPELINE_STR)
-                        pipeline = new TskFileAnalysisPipeline();
-                    else if (pipelineType == TskPipelineManager::REPORTING_PIPELINE_STR)
-                        pipeline = new TskReportPipeline();
-                    else {
-                        fprintf(stdout, "Unsupported pipeline type: %s\n", pipelineType.c_str());
-                        failed = true;
-                        continue;
-                    }
-
-                    try {
-                        pipeline->validate(pipelineXml.str());
-                    } catch (...) {
-                        fprintf(stdout, "Error parsing pipeline: %s\n", pElem->getAttribute(TskPipelineManager::PIPELINE_TYPE_ATTRIBUTE).c_str());
-                        failed = true;
-                    }
-                        delete pipeline;
-                }
-            }
-        } catch (Poco::XML::SAXParseException& ex) {
-            fprintf(stderr, "Error parsing pipeline config file: %s (%s)\n", a_configPath, ex.what());
-        }
-    }
- 
-    // If any of the pipelines failed validation we return false
-    return failed ? false : true;
-}
-
-int main(int argc, char **argv)
-{
-    progname = argv[0];
-    if (argc != 3) {
-        usage();
-        return 1;
-    }
-    char *frameworkConfigPath = argv[1];
-    char *pipelineConfigPath = argv[2];
-
-    fprintf(stderr, "Validating %s\n", pipelineConfigPath);
-
-    // open the log temp file
-    Log log;
-    Poco::TemporaryFile filename;
-
-    log.open(filename.path().c_str());
-    TskServices::Instance().setLog(log);
-
-    std::string progDirPath = TskUtilities::getProgDir();
-
-    // Initialize properties based on the config file. Do this to shutdown noise in validation.
-    TskSystemPropertiesImpl systemProperties;
-    systemProperties.initialize(frameworkConfigPath);
-    TskServices::Instance().setSystemProperties(systemProperties);
-
-    SetSystemProperty(TskSystemProperties::PROG_DIR, progDirPath); 
-
-    ValidatePipeline vp;
-    bool valid = vp.isValid(pipelineConfigPath);
-    fprintf(stdout, "%s is %s\n", pipelineConfigPath, (valid ? "valid." : "invalid."));
-
-    // close the log file and dump content to stdout
-    log.close();
-
-#define MAX_BUF 1024
-    char buf[MAX_BUF];
-    std::ifstream fin(filename.path().c_str());
-
-    fprintf(stdout, "\nLog messages created during validation: \n");
-    while (fin.getline(buf, MAX_BUF)) {
-        fprintf(stdout, "%s\n", buf);
-    }
-    fin.close();
-
-    if (valid)
-        return 0;
-    else
-        return 1;
-}
+/*
+*
+*  The Sleuth Kit
+*
+*  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+*  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+*  reserved.
+*
+*  This software is distributed under the Common Public License 1.0
+*/
+#include <cstdio>
+#include <cstdlib>
+#include <fstream>
+#include <sstream>
+
+#include "tsk/framework/framework.h"
+#include "tsk/framework/services/TskSystemPropertiesImpl.h"
+
+#include "Poco/AutoPtr.h"
+#include "Poco/Path.h"
+#include "Poco/UnicodeConverter.h"
+#include "Poco/DOM/DOMParser.h"
+#include "Poco/DOM/Document.h"
+#include "Poco/DOM/NodeList.h"
+#include "Poco/DOM/NodeIterator.h"
+#include "Poco/DOM/DOMWriter.h"
+#include "Poco/SAX/InputSource.h"
+#include "Poco/SAX/SAXException.h"
+#include "Poco/Util/XMLConfiguration.h"
+#include "Poco/Util/AbstractConfiguration.h"
+#include "Poco/TemporaryFile.h"
+
+#define VALIDATE_PIPELINE_VERSION "1.0.0.0"
+
+class ValidatePipeline
+{
+public:
+    ValidatePipeline();
+    ~ValidatePipeline();
+
+    bool isValid(const char * a_configPath) const;
+
+private:
+    const char *m_configPath;
+};
+
+static char *progname;
+
+static void usage()
+{
+    fprintf(stderr, "Usage: %s framework_config_file pipeline_config_file \n", progname);
+    fprintf(stderr, "\tframework_config_file: Framework config file that identifies where module directory, etc. is found.\n");
+    fprintf(stderr, "\tpipeline_config_file: Pipeline config file to validate.\n");
+}
+
+ValidatePipeline::ValidatePipeline()
+{
+}
+
+ValidatePipeline::~ValidatePipeline()
+{
+}
+
+/* Validate all of the pipelines in the given config file. 
+* This method does some basic parsing of the config file to learn
+* about the various pipelines that exist in the file.
+*/
+bool ValidatePipeline::isValid(const char *a_configPath) const
+{
+    bool failed = false;
+
+    std::ifstream in(a_configPath);
+    if (!in) {
+        fprintf(stdout, "Error opening pipeline config file: %s\n", a_configPath);
+    } else {
+        try {
+            Poco::XML::InputSource src(in);
+            Poco::XML::DOMParser parser;
+            // basic parsing
+            Poco::AutoPtr<Poco::XML::Document> xmlDoc = parser.parse(&src);
+
+            // must have at least one pipeline element
+            Poco::AutoPtr<Poco::XML::NodeList> pipelines = 
+                xmlDoc->getElementsByTagName(TskPipelineManager::PIPELINE_ELEMENT);
+
+            if (pipelines->length() == 0) {
+                fprintf(stdout, "No pipelines found in config file.\n");
+            } else {
+                // parse all pipelines in the config file
+                for (unsigned long i = 0; i < pipelines->length(); i++)
+                {
+                    Poco::XML::Node * pNode = pipelines->item(i);
+                    Poco::XML::Element* pElem = dynamic_cast<Poco::XML::Element*>(pNode);
+                    Poco::XML::DOMWriter writer;
+                    std::ostringstream pipelineXml;
+                    writer.writeNode(pipelineXml, pNode);
+
+                    std::string pipelineType = pElem->getAttribute(TskPipelineManager::PIPELINE_TYPE_ATTRIBUTE);
+
+                    TskPipeline * pipeline = 0;
+                    if (pipelineType == TskPipelineManager::FILE_ANALYSIS_PIPELINE_STR)
+                        pipeline = new TskFileAnalysisPipeline();
+                    else if (pipelineType == TskPipelineManager::REPORTING_PIPELINE_STR)
+                        pipeline = new TskReportPipeline();
+                    else {
+                        fprintf(stdout, "Unsupported pipeline type: %s\n", pipelineType.c_str());
+                        failed = true;
+                        continue;
+                    }
+
+                    try {
+                        pipeline->validate(pipelineXml.str());
+                    } catch (...) {
+                        fprintf(stdout, "Error parsing pipeline: %s\n", pElem->getAttribute(TskPipelineManager::PIPELINE_TYPE_ATTRIBUTE).c_str());
+                        failed = true;
+                    }
+                        delete pipeline;
+                }
+            }
+        } catch (Poco::XML::SAXParseException& ex) {
+            fprintf(stderr, "Error parsing pipeline config file: %s (%s)\n", a_configPath, ex.what());
+        }
+    }
+ 
+    // If any of the pipelines failed validation we return false
+    return failed ? false : true;
+}
+
+int main(int argc, char **argv)
+{
+    progname = argv[0];
+    if (argc != 3) {
+        usage();
+        return 1;
+    }
+    char *frameworkConfigPath = argv[1];
+    char *pipelineConfigPath = argv[2];
+
+    fprintf(stderr, "Validating %s\n", pipelineConfigPath);
+
+    // open the log temp file
+    Log log;
+    Poco::TemporaryFile filename;
+
+    log.open(filename.path().c_str());
+    TskServices::Instance().setLog(log);
+
+    std::string progDirPath = TskUtilities::getProgDir();
+
+    // Initialize properties based on the config file. Do this to shutdown noise in validation.
+    TskSystemPropertiesImpl systemProperties;
+    systemProperties.initialize(frameworkConfigPath);
+    TskServices::Instance().setSystemProperties(systemProperties);
+
+    SetSystemProperty(TskSystemProperties::PROG_DIR, progDirPath); 
+
+    ValidatePipeline vp;
+    bool valid = vp.isValid(pipelineConfigPath);
+    fprintf(stdout, "%s is %s\n", pipelineConfigPath, (valid ? "valid." : "invalid."));
+
+    // close the log file and dump content to stdout
+    log.close();
+
+#define MAX_BUF 1024
+    char buf[MAX_BUF];
+    std::ifstream fin(filename.path().c_str());
+
+    fprintf(stdout, "\nLog messages created during validation: \n");
+    while (fin.getline(buf, MAX_BUF)) {
+        fprintf(stdout, "%s\n", buf);
+    }
+    fin.close();
+
+    if (valid)
+        return 0;
+    else
+        return 1;
+}
diff --git a/framework/tsk/framework/TskVersionInfo.h b/framework/tsk/framework/TskVersionInfo.h
index 64e28c908425658afc9e6e34198d70d81392bf66..a37fb454cbac43a4fa475fa41031d8fe85a7407b 100755
--- a/framework/tsk/framework/TskVersionInfo.h
+++ b/framework/tsk/framework/TskVersionInfo.h
@@ -1,82 +1,82 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#ifndef _TSK_VERSIONINFO_H
-#define _TSK_VERSIONINFO_H
-
-#include "tsk/base/tsk_base.h"
-
-/** 
- * Class that allows us to determine framework version,
- * compiler version and build type (debug or release).
- */
-class TskVersionInfo
-{
-public:
-    enum BuildType
-    {
-        DEBUG,
-        RELEASE
-    };
-
-    enum Compiler
-    {
-        MSVC,
-        UNKNOWN
-    };
-
-    /**
-     * Returns whether the component was built in debug or release mode.
-     * Only applicable if built by MSVC compiler.
-     */
-    static BuildType getBuildType()
-    {
-#if defined _WIN32 && defined _DEBUG
-        return DEBUG;
-#else
-        return RELEASE;
-#endif
-    }
-    
-    /**
-     * Returned the compiler that was used to build the component.
-     */
-    static Compiler getCompiler()
-    {
-#if defined _WIN32
-        return MSVC;
-#else
-        return UNKNOWN;
-#endif
-    }
-
-    /**
-     * Returns the version number of the compiler.
-     * Initial implementation only supports MSVC compiler.
-     */
-    static int getCompilerVersion()
-    {
-#if defined _MSC_VER
-        return _MSC_VER;
-#else
-        return 0;
-#endif
-    }
-
-    /**
-     * Returns the version of the Sleuthkit framework the component was compiled with.
-     */
-    static int getFrameworkVersion()
-    {
-        return TSK_VERSION_NUM;
-    }
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#ifndef _TSK_VERSIONINFO_H
+#define _TSK_VERSIONINFO_H
+
+#include "tsk/base/tsk_base.h"
+
+/** 
+ * Class that allows us to determine framework version,
+ * compiler version and build type (debug or release).
+ */
+class TskVersionInfo
+{
+public:
+    enum BuildType
+    {
+        DEBUG,
+        RELEASE
+    };
+
+    enum Compiler
+    {
+        MSVC,
+        UNKNOWN
+    };
+
+    /**
+     * Returns whether the component was built in debug or release mode.
+     * Only applicable if built by MSVC compiler.
+     */
+    static BuildType getBuildType()
+    {
+#if defined _WIN32 && defined _DEBUG
+        return DEBUG;
+#else
+        return RELEASE;
+#endif
+    }
+    
+    /**
+     * Returned the compiler that was used to build the component.
+     */
+    static Compiler getCompiler()
+    {
+#if defined _WIN32
+        return MSVC;
+#else
+        return UNKNOWN;
+#endif
+    }
+
+    /**
+     * Returns the version number of the compiler.
+     * Initial implementation only supports MSVC compiler.
+     */
+    static int getCompilerVersion()
+    {
+#if defined _MSC_VER
+        return _MSC_VER;
+#else
+        return 0;
+#endif
+    }
+
+    /**
+     * Returns the version of the Sleuthkit framework the component was compiled with.
+     */
+    static int getFrameworkVersion()
+    {
+        return TSK_VERSION_NUM;
+    }
+};
+
+#endif
diff --git a/framework/tsk/framework/extraction/CarveExtract.h b/framework/tsk/framework/extraction/CarveExtract.h
index cc117c6c410c67c99c67042be704e711f50a9c50..4c419a13ad698786746a4cef2459abb941834f67 100755
--- a/framework/tsk/framework/extraction/CarveExtract.h
+++ b/framework/tsk/framework/extraction/CarveExtract.h
@@ -1,42 +1,42 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file CarveExtract.h
- * Contains the interface of the abstract CarveExtract class.
- */
-#ifndef _TSK_CARVEEXTRACT_H
-#define _TSK_CARVEEXTRACT_H
-
-#include "tsk/framework/services/TskImgDB.h"
-
-/**
- * Interface for class that will carve an unallocated sectors image file. The 
- * design assumes that the unallocated sectors image file was created by a 
- * CarvePrep implementation. 
- */
-class TSK_FRAMEWORK_API CarveExtract
-{
-public:
-    /**
-     * Virtual destructor to ensure derived class constructors are called
-     * polymorphically.
-     */
-    virtual ~CarveExtract() {}
-
-    /**
-     * Carve a specified unallocated sectors image file. 
-     *
-     * @param unallocImgId Id of the file to carve.
-     * @returns 1 on error. 
-     */
-    virtual int processFile(int unallocImgId) = 0;
-};
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file CarveExtract.h
+ * Contains the interface of the abstract CarveExtract class.
+ */
+#ifndef _TSK_CARVEEXTRACT_H
+#define _TSK_CARVEEXTRACT_H
+
+#include "tsk/framework/services/TskImgDB.h"
+
+/**
+ * Interface for class that will carve an unallocated sectors image file. The 
+ * design assumes that the unallocated sectors image file was created by a 
+ * CarvePrep implementation. 
+ */
+class TSK_FRAMEWORK_API CarveExtract
+{
+public:
+    /**
+     * Virtual destructor to ensure derived class constructors are called
+     * polymorphically.
+     */
+    virtual ~CarveExtract() {}
+
+    /**
+     * Carve a specified unallocated sectors image file. 
+     *
+     * @param unallocImgId Id of the file to carve.
+     * @returns 1 on error. 
+     */
+    virtual int processFile(int unallocImgId) = 0;
+};
+#endif
diff --git a/framework/tsk/framework/extraction/CarvePrep.h b/framework/tsk/framework/extraction/CarvePrep.h
index 95609a2a2ce244554c0d3943af04b87791126365..022d8293bdb2c833a71006a55ade6352bafed765 100755
--- a/framework/tsk/framework/extraction/CarvePrep.h
+++ b/framework/tsk/framework/extraction/CarvePrep.h
@@ -1,48 +1,48 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file CarvePrep.h
- * Contains the interface of the abstract CarvePrep class.
- */
-#ifndef _TSK_CARVE_PREP_H
-#define _TSK_CARVE_PREP_H
-
-#include "tsk/framework/services/TskImgDB.h"
-
-/**
- * Interface for class that prepares for later carving. 
- * CarvePrep is responsible for making unallocated sectors image files for 
- * later carving.  The implementation can choose to create 1 or dozens
- * of such files.  Refer to \ref fw_extract_carve for details,
- * but this class should get unallocated image IDs from TskImgDB,
- * populate the unalloc_alloc map in the database, and schedule
- * each unallocated image for later carving. 
- */
-class TSK_FRAMEWORK_API CarvePrep
-{
-public:
-    /**
-     * Virtual destructor to ensure derived class constructors are called
-     * polymorphically.
-     */
-    virtual ~CarvePrep(void) {}
-    
-    /**
-     * Make one or more unallocated sectors image files to carve. 
-     *
-     * @param a_toSchedule True if the scheduler should be called to queue
-     * up the output files or false if the files should be processed now.
-     * @returns 0 on success, 1 on error. 
-     */
-    virtual int processSectors(bool a_toSchedule) = 0;
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file CarvePrep.h
+ * Contains the interface of the abstract CarvePrep class.
+ */
+#ifndef _TSK_CARVE_PREP_H
+#define _TSK_CARVE_PREP_H
+
+#include "tsk/framework/services/TskImgDB.h"
+
+/**
+ * Interface for class that prepares for later carving. 
+ * CarvePrep is responsible for making unallocated sectors image files for 
+ * later carving.  The implementation can choose to create 1 or dozens
+ * of such files.  Refer to \ref fw_extract_carve for details,
+ * but this class should get unallocated image IDs from TskImgDB,
+ * populate the unalloc_alloc map in the database, and schedule
+ * each unallocated image for later carving. 
+ */
+class TSK_FRAMEWORK_API CarvePrep
+{
+public:
+    /**
+     * Virtual destructor to ensure derived class constructors are called
+     * polymorphically.
+     */
+    virtual ~CarvePrep(void) {}
+    
+    /**
+     * Make one or more unallocated sectors image files to carve. 
+     *
+     * @param a_toSchedule True if the scheduler should be called to queue
+     * up the output files or false if the files should be processed now.
+     * @returns 0 on success, 1 on error. 
+     */
+    virtual int processSectors(bool a_toSchedule) = 0;
+};
+
+#endif
diff --git a/framework/tsk/framework/extraction/TskAutoImpl.cpp b/framework/tsk/framework/extraction/TskAutoImpl.cpp
index 93946e8e6c543ecaaa3417a2642282b5fabbfe69..df0a3c1f81b54fb1be864a0e122d7c9fbef8a96c 100755
--- a/framework/tsk/framework/extraction/TskAutoImpl.cpp
+++ b/framework/tsk/framework/extraction/TskAutoImpl.cpp
@@ -1,438 +1,438 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#include <string>
-#include <sstream>
-#include <string.h>
-
-#include "TskAutoImpl.h"
-#include "tsk/framework/services/TskServices.h"
-
-#define TSK_SCHEMA_VER 1
-
-TSKAutoImpl::TSKAutoImpl() : m_db(TskServices::Instance().getImgDB()), m_numFilesSeen(0)
-{
-    m_curFsId = 0;
-    m_curVsId = 0;
-    m_vsSeen = false;
-    m_lastUpdateMsg = 0;
-
-    setVolFilterFlags((TSK_VS_PART_FLAG_ENUM)(TSK_VS_PART_FLAG_ALLOC | TSK_VS_PART_FLAG_UNALLOC));
-    setFileFilterFlags((TSK_FS_DIR_WALK_FLAG_ENUM)(TSK_FS_DIR_WALK_FLAG_ALLOC|TSK_FS_DIR_WALK_FLAG_UNALLOC));
-
-    // add the version to the DB
-    m_db.addToolInfo("Sleuth Kit", tsk_version_get_str()); 
-}
-
-TSKAutoImpl::~TSKAutoImpl()
-{
-}
-
-uint8_t TSKAutoImpl::openImage(TSK_IMG_INFO *a_img_info)
-{
-    m_curFsId = 0;
-    m_curVsId = 0;
-
-    return TskAuto::openImageHandle(a_img_info);
-}
-
-void
- TSKAutoImpl::closeImage()
-{
-    TskAuto::closeImage();
-}
-
-
-/**
- * Main method to call for this class after image has been opened as it takes care of the transactions.
- */
-uint8_t TSKAutoImpl::extractFiles() 
-{
-    m_db.begin();
-    uint8_t retval = findFilesInImg();  
-    commitAndSchedule();
-    return retval;
-}
-
-/**
-* Scan the image for file systems creating allocated volumes for file systems found
-* and unallocated volumes for areas in the image that do not contain file systems.
-* Will initially look for file system in first sect_count sectors. If a file system
-* is found then it will continue to process the remainder of the image for other
-* file systems.
-* 
-* @param sect_start Start looking for file systems starting at this sector.
-* @param sect_count The initial number of sectors to scan for file systems.
-* @return 0 on success, 1 on failure 
-*/
-uint8_t TSKAutoImpl::scanImgForFs(const uint64_t sect_start, const uint64_t sect_count)
-{
-    if (m_img_info == NULL)
-    {
-        LOGERROR(L"TSKAutoImpl::scanImgForFs - Image not open.");
-        return 1;
-    }
-
-    LOGINFO(L"TSKAutoImpl::scanImgForFs - Starting file system scan.");
-
-    // Initialize current offset to our starting byte location.
-    TSK_OFF_T current_offset = sect_start * m_img_info->sector_size;
-
-    TSK_OFF_T end_offset = current_offset + (sect_count * m_img_info->sector_size);
-
-    // Last offset keeps track of byte location where we last saw file system
-    // data. It gets initialized to our starting location.
-    TSK_OFF_T last_offset = current_offset;
-
-    while (current_offset < end_offset)
-    {
-        TSK_FS_INFO * fs_info;
-
-        if ((fs_info = tsk_fs_open_img(m_img_info, 
-                                       current_offset, 
-                                       TSK_FS_TYPE_DETECT)) == NULL)
-        {
-            // We didn't find a file system so we move on to the next sector.
-            current_offset += m_img_info->sector_size;
-        }
-        else
-        {
-            // We found a file system so we will continue to search for file
-            // systems beyond the initial sectors.
-            end_offset = m_img_info->size;
-
-            // If there is a gap between the location of this file system and
-            // where we last saw file system data, an unallocated volume entry
-            // needs to be created for the gap.
-            if (fs_info->offset > last_offset)
-            {
-                createDummyVolume(last_offset / m_img_info->sector_size,
-                                  (fs_info->offset - last_offset) / m_img_info->sector_size,
-                                  "Dummy volume for carving purposes",
-                                  TSK_VS_PART_FLAG_UNALLOC);
-            }
-
-            /* The call to findFilesInFs will take care of creating a
-             * dummy volume for the file system.*/
-            /* errors encountered during this phase will have been
-             * logged. */
-            findFilesInFs(fs_info);
-
-            // Move the current offset past the file system we just found.
-            current_offset += ((fs_info->block_count + 1) * fs_info->block_size);
-
-            // Update the last location we saw file system data.
-            last_offset = current_offset;
-
-            tsk_fs_close(fs_info);
-        }
-    }
-
-    // Finally, create a dummy unallocated volume for the area between the
-    // last offset and the end of the image.
-   if (last_offset < m_img_info->size)
-    {
-        createDummyVolume(last_offset / m_img_info->sector_size,
-            (m_img_info->size - last_offset) / m_img_info->sector_size,
-            "Dummy volume for carving purposes",
-            TSK_VS_PART_FLAG_UNALLOC);
-    }
-
-    LOGINFO(L"TSKAutoImpl::scanImgForFs - File system scan complete.");
-
-    return 0;
-}
-
-TSK_FILTER_ENUM TSKAutoImpl::filterVol(const TSK_VS_PART_INFO * a_vsPart)
-{
-    // flag that this image has a volume system
-    m_vsSeen = true;
-    m_db.addVolumeInfo(a_vsPart);
-
-    m_curVsId = a_vsPart->addr;
-
-    std::wstringstream msg;
-    msg << L"TSKAutoImpl::filterVol - Discovered " << a_vsPart->desc 
-        << L" partition (sectors " << a_vsPart->start << L"-" 
-        << ((a_vsPart->start + a_vsPart->len) - 1) << L")";
-    LOGINFO(msg.str());
-
-    // we only want to process the allocated volumes
-    if ((a_vsPart->flags & TSK_VS_PART_FLAG_ALLOC) == 0)
-        return TSK_FILTER_SKIP;
-
-    return TSK_FILTER_CONT;
-}
-
-
-TSK_FILTER_ENUM TSKAutoImpl::filterFs(TSK_FS_INFO * a_fsInfo)
-{
-    // add a volume entry if there is no file system
-    if (m_vsSeen == false) 
-    {
-        TSK_DADDR_T start_sect = a_fsInfo->offset / a_fsInfo->img_info->sector_size;
-        TSK_DADDR_T end_sect = start_sect + 
-            ((a_fsInfo->block_count * a_fsInfo->block_size) / a_fsInfo->img_info->sector_size);
-
-        createDummyVolume(start_sect, (end_sect - start_sect) + 1,
-                          "Dummy volume for file system",
-                          TSK_VS_PART_FLAG_ALLOC);
-    }
-
-    m_curFsId++;
-    m_db.addFsInfo(m_curVsId, m_curFsId, a_fsInfo);
-
-    /* Process the root directory so that its contents are added to
-     * the DB.  We won't see it during the dir_walk. */
-    TSK_FS_FILE *fs_file = tsk_fs_file_open(a_fsInfo, NULL, "/");
-    if (fs_file != NULL)
-    {
-        processFile(fs_file, "\\");
-    }
-
-    // make sure that flags are set to get all files -- we need this to
-    // find parent directory
-    setFileFilterFlags((TSK_FS_DIR_WALK_FLAG_ENUM)
-        (TSK_FS_DIR_WALK_FLAG_ALLOC | TSK_FS_DIR_WALK_FLAG_UNALLOC));
-
-    std::wstringstream msg;
-    msg << L"TSKAutoImpl::filterFs - Discovered " << tsk_fs_type_toname(a_fsInfo->ftype) 
-        << L" file system at offset " << a_fsInfo->offset << L" with Id : " << m_curFsId;
-    LOGINFO(msg.str());
-
-    return TSK_FILTER_CONT;
-}
-
-/* Insert the file data into the file table.
- * @returns OK on success, COR on error because of the data (and we should keep on processing more files), 
- * and ERR because of system error (and we shoudl proabably stop processing)
- */
-TSK_RETVAL_ENUM TSKAutoImpl::insertFileData(TSK_FS_FILE * a_fsFile,
-    const TSK_FS_ATTR * a_fsAttr, const char * a_path, uint64_t & fileId)
-{
-    int type = TSK_FS_ATTR_TYPE_NOT_FOUND;
-    int idx = 0;
-    fileId = 0;
-
-    if (a_fsFile->name == NULL) {
-        LOGERROR(L"TSKAutoImpl::insertFileData name value is NULL");
-        return TSK_COR;
-    }
-
-    size_t attr_len = 0;
-    if (a_fsAttr) {
-        type = a_fsAttr->type;
-        idx = a_fsAttr->id;
-        if (a_fsAttr->name)
-        {
-            if ((a_fsAttr->type != TSK_FS_ATTR_TYPE_NTFS_IDXROOT) ||
-                (strcmp(a_fsAttr->name, "$I30") != 0))
-            {
-                attr_len = strlen(a_fsAttr->name);
-            }
-        }
-    }
-
-    // clean up special characters in name before we insert
-    size_t len = strlen(a_fsFile->name->name);
-    char *name;
-    size_t nlen = 2 * (len + attr_len);
-    if ((name = (char *) malloc(nlen + 1)) == NULL)
-    {
-        LOGERROR(L"Error allocating memory");
-        return TSK_ERR;
-    }
-    memset(name, 0, nlen+1);
-
-    size_t j = 0;
-    for (size_t i = 0; i < len && j < nlen; i++)
-    {
-        // ' is special in SQLite
-        if (a_fsFile->name->name[i] == '\'')
-        {
-            name[j++] = '\'';
-            name[j++] = '\'';
-        }
-        else
-        {
-            name[j++] = a_fsFile->name->name[i];
-        }
-    }
-
-    // Add the attribute name
-    if (attr_len > 0) {
-        name[j++] = ':';
-
-        for (unsigned i = 0; i < attr_len && j < nlen; i++) {
-            // ' is special in SQLite
-            if (a_fsAttr->name[i] == '\'')
-            {
-                name[j++] = '\'';
-                name[j++] = '\'';
-            }
-            else
-            {
-                name[j++] = a_fsAttr->name[i];
-            }
-        }
-    }
-
-    int result = m_db.addFsFileInfo(m_curFsId, a_fsFile, name, type, idx, fileId, a_path);
-    free(name);
-
-    // Message was already logged
-    if (result) {
-        return TSK_COR;
-    }
-    
-    Scheduler::task_struct task;
-    task.task = Scheduler::FileAnalysis;
-    task.id = fileId;
-    m_filesToSchedule.push(task);
-
-    return TSK_OK;
-}
-
-
-/* Based on the error handling design, we only return OK or STOP.  All
- * other errors have been handled, so we don't return ERROR to TSK. */
-TSK_RETVAL_ENUM TSKAutoImpl::processFile(TSK_FS_FILE * a_fsFile, const char * a_path)
-{
-    // skip the . and .. dirs
-    if (isDotDir(a_fsFile) == 1)
-    {
-        return TSK_OK;
-    }
-
-    TSK_RETVAL_ENUM retval;
-    // process the attributes if there are more than 1
-    if (tsk_fs_file_attr_getsize(a_fsFile) == 0)
-    {
-        uint64_t fileId;
-        // If COR is returned, then keep on going. 
-        if (insertFileData(a_fsFile, NULL, a_path, fileId) == TSK_ERR) {
-            retval = TSK_STOP;
-        }
-        else {
-            m_numFilesSeen++;
-            retval = TSK_OK;
-        }
-    }
-    else
-    {
-        retval = processAttributes(a_fsFile, a_path);
-    }
-
-    time_t timeNow = time(NULL);
-    if ((timeNow - m_lastUpdateMsg) > 3600)
-    {
-        m_lastUpdateMsg = timeNow;
-        std::wstringstream msg;
-        msg << L"TSKAutoImpl::processFile : Processed " << m_numFilesSeen << " files.";
-        LOGINFO(msg.str());
-    }
-
-    if (m_filesToSchedule.size() > m_numOfFilesToQueue) {
-        commitAndSchedule();
-        m_db.begin();
-    }
-
-    return retval;
-}
-
-/**
- * commits the open transaction and schedules the files that
- * were queued up as being part of that transaction.
- * Does not create a new transaction.
- */
-void TSKAutoImpl::commitAndSchedule()
-{
-    m_db.commit();
-
-    while (m_filesToSchedule.size() > 0) {
-        Scheduler::task_struct &task = m_filesToSchedule.front();
-        if (TskServices::Instance().getScheduler().schedule(task)) {
-            LOGERROR(L"Error adding file for scheduling");
-        }
-        m_filesToSchedule.pop();
-    }
-}
-
-uint8_t TSKAutoImpl::handleError()
-{
-    const char * tskMsg = tsk_error_get();
-
-    // @@@ Possibly test tsk_errno to determine how the message should be logged.
-    if (tskMsg != NULL)
-    {
-        std::wstringstream msg;
-        msg << L"TskAutoImpl::handleError " << tsk_error_get();
-
-        LOGWARN(msg.str());
-    }
-    return 0;
-}
-
-
-
-/* Based on the error handling design, we only return OK or STOP.  All
- * other errors have been handled, so we don't return ERROR to TSK. */
-TSK_RETVAL_ENUM TSKAutoImpl::processAttribute(TSK_FS_FILE * a_fsFile,
-    const TSK_FS_ATTR * a_fsAttr, const char * a_path)
-{
-    uint64_t mFileId = 0;
-
-    // add the file metadata for the default attribute type
-    if (isDefaultType(a_fsFile, a_fsAttr))
-    {
-        // if COR is returned, then keep on going.
-        if (insertFileData(a_fsAttr->fs_file, a_fsAttr, a_path, mFileId) == TSK_ERR)
-            return TSK_STOP;
-    }
-
-    // add the block map, if the file is non-resident
-    if (isNonResident(a_fsAttr))
-    {
-        TSK_FS_ATTR_RUN *run;
-        int count = 0;
-        for (run = a_fsAttr->nrd.run; run != NULL; run = run->next)
-        {
-            // ignore sparse blocks
-            if (run->flags & TSK_FS_ATTR_RUN_FLAG_SPARSE)
-                continue;
-            
-            if (m_db.addFsBlockInfo(m_curFsId, mFileId, count++, run->addr, run->len))
-            {
-                // this error should have been logged.
-                // we'll continue to try processing the file
-            }
-        }
-    }
-     
-    return TSK_OK;
-}
-
-void TSKAutoImpl::createDummyVolume(const TSK_DADDR_T sect_start, const TSK_DADDR_T sect_len, 
-                                    const char * desc, TSK_VS_PART_FLAG_ENUM flags)
-{
-    m_curVsId++;
-
-    TSK_VS_PART_INFO part;
-    part.addr = m_curVsId;
-    part.len = sect_len;
-    part.start = sect_start;
-    part.flags = flags;
-    part.desc = (char *)desc; // remove the cast when TSK_VS_PART_INFO.desc is const char *
-
-    if (m_db.addVolumeInfo(&part))
-    {
-        LOGERROR(L"TSKAutoImpl::createDummyVolume - Error creating volume.");
-    }
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#include <string>
+#include <sstream>
+#include <string.h>
+
+#include "TskAutoImpl.h"
+#include "tsk/framework/services/TskServices.h"
+
+#define TSK_SCHEMA_VER 1
+
+TSKAutoImpl::TSKAutoImpl() : m_db(TskServices::Instance().getImgDB()), m_numFilesSeen(0)
+{
+    m_curFsId = 0;
+    m_curVsId = 0;
+    m_vsSeen = false;
+    m_lastUpdateMsg = 0;
+
+    setVolFilterFlags((TSK_VS_PART_FLAG_ENUM)(TSK_VS_PART_FLAG_ALLOC | TSK_VS_PART_FLAG_UNALLOC));
+    setFileFilterFlags((TSK_FS_DIR_WALK_FLAG_ENUM)(TSK_FS_DIR_WALK_FLAG_ALLOC|TSK_FS_DIR_WALK_FLAG_UNALLOC));
+
+    // add the version to the DB
+    m_db.addToolInfo("Sleuth Kit", tsk_version_get_str()); 
+}
+
+TSKAutoImpl::~TSKAutoImpl()
+{
+}
+
+uint8_t TSKAutoImpl::openImage(TSK_IMG_INFO *a_img_info)
+{
+    m_curFsId = 0;
+    m_curVsId = 0;
+
+    return TskAuto::openImageHandle(a_img_info);
+}
+
+void
+ TSKAutoImpl::closeImage()
+{
+    TskAuto::closeImage();
+}
+
+
+/**
+ * Main method to call for this class after image has been opened as it takes care of the transactions.
+ */
+uint8_t TSKAutoImpl::extractFiles() 
+{
+    m_db.begin();
+    uint8_t retval = findFilesInImg();  
+    commitAndSchedule();
+    return retval;
+}
+
+/**
+* Scan the image for file systems creating allocated volumes for file systems found
+* and unallocated volumes for areas in the image that do not contain file systems.
+* Will initially look for file system in first sect_count sectors. If a file system
+* is found then it will continue to process the remainder of the image for other
+* file systems.
+* 
+* @param sect_start Start looking for file systems starting at this sector.
+* @param sect_count The initial number of sectors to scan for file systems.
+* @return 0 on success, 1 on failure 
+*/
+uint8_t TSKAutoImpl::scanImgForFs(const uint64_t sect_start, const uint64_t sect_count)
+{
+    if (m_img_info == NULL)
+    {
+        LOGERROR(L"TSKAutoImpl::scanImgForFs - Image not open.");
+        return 1;
+    }
+
+    LOGINFO(L"TSKAutoImpl::scanImgForFs - Starting file system scan.");
+
+    // Initialize current offset to our starting byte location.
+    TSK_OFF_T current_offset = sect_start * m_img_info->sector_size;
+
+    TSK_OFF_T end_offset = current_offset + (sect_count * m_img_info->sector_size);
+
+    // Last offset keeps track of byte location where we last saw file system
+    // data. It gets initialized to our starting location.
+    TSK_OFF_T last_offset = current_offset;
+
+    while (current_offset < end_offset)
+    {
+        TSK_FS_INFO * fs_info;
+
+        if ((fs_info = tsk_fs_open_img(m_img_info, 
+                                       current_offset, 
+                                       TSK_FS_TYPE_DETECT)) == NULL)
+        {
+            // We didn't find a file system so we move on to the next sector.
+            current_offset += m_img_info->sector_size;
+        }
+        else
+        {
+            // We found a file system so we will continue to search for file
+            // systems beyond the initial sectors.
+            end_offset = m_img_info->size;
+
+            // If there is a gap between the location of this file system and
+            // where we last saw file system data, an unallocated volume entry
+            // needs to be created for the gap.
+            if (fs_info->offset > last_offset)
+            {
+                createDummyVolume(last_offset / m_img_info->sector_size,
+                                  (fs_info->offset - last_offset) / m_img_info->sector_size,
+                                  "Dummy volume for carving purposes",
+                                  TSK_VS_PART_FLAG_UNALLOC);
+            }
+
+            /* The call to findFilesInFs will take care of creating a
+             * dummy volume for the file system.*/
+            /* errors encountered during this phase will have been
+             * logged. */
+            findFilesInFs(fs_info);
+
+            // Move the current offset past the file system we just found.
+            current_offset += ((fs_info->block_count + 1) * fs_info->block_size);
+
+            // Update the last location we saw file system data.
+            last_offset = current_offset;
+
+            tsk_fs_close(fs_info);
+        }
+    }
+
+    // Finally, create a dummy unallocated volume for the area between the
+    // last offset and the end of the image.
+   if (last_offset < m_img_info->size)
+    {
+        createDummyVolume(last_offset / m_img_info->sector_size,
+            (m_img_info->size - last_offset) / m_img_info->sector_size,
+            "Dummy volume for carving purposes",
+            TSK_VS_PART_FLAG_UNALLOC);
+    }
+
+    LOGINFO(L"TSKAutoImpl::scanImgForFs - File system scan complete.");
+
+    return 0;
+}
+
+TSK_FILTER_ENUM TSKAutoImpl::filterVol(const TSK_VS_PART_INFO * a_vsPart)
+{
+    // flag that this image has a volume system
+    m_vsSeen = true;
+    m_db.addVolumeInfo(a_vsPart);
+
+    m_curVsId = a_vsPart->addr;
+
+    std::wstringstream msg;
+    msg << L"TSKAutoImpl::filterVol - Discovered " << a_vsPart->desc 
+        << L" partition (sectors " << a_vsPart->start << L"-" 
+        << ((a_vsPart->start + a_vsPart->len) - 1) << L")";
+    LOGINFO(msg.str());
+
+    // we only want to process the allocated volumes
+    if ((a_vsPart->flags & TSK_VS_PART_FLAG_ALLOC) == 0)
+        return TSK_FILTER_SKIP;
+
+    return TSK_FILTER_CONT;
+}
+
+
+TSK_FILTER_ENUM TSKAutoImpl::filterFs(TSK_FS_INFO * a_fsInfo)
+{
+    // add a volume entry if there is no file system
+    if (m_vsSeen == false) 
+    {
+        TSK_DADDR_T start_sect = a_fsInfo->offset / a_fsInfo->img_info->sector_size;
+        TSK_DADDR_T end_sect = start_sect + 
+            ((a_fsInfo->block_count * a_fsInfo->block_size) / a_fsInfo->img_info->sector_size);
+
+        createDummyVolume(start_sect, (end_sect - start_sect) + 1,
+                          "Dummy volume for file system",
+                          TSK_VS_PART_FLAG_ALLOC);
+    }
+
+    m_curFsId++;
+    m_db.addFsInfo(m_curVsId, m_curFsId, a_fsInfo);
+
+    /* Process the root directory so that its contents are added to
+     * the DB.  We won't see it during the dir_walk. */
+    TSK_FS_FILE *fs_file = tsk_fs_file_open(a_fsInfo, NULL, "/");
+    if (fs_file != NULL)
+    {
+        processFile(fs_file, "\\");
+    }
+
+    // make sure that flags are set to get all files -- we need this to
+    // find parent directory
+    setFileFilterFlags((TSK_FS_DIR_WALK_FLAG_ENUM)
+        (TSK_FS_DIR_WALK_FLAG_ALLOC | TSK_FS_DIR_WALK_FLAG_UNALLOC));
+
+    std::wstringstream msg;
+    msg << L"TSKAutoImpl::filterFs - Discovered " << tsk_fs_type_toname(a_fsInfo->ftype) 
+        << L" file system at offset " << a_fsInfo->offset << L" with Id : " << m_curFsId;
+    LOGINFO(msg.str());
+
+    return TSK_FILTER_CONT;
+}
+
+/* Insert the file data into the file table.
+ * @returns OK on success, COR on error because of the data (and we should keep on processing more files), 
+ * and ERR because of system error (and we shoudl proabably stop processing)
+ */
+TSK_RETVAL_ENUM TSKAutoImpl::insertFileData(TSK_FS_FILE * a_fsFile,
+    const TSK_FS_ATTR * a_fsAttr, const char * a_path, uint64_t & fileId)
+{
+    int type = TSK_FS_ATTR_TYPE_NOT_FOUND;
+    int idx = 0;
+    fileId = 0;
+
+    if (a_fsFile->name == NULL) {
+        LOGERROR(L"TSKAutoImpl::insertFileData name value is NULL");
+        return TSK_COR;
+    }
+
+    size_t attr_len = 0;
+    if (a_fsAttr) {
+        type = a_fsAttr->type;
+        idx = a_fsAttr->id;
+        if (a_fsAttr->name)
+        {
+            if ((a_fsAttr->type != TSK_FS_ATTR_TYPE_NTFS_IDXROOT) ||
+                (strcmp(a_fsAttr->name, "$I30") != 0))
+            {
+                attr_len = strlen(a_fsAttr->name);
+            }
+        }
+    }
+
+    // clean up special characters in name before we insert
+    size_t len = strlen(a_fsFile->name->name);
+    char *name;
+    size_t nlen = 2 * (len + attr_len);
+    if ((name = (char *) malloc(nlen + 1)) == NULL)
+    {
+        LOGERROR(L"Error allocating memory");
+        return TSK_ERR;
+    }
+    memset(name, 0, nlen+1);
+
+    size_t j = 0;
+    for (size_t i = 0; i < len && j < nlen; i++)
+    {
+        // ' is special in SQLite
+        if (a_fsFile->name->name[i] == '\'')
+        {
+            name[j++] = '\'';
+            name[j++] = '\'';
+        }
+        else
+        {
+            name[j++] = a_fsFile->name->name[i];
+        }
+    }
+
+    // Add the attribute name
+    if (attr_len > 0) {
+        name[j++] = ':';
+
+        for (unsigned i = 0; i < attr_len && j < nlen; i++) {
+            // ' is special in SQLite
+            if (a_fsAttr->name[i] == '\'')
+            {
+                name[j++] = '\'';
+                name[j++] = '\'';
+            }
+            else
+            {
+                name[j++] = a_fsAttr->name[i];
+            }
+        }
+    }
+
+    int result = m_db.addFsFileInfo(m_curFsId, a_fsFile, name, type, idx, fileId, a_path);
+    free(name);
+
+    // Message was already logged
+    if (result) {
+        return TSK_COR;
+    }
+    
+    Scheduler::task_struct task;
+    task.task = Scheduler::FileAnalysis;
+    task.id = fileId;
+    m_filesToSchedule.push(task);
+
+    return TSK_OK;
+}
+
+
+/* Based on the error handling design, we only return OK or STOP.  All
+ * other errors have been handled, so we don't return ERROR to TSK. */
+TSK_RETVAL_ENUM TSKAutoImpl::processFile(TSK_FS_FILE * a_fsFile, const char * a_path)
+{
+    // skip the . and .. dirs
+    if (isDotDir(a_fsFile) == 1)
+    {
+        return TSK_OK;
+    }
+
+    TSK_RETVAL_ENUM retval;
+    // process the attributes if there are more than 1
+    if (tsk_fs_file_attr_getsize(a_fsFile) == 0)
+    {
+        uint64_t fileId;
+        // If COR is returned, then keep on going. 
+        if (insertFileData(a_fsFile, NULL, a_path, fileId) == TSK_ERR) {
+            retval = TSK_STOP;
+        }
+        else {
+            m_numFilesSeen++;
+            retval = TSK_OK;
+        }
+    }
+    else
+    {
+        retval = processAttributes(a_fsFile, a_path);
+    }
+
+    time_t timeNow = time(NULL);
+    if ((timeNow - m_lastUpdateMsg) > 3600)
+    {
+        m_lastUpdateMsg = timeNow;
+        std::wstringstream msg;
+        msg << L"TSKAutoImpl::processFile : Processed " << m_numFilesSeen << " files.";
+        LOGINFO(msg.str());
+    }
+
+    if (m_filesToSchedule.size() > m_numOfFilesToQueue) {
+        commitAndSchedule();
+        m_db.begin();
+    }
+
+    return retval;
+}
+
+/**
+ * commits the open transaction and schedules the files that
+ * were queued up as being part of that transaction.
+ * Does not create a new transaction.
+ */
+void TSKAutoImpl::commitAndSchedule()
+{
+    m_db.commit();
+
+    while (m_filesToSchedule.size() > 0) {
+        Scheduler::task_struct &task = m_filesToSchedule.front();
+        if (TskServices::Instance().getScheduler().schedule(task)) {
+            LOGERROR(L"Error adding file for scheduling");
+        }
+        m_filesToSchedule.pop();
+    }
+}
+
+uint8_t TSKAutoImpl::handleError()
+{
+    const char * tskMsg = tsk_error_get();
+
+    // @@@ Possibly test tsk_errno to determine how the message should be logged.
+    if (tskMsg != NULL)
+    {
+        std::wstringstream msg;
+        msg << L"TskAutoImpl::handleError " << tsk_error_get();
+
+        LOGWARN(msg.str());
+    }
+    return 0;
+}
+
+
+
+/* Based on the error handling design, we only return OK or STOP.  All
+ * other errors have been handled, so we don't return ERROR to TSK. */
+TSK_RETVAL_ENUM TSKAutoImpl::processAttribute(TSK_FS_FILE * a_fsFile,
+    const TSK_FS_ATTR * a_fsAttr, const char * a_path)
+{
+    uint64_t mFileId = 0;
+
+    // add the file metadata for the default attribute type
+    if (isDefaultType(a_fsFile, a_fsAttr))
+    {
+        // if COR is returned, then keep on going.
+        if (insertFileData(a_fsAttr->fs_file, a_fsAttr, a_path, mFileId) == TSK_ERR)
+            return TSK_STOP;
+    }
+
+    // add the block map, if the file is non-resident
+    if (isNonResident(a_fsAttr))
+    {
+        TSK_FS_ATTR_RUN *run;
+        int count = 0;
+        for (run = a_fsAttr->nrd.run; run != NULL; run = run->next)
+        {
+            // ignore sparse blocks
+            if (run->flags & TSK_FS_ATTR_RUN_FLAG_SPARSE)
+                continue;
+            
+            if (m_db.addFsBlockInfo(m_curFsId, mFileId, count++, run->addr, run->len))
+            {
+                // this error should have been logged.
+                // we'll continue to try processing the file
+            }
+        }
+    }
+     
+    return TSK_OK;
+}
+
+void TSKAutoImpl::createDummyVolume(const TSK_DADDR_T sect_start, const TSK_DADDR_T sect_len, 
+                                    const char * desc, TSK_VS_PART_FLAG_ENUM flags)
+{
+    m_curVsId++;
+
+    TSK_VS_PART_INFO part;
+    part.addr = m_curVsId;
+    part.len = sect_len;
+    part.start = sect_start;
+    part.flags = flags;
+    part.desc = (char *)desc; // remove the cast when TSK_VS_PART_INFO.desc is const char *
+
+    if (m_db.addVolumeInfo(&part))
+    {
+        LOGERROR(L"TSKAutoImpl::createDummyVolume - Error creating volume.");
+    }
+}
diff --git a/framework/tsk/framework/extraction/TskAutoImpl.h b/framework/tsk/framework/extraction/TskAutoImpl.h
index 042674306470c77a3414bd037f199fa6f3573b26..12b47a4aacff6dedf747419cfb13e268790015f4 100755
--- a/framework/tsk/framework/extraction/TskAutoImpl.h
+++ b/framework/tsk/framework/extraction/TskAutoImpl.h
@@ -1,70 +1,70 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#include "tsk/framework/framework_i.h"
-
-#ifndef _TSK_AUTO_IMPL_H
-#define _TSK_AUTO_IMPL_H
-
-#ifdef __cplusplus
-
-// Include the other TSK header files
-#include "tsk/libtsk.h"
-#include "tsk/framework/services/TskImgDB.h"
-#include "tsk/framework/services/Scheduler.h"
-#include <map>
-#include <string>
-#include <queue>
-
-/** 
- * Implements TskAuto and is used to analyze the data in a disk image
- * and populate TskImgDB with the results.  Call extractFiles() after
- * image has been opened.
- * Will queue up files and submit them after m_numOfFilesToQueue files
- * are added to the queue.
- */
-class TSK_FRAMEWORK_API TSKAutoImpl:public TskAuto {
-public:
-    TSKAutoImpl();
-    virtual ~ TSKAutoImpl();
-
-    virtual uint8_t openImage(TSK_IMG_INFO *);
-    virtual void closeImage();
-
-    virtual TSK_FILTER_ENUM filterVol(const TSK_VS_PART_INFO * vs_part);
-    virtual TSK_FILTER_ENUM filterFs(TSK_FS_INFO * fs_info);
-    virtual TSK_RETVAL_ENUM processFile(TSK_FS_FILE * fs_file, const char *path);
-    virtual uint8_t handleError();
-    uint8_t extractFiles();
-    uint8_t scanImgForFs(const uint64_t sect_start, const uint64_t sect_count = 1024);
-
-private:
-    TskImgDB &m_db;
-    int m_curFsId;
-    int m_curVsId;
-    bool m_vsSeen;
-    uint64_t m_numFilesSeen;
-    time_t m_lastUpdateMsg;
-    std::queue<Scheduler::task_struct> m_filesToSchedule;   ///< Scheduler tasks to submit once transaction is commited
-    static const unsigned int m_numOfFilesToQueue = 1000;    ///< max number of files to queue up in a transaction before commiting
-
-    TSK_RETVAL_ENUM insertFileData(TSK_FS_FILE * fs_file,
-        const TSK_FS_ATTR *, const char *path, uint64_t & fileId);
-    TSK_RETVAL_ENUM insertBlockData(const TSK_FS_ATTR * fs_attr);
-    virtual TSK_RETVAL_ENUM processAttribute(TSK_FS_FILE *,
-        const TSK_FS_ATTR * fs_attr, const char *path);
-    void createDummyVolume(const TSK_DADDR_T sect_start, const TSK_DADDR_T sect_len, 
-                           const char * desc, TSK_VS_PART_FLAG_ENUM flags);
-    void commitAndSchedule();
-};
-
-#endif
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#include "tsk/framework/framework_i.h"
+
+#ifndef _TSK_AUTO_IMPL_H
+#define _TSK_AUTO_IMPL_H
+
+#ifdef __cplusplus
+
+// Include the other TSK header files
+#include "tsk/libtsk.h"
+#include "tsk/framework/services/TskImgDB.h"
+#include "tsk/framework/services/Scheduler.h"
+#include <map>
+#include <string>
+#include <queue>
+
+/** 
+ * Implements TskAuto and is used to analyze the data in a disk image
+ * and populate TskImgDB with the results.  Call extractFiles() after
+ * image has been opened.
+ * Will queue up files and submit them after m_numOfFilesToQueue files
+ * are added to the queue.
+ */
+class TSK_FRAMEWORK_API TSKAutoImpl:public TskAuto {
+public:
+    TSKAutoImpl();
+    virtual ~ TSKAutoImpl();
+
+    virtual uint8_t openImage(TSK_IMG_INFO *);
+    virtual void closeImage();
+
+    virtual TSK_FILTER_ENUM filterVol(const TSK_VS_PART_INFO * vs_part);
+    virtual TSK_FILTER_ENUM filterFs(TSK_FS_INFO * fs_info);
+    virtual TSK_RETVAL_ENUM processFile(TSK_FS_FILE * fs_file, const char *path);
+    virtual uint8_t handleError();
+    uint8_t extractFiles();
+    uint8_t scanImgForFs(const uint64_t sect_start, const uint64_t sect_count = 1024);
+
+private:
+    TskImgDB &m_db;
+    int m_curFsId;
+    int m_curVsId;
+    bool m_vsSeen;
+    uint64_t m_numFilesSeen;
+    time_t m_lastUpdateMsg;
+    std::queue<Scheduler::task_struct> m_filesToSchedule;   ///< Scheduler tasks to submit once transaction is commited
+    static const unsigned int m_numOfFilesToQueue = 1000;    ///< max number of files to queue up in a transaction before commiting
+
+    TSK_RETVAL_ENUM insertFileData(TSK_FS_FILE * fs_file,
+        const TSK_FS_ATTR *, const char *path, uint64_t & fileId);
+    TSK_RETVAL_ENUM insertBlockData(const TSK_FS_ATTR * fs_attr);
+    virtual TSK_RETVAL_ENUM processAttribute(TSK_FS_FILE *,
+        const TSK_FS_ATTR * fs_attr, const char *path);
+    void createDummyVolume(const TSK_DADDR_T sect_start, const TSK_DADDR_T sect_len, 
+                           const char * desc, TSK_VS_PART_FLAG_ENUM flags);
+    void commitAndSchedule();
+};
+
+#endif
+
+#endif
diff --git a/framework/tsk/framework/extraction/TskCarveExtractScalpel.cpp b/framework/tsk/framework/extraction/TskCarveExtractScalpel.cpp
index bd878f78f03dcd3e28a99e783ce188d81377bc6e..3bea5f0d364e6cb7e3032b5e324dbd5918399fbc 100644
--- a/framework/tsk/framework/extraction/TskCarveExtractScalpel.cpp
+++ b/framework/tsk/framework/extraction/TskCarveExtractScalpel.cpp
@@ -1,386 +1,386 @@
-/*
- *
- *  The Sleuth Kit
- *
- *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- *  reserved.
- *
- *  This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskCarveExtractScalpel.cpp
- * Contains the implementation of the TskCarveExtractScalpel class.
- */
-
-// Include the class definition first to ensure it does not depend on subsequent includes in this file.
-#include "TskCarveExtractScalpel.h"
-
-// TSK Framework includes
-#include "tsk/framework/services/TskServices.h"
-#include "tsk/framework/services/TskImgDB.h"
-#include "tsk/framework/utilities/TskUtilities.h"
-#include "tsk/framework/utilities/UnallocRun.h"
-#include "tsk/framework/utilities/TskException.h"
-
-// Poco includes
-#include "Poco/Path.h"
-#include "Poco/File.h"
-#include "Poco/Process.h"
-#include "Poco/Pipe.h"
-#include "Poco/PipeStream.h"
-#include "Poco/FileStream.h"
-#include "Poco/StreamCopier.h"
-#include "Poco/StringTokenizer.h"
-#include "Poco/Exception.h"
-
-// C/C++ library includes
-#include <sstream>
-#include <fstream>
-#include <cstdlib>
-#include <vector>
-#include <algorithm>
-#include <memory>
-
-namespace
-{
-#ifdef TSK_WIN32
-    const std::string SCALPEL_EXE_FILE_NAME = "scalpel.exe";
-#else
-    const std::string SCALPEL_EXE_FILE_NAME = "scalpel";
-#endif
-    const std::string CARVED_FILES_FOLDER = "CarvedFiles";
-    const std::string SCALPEL_RESULTS_FILE_NAME = "audit.txt";
-    const std::string STD_OUT_DUMP_FILE_NAME = "stdout.txt";
-    const std::string STD_ERR_DUMP_FILE_NAME = "stderr.txt";
-}
-
-int TskCarveExtractScalpel::processFile(int unallocImgId)
-{
-    TskImgDB *imgDB = NULL; 
-    try
-    {
-        imgDB = &TskServices::Instance().getImgDB();
-
-        // Get the input folder path. The file to carve resides in a subdirectory of the carve prep output folder. The name of the subdirectory is the unallocated image file id.
-        std::string carvePrepOutputPath = GetSystemProperty("CARVE_DIR");
-        if (!Poco::File(carvePrepOutputPath).exists())
-        {
-            std::stringstream msg;
-            msg << "TskCarveExtractScalpel::processFile : specified carve prep output folder '" << carvePrepOutputPath << "' does not exist";
-            throw TskException(msg.str());
-        }
-        std::stringstream inputFolderPathBuilder; 
-        inputFolderPathBuilder << carvePrepOutputPath << Poco::Path::separator() << unallocImgId;
-    
-        // Get the input file name and construct the input file path. All of the files to carve have the same name.
-        std::string carvePrepOutputFileName = GetSystemProperty("UNALLOC_SECTORS_IMG_FILE_NAME");
-        std::stringstream unallocImgFilePathBuilder;
-        unallocImgFilePathBuilder << inputFolderPathBuilder.str() <<  Poco::Path::separator() << carvePrepOutputFileName;
-        Poco::File unallocImgFile(unallocImgFilePathBuilder.str());
-
-        if (!unallocImgFile.exists())
-        {
-            std::stringstream msg;
-            msg << "TskCarveExtractScalpel::processFile : did not find unalloc img file number " << unallocImgId << " at '" << unallocImgFilePathBuilder.str() << "'";
-            throw TskException(msg.str());
-        }
-
-        if (unallocImgFile.getSize() > static_cast<Poco::File::FileSize>(0))
-        {
-            // Attempt to carve the file, storing the carved files in a subdirectory of the input folder and the Scalpel console output in the input folder.
-            // The console output is placed in the input folder rather than the output folder because Scalpel will only write to an empty directory.
-            std::stringstream outputFolderPath;
-            outputFolderPath << inputFolderPathBuilder.str() << Poco::Path::separator() << CARVED_FILES_FOLDER;
-            std::stringstream stdOutFilePath;
-            stdOutFilePath << inputFolderPathBuilder.str() << Poco::Path::separator() << STD_OUT_DUMP_FILE_NAME;
-            std::stringstream stdErrFilePath;
-            stdErrFilePath << inputFolderPathBuilder.str() << Poco::Path::separator() << STD_ERR_DUMP_FILE_NAME;
-            carveFile(unallocImgFilePathBuilder.str(), outputFolderPath.str(), stdOutFilePath.str(), stdErrFilePath.str());
-
-            // Scalpel lists any files it carves out in a results file. Use the file list to add the files to the image DB and copy them to file storage.
-            std::stringstream resultsFilePath;
-            resultsFilePath << outputFolderPath.str() << Poco::Path::separator() << SCALPEL_RESULTS_FILE_NAME;
-            processCarvedFiles(outputFolderPath.str(), parseCarvingResultsFile(unallocImgId, resultsFilePath.str()));
-
-            // Update the unused sector info in the image database so it is known which of the unallocated sectors just carved did not go into a carved file.
-            std::vector<TskUnusedSectorsRecord> unusedSectorsList;
-            imgDB->addUnusedSectors(unallocImgId, unusedSectorsList);
-        }
-        else
-        {
-            // There is nothing to do if the file to be carved is of length zero.
-            imgDB->setUnallocImgStatus(unallocImgId, TskImgDB::IMGDB_UNALLOC_IMG_STATUS_CARVED_NOT_NEEDED);
-        }
-
-        return 0;
-    }
-    catch (TskException &ex)
-    {
-        LOGERROR(TskUtilities::toUTF16(ex.message()));
-
-        if (imgDB)
-        {
-            imgDB->setUnallocImgStatus(unallocImgId, TskImgDB::IMGDB_UNALLOC_IMG_STATUS_CARVED_ERR);
-        }
-
-        return 1;
-    }
-}
-
-void TskCarveExtractScalpel::carveFile(const std::string &unallocImgPath, const std::string &outputFolderPath, const std::string &stdOutFilePath, const std::string &stdErrFilePath) const
-{
-    try
-    {
-        // Find out where Scalpel is installed.
-        std::string scalpelDirPath = GetSystemProperty("SCALPEL_DIR");
-        if (scalpelDirPath.empty())
-        {
-            throw TskException("TskCarveExtractScalpel::configure : Scalpel directory not set");
-        }
-
-        if (!Poco::File(scalpelDirPath).exists())
-        {
-            std::stringstream msg;
-            msg << "TskCarveExtractScalpel::configure : specified Scalpel directory '" << scalpelDirPath << "' does not exist";
-            throw TskException(msg.str());
-        }
-
-        // Get the path to the Scalpel executable.
-        std::stringstream pathBuilder;
-        pathBuilder << scalpelDirPath << Poco::Path::separator() << SCALPEL_EXE_FILE_NAME;
-        std::string scalpelExePath = pathBuilder.str();
-        if (!Poco::File(scalpelExePath).exists())
-        {
-            std::stringstream msg;
-            msg << "TskCarveExtractScalpel::configure : Scalpel executable '" << scalpelExePath << "' does not exist";
-            throw TskException(msg.str());
-        }
-
-        // Get the path to the Scalpel config file.
-        std::string scalpelConfigFilePath = GetSystemProperty("SCALPEL_CONFIG_FILE");
-        if (!Poco::File(scalpelConfigFilePath).exists())
-        {
-            std::stringstream msg;
-            msg << "TskCarveExtractScalpel::TskCarveExtractScalpel : Scalpel config file '" << scalpelConfigFilePath << "' does not exist";
-            throw TskException(msg.str());
-        }
-
-        // Set the Scalpel command line: specify the Scalpel config file.
-        Poco::Process::Args args;
-        args.push_back("-c");
-        args.push_back(scalpelConfigFilePath);
-
-        // Set the Scalpel command line: allow for nested headers and footers.
-        args.push_back("-e");
-        
-        // Set the Scalpel command line: put any carved files directly into the output folder.
-        args.push_back("-o");
-        args.push_back(outputFolderPath);
-        args.push_back("-O");
-
-        // Set the Scalpel command line: specify the file to carve.
-        args.push_back(unallocImgPath);
-
-        // Launch Scalpel with console output redirects.
-        Poco::Pipe outPipe;
-        Poco::Pipe errPipe;
-        Poco::ProcessHandle handle = Poco::Process::launch(scalpelExePath, args, NULL, &outPipe, &errPipe);
-
-        // Capture the console output. Note that Scalpel may block at times as it waits for this loop to empty the stream buffers.
-        Poco::PipeInputStream stdOutInputStream(outPipe);
-        Poco::FileOutputStream stdOutOutputStream(stdOutFilePath);
-        Poco::PipeInputStream stdErrInputStream(errPipe);
-        Poco::FileOutputStream stdErrOutputStream(stdErrFilePath);
-        while (stdOutInputStream || stdErrInputStream)
-        {
-            if (stdOutInputStream)
-            {
-                Poco::StreamCopier::copyStream(stdOutInputStream, stdOutOutputStream);
-            }
-
-            if (stdErrInputStream)
-            {
-                Poco::StreamCopier::copyStream(stdErrInputStream, stdErrOutputStream);
-            }
-        }
-    
-        // Scalpel should be finished since the console output streams are closed.
-        int exitCode = Poco::Process::wait(handle);
-
-        stdOutOutputStream.flush();
-        stdErrOutputStream.flush();
-
-        // On the first invocation of Scalpel, record its use in the image database.
-        static bool toolInfoRecorded = false;
-        if (!toolInfoRecorded)
-        {
-            std::ifstream stdOutStream(stdOutFilePath.c_str());
-            if (stdOutStream)
-            {
-                std::string versionString;
-                std::getline(stdOutStream, versionString);
-                Poco::StringTokenizer tokenizer(versionString, "\t ", Poco::StringTokenizer::TOK_IGNORE_EMPTY | Poco::StringTokenizer::TOK_TRIM); 
-                if (tokenizer[0] == "Scalpel" && tokenizer[1] == "version")
-                {
-                    TskServices::Instance().getImgDB().addToolInfo("Scalpel", tokenizer[2].c_str());
-                    toolInfoRecorded = true;
-                }
-                else
-                {
-                    LOGWARN("TskCarveExtractScalpel::carveFile : Scalpel stdout output format changed, cannot record tool info");
-                }
-            }
-            else
-            {
-                LOGWARN("TskCarveExtractScalpel::carveFile : failed to open stdout stream, cannot record tool info");
-            }
-        }
-
-        // Delete input files by default.
-        std::string option = GetSystemProperty("CARVE_EXTRACT_KEEP_INPUT_FILES");
-        std::transform(option.begin(), option.end(), option.begin(), ::toupper);
-        bool deleteInputFiles = (option != "TRUE");
-
-        if (deleteInputFiles)
-        {
-            Poco::File file(unallocImgPath);
-            file.remove();
-        }
-
-        if (exitCode != 0)
-        {
-            std::stringstream msg;
-            msg << "TskCarveExtractScalpel::carveFile : Scalpel exited with error exit code " << exitCode << " when carving '" << unallocImgPath.c_str() << "'";
-            throw TskException(msg.str());
-        }
-    }
-    catch (Poco::Exception &ex)
-    {
-        std::stringstream msg;
-        msg << "TskCarveExtractScalpel::carveFile : Poco exception: " << ex.displayText();
-        throw TskException(msg.str());
-    }
-}
-
-std::vector<TskCarveExtractScalpel::CarvedFile> TskCarveExtractScalpel::parseCarvingResultsFile(int unallocImgId, const std::string &resultsFilePath) const
-{
-    try
-    {
-        std::vector<CarvedFile> carvedFiles;
-
-        Poco::File resultsFile(resultsFilePath);
-        if (!resultsFile.exists())
-        {
-            std::stringstream msg;
-            msg << "TskCarveExtractScalpel::parseCarvingResultsFile : could not find Scalpel carving results file for unalloc img id " << unallocImgId;
-            throw TskException(msg.str());
-        }
-        
-        std::ifstream resultsStream(resultsFilePath.c_str());
-        if (!resultsStream)
-        {
-            std::stringstream msg;
-            msg << "TskCarveExtractScalpel::parseCarvingResultsFile : unable to open Scalpel carving results file for unalloc img id " << unallocImgId;
-            throw TskException(msg.str());
-        }
-
-        // Discard all of the file up to and including the header for the carved files list.
-        std::string line;
-        while (std::getline(resultsStream, line) && line.find("Extracted From") == std::string::npos);
-
-        // Parse the files list.
-        const std::size_t numberOfFileFields = 5;
-        while (std::getline(resultsStream, line))
-        {
-            // Tokenize the next line of the results file and see if it is part of the files list by checking the number of tokens.
-            Poco::StringTokenizer tokenizer(line, "\t ", Poco::StringTokenizer::TOK_IGNORE_EMPTY | Poco::StringTokenizer::TOK_TRIM); 
-            if (tokenizer.count() != numberOfFileFields)
-            {
-                // No more files in the files list.
-                break;
-            }
-
-            carvedFiles.push_back(CarvedFile(unallocImgId, tokenizer[0], tokenizer[1], tokenizer[3]));
-        }
-
-        resultsStream.close();
-
-        return carvedFiles;
-    }
-    catch (Poco::Exception &ex)
-    {
-        std::stringstream msg;
-        msg << "TskCarveExtractScalpel::parseCarvingResultsFile : Poco exception: " <<  ex.displayText();
-        throw TskException(msg.str());
-    }
-}
-
-void TskCarveExtractScalpel::processCarvedFiles(const std::string &outputFolderPath, const std::vector<TskCarveExtractScalpel::CarvedFile> &carvedFiles) const
-{
-    try
-    {
-        TskImgDB& imgDB = TskServices::Instance().getImgDB();
-        const uint64_t sectorSize = 512;
-
-        for (std::vector<CarvedFile>::const_iterator file = carvedFiles.begin(); file != carvedFiles.end(); ++file)
-        {
-            std::stringstream filePath;
-            filePath << outputFolderPath << Poco::Path::separator() << (*file).name;
-
-            // Convert the starting offset (in bytes) of the carved file in the unallocated image file the and length of the carved file (in bytes)
-            // into a range of "sectors."
-            int fileStartSectorOffset = static_cast<int>((*file).offset / sectorSize); 
-            int fileEndSectorOffset = static_cast<int>(((*file).offset + (*file).length) / sectorSize); 
-            
-            // Get the unallocated sectors run corresponding to the unallocated image file and map the file sector offsets to image sector offset and length. 
-            std::auto_ptr<UnallocRun> run(imgDB.getUnallocRun((*file).id, fileStartSectorOffset));
-            int numberOfRuns = 1;
-            uint64_t sectorRunStart[] = { run->getAllocStart() + fileStartSectorOffset - run->getUnallocStart() };
-            uint64_t sectorRunLength[] = { run->getAllocStart() + fileEndSectorOffset - run->getUnallocStart() - sectorRunStart[0] };
-
-            // Add the mapping to the image database.
-            uint64_t fileId;
-            if (imgDB.addCarvedFileInfo(run->getVolId(), (*file).name.c_str(), (*file).length, &sectorRunStart[0], &sectorRunLength[0], numberOfRuns, fileId) == -1)
-            {
-                std::stringstream msg;
-                msg << "TskCarveExtractScalpel::processCarvedFiles : unable to save carved file info for '" << filePath.str() << "'";
-                throw TskException(msg.str());
-            }
-
-            std::wstring f(TskUtilities::toUTF16(filePath.str()));
-            TskServices::Instance().getFileManager().addFile(fileId, f);
-
-            // Delete output (carved) files by default.
-            std::string option = GetSystemProperty("CARVE_EXTRACT_KEEP_OUTPUT_FILES");
-            std::transform(option.begin(), option.end(), option.begin(), ::toupper);
-            bool deleteOutputFiles = (option != "TRUE");
-
-            if (deleteOutputFiles)
-            {
-                Poco::File file(filePath.str());
-                file.remove();
-            }
-
-            if (imgDB.updateFileStatus(fileId, TskImgDB::IMGDB_FILES_STATUS_READY_FOR_ANALYSIS) == 1)
-            {
-                std::stringstream msg;
-                msg << "TskCarveExtractScalpel::processCarvedFiles : unable to update file status for '" << filePath.str() << "'";
-                throw TskException(msg.str());
-            }
-        }
-    }
-    catch (Poco::Exception &ex)
-    {
-        std::stringstream msg;
-        msg << "TskCarveExtractScalpel::processCarvedFiles : Poco exception: " <<  ex.displayText();
-        throw TskException(msg.str());
-    }
-}
-
-// @@@ TODO: Replace strtoul() call with a strtoull() call when a newer version of C++ is available.
-TskCarveExtractScalpel::CarvedFile::CarvedFile(int unallocImgId, const std::string &fileName, const std::string &offsetInBytes, const std::string &lengthInBytes) : 
-    id(unallocImgId), name(fileName), offset(strtoul(offsetInBytes.c_str(), 0, 10)), length(strtoul(lengthInBytes.c_str(), 0, 10))
-{
-}
+/*
+ *
+ *  The Sleuth Kit
+ *
+ *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ *  reserved.
+ *
+ *  This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskCarveExtractScalpel.cpp
+ * Contains the implementation of the TskCarveExtractScalpel class.
+ */
+
+// Include the class definition first to ensure it does not depend on subsequent includes in this file.
+#include "TskCarveExtractScalpel.h"
+
+// TSK Framework includes
+#include "tsk/framework/services/TskServices.h"
+#include "tsk/framework/services/TskImgDB.h"
+#include "tsk/framework/utilities/TskUtilities.h"
+#include "tsk/framework/utilities/UnallocRun.h"
+#include "tsk/framework/utilities/TskException.h"
+
+// Poco includes
+#include "Poco/Path.h"
+#include "Poco/File.h"
+#include "Poco/Process.h"
+#include "Poco/Pipe.h"
+#include "Poco/PipeStream.h"
+#include "Poco/FileStream.h"
+#include "Poco/StreamCopier.h"
+#include "Poco/StringTokenizer.h"
+#include "Poco/Exception.h"
+
+// C/C++ library includes
+#include <sstream>
+#include <fstream>
+#include <cstdlib>
+#include <vector>
+#include <algorithm>
+#include <memory>
+
+namespace
+{
+#ifdef TSK_WIN32
+    const std::string SCALPEL_EXE_FILE_NAME = "scalpel.exe";
+#else
+    const std::string SCALPEL_EXE_FILE_NAME = "scalpel";
+#endif
+    const std::string CARVED_FILES_FOLDER = "CarvedFiles";
+    const std::string SCALPEL_RESULTS_FILE_NAME = "audit.txt";
+    const std::string STD_OUT_DUMP_FILE_NAME = "stdout.txt";
+    const std::string STD_ERR_DUMP_FILE_NAME = "stderr.txt";
+}
+
+int TskCarveExtractScalpel::processFile(int unallocImgId)
+{
+    TskImgDB *imgDB = NULL; 
+    try
+    {
+        imgDB = &TskServices::Instance().getImgDB();
+
+        // Get the input folder path. The file to carve resides in a subdirectory of the carve prep output folder. The name of the subdirectory is the unallocated image file id.
+        std::string carvePrepOutputPath = GetSystemProperty("CARVE_DIR");
+        if (!Poco::File(carvePrepOutputPath).exists())
+        {
+            std::stringstream msg;
+            msg << "TskCarveExtractScalpel::processFile : specified carve prep output folder '" << carvePrepOutputPath << "' does not exist";
+            throw TskException(msg.str());
+        }
+        std::stringstream inputFolderPathBuilder; 
+        inputFolderPathBuilder << carvePrepOutputPath << Poco::Path::separator() << unallocImgId;
+    
+        // Get the input file name and construct the input file path. All of the files to carve have the same name.
+        std::string carvePrepOutputFileName = GetSystemProperty("UNALLOC_SECTORS_IMG_FILE_NAME");
+        std::stringstream unallocImgFilePathBuilder;
+        unallocImgFilePathBuilder << inputFolderPathBuilder.str() <<  Poco::Path::separator() << carvePrepOutputFileName;
+        Poco::File unallocImgFile(unallocImgFilePathBuilder.str());
+
+        if (!unallocImgFile.exists())
+        {
+            std::stringstream msg;
+            msg << "TskCarveExtractScalpel::processFile : did not find unalloc img file number " << unallocImgId << " at '" << unallocImgFilePathBuilder.str() << "'";
+            throw TskException(msg.str());
+        }
+
+        if (unallocImgFile.getSize() > static_cast<Poco::File::FileSize>(0))
+        {
+            // Attempt to carve the file, storing the carved files in a subdirectory of the input folder and the Scalpel console output in the input folder.
+            // The console output is placed in the input folder rather than the output folder because Scalpel will only write to an empty directory.
+            std::stringstream outputFolderPath;
+            outputFolderPath << inputFolderPathBuilder.str() << Poco::Path::separator() << CARVED_FILES_FOLDER;
+            std::stringstream stdOutFilePath;
+            stdOutFilePath << inputFolderPathBuilder.str() << Poco::Path::separator() << STD_OUT_DUMP_FILE_NAME;
+            std::stringstream stdErrFilePath;
+            stdErrFilePath << inputFolderPathBuilder.str() << Poco::Path::separator() << STD_ERR_DUMP_FILE_NAME;
+            carveFile(unallocImgFilePathBuilder.str(), outputFolderPath.str(), stdOutFilePath.str(), stdErrFilePath.str());
+
+            // Scalpel lists any files it carves out in a results file. Use the file list to add the files to the image DB and copy them to file storage.
+            std::stringstream resultsFilePath;
+            resultsFilePath << outputFolderPath.str() << Poco::Path::separator() << SCALPEL_RESULTS_FILE_NAME;
+            processCarvedFiles(outputFolderPath.str(), parseCarvingResultsFile(unallocImgId, resultsFilePath.str()));
+
+            // Update the unused sector info in the image database so it is known which of the unallocated sectors just carved did not go into a carved file.
+            std::vector<TskUnusedSectorsRecord> unusedSectorsList;
+            imgDB->addUnusedSectors(unallocImgId, unusedSectorsList);
+        }
+        else
+        {
+            // There is nothing to do if the file to be carved is of length zero.
+            imgDB->setUnallocImgStatus(unallocImgId, TskImgDB::IMGDB_UNALLOC_IMG_STATUS_CARVED_NOT_NEEDED);
+        }
+
+        return 0;
+    }
+    catch (TskException &ex)
+    {
+        LOGERROR(TskUtilities::toUTF16(ex.message()));
+
+        if (imgDB)
+        {
+            imgDB->setUnallocImgStatus(unallocImgId, TskImgDB::IMGDB_UNALLOC_IMG_STATUS_CARVED_ERR);
+        }
+
+        return 1;
+    }
+}
+
+void TskCarveExtractScalpel::carveFile(const std::string &unallocImgPath, const std::string &outputFolderPath, const std::string &stdOutFilePath, const std::string &stdErrFilePath) const
+{
+    try
+    {
+        // Find out where Scalpel is installed.
+        std::string scalpelDirPath = GetSystemProperty("SCALPEL_DIR");
+        if (scalpelDirPath.empty())
+        {
+            throw TskException("TskCarveExtractScalpel::configure : Scalpel directory not set");
+        }
+
+        if (!Poco::File(scalpelDirPath).exists())
+        {
+            std::stringstream msg;
+            msg << "TskCarveExtractScalpel::configure : specified Scalpel directory '" << scalpelDirPath << "' does not exist";
+            throw TskException(msg.str());
+        }
+
+        // Get the path to the Scalpel executable.
+        std::stringstream pathBuilder;
+        pathBuilder << scalpelDirPath << Poco::Path::separator() << SCALPEL_EXE_FILE_NAME;
+        std::string scalpelExePath = pathBuilder.str();
+        if (!Poco::File(scalpelExePath).exists())
+        {
+            std::stringstream msg;
+            msg << "TskCarveExtractScalpel::configure : Scalpel executable '" << scalpelExePath << "' does not exist";
+            throw TskException(msg.str());
+        }
+
+        // Get the path to the Scalpel config file.
+        std::string scalpelConfigFilePath = GetSystemProperty("SCALPEL_CONFIG_FILE");
+        if (!Poco::File(scalpelConfigFilePath).exists())
+        {
+            std::stringstream msg;
+            msg << "TskCarveExtractScalpel::TskCarveExtractScalpel : Scalpel config file '" << scalpelConfigFilePath << "' does not exist";
+            throw TskException(msg.str());
+        }
+
+        // Set the Scalpel command line: specify the Scalpel config file.
+        Poco::Process::Args args;
+        args.push_back("-c");
+        args.push_back(scalpelConfigFilePath);
+
+        // Set the Scalpel command line: allow for nested headers and footers.
+        args.push_back("-e");
+        
+        // Set the Scalpel command line: put any carved files directly into the output folder.
+        args.push_back("-o");
+        args.push_back(outputFolderPath);
+        args.push_back("-O");
+
+        // Set the Scalpel command line: specify the file to carve.
+        args.push_back(unallocImgPath);
+
+        // Launch Scalpel with console output redirects.
+        Poco::Pipe outPipe;
+        Poco::Pipe errPipe;
+        Poco::ProcessHandle handle = Poco::Process::launch(scalpelExePath, args, NULL, &outPipe, &errPipe);
+
+        // Capture the console output. Note that Scalpel may block at times as it waits for this loop to empty the stream buffers.
+        Poco::PipeInputStream stdOutInputStream(outPipe);
+        Poco::FileOutputStream stdOutOutputStream(stdOutFilePath);
+        Poco::PipeInputStream stdErrInputStream(errPipe);
+        Poco::FileOutputStream stdErrOutputStream(stdErrFilePath);
+        while (stdOutInputStream || stdErrInputStream)
+        {
+            if (stdOutInputStream)
+            {
+                Poco::StreamCopier::copyStream(stdOutInputStream, stdOutOutputStream);
+            }
+
+            if (stdErrInputStream)
+            {
+                Poco::StreamCopier::copyStream(stdErrInputStream, stdErrOutputStream);
+            }
+        }
+    
+        // Scalpel should be finished since the console output streams are closed.
+        int exitCode = Poco::Process::wait(handle);
+
+        stdOutOutputStream.flush();
+        stdErrOutputStream.flush();
+
+        // On the first invocation of Scalpel, record its use in the image database.
+        static bool toolInfoRecorded = false;
+        if (!toolInfoRecorded)
+        {
+            std::ifstream stdOutStream(stdOutFilePath.c_str());
+            if (stdOutStream)
+            {
+                std::string versionString;
+                std::getline(stdOutStream, versionString);
+                Poco::StringTokenizer tokenizer(versionString, "\t ", Poco::StringTokenizer::TOK_IGNORE_EMPTY | Poco::StringTokenizer::TOK_TRIM); 
+                if (tokenizer[0] == "Scalpel" && tokenizer[1] == "version")
+                {
+                    TskServices::Instance().getImgDB().addToolInfo("Scalpel", tokenizer[2].c_str());
+                    toolInfoRecorded = true;
+                }
+                else
+                {
+                    LOGWARN("TskCarveExtractScalpel::carveFile : Scalpel stdout output format changed, cannot record tool info");
+                }
+            }
+            else
+            {
+                LOGWARN("TskCarveExtractScalpel::carveFile : failed to open stdout stream, cannot record tool info");
+            }
+        }
+
+        // Delete input files by default.
+        std::string option = GetSystemProperty("CARVE_EXTRACT_KEEP_INPUT_FILES");
+        std::transform(option.begin(), option.end(), option.begin(), ::toupper);
+        bool deleteInputFiles = (option != "TRUE");
+
+        if (deleteInputFiles)
+        {
+            Poco::File file(unallocImgPath);
+            file.remove();
+        }
+
+        if (exitCode != 0)
+        {
+            std::stringstream msg;
+            msg << "TskCarveExtractScalpel::carveFile : Scalpel exited with error exit code " << exitCode << " when carving '" << unallocImgPath.c_str() << "'";
+            throw TskException(msg.str());
+        }
+    }
+    catch (Poco::Exception &ex)
+    {
+        std::stringstream msg;
+        msg << "TskCarveExtractScalpel::carveFile : Poco exception: " << ex.displayText();
+        throw TskException(msg.str());
+    }
+}
+
+std::vector<TskCarveExtractScalpel::CarvedFile> TskCarveExtractScalpel::parseCarvingResultsFile(int unallocImgId, const std::string &resultsFilePath) const
+{
+    try
+    {
+        std::vector<CarvedFile> carvedFiles;
+
+        Poco::File resultsFile(resultsFilePath);
+        if (!resultsFile.exists())
+        {
+            std::stringstream msg;
+            msg << "TskCarveExtractScalpel::parseCarvingResultsFile : could not find Scalpel carving results file for unalloc img id " << unallocImgId;
+            throw TskException(msg.str());
+        }
+        
+        std::ifstream resultsStream(resultsFilePath.c_str());
+        if (!resultsStream)
+        {
+            std::stringstream msg;
+            msg << "TskCarveExtractScalpel::parseCarvingResultsFile : unable to open Scalpel carving results file for unalloc img id " << unallocImgId;
+            throw TskException(msg.str());
+        }
+
+        // Discard all of the file up to and including the header for the carved files list.
+        std::string line;
+        while (std::getline(resultsStream, line) && line.find("Extracted From") == std::string::npos);
+
+        // Parse the files list.
+        const std::size_t numberOfFileFields = 5;
+        while (std::getline(resultsStream, line))
+        {
+            // Tokenize the next line of the results file and see if it is part of the files list by checking the number of tokens.
+            Poco::StringTokenizer tokenizer(line, "\t ", Poco::StringTokenizer::TOK_IGNORE_EMPTY | Poco::StringTokenizer::TOK_TRIM); 
+            if (tokenizer.count() != numberOfFileFields)
+            {
+                // No more files in the files list.
+                break;
+            }
+
+            carvedFiles.push_back(CarvedFile(unallocImgId, tokenizer[0], tokenizer[1], tokenizer[3]));
+        }
+
+        resultsStream.close();
+
+        return carvedFiles;
+    }
+    catch (Poco::Exception &ex)
+    {
+        std::stringstream msg;
+        msg << "TskCarveExtractScalpel::parseCarvingResultsFile : Poco exception: " <<  ex.displayText();
+        throw TskException(msg.str());
+    }
+}
+
+void TskCarveExtractScalpel::processCarvedFiles(const std::string &outputFolderPath, const std::vector<TskCarveExtractScalpel::CarvedFile> &carvedFiles) const
+{
+    try
+    {
+        TskImgDB& imgDB = TskServices::Instance().getImgDB();
+        const uint64_t sectorSize = 512;
+
+        for (std::vector<CarvedFile>::const_iterator file = carvedFiles.begin(); file != carvedFiles.end(); ++file)
+        {
+            std::stringstream filePath;
+            filePath << outputFolderPath << Poco::Path::separator() << (*file).name;
+
+            // Convert the starting offset (in bytes) of the carved file in the unallocated image file the and length of the carved file (in bytes)
+            // into a range of "sectors."
+            int fileStartSectorOffset = static_cast<int>((*file).offset / sectorSize); 
+            int fileEndSectorOffset = static_cast<int>(((*file).offset + (*file).length) / sectorSize); 
+            
+            // Get the unallocated sectors run corresponding to the unallocated image file and map the file sector offsets to image sector offset and length. 
+            std::auto_ptr<UnallocRun> run(imgDB.getUnallocRun((*file).id, fileStartSectorOffset));
+            int numberOfRuns = 1;
+            uint64_t sectorRunStart[] = { run->getAllocStart() + fileStartSectorOffset - run->getUnallocStart() };
+            uint64_t sectorRunLength[] = { run->getAllocStart() + fileEndSectorOffset - run->getUnallocStart() - sectorRunStart[0] };
+
+            // Add the mapping to the image database.
+            uint64_t fileId;
+            if (imgDB.addCarvedFileInfo(run->getVolId(), (*file).name.c_str(), (*file).length, &sectorRunStart[0], &sectorRunLength[0], numberOfRuns, fileId) == -1)
+            {
+                std::stringstream msg;
+                msg << "TskCarveExtractScalpel::processCarvedFiles : unable to save carved file info for '" << filePath.str() << "'";
+                throw TskException(msg.str());
+            }
+
+            std::wstring f(TskUtilities::toUTF16(filePath.str()));
+            TskServices::Instance().getFileManager().addFile(fileId, f);
+
+            // Delete output (carved) files by default.
+            std::string option = GetSystemProperty("CARVE_EXTRACT_KEEP_OUTPUT_FILES");
+            std::transform(option.begin(), option.end(), option.begin(), ::toupper);
+            bool deleteOutputFiles = (option != "TRUE");
+
+            if (deleteOutputFiles)
+            {
+                Poco::File file(filePath.str());
+                file.remove();
+            }
+
+            if (imgDB.updateFileStatus(fileId, TskImgDB::IMGDB_FILES_STATUS_READY_FOR_ANALYSIS) == 1)
+            {
+                std::stringstream msg;
+                msg << "TskCarveExtractScalpel::processCarvedFiles : unable to update file status for '" << filePath.str() << "'";
+                throw TskException(msg.str());
+            }
+        }
+    }
+    catch (Poco::Exception &ex)
+    {
+        std::stringstream msg;
+        msg << "TskCarveExtractScalpel::processCarvedFiles : Poco exception: " <<  ex.displayText();
+        throw TskException(msg.str());
+    }
+}
+
+// @@@ TODO: Replace strtoul() call with a strtoull() call when a newer version of C++ is available.
+TskCarveExtractScalpel::CarvedFile::CarvedFile(int unallocImgId, const std::string &fileName, const std::string &offsetInBytes, const std::string &lengthInBytes) : 
+    id(unallocImgId), name(fileName), offset(strtoul(offsetInBytes.c_str(), 0, 10)), length(strtoul(lengthInBytes.c_str(), 0, 10))
+{
+}
diff --git a/framework/tsk/framework/extraction/TskCarveExtractScalpel.h b/framework/tsk/framework/extraction/TskCarveExtractScalpel.h
index 179bc65a9d03318b5bc164efadc47326b2af0913..a5423e1ca82d2bc3b9fcde0f49a36743f3240a81 100644
--- a/framework/tsk/framework/extraction/TskCarveExtractScalpel.h
+++ b/framework/tsk/framework/extraction/TskCarveExtractScalpel.h
@@ -1,92 +1,92 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskCarveExtractScalpel.h
- * Contains the interface of the TskCarveExtractScalpel class.
- */
-
-#ifndef _TSK_CARVEEXTRACTSCALPEL_H
-#define _TSK_CARVEEXTRACTSCALPEL_H
-
-// TSK Framework includes
-#include "tsk/framework/extraction/CarveExtract.h"
-
-// Poco includes
-#include "Poco/Pipe.h"
-
-// C/C++ library includes
-#include <string>
-#include <vector>
-
-/**
- * The TskCarveExtractScalpel class implements the CarveExtract interface to 
- * carve unallocated sectors image files using Scalpel.
- */
-class TSK_FRAMEWORK_API TskCarveExtractScalpel : public CarveExtract
-{
-public:
-    virtual int processFile(int unallocImgId);
-
-private:
-    /**
-     * Uses Scalpel to attempt carving an unallocated sectors image file.
-     *
-     * @param unallocImgPath The path to the unallocated sectors image file to 
-     * be carved.
-     * @param outputFolderPath The directory to which any carved files are
-     * to be written.
-     * @param stdOutFilePath The file in which output written by Scalpel to
-     * standard out is to be stored.
-     * @param stdErrFilePath The file in which output written by Scalpel to
-     * standard err is to be stored.
-     * @return Throws TskException on error.
-     */
-    void carveFile(const std::string &unallocImgPath, const std::string &outputFolderPath, const std::string &stdOutFilePath, const std::string &stdErrFilePath) const;
-
-    /**
-     * Bundles information concerning a carved file produced by Scalpel.
-     */
-    struct CarvedFile
-    {
-        CarvedFile(int unallocImgId, const std::string &fileName, const std::string &offsetInBytes, const std::string &lengthInBytes);
-        int id;
-        std::string name;
-        unsigned long offset;
-        unsigned long length;
-    };
-
-    /**
-     * Parses a Scalpel carving results file to determine what files, if any, 
-     * Scalpel carved out of an unallocated sectors image file.
-     *
-     * @param unallocImgId The identifier of the unallocated sectors image 
-     * file that was carved.
-     & @param resultsFilePath The path to the Scalpel carving results file 
-     * to be parsed.
-     * @return A possibly empty vector of CarvedFile objects representing 
-     * carved files. Throws TskException on error.
-     */
-    std::vector<CarvedFile> parseCarvingResultsFile(int unallocImgId, const std::string &resultsFilePath) const;
-
-    /**
-     * Writes the unallocated sectors mapping of a set of carved files to the 
-     * image database and saves copies of the carved files.
-     *
-     * @param outputFolderPath The directory to which any carved files were
-     * written.
-     * @param carvedFiles A vector of CarvedFile objects representing carved
-     * files.
-     * @return Throws TskException on error.
-     */
-    void processCarvedFiles(const std::string &outputFolderPath, const std::vector<CarvedFile> &carvedFiles) const;
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskCarveExtractScalpel.h
+ * Contains the interface of the TskCarveExtractScalpel class.
+ */
+
+#ifndef _TSK_CARVEEXTRACTSCALPEL_H
+#define _TSK_CARVEEXTRACTSCALPEL_H
+
+// TSK Framework includes
+#include "tsk/framework/extraction/CarveExtract.h"
+
+// Poco includes
+#include "Poco/Pipe.h"
+
+// C/C++ library includes
+#include <string>
+#include <vector>
+
+/**
+ * The TskCarveExtractScalpel class implements the CarveExtract interface to 
+ * carve unallocated sectors image files using Scalpel.
+ */
+class TSK_FRAMEWORK_API TskCarveExtractScalpel : public CarveExtract
+{
+public:
+    virtual int processFile(int unallocImgId);
+
+private:
+    /**
+     * Uses Scalpel to attempt carving an unallocated sectors image file.
+     *
+     * @param unallocImgPath The path to the unallocated sectors image file to 
+     * be carved.
+     * @param outputFolderPath The directory to which any carved files are
+     * to be written.
+     * @param stdOutFilePath The file in which output written by Scalpel to
+     * standard out is to be stored.
+     * @param stdErrFilePath The file in which output written by Scalpel to
+     * standard err is to be stored.
+     * @return Throws TskException on error.
+     */
+    void carveFile(const std::string &unallocImgPath, const std::string &outputFolderPath, const std::string &stdOutFilePath, const std::string &stdErrFilePath) const;
+
+    /**
+     * Bundles information concerning a carved file produced by Scalpel.
+     */
+    struct CarvedFile
+    {
+        CarvedFile(int unallocImgId, const std::string &fileName, const std::string &offsetInBytes, const std::string &lengthInBytes);
+        int id;
+        std::string name;
+        unsigned long offset;
+        unsigned long length;
+    };
+
+    /**
+     * Parses a Scalpel carving results file to determine what files, if any, 
+     * Scalpel carved out of an unallocated sectors image file.
+     *
+     * @param unallocImgId The identifier of the unallocated sectors image 
+     * file that was carved.
+     & @param resultsFilePath The path to the Scalpel carving results file 
+     * to be parsed.
+     * @return A possibly empty vector of CarvedFile objects representing 
+     * carved files. Throws TskException on error.
+     */
+    std::vector<CarvedFile> parseCarvingResultsFile(int unallocImgId, const std::string &resultsFilePath) const;
+
+    /**
+     * Writes the unallocated sectors mapping of a set of carved files to the 
+     * image database and saves copies of the carved files.
+     *
+     * @param outputFolderPath The directory to which any carved files were
+     * written.
+     * @param carvedFiles A vector of CarvedFile objects representing carved
+     * files.
+     * @return Throws TskException on error.
+     */
+    void processCarvedFiles(const std::string &outputFolderPath, const std::vector<CarvedFile> &carvedFiles) const;
+};
+
+#endif
diff --git a/framework/tsk/framework/extraction/TskCarvePrepSectorConcat.cpp b/framework/tsk/framework/extraction/TskCarvePrepSectorConcat.cpp
index 5838cd7f1951a990814d89855b97532d57315e31..3422917a19c021b6ae224a2a2402dcf33eae94b5 100644
--- a/framework/tsk/framework/extraction/TskCarvePrepSectorConcat.cpp
+++ b/framework/tsk/framework/extraction/TskCarvePrepSectorConcat.cpp
@@ -1,337 +1,337 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskCarvePrepSectorConcat.cpp
- * Contains the implementation of the TskCarvePrepSectorConcat class.
- */
-
-// Include the class definition first to ensure it does not depend on subsequent includes in this file.
-#include "TskCarvePrepSectorConcat.h" 
-
-// TSK Framework includes
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskCarvePrepSectorConcat.cpp
+ * Contains the implementation of the TskCarvePrepSectorConcat class.
+ */
+
+// Include the class definition first to ensure it does not depend on subsequent includes in this file.
+#include "TskCarvePrepSectorConcat.h" 
+
+// TSK Framework includes
 #include "tsk/framework/services/TskImgDB.h"
 #include "tsk/framework/services/TskServices.h"
 #include "tsk/framework/services/Log.h"
 #include "tsk/framework/utilities/TskUtilities.h"
-
-// Poco includes
-#include "Poco/File.h"
-#include "Poco/Exception.h"
-#include "Poco/Path.h"
-#include "Poco/String.h"
-
-// C/C++ library includes
-#include <assert.h>
-#include <string>
-#include <sstream>
-#include <cstdlib>
+
+// Poco includes
+#include "Poco/File.h"
+#include "Poco/Exception.h"
+#include "Poco/Path.h"
+#include "Poco/String.h"
+
+// C/C++ library includes
+#include <assert.h>
+#include <string>
+#include <sstream>
+#include <cstdlib>
 #include <iostream>
 #include <fstream>
 #include <memory>
-
-namespace
-{
-    const size_t SECTOR_SIZE = 512;
-    const size_t DEFAULT_SECTORS_PER_READ = 32; 
-}
-
-TskCarvePrepSectorConcat::TskCarvePrepSectorConcat()
-{
-}
-
-int TskCarvePrepSectorConcat::processSectors(bool scheduleCarving)
-{
-    try 
-    {
-        std::string outputFolderPath;
-        std::string outputFileName;
-        size_t maxOutputFileSize;
-        setUpForCarvePrep(outputFolderPath, outputFileName, maxOutputFileSize);
-
-        std::auto_ptr<SectorRuns> sectorRuns(TskServices::Instance().getImgDB().getFreeSectors());
-        if (sectorRuns.get())
-        {
-            createUnallocSectorsImgFiles(outputFolderPath, outputFileName, maxOutputFileSize, *sectorRuns, scheduleCarving);
-        }
-    }
-    catch (TskException &ex) 
-    {
-        LOGERROR(ex.message());
-        return 1;
-    }
-
-    return 0;
-}
-
-void TskCarvePrepSectorConcat::processFiles(const std::string &fileName, bool scheduleCarving) const
-{
-    assert(!fileName.empty());
-    if (fileName.empty())
-    {
-        throw TskException("TskCarvePrepSectorConcat::processFiles : empty file name argument");
-    }
-
-	std::string outputFolderPath;
-    std::string outputFileName;
-    size_t maxOutputFileSize;
-    setUpForCarvePrep(outputFolderPath, outputFileName, maxOutputFileSize);
-
-    // Get the file ids for any files with the the specified file name.
-    TskImgDB &imgDB = TskServices::Instance().getImgDB();
-    std::stringstream condition;
-    condition << "WHERE files.name = " << "'" << fileName << "'";
-    std::vector<uint64_t> fileIds = imgDB.getFileIds(condition.str());
-
-    std::auto_ptr<SectorRuns> sectorRuns;
-    for (std::vector<uint64_t>::const_iterator it = fileIds.begin(); it != fileIds.end(); ++it)
-    {
-        sectorRuns.reset(imgDB.getFileSectors(*it));
-        if (sectorRuns.get()) 
-        {
-            createUnallocSectorsImgFiles(outputFolderPath, outputFileName, maxOutputFileSize, *sectorRuns, scheduleCarving);
-        }
-    }
-}
-
-void TskCarvePrepSectorConcat::onUnallocSectorsImgFileCreated(int unallocSectorsImgId, bool scheduleCarving) const
-{
-    // Schedule the file for carving.
-    TskImgDB &imgDB = TskServices::Instance().getImgDB();
-    if (scheduleCarving) 
-    {
-        if (TskServices::Instance().getScheduler().schedule(Scheduler::Carve, unallocSectorsImgId, unallocSectorsImgId) == 0)
-        {
-            imgDB.setUnallocImgStatus(unallocSectorsImgId, TskImgDB::IMGDB_UNALLOC_IMG_STATUS_SCHEDULE_OK);
-        }
-        else 
-        {
-            imgDB.setUnallocImgStatus(unallocSectorsImgId, TskImgDB::IMGDB_UNALLOC_IMG_STATUS_SCHEDULE_ERR);
-            std::stringstream msg;
-            msg << "TskCarvePrepSectorConcat::onUnallocSectorsImgFileCreated : failed to schedule carving of unallocated image file " << unallocSectorsImgId; 
-            throw TskException(msg.str());
-        }
-    }
-}
-
-void TskCarvePrepSectorConcat::setUpForCarvePrep(std::string &outputFolderPath, std::string &outputFileName, size_t &maxOutputFileSize) const
-{
-    try
-    {
-        // Create the output folder. Since multiple calls to processSectors() and/or processFiles() are possible, check to see if the folder already exists.
-        outputFolderPath = GetSystemProperty("CARVE_DIR");
-        Poco::File folder(outputFolderPath);
-        if (!folder.exists())
-        {
-            folder.createDirectory();
-        }
-
-        outputFileName = GetSystemProperty("UNALLOC_SECTORS_IMG_FILE_NAME");
-        maxOutputFileSize = strtoul(GetSystemProperty("MAX_UNALLOC_SECTORS_IMG_FILE_SIZE").c_str(), NULL, 10);
-    }
-    catch (Poco::Exception &ex) 
-    {
-        std::stringstream msg;
-        msg << "TskCarvePrepSectorConcat::createFolder : Poco exception: " << ex.displayText();
-        throw TskException(msg.str());
-    }
-}
-
-void TskCarvePrepSectorConcat::createUnallocSectorsImgFiles(const std::string &outputFolderPath, const std::string &outputFileName, size_t maxOutputFileSize, SectorRuns &sectorRuns, bool scheduleCarving) const
-{
-    char *sectorBuffer = NULL;
-    try
-    {
-        // Create a buffer for data from sector runs. If not breaking output files only on volume boundaries (i.e., max output file size is zero), 
-        // be sure sectors to read is less than or equal to max output file size.
-        size_t sectorsPerRead = DEFAULT_SECTORS_PER_READ;
-        if ((maxOutputFileSize > 0) && (sectorsPerRead * SECTOR_SIZE > maxOutputFileSize))
-        {
-            sectorsPerRead = maxOutputFileSize / SECTOR_SIZE;
-        }
-        sectorBuffer = new char[sectorsPerRead * SECTOR_SIZE];
-
-        TskImgDB &imgDB = TskServices::Instance().getImgDB();       
-        int volumeID = -1;
-        int unallocSectorsImgId = 0;
+
+namespace
+{
+    const size_t SECTOR_SIZE = 512;
+    const size_t DEFAULT_SECTORS_PER_READ = 32; 
+}
+
+TskCarvePrepSectorConcat::TskCarvePrepSectorConcat()
+{
+}
+
+int TskCarvePrepSectorConcat::processSectors(bool scheduleCarving)
+{
+    try 
+    {
+        std::string outputFolderPath;
+        std::string outputFileName;
+        size_t maxOutputFileSize;
+        setUpForCarvePrep(outputFolderPath, outputFileName, maxOutputFileSize);
+
+        std::auto_ptr<SectorRuns> sectorRuns(TskServices::Instance().getImgDB().getFreeSectors());
+        if (sectorRuns.get())
+        {
+            createUnallocSectorsImgFiles(outputFolderPath, outputFileName, maxOutputFileSize, *sectorRuns, scheduleCarving);
+        }
+    }
+    catch (TskException &ex) 
+    {
+        LOGERROR(ex.message());
+        return 1;
+    }
+
+    return 0;
+}
+
+void TskCarvePrepSectorConcat::processFiles(const std::string &fileName, bool scheduleCarving) const
+{
+    assert(!fileName.empty());
+    if (fileName.empty())
+    {
+        throw TskException("TskCarvePrepSectorConcat::processFiles : empty file name argument");
+    }
+
+	std::string outputFolderPath;
+    std::string outputFileName;
+    size_t maxOutputFileSize;
+    setUpForCarvePrep(outputFolderPath, outputFileName, maxOutputFileSize);
+
+    // Get the file ids for any files with the the specified file name.
+    TskImgDB &imgDB = TskServices::Instance().getImgDB();
+    std::stringstream condition;
+    condition << "WHERE files.name = " << "'" << fileName << "'";
+    std::vector<uint64_t> fileIds = imgDB.getFileIds(condition.str());
+
+    std::auto_ptr<SectorRuns> sectorRuns;
+    for (std::vector<uint64_t>::const_iterator it = fileIds.begin(); it != fileIds.end(); ++it)
+    {
+        sectorRuns.reset(imgDB.getFileSectors(*it));
+        if (sectorRuns.get()) 
+        {
+            createUnallocSectorsImgFiles(outputFolderPath, outputFileName, maxOutputFileSize, *sectorRuns, scheduleCarving);
+        }
+    }
+}
+
+void TskCarvePrepSectorConcat::onUnallocSectorsImgFileCreated(int unallocSectorsImgId, bool scheduleCarving) const
+{
+    // Schedule the file for carving.
+    TskImgDB &imgDB = TskServices::Instance().getImgDB();
+    if (scheduleCarving) 
+    {
+        if (TskServices::Instance().getScheduler().schedule(Scheduler::Carve, unallocSectorsImgId, unallocSectorsImgId) == 0)
+        {
+            imgDB.setUnallocImgStatus(unallocSectorsImgId, TskImgDB::IMGDB_UNALLOC_IMG_STATUS_SCHEDULE_OK);
+        }
+        else 
+        {
+            imgDB.setUnallocImgStatus(unallocSectorsImgId, TskImgDB::IMGDB_UNALLOC_IMG_STATUS_SCHEDULE_ERR);
+            std::stringstream msg;
+            msg << "TskCarvePrepSectorConcat::onUnallocSectorsImgFileCreated : failed to schedule carving of unallocated image file " << unallocSectorsImgId; 
+            throw TskException(msg.str());
+        }
+    }
+}
+
+void TskCarvePrepSectorConcat::setUpForCarvePrep(std::string &outputFolderPath, std::string &outputFileName, size_t &maxOutputFileSize) const
+{
+    try
+    {
+        // Create the output folder. Since multiple calls to processSectors() and/or processFiles() are possible, check to see if the folder already exists.
+        outputFolderPath = GetSystemProperty("CARVE_DIR");
+        Poco::File folder(outputFolderPath);
+        if (!folder.exists())
+        {
+            folder.createDirectory();
+        }
+
+        outputFileName = GetSystemProperty("UNALLOC_SECTORS_IMG_FILE_NAME");
+        maxOutputFileSize = strtoul(GetSystemProperty("MAX_UNALLOC_SECTORS_IMG_FILE_SIZE").c_str(), NULL, 10);
+    }
+    catch (Poco::Exception &ex) 
+    {
+        std::stringstream msg;
+        msg << "TskCarvePrepSectorConcat::createFolder : Poco exception: " << ex.displayText();
+        throw TskException(msg.str());
+    }
+}
+
+void TskCarvePrepSectorConcat::createUnallocSectorsImgFiles(const std::string &outputFolderPath, const std::string &outputFileName, size_t maxOutputFileSize, SectorRuns &sectorRuns, bool scheduleCarving) const
+{
+    char *sectorBuffer = NULL;
+    try
+    {
+        // Create a buffer for data from sector runs. If not breaking output files only on volume boundaries (i.e., max output file size is zero), 
+        // be sure sectors to read is less than or equal to max output file size.
+        size_t sectorsPerRead = DEFAULT_SECTORS_PER_READ;
+        if ((maxOutputFileSize > 0) && (sectorsPerRead * SECTOR_SIZE > maxOutputFileSize))
+        {
+            sectorsPerRead = maxOutputFileSize / SECTOR_SIZE;
+        }
+        sectorBuffer = new char[sectorsPerRead * SECTOR_SIZE];
+
+        TskImgDB &imgDB = TskServices::Instance().getImgDB();       
+        int volumeID = -1;
+        int unallocSectorsImgId = 0;
         std::ofstream outfile;
-        uint64_t currentFileOffset = 0; // In bytes
-        do 
-        {
-            // Keep track of the starting offsets in the output file (in bytes) and in the image (in sectors) of the sector run or part of a sector run 
-            // being written to the current output file. This data will be needed to store a mapping of the sectors in the output file to the corresponding  
-            // sectors in the image.
-            uint64_t startingFileOffset = currentFileOffset; // In bytes
-            uint64_t startingImageOffset = sectorRuns.getDataStart(); // In sectors 
-            
-            // Read the contents of the sectors in the current run in chunks.
-            for (uint64_t sectorRunOffset = 0; sectorRunOffset < sectorRuns.getDataLen(); ) 
-            {
-                // Calculate how many sectors to read in the current chunk.
-                uint64_t sectorsToRead = sectorsPerRead;
-                if (sectorsToRead > sectorRuns.getDataLen() - sectorRunOffset)
-                {
-                    sectorsToRead = sectorRuns.getDataLen() - sectorRunOffset;
-                }
-
-                // If the read will make the output file exceed the maximum file size, or if a volume boundary
-                // has been reached, close the current output file and open a new output file. Note that the 
-                // first time this loop is entered, the initial output file will be created here 
-                // since the image volume ID was initialized to an invalid value.
-                if ((sectorRuns.getVolID() != volumeID) || ((maxOutputFileSize > 0) && ((sectorsToRead * 512) + currentFileOffset > maxOutputFileSize))) 
-                {
-                    // Store the mapping of the sectors written to the output file to the corresponding sectors in the image.
-                    if (currentFileOffset != startingFileOffset) 
-                    {
+        uint64_t currentFileOffset = 0; // In bytes
+        do 
+        {
+            // Keep track of the starting offsets in the output file (in bytes) and in the image (in sectors) of the sector run or part of a sector run 
+            // being written to the current output file. This data will be needed to store a mapping of the sectors in the output file to the corresponding  
+            // sectors in the image.
+            uint64_t startingFileOffset = currentFileOffset; // In bytes
+            uint64_t startingImageOffset = sectorRuns.getDataStart(); // In sectors 
+            
+            // Read the contents of the sectors in the current run in chunks.
+            for (uint64_t sectorRunOffset = 0; sectorRunOffset < sectorRuns.getDataLen(); ) 
+            {
+                // Calculate how many sectors to read in the current chunk.
+                uint64_t sectorsToRead = sectorsPerRead;
+                if (sectorsToRead > sectorRuns.getDataLen() - sectorRunOffset)
+                {
+                    sectorsToRead = sectorRuns.getDataLen() - sectorRunOffset;
+                }
+
+                // If the read will make the output file exceed the maximum file size, or if a volume boundary
+                // has been reached, close the current output file and open a new output file. Note that the 
+                // first time this loop is entered, the initial output file will be created here 
+                // since the image volume ID was initialized to an invalid value.
+                if ((sectorRuns.getVolID() != volumeID) || ((maxOutputFileSize > 0) && ((sectorsToRead * 512) + currentFileOffset > maxOutputFileSize))) 
+                {
+                    // Store the mapping of the sectors written to the output file to the corresponding sectors in the image.
+                    if (currentFileOffset != startingFileOffset) 
+                    {
                         mapFileToImage(unallocSectorsImgId, outfile, startingFileOffset, currentFileOffset, sectorRuns.getVolID(), startingImageOffset);
-
-                        // Advance the starting image offset to accurately reflect the starting image offset for the next output file.  
-                        startingImageOffset += (currentFileOffset - startingFileOffset) / 512;
-                    }
-
-                    // Close the current output file.
-                    if (unallocSectorsImgId) 
-                    {
+
+                        // Advance the starting image offset to accurately reflect the starting image offset for the next output file.  
+                        startingImageOffset += (currentFileOffset - startingFileOffset) / 512;
+                    }
+
+                    // Close the current output file.
+                    if (unallocSectorsImgId) 
+                    {
                         outfile.close();
-                    }
-
-                    // Schedule the current output file for carving. Note that derived classes can change this behavior by overriding onUnallocSectorsImgFileCreated.
-                    if (currentFileOffset > 0) 
-                    {
-                        onUnallocSectorsImgFileCreated(unallocSectorsImgId, scheduleCarving); 
-                    }
-
-                    // Get the next output file number. 
-                    if (imgDB.addUnallocImg(unallocSectorsImgId) == -1) 
-                    {
-                        throw TskException("TskCarvePrepSectorConcat::createUnallocSectorsImgFiles : failed to get next output file number");
-                    }
-
-                    // Create a subdirectory named for the file number.
-                    std::stringstream path;
-                    path << outputFolderPath.c_str() << Poco::Path::separator() << unallocSectorsImgId;
-                    createFolder(path.str());
-                    
-                    // Create an output file in the subdirectory.
-                    path << Poco::Path::separator() << outputFileName.c_str();
+                    }
+
+                    // Schedule the current output file for carving. Note that derived classes can change this behavior by overriding onUnallocSectorsImgFileCreated.
+                    if (currentFileOffset > 0) 
+                    {
+                        onUnallocSectorsImgFileCreated(unallocSectorsImgId, scheduleCarving); 
+                    }
+
+                    // Get the next output file number. 
+                    if (imgDB.addUnallocImg(unallocSectorsImgId) == -1) 
+                    {
+                        throw TskException("TskCarvePrepSectorConcat::createUnallocSectorsImgFiles : failed to get next output file number");
+                    }
+
+                    // Create a subdirectory named for the file number.
+                    std::stringstream path;
+                    path << outputFolderPath.c_str() << Poco::Path::separator() << unallocSectorsImgId;
+                    createFolder(path.str());
+                    
+                    // Create an output file in the subdirectory.
+                    path << Poco::Path::separator() << outputFileName.c_str();
                     outfile.open(path.str().c_str(), std::ios_base::out|std::ios_base::binary);
                     if (outfile.fail())
-                    {
-                        TskServices::Instance().getImgDB().setUnallocImgStatus(unallocSectorsImgId, TskImgDB::IMGDB_UNALLOC_IMG_STATUS_CARVED_ERR);
-
-                        std::stringstream msg;
-                        msg << "TskCarvePrepSectorConcat::createUnallocSectorsImgFiles : failed to create output file " << unallocSectorsImgId;
-                        throw TskException(msg.str());
-                    }
-                    // Reset the output file offsets and volume ID.
-                    currentFileOffset = 0;
-                    startingFileOffset = 0;
-                    volumeID = sectorRuns.getVolID();
-                }
-
-                // Read another chunk of sectors from this run. 
-                int sectorsRead = sectorRuns.getData(sectorRunOffset, static_cast<int>(sectorsToRead), sectorBuffer);
-                if (sectorsRead == -1)
-                {
-                    LOGERROR("TskCarvePrepSectorConcat::createUnallocSectorsImgFiles : error reading sector contents from sector run");
-                    break;
-                }
-
-                // Write the chunk of sectors to the output file.
+                    {
+                        TskServices::Instance().getImgDB().setUnallocImgStatus(unallocSectorsImgId, TskImgDB::IMGDB_UNALLOC_IMG_STATUS_CARVED_ERR);
+
+                        std::stringstream msg;
+                        msg << "TskCarvePrepSectorConcat::createUnallocSectorsImgFiles : failed to create output file " << unallocSectorsImgId;
+                        throw TskException(msg.str());
+                    }
+                    // Reset the output file offsets and volume ID.
+                    currentFileOffset = 0;
+                    startingFileOffset = 0;
+                    volumeID = sectorRuns.getVolID();
+                }
+
+                // Read another chunk of sectors from this run. 
+                int sectorsRead = sectorRuns.getData(sectorRunOffset, static_cast<int>(sectorsToRead), sectorBuffer);
+                if (sectorsRead == -1)
+                {
+                    LOGERROR("TskCarvePrepSectorConcat::createUnallocSectorsImgFiles : error reading sector contents from sector run");
+                    break;
+                }
+
+                // Write the chunk of sectors to the output file.
                 outfile.write(sectorBuffer, sectorsRead * 512);
                 if (outfile.bad())
-                {
-                    imgDB.setUnallocImgStatus(unallocSectorsImgId, TskImgDB::IMGDB_UNALLOC_IMG_STATUS_CARVED_ERR);
-                    std::stringstream msg;
-                    msg << "TskCarvePrepSectorConcat::createUnallocSectorsImgFiles : error writing to output file " << unallocSectorsImgId;
-                    throw TskException(msg.str());
-                }
-
-                // Update the output file and sector run offsets to reflect the sucessful read.
+                {
+                    imgDB.setUnallocImgStatus(unallocSectorsImgId, TskImgDB::IMGDB_UNALLOC_IMG_STATUS_CARVED_ERR);
+                    std::stringstream msg;
+                    msg << "TskCarvePrepSectorConcat::createUnallocSectorsImgFiles : error writing to output file " << unallocSectorsImgId;
+                    throw TskException(msg.str());
+                }
+
+                // Update the output file and sector run offsets to reflect the sucessful read.
                 currentFileOffset += sectorsRead * 512;
-                sectorRunOffset += sectorsRead;
-
-                if (sectorsRead == 0) 
-                {
-                    break;
-                }
-            }
-
-            // Store the mapping of the sectors written to the output file to the corresponding sectors in the image.
-            if (currentFileOffset != startingFileOffset)
-            {
+                sectorRunOffset += sectorsRead;
+
+                if (sectorsRead == 0) 
+                {
+                    break;
+                }
+            }
+
+            // Store the mapping of the sectors written to the output file to the corresponding sectors in the image.
+            if (currentFileOffset != startingFileOffset)
+            {
                 mapFileToImage(unallocSectorsImgId, outfile, startingFileOffset, currentFileOffset, sectorRuns.getVolID(), startingImageOffset);
-            }
+            }
         }
-        while(sectorRuns.next() != -1);
-
-        // Close the final output file.
-        if (unallocSectorsImgId) 
-        {
+        while(sectorRuns.next() != -1);
+
+        // Close the final output file.
+        if (unallocSectorsImgId) 
+        {
             outfile.close();
-        }
-
-        // Schedule the final output file.
-        if (currentFileOffset > 0)
-        {
-            onUnallocSectorsImgFileCreated(unallocSectorsImgId, scheduleCarving);
-        }
+        }
+
+        // Schedule the final output file.
+        if (currentFileOffset > 0)
+        {
+            onUnallocSectorsImgFileCreated(unallocSectorsImgId, scheduleCarving);
+        }
 
         if (sectorBuffer != NULL)
         {
             delete [] sectorBuffer;
         }
-    }
-    catch(...)
-    {
-        if (sectorBuffer != NULL)
-        {
-            delete [] sectorBuffer;
-        }
-
-        throw;
-    }
-}
-
-void TskCarvePrepSectorConcat::createFolder(const std::string &path) const
-{
-    try 
-    {
-        Poco::File folder(path);
-        if (folder.exists())
-        {
-            folder.remove(true);
-        }
-        
-        folder.createDirectory();
-    }
-    catch (Poco::Exception& ex) 
-    {
-        std::stringstream msg;
-        msg << "TskCarvePrepSectorConcat::createFolder : failed to create folder '" << path << "': " << ex.message();
-        throw TskException(msg.str());
-    }
-}
-
+    }
+    catch(...)
+    {
+        if (sectorBuffer != NULL)
+        {
+            delete [] sectorBuffer;
+        }
+
+        throw;
+    }
+}
+
+void TskCarvePrepSectorConcat::createFolder(const std::string &path) const
+{
+    try 
+    {
+        Poco::File folder(path);
+        if (folder.exists())
+        {
+            folder.remove(true);
+        }
+        
+        folder.createDirectory();
+    }
+    catch (Poco::Exception& ex) 
+    {
+        std::stringstream msg;
+        msg << "TskCarvePrepSectorConcat::createFolder : failed to create folder '" << path << "': " << ex.message();
+        throw TskException(msg.str());
+    }
+}
+
 void TskCarvePrepSectorConcat::mapFileToImage(int unallocSectorsImgId, std::ofstream & outfile, uint64_t startingFileOffset, uint64_t endingFileOffset, int volumeID, uint64_t startingImageOffset) const
-{
-    // Convert the starting offset in the output file from a byte offset to a sector offset and calculate the number of sectors written to the file.
-    uint64_t startingFileOffsetInSectors = startingFileOffset / 512;
-    uint64_t sectorsWritten = (endingFileOffset - startingFileOffset) / 512;
-
-    // Store the mapping of the output file sectors to image sectors.
-    if (TskServices::Instance().getImgDB().addAllocUnallocMapInfo(volumeID, unallocSectorsImgId, startingFileOffsetInSectors, sectorsWritten, startingImageOffset) != 0) 
-    {
+{
+    // Convert the starting offset in the output file from a byte offset to a sector offset and calculate the number of sectors written to the file.
+    uint64_t startingFileOffsetInSectors = startingFileOffset / 512;
+    uint64_t sectorsWritten = (endingFileOffset - startingFileOffset) / 512;
+
+    // Store the mapping of the output file sectors to image sectors.
+    if (TskServices::Instance().getImgDB().addAllocUnallocMapInfo(volumeID, unallocSectorsImgId, startingFileOffsetInSectors, sectorsWritten, startingImageOffset) != 0) 
+    {
         outfile.close();
-        std::stringstream msg;
-        msg << "TskCarvePrepSectorConcat::mapFileToImage : failed to add mapping to image for output file " << unallocSectorsImgId;
-        throw TskException(msg.str());
-    }
+        std::stringstream msg;
+        msg << "TskCarvePrepSectorConcat::mapFileToImage : failed to add mapping to image for output file " << unallocSectorsImgId;
+        throw TskException(msg.str());
+    }
 }
diff --git a/framework/tsk/framework/extraction/TskCarvePrepSectorConcat.h b/framework/tsk/framework/extraction/TskCarvePrepSectorConcat.h
index 3fed53271cd86065d5a1b2b4ccf0940f5240e9e8..53cecd51606cf430aae710c0f37f3e45255aec80 100644
--- a/framework/tsk/framework/extraction/TskCarvePrepSectorConcat.h
+++ b/framework/tsk/framework/extraction/TskCarvePrepSectorConcat.h
@@ -1,142 +1,142 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskCarvePrepSectorConcat.h
- * Contains the interface of the TskCarvePrepSectorConcat class.
- */
-
-#ifndef _TSK_CARVE_PREP_CONCAT_H
-#define _TSK_CARVE_PREP_CONCAT_H
-
-// TSK Framework includes
-#include "CarvePrep.h"
-
-// C/C++ library includes
-#include <string>
-
-/**
- * The TskCarvePrepSectorConcat class implements the CarvePrep abstract 
- * interface. It concatenates unallocated sector runs from an image and writes
- * the contents to one or more unallocated sectors image files with a 
- * configurable maximum size. Instances of this class are also able to treat a
- * file as a run of unallocated sectors, whcih may be helpful for carving page
- * files, etc. 
- *
- * This class assumes the availability of the Microsoft Windows API.
- * @@@ TODO: Use Poco API instead.
- */
-class TSK_FRAMEWORK_API TskCarvePrepSectorConcat : public CarvePrep
-{
-public:
-	TskCarvePrepSectorConcat();
-	virtual ~TskCarvePrepSectorConcat() {}
-
-    virtual int processSectors(bool scheduleCarving);
-
-    /**
-     * Treats the contents of a set of files as unallocated sector runs and 
-     * writes the contents of the files to zero to many unallocated sectors 
-     * image files for later carving. This may be useful for carving page
-     * files, hibernation files, etc.
-     *
-     * @param fileName Output files for all files with this name will be 
-     * generated.
-     * @param scheduleCarving Set to true if carving of the output files should
-     * be scheduled.
-     * @return Throws TskException on error.
-     */
-    void processFiles(const std::string &fileName, bool scheduleCarving) const;
-
-protected:
-
-    /**
-     * Called by createUnallocSectorsImgFiles to allow specialization of 
-     * behavior when an unallocated sectors image file is produced. The default
-     * implementation optionally schedules carving of the output file.
-     *
-     * @param unallocSectorsImgId ID assigned to the file by 
-     * TskImgDB::addUnallocImg().
-     * @param scheduleCarving Set to true if carving of the output file should
-     * be scheduled.
-     * @return Default implementation throws TskException on error.
-     */
-    virtual void onUnallocSectorsImgFileCreated(int unallocSectorsImgId, bool scheduleCarving) const; 
-
-private:
-
-    /**
-     * Looks up carving parameters and creates the output folder
-     * if it doesn't already exist.
-     *
-     * @param outputFolderPath The value of the CARVE_DIR system property 
-     * or a default value.
-     * @param outputFileName  The value of the UNALLOC_IMG_FILE_NAME system 
-     * property or a default value.
-     * @param maxOutputFileSize  The value of the MAX_UNALLOC_IMG_FILE_SIZE 
-     * system property or a default value.
-     * @return Throws TskException on error.
-     */
-    void setUpForCarvePrep(std::string &outputFolderPath, std::string &outputFileName, size_t &maxOutputFileSize) const;
-
-    /** 
-     * Writes sector runs to one or more unallocated sectors image files. The 
-     * maximum size of any single output file will not exceed the value of the 
-     * MAX_UNALLOC_IMG_FILE_SIZE system property (or default) and each output 
-     * file will contain sectors from only a single volume, unless 
-     * MAX_UNALLOC_IMG_FILE_SIZE is set to zero In that case, output files 
-     * break on volume boundaries. 
-     * 
-     * @param outputFolderPath Folder to which the output files are written.
-     * @param outputFileName  Name given to the output files.
-     * @param maxOutputFileSize  Maximum output file size.
-     * @param sectorRuns Sector runs to be written to the output files.
-     * @param scheduleCarving Whether or not to schedule carving of the output 
-     * files.
-     * @return Throws TskException on error.
-     */
-    void createUnallocSectorsImgFiles(const std::string &outputFolderPath, const std::string &outputFileName, size_t maxOutputFileSize, SectorRuns &sectorRuns, bool scheduleCarving) const;
-
-    /** 
-     * Creates a folder. If the specified folder already exists, deletes it
-     * first.
-     * 
-     * @param path Path of the folder to be created.
-     * @return Throws TskException on error
-     */
-    void createFolder(const std::string &path) const;
-
-    /** 
-     *  Maps the sectors written to an unallocated sectors image file to the 
-     *  corresponding sectors in the image and writes the results to the image 
-     *  database.
-     * 
-     *  @param unallocSectorsImgId ID assigned to the unallocated sectors image
-     *  file by TskImgDB::addUnallocImg().
-     *  @param outputFileHandle File handle used to access the unallocated 
-     *  sectors image file.
-     *  @param startingFileOffset Starting offset in the unallocated sectors 
-     *  image file (in bytes) of the unallocated sectors run or part of a 
-     *  sectors run that was written to the file. 
-     *  @param endingFileOffset Ending offset in the unallocated sectors image
-     *  file (in bytes) of the unallocated sectors run or part of a sectors run
-     *  that was written to the file.
-     *  @param volumeID Volume ID of the volume that was the source of the 
-     *  unallocated sectors run or part of a sectors run that was written to the
-     *  unallocated sectors image file.
-     *  @param startingImageOffset Starting offset in the image (in sectors) of 
-     *  the unallocated sectors run or part of a sectors run that was written to 
-     *  the unallocated sectors image file.  
-     *  @return Throws TskException on error.
-     */
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskCarvePrepSectorConcat.h
+ * Contains the interface of the TskCarvePrepSectorConcat class.
+ */
+
+#ifndef _TSK_CARVE_PREP_CONCAT_H
+#define _TSK_CARVE_PREP_CONCAT_H
+
+// TSK Framework includes
+#include "CarvePrep.h"
+
+// C/C++ library includes
+#include <string>
+
+/**
+ * The TskCarvePrepSectorConcat class implements the CarvePrep abstract 
+ * interface. It concatenates unallocated sector runs from an image and writes
+ * the contents to one or more unallocated sectors image files with a 
+ * configurable maximum size. Instances of this class are also able to treat a
+ * file as a run of unallocated sectors, whcih may be helpful for carving page
+ * files, etc. 
+ *
+ * This class assumes the availability of the Microsoft Windows API.
+ * @@@ TODO: Use Poco API instead.
+ */
+class TSK_FRAMEWORK_API TskCarvePrepSectorConcat : public CarvePrep
+{
+public:
+	TskCarvePrepSectorConcat();
+	virtual ~TskCarvePrepSectorConcat() {}
+
+    virtual int processSectors(bool scheduleCarving);
+
+    /**
+     * Treats the contents of a set of files as unallocated sector runs and 
+     * writes the contents of the files to zero to many unallocated sectors 
+     * image files for later carving. This may be useful for carving page
+     * files, hibernation files, etc.
+     *
+     * @param fileName Output files for all files with this name will be 
+     * generated.
+     * @param scheduleCarving Set to true if carving of the output files should
+     * be scheduled.
+     * @return Throws TskException on error.
+     */
+    void processFiles(const std::string &fileName, bool scheduleCarving) const;
+
+protected:
+
+    /**
+     * Called by createUnallocSectorsImgFiles to allow specialization of 
+     * behavior when an unallocated sectors image file is produced. The default
+     * implementation optionally schedules carving of the output file.
+     *
+     * @param unallocSectorsImgId ID assigned to the file by 
+     * TskImgDB::addUnallocImg().
+     * @param scheduleCarving Set to true if carving of the output file should
+     * be scheduled.
+     * @return Default implementation throws TskException on error.
+     */
+    virtual void onUnallocSectorsImgFileCreated(int unallocSectorsImgId, bool scheduleCarving) const; 
+
+private:
+
+    /**
+     * Looks up carving parameters and creates the output folder
+     * if it doesn't already exist.
+     *
+     * @param outputFolderPath The value of the CARVE_DIR system property 
+     * or a default value.
+     * @param outputFileName  The value of the UNALLOC_IMG_FILE_NAME system 
+     * property or a default value.
+     * @param maxOutputFileSize  The value of the MAX_UNALLOC_IMG_FILE_SIZE 
+     * system property or a default value.
+     * @return Throws TskException on error.
+     */
+    void setUpForCarvePrep(std::string &outputFolderPath, std::string &outputFileName, size_t &maxOutputFileSize) const;
+
+    /** 
+     * Writes sector runs to one or more unallocated sectors image files. The 
+     * maximum size of any single output file will not exceed the value of the 
+     * MAX_UNALLOC_IMG_FILE_SIZE system property (or default) and each output 
+     * file will contain sectors from only a single volume, unless 
+     * MAX_UNALLOC_IMG_FILE_SIZE is set to zero In that case, output files 
+     * break on volume boundaries. 
+     * 
+     * @param outputFolderPath Folder to which the output files are written.
+     * @param outputFileName  Name given to the output files.
+     * @param maxOutputFileSize  Maximum output file size.
+     * @param sectorRuns Sector runs to be written to the output files.
+     * @param scheduleCarving Whether or not to schedule carving of the output 
+     * files.
+     * @return Throws TskException on error.
+     */
+    void createUnallocSectorsImgFiles(const std::string &outputFolderPath, const std::string &outputFileName, size_t maxOutputFileSize, SectorRuns &sectorRuns, bool scheduleCarving) const;
+
+    /** 
+     * Creates a folder. If the specified folder already exists, deletes it
+     * first.
+     * 
+     * @param path Path of the folder to be created.
+     * @return Throws TskException on error
+     */
+    void createFolder(const std::string &path) const;
+
+    /** 
+     *  Maps the sectors written to an unallocated sectors image file to the 
+     *  corresponding sectors in the image and writes the results to the image 
+     *  database.
+     * 
+     *  @param unallocSectorsImgId ID assigned to the unallocated sectors image
+     *  file by TskImgDB::addUnallocImg().
+     *  @param outputFileHandle File handle used to access the unallocated 
+     *  sectors image file.
+     *  @param startingFileOffset Starting offset in the unallocated sectors 
+     *  image file (in bytes) of the unallocated sectors run or part of a 
+     *  sectors run that was written to the file. 
+     *  @param endingFileOffset Ending offset in the unallocated sectors image
+     *  file (in bytes) of the unallocated sectors run or part of a sectors run
+     *  that was written to the file.
+     *  @param volumeID Volume ID of the volume that was the source of the 
+     *  unallocated sectors run or part of a sectors run that was written to the
+     *  unallocated sectors image file.
+     *  @param startingImageOffset Starting offset in the image (in sectors) of 
+     *  the unallocated sectors run or part of a sectors run that was written to 
+     *  the unallocated sectors image file.  
+     *  @return Throws TskException on error.
+     */
     void mapFileToImage(int unallocSectorsImgId, std::ofstream & outfile, uint64_t startingFileOffset, uint64_t endingFileOffset, int volumeID, uint64_t startingImageOffset) const;
-};
-
-#endif
+};
+
+#endif
diff --git a/framework/tsk/framework/extraction/TskImageFile.cpp b/framework/tsk/framework/extraction/TskImageFile.cpp
index bd7df9a457c20ba67bc99fed51b4a395ec2c90a5..891b9e875b112b2cedf4815928f9a5d75deb45d2 100755
--- a/framework/tsk/framework/extraction/TskImageFile.cpp
+++ b/framework/tsk/framework/extraction/TskImageFile.cpp
@@ -1,30 +1,30 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskImageFile.cpp
- * Contains the implementation for the TskImageFile base class.
- */
-
-#include "TskImageFile.h"
-
-/**
- *
- */
-TskImageFile::TskImageFile()
-{
-}
-
-/**
- *
- */
-TskImageFile::~TskImageFile()
-{
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskImageFile.cpp
+ * Contains the implementation for the TskImageFile base class.
+ */
+
+#include "TskImageFile.h"
+
+/**
+ *
+ */
+TskImageFile::TskImageFile()
+{
+}
+
+/**
+ *
+ */
+TskImageFile::~TskImageFile()
+{
+}
diff --git a/framework/tsk/framework/extraction/TskImageFile.h b/framework/tsk/framework/extraction/TskImageFile.h
index db7ed535a5e45fdef265d1453286df5c1c18c900..e6c25c003f652b297c79eb8c7d860bc5a3ae650e 100755
--- a/framework/tsk/framework/extraction/TskImageFile.h
+++ b/framework/tsk/framework/extraction/TskImageFile.h
@@ -1,203 +1,203 @@
-/*
- *
- *  The Sleuth Kit
- *
- *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- *  reserved.
- *
- *  This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskImageFile.h
- * Contains the interface for the TskImageFile class.
- */
-
-#ifndef _TSK_IMAGEFILE_H
-#define _TSK_IMAGEFILE_H
-
-#include "tsk/framework/framework_i.h"
-#include <vector>
-#include <string>
-
-/**
- * An interface to a class that allows file system and low-level 
- * access to a disk image.
- * It supports opening split image files, extracting file system 
- * information from the image and extracting data for a specific file
- * or for a range of sectors.  You must call one of the open() methods
- * before using any of the other methods in the interface. 
- */
-class TSK_FRAMEWORK_API TskImageFile
-{
-public:
-    /**
-     * You must call one of the open() methods after creating the object.
-     */
-    TskImageFile();
-
-    virtual ~TskImageFile();
-
-    /**
-     * open the images at the paths saved in ImgDB
-     * @returns 0 on success and -1 on error
-     */
-    virtual int open() = 0;
-
-    /// Close the disk image.
-    virtual void close() = 0;
-
-    /// Return the file name(s) that make up the image.
-    virtual std::vector<std::string> getFileNames() const = 0;
-    virtual std::vector<std::wstring> getFileNamesW() const = 0;
-
-    /**
-     * Analyze the volume and file systems in the opened images and 
-     * populate the TskImgDB instance registered with TskServices.  This
-     * will not perform file carving.
-     * @returns 1 if there was a major error that prevented any extraction.  0 will
-     * be returned if there were minor errors during extraction or if there were 
-     * no errors.
-     */
-    virtual int extractFiles() = 0;
-
-    /**
-     * Return the data located at the given sector offset in the disk image.
-     * @param sect_start Sector offset into image from which to return data
-     * @param sect_len Number of sectors to read
-     * @param buffer A buffer into which data will be placed. Must be at
-     * least len * 512 large
-     * @return Number of sectors read or -1 on error
-     */
-    virtual int getSectorData(const uint64_t sect_start, 
-                              const uint64_t sect_len, 
-                              char *buffer) = 0;
-
-    /**
-     * Return the data located at the given byte offset in the disk image.
-     * @param byte_start Byte offset into image from which to return data
-     * @param byte_len Number of bytes to read
-     * @param buffer A buffer into which data will be placed. Must be at
-     * least byte_len large
-     * @return Number of bytes read or -1 on error
-     */
-    virtual int getByteData(const uint64_t byte_start, 
-                            const uint64_t byte_len, 
-                            char *buffer) = 0;
-
-    /**
-     * Provides access to the content of a specific file that was extracted from the disk image.
-     *
-     * @param fileId ID of the file (can be found in database)
-     * @returns A handle to the file or -1 on error.
-     */
-    virtual int openFile(const uint64_t fileId) = 0;
-
-    /**
-     * Reads content of a file that was opened with openFile(). 
-     * @param handle File handle that was returned by an earlier call to openFile()
-     * @param byte_offset Starting byte offset from which to read data
-     * @param byte_len The number of bytes to read
-     * @param buffer A buffer into which data will be placed. Must be at least
-     * byte_len bytes.
-     * @return Number of bytes read or -1 on error
-     */
-    virtual int readFile(const int handle, 
-                         const TSK_OFF_T byte_offset, 
-                         const size_t byte_len, 
-                         char * buffer) = 0;
-   /**
-     * Closes an opened file.
-     * @param handle File handle that was returned by an earlier call to openFile()
-     */
-    virtual int closeFile(const int handle) = 0;
-
-    /**
-    * Opens a single (non-split) disk image file so that it can be read.
-    *
-    * @param imageFile The path to the image file
-    * @param imageType The disk image type (can be autodetection)
-    * @param sectorSize Size of device sector in bytes (or 0 for default)
-    *
-    * @return -1 on error and 0 on success
-    */
-    virtual int open(const TSK_TCHAR *imageFile, 
-                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
-                     const unsigned int sectorSize = 0) = 0;
-
-    /**
-    * Opens one or more disk image files so that they can be read. e UTF8, then consider
-    *
-    * @param numberOfImages The number of images to open (will be > 1 for split images).
-    * @param imageFile The path to the image files (the number of files must
-    * be equal to num_img and they must be in a sorted order)
-    * @param imageType The disk image type (can be autodetection)
-    * @param sectorSize Size of device sector in bytes (or 0 for default)
-    *
-    * @return -1 on error and 0 on success
-    */
-    virtual int open(const int numberOfImages, 
-                     const TSK_TCHAR * const imageFile[], 
-                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
-                     const unsigned int sectorSize = 0) = 0;
-
-    /**
-    * Opens a single (non-split) disk image file so that it can be read.  This version
-    * always takes a UTF-8 encoding of the disk image.
-    *
-    * @param imageFile The UTF-8 path to the image file
-    * @param imageType The disk image type (can be autodetection)
-    * @param sectionSize Size of device sector in bytes (or 0 for default)
-    *
-    * @return -1 on error and 0 on success
-    */
-    virtual int open(const std::string &imageFile, 
-                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
-                     const unsigned int sectorSize = 0) = 0;
-
-    /**
-    * Opens a single (non-split) disk image file so that it can be read.
-    *
-    * @param imageFile The path to the image file
-    * @param imageType The disk image type (can be autodetection)
-    * @param sectionSize Size of device sector in bytes (or 0 for default)
-    *
-    * @return -1 on error and 0 on success
-    */
-    virtual int open(const std::wstring &imageFile, 
-                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
-                     const unsigned int sectorSize = 0) = 0;
-
-    /**
-    * Opens one or more disk image files so that they can be read.  This
-    * version always takes a UTF-8 encoding of the image files.
-    *
-    * @param imageFile A vector of UTF-8 encoded image files
-    * @param imageType The disk image type (can be autodetection)
-    * @param sectorSize Size of device sector in bytes (or 0 for default)
-    *
-    * @return -1 on error and 0 on success
-    */
-    virtual int open(const std::vector<std::string> &imageFile, 
-                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
-                     const unsigned int sectorSize = 0) = 0;
-
-    /**
-    * Opens one or more disk image files so that they can be read.
-    *
-    * @param imageFile A vector of image files
-    * @param imageType The disk image type (can be autodetection)
-    * @param sectorSize Size of device sector in bytes (or 0 for default)
-    *
-    * @return -1 on error and 0 on success
-    */
-    virtual int open(const std::vector<std::wstring> &imageFile,
-                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT,
-                     const unsigned int sectorSize = 0) = 0;
-
-private:
-
-};
-
-#endif
+/*
+ *
+ *  The Sleuth Kit
+ *
+ *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ *  reserved.
+ *
+ *  This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskImageFile.h
+ * Contains the interface for the TskImageFile class.
+ */
+
+#ifndef _TSK_IMAGEFILE_H
+#define _TSK_IMAGEFILE_H
+
+#include "tsk/framework/framework_i.h"
+#include <vector>
+#include <string>
+
+/**
+ * An interface to a class that allows file system and low-level 
+ * access to a disk image.
+ * It supports opening split image files, extracting file system 
+ * information from the image and extracting data for a specific file
+ * or for a range of sectors.  You must call one of the open() methods
+ * before using any of the other methods in the interface. 
+ */
+class TSK_FRAMEWORK_API TskImageFile
+{
+public:
+    /**
+     * You must call one of the open() methods after creating the object.
+     */
+    TskImageFile();
+
+    virtual ~TskImageFile();
+
+    /**
+     * open the images at the paths saved in ImgDB
+     * @returns 0 on success and -1 on error
+     */
+    virtual int open() = 0;
+
+    /// Close the disk image.
+    virtual void close() = 0;
+
+    /// Return the file name(s) that make up the image.
+    virtual std::vector<std::string> getFileNames() const = 0;
+    virtual std::vector<std::wstring> getFileNamesW() const = 0;
+
+    /**
+     * Analyze the volume and file systems in the opened images and 
+     * populate the TskImgDB instance registered with TskServices.  This
+     * will not perform file carving.
+     * @returns 1 if there was a major error that prevented any extraction.  0 will
+     * be returned if there were minor errors during extraction or if there were 
+     * no errors.
+     */
+    virtual int extractFiles() = 0;
+
+    /**
+     * Return the data located at the given sector offset in the disk image.
+     * @param sect_start Sector offset into image from which to return data
+     * @param sect_len Number of sectors to read
+     * @param buffer A buffer into which data will be placed. Must be at
+     * least len * 512 large
+     * @return Number of sectors read or -1 on error
+     */
+    virtual int getSectorData(const uint64_t sect_start, 
+                              const uint64_t sect_len, 
+                              char *buffer) = 0;
+
+    /**
+     * Return the data located at the given byte offset in the disk image.
+     * @param byte_start Byte offset into image from which to return data
+     * @param byte_len Number of bytes to read
+     * @param buffer A buffer into which data will be placed. Must be at
+     * least byte_len large
+     * @return Number of bytes read or -1 on error
+     */
+    virtual int getByteData(const uint64_t byte_start, 
+                            const uint64_t byte_len, 
+                            char *buffer) = 0;
+
+    /**
+     * Provides access to the content of a specific file that was extracted from the disk image.
+     *
+     * @param fileId ID of the file (can be found in database)
+     * @returns A handle to the file or -1 on error.
+     */
+    virtual int openFile(const uint64_t fileId) = 0;
+
+    /**
+     * Reads content of a file that was opened with openFile(). 
+     * @param handle File handle that was returned by an earlier call to openFile()
+     * @param byte_offset Starting byte offset from which to read data
+     * @param byte_len The number of bytes to read
+     * @param buffer A buffer into which data will be placed. Must be at least
+     * byte_len bytes.
+     * @return Number of bytes read or -1 on error
+     */
+    virtual int readFile(const int handle, 
+                         const TSK_OFF_T byte_offset, 
+                         const size_t byte_len, 
+                         char * buffer) = 0;
+   /**
+     * Closes an opened file.
+     * @param handle File handle that was returned by an earlier call to openFile()
+     */
+    virtual int closeFile(const int handle) = 0;
+
+    /**
+    * Opens a single (non-split) disk image file so that it can be read.
+    *
+    * @param imageFile The path to the image file
+    * @param imageType The disk image type (can be autodetection)
+    * @param sectorSize Size of device sector in bytes (or 0 for default)
+    *
+    * @return -1 on error and 0 on success
+    */
+    virtual int open(const TSK_TCHAR *imageFile, 
+                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
+                     const unsigned int sectorSize = 0) = 0;
+
+    /**
+    * Opens one or more disk image files so that they can be read. e UTF8, then consider
+    *
+    * @param numberOfImages The number of images to open (will be > 1 for split images).
+    * @param imageFile The path to the image files (the number of files must
+    * be equal to num_img and they must be in a sorted order)
+    * @param imageType The disk image type (can be autodetection)
+    * @param sectorSize Size of device sector in bytes (or 0 for default)
+    *
+    * @return -1 on error and 0 on success
+    */
+    virtual int open(const int numberOfImages, 
+                     const TSK_TCHAR * const imageFile[], 
+                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
+                     const unsigned int sectorSize = 0) = 0;
+
+    /**
+    * Opens a single (non-split) disk image file so that it can be read.  This version
+    * always takes a UTF-8 encoding of the disk image.
+    *
+    * @param imageFile The UTF-8 path to the image file
+    * @param imageType The disk image type (can be autodetection)
+    * @param sectionSize Size of device sector in bytes (or 0 for default)
+    *
+    * @return -1 on error and 0 on success
+    */
+    virtual int open(const std::string &imageFile, 
+                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
+                     const unsigned int sectorSize = 0) = 0;
+
+    /**
+    * Opens a single (non-split) disk image file so that it can be read.
+    *
+    * @param imageFile The path to the image file
+    * @param imageType The disk image type (can be autodetection)
+    * @param sectionSize Size of device sector in bytes (or 0 for default)
+    *
+    * @return -1 on error and 0 on success
+    */
+    virtual int open(const std::wstring &imageFile, 
+                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
+                     const unsigned int sectorSize = 0) = 0;
+
+    /**
+    * Opens one or more disk image files so that they can be read.  This
+    * version always takes a UTF-8 encoding of the image files.
+    *
+    * @param imageFile A vector of UTF-8 encoded image files
+    * @param imageType The disk image type (can be autodetection)
+    * @param sectorSize Size of device sector in bytes (or 0 for default)
+    *
+    * @return -1 on error and 0 on success
+    */
+    virtual int open(const std::vector<std::string> &imageFile, 
+                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
+                     const unsigned int sectorSize = 0) = 0;
+
+    /**
+    * Opens one or more disk image files so that they can be read.
+    *
+    * @param imageFile A vector of image files
+    * @param imageType The disk image type (can be autodetection)
+    * @param sectorSize Size of device sector in bytes (or 0 for default)
+    *
+    * @return -1 on error and 0 on success
+    */
+    virtual int open(const std::vector<std::wstring> &imageFile,
+                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT,
+                     const unsigned int sectorSize = 0) = 0;
+
+private:
+
+};
+
+#endif
diff --git a/framework/tsk/framework/extraction/TskImageFileTsk.cpp b/framework/tsk/framework/extraction/TskImageFileTsk.cpp
index 009eafa846558133c2d1fc34cd1dbb417798b876..be3e3c12451b81959e19b1304951818a06039fed 100755
--- a/framework/tsk/framework/extraction/TskImageFileTsk.cpp
+++ b/framework/tsk/framework/extraction/TskImageFileTsk.cpp
@@ -1,430 +1,430 @@
-/*
- *
- *  The Sleuth Kit
- *
- *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- *  reserved.
- *
- *  This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskImageFileTsk.cpp
- * Contains The Sleuth Kit implementation of the TskImageFile interface.
- */
-
-#include <iostream>
-#include <sstream>
-#include <algorithm>
-
-#include "TskImageFileTsk.h"
-#include "TskAutoImpl.h"
-#include "tsk/framework/utilities/TskUtilities.h"
-#include "tsk/framework/services/TskServices.h"
-#include "tsk/base/tsk_base_i.h"
-
-
-/**
- * Utility function to close file system handles.
- * @param pair An element from the file system map.
- */
-void TskImageFileTsk::closeFs(std::pair<uint64_t, TSK_FS_INFO*> pair)
-{
-    tsk_fs_close(pair.second);
-}
-
-TskImageFileTsk::TskImageFileTsk() : m_db(TskServices::Instance().getImgDB())
-{
-    m_img_info = NULL;
-    m_images_ptrs = NULL;
-}
-
-TskImageFileTsk::~TskImageFileTsk()
-{
-    close();
-}
-
-/*
- * Opens the image files listed in ImgDB for later analysis and extraction.  
- * @returns -1 on error and 0 on success
- */
-int TskImageFileTsk::open()
-{
-    if (!m_images.empty()) {
-        close();        
-    }
-    std::vector<std::string> images = m_db.getImageNames();
-    if (images.empty()) {
-        LOGERROR(L"TskImageFileTsk::open: Error getting image names from ImgDB");
-        return -1;
-    }
-    for (size_t i = 0; i < images.size(); i++) {
-        m_images.push_back(images[i]);
-    }
-    return openImages();
-}
-
-/**
- * Open the image using the names that were already populated in
- * m_images.  Used internally by both open() methods.
- * @returns -1 on error.
- */
-int TskImageFileTsk::openImages(const TSK_IMG_TYPE_ENUM imageType,
-                                const unsigned int sectorSize) 
-{
-    m_images_ptrs = (const char **)malloc(m_images.size() * sizeof(char *));
-    if (m_images_ptrs == NULL)
-        return -1;
-
-    int i = 0;
-    for(std::vector<std::string>::iterator list_iter = m_images.begin(); 
-        list_iter != m_images.end(); list_iter++) {
-            m_images_ptrs[i++] = (*list_iter).c_str();
-    }
-
-    m_img_info = tsk_img_open_utf8(i, m_images_ptrs, imageType, sectorSize);
-    if (m_img_info == NULL) 
-    {
-        std::wstringstream logMessage;
-        logMessage << L"TskImageFileTsk::openImages - Error with tsk_img_open: " << tsk_error_get() << std::endl;
-        LOGERROR(logMessage.str());
-
-        return -1;
-    }
-
-    return 0;
-}
-
-
-void TskImageFileTsk::close()
-{
-    if (m_img_info) {
-        tsk_img_close(m_img_info);
-        m_img_info = NULL;
-    }
-
-    if (m_images_ptrs) {
-        free(m_images_ptrs);
-        m_images_ptrs = NULL;
-    }
-
-    m_images.clear();
-
-    // Close the handles in m_openFiles and m_openFs
-    for (uint32_t i = 0; i < m_openFiles.size(); i++)
-        closeFile(i);
-
-    std::for_each(m_openFs.begin(), m_openFs.end(), (&TskImageFileTsk::closeFs));
-}
-
-/*
- * @param start Sector offset to start reading from in current sector run
- * @param len Number of sectors to read
- * @param a_buffer Buffer to read into (must be of size a_len * 512 or larger)
- * @returns -1 on error or number of sectors read
- */
-int TskImageFileTsk::getSectorData(const uint64_t sect_start, 
-                                const uint64_t sect_len, 
-                                char *buffer)
-{
-    int retval = getByteData(sect_start*512, sect_len*512, buffer);
-    if (retval != -1)
-        return retval / 512;
-    else
-        return retval;
-}
-
-/*
- * @param byte_start Byte offset to start reading from start of file
- * @param byte_len Number of bytes to read
- * @param buffer Buffer to read into (must be of size byte_len or larger)
- * @returns -1 on error or number of bytes read
- */
-int TskImageFileTsk::getByteData(const uint64_t byte_start, 
-                                const uint64_t byte_len, 
-                                char *buffer)
-{
-    if (m_img_info == NULL) {
-        if (open() != 0)
-            return -1;
-    }
-
-    int retval = tsk_img_read(m_img_info, byte_start, buffer, (size_t)(byte_len));
-    if (retval == -1) {
-        std::wstringstream message;
-        message << L"TskImageFileTsk::getByteData - tsk_img_read -- start: " 
-            << byte_start << " -- len: " << byte_len
-            << "(" << tsk_error_get() << ")" << std::endl;
-        LOGERROR(message.str());
-        return -1;
-    }
-
-    return retval;
-}
-
-int TskImageFileTsk::extractFiles()
-{
-    // @@@ Add Sanity check that DB is empty 
-    if (m_img_info == NULL) {
-        LOGERROR(L"TskImageFileTsk::extractFiles: Images not open yet\n");
-        return 1;
-    }
-
-    m_db.addImageInfo((int)m_img_info->itype, m_img_info->sector_size);
-
-    for (uint32_t i = 0; i < m_images.size(); i++) {
-        const char *img_ptr = NULL;
-        img_ptr = m_images[i].c_str();
-        m_db.addImageName(img_ptr);
-     }
-
-    TSKAutoImpl tskAutoImpl;
-    if (tskAutoImpl.openImage(m_img_info)) 
-    {
-        std::wstringstream msg;
-        msg << L"TSKExtract::processImage - Error opening image: " << tsk_error_get() << std::endl;
-        LOGERROR(msg.str());
-        return 1;
-    }
-
-    // TskAutoImpl will log errors as they occur
-    tskAutoImpl.extractFiles();
-
-    // It's possible that this is an image with no volumes or file systems.
-    // Scan the image for file systems starting at sector 0.
-    // By default it will scan 1024 sectors.
-    if (m_db.getNumVolumes() == 0)
-    {
-        tskAutoImpl.scanImgForFs(0);
-    }
-
-    return 0;
-}
-
-int TskImageFileTsk::openFile(const uint64_t fileId)
-{
-    if (m_img_info == NULL) {
-        if (open() != 0)
-            return -1;
-    }
-
-    // Use ImgDb::getFileUniqueIdentifiers to get the four needed values.
-    uint64_t fsByteOffset = 0;
-    uint64_t fsFileId = 0;
-    int attrType = TSK_FS_ATTR_TYPE_NOT_FOUND;
-    int attrId = 0;
-
-    if (m_db.getFileUniqueIdentifiers(fileId, fsByteOffset, fsFileId, attrType, attrId) != 0)
-    {
-        LOGERROR(L"TskImageFileTsk::openFile - Error getting file identifiers.\n");
-        return -1;
-    }
-
-    // Check if the file system at the offset is already open (using m_openFs).  If not, open it (tsk_fs_open) and add it to the map.
-    TSK_FS_INFO * fsInfo = m_openFs[fsByteOffset];
-
-    if (fsInfo == NULL)
-    {
-        // Open the file system and add it to the map.
-        fsInfo = tsk_fs_open_img(m_img_info, fsByteOffset, TSK_FS_TYPE_DETECT);
-
-        if (fsInfo == NULL)
-        {
-            std::wstringstream errorMsg;
-            errorMsg << L"TskImageFileTsk::openFile - Error opening file system : " << tsk_error_get();
-            LOGERROR(errorMsg.str());
-            return -1;
-        }
-
-        m_openFs[fsByteOffset] = fsInfo;
-    }
-
-    // Find a new entry in m_openFiles and use tsk_fs_file_open to open the file and save the handle in m_openFiles. 
-    TSK_FS_FILE * fsFile = tsk_fs_file_open_meta(fsInfo, NULL, fsFileId);
-
-    if (fsFile == NULL)
-    {
-        std::wstringstream errorMsg;
-        errorMsg << L"TskImageFileTsk::openFile - Error opening file : " << tsk_error_get();
-        LOGERROR(errorMsg.str());
-        return -1;
-    }
-
-    const TSK_FS_ATTR * fsAttr = tsk_fs_file_attr_get_id(fsFile, attrId);
-
-    // @@@ TSK_ATTR_TYPE_ENUM should have a value added to it to represent an
-    // empty (or null) attribute type and we should then compare attrType against
-    // this enum value instead of 0.
-
-    // It is possible to have a file with no attributes. We only report an
-    // error if we are expecting a valid attribute.
-    if (attrType != TSK_FS_ATTR_TYPE_NOT_FOUND && fsAttr == NULL)
-    {
-        std::wstringstream msg;
-        msg << L"TskImageFileTsk::openFile - Error getting attribute : " << tsk_error_get();
-        LOGERROR(msg.str());
-        return -1;
-    }
-
-    TskImageFileTsk::OPEN_FILE * openFile = new TskImageFileTsk::OPEN_FILE();
-    openFile->fsFile = fsFile;
-    openFile->fsAttr = fsAttr;
-
-    m_openFiles.push_back(openFile);
-
-    // Return the index into m_openFiles
-    return m_openFiles.size() - 1;
-}
-
-int TskImageFileTsk::readFile(const int handle, 
-                              const TSK_OFF_T byte_offset, 
-                              const size_t byte_len, 
-                              char * buffer)
-{
-    TskImageFileTsk::OPEN_FILE * openFile = m_openFiles[handle];
-
-    if (openFile == NULL || openFile->fsFile == NULL)
-    {
-        std::wstringstream errorMsg;
-        errorMsg << L"TskImageFileTsk::readFile - Either OPEN_FILE or TSK_FS_FILE is null." << std::endl;
-        LOGERROR(errorMsg.str());
-        return -1;
-    }
-
-    // fsAttr can be NULL if the file has no attributes.
-    if (openFile->fsAttr == NULL || (TSK_OFF_T)byte_offset >= openFile->fsAttr->size)
-    {
-        // If the offset is larger than the attribute size then there is nothing left to read.
-        return 0;
-    }
-
-    int bytesRead = tsk_fs_attr_read(openFile->fsAttr, byte_offset, buffer, 
-                                          byte_len, TSK_FS_FILE_READ_FLAG_NONE);
-    if (bytesRead == -1)
-    {
-        std::wstringstream errorMsg;
-        errorMsg << L"TskImageFileTsk::readFile - Error reading file (FS_OFFSET: " 
-            << openFile->fsFile->fs_info->offset << " - ID: "
-            << openFile->fsFile->meta->addr << " - " 
-            << ((openFile->fsFile->meta->flags & TSK_FS_META_FLAG_ALLOC) ? "Allocated" : "Deleted")
-            << ") (" 
-            << tsk_error_get() << ")" << std::endl;
-        LOGERROR(errorMsg.str());
-    }
-
-    return bytesRead;
-}
-
-int TskImageFileTsk::closeFile(const int handle)
-{
-    // get the handle from m_openFiles
-    TskImageFileTsk::OPEN_FILE * openFile = m_openFiles[handle];
-
-    if (openFile == NULL || openFile->fsFile == NULL)
-    {
-        std::wstringstream errorMsg;
-        errorMsg << L"TskImageFileTsk::closeFile - Either OPEN_FILE ot TSK_FS_FILE is null." << std::endl;
-        LOGERROR(errorMsg.str());
-        return -1;
-    }
-
-    // close the file
-    tsk_fs_file_close(openFile->fsFile);
-
-    // remove the entry from m_openFiles
-    m_openFiles.erase(m_openFiles.begin() + handle);
-
-    // delete the struct
-    delete openFile;
-
-    return 0;
-}
-
-std::vector<std::wstring> TskImageFileTsk::getFileNamesW() const
-{
-    std::vector<std::wstring>imagesWide;
-    for (size_t i = 0; i < imagesWide.size(); i++) {
-        imagesWide.push_back(TskUtilities::toUTF16(m_images[i]));
-    }
-    return imagesWide;
-}
-
-int TskImageFileTsk::open(const TSK_TCHAR *imageFile, 
-                          const TSK_IMG_TYPE_ENUM imageType,
-                          const unsigned int sectorSize)
-{
-    if (!m_images.empty()) {
-        close();        
-    }
-#ifdef TSK_WIN32
-    m_images.push_back(TskUtilities::toUTF8(imageFile));
-#else
-    m_images.push_back(std::string(imageFile));
-#endif
-    return openImages(imageType, sectorSize);
-}
-
-int TskImageFileTsk::open(const int numberOfImages, 
-                          const TSK_TCHAR * const imageFile[], 
-                          const TSK_IMG_TYPE_ENUM imageType,
-                          const unsigned int sectorSize)
-{
-    if (!m_images.empty()) {
-        close();        
-    }
-    for (int i = 0; i < numberOfImages; i++) {
-#ifdef WIN32
-        m_images.push_back(TskUtilities::toUTF8(imageFile[i]));
-#else
-        m_images.push_back(std::string(imageFile[i]));
-#endif
-    }
-    return openImages(imageType, sectorSize);
-}
-
-int TskImageFileTsk::open(const std::string &imageFile, 
-                          const TSK_IMG_TYPE_ENUM imageType,
-                          const unsigned int sectorSize)
-{
-    if (!m_images.empty()) {
-        close();        
-    }
-    m_images.push_back(imageFile);
-    return openImages(imageType, sectorSize);
-}
-
-int TskImageFileTsk::open(const std::wstring &imageFile, 
-                          const TSK_IMG_TYPE_ENUM imageType,
-                          const unsigned int sectorSize)
-{
-    return open(TskUtilities::toUTF8(imageFile), imageType, sectorSize);
-}
-
-int TskImageFileTsk::open(const std::vector<std::string> &imageFile, 
-                          const TSK_IMG_TYPE_ENUM imageType,
-                          const unsigned int sectorSize)
-{
-    if (!m_images.empty()) {
-        close();        
-    }
-    for (size_t i = 0; i < imageFile.size(); i++) {
-        m_images.push_back(imageFile[i]);
-    }
-    return openImages(imageType, sectorSize);
-}
-
-int TskImageFileTsk::open(const std::vector<std::wstring> &imageFile, 
-                          const TSK_IMG_TYPE_ENUM imageType,
-                          const unsigned int sectorSize)
-{
-    if (!m_images.empty()) {
-        close();        
-    }
-    for (size_t i = 0; i < imageFile.size(); i++) {
-        m_images.push_back(TskUtilities::toUTF8(imageFile[i]));
-    }
-    return openImages(imageType, sectorSize);
-}
-
-
+/*
+ *
+ *  The Sleuth Kit
+ *
+ *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ *  reserved.
+ *
+ *  This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskImageFileTsk.cpp
+ * Contains The Sleuth Kit implementation of the TskImageFile interface.
+ */
+
+#include <iostream>
+#include <sstream>
+#include <algorithm>
+
+#include "TskImageFileTsk.h"
+#include "TskAutoImpl.h"
+#include "tsk/framework/utilities/TskUtilities.h"
+#include "tsk/framework/services/TskServices.h"
+#include "tsk/base/tsk_base_i.h"
+
+
+/**
+ * Utility function to close file system handles.
+ * @param pair An element from the file system map.
+ */
+void TskImageFileTsk::closeFs(std::pair<uint64_t, TSK_FS_INFO*> pair)
+{
+    tsk_fs_close(pair.second);
+}
+
+TskImageFileTsk::TskImageFileTsk() : m_db(TskServices::Instance().getImgDB())
+{
+    m_img_info = NULL;
+    m_images_ptrs = NULL;
+}
+
+TskImageFileTsk::~TskImageFileTsk()
+{
+    close();
+}
+
+/*
+ * Opens the image files listed in ImgDB for later analysis and extraction.  
+ * @returns -1 on error and 0 on success
+ */
+int TskImageFileTsk::open()
+{
+    if (!m_images.empty()) {
+        close();        
+    }
+    std::vector<std::string> images = m_db.getImageNames();
+    if (images.empty()) {
+        LOGERROR(L"TskImageFileTsk::open: Error getting image names from ImgDB");
+        return -1;
+    }
+    for (size_t i = 0; i < images.size(); i++) {
+        m_images.push_back(images[i]);
+    }
+    return openImages();
+}
+
+/**
+ * Open the image using the names that were already populated in
+ * m_images.  Used internally by both open() methods.
+ * @returns -1 on error.
+ */
+int TskImageFileTsk::openImages(const TSK_IMG_TYPE_ENUM imageType,
+                                const unsigned int sectorSize) 
+{
+    m_images_ptrs = (const char **)malloc(m_images.size() * sizeof(char *));
+    if (m_images_ptrs == NULL)
+        return -1;
+
+    int i = 0;
+    for(std::vector<std::string>::iterator list_iter = m_images.begin(); 
+        list_iter != m_images.end(); list_iter++) {
+            m_images_ptrs[i++] = (*list_iter).c_str();
+    }
+
+    m_img_info = tsk_img_open_utf8(i, m_images_ptrs, imageType, sectorSize);
+    if (m_img_info == NULL) 
+    {
+        std::wstringstream logMessage;
+        logMessage << L"TskImageFileTsk::openImages - Error with tsk_img_open: " << tsk_error_get() << std::endl;
+        LOGERROR(logMessage.str());
+
+        return -1;
+    }
+
+    return 0;
+}
+
+
+void TskImageFileTsk::close()
+{
+    if (m_img_info) {
+        tsk_img_close(m_img_info);
+        m_img_info = NULL;
+    }
+
+    if (m_images_ptrs) {
+        free(m_images_ptrs);
+        m_images_ptrs = NULL;
+    }
+
+    m_images.clear();
+
+    // Close the handles in m_openFiles and m_openFs
+    for (uint32_t i = 0; i < m_openFiles.size(); i++)
+        closeFile(i);
+
+    std::for_each(m_openFs.begin(), m_openFs.end(), (&TskImageFileTsk::closeFs));
+}
+
+/*
+ * @param start Sector offset to start reading from in current sector run
+ * @param len Number of sectors to read
+ * @param a_buffer Buffer to read into (must be of size a_len * 512 or larger)
+ * @returns -1 on error or number of sectors read
+ */
+int TskImageFileTsk::getSectorData(const uint64_t sect_start, 
+                                const uint64_t sect_len, 
+                                char *buffer)
+{
+    int retval = getByteData(sect_start*512, sect_len*512, buffer);
+    if (retval != -1)
+        return retval / 512;
+    else
+        return retval;
+}
+
+/*
+ * @param byte_start Byte offset to start reading from start of file
+ * @param byte_len Number of bytes to read
+ * @param buffer Buffer to read into (must be of size byte_len or larger)
+ * @returns -1 on error or number of bytes read
+ */
+int TskImageFileTsk::getByteData(const uint64_t byte_start, 
+                                const uint64_t byte_len, 
+                                char *buffer)
+{
+    if (m_img_info == NULL) {
+        if (open() != 0)
+            return -1;
+    }
+
+    int retval = tsk_img_read(m_img_info, byte_start, buffer, (size_t)(byte_len));
+    if (retval == -1) {
+        std::wstringstream message;
+        message << L"TskImageFileTsk::getByteData - tsk_img_read -- start: " 
+            << byte_start << " -- len: " << byte_len
+            << "(" << tsk_error_get() << ")" << std::endl;
+        LOGERROR(message.str());
+        return -1;
+    }
+
+    return retval;
+}
+
+int TskImageFileTsk::extractFiles()
+{
+    // @@@ Add Sanity check that DB is empty 
+    if (m_img_info == NULL) {
+        LOGERROR(L"TskImageFileTsk::extractFiles: Images not open yet\n");
+        return 1;
+    }
+
+    m_db.addImageInfo((int)m_img_info->itype, m_img_info->sector_size);
+
+    for (uint32_t i = 0; i < m_images.size(); i++) {
+        const char *img_ptr = NULL;
+        img_ptr = m_images[i].c_str();
+        m_db.addImageName(img_ptr);
+     }
+
+    TSKAutoImpl tskAutoImpl;
+    if (tskAutoImpl.openImage(m_img_info)) 
+    {
+        std::wstringstream msg;
+        msg << L"TSKExtract::processImage - Error opening image: " << tsk_error_get() << std::endl;
+        LOGERROR(msg.str());
+        return 1;
+    }
+
+    // TskAutoImpl will log errors as they occur
+    tskAutoImpl.extractFiles();
+
+    // It's possible that this is an image with no volumes or file systems.
+    // Scan the image for file systems starting at sector 0.
+    // By default it will scan 1024 sectors.
+    if (m_db.getNumVolumes() == 0)
+    {
+        tskAutoImpl.scanImgForFs(0);
+    }
+
+    return 0;
+}
+
+int TskImageFileTsk::openFile(const uint64_t fileId)
+{
+    if (m_img_info == NULL) {
+        if (open() != 0)
+            return -1;
+    }
+
+    // Use ImgDb::getFileUniqueIdentifiers to get the four needed values.
+    uint64_t fsByteOffset = 0;
+    uint64_t fsFileId = 0;
+    int attrType = TSK_FS_ATTR_TYPE_NOT_FOUND;
+    int attrId = 0;
+
+    if (m_db.getFileUniqueIdentifiers(fileId, fsByteOffset, fsFileId, attrType, attrId) != 0)
+    {
+        LOGERROR(L"TskImageFileTsk::openFile - Error getting file identifiers.\n");
+        return -1;
+    }
+
+    // Check if the file system at the offset is already open (using m_openFs).  If not, open it (tsk_fs_open) and add it to the map.
+    TSK_FS_INFO * fsInfo = m_openFs[fsByteOffset];
+
+    if (fsInfo == NULL)
+    {
+        // Open the file system and add it to the map.
+        fsInfo = tsk_fs_open_img(m_img_info, fsByteOffset, TSK_FS_TYPE_DETECT);
+
+        if (fsInfo == NULL)
+        {
+            std::wstringstream errorMsg;
+            errorMsg << L"TskImageFileTsk::openFile - Error opening file system : " << tsk_error_get();
+            LOGERROR(errorMsg.str());
+            return -1;
+        }
+
+        m_openFs[fsByteOffset] = fsInfo;
+    }
+
+    // Find a new entry in m_openFiles and use tsk_fs_file_open to open the file and save the handle in m_openFiles. 
+    TSK_FS_FILE * fsFile = tsk_fs_file_open_meta(fsInfo, NULL, fsFileId);
+
+    if (fsFile == NULL)
+    {
+        std::wstringstream errorMsg;
+        errorMsg << L"TskImageFileTsk::openFile - Error opening file : " << tsk_error_get();
+        LOGERROR(errorMsg.str());
+        return -1;
+    }
+
+    const TSK_FS_ATTR * fsAttr = tsk_fs_file_attr_get_id(fsFile, attrId);
+
+    // @@@ TSK_ATTR_TYPE_ENUM should have a value added to it to represent an
+    // empty (or null) attribute type and we should then compare attrType against
+    // this enum value instead of 0.
+
+    // It is possible to have a file with no attributes. We only report an
+    // error if we are expecting a valid attribute.
+    if (attrType != TSK_FS_ATTR_TYPE_NOT_FOUND && fsAttr == NULL)
+    {
+        std::wstringstream msg;
+        msg << L"TskImageFileTsk::openFile - Error getting attribute : " << tsk_error_get();
+        LOGERROR(msg.str());
+        return -1;
+    }
+
+    TskImageFileTsk::OPEN_FILE * openFile = new TskImageFileTsk::OPEN_FILE();
+    openFile->fsFile = fsFile;
+    openFile->fsAttr = fsAttr;
+
+    m_openFiles.push_back(openFile);
+
+    // Return the index into m_openFiles
+    return m_openFiles.size() - 1;
+}
+
+int TskImageFileTsk::readFile(const int handle, 
+                              const TSK_OFF_T byte_offset, 
+                              const size_t byte_len, 
+                              char * buffer)
+{
+    TskImageFileTsk::OPEN_FILE * openFile = m_openFiles[handle];
+
+    if (openFile == NULL || openFile->fsFile == NULL)
+    {
+        std::wstringstream errorMsg;
+        errorMsg << L"TskImageFileTsk::readFile - Either OPEN_FILE or TSK_FS_FILE is null." << std::endl;
+        LOGERROR(errorMsg.str());
+        return -1;
+    }
+
+    // fsAttr can be NULL if the file has no attributes.
+    if (openFile->fsAttr == NULL || (TSK_OFF_T)byte_offset >= openFile->fsAttr->size)
+    {
+        // If the offset is larger than the attribute size then there is nothing left to read.
+        return 0;
+    }
+
+    int bytesRead = tsk_fs_attr_read(openFile->fsAttr, byte_offset, buffer, 
+                                          byte_len, TSK_FS_FILE_READ_FLAG_NONE);
+    if (bytesRead == -1)
+    {
+        std::wstringstream errorMsg;
+        errorMsg << L"TskImageFileTsk::readFile - Error reading file (FS_OFFSET: " 
+            << openFile->fsFile->fs_info->offset << " - ID: "
+            << openFile->fsFile->meta->addr << " - " 
+            << ((openFile->fsFile->meta->flags & TSK_FS_META_FLAG_ALLOC) ? "Allocated" : "Deleted")
+            << ") (" 
+            << tsk_error_get() << ")" << std::endl;
+        LOGERROR(errorMsg.str());
+    }
+
+    return bytesRead;
+}
+
+int TskImageFileTsk::closeFile(const int handle)
+{
+    // get the handle from m_openFiles
+    TskImageFileTsk::OPEN_FILE * openFile = m_openFiles[handle];
+
+    if (openFile == NULL || openFile->fsFile == NULL)
+    {
+        std::wstringstream errorMsg;
+        errorMsg << L"TskImageFileTsk::closeFile - Either OPEN_FILE ot TSK_FS_FILE is null." << std::endl;
+        LOGERROR(errorMsg.str());
+        return -1;
+    }
+
+    // close the file
+    tsk_fs_file_close(openFile->fsFile);
+
+    // remove the entry from m_openFiles
+    m_openFiles.erase(m_openFiles.begin() + handle);
+
+    // delete the struct
+    delete openFile;
+
+    return 0;
+}
+
+std::vector<std::wstring> TskImageFileTsk::getFileNamesW() const
+{
+    std::vector<std::wstring>imagesWide;
+    for (size_t i = 0; i < imagesWide.size(); i++) {
+        imagesWide.push_back(TskUtilities::toUTF16(m_images[i]));
+    }
+    return imagesWide;
+}
+
+int TskImageFileTsk::open(const TSK_TCHAR *imageFile, 
+                          const TSK_IMG_TYPE_ENUM imageType,
+                          const unsigned int sectorSize)
+{
+    if (!m_images.empty()) {
+        close();        
+    }
+#ifdef TSK_WIN32
+    m_images.push_back(TskUtilities::toUTF8(imageFile));
+#else
+    m_images.push_back(std::string(imageFile));
+#endif
+    return openImages(imageType, sectorSize);
+}
+
+int TskImageFileTsk::open(const int numberOfImages, 
+                          const TSK_TCHAR * const imageFile[], 
+                          const TSK_IMG_TYPE_ENUM imageType,
+                          const unsigned int sectorSize)
+{
+    if (!m_images.empty()) {
+        close();        
+    }
+    for (int i = 0; i < numberOfImages; i++) {
+#ifdef WIN32
+        m_images.push_back(TskUtilities::toUTF8(imageFile[i]));
+#else
+        m_images.push_back(std::string(imageFile[i]));
+#endif
+    }
+    return openImages(imageType, sectorSize);
+}
+
+int TskImageFileTsk::open(const std::string &imageFile, 
+                          const TSK_IMG_TYPE_ENUM imageType,
+                          const unsigned int sectorSize)
+{
+    if (!m_images.empty()) {
+        close();        
+    }
+    m_images.push_back(imageFile);
+    return openImages(imageType, sectorSize);
+}
+
+int TskImageFileTsk::open(const std::wstring &imageFile, 
+                          const TSK_IMG_TYPE_ENUM imageType,
+                          const unsigned int sectorSize)
+{
+    return open(TskUtilities::toUTF8(imageFile), imageType, sectorSize);
+}
+
+int TskImageFileTsk::open(const std::vector<std::string> &imageFile, 
+                          const TSK_IMG_TYPE_ENUM imageType,
+                          const unsigned int sectorSize)
+{
+    if (!m_images.empty()) {
+        close();        
+    }
+    for (size_t i = 0; i < imageFile.size(); i++) {
+        m_images.push_back(imageFile[i]);
+    }
+    return openImages(imageType, sectorSize);
+}
+
+int TskImageFileTsk::open(const std::vector<std::wstring> &imageFile, 
+                          const TSK_IMG_TYPE_ENUM imageType,
+                          const unsigned int sectorSize)
+{
+    if (!m_images.empty()) {
+        close();        
+    }
+    for (size_t i = 0; i < imageFile.size(); i++) {
+        m_images.push_back(TskUtilities::toUTF8(imageFile[i]));
+    }
+    return openImages(imageType, sectorSize);
+}
+
+
diff --git a/framework/tsk/framework/extraction/TskImageFileTsk.h b/framework/tsk/framework/extraction/TskImageFileTsk.h
index a4e73c3313538ce0c08d53f12201ed32070c5ef3..4bd98de998968752901eb091d75e508c777739ae 100755
--- a/framework/tsk/framework/extraction/TskImageFileTsk.h
+++ b/framework/tsk/framework/extraction/TskImageFileTsk.h
@@ -1,110 +1,110 @@
-/*
- *
- *  The Sleuth Kit
- *
- *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- *  reserved.
- *
- *  This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskImageFile.h
- * An implementation of the TskImageFile class that uses The Sleuth Kit.
- */
-#ifndef _TSK_IMAGEFILETSK_H
-#define _TSK_IMAGEFILETSK_H
-
-#include "TskImageFile.h"
-#include "tsk/framework/services/TskImgDB.h"
-#include "tsk/framework/services/Log.h"
-#include "tsk/libtsk.h"
-
-#include <vector>
-#include <map>
-
-/// A Sleuth Kit implementation of the TskImageFile interface. 
-/**
- * TskImageFile defines an interface for interacting with disk images.
- * TskImageFileTsk is an implementation of that interface that uses The Sleuth Kit 
- */
-class TSK_FRAMEWORK_API TskImageFileTsk : public TskImageFile
-{
-public:
-    TskImageFileTsk();
-
-    virtual ~TskImageFileTsk();
-
-    virtual int open();
-    virtual void close();
-
-    virtual std::vector<std::string> getFileNames() const { return m_images; }
-    virtual std::vector<std::wstring> getFileNamesW() const;
-
-    virtual int getSectorData(const uint64_t sect_start, 
-                              const uint64_t sect_len, 
-                              char *buffer);
-
-    virtual int getByteData(const uint64_t byte_start, 
-                            const uint64_t byte_len, 
-                            char *buffer);
-
-    virtual int extractFiles();
-
-    virtual int openFile(const uint64_t fileId);
-
-    virtual int readFile(const int handle, 
-                         const TSK_OFF_T byte_offset, 
-                         const size_t byte_len, 
-                         char * buffer);
-
-    virtual int closeFile(const int handle);
-
-    virtual int open(const TSK_TCHAR *imageFile, 
-                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
-                     const unsigned int sectorSize = 0);
-
-    virtual int open(const int numberOfImages, 
-                     const TSK_TCHAR * const imageFile[], 
-                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
-                     const unsigned int sectorSize = 0);
-
-    virtual int open(const std::string &imageFile, 
-                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
-                     const unsigned int sectorSize = 0);
-
-    virtual int open(const std::wstring &imageFile, 
-                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
-                     const unsigned int sectorSize = 0);
-
-    virtual int open(const std::vector<std::string> &imageFile, 
-                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
-                     const unsigned int sectorSize = 0);
-
-    virtual int open(const std::vector<std::wstring> &imageFile,
-                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT,
-                     const unsigned int sectorSize = 0);
-
-private:
-    TskImgDB &m_db;
-    TSK_IMG_INFO *m_img_info;
-    std::vector<std::string> m_images;
-    const char **m_images_ptrs;
-
-    struct TSK_FRAMEWORK_API OPEN_FILE
-    {
-        TSK_FS_FILE * fsFile;
-        const TSK_FS_ATTR * fsAttr;
-    };
-
-    std::vector<OPEN_FILE *> m_openFiles; // maps handle returned from openFile() to the open TSK_FS_FILE object
-    std::map<uint64_t, TSK_FS_INFO *> m_openFs; // maps the byte offset of a file system to its open object.
-
-    int openImages(const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT,
-                   const unsigned int sectorSize = 0);
-
-    static void closeFs(std::pair<uint64_t, TSK_FS_INFO *> pair);
-};
-
-#endif
+/*
+ *
+ *  The Sleuth Kit
+ *
+ *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ *  reserved.
+ *
+ *  This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskImageFile.h
+ * An implementation of the TskImageFile class that uses The Sleuth Kit.
+ */
+#ifndef _TSK_IMAGEFILETSK_H
+#define _TSK_IMAGEFILETSK_H
+
+#include "TskImageFile.h"
+#include "tsk/framework/services/TskImgDB.h"
+#include "tsk/framework/services/Log.h"
+#include "tsk/libtsk.h"
+
+#include <vector>
+#include <map>
+
+/// A Sleuth Kit implementation of the TskImageFile interface. 
+/**
+ * TskImageFile defines an interface for interacting with disk images.
+ * TskImageFileTsk is an implementation of that interface that uses The Sleuth Kit 
+ */
+class TSK_FRAMEWORK_API TskImageFileTsk : public TskImageFile
+{
+public:
+    TskImageFileTsk();
+
+    virtual ~TskImageFileTsk();
+
+    virtual int open();
+    virtual void close();
+
+    virtual std::vector<std::string> getFileNames() const { return m_images; }
+    virtual std::vector<std::wstring> getFileNamesW() const;
+
+    virtual int getSectorData(const uint64_t sect_start, 
+                              const uint64_t sect_len, 
+                              char *buffer);
+
+    virtual int getByteData(const uint64_t byte_start, 
+                            const uint64_t byte_len, 
+                            char *buffer);
+
+    virtual int extractFiles();
+
+    virtual int openFile(const uint64_t fileId);
+
+    virtual int readFile(const int handle, 
+                         const TSK_OFF_T byte_offset, 
+                         const size_t byte_len, 
+                         char * buffer);
+
+    virtual int closeFile(const int handle);
+
+    virtual int open(const TSK_TCHAR *imageFile, 
+                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
+                     const unsigned int sectorSize = 0);
+
+    virtual int open(const int numberOfImages, 
+                     const TSK_TCHAR * const imageFile[], 
+                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
+                     const unsigned int sectorSize = 0);
+
+    virtual int open(const std::string &imageFile, 
+                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
+                     const unsigned int sectorSize = 0);
+
+    virtual int open(const std::wstring &imageFile, 
+                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
+                     const unsigned int sectorSize = 0);
+
+    virtual int open(const std::vector<std::string> &imageFile, 
+                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT, 
+                     const unsigned int sectorSize = 0);
+
+    virtual int open(const std::vector<std::wstring> &imageFile,
+                     const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT,
+                     const unsigned int sectorSize = 0);
+
+private:
+    TskImgDB &m_db;
+    TSK_IMG_INFO *m_img_info;
+    std::vector<std::string> m_images;
+    const char **m_images_ptrs;
+
+    struct TSK_FRAMEWORK_API OPEN_FILE
+    {
+        TSK_FS_FILE * fsFile;
+        const TSK_FS_ATTR * fsAttr;
+    };
+
+    std::vector<OPEN_FILE *> m_openFiles; // maps handle returned from openFile() to the open TSK_FS_FILE object
+    std::map<uint64_t, TSK_FS_INFO *> m_openFs; // maps the byte offset of a file system to its open object.
+
+    int openImages(const TSK_IMG_TYPE_ENUM imageType = TSK_IMG_TYPE_DETECT,
+                   const unsigned int sectorSize = 0);
+
+    static void closeFs(std::pair<uint64_t, TSK_FS_INFO *> pair);
+};
+
+#endif
diff --git a/framework/tsk/framework/file/TskFile.cpp b/framework/tsk/framework/file/TskFile.cpp
index 411d7bb3dabb4fdb28c6359c9be0d5431a7ac12b..2db706bbd98d4ea22303c76e0b489115374f61ce 100755
--- a/framework/tsk/framework/file/TskFile.cpp
+++ b/framework/tsk/framework/file/TskFile.cpp
@@ -1,388 +1,388 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskFile.cpp
- * Contains the implementation for the TskFile class.
- */
-
-// System includes
-#include <sstream>
-
-// Framework includes
-#include "TskFile.h"
-#include "tsk/framework/services/TskServices.h"
-
-/**
- * Delete the TskFile object.
- */
-TskFile::~TskFile(void)
-{
-}
-
-
-void TskFile::initialize()
-{
-    TskImgDB * imgDB = &TskServices::Instance().getImgDB();
-    // getDB will throw exception if ImgDB has not been setup
-
-    if (imgDB != NULL) {
-        if (imgDB->getFileRecord(m_id, m_fileRecord)) {
-            throw TskException("TskFile::initialize: Error looking up file: " + m_id);
-        }
-    }
-}
-
-void TskFile::save()
-{
-    if (m_id == 0)
-    {
-        LOGERROR(L"TskFile::save - Attempt to save file with file id 0.");
-        throw TskException("Attempt to save file with file id 0.");
-    }
-
-    // If the file already exists we have nothing to do.
-    if (exists())
-        return;
-
-    // Make sure the file is open before saving.
-    open();
-
-    TskServices::Instance().getFileManager().saveFile(this);
-}
-
-/**
- * What is this files id?
- */
-uint64_t TskFile::getId() const
-{
-    return m_id;
-}
-
-TskImgDB::FILE_TYPES TskFile::getTypeId() const
-{
-    return m_fileRecord.typeId;
-}
-
-/**
- * What is this files name?
- */
-std::string TskFile::getName() const
-{
-    return m_fileRecord.name;
-}
-
-/**
- * What is this files extension?
- */
-std::string TskFile::getExtension() const
-{
-    size_t pos = m_fileRecord.name.find_last_of(".");
-    if (pos == std::string::npos)
-        return std::string("");
-    else
-        return m_fileRecord.name.substr(pos + 1);
-}
-
-/**
- * What is this files parent file id?
- */
-uint64_t TskFile::getParentFileId() const
-{
-    return m_fileRecord.parentFileId;
-}
-
-/**
- * What is this files directory type?
- */
-TSK_FS_NAME_TYPE_ENUM TskFile::getDirType() const
-{
-    return m_fileRecord.dirType;
-}
-/**
- * What is this files metadata type?
- */
-TSK_FS_META_TYPE_ENUM TskFile::getMetaType() const
-{
-    return m_fileRecord.metaType;
-}
-
-/**
- * What are this files directory flags?
- */
-TSK_FS_NAME_FLAG_ENUM TskFile::getDirFlags() const
-{
-    return m_fileRecord.dirFlags;
-}
-
-/**
- * What are this files metadata flags?
- */
-TSK_FS_META_FLAG_ENUM TskFile::getMetaFlags() const
-{
-    return m_fileRecord.metaFlags;
-}
-
-/**
- * What is this files size?
- */
-TSK_OFF_T TskFile::getSize() const
-{
-    return m_fileRecord.size;
-}
-
-/**
- * What is this files change time?
- */
-time_t TskFile::getCtime() const
-{
-    return m_fileRecord.ctime;
-}
-
-/**
- * What is this files creation time?
- */
-time_t TskFile::getCrtime() const
-{
-    return m_fileRecord.crtime;
-}
-
-/**
- * What is this files access time?
- */
-time_t TskFile::getAtime() const
-{
-    return m_fileRecord.atime;
-}
-
-/**
- * What is this files modify time?
- */
-time_t TskFile::getMtime() const
-{
-    return m_fileRecord.mtime;
-}
-
-/**
- * What is this files mode?
- */
-TSK_FS_META_MODE_ENUM TskFile::getMode() const
-{
-    return m_fileRecord.mode;
-}
-
-/**
- * What is this files user id?
- */
-TSK_UID_T TskFile::getUid() const
-{
-    return m_fileRecord.uid;
-}
-
-/**
- * What is this files group id?
- */
-TSK_GID_T TskFile::getGid() const
-{
-    return m_fileRecord.gid;
-}
-
-/**
- * What is this files status?
- */
-TskImgDB::FILE_STATUS TskFile::getStatus() const
-{
-    return m_fileRecord.status;
-}
-
-/*
- * What is this files full path
- */
-std::string TskFile::getFullPath() const
-{
-    return m_fileRecord.fullPath;
-}
-
-std::string TskFile::getUniquePath() const
-{
-    std::stringstream path;
-    
-    if (m_fileRecord.typeId == TskImgDB::IMGDB_FILES_TYPE_CARVED)
-    {
-        path << "/carved/" << m_fileRecord.fullPath;
-    }
-    else
-    {
-        uint64_t fileSystemSectorOffset = 0;
-        uint64_t unusedUint = 0;
-        int unusedInt = 0;
-        if (m_fileRecord.typeId == TskImgDB::IMGDB_FILES_TYPE_DERIVED)
-        {
-            TskServices::Instance().getImgDB().getFileUniqueIdentifiers(m_fileRecord.parentFileId, fileSystemSectorOffset, unusedUint, unusedInt, unusedInt);
-        }
-        else
-        {
-            TskServices::Instance().getImgDB().getFileUniqueIdentifiers(m_fileRecord.fileId, fileSystemSectorOffset, unusedUint, unusedInt, unusedInt);
-        }
-        path << "/FsOffset-" << fileSystemSectorOffset << "/" << m_fileRecord.fullPath;
-    }
-
-    return path.str();
-}
-
-std::string TskFile::getHash(TskImgDB::HASH_TYPE hashType) const
-{
-    switch (hashType) {
-    case TskImgDB::MD5:
-        return m_fileRecord.md5;
-        break;
-    case TskImgDB::SHA1:
-        return m_fileRecord.sha1;
-        break;
-    case TskImgDB::SHA2_256:
-        return m_fileRecord.sha2_256;
-        break;
-    case TskImgDB::SHA2_512:
-        return m_fileRecord.sha2_512;
-        break;
-    };
-    return "";
-}
-
-// Set the file hash
-void TskFile::setHash(TskImgDB::HASH_TYPE hashType, const std::string hash)
-{
-    switch (hashType) {
-    case TskImgDB::MD5:
-        m_fileRecord.md5 = hash;
-        break;
-    case TskImgDB::SHA1:
-        m_fileRecord.sha1 = hash;
-        break;
-    case TskImgDB::SHA2_256:
-        m_fileRecord.sha2_256 = hash;
-        break;
-    case TskImgDB::SHA2_512:
-        m_fileRecord.sha2_512 = hash;
-        break;
-    };
-    if (TskServices::Instance().getImgDB().setHash(m_fileRecord.fileId, hashType, hash)) {
-        throw TskException("setHash failed.");
-    }
-}
-
-TskImgDB::KNOWN_STATUS TskFile::getKnownStatus() const
-{
-    return TskServices::Instance().getImgDB().getKnownStatus(getId());
-}
-
-void TskFile::setStatus(TskImgDB::FILE_STATUS status)
-{
-    m_fileRecord.status = status;
-    TskServices::Instance().getImgDB().updateFileStatus(getId(), status);
-}
-
-/**
- * Create a new artifact with the given type id
- * @param artifactTypeID type id
- * @returns the new artifact
- * @throws error if the artifact type does not exist
- */
-TskBlackboardArtifact TskFile::createArtifact(int artifactTypeID)
-{
-    return TskServices::Instance().getBlackboard().createArtifact(m_id, artifactTypeID);
-}
-
-/**
- * Create a new artifact with the given type
- * @param type artifact type
- * @returns the new artifact
- * @throws error if the artifact type does not exist
- */
-TskBlackboardArtifact TskFile::createArtifact(TSK_ARTIFACT_TYPE type)
-{
-    return TskServices::Instance().getBlackboard().createArtifact(m_id, type);
-}
-
-/**
- * Create a new artifact with the given type name
- * @param artifactTypeName artifact type name
- * @returns the new artifact
- * @throws error if the artifact type does not exist
- */
-TskBlackboardArtifact TskFile::createArtifact(string artifactTypeName)
-{
-    return TskServices::Instance().getBlackboard().createArtifact(m_id, artifactTypeName);
-}
-
-/**
- * Get all artifacts associated with this file with the given type name
- * @param artifactTypeName type name
- * @returns all matching artifacts will return an empty vector if there are no matches
- */
-vector<TskBlackboardArtifact> TskFile::getArtifacts(string artifactTypeName)
-{
-    return TskServices::Instance().getBlackboard().getArtifacts(m_id, artifactTypeName);
-}
-
-/**
- * Get all artifacts associated with this file with the given type id
- * @param artifactTypeID type id
- * @returns all matching artifacts will return an empty vector if there are no matches
- */
-vector<TskBlackboardArtifact> TskFile::getArtifacts(int artifactTypeID)
-{
-    return TskServices::Instance().getBlackboard().getArtifacts(m_id, artifactTypeID);
-}
-
-/**
- * Get all artifacts associated with this file with the given type
- * @param type artifact type
- * @returns all matching artifacts will return an empty vector if there are no matches
- */
-vector<TskBlackboardArtifact> TskFile::getArtifacts(TSK_ARTIFACT_TYPE type)
-{
-    return TskServices::Instance().getBlackboard().getArtifacts(m_id, type);
-}
-
-/**
- * Get all artifacts associated with this file
- * @returns all artifacts
- */
-vector<TskBlackboardArtifact> TskFile::getAllArtifacts()
-{
-    stringstream str;
-    str << "WHERE obj_id = " << m_id;
-    return TskServices::Instance().getBlackboard().getMatchingArtifacts(str.str());
-}
-
-/**
- * Get the general info artifact for this file
- * @returns the general info artifact or creates it if it has not already been made
- */
-TskBlackboardArtifact TskFile::getGenInfo()
-{
-    vector<TskBlackboardArtifact> artifacts;
-    artifacts = getArtifacts(TSK_GEN_INFO);
-
-    if(artifacts.size() == 0)
-        return createArtifact(TSK_GEN_INFO);
-    else
-        return artifacts[0];
-}
-
-/**
- * Add an attribute to the general info artifact for this file
- * @param attr attribute to be added
- */
-void TskFile::addGenInfoAttribute(TskBlackboardAttribute attr)
-{
-    getGenInfo().addAttribute(attr);
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskFile.cpp
+ * Contains the implementation for the TskFile class.
+ */
+
+// System includes
+#include <sstream>
+
+// Framework includes
+#include "TskFile.h"
+#include "tsk/framework/services/TskServices.h"
+
+/**
+ * Delete the TskFile object.
+ */
+TskFile::~TskFile(void)
+{
+}
+
+
+void TskFile::initialize()
+{
+    TskImgDB * imgDB = &TskServices::Instance().getImgDB();
+    // getDB will throw exception if ImgDB has not been setup
+
+    if (imgDB != NULL) {
+        if (imgDB->getFileRecord(m_id, m_fileRecord)) {
+            throw TskException("TskFile::initialize: Error looking up file: " + m_id);
+        }
+    }
+}
+
+void TskFile::save()
+{
+    if (m_id == 0)
+    {
+        LOGERROR(L"TskFile::save - Attempt to save file with file id 0.");
+        throw TskException("Attempt to save file with file id 0.");
+    }
+
+    // If the file already exists we have nothing to do.
+    if (exists())
+        return;
+
+    // Make sure the file is open before saving.
+    open();
+
+    TskServices::Instance().getFileManager().saveFile(this);
+}
+
+/**
+ * What is this files id?
+ */
+uint64_t TskFile::getId() const
+{
+    return m_id;
+}
+
+TskImgDB::FILE_TYPES TskFile::getTypeId() const
+{
+    return m_fileRecord.typeId;
+}
+
+/**
+ * What is this files name?
+ */
+std::string TskFile::getName() const
+{
+    return m_fileRecord.name;
+}
+
+/**
+ * What is this files extension?
+ */
+std::string TskFile::getExtension() const
+{
+    size_t pos = m_fileRecord.name.find_last_of(".");
+    if (pos == std::string::npos)
+        return std::string("");
+    else
+        return m_fileRecord.name.substr(pos + 1);
+}
+
+/**
+ * What is this files parent file id?
+ */
+uint64_t TskFile::getParentFileId() const
+{
+    return m_fileRecord.parentFileId;
+}
+
+/**
+ * What is this files directory type?
+ */
+TSK_FS_NAME_TYPE_ENUM TskFile::getDirType() const
+{
+    return m_fileRecord.dirType;
+}
+/**
+ * What is this files metadata type?
+ */
+TSK_FS_META_TYPE_ENUM TskFile::getMetaType() const
+{
+    return m_fileRecord.metaType;
+}
+
+/**
+ * What are this files directory flags?
+ */
+TSK_FS_NAME_FLAG_ENUM TskFile::getDirFlags() const
+{
+    return m_fileRecord.dirFlags;
+}
+
+/**
+ * What are this files metadata flags?
+ */
+TSK_FS_META_FLAG_ENUM TskFile::getMetaFlags() const
+{
+    return m_fileRecord.metaFlags;
+}
+
+/**
+ * What is this files size?
+ */
+TSK_OFF_T TskFile::getSize() const
+{
+    return m_fileRecord.size;
+}
+
+/**
+ * What is this files change time?
+ */
+time_t TskFile::getCtime() const
+{
+    return m_fileRecord.ctime;
+}
+
+/**
+ * What is this files creation time?
+ */
+time_t TskFile::getCrtime() const
+{
+    return m_fileRecord.crtime;
+}
+
+/**
+ * What is this files access time?
+ */
+time_t TskFile::getAtime() const
+{
+    return m_fileRecord.atime;
+}
+
+/**
+ * What is this files modify time?
+ */
+time_t TskFile::getMtime() const
+{
+    return m_fileRecord.mtime;
+}
+
+/**
+ * What is this files mode?
+ */
+TSK_FS_META_MODE_ENUM TskFile::getMode() const
+{
+    return m_fileRecord.mode;
+}
+
+/**
+ * What is this files user id?
+ */
+TSK_UID_T TskFile::getUid() const
+{
+    return m_fileRecord.uid;
+}
+
+/**
+ * What is this files group id?
+ */
+TSK_GID_T TskFile::getGid() const
+{
+    return m_fileRecord.gid;
+}
+
+/**
+ * What is this files status?
+ */
+TskImgDB::FILE_STATUS TskFile::getStatus() const
+{
+    return m_fileRecord.status;
+}
+
+/*
+ * What is this files full path
+ */
+std::string TskFile::getFullPath() const
+{
+    return m_fileRecord.fullPath;
+}
+
+std::string TskFile::getUniquePath() const
+{
+    std::stringstream path;
+    
+    if (m_fileRecord.typeId == TskImgDB::IMGDB_FILES_TYPE_CARVED)
+    {
+        path << "/carved/" << m_fileRecord.fullPath;
+    }
+    else
+    {
+        uint64_t fileSystemSectorOffset = 0;
+        uint64_t unusedUint = 0;
+        int unusedInt = 0;
+        if (m_fileRecord.typeId == TskImgDB::IMGDB_FILES_TYPE_DERIVED)
+        {
+            TskServices::Instance().getImgDB().getFileUniqueIdentifiers(m_fileRecord.parentFileId, fileSystemSectorOffset, unusedUint, unusedInt, unusedInt);
+        }
+        else
+        {
+            TskServices::Instance().getImgDB().getFileUniqueIdentifiers(m_fileRecord.fileId, fileSystemSectorOffset, unusedUint, unusedInt, unusedInt);
+        }
+        path << "/FsOffset-" << fileSystemSectorOffset << "/" << m_fileRecord.fullPath;
+    }
+
+    return path.str();
+}
+
+std::string TskFile::getHash(TskImgDB::HASH_TYPE hashType) const
+{
+    switch (hashType) {
+    case TskImgDB::MD5:
+        return m_fileRecord.md5;
+        break;
+    case TskImgDB::SHA1:
+        return m_fileRecord.sha1;
+        break;
+    case TskImgDB::SHA2_256:
+        return m_fileRecord.sha2_256;
+        break;
+    case TskImgDB::SHA2_512:
+        return m_fileRecord.sha2_512;
+        break;
+    };
+    return "";
+}
+
+// Set the file hash
+void TskFile::setHash(TskImgDB::HASH_TYPE hashType, const std::string hash)
+{
+    switch (hashType) {
+    case TskImgDB::MD5:
+        m_fileRecord.md5 = hash;
+        break;
+    case TskImgDB::SHA1:
+        m_fileRecord.sha1 = hash;
+        break;
+    case TskImgDB::SHA2_256:
+        m_fileRecord.sha2_256 = hash;
+        break;
+    case TskImgDB::SHA2_512:
+        m_fileRecord.sha2_512 = hash;
+        break;
+    };
+    if (TskServices::Instance().getImgDB().setHash(m_fileRecord.fileId, hashType, hash)) {
+        throw TskException("setHash failed.");
+    }
+}
+
+TskImgDB::KNOWN_STATUS TskFile::getKnownStatus() const
+{
+    return TskServices::Instance().getImgDB().getKnownStatus(getId());
+}
+
+void TskFile::setStatus(TskImgDB::FILE_STATUS status)
+{
+    m_fileRecord.status = status;
+    TskServices::Instance().getImgDB().updateFileStatus(getId(), status);
+}
+
+/**
+ * Create a new artifact with the given type id
+ * @param artifactTypeID type id
+ * @returns the new artifact
+ * @throws error if the artifact type does not exist
+ */
+TskBlackboardArtifact TskFile::createArtifact(int artifactTypeID)
+{
+    return TskServices::Instance().getBlackboard().createArtifact(m_id, artifactTypeID);
+}
+
+/**
+ * Create a new artifact with the given type
+ * @param type artifact type
+ * @returns the new artifact
+ * @throws error if the artifact type does not exist
+ */
+TskBlackboardArtifact TskFile::createArtifact(TSK_ARTIFACT_TYPE type)
+{
+    return TskServices::Instance().getBlackboard().createArtifact(m_id, type);
+}
+
+/**
+ * Create a new artifact with the given type name
+ * @param artifactTypeName artifact type name
+ * @returns the new artifact
+ * @throws error if the artifact type does not exist
+ */
+TskBlackboardArtifact TskFile::createArtifact(string artifactTypeName)
+{
+    return TskServices::Instance().getBlackboard().createArtifact(m_id, artifactTypeName);
+}
+
+/**
+ * Get all artifacts associated with this file with the given type name
+ * @param artifactTypeName type name
+ * @returns all matching artifacts will return an empty vector if there are no matches
+ */
+vector<TskBlackboardArtifact> TskFile::getArtifacts(string artifactTypeName)
+{
+    return TskServices::Instance().getBlackboard().getArtifacts(m_id, artifactTypeName);
+}
+
+/**
+ * Get all artifacts associated with this file with the given type id
+ * @param artifactTypeID type id
+ * @returns all matching artifacts will return an empty vector if there are no matches
+ */
+vector<TskBlackboardArtifact> TskFile::getArtifacts(int artifactTypeID)
+{
+    return TskServices::Instance().getBlackboard().getArtifacts(m_id, artifactTypeID);
+}
+
+/**
+ * Get all artifacts associated with this file with the given type
+ * @param type artifact type
+ * @returns all matching artifacts will return an empty vector if there are no matches
+ */
+vector<TskBlackboardArtifact> TskFile::getArtifacts(TSK_ARTIFACT_TYPE type)
+{
+    return TskServices::Instance().getBlackboard().getArtifacts(m_id, type);
+}
+
+/**
+ * Get all artifacts associated with this file
+ * @returns all artifacts
+ */
+vector<TskBlackboardArtifact> TskFile::getAllArtifacts()
+{
+    stringstream str;
+    str << "WHERE obj_id = " << m_id;
+    return TskServices::Instance().getBlackboard().getMatchingArtifacts(str.str());
+}
+
+/**
+ * Get the general info artifact for this file
+ * @returns the general info artifact or creates it if it has not already been made
+ */
+TskBlackboardArtifact TskFile::getGenInfo()
+{
+    vector<TskBlackboardArtifact> artifacts;
+    artifacts = getArtifacts(TSK_GEN_INFO);
+
+    if(artifacts.size() == 0)
+        return createArtifact(TSK_GEN_INFO);
+    else
+        return artifacts[0];
+}
+
+/**
+ * Add an attribute to the general info artifact for this file
+ * @param attr attribute to be added
+ */
+void TskFile::addGenInfoAttribute(TskBlackboardAttribute attr)
+{
+    getGenInfo().addAttribute(attr);
+}
diff --git a/framework/tsk/framework/file/TskFile.h b/framework/tsk/framework/file/TskFile.h
index ed32f00a5125eaf96e113e7cb33d356e91190db8..4416407f13028aa2481928acde0864744cb4963c 100755
--- a/framework/tsk/framework/file/TskFile.h
+++ b/framework/tsk/framework/file/TskFile.h
@@ -1,265 +1,265 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskFile.h
- * Contains the interface for the TskFile class.
- */
-
-#ifndef _TSK_FILE_H
-#define _TSK_FILE_H
-
-// System includes
-#include <string>
-#include <ios>
-
-// Framework includes
-#include "tsk/framework/services/TskImgDB.h"
-#include "tsk/framework/services/TskBlackboardArtifact.h"
-
-/**
- * An interface that is used to represent a file. This interface
- * is used during the analysis of a file and is typically created
- * based on data in TskImgDB, which was created by CarveExtract
- * or TskImageFile.  Different implementations of this class 
- * may retrieve file content and metadata in different ways.
- * TskFile objects are obtained from TskFileManager.
- */
-class TSK_FRAMEWORK_API TskFile
-{
-public:
-	virtual ~TskFile();
-
-    /** Returns the file id.
-     */
-    uint64_t getId() const;
-
-    /**
-     * Get the high-level type (file system, local, carved, etc.)
-     */
-    TskImgDB::FILE_TYPES getTypeId() const;
-
-    /** Get the name
-     */
-    std::string getName() const;
-
-    /** Get the extension
-    */
-    std::string getExtension() const;
-
-    /** Get the parent file id
-    */
-    uint64_t getParentFileId() const;
-
-    /** Get the directory type
-    */
-    TSK_FS_NAME_TYPE_ENUM getDirType() const;
-
-    /** Get the metadata flags
-    */
-    TSK_FS_META_TYPE_ENUM getMetaType() const;
-
-    /** Get the directory flags
-    */
-    TSK_FS_NAME_FLAG_ENUM getDirFlags() const;
-
-    /** Get the metadata flags
-    */
-    TSK_FS_META_FLAG_ENUM getMetaFlags() const;
-
-    /** Get the file size
-    */
-    TSK_OFF_T getSize() const;
-
-    /** Get the change time
-     */
-    time_t getCtime() const;
-
-    /** Get the creation time
-    */
-    time_t getCrtime() const;
-
-    /** Get the last access time
-    */
-    time_t getAtime() const;
-
-    /** Get the modify time
-    */
-    time_t getMtime() const;
-
-    /** Get the mode
-    */
-    TSK_FS_META_MODE_ENUM  getMode() const;
-
-    /** Get the user id
-    */
-    TSK_UID_T getUid() const;
-
-    /** Get the group id
-    */
-    TSK_GID_T getGid() const;
-
-    /**
-     * Get the path of the file in the disk image.  This
-     * will not include the file name and will not include 
-     * any information about the file system or volume that
-     * it was found in (if there were multiple file systems
-     * in the image. 
-     * @returns Original path of the file.
-     */
-    std::string getFullPath() const;
-    
-    /**
-     * Get the path of the file in the disk image.  This
-     * will not include the file name but will include 
-     * either information about the file system or volume that
-     * it was found in or an indicator that the file was produced
-     * by carving. 
-     * @returns Original path of the file.
-     */
-    std::string getUniquePath() const;
-
-    /**
-     * Get the fully qualified path of where this file should
-     * be locally stored.  It does not check if the file is 
-     * locally stored.   Use exists() for that.
-     */
-    virtual std::string getPath() const = 0;
-
-    /** 
-     * Get the pre-calculated hash value of the specified type.
-     * @param hashType Type of hash to lookup
-     * @returns String of hash value or empty string if the value
-     * has not been calculated. 
-     */
-    std::string getHash(TskImgDB::HASH_TYPE hashType) const;
-
-    /**
-     * Sets the file's hash value in the database.  note that hash values
-     * are not stored in the blackboard. 
-     * @param hashType Type of hash value
-     * @param hash String value of hash.
-     */
-    void setHash(TskImgDB::HASH_TYPE hashType, const std::string hash);
-    
-    /**
-     * Return the known status of the file
-     * @returns KNOWN_STATUS or -1 on error
-     */
-    TskImgDB::KNOWN_STATUS getKnownStatus() const;
-
-    /**
-     * Tests if a local copy of the file exists at the default location. 
-     * @return True if a file exists, false otherwise
-     */ 
-    virtual bool exists() const = 0;
-
-    /**
-     * @return True if this is a directory, false otherwise
-     */ 
-    virtual bool isDirectory() const = 0;
-
-    /**
-     * @return True if this is a "virtual" file, false otherwise
-     */ 
-    virtual bool isVirtual() const = 0;
-
-    /** 
-     * Open the file. Must be called before reading. Implementations must
-     * support concept of open() being called multiple times even if file 
-     * is already open. 
-     * @throws TskFileException on error
-     */
-    virtual void open() = 0;
-
-    /**
-     * Closes the open file.
-     */
-    virtual void close() = 0;
-
-    /**
-     * Save the file to the default location. This is a simple wrapper
-     * around TskFileManager::saveFile.
-     * @throws TskException if file id is zero along with exceptions 
-     * thrown by TskFileManager::saveFile.
-     */
-    virtual void save();
-
-    /**
-     * Get the current byte offset within the file.
-     * @returns Current byte offset.
-     * @throws TskFileException if file is not open.
-     */
-    virtual TSK_OFF_T tell() const = 0;
-
-    /**
-     * Set the byte offset within the file. If the second parameter is not
-     * supplied the offset will be set relative to the beginning of the file.
-     * @param off Number off bytes to offset from origin.
-     * @param origin The point from which the given offset is relative to. Defaults
-     * to beginning of file. If origin is std::ios::end the offset must be a 
-     * negative number.
-     * @returns The absolute file offset resulting from the repositioning.
-     * @throws TskFileException if file is not open or if you attempt to seek
-     * to an invalid offset.
-     */
-    virtual TSK_OFF_T seek(const TSK_OFF_T off, std::ios::seekdir origin = std::ios::beg) = 0;
-
-    /**
-     * Read file content into a buffer.  Reads from end of last read.
-     * @param buf Buffer into which file content will be placed.
-     * Must be at least "count" bytes in size.
-     * @param count The number of bytes to read from the file.
-     * @return The number of bytes read or -1 on error.
-     */
-    virtual ssize_t read(char * buf, const size_t count) = 0;
-
-    /**
-     * Set the file status (where it is in its analysis life cycle)
-     */
-    void setStatus(TskImgDB::FILE_STATUS status);
-
-    /** Get the analysis status of the file (where it is in the analysis life cycle)
-     */
-    TskImgDB::FILE_STATUS getStatus() const;
-
-    //Blackboard methods
-    virtual TskBlackboardArtifact createArtifact(int artifactTypeID);
-    virtual TskBlackboardArtifact createArtifact(TSK_ARTIFACT_TYPE type);
-    virtual TskBlackboardArtifact createArtifact(string artifactTypeName);
-    virtual vector<TskBlackboardArtifact> getArtifacts(string artifactTypeName);
-    virtual vector<TskBlackboardArtifact> getArtifacts(int artifactTypeID);
-    virtual vector<TskBlackboardArtifact> getArtifacts(TSK_ARTIFACT_TYPE type);
-    virtual vector<TskBlackboardArtifact> getAllArtifacts();
-    virtual TskBlackboardArtifact getGenInfo();
-    virtual void addGenInfoAttribute(TskBlackboardAttribute attr);
-
-
-protected:
-    // File id.
-    uint64_t m_id;
-
-    // Our current offset into the file
-    TSK_OFF_T m_offset;
-
-    // Is the file open (used for both on disk and image files)
-    bool m_isOpen;
-
-    // The database file record.
-    TskFileRecord m_fileRecord;
-
-    /**
-     * Loads the raw file data from the database.
-     * @throws TskException on error
-     */
-    void initialize();
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskFile.h
+ * Contains the interface for the TskFile class.
+ */
+
+#ifndef _TSK_FILE_H
+#define _TSK_FILE_H
+
+// System includes
+#include <string>
+#include <ios>
+
+// Framework includes
+#include "tsk/framework/services/TskImgDB.h"
+#include "tsk/framework/services/TskBlackboardArtifact.h"
+
+/**
+ * An interface that is used to represent a file. This interface
+ * is used during the analysis of a file and is typically created
+ * based on data in TskImgDB, which was created by CarveExtract
+ * or TskImageFile.  Different implementations of this class 
+ * may retrieve file content and metadata in different ways.
+ * TskFile objects are obtained from TskFileManager.
+ */
+class TSK_FRAMEWORK_API TskFile
+{
+public:
+	virtual ~TskFile();
+
+    /** Returns the file id.
+     */
+    uint64_t getId() const;
+
+    /**
+     * Get the high-level type (file system, local, carved, etc.)
+     */
+    TskImgDB::FILE_TYPES getTypeId() const;
+
+    /** Get the name
+     */
+    std::string getName() const;
+
+    /** Get the extension
+    */
+    std::string getExtension() const;
+
+    /** Get the parent file id
+    */
+    uint64_t getParentFileId() const;
+
+    /** Get the directory type
+    */
+    TSK_FS_NAME_TYPE_ENUM getDirType() const;
+
+    /** Get the metadata flags
+    */
+    TSK_FS_META_TYPE_ENUM getMetaType() const;
+
+    /** Get the directory flags
+    */
+    TSK_FS_NAME_FLAG_ENUM getDirFlags() const;
+
+    /** Get the metadata flags
+    */
+    TSK_FS_META_FLAG_ENUM getMetaFlags() const;
+
+    /** Get the file size
+    */
+    TSK_OFF_T getSize() const;
+
+    /** Get the change time
+     */
+    time_t getCtime() const;
+
+    /** Get the creation time
+    */
+    time_t getCrtime() const;
+
+    /** Get the last access time
+    */
+    time_t getAtime() const;
+
+    /** Get the modify time
+    */
+    time_t getMtime() const;
+
+    /** Get the mode
+    */
+    TSK_FS_META_MODE_ENUM  getMode() const;
+
+    /** Get the user id
+    */
+    TSK_UID_T getUid() const;
+
+    /** Get the group id
+    */
+    TSK_GID_T getGid() const;
+
+    /**
+     * Get the path of the file in the disk image.  This
+     * will not include the file name and will not include 
+     * any information about the file system or volume that
+     * it was found in (if there were multiple file systems
+     * in the image. 
+     * @returns Original path of the file.
+     */
+    std::string getFullPath() const;
+    
+    /**
+     * Get the path of the file in the disk image.  This
+     * will not include the file name but will include 
+     * either information about the file system or volume that
+     * it was found in or an indicator that the file was produced
+     * by carving. 
+     * @returns Original path of the file.
+     */
+    std::string getUniquePath() const;
+
+    /**
+     * Get the fully qualified path of where this file should
+     * be locally stored.  It does not check if the file is 
+     * locally stored.   Use exists() for that.
+     */
+    virtual std::string getPath() const = 0;
+
+    /** 
+     * Get the pre-calculated hash value of the specified type.
+     * @param hashType Type of hash to lookup
+     * @returns String of hash value or empty string if the value
+     * has not been calculated. 
+     */
+    std::string getHash(TskImgDB::HASH_TYPE hashType) const;
+
+    /**
+     * Sets the file's hash value in the database.  note that hash values
+     * are not stored in the blackboard. 
+     * @param hashType Type of hash value
+     * @param hash String value of hash.
+     */
+    void setHash(TskImgDB::HASH_TYPE hashType, const std::string hash);
+    
+    /**
+     * Return the known status of the file
+     * @returns KNOWN_STATUS or -1 on error
+     */
+    TskImgDB::KNOWN_STATUS getKnownStatus() const;
+
+    /**
+     * Tests if a local copy of the file exists at the default location. 
+     * @return True if a file exists, false otherwise
+     */ 
+    virtual bool exists() const = 0;
+
+    /**
+     * @return True if this is a directory, false otherwise
+     */ 
+    virtual bool isDirectory() const = 0;
+
+    /**
+     * @return True if this is a "virtual" file, false otherwise
+     */ 
+    virtual bool isVirtual() const = 0;
+
+    /** 
+     * Open the file. Must be called before reading. Implementations must
+     * support concept of open() being called multiple times even if file 
+     * is already open. 
+     * @throws TskFileException on error
+     */
+    virtual void open() = 0;
+
+    /**
+     * Closes the open file.
+     */
+    virtual void close() = 0;
+
+    /**
+     * Save the file to the default location. This is a simple wrapper
+     * around TskFileManager::saveFile.
+     * @throws TskException if file id is zero along with exceptions 
+     * thrown by TskFileManager::saveFile.
+     */
+    virtual void save();
+
+    /**
+     * Get the current byte offset within the file.
+     * @returns Current byte offset.
+     * @throws TskFileException if file is not open.
+     */
+    virtual TSK_OFF_T tell() const = 0;
+
+    /**
+     * Set the byte offset within the file. If the second parameter is not
+     * supplied the offset will be set relative to the beginning of the file.
+     * @param off Number off bytes to offset from origin.
+     * @param origin The point from which the given offset is relative to. Defaults
+     * to beginning of file. If origin is std::ios::end the offset must be a 
+     * negative number.
+     * @returns The absolute file offset resulting from the repositioning.
+     * @throws TskFileException if file is not open or if you attempt to seek
+     * to an invalid offset.
+     */
+    virtual TSK_OFF_T seek(const TSK_OFF_T off, std::ios::seekdir origin = std::ios::beg) = 0;
+
+    /**
+     * Read file content into a buffer.  Reads from end of last read.
+     * @param buf Buffer into which file content will be placed.
+     * Must be at least "count" bytes in size.
+     * @param count The number of bytes to read from the file.
+     * @return The number of bytes read or -1 on error.
+     */
+    virtual ssize_t read(char * buf, const size_t count) = 0;
+
+    /**
+     * Set the file status (where it is in its analysis life cycle)
+     */
+    void setStatus(TskImgDB::FILE_STATUS status);
+
+    /** Get the analysis status of the file (where it is in the analysis life cycle)
+     */
+    TskImgDB::FILE_STATUS getStatus() const;
+
+    //Blackboard methods
+    virtual TskBlackboardArtifact createArtifact(int artifactTypeID);
+    virtual TskBlackboardArtifact createArtifact(TSK_ARTIFACT_TYPE type);
+    virtual TskBlackboardArtifact createArtifact(string artifactTypeName);
+    virtual vector<TskBlackboardArtifact> getArtifacts(string artifactTypeName);
+    virtual vector<TskBlackboardArtifact> getArtifacts(int artifactTypeID);
+    virtual vector<TskBlackboardArtifact> getArtifacts(TSK_ARTIFACT_TYPE type);
+    virtual vector<TskBlackboardArtifact> getAllArtifacts();
+    virtual TskBlackboardArtifact getGenInfo();
+    virtual void addGenInfoAttribute(TskBlackboardAttribute attr);
+
+
+protected:
+    // File id.
+    uint64_t m_id;
+
+    // Our current offset into the file
+    TSK_OFF_T m_offset;
+
+    // Is the file open (used for both on disk and image files)
+    bool m_isOpen;
+
+    // The database file record.
+    TskFileRecord m_fileRecord;
+
+    /**
+     * Loads the raw file data from the database.
+     * @throws TskException on error
+     */
+    void initialize();
+};
+
+#endif
diff --git a/framework/tsk/framework/file/TskFileManager.h b/framework/tsk/framework/file/TskFileManager.h
index 013536bdf311917e4e18e0449b7fab1d4538df79..3706d5ae1f68d8a76e9da643c31f06942bfdc785 100755
--- a/framework/tsk/framework/file/TskFileManager.h
+++ b/framework/tsk/framework/file/TskFileManager.h
@@ -1,238 +1,238 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskFileManager.h
- * Contains the interface for the TskFileManager class.
- */
-
-#ifndef _TSK_FILEMANAGER_H
-#define _TSK_FILEMANAGER_H
-
-#include <memory>
-#include "tsk/framework/framework_i.h"
-#include "TskFile.h"
-
-
-/**
- * Responsible for managing TskFile objects in the system.
- */
-class TSK_FRAMEWORK_API TskFileManager
-{
-public:
-    typedef TskFile* FilePtr;
-    typedef std::vector< FilePtr > FilePtrList;
-
-    /**
-     * Return a TskFile object for a given file ID.
-     * @param fileId ID of file to return object of.
-     * @returns Pointer to file object. Caller must free it.
-     * @throws TskException in case of error.
-     */
-    virtual TskFile * getFile(const uint64_t fileId) = 0;
-
-    /**
-     * Return a list of TskFile objects mapped to the given list of file ids.
-     * @param fileIds List of fileId IDs.
-     * @returns List of pointers to file objects.
-     */
-    virtual FilePtrList getFiles(const std::vector<uint64_t>& fileIds) = 0;
-
-    /**
-     * Return a list of TskFile objects matching the given filename
-     * @param name The file name.
-     * @param fsFileType Optional file meta type. Will not filter on meta_type if this is omitted.
-     * @returns List of pointers to file objects.
-     */
-    virtual FilePtrList findFilesByName(const std::string& name, const TSK_FS_META_TYPE_ENUM fsFileType = TSK_FS_META_TYPE_UNDEF) = 0;
-    
-    /**
-     * Return a list of TskFile objects matching the given filename extension
-     * @param extensions List of file name extension strings.
-     * @returns List of pointers to file objects.
-     */
-    virtual FilePtrList findFilesByExtension(const std::vector<std::string>& extensions) = 0;
-    
-    /**
-     * Return a list of TskFile objects that are children of the given file id.
-     * @param parentFileId ID of parent file.
-     * @returns List of pointers to file objects.
-     */
-    virtual FilePtrList findFilesByParent(const uint64_t parentFileId) = 0;
-    
-    /**
-     * Return a list of TskFile objects that match the given file meta type.
-     * @param fsFileType File meta type.
-     * @returns List of pointers to file objects.
-     */
-    virtual FilePtrList findFilesByFsFileType(TSK_FS_META_TYPE_ENUM fsFileType) = 0;
-
-
-    virtual FilePtrList findFilesByPattern(const std::string& namePattern, const std::string& pathPattern) = 0;
-
-    /** 
-     * Return the fully qualified path to where the local instance of the file with the given ID
-     * should exist.  This does not validate that the ID is for a file and does
-     * not validate that the file actually exists. 
-     * @param fileId Id of the file.
-     * @returns Path to where local file should exist. 
-     */
-    virtual std::wstring getPath(const uint64_t fileId) = 0;
-
-    /**
-     * Save the file to the default location. 
-     * @param fileToSave File object of the file to save.
-     * @throws various exceptions on errors
-     */
-    virtual void saveFile(TskFile* fileToSave) = 0;
-
-    /**
-     * Save the file to the default location. 
-     * @param fileId ID of the file to save.
-     * @throws various exceptions on errors
-     */
-    virtual void saveFile(const uint64_t fileId)
-    {
-        saveFile(getFile(fileId));
-    }
-
-    /**
-     * Copy the file to the given fully qualifed file path. 
-     * Directories along the path will be created if they do not exist.
-     * If the destination file exists it will be replaced.
-     * @param fileToSave The file to save.
-     * @param filePath The path to save to, including the file name. 
-     * @throws various exceptions on errors
-     */
-    virtual void copyFile(TskFile* fileToSave, const std::wstring& filePath) = 0;
-
-    /**
-     * Copy the file to the given fully qualifed file path. 
-     * Directories along the path will be created if they do not exist.
-     * If the destination file exists it will be replaced.
-     * @param fileId ID of the file to save.
-     * @param filePath The path to save to, including the file name. 
-     * @throws various exceptions on errors
-     */
-    virtual void copyFile(const uint64_t fileId, const std::wstring& filePath)
-    {
-        copyFile(std::auto_ptr<TskFile>(getFile(fileId)).get(), filePath);
-    }
-
-    /**
-     * Copy the contents of a directory to the given fully qualifed file path. 
-     * Directories along the path will be created if they do not exist.
-     * If the destination directory exists it will be replaced.
-	 * Defaults to a non-recursive copy.
-     * @param directoryToCopy The TskFile object representing the directory to copy.
-     * @param destinationPath The path to save directory contents to, including the directory name.
-	 * @param bRecurse Whether to recursively copy directory contents.
-     * @throws various exceptions on errors
-     */
-    virtual void copyDirectory(TskFile* directoryToCopy, const std::wstring& destinationPath, const bool bRecurse = false) = 0;
-
-    /**
-     * Copy the contents of a directory to the given fully qualifed file path. 
-     * Directories along the path will be created if they do not exist.
-     * If the destination directory exists it will be replaced.
-	 * Defaults to a non-recursive copy.
-     * @param directoryIdToCopy The id representing the directory to copy.
-     * @param destinationPath The path to save directory contents to, including the directory name. 
-	 * @param bRecurse Whether to recursively copy directory contents.
-     * @throws various exceptions on errors
-     */
-    virtual void copyDirectory(uint64_t directoryIdToCopy, const std::wstring& destinationPath, const bool bRecurse = false)
-    {
-        copyDirectory(std::auto_ptr<TskFile>(getFile(directoryIdToCopy)).get(), destinationPath, bRecurse);
-    }
-
-    /**
-     * Add a file to the system using the given file id and input stream.
-     * This method saves a local copy of the content contained in the input stream.
-     * @param fileId ID of the new file.
-     * @param istr Input stream containing the file content to save.
-     * @throws TskFileException if a file with the given fileId already exists or
-     * if an error is encountered while saving the input stream.
-     */
-    virtual void addFile(const uint64_t fileId, std::istream& istr) = 0;
-
-    /**
-     * Add a file to the system using the given file id and path.
-     * This method saves a local copy of the file given in the path.
-     * @param fileId ID of the new file.
-     * @param filePath The path of the file to save.
-     * @throws TskFileException if a file with the given fileId already exists,
-     * the file specified in filePath does not exist or an error is encountered 
-     * while saving the file.
-     */
-    virtual void addFile(const uint64_t fileId, std::wstring& filePath) = 0;
-
-    /**
-     * Delete the local copy of a file.
-     * @param fileToDelete Object of file to delete local copy of
-     * @throws various exceptions on errors
-     */
-    virtual void deleteFile(TskFile* fileToDelete) = 0;
-
-    /**
-     * Delete the local copy of a file.
-     * @param fileId ID of file to delete local copy of
-     * @throws various exceptions on errors
-     */
-    virtual void deleteFile(const uint64_t fileId)
-    {
-        deleteFile(std::auto_ptr<TskFile>(getFile(fileId)).get());
-    }
-
-    /**
-        This nested class should be used to hold a FilePtrList object returned
-        by methods such as findFilesByName() so that the file objects will be 
-        automatically freed. Example:
-        @code
-        AutoFilePtrList flist(fileManager.findFilesByName(fileName));
-        for (FilePtrList::iterator i = flist.begin(); i != flist.end(); ++i)
-        { ... //do stuff }
-        // Don't worry about delete'ing each file obj--flist will take care of
-        // that when it goes out of scope.
-        @endcode
-    */
-    class AutoFilePtrList
-    {
-    public:
-        AutoFilePtrList(FilePtrList v) : m_Files(v) {}
-        ~AutoFilePtrList()
-        {
-            for (FilePtrList::iterator it = m_Files.begin(); it != m_Files.end(); ++it)
-            {
-                delete *it;
-            }
-        }
-        FilePtrList::iterator begin() { return m_Files.begin(); }
-        FilePtrList::iterator end()   { return m_Files.end(); }
-        FilePtrList::size_type size() { return m_Files.size(); }
-    private:
-        AutoFilePtrList(const AutoFilePtrList&);
-        AutoFilePtrList& operator=(const AutoFilePtrList&);
-
-        TskFileManager::FilePtrList m_Files;
-    };
-
-protected:
-    /// Default Constructor
-    TskFileManager() {};
-
-    /// Copy Constructor
-    TskFileManager(TskFileManager const&) {};
-
-    /// Destructor
-    virtual ~TskFileManager() {};
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskFileManager.h
+ * Contains the interface for the TskFileManager class.
+ */
+
+#ifndef _TSK_FILEMANAGER_H
+#define _TSK_FILEMANAGER_H
+
+#include <memory>
+#include "tsk/framework/framework_i.h"
+#include "TskFile.h"
+
+
+/**
+ * Responsible for managing TskFile objects in the system.
+ */
+class TSK_FRAMEWORK_API TskFileManager
+{
+public:
+    typedef TskFile* FilePtr;
+    typedef std::vector< FilePtr > FilePtrList;
+
+    /**
+     * Return a TskFile object for a given file ID.
+     * @param fileId ID of file to return object of.
+     * @returns Pointer to file object. Caller must free it.
+     * @throws TskException in case of error.
+     */
+    virtual TskFile * getFile(const uint64_t fileId) = 0;
+
+    /**
+     * Return a list of TskFile objects mapped to the given list of file ids.
+     * @param fileIds List of fileId IDs.
+     * @returns List of pointers to file objects.
+     */
+    virtual FilePtrList getFiles(const std::vector<uint64_t>& fileIds) = 0;
+
+    /**
+     * Return a list of TskFile objects matching the given filename
+     * @param name The file name.
+     * @param fsFileType Optional file meta type. Will not filter on meta_type if this is omitted.
+     * @returns List of pointers to file objects.
+     */
+    virtual FilePtrList findFilesByName(const std::string& name, const TSK_FS_META_TYPE_ENUM fsFileType = TSK_FS_META_TYPE_UNDEF) = 0;
+    
+    /**
+     * Return a list of TskFile objects matching the given filename extension
+     * @param extensions List of file name extension strings.
+     * @returns List of pointers to file objects.
+     */
+    virtual FilePtrList findFilesByExtension(const std::vector<std::string>& extensions) = 0;
+    
+    /**
+     * Return a list of TskFile objects that are children of the given file id.
+     * @param parentFileId ID of parent file.
+     * @returns List of pointers to file objects.
+     */
+    virtual FilePtrList findFilesByParent(const uint64_t parentFileId) = 0;
+    
+    /**
+     * Return a list of TskFile objects that match the given file meta type.
+     * @param fsFileType File meta type.
+     * @returns List of pointers to file objects.
+     */
+    virtual FilePtrList findFilesByFsFileType(TSK_FS_META_TYPE_ENUM fsFileType) = 0;
+
+
+    virtual FilePtrList findFilesByPattern(const std::string& namePattern, const std::string& pathPattern) = 0;
+
+    /** 
+     * Return the fully qualified path to where the local instance of the file with the given ID
+     * should exist.  This does not validate that the ID is for a file and does
+     * not validate that the file actually exists. 
+     * @param fileId Id of the file.
+     * @returns Path to where local file should exist. 
+     */
+    virtual std::wstring getPath(const uint64_t fileId) = 0;
+
+    /**
+     * Save the file to the default location. 
+     * @param fileToSave File object of the file to save.
+     * @throws various exceptions on errors
+     */
+    virtual void saveFile(TskFile* fileToSave) = 0;
+
+    /**
+     * Save the file to the default location. 
+     * @param fileId ID of the file to save.
+     * @throws various exceptions on errors
+     */
+    virtual void saveFile(const uint64_t fileId)
+    {
+        saveFile(getFile(fileId));
+    }
+
+    /**
+     * Copy the file to the given fully qualifed file path. 
+     * Directories along the path will be created if they do not exist.
+     * If the destination file exists it will be replaced.
+     * @param fileToSave The file to save.
+     * @param filePath The path to save to, including the file name. 
+     * @throws various exceptions on errors
+     */
+    virtual void copyFile(TskFile* fileToSave, const std::wstring& filePath) = 0;
+
+    /**
+     * Copy the file to the given fully qualifed file path. 
+     * Directories along the path will be created if they do not exist.
+     * If the destination file exists it will be replaced.
+     * @param fileId ID of the file to save.
+     * @param filePath The path to save to, including the file name. 
+     * @throws various exceptions on errors
+     */
+    virtual void copyFile(const uint64_t fileId, const std::wstring& filePath)
+    {
+        copyFile(std::auto_ptr<TskFile>(getFile(fileId)).get(), filePath);
+    }
+
+    /**
+     * Copy the contents of a directory to the given fully qualifed file path. 
+     * Directories along the path will be created if they do not exist.
+     * If the destination directory exists it will be replaced.
+	 * Defaults to a non-recursive copy.
+     * @param directoryToCopy The TskFile object representing the directory to copy.
+     * @param destinationPath The path to save directory contents to, including the directory name.
+	 * @param bRecurse Whether to recursively copy directory contents.
+     * @throws various exceptions on errors
+     */
+    virtual void copyDirectory(TskFile* directoryToCopy, const std::wstring& destinationPath, const bool bRecurse = false) = 0;
+
+    /**
+     * Copy the contents of a directory to the given fully qualifed file path. 
+     * Directories along the path will be created if they do not exist.
+     * If the destination directory exists it will be replaced.
+	 * Defaults to a non-recursive copy.
+     * @param directoryIdToCopy The id representing the directory to copy.
+     * @param destinationPath The path to save directory contents to, including the directory name. 
+	 * @param bRecurse Whether to recursively copy directory contents.
+     * @throws various exceptions on errors
+     */
+    virtual void copyDirectory(uint64_t directoryIdToCopy, const std::wstring& destinationPath, const bool bRecurse = false)
+    {
+        copyDirectory(std::auto_ptr<TskFile>(getFile(directoryIdToCopy)).get(), destinationPath, bRecurse);
+    }
+
+    /**
+     * Add a file to the system using the given file id and input stream.
+     * This method saves a local copy of the content contained in the input stream.
+     * @param fileId ID of the new file.
+     * @param istr Input stream containing the file content to save.
+     * @throws TskFileException if a file with the given fileId already exists or
+     * if an error is encountered while saving the input stream.
+     */
+    virtual void addFile(const uint64_t fileId, std::istream& istr) = 0;
+
+    /**
+     * Add a file to the system using the given file id and path.
+     * This method saves a local copy of the file given in the path.
+     * @param fileId ID of the new file.
+     * @param filePath The path of the file to save.
+     * @throws TskFileException if a file with the given fileId already exists,
+     * the file specified in filePath does not exist or an error is encountered 
+     * while saving the file.
+     */
+    virtual void addFile(const uint64_t fileId, std::wstring& filePath) = 0;
+
+    /**
+     * Delete the local copy of a file.
+     * @param fileToDelete Object of file to delete local copy of
+     * @throws various exceptions on errors
+     */
+    virtual void deleteFile(TskFile* fileToDelete) = 0;
+
+    /**
+     * Delete the local copy of a file.
+     * @param fileId ID of file to delete local copy of
+     * @throws various exceptions on errors
+     */
+    virtual void deleteFile(const uint64_t fileId)
+    {
+        deleteFile(std::auto_ptr<TskFile>(getFile(fileId)).get());
+    }
+
+    /**
+        This nested class should be used to hold a FilePtrList object returned
+        by methods such as findFilesByName() so that the file objects will be 
+        automatically freed. Example:
+        @code
+        AutoFilePtrList flist(fileManager.findFilesByName(fileName));
+        for (FilePtrList::iterator i = flist.begin(); i != flist.end(); ++i)
+        { ... //do stuff }
+        // Don't worry about delete'ing each file obj--flist will take care of
+        // that when it goes out of scope.
+        @endcode
+    */
+    class AutoFilePtrList
+    {
+    public:
+        AutoFilePtrList(FilePtrList v) : m_Files(v) {}
+        ~AutoFilePtrList()
+        {
+            for (FilePtrList::iterator it = m_Files.begin(); it != m_Files.end(); ++it)
+            {
+                delete *it;
+            }
+        }
+        FilePtrList::iterator begin() { return m_Files.begin(); }
+        FilePtrList::iterator end()   { return m_Files.end(); }
+        FilePtrList::size_type size() { return m_Files.size(); }
+    private:
+        AutoFilePtrList(const AutoFilePtrList&);
+        AutoFilePtrList& operator=(const AutoFilePtrList&);
+
+        TskFileManager::FilePtrList m_Files;
+    };
+
+protected:
+    /// Default Constructor
+    TskFileManager() {};
+
+    /// Copy Constructor
+    TskFileManager(TskFileManager const&) {};
+
+    /// Destructor
+    virtual ~TskFileManager() {};
+};
+
+#endif
diff --git a/framework/tsk/framework/file/TskFileManagerImpl.cpp b/framework/tsk/framework/file/TskFileManagerImpl.cpp
index d85061261643adc876c38021c5a5c54926e93b8b..a893cbfccb361a743e30c4d6cc7170aeebad3604 100755
--- a/framework/tsk/framework/file/TskFileManagerImpl.cpp
+++ b/framework/tsk/framework/file/TskFileManagerImpl.cpp
@@ -1,482 +1,482 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskFileManagerImpl.cpp
- * Default implementation of the TskFileManager class.
- */
-
-#include <sstream>
-#include <cstring>
-
-// Framework includes
-#include "TskFileManagerImpl.h"
-#include "TskFileTsk.h"
-#include "tsk/framework/services/TskSystemProperties.h"
-#include "tsk/framework/services/TskServices.h"
-#include "tsk/framework/utilities/TskException.h"
-#include "tsk/framework/utilities/TskUtilities.h"
-
-// Poco includes
-#include "Poco/Exception.h"
-#include "Poco/Path.h"
-#include "Poco/FileStream.h"
-#include "Poco/StreamCopier.h"
-#include "Poco/NumberFormatter.h"
-
-// C/C++ standard library includes
-#include <cassert>
-#include <sstream>
-#include <memory>
-
-TskFileManagerImpl * TskFileManagerImpl::m_pInstance = NULL;
-
-const int TskFileManagerImpl::FILES_PER_DIR = 1000;
-const int TskFileManagerImpl::FILE_BUFFER_SIZE = 8192;
-const std::string TskFileManagerImpl::FILES_DIRECTORY = "Files";
-
-TskFileManagerImpl& TskFileManagerImpl::instance()
-{
-    if (!m_pInstance)
-    {
-        m_pInstance = new TskFileManagerImpl();
-        m_pInstance->initialize();
-    }
-
-    return *m_pInstance;
-}
-
-void TskFileManagerImpl::initialize()
-{
-    try
-    {
-        std::string storagePath = GetSystemProperty(TskSystemProperties::SYSTEM_OUT_DIR);
-        m_storageDir = new Poco::File(storagePath + Poco::Path::separator() + FILES_DIRECTORY);
-
-        // Create the directory if it does not exist.
-        try {
-            m_storageDir->createDirectory();
-        } catch (Poco::FileExistsException &) {
-            ; // Ignore. This can happen when another process is creating the same directory.
-        }
-    }
-    catch (Poco::Exception& ex)
-    {
-        // Log a message
-        std::wstringstream errorMsg;
-        errorMsg << L"TskFileManagerImpl::initialize - File manager initialization failed with the following message: " 
-            << ex.message().c_str() << std::endl;
-        LOGERROR(errorMsg.str());
-        
-        // Throw a framework specific exception
-        throw TskFileException(ex.message());
-    }
-}
-
-TskFile * TskFileManagerImpl::getFile(const uint64_t fileId)
-{
-    /* If we were to ever have different subclasses of TskFile
-     * that differentiate file types, this is where the logic
-     * should go to create the correct version. 
-     */
-    return new TskFileTsk(fileId);
-}
-
-TskFileManager::FilePtrList TskFileManagerImpl::getFiles(const std::vector<uint64_t>& fileIds)
-{
-	TskFileManager::FilePtrList ret;
-    for (std::vector<uint64_t>::const_iterator it = fileIds.begin(); it != fileIds.end(); ++it)
-    {
-        ret.push_back(TskFileManager::FilePtr(getFile(*it)));
-    }
-
-	return ret;
-}
-
-TskFileManager::FilePtrList TskFileManagerImpl::findFilesByName(const std::string& name, const TSK_FS_META_TYPE_ENUM fsFileType /*= TSK_FS_META_TYPE_UNDEF*/)
-{
-    // Construct SQL condition
-    std::stringstream condition;
-    condition << "WHERE UPPER(files.name) = '" << name << "'";
-    if (fsFileType != TSK_FS_META_TYPE_UNDEF)
-    {
-        condition << " AND files.meta_type = " << static_cast<int>(fsFileType);
-    }
-
-    // Get the file ids matching our condition
-    TskImgDB& imgDB = TskServices::Instance().getImgDB();
-    std::vector<uint64_t> fileIds = imgDB.getFileIds(condition.str());
-
-    return getFiles(fileIds);
-}
-
-TskFileManager::FilePtrList TskFileManagerImpl::findFilesByExtension(const std::vector<std::string>& extensions)
-{
-    // Construct SQL condition
-    TskImgDB& imgDB = TskServices::Instance().getImgDB();
-    std::stringstream condition;
-    ///@todo check if extension already has a period
-    //period = ".";
-    condition << "WHERE (UPPER(name) LIKE ";
-    for (std::vector<std::string>::const_iterator it = extensions.begin(); it != extensions.end(); ++it)
-    {
-        condition << imgDB.quote("%." + *it);
-        if (it != --extensions.end())
-        {
-            condition << " OR UPPER(name) LIKE ";
-        }
-    }
-    condition << ") AND size > 0";
-
-    // Get the file ids matching our condition
-    std::vector<uint64_t> fileIds = imgDB.getFileIds(condition.str());
-
-	return getFiles(fileIds);
-}
-
-TskFileManager::FilePtrList TskFileManagerImpl::findFilesByParent(const uint64_t parentFileId)
-{
-    // Construct SQL condition
-    std::stringstream condition;
-    condition << "WHERE par_file_id = " << parentFileId;
-
-    // Get the file ids matching our condition
-    TskImgDB& imgDB = TskServices::Instance().getImgDB();
-    std::vector<uint64_t> fileIds = imgDB.getFileIds(condition.str());
-
-	return getFiles(fileIds);
-}
-
-TskFileManager::FilePtrList TskFileManagerImpl::findFilesByFsFileType(TSK_FS_META_TYPE_ENUM fsFileType)
-{
-    // Construct SQL condition
-    std::stringstream condition;
-    condition << "WHERE files.meta_type = " << static_cast<int>(fsFileType);
-
-    // Get the file ids matching our condition
-    TskImgDB& imgDB = TskServices::Instance().getImgDB();
-    std::vector<uint64_t> fileIds = imgDB.getFileIds(condition.str());
-
-    return getFiles(fileIds);
-}
-
-TskFileManager::FilePtrList TskFileManagerImpl::findFilesByPattern(const std::string& namePattern, const std::string& pathPattern)
-{
-    // Construct SQL condition
-    TskImgDB& imgDB = TskServices::Instance().getImgDB();
-    std::stringstream condition;
-    condition << "WHERE files.meta_type = " << static_cast<int>(TSK_FS_META_TYPE_REG)
-              << " AND UPPER(files.name) LIKE " << imgDB.quote(namePattern) 
-              << " AND UPPER(files.full_path) LIKE " << imgDB.quote(pathPattern);
-
-    // Get the file ids matching our condition
-    std::vector<uint64_t> fileIds = imgDB.getFileIds(condition.str());
-
-    return getFiles(fileIds);
-}
-
-std::wstring TskFileManagerImpl::getPath(const uint64_t fileId)
-{
-    // Determine which directory the file should live in.
-    std::stringstream dirPath;
-    dirPath << m_storageDir->path() << Poco::Path::separator()
-        << fileId / FILES_PER_DIR;
-
-    // Create the directory if it does not exist.
-    Poco::File fileDir(dirPath.str());
-    try {
-        fileDir.createDirectory();
-    } catch (Poco::FileExistsException &) {
-        ; // Ignore. This can happen when another process is creating the same directory.
-    }
-
-    // Add the fileId onto the path
-    dirPath << Poco::Path::separator() << fileId;
-
-    // Convert from Poco's UTF8 representation to std::wstring
-    std::wstring path = TskUtilities::toUTF16(dirPath.str());
-
-    return path;
-}
-
-void TskFileManagerImpl::saveFile(TskFile* fileToSave)
-{
-    TskImgDB::FILE_TYPES fileType = fileToSave->getTypeId(); 
-    if ((fileType != TskImgDB::IMGDB_FILES_TYPE_CARVED) && (fileType != TskImgDB::IMGDB_FILES_TYPE_DERIVED)) 
-    {
-        copyFile(fileToSave, getPath(fileToSave->getId()));
-    }
-    else
-    {
-        // Carved and derived files should already have been saved to storage by a call to addFile().
-        Poco::File file(Poco::Path(TskUtilities::toUTF8(getPath(fileToSave->getId()))));
-        assert(file.exists());
-        if(!file.exists())
-        {
-            std::ostringstream msg;
-            msg << "TskFileManagerImpl::saveFile : " << (fileType == TskImgDB::IMGDB_FILES_TYPE_CARVED ? "carved file" : "derived file") << " with file id = " << fileToSave->getId() << " does not exist in storage"; 
-            throw TskException(msg.str());
-        }
-    }
-}
-
-void TskFileManagerImpl::copyFile(TskFile* fileToSave, const std::wstring& filePath)
-{
-    try 
-    {
-        if (fileToSave == NULL)
-        {
-			throw TskException("TskFile pointer is NULL.");
-        }
-
-		if (fileToSave->isDirectory())
-		{
-			throw TskException("Attempt to copy directory where file is expected.");
-		}
-
-        Poco::Path destPath(TskUtilities::toUTF8(filePath));
-
-        // Create directories that may be missing along the path.
-        Poco::File destDir(destPath.parent());
-
-        try
-        {
-            destDir.createDirectories();
-        }
-        catch (Poco::FileExistsException& )
-        {
-            // It's ok if the directory already exists.
-        }
-
-        Poco::File destFile(destPath);
-
-        // If the destination file exists it is replaced
-        if (destFile.exists())
-        {
-            destFile.remove();
-        }
-
-        // If the source file exists we simply copy it to the target
-        if (fileToSave->exists())
-        {
-            Poco::File sourceFile(fileToSave->getPath());
-            sourceFile.copyTo(destPath.toString());
-        }
-        else
-        {
-            // We read the content from the file and write it to the target
-
-            // Open the file whose content we are saving
-            fileToSave->open();
-
-            // Create a new empty file.
-            destFile.createFile();
-
-            // Call File.read() to get the file content and write to new file.
-            Poco::FileOutputStream fos(destFile.path());
-            char buffer[FILE_BUFFER_SIZE];
-            int bytesRead = 0;
-
-            // Remember the offset the file was at when we were called.
-            TSK_OFF_T savedOffset = fileToSave->tell();
-
-            // Reset to start of file to ensure all content is saved.
-            fileToSave->seek(0, std::ios_base::beg);
-
-            do
-            {
-                memset(buffer, 0, FILE_BUFFER_SIZE);
-                bytesRead = fileToSave->read(buffer, FILE_BUFFER_SIZE);
-                if (bytesRead > 0)
-                    fos.write(buffer, bytesRead);
-            } while (bytesRead > 0);
-
-            // Flush and close the output stream.
-            fos.flush();
-            fos.close();
-
-            // Restore the saved offset.
-            fileToSave->seek(savedOffset, std::ios_base::beg);
-
-            // Close the file
-            fileToSave->close();
-        }
-    }
-    catch (TskFileException& tskEx)
-    {
-        // Rethrow the exception up to our caller
-        throw tskEx;
-    }
-    catch (Poco::PathNotFoundException&)
-    {
-        throw TskException("Path not found : " + fileToSave->getPath());
-    }
-    catch (std::exception & ex)
-    {
-        throw ex;
-    }
-}
-
-void TskFileManagerImpl::copyDirectory(TskFile* directoryToCopy, const std::wstring& destinationPath, const bool bRecurse)
-{
-	if (directoryToCopy == NULL)
-	{
-		throw TskException("Directory pointer is NULL.");
-	}
-
-	if (!directoryToCopy->isDirectory())
-	{
-		throw TskException("File object to copy is not a directory.");
-	}
-
-	try
-	{
-		Poco::File destDir(TskUtilities::toUTF8(destinationPath));
-
-        // If the destination directory exists it is replaced.
-        if (destDir.exists())
-        {
-            destDir.remove(true);
-        }
-
-        // Create directories that may be missing along the path.
-		destDir.createDirectories();
-
-        // If the source directory exists we simply copy it to the destination.
-        if (directoryToCopy->exists())
-        {
-            Poco::File sourceFile(directoryToCopy->getPath());
-            sourceFile.copyTo(destDir.path());
-        }
-        else
-        {
-			// Find all files contained in this directory.
-			std::stringstream condition;
-			condition << "WHERE par_file_id = " << directoryToCopy->getId();
-
-			std::vector<uint64_t> fileIds = TskServices::Instance().getImgDB().getFileIds(condition.str());
-
-			for (std::vector<uint64_t>::const_iterator it = fileIds.begin(); it != fileIds.end(); ++it)
-			{
-				TskFile * pFile = getFile(*it);
-
-				if (pFile == NULL)
-				{
-				  std::stringstream msg;
-				  msg << "Failed to create file object for file id " << *it;
-				  throw TskException(msg.str());
-				}
-
-				if (pFile->isDirectory() && bRecurse)
-				{
-					Poco::Path subDirPath = Poco::Path::forDirectory(destDir.path());
-					subDirPath.pushDirectory(pFile->getName());
-					copyDirectory(pFile, TskUtilities::toUTF16(subDirPath.toString()), bRecurse);
-				}
-
-				if (!pFile->isDirectory())
-				{
-					Poco::Path filePath(destDir.path());
-					filePath.append(pFile->getName());
-					copyFile(pFile, TskUtilities::toUTF16(filePath.toString()));
-				}
-                delete pFile;
-			}
-		}
-	}
-    catch (TskException& tskEx)
-    {
-        // Rethrow the exception up to our caller
-        throw tskEx;
-    }
-    catch (std::exception & ex)
-    {
-        throw ex;
-    }
-}
-
-void TskFileManagerImpl::addFile(const uint64_t fileId, std::istream& istr)
-{
-    // If a file with this id already exists we raise an error
-    TskFile * pFile = getFile(fileId);
-
-    if (pFile != NULL && pFile->exists())
-    {
-        delete pFile;
-        std::stringstream msg;
-        msg << "File id " << fileId << " already exists.";
-        throw TskFileException(msg.str());
-    }
-    delete pFile;
-
-    try
-    {
-        Poco::Path destPath(TskUtilities::toUTF8(getPath(fileId)));
-        Poco::File destFile(destPath);
-
-        // Create the destination
-        destFile.createFile();
-
-        // Save the file
-        Poco::FileOutputStream fos(destFile.path(), std::ios::binary);
-        Poco::StreamCopier::copyStream(istr, fos);
-    }
-    catch (Poco::Exception& ex)
-    {
-        std::wstringstream msg;
-        msg << L"TskFileManagerImpl::addFile - Error saving file from stream : " << ex.displayText().c_str();
-        LOGERROR(msg.str());
-        throw TskFileException("Error saving file from stream.");
-    }
-}
-
-void TskFileManagerImpl::addFile(const uint64_t fileId, std::wstring& filePath)
-{
-    try
-    {
-        Poco::File sourceFile(TskUtilities::toUTF8(filePath));
-        sourceFile.copyTo(TskUtilities::toUTF8(getPath(fileId)));
-    }
-    catch (Poco::Exception& ex)
-    {
-        std::wstringstream msg;
-        msg << L"TskFileManagerImpl::addFile - Error opening file " << TskUtilities::toUTF8(filePath).c_str()  
-            << L" : " << ex.displayText().c_str();
-        LOGERROR(msg.str());
-        throw TskFileException("Error opening input file.");
-    }
-}
-
-void TskFileManagerImpl::deleteFile(TskFile* fileToDelete)
-{
-    try
-    {
-        if (fileToDelete == NULL)
-        {
-            LOGERROR(L"TskFileManagerImpl::deleteFile - Passed NULL file pointer.");
-            throw TskNullPointerException();
-        }
-
-        if (fileToDelete->exists())
-        {
-            Poco::File targetFile(fileToDelete->getPath());
-            targetFile.remove();
-        }
-    }
-    catch (Poco::Exception& ex)
-    {
-        std::wstringstream errorMsg;
-        errorMsg << L"TskFileManagerImpl::delete - Failed to delete file " 
-            << fileToDelete->getPath().c_str() << L". Error: " << ex.displayText().c_str() << std::endl;
-        LOGERROR(errorMsg.str());
-
-        throw TskFileException("Failed to delete file.");
-    }
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskFileManagerImpl.cpp
+ * Default implementation of the TskFileManager class.
+ */
+
+#include <sstream>
+#include <cstring>
+
+// Framework includes
+#include "TskFileManagerImpl.h"
+#include "TskFileTsk.h"
+#include "tsk/framework/services/TskSystemProperties.h"
+#include "tsk/framework/services/TskServices.h"
+#include "tsk/framework/utilities/TskException.h"
+#include "tsk/framework/utilities/TskUtilities.h"
+
+// Poco includes
+#include "Poco/Exception.h"
+#include "Poco/Path.h"
+#include "Poco/FileStream.h"
+#include "Poco/StreamCopier.h"
+#include "Poco/NumberFormatter.h"
+
+// C/C++ standard library includes
+#include <cassert>
+#include <sstream>
+#include <memory>
+
+TskFileManagerImpl * TskFileManagerImpl::m_pInstance = NULL;
+
+const int TskFileManagerImpl::FILES_PER_DIR = 1000;
+const int TskFileManagerImpl::FILE_BUFFER_SIZE = 8192;
+const std::string TskFileManagerImpl::FILES_DIRECTORY = "Files";
+
+TskFileManagerImpl& TskFileManagerImpl::instance()
+{
+    if (!m_pInstance)
+    {
+        m_pInstance = new TskFileManagerImpl();
+        m_pInstance->initialize();
+    }
+
+    return *m_pInstance;
+}
+
+void TskFileManagerImpl::initialize()
+{
+    try
+    {
+        std::string storagePath = GetSystemProperty(TskSystemProperties::SYSTEM_OUT_DIR);
+        m_storageDir = new Poco::File(storagePath + Poco::Path::separator() + FILES_DIRECTORY);
+
+        // Create the directory if it does not exist.
+        try {
+            m_storageDir->createDirectory();
+        } catch (Poco::FileExistsException &) {
+            ; // Ignore. This can happen when another process is creating the same directory.
+        }
+    }
+    catch (Poco::Exception& ex)
+    {
+        // Log a message
+        std::wstringstream errorMsg;
+        errorMsg << L"TskFileManagerImpl::initialize - File manager initialization failed with the following message: " 
+            << ex.message().c_str() << std::endl;
+        LOGERROR(errorMsg.str());
+        
+        // Throw a framework specific exception
+        throw TskFileException(ex.message());
+    }
+}
+
+TskFile * TskFileManagerImpl::getFile(const uint64_t fileId)
+{
+    /* If we were to ever have different subclasses of TskFile
+     * that differentiate file types, this is where the logic
+     * should go to create the correct version. 
+     */
+    return new TskFileTsk(fileId);
+}
+
+TskFileManager::FilePtrList TskFileManagerImpl::getFiles(const std::vector<uint64_t>& fileIds)
+{
+	TskFileManager::FilePtrList ret;
+    for (std::vector<uint64_t>::const_iterator it = fileIds.begin(); it != fileIds.end(); ++it)
+    {
+        ret.push_back(TskFileManager::FilePtr(getFile(*it)));
+    }
+
+	return ret;
+}
+
+TskFileManager::FilePtrList TskFileManagerImpl::findFilesByName(const std::string& name, const TSK_FS_META_TYPE_ENUM fsFileType /*= TSK_FS_META_TYPE_UNDEF*/)
+{
+    // Construct SQL condition
+    std::stringstream condition;
+    condition << "WHERE UPPER(files.name) = '" << name << "'";
+    if (fsFileType != TSK_FS_META_TYPE_UNDEF)
+    {
+        condition << " AND files.meta_type = " << static_cast<int>(fsFileType);
+    }
+
+    // Get the file ids matching our condition
+    TskImgDB& imgDB = TskServices::Instance().getImgDB();
+    std::vector<uint64_t> fileIds = imgDB.getFileIds(condition.str());
+
+    return getFiles(fileIds);
+}
+
+TskFileManager::FilePtrList TskFileManagerImpl::findFilesByExtension(const std::vector<std::string>& extensions)
+{
+    // Construct SQL condition
+    TskImgDB& imgDB = TskServices::Instance().getImgDB();
+    std::stringstream condition;
+    ///@todo check if extension already has a period
+    //period = ".";
+    condition << "WHERE (UPPER(name) LIKE ";
+    for (std::vector<std::string>::const_iterator it = extensions.begin(); it != extensions.end(); ++it)
+    {
+        condition << imgDB.quote("%." + *it);
+        if (it != --extensions.end())
+        {
+            condition << " OR UPPER(name) LIKE ";
+        }
+    }
+    condition << ") AND size > 0";
+
+    // Get the file ids matching our condition
+    std::vector<uint64_t> fileIds = imgDB.getFileIds(condition.str());
+
+	return getFiles(fileIds);
+}
+
+TskFileManager::FilePtrList TskFileManagerImpl::findFilesByParent(const uint64_t parentFileId)
+{
+    // Construct SQL condition
+    std::stringstream condition;
+    condition << "WHERE par_file_id = " << parentFileId;
+
+    // Get the file ids matching our condition
+    TskImgDB& imgDB = TskServices::Instance().getImgDB();
+    std::vector<uint64_t> fileIds = imgDB.getFileIds(condition.str());
+
+	return getFiles(fileIds);
+}
+
+TskFileManager::FilePtrList TskFileManagerImpl::findFilesByFsFileType(TSK_FS_META_TYPE_ENUM fsFileType)
+{
+    // Construct SQL condition
+    std::stringstream condition;
+    condition << "WHERE files.meta_type = " << static_cast<int>(fsFileType);
+
+    // Get the file ids matching our condition
+    TskImgDB& imgDB = TskServices::Instance().getImgDB();
+    std::vector<uint64_t> fileIds = imgDB.getFileIds(condition.str());
+
+    return getFiles(fileIds);
+}
+
+TskFileManager::FilePtrList TskFileManagerImpl::findFilesByPattern(const std::string& namePattern, const std::string& pathPattern)
+{
+    // Construct SQL condition
+    TskImgDB& imgDB = TskServices::Instance().getImgDB();
+    std::stringstream condition;
+    condition << "WHERE files.meta_type = " << static_cast<int>(TSK_FS_META_TYPE_REG)
+              << " AND UPPER(files.name) LIKE " << imgDB.quote(namePattern) 
+              << " AND UPPER(files.full_path) LIKE " << imgDB.quote(pathPattern);
+
+    // Get the file ids matching our condition
+    std::vector<uint64_t> fileIds = imgDB.getFileIds(condition.str());
+
+    return getFiles(fileIds);
+}
+
+std::wstring TskFileManagerImpl::getPath(const uint64_t fileId)
+{
+    // Determine which directory the file should live in.
+    std::stringstream dirPath;
+    dirPath << m_storageDir->path() << Poco::Path::separator()
+        << fileId / FILES_PER_DIR;
+
+    // Create the directory if it does not exist.
+    Poco::File fileDir(dirPath.str());
+    try {
+        fileDir.createDirectory();
+    } catch (Poco::FileExistsException &) {
+        ; // Ignore. This can happen when another process is creating the same directory.
+    }
+
+    // Add the fileId onto the path
+    dirPath << Poco::Path::separator() << fileId;
+
+    // Convert from Poco's UTF8 representation to std::wstring
+    std::wstring path = TskUtilities::toUTF16(dirPath.str());
+
+    return path;
+}
+
+void TskFileManagerImpl::saveFile(TskFile* fileToSave)
+{
+    TskImgDB::FILE_TYPES fileType = fileToSave->getTypeId(); 
+    if ((fileType != TskImgDB::IMGDB_FILES_TYPE_CARVED) && (fileType != TskImgDB::IMGDB_FILES_TYPE_DERIVED)) 
+    {
+        copyFile(fileToSave, getPath(fileToSave->getId()));
+    }
+    else
+    {
+        // Carved and derived files should already have been saved to storage by a call to addFile().
+        Poco::File file(Poco::Path(TskUtilities::toUTF8(getPath(fileToSave->getId()))));
+        assert(file.exists());
+        if(!file.exists())
+        {
+            std::ostringstream msg;
+            msg << "TskFileManagerImpl::saveFile : " << (fileType == TskImgDB::IMGDB_FILES_TYPE_CARVED ? "carved file" : "derived file") << " with file id = " << fileToSave->getId() << " does not exist in storage"; 
+            throw TskException(msg.str());
+        }
+    }
+}
+
+void TskFileManagerImpl::copyFile(TskFile* fileToSave, const std::wstring& filePath)
+{
+    try 
+    {
+        if (fileToSave == NULL)
+        {
+			throw TskException("TskFile pointer is NULL.");
+        }
+
+		if (fileToSave->isDirectory())
+		{
+			throw TskException("Attempt to copy directory where file is expected.");
+		}
+
+        Poco::Path destPath(TskUtilities::toUTF8(filePath));
+
+        // Create directories that may be missing along the path.
+        Poco::File destDir(destPath.parent());
+
+        try
+        {
+            destDir.createDirectories();
+        }
+        catch (Poco::FileExistsException& )
+        {
+            // It's ok if the directory already exists.
+        }
+
+        Poco::File destFile(destPath);
+
+        // If the destination file exists it is replaced
+        if (destFile.exists())
+        {
+            destFile.remove();
+        }
+
+        // If the source file exists we simply copy it to the target
+        if (fileToSave->exists())
+        {
+            Poco::File sourceFile(fileToSave->getPath());
+            sourceFile.copyTo(destPath.toString());
+        }
+        else
+        {
+            // We read the content from the file and write it to the target
+
+            // Open the file whose content we are saving
+            fileToSave->open();
+
+            // Create a new empty file.
+            destFile.createFile();
+
+            // Call File.read() to get the file content and write to new file.
+            Poco::FileOutputStream fos(destFile.path());
+            char buffer[FILE_BUFFER_SIZE];
+            int bytesRead = 0;
+
+            // Remember the offset the file was at when we were called.
+            TSK_OFF_T savedOffset = fileToSave->tell();
+
+            // Reset to start of file to ensure all content is saved.
+            fileToSave->seek(0, std::ios_base::beg);
+
+            do
+            {
+                memset(buffer, 0, FILE_BUFFER_SIZE);
+                bytesRead = fileToSave->read(buffer, FILE_BUFFER_SIZE);
+                if (bytesRead > 0)
+                    fos.write(buffer, bytesRead);
+            } while (bytesRead > 0);
+
+            // Flush and close the output stream.
+            fos.flush();
+            fos.close();
+
+            // Restore the saved offset.
+            fileToSave->seek(savedOffset, std::ios_base::beg);
+
+            // Close the file
+            fileToSave->close();
+        }
+    }
+    catch (TskFileException& tskEx)
+    {
+        // Rethrow the exception up to our caller
+        throw tskEx;
+    }
+    catch (Poco::PathNotFoundException&)
+    {
+        throw TskException("Path not found : " + fileToSave->getPath());
+    }
+    catch (std::exception & ex)
+    {
+        throw ex;
+    }
+}
+
+void TskFileManagerImpl::copyDirectory(TskFile* directoryToCopy, const std::wstring& destinationPath, const bool bRecurse)
+{
+	if (directoryToCopy == NULL)
+	{
+		throw TskException("Directory pointer is NULL.");
+	}
+
+	if (!directoryToCopy->isDirectory())
+	{
+		throw TskException("File object to copy is not a directory.");
+	}
+
+	try
+	{
+		Poco::File destDir(TskUtilities::toUTF8(destinationPath));
+
+        // If the destination directory exists it is replaced.
+        if (destDir.exists())
+        {
+            destDir.remove(true);
+        }
+
+        // Create directories that may be missing along the path.
+		destDir.createDirectories();
+
+        // If the source directory exists we simply copy it to the destination.
+        if (directoryToCopy->exists())
+        {
+            Poco::File sourceFile(directoryToCopy->getPath());
+            sourceFile.copyTo(destDir.path());
+        }
+        else
+        {
+			// Find all files contained in this directory.
+			std::stringstream condition;
+			condition << "WHERE par_file_id = " << directoryToCopy->getId();
+
+			std::vector<uint64_t> fileIds = TskServices::Instance().getImgDB().getFileIds(condition.str());
+
+			for (std::vector<uint64_t>::const_iterator it = fileIds.begin(); it != fileIds.end(); ++it)
+			{
+				TskFile * pFile = getFile(*it);
+
+				if (pFile == NULL)
+				{
+				  std::stringstream msg;
+				  msg << "Failed to create file object for file id " << *it;
+				  throw TskException(msg.str());
+				}
+
+				if (pFile->isDirectory() && bRecurse)
+				{
+					Poco::Path subDirPath = Poco::Path::forDirectory(destDir.path());
+					subDirPath.pushDirectory(pFile->getName());
+					copyDirectory(pFile, TskUtilities::toUTF16(subDirPath.toString()), bRecurse);
+				}
+
+				if (!pFile->isDirectory())
+				{
+					Poco::Path filePath(destDir.path());
+					filePath.append(pFile->getName());
+					copyFile(pFile, TskUtilities::toUTF16(filePath.toString()));
+				}
+                delete pFile;
+			}
+		}
+	}
+    catch (TskException& tskEx)
+    {
+        // Rethrow the exception up to our caller
+        throw tskEx;
+    }
+    catch (std::exception & ex)
+    {
+        throw ex;
+    }
+}
+
+void TskFileManagerImpl::addFile(const uint64_t fileId, std::istream& istr)
+{
+    // If a file with this id already exists we raise an error
+    TskFile * pFile = getFile(fileId);
+
+    if (pFile != NULL && pFile->exists())
+    {
+        delete pFile;
+        std::stringstream msg;
+        msg << "File id " << fileId << " already exists.";
+        throw TskFileException(msg.str());
+    }
+    delete pFile;
+
+    try
+    {
+        Poco::Path destPath(TskUtilities::toUTF8(getPath(fileId)));
+        Poco::File destFile(destPath);
+
+        // Create the destination
+        destFile.createFile();
+
+        // Save the file
+        Poco::FileOutputStream fos(destFile.path(), std::ios::binary);
+        Poco::StreamCopier::copyStream(istr, fos);
+    }
+    catch (Poco::Exception& ex)
+    {
+        std::wstringstream msg;
+        msg << L"TskFileManagerImpl::addFile - Error saving file from stream : " << ex.displayText().c_str();
+        LOGERROR(msg.str());
+        throw TskFileException("Error saving file from stream.");
+    }
+}
+
+void TskFileManagerImpl::addFile(const uint64_t fileId, std::wstring& filePath)
+{
+    try
+    {
+        Poco::File sourceFile(TskUtilities::toUTF8(filePath));
+        sourceFile.copyTo(TskUtilities::toUTF8(getPath(fileId)));
+    }
+    catch (Poco::Exception& ex)
+    {
+        std::wstringstream msg;
+        msg << L"TskFileManagerImpl::addFile - Error opening file " << TskUtilities::toUTF8(filePath).c_str()  
+            << L" : " << ex.displayText().c_str();
+        LOGERROR(msg.str());
+        throw TskFileException("Error opening input file.");
+    }
+}
+
+void TskFileManagerImpl::deleteFile(TskFile* fileToDelete)
+{
+    try
+    {
+        if (fileToDelete == NULL)
+        {
+            LOGERROR(L"TskFileManagerImpl::deleteFile - Passed NULL file pointer.");
+            throw TskNullPointerException();
+        }
+
+        if (fileToDelete->exists())
+        {
+            Poco::File targetFile(fileToDelete->getPath());
+            targetFile.remove();
+        }
+    }
+    catch (Poco::Exception& ex)
+    {
+        std::wstringstream errorMsg;
+        errorMsg << L"TskFileManagerImpl::delete - Failed to delete file " 
+            << fileToDelete->getPath().c_str() << L". Error: " << ex.displayText().c_str() << std::endl;
+        LOGERROR(errorMsg.str());
+
+        throw TskFileException("Failed to delete file.");
+    }
 }
\ No newline at end of file
diff --git a/framework/tsk/framework/file/TskFileManagerImpl.h b/framework/tsk/framework/file/TskFileManagerImpl.h
index 3b75cdc8367d9c28729fee6fa986645e2f8d9efb..7049ed1b783f0ea1b0b23f1de497d996874ffa06 100755
--- a/framework/tsk/framework/file/TskFileManagerImpl.h
+++ b/framework/tsk/framework/file/TskFileManagerImpl.h
@@ -1,98 +1,98 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskFileManagerImpl.h
- * Default implementation of the TskFileManager class.
- */
-
-#ifndef _TSK_FILEMANAGERIMPL_H
-#define _TSK_FILEMANAGERIMPL_H
-
-// Framework Includes
-#include "TskFileManager.h"
-
-// Poco Includes
-#include "Poco/File.h"
-
-/**
- * An implementation of the TskFileManager
- * interface that stores files in a directory named 'files' 
- * based on their file ids.
- */
-class TSK_FRAMEWORK_API TskFileManagerImpl : public TskFileManager
-{
-public:
-    static const int FILES_PER_DIR;
-    static const int FILE_BUFFER_SIZE;
-    static const std::string FILES_DIRECTORY;
-
-    // The TskFileManagerImpl is implemented as a singleton
-    static TskFileManagerImpl& instance();
-
-    // Return a File object for the given file id.
-    virtual TskFile* getFile(const uint64_t fileId);
-
-    // Return a list of File objects mapped to the given list of file ids.
-    virtual TskFileManager::FilePtrList getFiles(const std::vector<uint64_t>& fileIds);
-
-    // Return a list of File objects matching the given filename
-    virtual TskFileManager::FilePtrList findFilesByName(const std::string& name, const TSK_FS_META_TYPE_ENUM fsFileType = TSK_FS_META_TYPE_UNDEF);
-    
-    // Return a list of File objects matching the given filename extension
-    virtual TskFileManager::FilePtrList findFilesByExtension(const std::vector<std::string>& extensions);
-    
-    // Return a list of File objects that are children of the given file id
-    virtual TskFileManager::FilePtrList findFilesByParent(const uint64_t parentFileId);
-    
-    // Return a list of File objects that match the given file meta type
-    virtual TskFileManager::FilePtrList findFilesByFsFileType(TSK_FS_META_TYPE_ENUM fsFileType);
-    
-    // Return a list of File objects 
-    virtual TskFileManager::FilePtrList findFilesByPattern(const std::string& namePattern, const std::string& pathPattern);
-
-    // Return the path including the file name for the given file id.
-    virtual std::wstring getPath(const uint64_t fileId);
-
-    // Save the given file to disk.
-    virtual void saveFile(TskFile* fileToSave);
-
-    // Copy the given file to the specified fully qualified file name
-    virtual void copyFile(TskFile* fileToSave, const std::wstring& filePath);
-
-	// Copy the contents of a directory to the specified path.
-	virtual void copyDirectory(TskFile* directoryToCopy, const std::wstring& destinationPath, const bool bRecurse = false);
-
-	// Save the contents of the input stream to a file with the given fileId
-    virtual void addFile(const uint64_t fileId, std::istream& istr);
-
-    virtual void addFile(const uint64_t fileId, std::wstring& filePath);
-
-    // Delete the file from disk.
-    virtual void deleteFile(TskFile* fileToDelete);
-
-private:
-    // Private constructors and assignment operator to prevent direct
-    // instantiation.
-    TskFileManagerImpl() {};
-    TskFileManagerImpl(TskFileManagerImpl const&) {};
-    TskFileManagerImpl& operator=(TskFileManagerImpl const&) { return * m_pInstance; };
-    ~TskFileManagerImpl() {};
-
-    // Our one and only instance
-    static TskFileManagerImpl * m_pInstance;
-
-    // Our storage location
-    Poco::File * m_storageDir;
-
-    // Ensure that the storage location is set up
-    void initialize();
-};
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskFileManagerImpl.h
+ * Default implementation of the TskFileManager class.
+ */
+
+#ifndef _TSK_FILEMANAGERIMPL_H
+#define _TSK_FILEMANAGERIMPL_H
+
+// Framework Includes
+#include "TskFileManager.h"
+
+// Poco Includes
+#include "Poco/File.h"
+
+/**
+ * An implementation of the TskFileManager
+ * interface that stores files in a directory named 'files' 
+ * based on their file ids.
+ */
+class TSK_FRAMEWORK_API TskFileManagerImpl : public TskFileManager
+{
+public:
+    static const int FILES_PER_DIR;
+    static const int FILE_BUFFER_SIZE;
+    static const std::string FILES_DIRECTORY;
+
+    // The TskFileManagerImpl is implemented as a singleton
+    static TskFileManagerImpl& instance();
+
+    // Return a File object for the given file id.
+    virtual TskFile* getFile(const uint64_t fileId);
+
+    // Return a list of File objects mapped to the given list of file ids.
+    virtual TskFileManager::FilePtrList getFiles(const std::vector<uint64_t>& fileIds);
+
+    // Return a list of File objects matching the given filename
+    virtual TskFileManager::FilePtrList findFilesByName(const std::string& name, const TSK_FS_META_TYPE_ENUM fsFileType = TSK_FS_META_TYPE_UNDEF);
+    
+    // Return a list of File objects matching the given filename extension
+    virtual TskFileManager::FilePtrList findFilesByExtension(const std::vector<std::string>& extensions);
+    
+    // Return a list of File objects that are children of the given file id
+    virtual TskFileManager::FilePtrList findFilesByParent(const uint64_t parentFileId);
+    
+    // Return a list of File objects that match the given file meta type
+    virtual TskFileManager::FilePtrList findFilesByFsFileType(TSK_FS_META_TYPE_ENUM fsFileType);
+    
+    // Return a list of File objects 
+    virtual TskFileManager::FilePtrList findFilesByPattern(const std::string& namePattern, const std::string& pathPattern);
+
+    // Return the path including the file name for the given file id.
+    virtual std::wstring getPath(const uint64_t fileId);
+
+    // Save the given file to disk.
+    virtual void saveFile(TskFile* fileToSave);
+
+    // Copy the given file to the specified fully qualified file name
+    virtual void copyFile(TskFile* fileToSave, const std::wstring& filePath);
+
+	// Copy the contents of a directory to the specified path.
+	virtual void copyDirectory(TskFile* directoryToCopy, const std::wstring& destinationPath, const bool bRecurse = false);
+
+	// Save the contents of the input stream to a file with the given fileId
+    virtual void addFile(const uint64_t fileId, std::istream& istr);
+
+    virtual void addFile(const uint64_t fileId, std::wstring& filePath);
+
+    // Delete the file from disk.
+    virtual void deleteFile(TskFile* fileToDelete);
+
+private:
+    // Private constructors and assignment operator to prevent direct
+    // instantiation.
+    TskFileManagerImpl() {};
+    TskFileManagerImpl(TskFileManagerImpl const&) {};
+    TskFileManagerImpl& operator=(TskFileManagerImpl const&) { return * m_pInstance; };
+    ~TskFileManagerImpl() {};
+
+    // Our one and only instance
+    static TskFileManagerImpl * m_pInstance;
+
+    // Our storage location
+    Poco::File * m_storageDir;
+
+    // Ensure that the storage location is set up
+    void initialize();
+};
+#endif
diff --git a/framework/tsk/framework/file/TskFileTsk.cpp b/framework/tsk/framework/file/TskFileTsk.cpp
index df0f0fff326dfb9fc517259c1349a0b0fe42cd08..9b16f378a7ac3dd63b633289031cc0bf8424082b 100755
--- a/framework/tsk/framework/file/TskFileTsk.cpp
+++ b/framework/tsk/framework/file/TskFileTsk.cpp
@@ -1,308 +1,308 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskFileTsk.cpp
- * Contains a Sleuthkit and Poco implementation of the TskFileTsk class.
- */
-
-// System includes
-#include <sstream>
-
-// Framework includes
-#include "TskFileTsk.h"
-#include "tsk/framework/services/TskServices.h"
-#include "tsk/framework/utilities/TskException.h"
-#include "tsk/framework/utilities/TskUtilities.h"
-#include "TskFileManagerImpl.h"
-
-/**
- * Create a TskFileTsk object given a file id.
- */
-TskFileTsk::TskFileTsk(uint64_t id) 
-    : m_file(TskUtilities::toUTF8(TskFileManagerImpl::instance().getPath(id))), 
-    m_fileInStream(NULL), m_handle(-1)
-{
-    m_id = id;
-    m_offset = 0;
-    m_isOpen = false;
-
-    initialize();
-}
-
-
-TskFileTsk::~TskFileTsk(void)
-{
-    close();
-}
-
-
-bool TskFileTsk::exists() const
-{
-    if (m_file.path().empty())
-        return false;
-    else
-        return m_file.exists();
-}
-
-
-bool TskFileTsk::isDirectory() const
-{
-    return m_fileRecord.dirType == TSK_FS_NAME_TYPE_DIR;
-}
-
-
-bool TskFileTsk::isVirtual() const
-{
-    return m_fileRecord.dirType == TSK_FS_NAME_TYPE_VIRT;
-}
-
-
-std::string TskFileTsk::getPath() const
-{
-    return m_file.path();
-}
-
-
-
-/*
- * Either initialize an input stream for files that exist on disk
- * or open a handle through the Sleuthkit for file system files that
- * have not been written to disk.
- */
-void TskFileTsk::open()
-{
-    if (m_isOpen)
-        return;
-    
-    // Files inside of the file system
-    if (getTypeId() == TskImgDB::IMGDB_FILES_TYPE_FS)
-    {
-        // Otherwise, we open a handle to the file in ImageFile
-        m_handle = TskServices::Instance().getImageFile().openFile(m_id);
-
-        if (m_handle == -1)
-        {
-            LOGERROR(L"TskFileTsk::open - Error opening file.");
-            throw TskFileException("Error opening file");
-        }
-    }
-    else if (getTypeId() == TskImgDB::IMGDB_FILES_TYPE_UNUSED)
-    {
-        if (TskServices::Instance().getImgDB().getUnusedSector(getId(), m_unusedSectorsRecord) == -1) {
-            LOGERROR(L"TskFileTsk::open - Error opening file.");
-            throw TskFileException("Error opening file");
-        }
-    }
-    // CARVED and DERIVED
-    else if ((getTypeId() == TskImgDB::IMGDB_FILES_TYPE_CARVED) || (getTypeId() == TskImgDB::IMGDB_FILES_TYPE_DERIVED)) {
-        if (exists()) {
-            // Open our input stream if not already open
-            if (m_fileInStream == NULL)
-            {
-                m_fileInStream = new Poco::FileInputStream(m_file.path());
-            }
-        }
-        else {
-            std::wstringstream msg;
-            msg << L"TskFileTsk::open - Open failed because file id (" << m_id
-                << ") does not exist on disk and is carved or derived.";
-            LOGERROR(msg.str());
-            throw TskFileException("Error opening file");
-        }
-    }
-    else
-    {
-        std::wstringstream msg;
-        msg << L"TskFileTsk::open - Open failed because file id (" << m_id
-            << ") has unknown type (" << getTypeId() << ").";
-        LOGERROR(msg.str());
-        throw TskFileException("Error opening file");
-    }
-
-    m_offset = 0;
-    m_isOpen = true;
-}
-
-void TskFileTsk::close()
-{
-    // Close and delete our input stream if it's open.
-    if (m_fileInStream != NULL)
-    {
-        m_fileInStream->close();
-        delete m_fileInStream;
-        m_fileInStream = NULL;
-    }
-
-    // Close our handle in the image file if it's open.
-    if (m_handle != -1)
-    {
-        TskServices::Instance().getImageFile().closeFile(m_handle);
-        m_handle = -1;
-    }
-
-    if (getTypeId() == TskImgDB::IMGDB_FILES_TYPE_UNUSED) {
-        m_handle = -1;
-    }
-
-    m_offset = 0;
-    m_isOpen = false;
-}
-
-
-ssize_t TskFileTsk::read(char *buf, const size_t count)
-{
-    // File must be opened before you can read.
-    if (!m_isOpen)
-    {
-        LOGERROR(L"TskFileTsk::read - File not open.");
-        return -1;
-    }
-    
-    //if the file size is 0 don't bother trying to read
-    if (!getSize())
-        return 0;
-
-    try
-    {
-        // If an on disk file exists we read the content from it
-        if (m_fileInStream != NULL)
-        {
-            m_fileInStream->read(buf, count);
-            /* @@@ BC: I am not entirely sure that POCO will
-             * not be throwing this as an exception -- the C++ streams can be 
-             * configured either way.  If it is, we'll catch that below */
-            // check for errors -- fail is set if EOF is reached
-            if ((m_fileInStream->fail()) && (m_fileInStream->eof() == false)) {
-                std::wstringstream message;
-                message << L"TskFileTsk::read - error reading stream -  offset: " 
-                    << m_fileInStream->tellg() << " -- len: " << count << std::endl;
-                LOGERROR(message.str());
-                return -1;
-            }
-            return m_fileInStream->gcount();
-        }
-        else if (getTypeId() == TskImgDB::IMGDB_FILES_TYPE_FS)
-        {
-            // readFile will log any errors
-            int bytesRead = TskServices::Instance().getImageFile().readFile(m_handle, m_offset, count, buf);
-            if (bytesRead > 0)
-                m_offset += bytesRead;
-
-            return bytesRead;
-        }
-        else if (getTypeId() == TskImgDB::IMGDB_FILES_TYPE_UNUSED)
-        {
-            int bytesRead = 0;
-            uint64_t bytesToRead = 0;
-            uint64_t fileSize = m_unusedSectorsRecord.sectLen * 512;
-            if ((uint64_t)m_offset + count > fileSize) {
-                if (fileSize - m_offset > 0)
-                    bytesToRead = fileSize - m_offset;
-                else
-                    return bytesRead;
-            } else {
-                bytesToRead = count;
-            }
-            // getByteData will log any errors
-            bytesRead = TskServices::Instance().getImageFile().getByteData(m_unusedSectorsRecord.sectStart * 512 + m_offset, bytesToRead, buf);
-            if (bytesRead > 0)
-                m_offset += bytesRead;
-            return bytesRead;
-        }
-        else {
-            std::wstringstream errorMsg;
-            errorMsg << "TskFileTsk::read ID: " << m_id << " -- unknown type" << std::endl;
-            LOGERROR(errorMsg.str());
-            return -1;
-        }
-    }
-    catch (std::exception& ex)
-    {
-        std::wstringstream errorMsg;
-        errorMsg << "TskFileTsk::read ID: " << m_id << " -- " << ex.what() << std::endl;
-        LOGERROR(errorMsg.str());
-        return -1;
-    }
-}
-
-TSK_OFF_T TskFileTsk::tell() const
-{
-    if (!m_isOpen)
-    {
-        LOGERROR(L"TskFileTsk::tell : File not open.");
-        throw TskFileException("File not open.");
-    }
-
-    if (m_fileInStream != NULL)
-        return m_fileInStream->tellg();
-    else
-        return m_offset;
-}
-
-TSK_OFF_T TskFileTsk::seek(const TSK_OFF_T off, std::ios::seekdir origin)
-{
-    if (!m_isOpen)
-    {
-        LOGERROR(L"TskFileTsk::seek : File not open.");
-        throw TskFileException("File not open.");
-    }
-
-    if (m_fileInStream != NULL)
-    {
-        // Clear all error flags before seeking since an earlier
-        // read may have set the eof flag.
-        m_fileInStream->clear();
-        m_fileInStream->seekg(off, origin);
-        return m_fileInStream->tellg();
-    }
-    else
-    {
-        if (origin == std::ios::beg)
-        {
-            if (off > getSize())
-            {
-                LOGERROR(L"TskFileTsk::seek - Attempt to seek beyond end of file.");
-                throw TskFileException("Attempt to seek beyond end of file.");
-            }
-
-            m_offset = off;
-        }
-        else if (origin == std::ios::end)
-        {
-            if (off > 0)
-            {
-                LOGERROR(L"TskFileTsk::seek - Offset must be a negative number when seeking from end of file.");
-                throw TskFileException("Seek from end requires negative offset.");
-            }
-            if (getSize() + off < 0)
-            {
-                LOGERROR(L"TskFileTsk::seek - Attempt to seek prior to start of file.");
-                throw TskFileException("Attempt to seek prior to start of file");
-            }
-            m_offset = getSize() + off;
-        }
-        else
-        {
-            if (m_offset + off > getSize())
-            {
-                LOGERROR(L"TskFileTsk::seek - Attempt to seek beyond end of file.");
-                throw TskFileException("Attempt to seek beyond end of file.");
-            }
-            if (m_offset + off < 0)
-            {
-                LOGERROR(L"TskFileTsk::seek - Attempt to seek prior to start of file.");
-                throw TskFileException("Attempt to seek prior to start of file.");
-            }
-            m_offset += off;
-        }
-        return m_offset;
-    }
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskFileTsk.cpp
+ * Contains a Sleuthkit and Poco implementation of the TskFileTsk class.
+ */
+
+// System includes
+#include <sstream>
+
+// Framework includes
+#include "TskFileTsk.h"
+#include "tsk/framework/services/TskServices.h"
+#include "tsk/framework/utilities/TskException.h"
+#include "tsk/framework/utilities/TskUtilities.h"
+#include "TskFileManagerImpl.h"
+
+/**
+ * Create a TskFileTsk object given a file id.
+ */
+TskFileTsk::TskFileTsk(uint64_t id) 
+    : m_file(TskUtilities::toUTF8(TskFileManagerImpl::instance().getPath(id))), 
+    m_fileInStream(NULL), m_handle(-1)
+{
+    m_id = id;
+    m_offset = 0;
+    m_isOpen = false;
+
+    initialize();
+}
+
+
+TskFileTsk::~TskFileTsk(void)
+{
+    close();
+}
+
+
+bool TskFileTsk::exists() const
+{
+    if (m_file.path().empty())
+        return false;
+    else
+        return m_file.exists();
+}
+
+
+bool TskFileTsk::isDirectory() const
+{
+    return m_fileRecord.dirType == TSK_FS_NAME_TYPE_DIR;
+}
+
+
+bool TskFileTsk::isVirtual() const
+{
+    return m_fileRecord.dirType == TSK_FS_NAME_TYPE_VIRT;
+}
+
+
+std::string TskFileTsk::getPath() const
+{
+    return m_file.path();
+}
+
+
+
+/*
+ * Either initialize an input stream for files that exist on disk
+ * or open a handle through the Sleuthkit for file system files that
+ * have not been written to disk.
+ */
+void TskFileTsk::open()
+{
+    if (m_isOpen)
+        return;
+    
+    // Files inside of the file system
+    if (getTypeId() == TskImgDB::IMGDB_FILES_TYPE_FS)
+    {
+        // Otherwise, we open a handle to the file in ImageFile
+        m_handle = TskServices::Instance().getImageFile().openFile(m_id);
+
+        if (m_handle == -1)
+        {
+            LOGERROR(L"TskFileTsk::open - Error opening file.");
+            throw TskFileException("Error opening file");
+        }
+    }
+    else if (getTypeId() == TskImgDB::IMGDB_FILES_TYPE_UNUSED)
+    {
+        if (TskServices::Instance().getImgDB().getUnusedSector(getId(), m_unusedSectorsRecord) == -1) {
+            LOGERROR(L"TskFileTsk::open - Error opening file.");
+            throw TskFileException("Error opening file");
+        }
+    }
+    // CARVED and DERIVED
+    else if ((getTypeId() == TskImgDB::IMGDB_FILES_TYPE_CARVED) || (getTypeId() == TskImgDB::IMGDB_FILES_TYPE_DERIVED)) {
+        if (exists()) {
+            // Open our input stream if not already open
+            if (m_fileInStream == NULL)
+            {
+                m_fileInStream = new Poco::FileInputStream(m_file.path());
+            }
+        }
+        else {
+            std::wstringstream msg;
+            msg << L"TskFileTsk::open - Open failed because file id (" << m_id
+                << ") does not exist on disk and is carved or derived.";
+            LOGERROR(msg.str());
+            throw TskFileException("Error opening file");
+        }
+    }
+    else
+    {
+        std::wstringstream msg;
+        msg << L"TskFileTsk::open - Open failed because file id (" << m_id
+            << ") has unknown type (" << getTypeId() << ").";
+        LOGERROR(msg.str());
+        throw TskFileException("Error opening file");
+    }
+
+    m_offset = 0;
+    m_isOpen = true;
+}
+
+void TskFileTsk::close()
+{
+    // Close and delete our input stream if it's open.
+    if (m_fileInStream != NULL)
+    {
+        m_fileInStream->close();
+        delete m_fileInStream;
+        m_fileInStream = NULL;
+    }
+
+    // Close our handle in the image file if it's open.
+    if (m_handle != -1)
+    {
+        TskServices::Instance().getImageFile().closeFile(m_handle);
+        m_handle = -1;
+    }
+
+    if (getTypeId() == TskImgDB::IMGDB_FILES_TYPE_UNUSED) {
+        m_handle = -1;
+    }
+
+    m_offset = 0;
+    m_isOpen = false;
+}
+
+
+ssize_t TskFileTsk::read(char *buf, const size_t count)
+{
+    // File must be opened before you can read.
+    if (!m_isOpen)
+    {
+        LOGERROR(L"TskFileTsk::read - File not open.");
+        return -1;
+    }
+    
+    //if the file size is 0 don't bother trying to read
+    if (!getSize())
+        return 0;
+
+    try
+    {
+        // If an on disk file exists we read the content from it
+        if (m_fileInStream != NULL)
+        {
+            m_fileInStream->read(buf, count);
+            /* @@@ BC: I am not entirely sure that POCO will
+             * not be throwing this as an exception -- the C++ streams can be 
+             * configured either way.  If it is, we'll catch that below */
+            // check for errors -- fail is set if EOF is reached
+            if ((m_fileInStream->fail()) && (m_fileInStream->eof() == false)) {
+                std::wstringstream message;
+                message << L"TskFileTsk::read - error reading stream -  offset: " 
+                    << m_fileInStream->tellg() << " -- len: " << count << std::endl;
+                LOGERROR(message.str());
+                return -1;
+            }
+            return m_fileInStream->gcount();
+        }
+        else if (getTypeId() == TskImgDB::IMGDB_FILES_TYPE_FS)
+        {
+            // readFile will log any errors
+            int bytesRead = TskServices::Instance().getImageFile().readFile(m_handle, m_offset, count, buf);
+            if (bytesRead > 0)
+                m_offset += bytesRead;
+
+            return bytesRead;
+        }
+        else if (getTypeId() == TskImgDB::IMGDB_FILES_TYPE_UNUSED)
+        {
+            int bytesRead = 0;
+            uint64_t bytesToRead = 0;
+            uint64_t fileSize = m_unusedSectorsRecord.sectLen * 512;
+            if ((uint64_t)m_offset + count > fileSize) {
+                if (fileSize - m_offset > 0)
+                    bytesToRead = fileSize - m_offset;
+                else
+                    return bytesRead;
+            } else {
+                bytesToRead = count;
+            }
+            // getByteData will log any errors
+            bytesRead = TskServices::Instance().getImageFile().getByteData(m_unusedSectorsRecord.sectStart * 512 + m_offset, bytesToRead, buf);
+            if (bytesRead > 0)
+                m_offset += bytesRead;
+            return bytesRead;
+        }
+        else {
+            std::wstringstream errorMsg;
+            errorMsg << "TskFileTsk::read ID: " << m_id << " -- unknown type" << std::endl;
+            LOGERROR(errorMsg.str());
+            return -1;
+        }
+    }
+    catch (std::exception& ex)
+    {
+        std::wstringstream errorMsg;
+        errorMsg << "TskFileTsk::read ID: " << m_id << " -- " << ex.what() << std::endl;
+        LOGERROR(errorMsg.str());
+        return -1;
+    }
+}
+
+TSK_OFF_T TskFileTsk::tell() const
+{
+    if (!m_isOpen)
+    {
+        LOGERROR(L"TskFileTsk::tell : File not open.");
+        throw TskFileException("File not open.");
+    }
+
+    if (m_fileInStream != NULL)
+        return m_fileInStream->tellg();
+    else
+        return m_offset;
+}
+
+TSK_OFF_T TskFileTsk::seek(const TSK_OFF_T off, std::ios::seekdir origin)
+{
+    if (!m_isOpen)
+    {
+        LOGERROR(L"TskFileTsk::seek : File not open.");
+        throw TskFileException("File not open.");
+    }
+
+    if (m_fileInStream != NULL)
+    {
+        // Clear all error flags before seeking since an earlier
+        // read may have set the eof flag.
+        m_fileInStream->clear();
+        m_fileInStream->seekg(off, origin);
+        return m_fileInStream->tellg();
+    }
+    else
+    {
+        if (origin == std::ios::beg)
+        {
+            if (off > getSize())
+            {
+                LOGERROR(L"TskFileTsk::seek - Attempt to seek beyond end of file.");
+                throw TskFileException("Attempt to seek beyond end of file.");
+            }
+
+            m_offset = off;
+        }
+        else if (origin == std::ios::end)
+        {
+            if (off > 0)
+            {
+                LOGERROR(L"TskFileTsk::seek - Offset must be a negative number when seeking from end of file.");
+                throw TskFileException("Seek from end requires negative offset.");
+            }
+            if (getSize() + off < 0)
+            {
+                LOGERROR(L"TskFileTsk::seek - Attempt to seek prior to start of file.");
+                throw TskFileException("Attempt to seek prior to start of file");
+            }
+            m_offset = getSize() + off;
+        }
+        else
+        {
+            if (m_offset + off > getSize())
+            {
+                LOGERROR(L"TskFileTsk::seek - Attempt to seek beyond end of file.");
+                throw TskFileException("Attempt to seek beyond end of file.");
+            }
+            if (m_offset + off < 0)
+            {
+                LOGERROR(L"TskFileTsk::seek - Attempt to seek prior to start of file.");
+                throw TskFileException("Attempt to seek prior to start of file.");
+            }
+            m_offset += off;
+        }
+        return m_offset;
+    }
+}
diff --git a/framework/tsk/framework/file/TskFileTsk.h b/framework/tsk/framework/file/TskFileTsk.h
index ac50bd571992412d01206041c56cefbd3834d694..f5df2f33b155a3e18b079824cade15a3a0f1610f 100755
--- a/framework/tsk/framework/file/TskFileTsk.h
+++ b/framework/tsk/framework/file/TskFileTsk.h
@@ -1,96 +1,96 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskFile.h
- * Contains the interface for the TskFile class.
- */
-
-#ifndef _TSK_FILE_TSK_H
-#define _TSK_FILE_TSK_H
-
-// System includes
-#include <string>
-
-// Framework includes
-#include "TskFile.h"
-#include "tsk/framework/services/TskImgDB.h"
-#include "tsk/base/tsk_os.h"
-
-// Poco includes
-#include "Poco/File.h"
-#include "Poco/FileStream.h"
-
-/**
- * TskFileTsk is a Sleuthkit and Poco based implementation
- * of the TskFile interface.
- */
-class TSK_FRAMEWORK_API TskFileTsk : public TskFile
-{
-public:
-    
-
-	virtual ~TskFileTsk();
-
-    /// Fully qualified path to on-disk representation of file.
-    virtual std::string getPath() const;
-
-    /// Does a file exist on disk for this TskFile object.
-    /**
-     * @return True if a file exists, false otherwise
-     */ 
-    virtual bool exists() const;
-
-    /// Does this file represent a directory.
-    /**
-     * @return True if this is a directory, false otherwise
-     */ 
-    virtual bool isDirectory() const;
-
-    /// Is this a Sleuthkit "virtual" file (created by TSK for
-    /// file system areas).
-    /**
-     * @return True if this is a "virtual" file, false otherwise
-     */ 
-    virtual bool isVirtual() const;
-
-    /// Open the file. Must be called before reading.
-    virtual void open();
-
-    /// Close the file.
-    virtual void close();
-
-    virtual TSK_OFF_T tell() const;
-
-    virtual TSK_OFF_T seek(const TSK_OFF_T off, std::ios::seekdir origin = std::ios::beg);
-
-    virtual ssize_t read(char * buf, const size_t count);
-
-protected:
-    friend class TskFileManagerImpl;
-
-    // Construct a file for the given id.
-	TskFileTsk(const uint64_t id);
-
-    TskFileTsk() {};
-
-    // A handle to the file on disk
-    Poco::File m_file;
-
-    // An input stream for the file on disk
-    Poco::FileInputStream * m_fileInStream;
-
-    // A Sleuthkit handle to the file in an image
-    int m_handle;
-
-    // For IMGDB_FILES_TYPE_UNUSED unused_sectors only
-    TskUnusedSectorsRecord m_unusedSectorsRecord;
-};
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskFile.h
+ * Contains the interface for the TskFile class.
+ */
+
+#ifndef _TSK_FILE_TSK_H
+#define _TSK_FILE_TSK_H
+
+// System includes
+#include <string>
+
+// Framework includes
+#include "TskFile.h"
+#include "tsk/framework/services/TskImgDB.h"
+#include "tsk/base/tsk_os.h"
+
+// Poco includes
+#include "Poco/File.h"
+#include "Poco/FileStream.h"
+
+/**
+ * TskFileTsk is a Sleuthkit and Poco based implementation
+ * of the TskFile interface.
+ */
+class TSK_FRAMEWORK_API TskFileTsk : public TskFile
+{
+public:
+    
+
+	virtual ~TskFileTsk();
+
+    /// Fully qualified path to on-disk representation of file.
+    virtual std::string getPath() const;
+
+    /// Does a file exist on disk for this TskFile object.
+    /**
+     * @return True if a file exists, false otherwise
+     */ 
+    virtual bool exists() const;
+
+    /// Does this file represent a directory.
+    /**
+     * @return True if this is a directory, false otherwise
+     */ 
+    virtual bool isDirectory() const;
+
+    /// Is this a Sleuthkit "virtual" file (created by TSK for
+    /// file system areas).
+    /**
+     * @return True if this is a "virtual" file, false otherwise
+     */ 
+    virtual bool isVirtual() const;
+
+    /// Open the file. Must be called before reading.
+    virtual void open();
+
+    /// Close the file.
+    virtual void close();
+
+    virtual TSK_OFF_T tell() const;
+
+    virtual TSK_OFF_T seek(const TSK_OFF_T off, std::ios::seekdir origin = std::ios::beg);
+
+    virtual ssize_t read(char * buf, const size_t count);
+
+protected:
+    friend class TskFileManagerImpl;
+
+    // Construct a file for the given id.
+	TskFileTsk(const uint64_t id);
+
+    TskFileTsk() {};
+
+    // A handle to the file on disk
+    Poco::File m_file;
+
+    // An input stream for the file on disk
+    Poco::FileInputStream * m_fileInStream;
+
+    // A Sleuthkit handle to the file in an image
+    int m_handle;
+
+    // For IMGDB_FILES_TYPE_UNUSED unused_sectors only
+    TskUnusedSectorsRecord m_unusedSectorsRecord;
+};
+#endif
diff --git a/framework/tsk/framework/framework_i.h b/framework/tsk/framework/framework_i.h
index 285382a502235242cb61755f25bd5bb2745f64d6..0cee3cf06211577846a8e0bd75b1b422866c6eea 100755
--- a/framework/tsk/framework/framework_i.h
+++ b/framework/tsk/framework/framework_i.h
@@ -1,36 +1,36 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#ifndef _TSK_OSSLIBTSK_I_H
-#define _TSK_OSSLIBTSK_I_H
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <tsk/libtsk.h>
-
-#define MAX_BUFF_LENGTH 1024
-
-
-#if defined(TSK_WIN32) 
-#if defined(TSK_EXPORTS)
-    #define TSK_FRAMEWORK_API __declspec(dllexport)
-#else
-    #define TSK_FRAMEWORK_API __declspec(dllimport)
-#endif
-// non-win32
-#else
-    #define TSK_FRAMEWORK_API 
-#endif
-
-#if defined(_MSC_VER)
-#pragma warning(disable:4251) // ... needs to have dll-interface warning
-#endif
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#ifndef _TSK_OSSLIBTSK_I_H
+#define _TSK_OSSLIBTSK_I_H
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <tsk/libtsk.h>
+
+#define MAX_BUFF_LENGTH 1024
+
+
+#if defined(TSK_WIN32) 
+#if defined(TSK_EXPORTS)
+    #define TSK_FRAMEWORK_API __declspec(dllexport)
+#else
+    #define TSK_FRAMEWORK_API __declspec(dllimport)
+#endif
+// non-win32
+#else
+    #define TSK_FRAMEWORK_API 
+#endif
+
+#if defined(_MSC_VER)
+#pragma warning(disable:4251) // ... needs to have dll-interface warning
+#endif
+
+#endif
diff --git a/framework/tsk/framework/pipeline/TskExecutableModule.cpp b/framework/tsk/framework/pipeline/TskExecutableModule.cpp
index cd869f00e9948eab01aaa99bf6407625f5d38d91..e9e7f062a5b57f9f978ec8714b61dead6c6191c9 100755
--- a/framework/tsk/framework/pipeline/TskExecutableModule.cpp
+++ b/framework/tsk/framework/pipeline/TskExecutableModule.cpp
@@ -1,232 +1,232 @@
-/*
- *
- *  The Sleuth Kit
- *
- *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- *  reserved.
- *
- *  This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskExecutableModule.cpp
- * Contains the implementation for the TskExecutableModule class.
- */
-
-// System includes
-#include <sstream>
-
-// Framework includes
-#include "TskExecutableModule.h"
-#include "tsk/framework/services/TskServices.h"
-#include "tsk/framework/utilities/TskException.h"
-#include "tsk/framework/file/TskFileManagerImpl.h"
-#include "tsk/framework/utilities/TskUtilities.h"
-
-// Poco includes
-#include "Poco/String.h"
-#include "Poco/StringTokenizer.h"
-#include "Poco/FileStream.h"
-#include "Poco/Process.h"
-#include "Poco/PipeStream.h"
-#include "Poco/StreamCopier.h"
-#include "Poco/Path.h"
-#include "Poco/DateTimeFormatter.h"
-#include "Poco/DateTimeFormat.h"
-#include "Poco/Environment.h"
-
-/**
- * Constructor
- */
-TskExecutableModule::TskExecutableModule() : m_output("")
-{
-}
-
-/**
- * Destructor
- */
-TskExecutableModule::~TskExecutableModule()
-{
-}
-
-/**
- * Run the module on the given file.
- */
-TskModule::Status TskExecutableModule::run(TskFile* fileToAnalyze)
-{
-
-    if (fileToAnalyze == NULL)
-    {
-        LOGERROR(L"TskExecutableModule::run - Passed NULL file pointer.");
-        throw TskException("Module execution failed.");
-    }
-
-    return execute(fileToAnalyze);
-}
-
-/**
- * Run the module in the reporting pipeline.
- */
-TskModule::Status TskExecutableModule::report()
-{
-    return execute(NULL);
-}
-
-/**
- * Confirm that an executable file exists at location.
- */
-void TskExecutableModule::setPath(const std::string& location)
-{
-    try
-    {
-        // Autogenerate filename extension if needed
-        Poco::Path tempPath = location;
-        if (tempPath.getExtension().empty())
-        {
-            std::string os = Poco::Environment::osName();
-            if (os.find("Windows") != std::string::npos ||
-                os.find("CYGWIN")  != std::string::npos ||
-                os.find("MINGW")   != std::string::npos )
-            {
-                tempPath.setExtension("exe");
-            }
-            // Else we assume the user is on a platform that doesn't use executable extensions.
-        }
-
-        // Call our parent to validate the location.
-        TskModule::setPath(tempPath.toString());
-
-        m_name = Poco::Path(m_modulePath).getBaseName();
-
-        // Verify that the file is executable.
-        Poco::File exeFile(m_modulePath);
-
-        if (!exeFile.canExecute())
-        {
-            std::wstringstream msg;
-            msg << L"TskExecutableModule::setPath - File is not executable: "
-                << m_modulePath.c_str();
-            LOGERROR(msg.str());
-            throw TskException("File is not executable.");
-        }
-    }
-    catch (TskException& tskEx)
-    {
-        throw tskEx;
-    }
-    catch(std::exception& ex)
-    {
-        // Log a message and throw a framework exception.
-        std::wstringstream msg;
-        msg << "TskExecutableModule::setPath : " << ex.what();
-        LOGERROR(msg.str());
-
-        throw TskException("Failed to set location: " + m_modulePath);
-    }
-}
-
-/**
- *
- */
-void TskExecutableModule::setOutput(const std::string& outFile)
-{
-    m_output = outFile;
-}
-
-/**
- *
- */
-std::string TskExecutableModule::getOutput() const
-{
-    return m_output;
-}
-
-TskModule::Status TskExecutableModule::execute(TskFile * fileToAnalyze){
-    try
-    {
-        // Perform macro expansion on command line args.
-        std::string arguments = expandArgumentMacros(m_arguments, fileToAnalyze);
-
-        // Split the arguments into a vector of strings.
-        Poco::StringTokenizer tokenizer(arguments, " ");
-
-        std::vector<std::string> vectorArgs(tokenizer.begin(), tokenizer.end());
-
-        // Perform macro expansion on our output location
-        std::string outFilePath = expandArgumentMacros(m_output, fileToAnalyze);
-
-        // If an output file has been specified we need to ensure that anything
-        // written to stdout gets put in the file. This is accomplished by passing
-        // a pipe to Poco::Process::launch and reading its contents once the process
-        // has terminated.
-        if (!outFilePath.empty())
-        {
-            // Create directories that may be missing along the path.
-            std::string outFilePathNoQuote(TskUtilities::stripQuotes(outFilePath));
-            Poco::Path outPath(outFilePathNoQuote);
-            Poco::File outDir(outPath.parent());
-            outDir.createDirectories();
-
-            // Create the output file if it does not exist.
-            Poco::File outFile(outFilePathNoQuote);
-
-            if (!outFile.exists())
-            {
-                outFile.createFile();
-            }
-
-            // Create process redirecting its output to a Pipe.
-            Poco::Pipe outPipe;
-
-            Poco::ProcessHandle handle = Poco::Process::launch(m_modulePath, vectorArgs, NULL, &outPipe, NULL);
-            
-            // Copy output from Pipe to the output file.
-            Poco::PipeInputStream istr(outPipe);
-            Poco::FileOutputStream ostr(outFile.path(), std::ios::out|std::ios::app);
-
-            while (istr)
-            {
-                Poco::StreamCopier::copyStream(istr, ostr);
-            }
-
-            // The process should be finished. Check its exit code.
-            int exitCode = Poco::Process::wait(handle);
-
-            if (exitCode != 0)
-            {
-                // If a module fails we log a warning message and continue.
-                std::wstringstream msg;
-                msg << L"TskExecutableModule::execute - Module (" << m_modulePath.c_str()
-                    << L") failed with exit code: " << exitCode;
-                LOGWARN(msg.str());
-            }
-        }
-        else
-        {
-            // No output file was specified.
-            Poco::ProcessHandle handle = Poco::Process::launch(m_modulePath, vectorArgs);
-
-            // Wait for the process to complete
-            int exitCode = Poco::Process::wait(handle);
-
-            if (exitCode != 0)
-            {
-                // If a module fails we log a warning message and continue.
-                std::wstringstream msg;
-                msg << L"TskExecutableModule::execute - Module (" << m_modulePath.c_str()
-                    << L") failed with exit code: " << exitCode;
-                LOGWARN(msg.str());
-            }
-        }
-    }
-    catch (Poco::Exception& ex)
-    {
-        std::wstringstream errorMsg;
-        errorMsg << L"TskExecutableModule::execute - Error: " << ex.displayText().c_str();
-        LOGERROR(errorMsg.str());
-        throw TskException("Module execution failed.");
-    }
-
-    return TskModule::OK;
-}
+/*
+ *
+ *  The Sleuth Kit
+ *
+ *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ *  reserved.
+ *
+ *  This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskExecutableModule.cpp
+ * Contains the implementation for the TskExecutableModule class.
+ */
+
+// System includes
+#include <sstream>
+
+// Framework includes
+#include "TskExecutableModule.h"
+#include "tsk/framework/services/TskServices.h"
+#include "tsk/framework/utilities/TskException.h"
+#include "tsk/framework/file/TskFileManagerImpl.h"
+#include "tsk/framework/utilities/TskUtilities.h"
+
+// Poco includes
+#include "Poco/String.h"
+#include "Poco/StringTokenizer.h"
+#include "Poco/FileStream.h"
+#include "Poco/Process.h"
+#include "Poco/PipeStream.h"
+#include "Poco/StreamCopier.h"
+#include "Poco/Path.h"
+#include "Poco/DateTimeFormatter.h"
+#include "Poco/DateTimeFormat.h"
+#include "Poco/Environment.h"
+
+/**
+ * Constructor
+ */
+TskExecutableModule::TskExecutableModule() : m_output("")
+{
+}
+
+/**
+ * Destructor
+ */
+TskExecutableModule::~TskExecutableModule()
+{
+}
+
+/**
+ * Run the module on the given file.
+ */
+TskModule::Status TskExecutableModule::run(TskFile* fileToAnalyze)
+{
+
+    if (fileToAnalyze == NULL)
+    {
+        LOGERROR(L"TskExecutableModule::run - Passed NULL file pointer.");
+        throw TskException("Module execution failed.");
+    }
+
+    return execute(fileToAnalyze);
+}
+
+/**
+ * Run the module in the reporting pipeline.
+ */
+TskModule::Status TskExecutableModule::report()
+{
+    return execute(NULL);
+}
+
+/**
+ * Confirm that an executable file exists at location.
+ */
+void TskExecutableModule::setPath(const std::string& location)
+{
+    try
+    {
+        // Autogenerate filename extension if needed
+        Poco::Path tempPath = location;
+        if (tempPath.getExtension().empty())
+        {
+            std::string os = Poco::Environment::osName();
+            if (os.find("Windows") != std::string::npos ||
+                os.find("CYGWIN")  != std::string::npos ||
+                os.find("MINGW")   != std::string::npos )
+            {
+                tempPath.setExtension("exe");
+            }
+            // Else we assume the user is on a platform that doesn't use executable extensions.
+        }
+
+        // Call our parent to validate the location.
+        TskModule::setPath(tempPath.toString());
+
+        m_name = Poco::Path(m_modulePath).getBaseName();
+
+        // Verify that the file is executable.
+        Poco::File exeFile(m_modulePath);
+
+        if (!exeFile.canExecute())
+        {
+            std::wstringstream msg;
+            msg << L"TskExecutableModule::setPath - File is not executable: "
+                << m_modulePath.c_str();
+            LOGERROR(msg.str());
+            throw TskException("File is not executable.");
+        }
+    }
+    catch (TskException& tskEx)
+    {
+        throw tskEx;
+    }
+    catch(std::exception& ex)
+    {
+        // Log a message and throw a framework exception.
+        std::wstringstream msg;
+        msg << "TskExecutableModule::setPath : " << ex.what();
+        LOGERROR(msg.str());
+
+        throw TskException("Failed to set location: " + m_modulePath);
+    }
+}
+
+/**
+ *
+ */
+void TskExecutableModule::setOutput(const std::string& outFile)
+{
+    m_output = outFile;
+}
+
+/**
+ *
+ */
+std::string TskExecutableModule::getOutput() const
+{
+    return m_output;
+}
+
+TskModule::Status TskExecutableModule::execute(TskFile * fileToAnalyze){
+    try
+    {
+        // Perform macro expansion on command line args.
+        std::string arguments = expandArgumentMacros(m_arguments, fileToAnalyze);
+
+        // Split the arguments into a vector of strings.
+        Poco::StringTokenizer tokenizer(arguments, " ");
+
+        std::vector<std::string> vectorArgs(tokenizer.begin(), tokenizer.end());
+
+        // Perform macro expansion on our output location
+        std::string outFilePath = expandArgumentMacros(m_output, fileToAnalyze);
+
+        // If an output file has been specified we need to ensure that anything
+        // written to stdout gets put in the file. This is accomplished by passing
+        // a pipe to Poco::Process::launch and reading its contents once the process
+        // has terminated.
+        if (!outFilePath.empty())
+        {
+            // Create directories that may be missing along the path.
+            std::string outFilePathNoQuote(TskUtilities::stripQuotes(outFilePath));
+            Poco::Path outPath(outFilePathNoQuote);
+            Poco::File outDir(outPath.parent());
+            outDir.createDirectories();
+
+            // Create the output file if it does not exist.
+            Poco::File outFile(outFilePathNoQuote);
+
+            if (!outFile.exists())
+            {
+                outFile.createFile();
+            }
+
+            // Create process redirecting its output to a Pipe.
+            Poco::Pipe outPipe;
+
+            Poco::ProcessHandle handle = Poco::Process::launch(m_modulePath, vectorArgs, NULL, &outPipe, NULL);
+            
+            // Copy output from Pipe to the output file.
+            Poco::PipeInputStream istr(outPipe);
+            Poco::FileOutputStream ostr(outFile.path(), std::ios::out|std::ios::app);
+
+            while (istr)
+            {
+                Poco::StreamCopier::copyStream(istr, ostr);
+            }
+
+            // The process should be finished. Check its exit code.
+            int exitCode = Poco::Process::wait(handle);
+
+            if (exitCode != 0)
+            {
+                // If a module fails we log a warning message and continue.
+                std::wstringstream msg;
+                msg << L"TskExecutableModule::execute - Module (" << m_modulePath.c_str()
+                    << L") failed with exit code: " << exitCode;
+                LOGWARN(msg.str());
+            }
+        }
+        else
+        {
+            // No output file was specified.
+            Poco::ProcessHandle handle = Poco::Process::launch(m_modulePath, vectorArgs);
+
+            // Wait for the process to complete
+            int exitCode = Poco::Process::wait(handle);
+
+            if (exitCode != 0)
+            {
+                // If a module fails we log a warning message and continue.
+                std::wstringstream msg;
+                msg << L"TskExecutableModule::execute - Module (" << m_modulePath.c_str()
+                    << L") failed with exit code: " << exitCode;
+                LOGWARN(msg.str());
+            }
+        }
+    }
+    catch (Poco::Exception& ex)
+    {
+        std::wstringstream errorMsg;
+        errorMsg << L"TskExecutableModule::execute - Error: " << ex.displayText().c_str();
+        LOGERROR(errorMsg.str());
+        throw TskException("Module execution failed.");
+    }
+
+    return TskModule::OK;
+}
diff --git a/framework/tsk/framework/pipeline/TskExecutableModule.h b/framework/tsk/framework/pipeline/TskExecutableModule.h
index 46facbf81c1b015a3c5d2b2e8be881a470777945..376e2715a32efb2fdfc8dd139af4ab1720ae2b16 100755
--- a/framework/tsk/framework/pipeline/TskExecutableModule.h
+++ b/framework/tsk/framework/pipeline/TskExecutableModule.h
@@ -1,46 +1,46 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#ifndef _TSK_EXECUTABLEMODULE_H
-#define _TSK_EXECUTABLEMODULE_H
-
-#include "TskModule.h"
-
-/**
- * Supports launching a process via an executable file to perform
- * some analysis on a TskFile object in a TskPipeline.
- */
-class TSK_FRAMEWORK_API TskExecutableModule: public TskModule
-{
-public:
-    // Default Constructor
-    TskExecutableModule();
-
-    // Destructor
-    virtual ~TskExecutableModule();
-
-    virtual Status run(TskFile* fileToAnalyze);
-    virtual Status report();
-
-    /// Set the path of the executable to run.
-    virtual void setPath(const std::string& location);
-
-    /// Set the output location
-    void setOutput(const std::string& outFile);
-
-    std::string getOutput() const;
-
-private:
-    std::string m_output;
-    Status execute(TskFile* fileToAnalyze);
-
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#ifndef _TSK_EXECUTABLEMODULE_H
+#define _TSK_EXECUTABLEMODULE_H
+
+#include "TskModule.h"
+
+/**
+ * Supports launching a process via an executable file to perform
+ * some analysis on a TskFile object in a TskPipeline.
+ */
+class TSK_FRAMEWORK_API TskExecutableModule: public TskModule
+{
+public:
+    // Default Constructor
+    TskExecutableModule();
+
+    // Destructor
+    virtual ~TskExecutableModule();
+
+    virtual Status run(TskFile* fileToAnalyze);
+    virtual Status report();
+
+    /// Set the path of the executable to run.
+    virtual void setPath(const std::string& location);
+
+    /// Set the output location
+    void setOutput(const std::string& outFile);
+
+    std::string getOutput() const;
+
+private:
+    std::string m_output;
+    Status execute(TskFile* fileToAnalyze);
+
+};
+
+#endif
diff --git a/framework/tsk/framework/pipeline/TskFileAnalysisPipeline.cpp b/framework/tsk/framework/pipeline/TskFileAnalysisPipeline.cpp
index e9ca1eb96be2ad21c6c933854bb50a7d52db367a..694d08aed1f3de40ab8a2a0dc58d5d063b496390 100755
--- a/framework/tsk/framework/pipeline/TskFileAnalysisPipeline.cpp
+++ b/framework/tsk/framework/pipeline/TskFileAnalysisPipeline.cpp
@@ -1,161 +1,161 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskFileAnalysisPipeline.cpp
- * Contains the implementation for the TskFileAnalysisPipeline class.
- */
-
-// Include the class definition first to ensure it does not depend on subsequent includes in this file.
-#include "TskFileAnalysisPipeline.h"
-
-// TSK Framework includes
-#include "tsk/framework/file/TskFileManagerImpl.h"
-#include "tsk/framework/services/TskServices.h"
-
-// Poco includes
-#include "Poco/AutoPtr.h"
-#include "Poco/Stopwatch.h"
-
-// C/C++ library includes
-#include <sstream>
-#include <memory>
-
-void TskFileAnalysisPipeline::run(const uint64_t fileId)
-{
-    // Get a file object for the given fileId
-    std::auto_ptr<TskFile> file(TskFileManagerImpl::instance().getFile(fileId));
-
-    if (m_modules.size() == 0){
-        file->setStatus(TskImgDB::IMGDB_FILES_STATUS_ANALYSIS_COMPLETE);
-        return;
-    }
-
-    // Run the file object through the pipeline.
-    run(file.get());
-}
-
-void TskFileAnalysisPipeline::run(TskFile* file)
-{
-    const std::string MSG_PREFIX = "TskFileAnalysisPipeline::run : ";
-
-    if (m_modules.size() == 0)
-        return;
-
-    if (file == NULL)
-    {
-        LOGERROR(MSG_PREFIX + "passed NULL file pointer");
-        throw TskNullPointerException();
-    }
-
-    TskImgDB& imgDB = TskServices::Instance().getImgDB();
-
-    try
-    {
-        // If this is an excluded file or the file is not ready for analysis
-        // we return without processing.
-        if (excludeFile(file))
-        {
-            std::stringstream msg;
-            msg << MSG_PREFIX << "skipping file (excluded) "  << file->getName() << "(" << file->getId() << ")";
-            LOGINFO(msg.str());
-            file->setStatus(TskImgDB::IMGDB_FILES_STATUS_ANALYSIS_SKIPPED);
-            return;
-        }
-
-        if (file->getStatus() != TskImgDB::IMGDB_FILES_STATUS_READY_FOR_ANALYSIS) 
-        {
-            std::stringstream msg;
-            msg << MSG_PREFIX << "skipping file (not ready) " << file->getName() << "(" << file->getId() << ")";
-            LOGINFO(msg.str());
-            return;
-        }
-
-        // Update status to indicate analysis is in progress.
-        file->setStatus(TskImgDB::IMGDB_FILES_STATUS_ANALYSIS_IN_PROGRESS);
-        std::stringstream msg;
-        msg << MSG_PREFIX <<  "analyzing " << file->getName() << "(" << file->getId() << ")";
-        LOGINFO(msg.str());
-
-        imgDB.begin();
-
-        // If there is an Executable module in the pipeline we must
-        // ensure that the file exists on disk.
-        if (m_hasExeModule && !file->exists())
-        {
-            TskFileManagerImpl::instance().saveFile(file);
-        }
-
-        bool bModuleFailed = false;
-
-        Poco::Stopwatch stopWatch;
-        for (size_t i = 0; i < m_modules.size(); i++)
-        {
-            // we have no way of knowing if the file was closed by a module,
-            // so always make sure it is open
-            file->open();
-
-            // Reset the file offset to the beginning of the file.
-            file->seek(0);
-
-            stopWatch.restart();
-            TskModule::Status status = m_modules[i]->run(file);
-            stopWatch.stop();            
-            updateModuleExecutionTime(m_modules[i]->getModuleId(), stopWatch.elapsed());
-            
-            imgDB.setModuleStatus(file->getId(), m_modules[i]->getModuleId(), (int)status);
-
-            // If any module encounters a failure while processing a file
-            // we will set the file status to failed once the pipeline is complete.
-            if (status == TskModule::FAIL)
-                bModuleFailed = true;
-
-            // Stop processing the file when a module tells us to.
-            else if (status == TskModule::STOP)
-                break;
-        }
-
-        // Delete the file if it exists. The file may have been created by us
-        // above or by a module that required it to exist on disk.
-        // Carved and derived files should not be deleted since the content is
-        // typically created by external tools.
-        if (file->getTypeId() != TskImgDB::IMGDB_FILES_TYPE_CARVED &&
-            file->getTypeId() != TskImgDB::IMGDB_FILES_TYPE_DERIVED &&
-            file->exists())
-        { 
-            TskFileManagerImpl::instance().deleteFile(file);
-        }
-
-        // We allow modules to set status on the file so we only update it
-        // if the modules haven't.
-        if (file->getStatus() == TskImgDB::IMGDB_FILES_STATUS_ANALYSIS_IN_PROGRESS)
-        {
-            if (bModuleFailed)
-            {
-                file->setStatus(TskImgDB::IMGDB_FILES_STATUS_ANALYSIS_FAILED);
-            }
-            else
-            {
-                file->setStatus(TskImgDB::IMGDB_FILES_STATUS_ANALYSIS_COMPLETE);
-            }
-        }
-        imgDB.commit();
-    }
-    catch (std::exception& ex)
-    {
-        std::stringstream msg;
-        msg << MSG_PREFIX << "error while processing file id (" << file->getId() << ") : " << ex.what();
-        LOGERROR(msg.str());
-        imgDB.updateFileStatus(file->getId(), TskImgDB::IMGDB_FILES_STATUS_ANALYSIS_FAILED);
-        imgDB.commit();
-        // Rethrow the exception
-        throw;
-    }
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskFileAnalysisPipeline.cpp
+ * Contains the implementation for the TskFileAnalysisPipeline class.
+ */
+
+// Include the class definition first to ensure it does not depend on subsequent includes in this file.
+#include "TskFileAnalysisPipeline.h"
+
+// TSK Framework includes
+#include "tsk/framework/file/TskFileManagerImpl.h"
+#include "tsk/framework/services/TskServices.h"
+
+// Poco includes
+#include "Poco/AutoPtr.h"
+#include "Poco/Stopwatch.h"
+
+// C/C++ library includes
+#include <sstream>
+#include <memory>
+
+void TskFileAnalysisPipeline::run(const uint64_t fileId)
+{
+    // Get a file object for the given fileId
+    std::auto_ptr<TskFile> file(TskFileManagerImpl::instance().getFile(fileId));
+
+    if (m_modules.size() == 0){
+        file->setStatus(TskImgDB::IMGDB_FILES_STATUS_ANALYSIS_COMPLETE);
+        return;
+    }
+
+    // Run the file object through the pipeline.
+    run(file.get());
+}
+
+void TskFileAnalysisPipeline::run(TskFile* file)
+{
+    const std::string MSG_PREFIX = "TskFileAnalysisPipeline::run : ";
+
+    if (m_modules.size() == 0)
+        return;
+
+    if (file == NULL)
+    {
+        LOGERROR(MSG_PREFIX + "passed NULL file pointer");
+        throw TskNullPointerException();
+    }
+
+    TskImgDB& imgDB = TskServices::Instance().getImgDB();
+
+    try
+    {
+        // If this is an excluded file or the file is not ready for analysis
+        // we return without processing.
+        if (excludeFile(file))
+        {
+            std::stringstream msg;
+            msg << MSG_PREFIX << "skipping file (excluded) "  << file->getName() << "(" << file->getId() << ")";
+            LOGINFO(msg.str());
+            file->setStatus(TskImgDB::IMGDB_FILES_STATUS_ANALYSIS_SKIPPED);
+            return;
+        }
+
+        if (file->getStatus() != TskImgDB::IMGDB_FILES_STATUS_READY_FOR_ANALYSIS) 
+        {
+            std::stringstream msg;
+            msg << MSG_PREFIX << "skipping file (not ready) " << file->getName() << "(" << file->getId() << ")";
+            LOGINFO(msg.str());
+            return;
+        }
+
+        // Update status to indicate analysis is in progress.
+        file->setStatus(TskImgDB::IMGDB_FILES_STATUS_ANALYSIS_IN_PROGRESS);
+        std::stringstream msg;
+        msg << MSG_PREFIX <<  "analyzing " << file->getName() << "(" << file->getId() << ")";
+        LOGINFO(msg.str());
+
+        imgDB.begin();
+
+        // If there is an Executable module in the pipeline we must
+        // ensure that the file exists on disk.
+        if (m_hasExeModule && !file->exists())
+        {
+            TskFileManagerImpl::instance().saveFile(file);
+        }
+
+        bool bModuleFailed = false;
+
+        Poco::Stopwatch stopWatch;
+        for (size_t i = 0; i < m_modules.size(); i++)
+        {
+            // we have no way of knowing if the file was closed by a module,
+            // so always make sure it is open
+            file->open();
+
+            // Reset the file offset to the beginning of the file.
+            file->seek(0);
+
+            stopWatch.restart();
+            TskModule::Status status = m_modules[i]->run(file);
+            stopWatch.stop();            
+            updateModuleExecutionTime(m_modules[i]->getModuleId(), stopWatch.elapsed());
+            
+            imgDB.setModuleStatus(file->getId(), m_modules[i]->getModuleId(), (int)status);
+
+            // If any module encounters a failure while processing a file
+            // we will set the file status to failed once the pipeline is complete.
+            if (status == TskModule::FAIL)
+                bModuleFailed = true;
+
+            // Stop processing the file when a module tells us to.
+            else if (status == TskModule::STOP)
+                break;
+        }
+
+        // Delete the file if it exists. The file may have been created by us
+        // above or by a module that required it to exist on disk.
+        // Carved and derived files should not be deleted since the content is
+        // typically created by external tools.
+        if (file->getTypeId() != TskImgDB::IMGDB_FILES_TYPE_CARVED &&
+            file->getTypeId() != TskImgDB::IMGDB_FILES_TYPE_DERIVED &&
+            file->exists())
+        { 
+            TskFileManagerImpl::instance().deleteFile(file);
+        }
+
+        // We allow modules to set status on the file so we only update it
+        // if the modules haven't.
+        if (file->getStatus() == TskImgDB::IMGDB_FILES_STATUS_ANALYSIS_IN_PROGRESS)
+        {
+            if (bModuleFailed)
+            {
+                file->setStatus(TskImgDB::IMGDB_FILES_STATUS_ANALYSIS_FAILED);
+            }
+            else
+            {
+                file->setStatus(TskImgDB::IMGDB_FILES_STATUS_ANALYSIS_COMPLETE);
+            }
+        }
+        imgDB.commit();
+    }
+    catch (std::exception& ex)
+    {
+        std::stringstream msg;
+        msg << MSG_PREFIX << "error while processing file id (" << file->getId() << ") : " << ex.what();
+        LOGERROR(msg.str());
+        imgDB.updateFileStatus(file->getId(), TskImgDB::IMGDB_FILES_STATUS_ANALYSIS_FAILED);
+        imgDB.commit();
+        // Rethrow the exception
+        throw;
+    }
+}
diff --git a/framework/tsk/framework/pipeline/TskFileAnalysisPipeline.h b/framework/tsk/framework/pipeline/TskFileAnalysisPipeline.h
index f3ca7d1b8f673bf21a91e01a147e1f9ecdb31ea8..c891d64524d6f7180b914f4cfe14dfaf24ced067 100755
--- a/framework/tsk/framework/pipeline/TskFileAnalysisPipeline.h
+++ b/framework/tsk/framework/pipeline/TskFileAnalysisPipeline.h
@@ -1,52 +1,52 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskFileAnalysisPipeline.h
- * Contains the interface for the TskFileAnalysisPipeline class.
- */
-
-#ifndef _TSK_FILEANALYSISPIPELINE_H
-#define _TSK_FILEANALYSISPIPELINE_H
-
-
-// TSK Framework includes
-#include "TskPipeline.h"
-#include "TskFileAnalysisPluginModule.h"
-
-// C/C++ library includes
-#include <string>
-
-/**
- * Controls the processing of a file analysis pipeline.  
- */
-class TSK_FRAMEWORK_API TskFileAnalysisPipeline : public TskPipeline
-{
-public:
-    // Doxygen comment in base class.
-    virtual void run(const uint64_t fileId);
-
-    // Doxygen comment in base class.
-    virtual void run(TskFile* file);
-
-    // Doxygen comment in base class.
-    virtual void run() 
-    { 
-        throw TskException("TskFileAnalysisPipeline::run : not implemented"); 
-    }
-
-    // Doxygen comment in base class.
-    TskPluginModule *createPluginModule() 
-    { 
-        return (new TskFileAnalysisPluginModule());
-    }
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskFileAnalysisPipeline.h
+ * Contains the interface for the TskFileAnalysisPipeline class.
+ */
+
+#ifndef _TSK_FILEANALYSISPIPELINE_H
+#define _TSK_FILEANALYSISPIPELINE_H
+
+
+// TSK Framework includes
+#include "TskPipeline.h"
+#include "TskFileAnalysisPluginModule.h"
+
+// C/C++ library includes
+#include <string>
+
+/**
+ * Controls the processing of a file analysis pipeline.  
+ */
+class TSK_FRAMEWORK_API TskFileAnalysisPipeline : public TskPipeline
+{
+public:
+    // Doxygen comment in base class.
+    virtual void run(const uint64_t fileId);
+
+    // Doxygen comment in base class.
+    virtual void run(TskFile* file);
+
+    // Doxygen comment in base class.
+    virtual void run() 
+    { 
+        throw TskException("TskFileAnalysisPipeline::run : not implemented"); 
+    }
+
+    // Doxygen comment in base class.
+    TskPluginModule *createPluginModule() 
+    { 
+        return (new TskFileAnalysisPluginModule());
+    }
+};
+
+#endif
diff --git a/framework/tsk/framework/pipeline/TskFileAnalysisPluginModule.cpp b/framework/tsk/framework/pipeline/TskFileAnalysisPluginModule.cpp
index 6d417435be50de9bc5971fea22dc5d6c9d11051d..abd19cbcd4bd05d6d3581cfaf77b2ece9b27136e 100755
--- a/framework/tsk/framework/pipeline/TskFileAnalysisPluginModule.cpp
+++ b/framework/tsk/framework/pipeline/TskFileAnalysisPluginModule.cpp
@@ -1,100 +1,100 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskFileAnalysisPluginModule.cpp
- * Contains the implementation for the TskFileAnalysisPluginModule class.
- */
-
-// Include the class definition first to ensure it does not depend on subsequent includes in this file.
-#include "TskFileAnalysisPluginModule.h"
-
-// Framework includes
-#include "tsk/framework/services/TskServices.h"
-#include "tsk/framework/utilities/TskException.h"
-
-// C/C++ library includes
-#include <sstream>
-
-TskModule::Status TskFileAnalysisPluginModule::run(TskFile *fileToAnalyze)
-{
-    const std::string MSG_PREFIX = "TskFileAnalysisPluginModule::run : ";
-    TskModule::Status status = TskModule::OK;
-    try
-    {
-        if (!isLoaded())
-        {
-            std::stringstream msg;
-            msg << MSG_PREFIX << getPath() << " is not loaded";
-            throw TskException(msg.str());
-        }
-
-        if (!hasSymbol(TskPluginModule::RUN_SYMBOL)) 
-        {
-            std::stringstream msg;
-            msg << MSG_PREFIX << getPath() << " does not define the '" << TskPluginModule::RUN_SYMBOL << "' symbol";
-            throw TskException(msg.str());
-        }
-
-        typedef TskModule::Status (*RunFunc)(TskFile*);
-        RunFunc run = (RunFunc)getSymbol(TskPluginModule::RUN_SYMBOL);
-        status = run(fileToAnalyze);
-    }
-    catch (TskException &ex) 
-    {
-        std::stringstream msg;
-        msg << MSG_PREFIX << "TskException executing run function of " << getName() << ": " << ex.message();
-        LOGERROR(msg.str());
-        status = TskModule::FAIL;
-    }
-    catch (Poco::Exception &ex) 
-    {
-        std::stringstream msg;
-        msg << MSG_PREFIX <<  "Poco::Exception executing run function of "  << getName() << ": " << ex.displayText();
-        LOGERROR(msg.str());
-        status = TskModule::FAIL;
-    }
-    catch (std::exception &ex) 
-    {
-        std::stringstream msg;
-        msg << MSG_PREFIX <<  "std::exception executing run function of "  << getName() << ": " << ex.what();
-        LOGERROR(msg.str());
-        status = TskModule::FAIL;
-    }
-    catch (...)
-    {
-        std::stringstream msg;
-        msg << MSG_PREFIX << "unrecognized exception executing run function of "  << getName();
-        LOGERROR(msg.str());
-        status = TskModule::FAIL;
-    }
-
-    return status;
-}
-
-void TskFileAnalysisPluginModule::checkInterface()
-{
-    const std::string MSG_PREFIX = "TskFileAnalysisPluginModule::checkInterface : ";
-
-    if (!isLoaded())
-    {
-        std::stringstream msg;
-        msg << MSG_PREFIX << getPath() << " is not loaded";
-        LOGERROR(msg.str());
-        throw TskException(msg.str());
-    }
-
-    if (!hasSymbol(TskPluginModule::RUN_SYMBOL)) 
-    {
-        std::stringstream msg;
-        msg << MSG_PREFIX << getPath() << " does not define the required '" << TskPluginModule::RUN_SYMBOL << "' symbol";
-        throw TskException(msg.str());
-    }
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskFileAnalysisPluginModule.cpp
+ * Contains the implementation for the TskFileAnalysisPluginModule class.
+ */
+
+// Include the class definition first to ensure it does not depend on subsequent includes in this file.
+#include "TskFileAnalysisPluginModule.h"
+
+// Framework includes
+#include "tsk/framework/services/TskServices.h"
+#include "tsk/framework/utilities/TskException.h"
+
+// C/C++ library includes
+#include <sstream>
+
+TskModule::Status TskFileAnalysisPluginModule::run(TskFile *fileToAnalyze)
+{
+    const std::string MSG_PREFIX = "TskFileAnalysisPluginModule::run : ";
+    TskModule::Status status = TskModule::OK;
+    try
+    {
+        if (!isLoaded())
+        {
+            std::stringstream msg;
+            msg << MSG_PREFIX << getPath() << " is not loaded";
+            throw TskException(msg.str());
+        }
+
+        if (!hasSymbol(TskPluginModule::RUN_SYMBOL)) 
+        {
+            std::stringstream msg;
+            msg << MSG_PREFIX << getPath() << " does not define the '" << TskPluginModule::RUN_SYMBOL << "' symbol";
+            throw TskException(msg.str());
+        }
+
+        typedef TskModule::Status (*RunFunc)(TskFile*);
+        RunFunc run = (RunFunc)getSymbol(TskPluginModule::RUN_SYMBOL);
+        status = run(fileToAnalyze);
+    }
+    catch (TskException &ex) 
+    {
+        std::stringstream msg;
+        msg << MSG_PREFIX << "TskException executing run function of " << getName() << ": " << ex.message();
+        LOGERROR(msg.str());
+        status = TskModule::FAIL;
+    }
+    catch (Poco::Exception &ex) 
+    {
+        std::stringstream msg;
+        msg << MSG_PREFIX <<  "Poco::Exception executing run function of "  << getName() << ": " << ex.displayText();
+        LOGERROR(msg.str());
+        status = TskModule::FAIL;
+    }
+    catch (std::exception &ex) 
+    {
+        std::stringstream msg;
+        msg << MSG_PREFIX <<  "std::exception executing run function of "  << getName() << ": " << ex.what();
+        LOGERROR(msg.str());
+        status = TskModule::FAIL;
+    }
+    catch (...)
+    {
+        std::stringstream msg;
+        msg << MSG_PREFIX << "unrecognized exception executing run function of "  << getName();
+        LOGERROR(msg.str());
+        status = TskModule::FAIL;
+    }
+
+    return status;
+}
+
+void TskFileAnalysisPluginModule::checkInterface()
+{
+    const std::string MSG_PREFIX = "TskFileAnalysisPluginModule::checkInterface : ";
+
+    if (!isLoaded())
+    {
+        std::stringstream msg;
+        msg << MSG_PREFIX << getPath() << " is not loaded";
+        LOGERROR(msg.str());
+        throw TskException(msg.str());
+    }
+
+    if (!hasSymbol(TskPluginModule::RUN_SYMBOL)) 
+    {
+        std::stringstream msg;
+        msg << MSG_PREFIX << getPath() << " does not define the required '" << TskPluginModule::RUN_SYMBOL << "' symbol";
+        throw TskException(msg.str());
+    }
+}
diff --git a/framework/tsk/framework/pipeline/TskFileAnalysisPluginModule.h b/framework/tsk/framework/pipeline/TskFileAnalysisPluginModule.h
index 7b628f2f06925d86b168f5dc28c4cb471d545de8..6d99df795e7a8c3688257fe1fab97c2e6986d414 100755
--- a/framework/tsk/framework/pipeline/TskFileAnalysisPluginModule.h
+++ b/framework/tsk/framework/pipeline/TskFileAnalysisPluginModule.h
@@ -1,31 +1,31 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#ifndef _TSK_FILEANALYSISPLUGINMODULE_H
-#define _TSK_FILEANALYSISPLUGINMODULE_H
-
-// TSK Framework includes
-#include "TskPluginModule.h"
-
-/**
- * Supports the loading of custom dynamic libraries to perform
- * analysis on a single TskFile
- */
-class TSK_FRAMEWORK_API TskFileAnalysisPluginModule: public TskPluginModule
-{
-public:
-    // Doxygen comment in base class.
-    virtual Status run(TskFile *fileToAnalyze);
-
-    // Doxygen comment in base class.
-    virtual void checkInterface();
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#ifndef _TSK_FILEANALYSISPLUGINMODULE_H
+#define _TSK_FILEANALYSISPLUGINMODULE_H
+
+// TSK Framework includes
+#include "TskPluginModule.h"
+
+/**
+ * Supports the loading of custom dynamic libraries to perform
+ * analysis on a single TskFile
+ */
+class TSK_FRAMEWORK_API TskFileAnalysisPluginModule: public TskPluginModule
+{
+public:
+    // Doxygen comment in base class.
+    virtual Status run(TskFile *fileToAnalyze);
+
+    // Doxygen comment in base class.
+    virtual void checkInterface();
+};
+
+#endif
diff --git a/framework/tsk/framework/pipeline/TskModule.cpp b/framework/tsk/framework/pipeline/TskModule.cpp
index 643a6840ee14d11fd6a012898c1011ee7e3cc0bb..ee9ee989d7da8f560d2c1153ed2771a6b8b56f72 100755
--- a/framework/tsk/framework/pipeline/TskModule.cpp
+++ b/framework/tsk/framework/pipeline/TskModule.cpp
@@ -1,114 +1,114 @@
-/*
- *
- *  The Sleuth Kit
- *
- *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- *  reserved.
- *
- *  This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskModule.cpp
- * Contains the implementation for the TskModule base class.
- */
-
-#include <sstream>
-
-#include "TskModule.h"
-#include "tsk/framework/services/TskServices.h"
-#include "tsk/framework/services/TskSystemProperties.h"
-
-#include "Poco/String.h"
-#include "Poco/Environment.h"
-#include "Poco/Path.h"
-#include "Poco/File.h"
-
-const std::string TskModule::CURRENT_FILE_MACRO = "#CURRENT_FILE#";
-
-TskModule::TskModule() : m_moduleId(0)
-{
-}
-
-TskModule::~TskModule()
-{
-}
-
-/**
- * Sets the location of the module given an absolute or relative location.
- * For relative paths we look for the
- * module first in PROG_DIR, then MODULE_DIR, then the
- * current directory, and 
- * finally the system path. Will throw an exception if the module cannot 
- * be found.
- * @param location Absolute or relative path string for module.
- */
-void TskModule::setPath(const std::string& location)
-{
-    if (location.empty()) 
-    {
-        throw TskException("TskModule::setPath: location is empty or missing.");
-    }
-
-    Poco::Path tempPath = location;
-
-    if (!tempPath.isAbsolute())
-    {
-        // If this is a relative path, then see if we can find the
-        // executable either in PROG_DIR, in MODULE_DIR, in the current directory,
-        // or on the system path.        
-        std::string pathsToSearch = GetSystemProperty(TskSystemProperties::PROG_DIR); 
-        if (!pathsToSearch.empty())
-            pathsToSearch += Poco::Path::pathSeparator();
-        pathsToSearch += GetSystemProperty(TskSystemProperties::MODULE_DIR);
-        if (!pathsToSearch.empty())
-            pathsToSearch += Poco::Path::pathSeparator();
-        pathsToSearch += ".";
-
-        if (!Poco::Path::find(pathsToSearch, location, tempPath))
-        {
-            // if we didn't find them in the above paths, check on the path. 
-            if (Poco::Environment::has("Path"))
-            {
-                std::string systemPath = Poco::Environment::get("Path");
-            
-                if (!systemPath.empty())
-                {
-                    Poco::Path::find(systemPath, location, tempPath);
-                }
-            }
-        }
-    }
-
-    // Confirm existence of file at location.
-    Poco::File moduleFile(tempPath);
-
-    if (!moduleFile.exists())
-    {
-        std::stringstream msg;
-        msg << "TskModule::setPath - Module not found: "
-            << tempPath.toString().c_str();
-        throw TskException(msg.str());
-    }
-    else {
-        std::wstringstream msg;
-        msg << L"TskModule::setPath - Module found at: "
-            << tempPath.toString().c_str();
-        LOGINFO(msg.str());
-    }
-
-    m_modulePath = tempPath.toString();
-}
-
-std::string TskModule::expandArgumentMacros(const std::string &args, const TskFile *fileToAnalyze)
-{
-    std::string outputStr = args;
-
-    if (fileToAnalyze)
-    {
-        Poco::replaceInPlace(outputStr, TskModule::CURRENT_FILE_MACRO, fileToAnalyze->getPath());
-    }
-
-    return ExpandSystemPropertyMacros(outputStr);
-}
+/*
+ *
+ *  The Sleuth Kit
+ *
+ *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ *  reserved.
+ *
+ *  This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskModule.cpp
+ * Contains the implementation for the TskModule base class.
+ */
+
+#include <sstream>
+
+#include "TskModule.h"
+#include "tsk/framework/services/TskServices.h"
+#include "tsk/framework/services/TskSystemProperties.h"
+
+#include "Poco/String.h"
+#include "Poco/Environment.h"
+#include "Poco/Path.h"
+#include "Poco/File.h"
+
+const std::string TskModule::CURRENT_FILE_MACRO = "#CURRENT_FILE#";
+
+TskModule::TskModule() : m_moduleId(0)
+{
+}
+
+TskModule::~TskModule()
+{
+}
+
+/**
+ * Sets the location of the module given an absolute or relative location.
+ * For relative paths we look for the
+ * module first in PROG_DIR, then MODULE_DIR, then the
+ * current directory, and 
+ * finally the system path. Will throw an exception if the module cannot 
+ * be found.
+ * @param location Absolute or relative path string for module.
+ */
+void TskModule::setPath(const std::string& location)
+{
+    if (location.empty()) 
+    {
+        throw TskException("TskModule::setPath: location is empty or missing.");
+    }
+
+    Poco::Path tempPath = location;
+
+    if (!tempPath.isAbsolute())
+    {
+        // If this is a relative path, then see if we can find the
+        // executable either in PROG_DIR, in MODULE_DIR, in the current directory,
+        // or on the system path.        
+        std::string pathsToSearch = GetSystemProperty(TskSystemProperties::PROG_DIR); 
+        if (!pathsToSearch.empty())
+            pathsToSearch += Poco::Path::pathSeparator();
+        pathsToSearch += GetSystemProperty(TskSystemProperties::MODULE_DIR);
+        if (!pathsToSearch.empty())
+            pathsToSearch += Poco::Path::pathSeparator();
+        pathsToSearch += ".";
+
+        if (!Poco::Path::find(pathsToSearch, location, tempPath))
+        {
+            // if we didn't find them in the above paths, check on the path. 
+            if (Poco::Environment::has("Path"))
+            {
+                std::string systemPath = Poco::Environment::get("Path");
+            
+                if (!systemPath.empty())
+                {
+                    Poco::Path::find(systemPath, location, tempPath);
+                }
+            }
+        }
+    }
+
+    // Confirm existence of file at location.
+    Poco::File moduleFile(tempPath);
+
+    if (!moduleFile.exists())
+    {
+        std::stringstream msg;
+        msg << "TskModule::setPath - Module not found: "
+            << tempPath.toString().c_str();
+        throw TskException(msg.str());
+    }
+    else {
+        std::wstringstream msg;
+        msg << L"TskModule::setPath - Module found at: "
+            << tempPath.toString().c_str();
+        LOGINFO(msg.str());
+    }
+
+    m_modulePath = tempPath.toString();
+}
+
+std::string TskModule::expandArgumentMacros(const std::string &args, const TskFile *fileToAnalyze)
+{
+    std::string outputStr = args;
+
+    if (fileToAnalyze)
+    {
+        Poco::replaceInPlace(outputStr, TskModule::CURRENT_FILE_MACRO, fileToAnalyze->getPath());
+    }
+
+    return ExpandSystemPropertyMacros(outputStr);
+}
diff --git a/framework/tsk/framework/pipeline/TskModule.h b/framework/tsk/framework/pipeline/TskModule.h
index dde738d47e4633f4654357060ace0b8ace299785..972db0d0081d458b35ef76884f03e85d6f5d58d7 100755
--- a/framework/tsk/framework/pipeline/TskModule.h
+++ b/framework/tsk/framework/pipeline/TskModule.h
@@ -1,107 +1,107 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskModule.h
- * Contains the interface for the Module class.
- */
-
-#ifndef _TSK_MODULE_H
-#define _TSK_MODULE_H
-
-#include "tsk/framework/file/TskFile.h"
-
-/**
- * Interface for classes that represent different types of modules
- * in the pipeline. Example module types include dynamic library
- * and executables. These modules perform some operation in the
- * context of a TskPipeline.
- */
-class TSK_FRAMEWORK_API TskModule
-{
-public:
-    /**
-     * The TskModule class supports the use of a string macro that is expanded
-     * to the path of the file currently under analysis. This macro is intended
-     * to be used in the arguments strings passed to the initialization
-     * functions of file analysis modules. "#CURRENT_FILE#" is the literal form
-     * of the macro.
-     */
-    static const std::string CURRENT_FILE_MACRO;
-
-    /// Standard values that module methods can return.
-    enum Status
-    {
-        OK = 0, ///< Indicates that the module sucessfully analyzed the data or was able to decide that it should not analyze the data.
-        FAIL, ///< Indicates that the module wanted to perform analysis on the data, but was unable to because of an error.  
-        STOP  ///< Indicates that the module wants the pipeline to stop processing. 
-    };
-
-    // Default Constructor
-    TskModule();
-
-    // Virtual destructor since Module must be subclassed to be useful
-    virtual ~TskModule();
-
-    /**
-     * Method that is used to run file analysis modules.
-     * @returns Status of module
-     */
-    virtual Status run(TskFile* fileToAnalyze) = 0;
-
-    /**
-     * Method that is used to run report modules.
-     * @returns Status of module
-     */
-    virtual Status report() { return TskModule::OK; };
-
-    virtual void setPath(const std::string& location);
-
-    /**
-     * Returns the fully qualified path to the module.
-     */
-    virtual std::string getPath() const { return m_modulePath; }
-
-    /// Set the arguments to be passed to the module.
-    void setArguments(const std::string& args) { m_arguments = args; }
-
-    /// Get the arguments
-    std::string getArguments() const { return m_arguments; }
-
-    /// Get the module name
-    std::string getName() const { return m_name; }
-
-    /// Get the module description
-    std::string getDescription() const { return m_description; }
-
-    /// Get the module version
-    std::string getVersion() const { return m_version; }
-
-    /// Set the module id
-    void setModuleId(int moduleId) { m_moduleId = moduleId; }
-
-    /// Get the module id
-    int getModuleId() const { return m_moduleId; }
-
-protected:
-    std::string m_modulePath;
-    std::string m_arguments;
-    std::string m_name;
-    std::string m_description;
-    std::string m_version;
-    int m_moduleId;
-
-    static std::string expandArgumentMacros(const std::string &args, const TskFile *fileToAnalyze);
-
-private:
-
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskModule.h
+ * Contains the interface for the Module class.
+ */
+
+#ifndef _TSK_MODULE_H
+#define _TSK_MODULE_H
+
+#include "tsk/framework/file/TskFile.h"
+
+/**
+ * Interface for classes that represent different types of modules
+ * in the pipeline. Example module types include dynamic library
+ * and executables. These modules perform some operation in the
+ * context of a TskPipeline.
+ */
+class TSK_FRAMEWORK_API TskModule
+{
+public:
+    /**
+     * The TskModule class supports the use of a string macro that is expanded
+     * to the path of the file currently under analysis. This macro is intended
+     * to be used in the arguments strings passed to the initialization
+     * functions of file analysis modules. "#CURRENT_FILE#" is the literal form
+     * of the macro.
+     */
+    static const std::string CURRENT_FILE_MACRO;
+
+    /// Standard values that module methods can return.
+    enum Status
+    {
+        OK = 0, ///< Indicates that the module sucessfully analyzed the data or was able to decide that it should not analyze the data.
+        FAIL, ///< Indicates that the module wanted to perform analysis on the data, but was unable to because of an error.  
+        STOP  ///< Indicates that the module wants the pipeline to stop processing. 
+    };
+
+    // Default Constructor
+    TskModule();
+
+    // Virtual destructor since Module must be subclassed to be useful
+    virtual ~TskModule();
+
+    /**
+     * Method that is used to run file analysis modules.
+     * @returns Status of module
+     */
+    virtual Status run(TskFile* fileToAnalyze) = 0;
+
+    /**
+     * Method that is used to run report modules.
+     * @returns Status of module
+     */
+    virtual Status report() { return TskModule::OK; };
+
+    virtual void setPath(const std::string& location);
+
+    /**
+     * Returns the fully qualified path to the module.
+     */
+    virtual std::string getPath() const { return m_modulePath; }
+
+    /// Set the arguments to be passed to the module.
+    void setArguments(const std::string& args) { m_arguments = args; }
+
+    /// Get the arguments
+    std::string getArguments() const { return m_arguments; }
+
+    /// Get the module name
+    std::string getName() const { return m_name; }
+
+    /// Get the module description
+    std::string getDescription() const { return m_description; }
+
+    /// Get the module version
+    std::string getVersion() const { return m_version; }
+
+    /// Set the module id
+    void setModuleId(int moduleId) { m_moduleId = moduleId; }
+
+    /// Get the module id
+    int getModuleId() const { return m_moduleId; }
+
+protected:
+    std::string m_modulePath;
+    std::string m_arguments;
+    std::string m_name;
+    std::string m_description;
+    std::string m_version;
+    int m_moduleId;
+
+    static std::string expandArgumentMacros(const std::string &args, const TskFile *fileToAnalyze);
+
+private:
+
+};
+
+#endif
diff --git a/framework/tsk/framework/pipeline/TskPipeline.cpp b/framework/tsk/framework/pipeline/TskPipeline.cpp
index c6a9ca894d7c409a80540c537ac22927bdb4e6c7..b0fafc390d543e3ba5dccb90db9a5b0fb80f71a6 100755
--- a/framework/tsk/framework/pipeline/TskPipeline.cpp
+++ b/framework/tsk/framework/pipeline/TskPipeline.cpp
@@ -1,307 +1,307 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskPipeline.cpp
- * Contains the implementation for the TskPipeline class.
- */
-
-// Include the class definition first to ensure it does not depend on subsequent includes in this file.
-#include "TskPipeline.h"
-
-// TSK Framework includes
-#include "TskExecutableModule.h"
-#include "TskPluginModule.h"
-#include "tsk/framework/file/TskFileManagerImpl.h"
-#include "tsk/framework/services/TskServices.h"
-#include "tsk/framework/utilities/TskException.h"
-#include "tsk/framework/utilities/TskUtilities.h"
-
-// Poco includes
-#include "Poco/AutoPtr.h"
-#include "Poco/NumberParser.h"
-#include "Poco/DOM/DOMParser.h"
-#include "Poco/DOM/NodeList.h"
-#include "Poco/DOM/Document.h"
-#include "Poco/UnicodeConverter.h"
-
-// C/C++ library includes
-#include <sstream>
-#include <assert.h>
-#include <memory>
-
-const std::string TskPipeline::MODULE_ELEMENT = "MODULE";
-const std::string TskPipeline::MODULE_TYPE_ATTR = "type";
-const std::string TskPipeline::MODULE_ORDER_ATTR = "order";
-const std::string TskPipeline::MODULE_LOCATION_ATTR = "location";
-const std::string TskPipeline::MODULE_ARGS_ATTR = "arguments";
-const std::string TskPipeline::MODULE_OUTPUT_ATTR = "output";
-const std::string TskPipeline::MODULE_EXECUTABLE_TYPE = "executable";
-const std::string TskPipeline::MODULE_PLUGIN_TYPE = "plugin";
-
-TskPipeline::TskPipeline() : m_hasExeModule(false), m_loadDll(true)
-{
-}
-
-TskPipeline::~TskPipeline()
-{
-    // Delete modules
-    for (std::vector<TskModule*>::iterator it = m_modules.begin(); it != m_modules.end(); it++)
-        delete *it;
-}
-
-void TskPipeline::validate(const std::string & pipelineConfig)
-{
-    m_loadDll = false;
-    initialize(pipelineConfig);
-}
-
-void TskPipeline::initialize(const std::string & pipelineConfig)
-{
-    if (pipelineConfig.empty())
-    {
-        throw TskException("TskPipeline::initialize: Pipeline configuration string is empty.");
-    }
-
-    try
-    {
-        Poco::XML::DOMParser parser;
-        Poco::AutoPtr<Poco::XML::Document> xmlDoc = parser.parseString(pipelineConfig);
-
-        // Get all Module elements
-        Poco::AutoPtr<Poco::XML::NodeList> modules = 
-            xmlDoc->getElementsByTagName(TskPipeline::MODULE_ELEMENT);
-
-        if (modules->length() == 0)
-        {
-            LOGWARN(L"TskPipeline::initialize - No modules found in config file.");
-            return;
-        }
-
-        // Size our list based on the number of modules
-        m_modules.resize(modules->length());
-
-        // Iterate through the module elements, make sure they are increasing order
-        // we now allow for gaps to make it easier to comment things out.
-        int prevOrder = -1;
-        for (unsigned int i = 0; i < modules->length(); i++)
-        {
-            Poco::XML::Node * pNode = modules->item(i);
-            Poco::XML::Element* pElem = dynamic_cast<Poco::XML::Element*>(pNode);
-            Poco::XML::XMLString orderStr = pElem->getAttribute(TskPipeline::MODULE_ORDER_ATTR);
-            if (orderStr == "") {
-                throw TskException("TskPipeline::initialize: Module order missing.");
-            }
-            int order;
-            try 
-            {
-                order = Poco::NumberParser::parse(orderStr);
-            } catch (Poco::SyntaxException ex) 
-            {
-                std::stringstream msg;
-                msg << "TskPipeline::initialize - Module order must a decimal number. Got " << orderStr.c_str();
-                throw TskException(msg.str());
-            }
-            if (order <= prevOrder) 
-            {
-                std::stringstream msg;
-                msg << "TskPipeline::initialize - Expecting order bigger than " << prevOrder << ", got " << order;
-                throw TskException(msg.str());
-            }
-            prevOrder = order;
-        }
-
-        // Iterate through the module elements creating a new Module for each one
-        m_modules.clear();
-        for (unsigned int i = 0; i < modules->length(); i++)
-        {
-            Poco::XML::Node * pNode = modules->item(i);
-            Poco::XML::Element* pElem = dynamic_cast<Poco::XML::Element*>(pNode);
-
-            if (!pElem)
-                continue;
-
-            // Create a new module
-            TskModule * pModule = createModule(pElem);
-
-            if (pModule == NULL)
-            {
-                throw TskException("TskPipeline::initialize - Module creation failed.");
-            }
-
-            if (m_loadDll) 
-            {
-                TskImgDB& imgDB = TskServices::Instance().getImgDB();
-
-                // Insert into Modules table
-                int moduleId = 0;
-                if (imgDB.addModule(pModule->getName(), pModule->getDescription(), moduleId)) 
-                {
-                    std::stringstream errorMsg;
-                    errorMsg << "TskPipeline::initialize - Failed to insert into Modules table. "  
-                             << " module name=" << pModule->getName() ;
-                    throw TskException(errorMsg.str());
-                } 
-                else 
-                {
-                    pModule->setModuleId(moduleId);
-                    m_moduleNames.insert(std::make_pair(moduleId, pModule->getName()));
-                    m_moduleExecTimes.insert(std::make_pair(moduleId, Poco::Timespan()));
-                }
-                bool duplicate = false;
-                for (std::vector<TskModule*>::iterator it = m_modules.begin(); it != m_modules.end(); it++) {
-                    if ((*it)->getModuleId() == pModule->getModuleId()) {
-                        duplicate = true;
-                        std::stringstream msg;
-                        msg << "TskPipeline::initialize - " << pModule->getName() << " is a duplicate module. " <<
-                            "The duplicate will not be added to the pipeline";
-                        throw TskException(msg.str());
-                    }
-                }
-                if (!duplicate)
-                    m_modules.push_back(pModule);
-            }
-        }
-    }
-    // rethrow this, otherwise it is caught by std::exception and we lose the detail.
-    catch (TskException& ex) {
-        throw(ex);
-    }
-    catch (std::exception& ex)
-    {
-        std::stringstream errorMsg;
-        errorMsg << "TskPipeline::initialize - Pipeline initialization failed: " <<ex.what() ;
-        throw TskException(errorMsg.str());
-    }
-}
-
-TskModule * TskPipeline::createModule(Poco::XML::Element *pElem)
-{
-    if (!pElem)
-    {
-        LOGERROR(L"TskPipeline::createModule - Passed NULL Element.");
-        return NULL;
-    }
-
-    try
-    {
-        if (pElem->getAttribute(TskPipeline::MODULE_TYPE_ATTR) == MODULE_EXECUTABLE_TYPE)
-        {
-            // Use auto_ptr to ensure that module will be deleted if there 
-            // are exceptions.
-            std::auto_ptr<TskExecutableModule> pModule(new TskExecutableModule());
-            std::string location(pElem->getAttribute(TskPipeline::MODULE_LOCATION_ATTR));
-            pModule->setPath(location);
-            //pModule->setPath(pElem->getAttribute(TskPipeline::MODULE_LOCATION_ATTR));
-            pModule->setArguments(pElem->getAttribute(TskPipeline::MODULE_ARGS_ATTR));
-            pModule->setOutput(pElem->getAttribute(TskPipeline::MODULE_OUTPUT_ATTR));
-
-            m_hasExeModule = true;
-
-            // The module was successfully created so we no longer need the
-            // auto_ptr to manage it.
-            return pModule.release();
-        }
-        else if (pElem->getAttribute(TskPipeline::MODULE_TYPE_ATTR) == MODULE_PLUGIN_TYPE)
-        {
-            std::auto_ptr<TskPluginModule> pModule(createPluginModule());
-            pModule->setPath(pElem->getAttribute(TskPipeline::MODULE_LOCATION_ATTR));
-            pModule->setArguments(pElem->getAttribute(TskPipeline::MODULE_ARGS_ATTR));
-            pModule->checkInterface();
-
-            // Initialize the module.
-            if (m_loadDll)
-            {
-                if (pModule->initialize() != TskModule::OK)
-                {
-                    return NULL;
-                }
-            }
-
-            // The module was successfully created and initialized so we no longer
-            // need the auto_ptr to manage it.
-            return pModule.release();
-        }
-        else
-        {
-            std::wstringstream errorMsg;
-            errorMsg << "TskPipeline::createModule - Unrecognized module type : "
-                << pElem->getAttribute(TskPipeline::MODULE_TYPE_ATTR).c_str();
-            LOGERROR(errorMsg.str());
-
-            return NULL;
-        }
-    }
-    catch (TskException& ex)
-    {
-        std::wstringstream errorMsg;
-        errorMsg << L"TskPipeline::createModule - Module creation failed: " << pElem->getAttribute(TskPipeline::MODULE_LOCATION_ATTR).c_str() << L" ("<< ex.message().c_str()<< L")";
-        LOGERROR(errorMsg.str());
-        return NULL;
-    }
-    catch (std::exception & ex)
-    {
-        std::wstringstream errorMsg;
-        errorMsg << L"TskPipeline::createModule - Module creation failed: " << pElem->getAttribute(TskPipeline::MODULE_LOCATION_ATTR).c_str() << L" ("<< ex.what() << L")";
-        LOGERROR(errorMsg.str());
-        return NULL;
-    }
-    catch (...)
-    {
-        std::wstringstream errorMsg;
-        errorMsg << L"TskPipeline::createModule - Unnkown exception : " << pElem->getAttribute(TskPipeline::MODULE_LOCATION_ATTR).c_str() ;
-        LOGERROR(errorMsg.str());
-        return NULL;
-    }
-
-}
-
-void TskPipeline::logModuleExecutionTimes() const
-{
-    for (std::map<int, Poco::Timespan>::const_iterator it = m_moduleExecTimes.begin(); it != m_moduleExecTimes.end(); ++it)
-    {
-        assert(m_moduleNames.find(it->first) != m_moduleNames.end());
-        std::stringstream msg;
-        msg << "TskPipeline::logModuleExecutionTimes : "  << m_moduleNames.find(it->first)->second << " total execution time was "
-        << it->second.days() << ":" << it->second.hours() << ":" << it->second.minutes() << ":" << it->second.seconds() << ":" << it->second.milliseconds()
-        << " (days:hrs:mins:secs:ms)";
-        LOGINFO(msg.str());
-    }
-}
-
-bool TskPipeline::excludeFile(const TskFile* file)
-{
-    if (file == NULL)
-    {
-        LOGERROR(L"TskPipeline::excludeFile - Passed NULL file pointer.");
-        throw TskNullPointerException();
-    }
-
-    // Exclude directories and Sleuthkit "virtual" files from analysis.
-    if (file->isDirectory() || file->isVirtual())
-        return true;
-
-    return false;
-}
-
-void TskPipeline::updateModuleExecutionTime(int moduleId, const Poco::Timespan::TimeDiff &executionTime)
-{
-    std::map<int, Poco::Timespan>::iterator it = m_moduleExecTimes.find(moduleId);
-    if (it != m_moduleExecTimes.end())
-    {
-        it->second += executionTime;
-    }
-    else
-    {
-        std::stringstream msg;
-        msg << "TskPipeline::updateModuleExecutionTime : unknown moduleId " << moduleId;
-        LOGERROR(msg.str());
-    }
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskPipeline.cpp
+ * Contains the implementation for the TskPipeline class.
+ */
+
+// Include the class definition first to ensure it does not depend on subsequent includes in this file.
+#include "TskPipeline.h"
+
+// TSK Framework includes
+#include "TskExecutableModule.h"
+#include "TskPluginModule.h"
+#include "tsk/framework/file/TskFileManagerImpl.h"
+#include "tsk/framework/services/TskServices.h"
+#include "tsk/framework/utilities/TskException.h"
+#include "tsk/framework/utilities/TskUtilities.h"
+
+// Poco includes
+#include "Poco/AutoPtr.h"
+#include "Poco/NumberParser.h"
+#include "Poco/DOM/DOMParser.h"
+#include "Poco/DOM/NodeList.h"
+#include "Poco/DOM/Document.h"
+#include "Poco/UnicodeConverter.h"
+
+// C/C++ library includes
+#include <sstream>
+#include <assert.h>
+#include <memory>
+
+const std::string TskPipeline::MODULE_ELEMENT = "MODULE";
+const std::string TskPipeline::MODULE_TYPE_ATTR = "type";
+const std::string TskPipeline::MODULE_ORDER_ATTR = "order";
+const std::string TskPipeline::MODULE_LOCATION_ATTR = "location";
+const std::string TskPipeline::MODULE_ARGS_ATTR = "arguments";
+const std::string TskPipeline::MODULE_OUTPUT_ATTR = "output";
+const std::string TskPipeline::MODULE_EXECUTABLE_TYPE = "executable";
+const std::string TskPipeline::MODULE_PLUGIN_TYPE = "plugin";
+
+TskPipeline::TskPipeline() : m_hasExeModule(false), m_loadDll(true)
+{
+}
+
+TskPipeline::~TskPipeline()
+{
+    // Delete modules
+    for (std::vector<TskModule*>::iterator it = m_modules.begin(); it != m_modules.end(); it++)
+        delete *it;
+}
+
+void TskPipeline::validate(const std::string & pipelineConfig)
+{
+    m_loadDll = false;
+    initialize(pipelineConfig);
+}
+
+void TskPipeline::initialize(const std::string & pipelineConfig)
+{
+    if (pipelineConfig.empty())
+    {
+        throw TskException("TskPipeline::initialize: Pipeline configuration string is empty.");
+    }
+
+    try
+    {
+        Poco::XML::DOMParser parser;
+        Poco::AutoPtr<Poco::XML::Document> xmlDoc = parser.parseString(pipelineConfig);
+
+        // Get all Module elements
+        Poco::AutoPtr<Poco::XML::NodeList> modules = 
+            xmlDoc->getElementsByTagName(TskPipeline::MODULE_ELEMENT);
+
+        if (modules->length() == 0)
+        {
+            LOGWARN(L"TskPipeline::initialize - No modules found in config file.");
+            return;
+        }
+
+        // Size our list based on the number of modules
+        m_modules.resize(modules->length());
+
+        // Iterate through the module elements, make sure they are increasing order
+        // we now allow for gaps to make it easier to comment things out.
+        int prevOrder = -1;
+        for (unsigned int i = 0; i < modules->length(); i++)
+        {
+            Poco::XML::Node * pNode = modules->item(i);
+            Poco::XML::Element* pElem = dynamic_cast<Poco::XML::Element*>(pNode);
+            Poco::XML::XMLString orderStr = pElem->getAttribute(TskPipeline::MODULE_ORDER_ATTR);
+            if (orderStr == "") {
+                throw TskException("TskPipeline::initialize: Module order missing.");
+            }
+            int order;
+            try 
+            {
+                order = Poco::NumberParser::parse(orderStr);
+            } catch (Poco::SyntaxException ex) 
+            {
+                std::stringstream msg;
+                msg << "TskPipeline::initialize - Module order must a decimal number. Got " << orderStr.c_str();
+                throw TskException(msg.str());
+            }
+            if (order <= prevOrder) 
+            {
+                std::stringstream msg;
+                msg << "TskPipeline::initialize - Expecting order bigger than " << prevOrder << ", got " << order;
+                throw TskException(msg.str());
+            }
+            prevOrder = order;
+        }
+
+        // Iterate through the module elements creating a new Module for each one
+        m_modules.clear();
+        for (unsigned int i = 0; i < modules->length(); i++)
+        {
+            Poco::XML::Node * pNode = modules->item(i);
+            Poco::XML::Element* pElem = dynamic_cast<Poco::XML::Element*>(pNode);
+
+            if (!pElem)
+                continue;
+
+            // Create a new module
+            TskModule * pModule = createModule(pElem);
+
+            if (pModule == NULL)
+            {
+                throw TskException("TskPipeline::initialize - Module creation failed.");
+            }
+
+            if (m_loadDll) 
+            {
+                TskImgDB& imgDB = TskServices::Instance().getImgDB();
+
+                // Insert into Modules table
+                int moduleId = 0;
+                if (imgDB.addModule(pModule->getName(), pModule->getDescription(), moduleId)) 
+                {
+                    std::stringstream errorMsg;
+                    errorMsg << "TskPipeline::initialize - Failed to insert into Modules table. "  
+                             << " module name=" << pModule->getName() ;
+                    throw TskException(errorMsg.str());
+                } 
+                else 
+                {
+                    pModule->setModuleId(moduleId);
+                    m_moduleNames.insert(std::make_pair(moduleId, pModule->getName()));
+                    m_moduleExecTimes.insert(std::make_pair(moduleId, Poco::Timespan()));
+                }
+                bool duplicate = false;
+                for (std::vector<TskModule*>::iterator it = m_modules.begin(); it != m_modules.end(); it++) {
+                    if ((*it)->getModuleId() == pModule->getModuleId()) {
+                        duplicate = true;
+                        std::stringstream msg;
+                        msg << "TskPipeline::initialize - " << pModule->getName() << " is a duplicate module. " <<
+                            "The duplicate will not be added to the pipeline";
+                        throw TskException(msg.str());
+                    }
+                }
+                if (!duplicate)
+                    m_modules.push_back(pModule);
+            }
+        }
+    }
+    // rethrow this, otherwise it is caught by std::exception and we lose the detail.
+    catch (TskException& ex) {
+        throw(ex);
+    }
+    catch (std::exception& ex)
+    {
+        std::stringstream errorMsg;
+        errorMsg << "TskPipeline::initialize - Pipeline initialization failed: " <<ex.what() ;
+        throw TskException(errorMsg.str());
+    }
+}
+
+TskModule * TskPipeline::createModule(Poco::XML::Element *pElem)
+{
+    if (!pElem)
+    {
+        LOGERROR(L"TskPipeline::createModule - Passed NULL Element.");
+        return NULL;
+    }
+
+    try
+    {
+        if (pElem->getAttribute(TskPipeline::MODULE_TYPE_ATTR) == MODULE_EXECUTABLE_TYPE)
+        {
+            // Use auto_ptr to ensure that module will be deleted if there 
+            // are exceptions.
+            std::auto_ptr<TskExecutableModule> pModule(new TskExecutableModule());
+            std::string location(pElem->getAttribute(TskPipeline::MODULE_LOCATION_ATTR));
+            pModule->setPath(location);
+            //pModule->setPath(pElem->getAttribute(TskPipeline::MODULE_LOCATION_ATTR));
+            pModule->setArguments(pElem->getAttribute(TskPipeline::MODULE_ARGS_ATTR));
+            pModule->setOutput(pElem->getAttribute(TskPipeline::MODULE_OUTPUT_ATTR));
+
+            m_hasExeModule = true;
+
+            // The module was successfully created so we no longer need the
+            // auto_ptr to manage it.
+            return pModule.release();
+        }
+        else if (pElem->getAttribute(TskPipeline::MODULE_TYPE_ATTR) == MODULE_PLUGIN_TYPE)
+        {
+            std::auto_ptr<TskPluginModule> pModule(createPluginModule());
+            pModule->setPath(pElem->getAttribute(TskPipeline::MODULE_LOCATION_ATTR));
+            pModule->setArguments(pElem->getAttribute(TskPipeline::MODULE_ARGS_ATTR));
+            pModule->checkInterface();
+
+            // Initialize the module.
+            if (m_loadDll)
+            {
+                if (pModule->initialize() != TskModule::OK)
+                {
+                    return NULL;
+                }
+            }
+
+            // The module was successfully created and initialized so we no longer
+            // need the auto_ptr to manage it.
+            return pModule.release();
+        }
+        else
+        {
+            std::wstringstream errorMsg;
+            errorMsg << "TskPipeline::createModule - Unrecognized module type : "
+                << pElem->getAttribute(TskPipeline::MODULE_TYPE_ATTR).c_str();
+            LOGERROR(errorMsg.str());
+
+            return NULL;
+        }
+    }
+    catch (TskException& ex)
+    {
+        std::wstringstream errorMsg;
+        errorMsg << L"TskPipeline::createModule - Module creation failed: " << pElem->getAttribute(TskPipeline::MODULE_LOCATION_ATTR).c_str() << L" ("<< ex.message().c_str()<< L")";
+        LOGERROR(errorMsg.str());
+        return NULL;
+    }
+    catch (std::exception & ex)
+    {
+        std::wstringstream errorMsg;
+        errorMsg << L"TskPipeline::createModule - Module creation failed: " << pElem->getAttribute(TskPipeline::MODULE_LOCATION_ATTR).c_str() << L" ("<< ex.what() << L")";
+        LOGERROR(errorMsg.str());
+        return NULL;
+    }
+    catch (...)
+    {
+        std::wstringstream errorMsg;
+        errorMsg << L"TskPipeline::createModule - Unnkown exception : " << pElem->getAttribute(TskPipeline::MODULE_LOCATION_ATTR).c_str() ;
+        LOGERROR(errorMsg.str());
+        return NULL;
+    }
+
+}
+
+void TskPipeline::logModuleExecutionTimes() const
+{
+    for (std::map<int, Poco::Timespan>::const_iterator it = m_moduleExecTimes.begin(); it != m_moduleExecTimes.end(); ++it)
+    {
+        assert(m_moduleNames.find(it->first) != m_moduleNames.end());
+        std::stringstream msg;
+        msg << "TskPipeline::logModuleExecutionTimes : "  << m_moduleNames.find(it->first)->second << " total execution time was "
+        << it->second.days() << ":" << it->second.hours() << ":" << it->second.minutes() << ":" << it->second.seconds() << ":" << it->second.milliseconds()
+        << " (days:hrs:mins:secs:ms)";
+        LOGINFO(msg.str());
+    }
+}
+
+bool TskPipeline::excludeFile(const TskFile* file)
+{
+    if (file == NULL)
+    {
+        LOGERROR(L"TskPipeline::excludeFile - Passed NULL file pointer.");
+        throw TskNullPointerException();
+    }
+
+    // Exclude directories and Sleuthkit "virtual" files from analysis.
+    if (file->isDirectory() || file->isVirtual())
+        return true;
+
+    return false;
+}
+
+void TskPipeline::updateModuleExecutionTime(int moduleId, const Poco::Timespan::TimeDiff &executionTime)
+{
+    std::map<int, Poco::Timespan>::iterator it = m_moduleExecTimes.find(moduleId);
+    if (it != m_moduleExecTimes.end())
+    {
+        it->second += executionTime;
+    }
+    else
+    {
+        std::stringstream msg;
+        msg << "TskPipeline::updateModuleExecutionTime : unknown moduleId " << moduleId;
+        LOGERROR(msg.str());
+    }
+}
diff --git a/framework/tsk/framework/pipeline/TskPipeline.h b/framework/tsk/framework/pipeline/TskPipeline.h
index 4764634a359090e0b6a322d992e6cb36db9c0ca9..f904c6fe06febf357068dfea8061f7d4a99bb75e 100755
--- a/framework/tsk/framework/pipeline/TskPipeline.h
+++ b/framework/tsk/framework/pipeline/TskPipeline.h
@@ -1,160 +1,160 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskPipeline.h
- * Contains the declarations for the TskPipeline class and the interface for methods
- * that are defined in the various implementations.
- */
-
-#ifndef _TSK_PIPELINE_H
-#define _TSK_PIPELINE_H
-
-// TSK includes
-#include "tsk/base/tsk_os.h" // for uint64_t
-
-// TSK Framework includes
-#include "TskModule.h"
-#include "TskPluginModule.h"
-
-// Poco includes
-#include "Poco/DOM/Element.h"
-#include "Poco/Timespan.h"
-
-// C/C++ library includes
-#include <list>
-#include <string>
-#include <map>
-
-/**
- * The Pipeline class controls the processing of data
- * through an ordered list of dynamic library or executable modules.
- * Different types of pipeline implementations exist for the different types of data. 
- * Pipelines are created by the TskPipelineManager class. 
- */
-class TSK_FRAMEWORK_API TskPipeline
-{
-public:
-    // DEVELOPERS: Changes to any of these elements and attributes require an update to $(TSK_HOME)\framework\docs\pipeline.dox 
-    static const std::string MODULE_ELEMENT; ///< module element in XML config file
-    static const std::string MODULE_TYPE_ATTR;  ///< attribute for module type in XML config file
-    static const std::string MODULE_ORDER_ATTR; ///< attribute for module order in XML config file
-    static const std::string MODULE_LOCATION_ATTR; ///< attribute for module location in XML config file
-    static const std::string MODULE_ARGS_ATTR; ///< attribute for module arguments in XML config file
-    static const std::string MODULE_OUTPUT_ATTR; ///< attribute for module output in XML config file
-    static const std::string MODULE_EXECUTABLE_TYPE; ///< value of MODULE_TYPE_ATTR for executable modules
-    static const std::string MODULE_PLUGIN_TYPE; ///< value of MODULE_TYPE_ATTR for library modules
-
-    /**
-     * Default constructor.
-     */
-    TskPipeline();
-
-    /**
-     * Destructor.
-     */
-    ~TskPipeline();
-
-    /**
-     * Validate a Pipeline based on the given XML configuration string. 
-     * @param pipelineConfig String of config file for the specific type of pipeline. 
-     * @throws TskException in case of error.
-     */
-    void validate(const std::string& pipelineConfig);
-
-    /**
-     * Parses the XML config file.  Modules are loaded if m_loadDll is set to true. 
-     * @param pipelineConfig String of a config file for the specific type of pipeline.
-     * @throws TskException in case of error.
-     */
-    void initialize(const std::string& pipelineConfig);
-    bool isEmpty() const { 
-        return m_modules.size() == 0; 
-    }
-
-    /**
-     * Run a file analysis pipeline on a file with the given ID.
-     * @param fileId Id of file to run pipeilne on.
-     * @throws exceptions on errors 
-     */
-    virtual void run(const uint64_t fileId) = 0;
-
-    /**
-     * Run a file analysis pipeline on the given file object.
-     * @param file TskFile object to run pipeilne on.
-     * @throws exceptions on errors 
-     */    
-    virtual void run(TskFile* file) = 0;
-
-    /**
-     * Run a reporting / post-analysis pipeline.
-     * @throws exceptions on errors     
-     */    
-    virtual void run() = 0;
-
-    /**
-     * Create a module for the given pipeline type.
-     * @returns Plug-in module
-     */
-
-    virtual TskPluginModule * createPluginModule() = 0;
-
-    /**
-     * Logs the recorded execution times of the modules in the pipeline.
-     */
-    void logModuleExecutionTimes() const;
-
-protected:
-    /**
-     * Determine whether a particular file should be processed.
-     * @returns true if file should be excluded, false otherwise
-     */
-    bool excludeFile(const TskFile*);
-    
-    /**
-     * Updates the recorded execution time of a module in the pipeline.
-     * @param moduleId Module ID of the module.
-     * @param executionTime Time increment to add to totasl execution time of the module.
-     */
-    void updateModuleExecutionTime(int moduleId, const Poco::Timespan::TimeDiff &executionTime);
-
-    /**
-     * Collection of modules in the pipeline.
-     */
-    std::vector<TskModule*> m_modules;
-
-    bool m_hasExeModule;    ///< True if any module is an executable module
-
-private:
-    // Disallow copying
-    TskPipeline(const TskPipeline&);
-    TskPipeline& operator=(const TskPipeline&);
-
-    /**
-     * Creates a module of the type specified in the XML element.
-     * @param pElem element type from XML file. 
-     * @returns NULL on error 
-     */
-    TskModule * createModule(Poco::XML::Element * pElem);
-
-    bool m_loadDll;     ///< True if dlls should be loaded during initialize
-    
-    /**
-     * A mapping of module IDs to module names.
-     */
-    std::map<int, std::string> m_moduleNames;
-
-    /**
-     * A mapping of module IDs to cumulative module execution times.
-     */
-    std::map<int, Poco::Timespan> m_moduleExecTimes;
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskPipeline.h
+ * Contains the declarations for the TskPipeline class and the interface for methods
+ * that are defined in the various implementations.
+ */
+
+#ifndef _TSK_PIPELINE_H
+#define _TSK_PIPELINE_H
+
+// TSK includes
+#include "tsk/base/tsk_os.h" // for uint64_t
+
+// TSK Framework includes
+#include "TskModule.h"
+#include "TskPluginModule.h"
+
+// Poco includes
+#include "Poco/DOM/Element.h"
+#include "Poco/Timespan.h"
+
+// C/C++ library includes
+#include <list>
+#include <string>
+#include <map>
+
+/**
+ * The Pipeline class controls the processing of data
+ * through an ordered list of dynamic library or executable modules.
+ * Different types of pipeline implementations exist for the different types of data. 
+ * Pipelines are created by the TskPipelineManager class. 
+ */
+class TSK_FRAMEWORK_API TskPipeline
+{
+public:
+    // DEVELOPERS: Changes to any of these elements and attributes require an update to $(TSK_HOME)\framework\docs\pipeline.dox 
+    static const std::string MODULE_ELEMENT; ///< module element in XML config file
+    static const std::string MODULE_TYPE_ATTR;  ///< attribute for module type in XML config file
+    static const std::string MODULE_ORDER_ATTR; ///< attribute for module order in XML config file
+    static const std::string MODULE_LOCATION_ATTR; ///< attribute for module location in XML config file
+    static const std::string MODULE_ARGS_ATTR; ///< attribute for module arguments in XML config file
+    static const std::string MODULE_OUTPUT_ATTR; ///< attribute for module output in XML config file
+    static const std::string MODULE_EXECUTABLE_TYPE; ///< value of MODULE_TYPE_ATTR for executable modules
+    static const std::string MODULE_PLUGIN_TYPE; ///< value of MODULE_TYPE_ATTR for library modules
+
+    /**
+     * Default constructor.
+     */
+    TskPipeline();
+
+    /**
+     * Destructor.
+     */
+    ~TskPipeline();
+
+    /**
+     * Validate a Pipeline based on the given XML configuration string. 
+     * @param pipelineConfig String of config file for the specific type of pipeline. 
+     * @throws TskException in case of error.
+     */
+    void validate(const std::string& pipelineConfig);
+
+    /**
+     * Parses the XML config file.  Modules are loaded if m_loadDll is set to true. 
+     * @param pipelineConfig String of a config file for the specific type of pipeline.
+     * @throws TskException in case of error.
+     */
+    void initialize(const std::string& pipelineConfig);
+    bool isEmpty() const { 
+        return m_modules.size() == 0; 
+    }
+
+    /**
+     * Run a file analysis pipeline on a file with the given ID.
+     * @param fileId Id of file to run pipeilne on.
+     * @throws exceptions on errors 
+     */
+    virtual void run(const uint64_t fileId) = 0;
+
+    /**
+     * Run a file analysis pipeline on the given file object.
+     * @param file TskFile object to run pipeilne on.
+     * @throws exceptions on errors 
+     */    
+    virtual void run(TskFile* file) = 0;
+
+    /**
+     * Run a reporting / post-analysis pipeline.
+     * @throws exceptions on errors     
+     */    
+    virtual void run() = 0;
+
+    /**
+     * Create a module for the given pipeline type.
+     * @returns Plug-in module
+     */
+
+    virtual TskPluginModule * createPluginModule() = 0;
+
+    /**
+     * Logs the recorded execution times of the modules in the pipeline.
+     */
+    void logModuleExecutionTimes() const;
+
+protected:
+    /**
+     * Determine whether a particular file should be processed.
+     * @returns true if file should be excluded, false otherwise
+     */
+    bool excludeFile(const TskFile*);
+    
+    /**
+     * Updates the recorded execution time of a module in the pipeline.
+     * @param moduleId Module ID of the module.
+     * @param executionTime Time increment to add to totasl execution time of the module.
+     */
+    void updateModuleExecutionTime(int moduleId, const Poco::Timespan::TimeDiff &executionTime);
+
+    /**
+     * Collection of modules in the pipeline.
+     */
+    std::vector<TskModule*> m_modules;
+
+    bool m_hasExeModule;    ///< True if any module is an executable module
+
+private:
+    // Disallow copying
+    TskPipeline(const TskPipeline&);
+    TskPipeline& operator=(const TskPipeline&);
+
+    /**
+     * Creates a module of the type specified in the XML element.
+     * @param pElem element type from XML file. 
+     * @returns NULL on error 
+     */
+    TskModule * createModule(Poco::XML::Element * pElem);
+
+    bool m_loadDll;     ///< True if dlls should be loaded during initialize
+    
+    /**
+     * A mapping of module IDs to module names.
+     */
+    std::map<int, std::string> m_moduleNames;
+
+    /**
+     * A mapping of module IDs to cumulative module execution times.
+     */
+    std::map<int, Poco::Timespan> m_moduleExecTimes;
+};
+
+#endif
diff --git a/framework/tsk/framework/pipeline/TskPipelineManager.cpp b/framework/tsk/framework/pipeline/TskPipelineManager.cpp
index c81c4a364575e0e3b35488ad2418a52476f49d76..11cb631578b717be925964832bd37fb4967227eb 100755
--- a/framework/tsk/framework/pipeline/TskPipelineManager.cpp
+++ b/framework/tsk/framework/pipeline/TskPipelineManager.cpp
@@ -1,197 +1,197 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskPipelineManager.cpp
- * Contains the implementation for the TskPipelineManager class.
- */
-
-// System includes
-#include <sstream>
-#include <fstream>
-
-// Framework includes
-#include "TskPipelineManager.h"
-#include "tsk/framework/services/TskSystemProperties.h"
-#include "tsk/framework/utilities/TskException.h"
-#include "tsk/framework/services/TskServices.h"
-#include "TskFileAnalysisPipeline.h"
-#include "TskReportPipeline.h"
-
-// Poco includes
-#include "Poco/AutoPtr.h"
-#include "Poco/Path.h"
-#include "Poco/UnicodeConverter.h"
-#include "Poco/DOM/DOMParser.h"
-#include "Poco/DOM/Document.h"
-#include "Poco/DOM/NodeList.h"
-#include "Poco/DOM/NodeIterator.h"
-#include "Poco/DOM/DOMWriter.h"
-#include "Poco/SAX/InputSource.h"
-#include "Poco/SAX/SAXException.h"
-
-const std::string TskPipelineManager::FILE_ANALYSIS_PIPELINE_STR = "FileAnalysis";
-const std::string TskPipelineManager::POST_PROCESSING_PIPELINE_STR = "PostProcessing";
-const std::string TskPipelineManager::REPORTING_PIPELINE_STR = "Report";
-const std::string TskPipelineManager::PIPELINE_ELEMENT = "PIPELINE";
-const std::string TskPipelineManager::PIPELINE_TYPE_ATTRIBUTE = "type";
-const std::string TskPipelineManager::PIPELINE_NAME_ATTRIBUTE = "name";
-
-TskPipelineManager::TskPipelineManager()
-{
-}
-
-TskPipelineManager::~TskPipelineManager()
-{
-    // Delete our pipelines
-    for (std::vector<TskPipeline *>::iterator it = m_pipelines.begin(); it < m_pipelines.end(); it++)
-        delete *it;
-}
-
-TskPipeline * TskPipelineManager::createPipeline(const PIPELINE_TYPE type, const std::string& name)
-{
-    std::string funcName("TskPipelineManager::createPipeline");
-
-    std::string pipelineConfigFilePath = GetSystemProperty(TskSystemProperties::PIPELINE_CONFIG_FILE);
-    std::ifstream in(pipelineConfigFilePath.c_str());
-    if (!in)
-    {
-        throw TskException("Error opening pipeline config file.");
-    }
-    else 
-    {
-        std::stringstream msg;
-        msg << funcName << " : Using config file '" << pipelineConfigFilePath;
-        LOGINFO(msg.str());
-    }
-
-    std::string pipelineType = pipelineTypeToString(type);
-
-    try
-    {
-        Poco::XML::InputSource src(in);
-
-        // Parse the XML into a Poco::XML::Document
-        Poco::XML::DOMParser parser;
-        Poco::AutoPtr<Poco::XML::Document> xmlDoc = parser.parse(&src);
-
-        // Locate the PIPELINE element that matches pipelineType
-        Poco::AutoPtr<Poco::XML::NodeList> pipelines = 
-            xmlDoc->getElementsByTagName(TskPipelineManager::PIPELINE_ELEMENT);
-
-        if (pipelines->length() == 0)
-        {
-            throw TskException("No pipelines found in config file.");
-        }
-
-        TskPipeline * pipeline;
-        if (type == FILE_ANALYSIS_PIPELINE)
-            pipeline = new TskFileAnalysisPipeline();
-        else if (type == POST_PROCESSING_PIPELINE)
-            pipeline = new TskReportPipeline();
-        else
-            throw TskException("Unsupported pipeline type.");
-
-        m_pipelines.push_back(pipeline);
-
-        for (unsigned long i = 0; i < pipelines->length(); i++)
-        {
-            Poco::XML::Node * pNode = pipelines->item(i);
-            Poco::XML::Element* pElem = dynamic_cast<Poco::XML::Element*>(pNode);
-
-            if (pElem)
-            {
-                std::string xmlPipelineType = pElem->getAttribute(TskPipelineManager::PIPELINE_TYPE_ATTRIBUTE);
-                std::string xmlPipelineName = pElem->getAttribute(TskPipelineManager::PIPELINE_NAME_ATTRIBUTE);
-
-                // The following conditions are required because we want to be able to use 
-                // "PostProcessing" and "Report" to be used interchangeably (at least for the moment).
-                // Note that the sanity check below will not catch the case where there are both
-                // "PostProcessing" and "Report" pipelines in the configuration file.
-                if (xmlPipelineName == name && (xmlPipelineType == pipelineType) ||
-                    (pipelineType == REPORTING_PIPELINE_STR && xmlPipelineType == POST_PROCESSING_PIPELINE_STR) ||
-                    (pipelineType == POST_PROCESSING_PIPELINE_STR && xmlPipelineType == REPORTING_PIPELINE_STR))
-                {
-                    // quick sanity check to verify that there is only one pipeline in the config file for this type and name
-                    for (unsigned long i2 = i+1; i2 < pipelines->length(); i2++) {
-                        Poco::XML::Node * pNode2 = pipelines->item(i2);
-                        Poco::XML::Element* pElem2 = dynamic_cast<Poco::XML::Element*>(pNode2);
-
-                        if (pElem2 && 
-                            pElem2->getAttribute(TskPipelineManager::PIPELINE_TYPE_ATTRIBUTE) == pipelineType &&
-                            pElem2->getAttribute(TskPipelineManager::PIPELINE_NAME_ATTRIBUTE) == name) 
-                        {
-                            std::stringstream exMsg;
-                            exMsg << "Multiple pipelines found with the same type (" << pipelineType
-                                << ") and name (" << name << ")";
-                            throw TskException (exMsg.str());
-                        }
-                    }
-                    // We found the right pipeline so initialize it.
-                    Poco::XML::DOMWriter writer;
-                    std::ostringstream pipelineXml;
-                    writer.writeNode(pipelineXml, pNode);
-
-                    pipeline->initialize(pipelineXml.str());
-
-                    return pipeline;
-                }
-            }
-        }
-    }
-    catch (Poco::XML::SAXParseException& )
-    {
-        throw TskException("Error parsing pipeline config file.");
-    }
-    catch (TskException& ex)
-    {
-        throw ex;
-    }
-
-    std::stringstream errorMsg;
-    errorMsg << "Failed to find " << pipelineType << " pipeline";
-    if (!name.empty())
-        errorMsg << " with name " << name;
-
-    throw TskException(errorMsg.str());
-}
-
-/**
- * Creates a pipeline object by reading the pipeline config file specified as
- * a system property. 
- * @returns Pointer to TskPipeline.  Do not free this. It will be freed by the
- * TskPipelineManager destructor. 
- */
-TskPipeline * TskPipelineManager::createPipeline(const std::string &pipelineType)
-{
-    if (pipelineType == REPORTING_PIPELINE_STR || pipelineType == POST_PROCESSING_PIPELINE_STR)
-        return createPipeline(TskPipelineManager::POST_PROCESSING_PIPELINE);
-    else if (pipelineType == FILE_ANALYSIS_PIPELINE_STR)
-        return createPipeline(TskPipelineManager::FILE_ANALYSIS_PIPELINE);
-    else
-    {
-        std::stringstream exMsg;
-        exMsg << "TskPipelineManager::createPipeline : Unsupported pipeline type : " << pipelineType;
-        throw TskException(exMsg.str());
-    }
-}
-
-std::string TskPipelineManager::pipelineTypeToString(const PIPELINE_TYPE type)
-{
-    switch (type)
-    {
-    case FILE_ANALYSIS_PIPELINE:
-        return FILE_ANALYSIS_PIPELINE_STR;
-    case POST_PROCESSING_PIPELINE:
-        return POST_PROCESSING_PIPELINE_STR;
-    default:
-        return "Unknown pipeline type";
-    }
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskPipelineManager.cpp
+ * Contains the implementation for the TskPipelineManager class.
+ */
+
+// System includes
+#include <sstream>
+#include <fstream>
+
+// Framework includes
+#include "TskPipelineManager.h"
+#include "tsk/framework/services/TskSystemProperties.h"
+#include "tsk/framework/utilities/TskException.h"
+#include "tsk/framework/services/TskServices.h"
+#include "TskFileAnalysisPipeline.h"
+#include "TskReportPipeline.h"
+
+// Poco includes
+#include "Poco/AutoPtr.h"
+#include "Poco/Path.h"
+#include "Poco/UnicodeConverter.h"
+#include "Poco/DOM/DOMParser.h"
+#include "Poco/DOM/Document.h"
+#include "Poco/DOM/NodeList.h"
+#include "Poco/DOM/NodeIterator.h"
+#include "Poco/DOM/DOMWriter.h"
+#include "Poco/SAX/InputSource.h"
+#include "Poco/SAX/SAXException.h"
+
+const std::string TskPipelineManager::FILE_ANALYSIS_PIPELINE_STR = "FileAnalysis";
+const std::string TskPipelineManager::POST_PROCESSING_PIPELINE_STR = "PostProcessing";
+const std::string TskPipelineManager::REPORTING_PIPELINE_STR = "Report";
+const std::string TskPipelineManager::PIPELINE_ELEMENT = "PIPELINE";
+const std::string TskPipelineManager::PIPELINE_TYPE_ATTRIBUTE = "type";
+const std::string TskPipelineManager::PIPELINE_NAME_ATTRIBUTE = "name";
+
+TskPipelineManager::TskPipelineManager()
+{
+}
+
+TskPipelineManager::~TskPipelineManager()
+{
+    // Delete our pipelines
+    for (std::vector<TskPipeline *>::iterator it = m_pipelines.begin(); it < m_pipelines.end(); it++)
+        delete *it;
+}
+
+TskPipeline * TskPipelineManager::createPipeline(const PIPELINE_TYPE type, const std::string& name)
+{
+    std::string funcName("TskPipelineManager::createPipeline");
+
+    std::string pipelineConfigFilePath = GetSystemProperty(TskSystemProperties::PIPELINE_CONFIG_FILE);
+    std::ifstream in(pipelineConfigFilePath.c_str());
+    if (!in)
+    {
+        throw TskException("Error opening pipeline config file.");
+    }
+    else 
+    {
+        std::stringstream msg;
+        msg << funcName << " : Using config file '" << pipelineConfigFilePath;
+        LOGINFO(msg.str());
+    }
+
+    std::string pipelineType = pipelineTypeToString(type);
+
+    try
+    {
+        Poco::XML::InputSource src(in);
+
+        // Parse the XML into a Poco::XML::Document
+        Poco::XML::DOMParser parser;
+        Poco::AutoPtr<Poco::XML::Document> xmlDoc = parser.parse(&src);
+
+        // Locate the PIPELINE element that matches pipelineType
+        Poco::AutoPtr<Poco::XML::NodeList> pipelines = 
+            xmlDoc->getElementsByTagName(TskPipelineManager::PIPELINE_ELEMENT);
+
+        if (pipelines->length() == 0)
+        {
+            throw TskException("No pipelines found in config file.");
+        }
+
+        TskPipeline * pipeline;
+        if (type == FILE_ANALYSIS_PIPELINE)
+            pipeline = new TskFileAnalysisPipeline();
+        else if (type == POST_PROCESSING_PIPELINE)
+            pipeline = new TskReportPipeline();
+        else
+            throw TskException("Unsupported pipeline type.");
+
+        m_pipelines.push_back(pipeline);
+
+        for (unsigned long i = 0; i < pipelines->length(); i++)
+        {
+            Poco::XML::Node * pNode = pipelines->item(i);
+            Poco::XML::Element* pElem = dynamic_cast<Poco::XML::Element*>(pNode);
+
+            if (pElem)
+            {
+                std::string xmlPipelineType = pElem->getAttribute(TskPipelineManager::PIPELINE_TYPE_ATTRIBUTE);
+                std::string xmlPipelineName = pElem->getAttribute(TskPipelineManager::PIPELINE_NAME_ATTRIBUTE);
+
+                // The following conditions are required because we want to be able to use 
+                // "PostProcessing" and "Report" to be used interchangeably (at least for the moment).
+                // Note that the sanity check below will not catch the case where there are both
+                // "PostProcessing" and "Report" pipelines in the configuration file.
+                if (xmlPipelineName == name && (xmlPipelineType == pipelineType) ||
+                    (pipelineType == REPORTING_PIPELINE_STR && xmlPipelineType == POST_PROCESSING_PIPELINE_STR) ||
+                    (pipelineType == POST_PROCESSING_PIPELINE_STR && xmlPipelineType == REPORTING_PIPELINE_STR))
+                {
+                    // quick sanity check to verify that there is only one pipeline in the config file for this type and name
+                    for (unsigned long i2 = i+1; i2 < pipelines->length(); i2++) {
+                        Poco::XML::Node * pNode2 = pipelines->item(i2);
+                        Poco::XML::Element* pElem2 = dynamic_cast<Poco::XML::Element*>(pNode2);
+
+                        if (pElem2 && 
+                            pElem2->getAttribute(TskPipelineManager::PIPELINE_TYPE_ATTRIBUTE) == pipelineType &&
+                            pElem2->getAttribute(TskPipelineManager::PIPELINE_NAME_ATTRIBUTE) == name) 
+                        {
+                            std::stringstream exMsg;
+                            exMsg << "Multiple pipelines found with the same type (" << pipelineType
+                                << ") and name (" << name << ")";
+                            throw TskException (exMsg.str());
+                        }
+                    }
+                    // We found the right pipeline so initialize it.
+                    Poco::XML::DOMWriter writer;
+                    std::ostringstream pipelineXml;
+                    writer.writeNode(pipelineXml, pNode);
+
+                    pipeline->initialize(pipelineXml.str());
+
+                    return pipeline;
+                }
+            }
+        }
+    }
+    catch (Poco::XML::SAXParseException& )
+    {
+        throw TskException("Error parsing pipeline config file.");
+    }
+    catch (TskException& ex)
+    {
+        throw ex;
+    }
+
+    std::stringstream errorMsg;
+    errorMsg << "Failed to find " << pipelineType << " pipeline";
+    if (!name.empty())
+        errorMsg << " with name " << name;
+
+    throw TskException(errorMsg.str());
+}
+
+/**
+ * Creates a pipeline object by reading the pipeline config file specified as
+ * a system property. 
+ * @returns Pointer to TskPipeline.  Do not free this. It will be freed by the
+ * TskPipelineManager destructor. 
+ */
+TskPipeline * TskPipelineManager::createPipeline(const std::string &pipelineType)
+{
+    if (pipelineType == REPORTING_PIPELINE_STR || pipelineType == POST_PROCESSING_PIPELINE_STR)
+        return createPipeline(TskPipelineManager::POST_PROCESSING_PIPELINE);
+    else if (pipelineType == FILE_ANALYSIS_PIPELINE_STR)
+        return createPipeline(TskPipelineManager::FILE_ANALYSIS_PIPELINE);
+    else
+    {
+        std::stringstream exMsg;
+        exMsg << "TskPipelineManager::createPipeline : Unsupported pipeline type : " << pipelineType;
+        throw TskException(exMsg.str());
+    }
+}
+
+std::string TskPipelineManager::pipelineTypeToString(const PIPELINE_TYPE type)
+{
+    switch (type)
+    {
+    case FILE_ANALYSIS_PIPELINE:
+        return FILE_ANALYSIS_PIPELINE_STR;
+    case POST_PROCESSING_PIPELINE:
+        return POST_PROCESSING_PIPELINE_STR;
+    default:
+        return "Unknown pipeline type";
+    }
+}
diff --git a/framework/tsk/framework/pipeline/TskPipelineManager.h b/framework/tsk/framework/pipeline/TskPipelineManager.h
index 9e0e08084349313c3c14997dcc06215639570513..7952cd25c017cb298c8ee9414b85bc457dc714d1 100755
--- a/framework/tsk/framework/pipeline/TskPipelineManager.h
+++ b/framework/tsk/framework/pipeline/TskPipelineManager.h
@@ -1,63 +1,63 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskPipelineManager.h
- * Contains the declarations for the TskPipelineManager class.
- */
-
-#ifndef _TSK_PIPELINEMANAGER_H
-#define _TSK_PIPELINEMANAGER_H
-
-#include <string>
-#include "TskPipeline.h"
-
-/**
- * Responsible for creation and destruction of of TskPipeline objects.
- * This class is responsible for reading the pipeline configuration file.
- */
-class TSK_FRAMEWORK_API TskPipelineManager
-{
-public:
-    /// Supported pipeline types
-    enum PIPELINE_TYPE
-    {
-        FILE_ANALYSIS_PIPELINE, ///< A pipeline that operates on every file in the system
-        POST_PROCESSING_PIPELINE ///< A pipeline that is run once file analysis is complete
-    };
-
-    static const std::string FILE_ANALYSIS_PIPELINE_STR;  ///< String to use in pipeline configuration file when creating a file analysis pipeline
-    static const std::string POST_PROCESSING_PIPELINE_STR; ///< String to use in pipeline configuration file when creating a post processing pipeline
-    static const std::string REPORTING_PIPELINE_STR; ///< Deprecated: String to use in pipeline configuration file when creating a post processing pipeline
-    static const std::string PIPELINE_ELEMENT; ///< String to use in pipeline configuration file when creating a pipeline element
-    static const std::string PIPELINE_TYPE_ATTRIBUTE; ///< Attribute in PIPELINE_ELEMENT for pipeline type in config XML file
-    static const std::string PIPELINE_NAME_ATTRIBUTE; ///< Attribute in PIPELINE_ELEMENT for optional pipeline name in config XML file
-
-    TskPipelineManager();
-    ~TskPipelineManager();
-    TskPipeline * createPipeline(const std::string& pipelineType);
-
-    /**
-     * Create a pipeline of the given type and optionally a given name.
-     * @param type The type of pipeline to create
-     * @param name An optional string to disambiguate the situation where there are multiple pipelines
-     * of the same type.
-     * @return Pointer to a pipeline object. This pointer is managed by TskPipelineManager which will free it
-     * in its desctructor.
-     */
-    TskPipeline * createPipeline(const PIPELINE_TYPE type, const std::string& name="");
-
-private:
-    std::vector<TskPipeline *> m_pipelines;  ///< List of allocated pipelines
-
-    std::string pipelineTypeToString(const PIPELINE_TYPE type);
-};
-
-#endif 
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskPipelineManager.h
+ * Contains the declarations for the TskPipelineManager class.
+ */
+
+#ifndef _TSK_PIPELINEMANAGER_H
+#define _TSK_PIPELINEMANAGER_H
+
+#include <string>
+#include "TskPipeline.h"
+
+/**
+ * Responsible for creation and destruction of of TskPipeline objects.
+ * This class is responsible for reading the pipeline configuration file.
+ */
+class TSK_FRAMEWORK_API TskPipelineManager
+{
+public:
+    /// Supported pipeline types
+    enum PIPELINE_TYPE
+    {
+        FILE_ANALYSIS_PIPELINE, ///< A pipeline that operates on every file in the system
+        POST_PROCESSING_PIPELINE ///< A pipeline that is run once file analysis is complete
+    };
+
+    static const std::string FILE_ANALYSIS_PIPELINE_STR;  ///< String to use in pipeline configuration file when creating a file analysis pipeline
+    static const std::string POST_PROCESSING_PIPELINE_STR; ///< String to use in pipeline configuration file when creating a post processing pipeline
+    static const std::string REPORTING_PIPELINE_STR; ///< Deprecated: String to use in pipeline configuration file when creating a post processing pipeline
+    static const std::string PIPELINE_ELEMENT; ///< String to use in pipeline configuration file when creating a pipeline element
+    static const std::string PIPELINE_TYPE_ATTRIBUTE; ///< Attribute in PIPELINE_ELEMENT for pipeline type in config XML file
+    static const std::string PIPELINE_NAME_ATTRIBUTE; ///< Attribute in PIPELINE_ELEMENT for optional pipeline name in config XML file
+
+    TskPipelineManager();
+    ~TskPipelineManager();
+    TskPipeline * createPipeline(const std::string& pipelineType);
+
+    /**
+     * Create a pipeline of the given type and optionally a given name.
+     * @param type The type of pipeline to create
+     * @param name An optional string to disambiguate the situation where there are multiple pipelines
+     * of the same type.
+     * @return Pointer to a pipeline object. This pointer is managed by TskPipelineManager which will free it
+     * in its desctructor.
+     */
+    TskPipeline * createPipeline(const PIPELINE_TYPE type, const std::string& name="");
+
+private:
+    std::vector<TskPipeline *> m_pipelines;  ///< List of allocated pipelines
+
+    std::string pipelineTypeToString(const PIPELINE_TYPE type);
+};
+
+#endif 
diff --git a/framework/tsk/framework/pipeline/TskPluginModule.cpp b/framework/tsk/framework/pipeline/TskPluginModule.cpp
index 8b3171aa3367cc80be92f5ecafdce6697e7d9f6f..2453ac2b223c01d11802350b8842dabb3c3c80f4 100755
--- a/framework/tsk/framework/pipeline/TskPluginModule.cpp
+++ b/framework/tsk/framework/pipeline/TskPluginModule.cpp
@@ -1,299 +1,299 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskPluginModule.cpp
- * Contains the implementation for the TskPluginModule class.
- */
-
-// Include the class definition first to ensure it does not depend on subsequent includes in this file.
-#include "TskPluginModule.h"
-
-// Framework includes
-#include "tsk/framework/services/TskServices.h"
-#include "tsk/framework/utilities/TskException.h"
-#include "tsk/framework/file/TskFileManagerImpl.h"
-#include "tsk/framework/TskVersionInfo.h"
-
-// Poco includes
-#include "Poco/String.h"
-#include "Poco/Path.h"
-#include "Poco/Environment.h"
-
-// C/C++ library includes
-#include <sstream>
-#include <string>
-
-const std::string TskPluginModule::GET_COMPILER_SYMBOL = "getCompiler";
-const std::string TskPluginModule::GET_COMPILER_VERSION_SYMBOL = "getCompilerVersion";
-const std::string TskPluginModule::GET_FRAMEWORK_VERSION_SYMBOL = "getFrameWorkVersion";
-const std::string TskPluginModule::GET_BUILD_TYPE_SYMBOL = "getBuildType";
-const std::string TskPluginModule::NAME_SYMBOL = "name";
-const std::string TskPluginModule::DESCRIPTION_SYMBOL = "description";
-const std::string TskPluginModule::VERSION_SYMBOL = "version";
-const std::string TskPluginModule::RUN_SYMBOL = "run";
-const std::string TskPluginModule::REPORT_SYMBOL = "report";
-const std::string TskPluginModule::INITIALIZE_SYMBOL = "initialize";
-const std::string TskPluginModule::FINALIZE_SYMBOL = "finalize";
-
-TskPluginModule::~TskPluginModule()
-{
-    if (m_sharedLibrary.isLoaded())
-    {
-        // Call finalize function if defined.
-        if (m_sharedLibrary.hasSymbol(TskPluginModule::FINALIZE_SYMBOL))
-        {
-            typedef TskModule::Status (*FinalizeFunc)();
-            FinalizeFunc fin = (FinalizeFunc)m_sharedLibrary.getSymbol(TskPluginModule::FINALIZE_SYMBOL);
-            fin();
-        }
-
-        m_sharedLibrary.unload();
-    }
-}
-
-void TskPluginModule::setPath(const std::string& location)
-{
-    try
-    {
-        if (location.empty()) 
-        {
-            throw TskException("TskPluginModule::setPath: location is empty or missing.");
-        }
-
-        std::string os = Poco::Environment::osName();        
-        Poco::Path tempPath = location;
-            
-        // If on Linux or Mac, then prefix with "lib"
-        if ((os.find("Linux") != std::string::npos) || (os.find("Darwin") != std::string::npos))
-        {
-            tempPath.setFileName("lib" + tempPath.getFileName());
-        } 
-
-        // Autogenerate filename extension if needed
-        if (tempPath.getExtension().empty())
-        {
-            if (os.find("Linux") != std::string::npos)
-            {
-                tempPath.setExtension("so");
-            } 
-            else if (os.find("Darwin") != std::string::npos)
-            {
-                tempPath.setExtension("dylib");
-            } 
-            else if (os.find("Windows") != std::string::npos ||
-                     os.find("CYGWIN")  != std::string::npos ||
-                     os.find("MINGW")   != std::string::npos )
-            {
-                tempPath.setExtension("dll");
-            } 
-            else
-            {
-                throw TskException("TskPluginModule::setPath: OS unknown. Cannot resolve plugin extension.");
-            }
-        }
-
-        // Search for location
-        // Absolute (fully qualified) paths are not allowed.
-        if (!tempPath.isAbsolute())
-        {
-            // See if we can find the executable in MODULE_DIR.
-            std::string pathsToSearch = GetSystemProperty(TskSystemProperties::MODULE_DIR);
-
-            bool found = Poco::Path::find(pathsToSearch, tempPath.toString(), tempPath);
-
-            // Confirm existence of file at found location.
-            Poco::File moduleFile(tempPath);
-            if (found && moduleFile.exists())
-            {
-                std::wstringstream msg;
-                msg << L"TskPluginModule::setPath - Module found at: "
-                    << tempPath.toString().c_str();
-                LOGINFO(msg.str());
-            }
-            else
-            {
-                std::stringstream msg;
-                msg << "TskPluginModule::setPath - Module not found: "
-                    << tempPath.toString().c_str();
-                throw TskException(msg.str());
-            }
-        }
-        else
-        {
-            std::stringstream msg;
-            msg << "TskPluginModule::setPath: location (" << tempPath.toString() << ") is not relative to MODULE_DIR.";
-            throw TskException(msg.str());
-        }
-
-        m_modulePath = tempPath.toString();
-
-        // Load the library.
-        m_sharedLibrary.load(m_modulePath);
-
-        if (m_sharedLibrary.isLoaded())
-        {
-           validateLibraryVersionInfo();
-
-           // TODO: Eliminate code duplication that follows.
-           typedef const char* (*MetaDataFunc)();
-           MetaDataFunc metaDataFunc = NULL;
-
-            if (m_sharedLibrary.hasSymbol(TskPluginModule::NAME_SYMBOL))
-            {
-                metaDataFunc = (MetaDataFunc)m_sharedLibrary.getSymbol(TskPluginModule::NAME_SYMBOL);
-                if (metaDataFunc)
-                {
-                    m_name = metaDataFunc();
-                    metaDataFunc = NULL;
-                }
-            }
-
-            if (m_sharedLibrary.hasSymbol(TskPluginModule::DESCRIPTION_SYMBOL))
-            {
-                metaDataFunc = (MetaDataFunc)m_sharedLibrary.getSymbol(TskPluginModule::DESCRIPTION_SYMBOL);
-                if (metaDataFunc)
-                {
-                    m_description = metaDataFunc();
-                    metaDataFunc = NULL;
-                }
-            }
-
-            if (m_sharedLibrary.hasSymbol(TskPluginModule::VERSION_SYMBOL))
-            {
-                metaDataFunc = (MetaDataFunc)m_sharedLibrary.getSymbol(TskPluginModule::VERSION_SYMBOL);
-                if (metaDataFunc)
-                {
-                    m_version = metaDataFunc();
-                    metaDataFunc = NULL;
-                }
-            }
-        }
-
-        if (m_name.empty())
-        {
-            Poco::Path modulePath(m_modulePath);
-            m_name = modulePath.getBaseName();
-        }
-    }
-    catch (TskException& ex)
-    {
-        // Base class has already logged an error so we simply rethrow.
-        throw ex;
-    }
-    catch(std::exception& ex)
-    {
-        // Log a message and throw a framework exception.
-        std::wstringstream msg;
-        msg << L"TskPluginModule::setPath - " << ex.what();
-        LOGERROR(msg.str());
-
-        throw TskException("Failed to set path: " + m_modulePath);
-    }
-}
-
-TskModule::Status TskPluginModule::initialize()
-{
-    const std::string MSG_PREFIX = "TskPluginModule::initialize : ";
-    TskModule::Status status = TskModule::FAIL;
-    if (m_sharedLibrary.hasSymbol(TskPluginModule::INITIALIZE_SYMBOL))
-    {
-        try
-        {
-            std::string arguments = expandArgumentMacros(m_arguments, 0);
-            typedef TskModule::Status (*InitializeFunc)(const char* args);
-            InitializeFunc init = (InitializeFunc) m_sharedLibrary.getSymbol(TskPluginModule::INITIALIZE_SYMBOL);
-            status = init(arguments.c_str());        
-        }
-        catch (TskException &ex) 
-        {
-            std::stringstream msg;
-            msg << MSG_PREFIX << "TskException initializing " << getName() << ": " << ex.message();
-            LOGERROR(msg.str());
-            status = TskModule::FAIL;
-        }
-        catch (Poco::Exception &ex) 
-        {
-            std::stringstream msg;
-            msg << MSG_PREFIX <<  "Poco::Exception initializing "  << getName() << ": " << ex.displayText();
-            LOGERROR(msg.str());
-            status = TskModule::FAIL;
-        }
-        catch (std::exception &ex) 
-        {
-            std::stringstream msg;
-            msg << MSG_PREFIX <<  "std::exception initializing "  << getName() << ": " << ex.what();
-            LOGERROR(msg.str());
-            status = TskModule::FAIL;
-        }
-        catch (...)
-        {
-            std::stringstream msg;
-            msg << MSG_PREFIX << "unrecognized exception initializing "  << getName();
-            LOGERROR(msg.str());
-            status = TskModule::FAIL;
-        }
-    }
-
-    return status;
-}
-
-bool TskPluginModule::isLoaded() const
-{
-    return (m_sharedLibrary.isLoaded());
-}
-
-void *TskPluginModule::getSymbol(const std::string symbol)
-{
-    return (void*)m_sharedLibrary.getSymbol(symbol);
-}
-
-bool TskPluginModule::hasSymbol(const std::string symbol) 
-{
-    return (m_sharedLibrary.hasSymbol(symbol));
-}
-
-void TskPluginModule::validateLibraryVersionInfo()
-{
-   if (!hasSymbol(GET_FRAMEWORK_VERSION_SYMBOL) || !hasSymbol(GET_COMPILER_SYMBOL) || !hasSymbol(GET_COMPILER_VERSION_SYMBOL) || !hasSymbol(GET_BUILD_TYPE_SYMBOL))
-   {
-      throw TskException("version info interface not implemented");
-   }
-
-   int frameworkVersion = TskVersionInfo::getFrameworkVersion();
-   typedef int (*GetFrameworkVersion)();
-   GetFrameworkVersion getFrameworkVersion = (GetFrameworkVersion) m_sharedLibrary.getSymbol(TskPluginModule::GET_FRAMEWORK_VERSION_SYMBOL);
-   int moduleFrameworkVersion = getFrameworkVersion();
-   if (((frameworkVersion >> 16) & 0xFFFF)  != (( moduleFrameworkVersion >> 16) & 0xFFFF))
-   {
-      throw TskException("TskPluginModule::validateLibraryVersionInfo : framework version mismatch");
-   }
-
-   typedef TskVersionInfo::Compiler (*GetCompiler)();
-   GetCompiler getCompiler = (GetCompiler) m_sharedLibrary.getSymbol(TskPluginModule::GET_COMPILER_SYMBOL);
-   if (TskVersionInfo::getCompiler() != getCompiler())
-   {
-      throw TskException("TskPluginModule::validateLibraryVersionInfo : compiler mismatch");
-   }
-
-   typedef int (*GetCompilerVersion)();
-   GetCompilerVersion getCompilerVersion = (GetCompilerVersion) m_sharedLibrary.getSymbol(TskPluginModule::GET_COMPILER_VERSION_SYMBOL);
-   if (TskVersionInfo::getCompilerVersion() != getCompilerVersion())
-   {
-      throw TskException("TskPluginModule::validateLibraryVersionInfo : compiler version mismatch");
-   }
-
-   typedef TskVersionInfo::BuildType (*GetBuildType)();
-   GetBuildType getBuildType = (GetBuildType) m_sharedLibrary.getSymbol(TskPluginModule::GET_BUILD_TYPE_SYMBOL);
-   if (TskVersionInfo::getBuildType() != getBuildType())
-   {
-      throw TskException("TskPluginModule::validateLibraryVersionInfo : build target mismatch");
-   }
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskPluginModule.cpp
+ * Contains the implementation for the TskPluginModule class.
+ */
+
+// Include the class definition first to ensure it does not depend on subsequent includes in this file.
+#include "TskPluginModule.h"
+
+// Framework includes
+#include "tsk/framework/services/TskServices.h"
+#include "tsk/framework/utilities/TskException.h"
+#include "tsk/framework/file/TskFileManagerImpl.h"
+#include "tsk/framework/TskVersionInfo.h"
+
+// Poco includes
+#include "Poco/String.h"
+#include "Poco/Path.h"
+#include "Poco/Environment.h"
+
+// C/C++ library includes
+#include <sstream>
+#include <string>
+
+const std::string TskPluginModule::GET_COMPILER_SYMBOL = "getCompiler";
+const std::string TskPluginModule::GET_COMPILER_VERSION_SYMBOL = "getCompilerVersion";
+const std::string TskPluginModule::GET_FRAMEWORK_VERSION_SYMBOL = "getFrameWorkVersion";
+const std::string TskPluginModule::GET_BUILD_TYPE_SYMBOL = "getBuildType";
+const std::string TskPluginModule::NAME_SYMBOL = "name";
+const std::string TskPluginModule::DESCRIPTION_SYMBOL = "description";
+const std::string TskPluginModule::VERSION_SYMBOL = "version";
+const std::string TskPluginModule::RUN_SYMBOL = "run";
+const std::string TskPluginModule::REPORT_SYMBOL = "report";
+const std::string TskPluginModule::INITIALIZE_SYMBOL = "initialize";
+const std::string TskPluginModule::FINALIZE_SYMBOL = "finalize";
+
+TskPluginModule::~TskPluginModule()
+{
+    if (m_sharedLibrary.isLoaded())
+    {
+        // Call finalize function if defined.
+        if (m_sharedLibrary.hasSymbol(TskPluginModule::FINALIZE_SYMBOL))
+        {
+            typedef TskModule::Status (*FinalizeFunc)();
+            FinalizeFunc fin = (FinalizeFunc)m_sharedLibrary.getSymbol(TskPluginModule::FINALIZE_SYMBOL);
+            fin();
+        }
+
+        m_sharedLibrary.unload();
+    }
+}
+
+void TskPluginModule::setPath(const std::string& location)
+{
+    try
+    {
+        if (location.empty()) 
+        {
+            throw TskException("TskPluginModule::setPath: location is empty or missing.");
+        }
+
+        std::string os = Poco::Environment::osName();        
+        Poco::Path tempPath = location;
+            
+        // If on Linux or Mac, then prefix with "lib"
+        if ((os.find("Linux") != std::string::npos) || (os.find("Darwin") != std::string::npos))
+        {
+            tempPath.setFileName("lib" + tempPath.getFileName());
+        } 
+
+        // Autogenerate filename extension if needed
+        if (tempPath.getExtension().empty())
+        {
+            if (os.find("Linux") != std::string::npos)
+            {
+                tempPath.setExtension("so");
+            } 
+            else if (os.find("Darwin") != std::string::npos)
+            {
+                tempPath.setExtension("dylib");
+            } 
+            else if (os.find("Windows") != std::string::npos ||
+                     os.find("CYGWIN")  != std::string::npos ||
+                     os.find("MINGW")   != std::string::npos )
+            {
+                tempPath.setExtension("dll");
+            } 
+            else
+            {
+                throw TskException("TskPluginModule::setPath: OS unknown. Cannot resolve plugin extension.");
+            }
+        }
+
+        // Search for location
+        // Absolute (fully qualified) paths are not allowed.
+        if (!tempPath.isAbsolute())
+        {
+            // See if we can find the executable in MODULE_DIR.
+            std::string pathsToSearch = GetSystemProperty(TskSystemProperties::MODULE_DIR);
+
+            bool found = Poco::Path::find(pathsToSearch, tempPath.toString(), tempPath);
+
+            // Confirm existence of file at found location.
+            Poco::File moduleFile(tempPath);
+            if (found && moduleFile.exists())
+            {
+                std::wstringstream msg;
+                msg << L"TskPluginModule::setPath - Module found at: "
+                    << tempPath.toString().c_str();
+                LOGINFO(msg.str());
+            }
+            else
+            {
+                std::stringstream msg;
+                msg << "TskPluginModule::setPath - Module not found: "
+                    << tempPath.toString().c_str();
+                throw TskException(msg.str());
+            }
+        }
+        else
+        {
+            std::stringstream msg;
+            msg << "TskPluginModule::setPath: location (" << tempPath.toString() << ") is not relative to MODULE_DIR.";
+            throw TskException(msg.str());
+        }
+
+        m_modulePath = tempPath.toString();
+
+        // Load the library.
+        m_sharedLibrary.load(m_modulePath);
+
+        if (m_sharedLibrary.isLoaded())
+        {
+           validateLibraryVersionInfo();
+
+           // TODO: Eliminate code duplication that follows.
+           typedef const char* (*MetaDataFunc)();
+           MetaDataFunc metaDataFunc = NULL;
+
+            if (m_sharedLibrary.hasSymbol(TskPluginModule::NAME_SYMBOL))
+            {
+                metaDataFunc = (MetaDataFunc)m_sharedLibrary.getSymbol(TskPluginModule::NAME_SYMBOL);
+                if (metaDataFunc)
+                {
+                    m_name = metaDataFunc();
+                    metaDataFunc = NULL;
+                }
+            }
+
+            if (m_sharedLibrary.hasSymbol(TskPluginModule::DESCRIPTION_SYMBOL))
+            {
+                metaDataFunc = (MetaDataFunc)m_sharedLibrary.getSymbol(TskPluginModule::DESCRIPTION_SYMBOL);
+                if (metaDataFunc)
+                {
+                    m_description = metaDataFunc();
+                    metaDataFunc = NULL;
+                }
+            }
+
+            if (m_sharedLibrary.hasSymbol(TskPluginModule::VERSION_SYMBOL))
+            {
+                metaDataFunc = (MetaDataFunc)m_sharedLibrary.getSymbol(TskPluginModule::VERSION_SYMBOL);
+                if (metaDataFunc)
+                {
+                    m_version = metaDataFunc();
+                    metaDataFunc = NULL;
+                }
+            }
+        }
+
+        if (m_name.empty())
+        {
+            Poco::Path modulePath(m_modulePath);
+            m_name = modulePath.getBaseName();
+        }
+    }
+    catch (TskException& ex)
+    {
+        // Base class has already logged an error so we simply rethrow.
+        throw ex;
+    }
+    catch(std::exception& ex)
+    {
+        // Log a message and throw a framework exception.
+        std::wstringstream msg;
+        msg << L"TskPluginModule::setPath - " << ex.what();
+        LOGERROR(msg.str());
+
+        throw TskException("Failed to set path: " + m_modulePath);
+    }
+}
+
+TskModule::Status TskPluginModule::initialize()
+{
+    const std::string MSG_PREFIX = "TskPluginModule::initialize : ";
+    TskModule::Status status = TskModule::FAIL;
+    if (m_sharedLibrary.hasSymbol(TskPluginModule::INITIALIZE_SYMBOL))
+    {
+        try
+        {
+            std::string arguments = expandArgumentMacros(m_arguments, 0);
+            typedef TskModule::Status (*InitializeFunc)(const char* args);
+            InitializeFunc init = (InitializeFunc) m_sharedLibrary.getSymbol(TskPluginModule::INITIALIZE_SYMBOL);
+            status = init(arguments.c_str());        
+        }
+        catch (TskException &ex) 
+        {
+            std::stringstream msg;
+            msg << MSG_PREFIX << "TskException initializing " << getName() << ": " << ex.message();
+            LOGERROR(msg.str());
+            status = TskModule::FAIL;
+        }
+        catch (Poco::Exception &ex) 
+        {
+            std::stringstream msg;
+            msg << MSG_PREFIX <<  "Poco::Exception initializing "  << getName() << ": " << ex.displayText();
+            LOGERROR(msg.str());
+            status = TskModule::FAIL;
+        }
+        catch (std::exception &ex) 
+        {
+            std::stringstream msg;
+            msg << MSG_PREFIX <<  "std::exception initializing "  << getName() << ": " << ex.what();
+            LOGERROR(msg.str());
+            status = TskModule::FAIL;
+        }
+        catch (...)
+        {
+            std::stringstream msg;
+            msg << MSG_PREFIX << "unrecognized exception initializing "  << getName();
+            LOGERROR(msg.str());
+            status = TskModule::FAIL;
+        }
+    }
+
+    return status;
+}
+
+bool TskPluginModule::isLoaded() const
+{
+    return (m_sharedLibrary.isLoaded());
+}
+
+void *TskPluginModule::getSymbol(const std::string symbol)
+{
+    return (void*)m_sharedLibrary.getSymbol(symbol);
+}
+
+bool TskPluginModule::hasSymbol(const std::string symbol) 
+{
+    return (m_sharedLibrary.hasSymbol(symbol));
+}
+
+void TskPluginModule::validateLibraryVersionInfo()
+{
+   if (!hasSymbol(GET_FRAMEWORK_VERSION_SYMBOL) || !hasSymbol(GET_COMPILER_SYMBOL) || !hasSymbol(GET_COMPILER_VERSION_SYMBOL) || !hasSymbol(GET_BUILD_TYPE_SYMBOL))
+   {
+      throw TskException("version info interface not implemented");
+   }
+
+   int frameworkVersion = TskVersionInfo::getFrameworkVersion();
+   typedef int (*GetFrameworkVersion)();
+   GetFrameworkVersion getFrameworkVersion = (GetFrameworkVersion) m_sharedLibrary.getSymbol(TskPluginModule::GET_FRAMEWORK_VERSION_SYMBOL);
+   int moduleFrameworkVersion = getFrameworkVersion();
+   if (((frameworkVersion >> 16) & 0xFFFF)  != (( moduleFrameworkVersion >> 16) & 0xFFFF))
+   {
+      throw TskException("TskPluginModule::validateLibraryVersionInfo : framework version mismatch");
+   }
+
+   typedef TskVersionInfo::Compiler (*GetCompiler)();
+   GetCompiler getCompiler = (GetCompiler) m_sharedLibrary.getSymbol(TskPluginModule::GET_COMPILER_SYMBOL);
+   if (TskVersionInfo::getCompiler() != getCompiler())
+   {
+      throw TskException("TskPluginModule::validateLibraryVersionInfo : compiler mismatch");
+   }
+
+   typedef int (*GetCompilerVersion)();
+   GetCompilerVersion getCompilerVersion = (GetCompilerVersion) m_sharedLibrary.getSymbol(TskPluginModule::GET_COMPILER_VERSION_SYMBOL);
+   if (TskVersionInfo::getCompilerVersion() != getCompilerVersion())
+   {
+      throw TskException("TskPluginModule::validateLibraryVersionInfo : compiler version mismatch");
+   }
+
+   typedef TskVersionInfo::BuildType (*GetBuildType)();
+   GetBuildType getBuildType = (GetBuildType) m_sharedLibrary.getSymbol(TskPluginModule::GET_BUILD_TYPE_SYMBOL);
+   if (TskVersionInfo::getBuildType() != getBuildType())
+   {
+      throw TskException("TskPluginModule::validateLibraryVersionInfo : build target mismatch");
+   }
+}
diff --git a/framework/tsk/framework/pipeline/TskPluginModule.h b/framework/tsk/framework/pipeline/TskPluginModule.h
index c277dd301c2498a6948dad3c99e7ad1b6b4fc38d..1475260662ffcdbf5ca6a7225c6fc5bb9159c839 100755
--- a/framework/tsk/framework/pipeline/TskPluginModule.h
+++ b/framework/tsk/framework/pipeline/TskPluginModule.h
@@ -1,102 +1,102 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#ifndef _TSK_PLUGINMODULE_H
-#define _TSK_PLUGINMODULE_H
-
-// TSK Framework includes
-#include "TskModule.h"
-
-// Poco includes
-#include "Poco/SharedLibrary.h"
-
-/**
- * Supports the loading of a custom dynamic library to perform
- * analysis in either a TskPipeline or TskReportPipeline.
- */
-class TSK_FRAMEWORK_API TskPluginModule: public TskModule
-{
-public:
-    /** 
-     * Destructor that calls the finalize function of the module library and
-     * unloads the library.
-     */
-    virtual ~TskPluginModule();
-
-    /**
-     * Loads the module library.
-     *
-     * @param location Either a relative or fully qualified path to the module 
-     * library.
-     */
-    virtual void setPath(const std::string &location);
-
-    /**
-     * Calls the initialize function in the module library, if present.
-     */
-    TskModule::Status initialize();
-
-    /**
-     * Verifies that the required interface for a plugin module is defined by the module library. 
-     * 
-     * @return Throws TskException if the required interface is not defined.
-     */
-    virtual void checkInterface() = 0;
-
-protected:
-    static const std::string GET_COMPILER_SYMBOL;
-    static const std::string GET_COMPILER_VERSION_SYMBOL;
-    static const std::string GET_FRAMEWORK_VERSION_SYMBOL;
-    static const std::string GET_BUILD_TYPE_SYMBOL;
-    static const std::string NAME_SYMBOL;
-    static const std::string DESCRIPTION_SYMBOL;
-    static const std::string VERSION_SYMBOL;
-    static const std::string RUN_SYMBOL;
-    static const std::string REPORT_SYMBOL;
-    static const std::string INITIALIZE_SYMBOL;
-    static const std::string FINALIZE_SYMBOL;
-
-    /** 
-     * Checks whether or not the module library is loaded.
-     *
-     * @returns True if the module library is loaded.
-     */ 
-    bool isLoaded() const;
-
-    /**
-     * Checks whether or not the module library defines a particular symbol.
-     *
-     * @param symbol The symbol.
-     * @returns True if the symbol is defined, false otherwise.
-     */
-    bool hasSymbol(const std::string symbol);
-
-    /** 
-     * Get a pointer to a function in the module library.
-     *
-     * @param symbol The symbol associated with the desired pointer.
-     * @returns A pointer to the module library function corresponding to symbol.
-     * Throws Poco::NotFoundException if symbol is not found.
-     */
-    void *getSymbol(const std::string symbol);
-
-private:
-    /**
-     * Checks whether or not the module library was compiled with the same
-     * framework library version (major and minor version number components), 
-     * compiler, compiler version, and build target as the disk image 
-     * processing system that is loading the module.
-     */
-   void validateLibraryVersionInfo();
-
-    Poco::SharedLibrary m_sharedLibrary;
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#ifndef _TSK_PLUGINMODULE_H
+#define _TSK_PLUGINMODULE_H
+
+// TSK Framework includes
+#include "TskModule.h"
+
+// Poco includes
+#include "Poco/SharedLibrary.h"
+
+/**
+ * Supports the loading of a custom dynamic library to perform
+ * analysis in either a TskPipeline or TskReportPipeline.
+ */
+class TSK_FRAMEWORK_API TskPluginModule: public TskModule
+{
+public:
+    /** 
+     * Destructor that calls the finalize function of the module library and
+     * unloads the library.
+     */
+    virtual ~TskPluginModule();
+
+    /**
+     * Loads the module library.
+     *
+     * @param location Either a relative or fully qualified path to the module 
+     * library.
+     */
+    virtual void setPath(const std::string &location);
+
+    /**
+     * Calls the initialize function in the module library, if present.
+     */
+    TskModule::Status initialize();
+
+    /**
+     * Verifies that the required interface for a plugin module is defined by the module library. 
+     * 
+     * @return Throws TskException if the required interface is not defined.
+     */
+    virtual void checkInterface() = 0;
+
+protected:
+    static const std::string GET_COMPILER_SYMBOL;
+    static const std::string GET_COMPILER_VERSION_SYMBOL;
+    static const std::string GET_FRAMEWORK_VERSION_SYMBOL;
+    static const std::string GET_BUILD_TYPE_SYMBOL;
+    static const std::string NAME_SYMBOL;
+    static const std::string DESCRIPTION_SYMBOL;
+    static const std::string VERSION_SYMBOL;
+    static const std::string RUN_SYMBOL;
+    static const std::string REPORT_SYMBOL;
+    static const std::string INITIALIZE_SYMBOL;
+    static const std::string FINALIZE_SYMBOL;
+
+    /** 
+     * Checks whether or not the module library is loaded.
+     *
+     * @returns True if the module library is loaded.
+     */ 
+    bool isLoaded() const;
+
+    /**
+     * Checks whether or not the module library defines a particular symbol.
+     *
+     * @param symbol The symbol.
+     * @returns True if the symbol is defined, false otherwise.
+     */
+    bool hasSymbol(const std::string symbol);
+
+    /** 
+     * Get a pointer to a function in the module library.
+     *
+     * @param symbol The symbol associated with the desired pointer.
+     * @returns A pointer to the module library function corresponding to symbol.
+     * Throws Poco::NotFoundException if symbol is not found.
+     */
+    void *getSymbol(const std::string symbol);
+
+private:
+    /**
+     * Checks whether or not the module library was compiled with the same
+     * framework library version (major and minor version number components), 
+     * compiler, compiler version, and build target as the disk image 
+     * processing system that is loading the module.
+     */
+   void validateLibraryVersionInfo();
+
+    Poco::SharedLibrary m_sharedLibrary;
+};
+
+#endif
diff --git a/framework/tsk/framework/pipeline/TskReportPipeline.cpp b/framework/tsk/framework/pipeline/TskReportPipeline.cpp
index ea27ffba369abd52ce1bfc7c32687c289b19e3fa..b76da54292e3ecccbc7d82cb80aabbbb96a40788 100755
--- a/framework/tsk/framework/pipeline/TskReportPipeline.cpp
+++ b/framework/tsk/framework/pipeline/TskReportPipeline.cpp
@@ -1,46 +1,46 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskReportPipeline.cpp
- * Contains the implementation for the TskReportPipeline class.
- */
-
-// Include the class definition first to ensure it does not depend on subsequent includes in this file.
-#include "TskReportPipeline.h"
-
-// TSK Framework includes
-#include "tsk/framework/services/TskServices.h"
-
-// Poco includes
-#include "Poco/Stopwatch.h"
-
-// C/C++ library includes
-#include <sstream>
-
-void TskReportPipeline::run()
-{
-    Poco::Stopwatch stopWatch;
-    for (size_t i = 0; i < m_modules.size(); i++)
-    {
-        stopWatch.restart();
-        TskModule::Status status = m_modules[i]->report();
-        stopWatch.stop();
-        updateModuleExecutionTime(m_modules[i]->getModuleId(), stopWatch.elapsed());
-
-        TskServices::Instance().getImgDB().setModuleStatus(0, m_modules[i]->getModuleId(), (int)status);
-
-        // The reporting pipeline continues to run on module failure. Only shutdown the pipeline if a module signals STOP.
-        if (status == TskModule::STOP)
-        {
-            break;
-        }
-    }
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskReportPipeline.cpp
+ * Contains the implementation for the TskReportPipeline class.
+ */
+
+// Include the class definition first to ensure it does not depend on subsequent includes in this file.
+#include "TskReportPipeline.h"
+
+// TSK Framework includes
+#include "tsk/framework/services/TskServices.h"
+
+// Poco includes
+#include "Poco/Stopwatch.h"
+
+// C/C++ library includes
+#include <sstream>
+
+void TskReportPipeline::run()
+{
+    Poco::Stopwatch stopWatch;
+    for (size_t i = 0; i < m_modules.size(); i++)
+    {
+        stopWatch.restart();
+        TskModule::Status status = m_modules[i]->report();
+        stopWatch.stop();
+        updateModuleExecutionTime(m_modules[i]->getModuleId(), stopWatch.elapsed());
+
+        TskServices::Instance().getImgDB().setModuleStatus(0, m_modules[i]->getModuleId(), (int)status);
+
+        // The reporting pipeline continues to run on module failure. Only shutdown the pipeline if a module signals STOP.
+        if (status == TskModule::STOP)
+        {
+            break;
+        }
+    }
+}
diff --git a/framework/tsk/framework/pipeline/TskReportPipeline.h b/framework/tsk/framework/pipeline/TskReportPipeline.h
index ebf414f708bb4431411374192cde3596f62a8d83..fc274ea7dd59962fdb43306a750eaec1b7639d0a 100755
--- a/framework/tsk/framework/pipeline/TskReportPipeline.h
+++ b/framework/tsk/framework/pipeline/TskReportPipeline.h
@@ -1,58 +1,58 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskReportPipeline.h
- * Contains the interface for the TskReportPipeline class.
- */
-
-#ifndef _TSK_REPORTPIPELINE_H
-#define _TSK_REPORTPIPELINE_H
-
-// TSK Framework includes
-#include "TskPipeline.h"
-#include "TskReportPluginModule.h"
-#include "tsk/framework/utilities/TskException.h"
-
-// C/C++ library includes
-#include <string>
-
-/**
- * Controls a series of reporting modules that are run
- * after all of the file-specific analysis modules are run.
- * The reporting pipeline can contain one or more TskModule
- * modules.
- */
-class TSK_FRAMEWORK_API TskReportPipeline : public TskPipeline
-{
-public:
-    // Doxygen comment in base class.
-    virtual void run(const uint64_t fileId) 
-    { 
-        throw TskException("TskReportPipeline::run : not implemented"); 
-    }
-
-    // Doxygen comment in base class.
-    virtual void run(TskFile *file) 
-    { 
-        throw TskException("TskReportPipeline::run : not implemented"); 
-    }
-
-    // Doxygen comment in base class.
-    virtual void run();
-
-    // Doxygen comment in base class.
-    virtual TskPluginModule *createPluginModule() 
-    { 
-        return (new TskReportPluginModule());
-    }
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskReportPipeline.h
+ * Contains the interface for the TskReportPipeline class.
+ */
+
+#ifndef _TSK_REPORTPIPELINE_H
+#define _TSK_REPORTPIPELINE_H
+
+// TSK Framework includes
+#include "TskPipeline.h"
+#include "TskReportPluginModule.h"
+#include "tsk/framework/utilities/TskException.h"
+
+// C/C++ library includes
+#include <string>
+
+/**
+ * Controls a series of reporting modules that are run
+ * after all of the file-specific analysis modules are run.
+ * The reporting pipeline can contain one or more TskModule
+ * modules.
+ */
+class TSK_FRAMEWORK_API TskReportPipeline : public TskPipeline
+{
+public:
+    // Doxygen comment in base class.
+    virtual void run(const uint64_t fileId) 
+    { 
+        throw TskException("TskReportPipeline::run : not implemented"); 
+    }
+
+    // Doxygen comment in base class.
+    virtual void run(TskFile *file) 
+    { 
+        throw TskException("TskReportPipeline::run : not implemented"); 
+    }
+
+    // Doxygen comment in base class.
+    virtual void run();
+
+    // Doxygen comment in base class.
+    virtual TskPluginModule *createPluginModule() 
+    { 
+        return (new TskReportPluginModule());
+    }
+};
+
+#endif
diff --git a/framework/tsk/framework/pipeline/TskReportPluginModule.cpp b/framework/tsk/framework/pipeline/TskReportPluginModule.cpp
index 0a92d24de9dd29e59acbc45c3826fb19fad1c46d..2261e95b8de2098ce64a1253c08af37b25568147 100755
--- a/framework/tsk/framework/pipeline/TskReportPluginModule.cpp
+++ b/framework/tsk/framework/pipeline/TskReportPluginModule.cpp
@@ -1,100 +1,100 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskReportPluginModule.cpp
- * Contains the implementation for the TskReportPluginModule class.
- */
-
-// Include the class definition first to ensure it does not depend on subsequent includes in this file.
-#include "TskReportPluginModule.h"
-
-// TSK Framework includes
-#include "tsk/framework/services/TskServices.h"
-#include "tsk/framework/utilities/TskException.h"
-
-// C/C++ includes
-#include <sstream>
-
-TskModule::Status TskReportPluginModule::report()
-{
-    const std::string MSG_PREFIX = "TskReportPluginModule::report : ";
-    TskModule::Status status = TskModule::OK;
-    try
-    {
-        if (!isLoaded())
-        {
-            std::stringstream msg;
-            msg << MSG_PREFIX << "'" << getPath() << "' is not loaded";
-            throw TskException(msg.str());
-        }
-
-        if (!hasSymbol(TskPluginModule::REPORT_SYMBOL)) 
-        {
-            std::stringstream msg;
-            msg << MSG_PREFIX << "'" << getPath() << "' does not define the '" << TskPluginModule::REPORT_SYMBOL << "' symbol";
-            throw TskException(msg.str());
-        }
-
-        typedef TskModule::Status (*ReportFunc)();
-        ReportFunc report = (ReportFunc)getSymbol(TskPluginModule::REPORT_SYMBOL);
-        status = report();
-    }
-    catch (TskException &ex) 
-    {
-        std::stringstream msg;
-        msg << MSG_PREFIX << "TskException executing report function of " << getName() << ": " << ex.message();
-        LOGERROR(msg.str());
-        status = TskModule::FAIL;
-    }
-    catch (Poco::Exception &ex) 
-    {
-        std::stringstream msg;
-        msg << MSG_PREFIX <<  "Poco::Exception executing report function of "  << getName() << ": " << ex.displayText();
-        LOGERROR(msg.str());
-        status = TskModule::FAIL;
-    }
-    catch (std::exception &ex) 
-    {
-        std::stringstream msg;
-        msg << MSG_PREFIX <<  "std::exception executing report function of "  << getName() << ": " << ex.what();
-        LOGERROR(msg.str());
-        status = TskModule::FAIL;
-    }
-    catch (...)
-    {
-        std::stringstream msg;
-        msg << MSG_PREFIX << "unrecognized exception executing report function of "  << getName();
-        LOGERROR(msg.str());
-        status = TskModule::FAIL;
-    }
-
-    return status;
-}
-
-void TskReportPluginModule::checkInterface()
-{
-    const std::string MSG_PREFIX = "TskReportPluginModule::checkInterface : ";
-
-    if (!isLoaded())
-    {
-        std::stringstream msg;
-        msg << MSG_PREFIX << getPath() << " is not loaded";
-        LOGERROR(msg.str());
-        throw TskException(msg.str());
-    }
-
-    if (!hasSymbol(TskPluginModule::REPORT_SYMBOL)) 
-    {
-        std::stringstream msg;
-        msg << MSG_PREFIX << getPath() << " does not define the required '" << TskPluginModule::REPORT_SYMBOL << "' symbol";
-        throw TskException(msg.str());
-    }
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskReportPluginModule.cpp
+ * Contains the implementation for the TskReportPluginModule class.
+ */
+
+// Include the class definition first to ensure it does not depend on subsequent includes in this file.
+#include "TskReportPluginModule.h"
+
+// TSK Framework includes
+#include "tsk/framework/services/TskServices.h"
+#include "tsk/framework/utilities/TskException.h"
+
+// C/C++ includes
+#include <sstream>
+
+TskModule::Status TskReportPluginModule::report()
+{
+    const std::string MSG_PREFIX = "TskReportPluginModule::report : ";
+    TskModule::Status status = TskModule::OK;
+    try
+    {
+        if (!isLoaded())
+        {
+            std::stringstream msg;
+            msg << MSG_PREFIX << "'" << getPath() << "' is not loaded";
+            throw TskException(msg.str());
+        }
+
+        if (!hasSymbol(TskPluginModule::REPORT_SYMBOL)) 
+        {
+            std::stringstream msg;
+            msg << MSG_PREFIX << "'" << getPath() << "' does not define the '" << TskPluginModule::REPORT_SYMBOL << "' symbol";
+            throw TskException(msg.str());
+        }
+
+        typedef TskModule::Status (*ReportFunc)();
+        ReportFunc report = (ReportFunc)getSymbol(TskPluginModule::REPORT_SYMBOL);
+        status = report();
+    }
+    catch (TskException &ex) 
+    {
+        std::stringstream msg;
+        msg << MSG_PREFIX << "TskException executing report function of " << getName() << ": " << ex.message();
+        LOGERROR(msg.str());
+        status = TskModule::FAIL;
+    }
+    catch (Poco::Exception &ex) 
+    {
+        std::stringstream msg;
+        msg << MSG_PREFIX <<  "Poco::Exception executing report function of "  << getName() << ": " << ex.displayText();
+        LOGERROR(msg.str());
+        status = TskModule::FAIL;
+    }
+    catch (std::exception &ex) 
+    {
+        std::stringstream msg;
+        msg << MSG_PREFIX <<  "std::exception executing report function of "  << getName() << ": " << ex.what();
+        LOGERROR(msg.str());
+        status = TskModule::FAIL;
+    }
+    catch (...)
+    {
+        std::stringstream msg;
+        msg << MSG_PREFIX << "unrecognized exception executing report function of "  << getName();
+        LOGERROR(msg.str());
+        status = TskModule::FAIL;
+    }
+
+    return status;
+}
+
+void TskReportPluginModule::checkInterface()
+{
+    const std::string MSG_PREFIX = "TskReportPluginModule::checkInterface : ";
+
+    if (!isLoaded())
+    {
+        std::stringstream msg;
+        msg << MSG_PREFIX << getPath() << " is not loaded";
+        LOGERROR(msg.str());
+        throw TskException(msg.str());
+    }
+
+    if (!hasSymbol(TskPluginModule::REPORT_SYMBOL)) 
+    {
+        std::stringstream msg;
+        msg << MSG_PREFIX << getPath() << " does not define the required '" << TskPluginModule::REPORT_SYMBOL << "' symbol";
+        throw TskException(msg.str());
+    }
+}
diff --git a/framework/tsk/framework/pipeline/TskReportPluginModule.h b/framework/tsk/framework/pipeline/TskReportPluginModule.h
index 6e0c72748716fcb90296c68b5dc9d58680681284..a416eefed581847d71571cbc6a89948cf225f962 100755
--- a/framework/tsk/framework/pipeline/TskReportPluginModule.h
+++ b/framework/tsk/framework/pipeline/TskReportPluginModule.h
@@ -1,34 +1,34 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#ifndef _TSK_REPORTPLUGINMODULE_H
-#define _TSK_REPORTPLUGINMODULE_H
-
-// TSK Framework includes
-#include "TskPluginModule.h"
-
-/**
- * Supports the use of custom dynamic libraries to perform
- * reporting and post-processing in a TskReportPipeline.
- */
-class TSK_FRAMEWORK_API TskReportPluginModule: public TskPluginModule
-{
-public:
-    // Doxygen comment in base class.
-    virtual Status run(TskFile *fileToAnalyze) { return report(); };
-
-    // Doxygen comment in base class.
-    virtual Status report();
-
-    // Doxygen comment in base class.
-    virtual void checkInterface();
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#ifndef _TSK_REPORTPLUGINMODULE_H
+#define _TSK_REPORTPLUGINMODULE_H
+
+// TSK Framework includes
+#include "TskPluginModule.h"
+
+/**
+ * Supports the use of custom dynamic libraries to perform
+ * reporting and post-processing in a TskReportPipeline.
+ */
+class TSK_FRAMEWORK_API TskReportPluginModule: public TskPluginModule
+{
+public:
+    // Doxygen comment in base class.
+    virtual Status run(TskFile *fileToAnalyze) { return report(); };
+
+    // Doxygen comment in base class.
+    virtual Status report();
+
+    // Doxygen comment in base class.
+    virtual void checkInterface();
+};
+
+#endif
diff --git a/framework/tsk/framework/services/Log.cpp b/framework/tsk/framework/services/Log.cpp
index 950d9af3b1e459cdb1a877f7b867b2b7d20b7d12..7f487ae16406e567e5dc5d4a5affe3d82df03346 100755
--- a/framework/tsk/framework/services/Log.cpp
+++ b/framework/tsk/framework/services/Log.cpp
@@ -1,160 +1,160 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#include <string.h>
-#include <errno.h>
-#include "string.h"
-#include "Log.h"
-#include "tsk/framework/utilities/TskUtilities.h"
-#include "sys/stat.h"
-#include <time.h>
-#include "Poco/FileStream.h"
-#include "Poco/Exception.h"
-#include "Poco/LineEndingConverter.h"
-
-// @@@ imports for directory creation and deletion
-//#include "windows.h"
-
-
-Log::Log()
-: m_filePath(""), m_outStream()
-{
-}
-
-
-/**
- * Opens a single log file with a default name, based on the time
- * that the log was opened.
- * @returns 1 on error and 0 on success.
- */
-int Log::open()
-{
-    struct tm *newtime;
-    time_t aclock;
-
-    time(&aclock);   // Get time in seconds
-    newtime = localtime(&aclock);   // Convert time to struct tm form 
-    wchar_t filename[MAX_BUFF_LENGTH];
-    swprintf(filename, MAX_BUFF_LENGTH, L"log_%.4d-%.2d-%.2d-%.2d-%.2d-%.2d.txt",
-        newtime->tm_year + 1900, newtime->tm_mon+1, newtime->tm_mday,  
-        newtime->tm_hour, newtime->tm_min, newtime->tm_sec);
-
-    return open(filename);
-}
-/**
- * Open the single log file at the path specified. All messages
- * will be printed to the log.
- * @param a_logFileFullPath Path to logfile to open.
- * @returns 1 on error and 0 on success.
- */
-int Log::open(const wchar_t * a_logFileFullPath)
-{
-    return open(TskUtilities::toUTF8(a_logFileFullPath).c_str());
-}
-
-int Log::open(const char * a_logFileFullPath)
-{
-    close(); // if needed
-
-    try {
-        m_outStream.open(a_logFileFullPath, std::ios::app);
-    } catch (const std::exception ex) {
-        printf("The file '%s' cannot be opened. Exception: %s\n", a_logFileFullPath, ex.what());
-        return 1;
-    }
-
-    m_filePath.assign(a_logFileFullPath);
-
-    return 0;
-}
-
-/**
- * Close the opened log file.
- * @returns 0 on success
- */
-int Log::close()
-{
-    m_outStream.close();
-    if (m_outStream.bad()) {
-        printf("The file '%s' was not closed.", m_filePath.c_str());
-        return 1;
-    }
-    return 0;
-}
-
-Log::~Log()
-{
-    close();
-}
-
-
-void Log::logf(Channel a_channel, char const *format, ...)
-{
-    va_list args;
-    va_start(args, format);
-
-    char buf[2048];
-#ifdef TSK_WIN32
-    vsnprintf_s(buf, 2048, _TRUNCATE, format, args);
-#else
-    buf[2047] = '\0';
-    vsnprintf(buf, 2047, format, args);
-#endif
-    std::string msg(buf);
-    log(a_channel, buf);
-    va_end(args);
-}
-
-void Log::log(Channel a_channel, const std::string &a_msg)
-{
-    std::string level;
-    switch (a_channel) {
-    case Error:
-        level.assign("[ERROR]");
-        break;
-    case Warn:
-        level.assign("[WARN]");
-        break;
-    case Info:
-        level.assign("[INFO]");
-        break;
-    }
-
-    struct tm *newtime;
-    time_t aclock;
-
-    time(&aclock);   // Get time in seconds
-    newtime = localtime(&aclock);   // Convert time to struct tm form 
-    char timeStr[64];
-    snprintf(timeStr, 64, "%.2d/%.2d/%.2d %.2d:%.2d:%.2d",
-        newtime->tm_mon+1,newtime->tm_mday,newtime->tm_year % 100, 
-        newtime->tm_hour, newtime->tm_min, newtime->tm_sec);
-
-    if (m_outStream.good()) {
-        m_outStream << timeStr << " " << level << " " << a_msg << Poco::LineEnding::NEWLINE_DEFAULT;
-        m_outStream.flush();
-    }
-    else {
-        fprintf(stderr, "%s %s %s\n", timeStr, level.data(), a_msg.data());
-    }
-}
-
-void Log::log(Channel a_channel, const std::wstring &a_msg)
-{
-    log(a_channel, TskUtilities::toUTF8(a_msg).c_str());
-}
-/**
- * Return the path to the log file.
- * @returns path to log or NULL if log is going to STDERR
- */
-const wchar_t * Log::getLogPathW()
-{
-    return (const wchar_t *)TskUtilities::toUTF16(m_filePath).c_str();
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#include <string.h>
+#include <errno.h>
+#include "string.h"
+#include "Log.h"
+#include "tsk/framework/utilities/TskUtilities.h"
+#include "sys/stat.h"
+#include <time.h>
+#include "Poco/FileStream.h"
+#include "Poco/Exception.h"
+#include "Poco/LineEndingConverter.h"
+
+// @@@ imports for directory creation and deletion
+//#include "windows.h"
+
+
+Log::Log()
+: m_filePath(""), m_outStream()
+{
+}
+
+
+/**
+ * Opens a single log file with a default name, based on the time
+ * that the log was opened.
+ * @returns 1 on error and 0 on success.
+ */
+int Log::open()
+{
+    struct tm *newtime;
+    time_t aclock;
+
+    time(&aclock);   // Get time in seconds
+    newtime = localtime(&aclock);   // Convert time to struct tm form 
+    wchar_t filename[MAX_BUFF_LENGTH];
+    swprintf(filename, MAX_BUFF_LENGTH, L"log_%.4d-%.2d-%.2d-%.2d-%.2d-%.2d.txt",
+        newtime->tm_year + 1900, newtime->tm_mon+1, newtime->tm_mday,  
+        newtime->tm_hour, newtime->tm_min, newtime->tm_sec);
+
+    return open(filename);
+}
+/**
+ * Open the single log file at the path specified. All messages
+ * will be printed to the log.
+ * @param a_logFileFullPath Path to logfile to open.
+ * @returns 1 on error and 0 on success.
+ */
+int Log::open(const wchar_t * a_logFileFullPath)
+{
+    return open(TskUtilities::toUTF8(a_logFileFullPath).c_str());
+}
+
+int Log::open(const char * a_logFileFullPath)
+{
+    close(); // if needed
+
+    try {
+        m_outStream.open(a_logFileFullPath, std::ios::app);
+    } catch (const std::exception ex) {
+        printf("The file '%s' cannot be opened. Exception: %s\n", a_logFileFullPath, ex.what());
+        return 1;
+    }
+
+    m_filePath.assign(a_logFileFullPath);
+
+    return 0;
+}
+
+/**
+ * Close the opened log file.
+ * @returns 0 on success
+ */
+int Log::close()
+{
+    m_outStream.close();
+    if (m_outStream.bad()) {
+        printf("The file '%s' was not closed.", m_filePath.c_str());
+        return 1;
+    }
+    return 0;
+}
+
+Log::~Log()
+{
+    close();
+}
+
+
+void Log::logf(Channel a_channel, char const *format, ...)
+{
+    va_list args;
+    va_start(args, format);
+
+    char buf[2048];
+#ifdef TSK_WIN32
+    vsnprintf_s(buf, 2048, _TRUNCATE, format, args);
+#else
+    buf[2047] = '\0';
+    vsnprintf(buf, 2047, format, args);
+#endif
+    std::string msg(buf);
+    log(a_channel, buf);
+    va_end(args);
+}
+
+void Log::log(Channel a_channel, const std::string &a_msg)
+{
+    std::string level;
+    switch (a_channel) {
+    case Error:
+        level.assign("[ERROR]");
+        break;
+    case Warn:
+        level.assign("[WARN]");
+        break;
+    case Info:
+        level.assign("[INFO]");
+        break;
+    }
+
+    struct tm *newtime;
+    time_t aclock;
+
+    time(&aclock);   // Get time in seconds
+    newtime = localtime(&aclock);   // Convert time to struct tm form 
+    char timeStr[64];
+    snprintf(timeStr, 64, "%.2d/%.2d/%.2d %.2d:%.2d:%.2d",
+        newtime->tm_mon+1,newtime->tm_mday,newtime->tm_year % 100, 
+        newtime->tm_hour, newtime->tm_min, newtime->tm_sec);
+
+    if (m_outStream.good()) {
+        m_outStream << timeStr << " " << level << " " << a_msg << Poco::LineEnding::NEWLINE_DEFAULT;
+        m_outStream.flush();
+    }
+    else {
+        fprintf(stderr, "%s %s %s\n", timeStr, level.data(), a_msg.data());
+    }
+}
+
+void Log::log(Channel a_channel, const std::wstring &a_msg)
+{
+    log(a_channel, TskUtilities::toUTF8(a_msg).c_str());
+}
+/**
+ * Return the path to the log file.
+ * @returns path to log or NULL if log is going to STDERR
+ */
+const wchar_t * Log::getLogPathW()
+{
+    return (const wchar_t *)TskUtilities::toUTF16(m_filePath).c_str();
+}
diff --git a/framework/tsk/framework/services/Log.h b/framework/tsk/framework/services/Log.h
index 3edffd5ff4e9c429c61be129739bc933bff0d79a..47e84b86760c1a7d71faaecd7e9da4abc0e9e4d9 100755
--- a/framework/tsk/framework/services/Log.h
+++ b/framework/tsk/framework/services/Log.h
@@ -1,132 +1,132 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#ifndef _OSS_LOG_H
-#define _OSS_LOG_H
-
-#include "tsk/framework/framework_i.h"
-#include <time.h>
-#include <string>
-#include <iostream>
-#include <fstream>
-
-// @@@ TODO: Resolve circular references between TskServices.h and this header by replacing macros with inline functions in TskServices.h
-
-/**
- * \file Log.h
- * Interface and default logging infrastructure that enables applications and framework
- * to log to a single place.  
- */
-
-/**
- * Macro that gets the log service and writes an error message in a
- * single statement. 
- * @param msg Message to log
- * @returns void
- */
-#define LOGERROR(msg) TskServices::Instance().getLog().log(Log::Error, msg)
-
-/**
- * Macro that gets the log service and writes a warning message in a
- * single statement. 
- * @param msg Message to log
- * @returns void
- */
-#define LOGWARN(msg) TskServices::Instance().getLog().log(Log::Warn, msg)
-
-
-/**
- * Macro that gets the log service and writes an info message in a
- * single statement. 
- * @param msg Message to log
- * @returns void
- */
-#define LOGINFO(msg) TskServices::Instance().getLog().log(Log::Info, msg)
-
-
-/**
- * Logging class to enable the framework, apps that use it, and modules to
- * log error and warning messages.  The default implementation writes
- * the log messages to a file if open() was called or prints the messages to
- * stderr if open() was never called. The class can be extended 
- * if you want logs to be saved in another way.
- * Can be registered with and retrieved from TskServices.
- *
- * Developers can either directly call the log() method with the logging
- * level, can call the logError(), etc. methods on the class or use the
- * LOGERROR() etc. macros, which will also get the Log service from TskServices.
- */
-class TSK_FRAMEWORK_API Log
-{
-public:
-    /** 
-     * Defined logging levels.
-     */
-    enum Channel {
-        Error, ///< Critical error that stops processing
-        Warn,  ///< Unexpected results that could be recovered from
-        Info    ///< General debugging information
-    };
-
-    Log();
-    virtual ~Log();
-
-    /**
-     * Generate a log message with a given level (wide string).
-     * @param a_channel Level of log to make
-     * @param a_msg Message to record.
-     */
-    virtual void log(Channel a_channel, const std::wstring &a_msg);
-
-    /**
-     * Generate a log message with a given level (narrow string).
-     * @param a_channel Level of log to make
-     * @param a_msg Message to record.
-     */
-    virtual void log(Channel a_channel, const std::string &a_msg);
-
-    /**
-     * Generate a log message with a given level (printf-style arguments).
-     * @param a_channel Level of log to make
-     * @param format Message to record.
-     */
-    virtual void logf(Channel a_channel, char const *format, ...);
-
-
-    /**
-     * Log an error message.
-     * @param msg Message to log
-     */
-    void logError(const std::wstring &msg) { log(Log::Error, msg); };
-
-    /**
-     * Log a warning message.
-     * @param msg Message to log
-     */
-    void logWarn(const std::wstring &msg)  { log(Log::Warn,  msg); };
-
-    /**
-     * Log an info message.
-     * @param msg Message to log
-     */
-    void logInfo(const std::wstring &msg)  { log(Log::Info,  msg); };
-
-    int open(const wchar_t * a_logFileFullPath);
-    int open(const char * a_outDir);
-    int open();
-    int close();
-    const wchar_t * getLogPathW();
-    const char * getLogPath() { return m_filePath.c_str(); }
-
-protected:
-    std::string m_filePath;
-    std::ofstream m_outStream;
-};
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#ifndef _OSS_LOG_H
+#define _OSS_LOG_H
+
+#include "tsk/framework/framework_i.h"
+#include <time.h>
+#include <string>
+#include <iostream>
+#include <fstream>
+
+// @@@ TODO: Resolve circular references between TskServices.h and this header by replacing macros with inline functions in TskServices.h
+
+/**
+ * \file Log.h
+ * Interface and default logging infrastructure that enables applications and framework
+ * to log to a single place.  
+ */
+
+/**
+ * Macro that gets the log service and writes an error message in a
+ * single statement. 
+ * @param msg Message to log
+ * @returns void
+ */
+#define LOGERROR(msg) TskServices::Instance().getLog().log(Log::Error, msg)
+
+/**
+ * Macro that gets the log service and writes a warning message in a
+ * single statement. 
+ * @param msg Message to log
+ * @returns void
+ */
+#define LOGWARN(msg) TskServices::Instance().getLog().log(Log::Warn, msg)
+
+
+/**
+ * Macro that gets the log service and writes an info message in a
+ * single statement. 
+ * @param msg Message to log
+ * @returns void
+ */
+#define LOGINFO(msg) TskServices::Instance().getLog().log(Log::Info, msg)
+
+
+/**
+ * Logging class to enable the framework, apps that use it, and modules to
+ * log error and warning messages.  The default implementation writes
+ * the log messages to a file if open() was called or prints the messages to
+ * stderr if open() was never called. The class can be extended 
+ * if you want logs to be saved in another way.
+ * Can be registered with and retrieved from TskServices.
+ *
+ * Developers can either directly call the log() method with the logging
+ * level, can call the logError(), etc. methods on the class or use the
+ * LOGERROR() etc. macros, which will also get the Log service from TskServices.
+ */
+class TSK_FRAMEWORK_API Log
+{
+public:
+    /** 
+     * Defined logging levels.
+     */
+    enum Channel {
+        Error, ///< Critical error that stops processing
+        Warn,  ///< Unexpected results that could be recovered from
+        Info    ///< General debugging information
+    };
+
+    Log();
+    virtual ~Log();
+
+    /**
+     * Generate a log message with a given level (wide string).
+     * @param a_channel Level of log to make
+     * @param a_msg Message to record.
+     */
+    virtual void log(Channel a_channel, const std::wstring &a_msg);
+
+    /**
+     * Generate a log message with a given level (narrow string).
+     * @param a_channel Level of log to make
+     * @param a_msg Message to record.
+     */
+    virtual void log(Channel a_channel, const std::string &a_msg);
+
+    /**
+     * Generate a log message with a given level (printf-style arguments).
+     * @param a_channel Level of log to make
+     * @param format Message to record.
+     */
+    virtual void logf(Channel a_channel, char const *format, ...);
+
+
+    /**
+     * Log an error message.
+     * @param msg Message to log
+     */
+    void logError(const std::wstring &msg) { log(Log::Error, msg); };
+
+    /**
+     * Log a warning message.
+     * @param msg Message to log
+     */
+    void logWarn(const std::wstring &msg)  { log(Log::Warn,  msg); };
+
+    /**
+     * Log an info message.
+     * @param msg Message to log
+     */
+    void logInfo(const std::wstring &msg)  { log(Log::Info,  msg); };
+
+    int open(const wchar_t * a_logFileFullPath);
+    int open(const char * a_outDir);
+    int open();
+    int close();
+    const wchar_t * getLogPathW();
+    const char * getLogPath() { return m_filePath.c_str(); }
+
+protected:
+    std::string m_filePath;
+    std::ofstream m_outStream;
+};
+#endif
diff --git a/framework/tsk/framework/services/Scheduler.cpp b/framework/tsk/framework/services/Scheduler.cpp
index 61fb4fe62bbf5e4ed29dbe1744c7f4e73d4f9082..062a74355376b0e0f0694d9f3ef0ee9dc9841898 100755
--- a/framework/tsk/framework/services/Scheduler.cpp
+++ b/framework/tsk/framework/services/Scheduler.cpp
@@ -1,17 +1,17 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#include "Scheduler.h"
-
-Scheduler::~Scheduler()
-{
-
-}
-
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#include "Scheduler.h"
+
+Scheduler::~Scheduler()
+{
+
+}
+
diff --git a/framework/tsk/framework/services/Scheduler.h b/framework/tsk/framework/services/Scheduler.h
index 97805ba7efd03bd9f732fee8b8fda9d9778f2017..57976b09e5acfb7a6483b0f8d957afd5dc92bcbe 100755
--- a/framework/tsk/framework/services/Scheduler.h
+++ b/framework/tsk/framework/services/Scheduler.h
@@ -1,76 +1,76 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#ifndef _OSS_SCHEDULER_H
-#define _OSS_SCHEDULER_H
-
-#include "tsk/framework/framework_i.h"
-
-
-/**
- * Interface for class that will handle scheduling of tasks.  
- * Different implementations will deal with how to get the tasks out (nextTask())
- * because some will immediately schedule and others may keep a sorted
- * list locally.  
- * The current scheduler can be registered with and retrieved from TskServices.
- */
-class TSK_FRAMEWORK_API Scheduler
-{
-public:
-    /// Types of tasks that can be scheduled or performed. 
-    enum TaskType {
-        Extract, ///< Analyze image and add files to database.
-        Carve,  ///< Carve a file that contains unallocated data.
-        FileAnalysis,    ///< Analye a file using a file analysis pipeline
-        Reporting   ///< Run the reporting / post-processing pipeline
-    };
-
-    
-    /// Describes a single task to be scheduled or perform. 
-    typedef struct {
-        Scheduler::TaskType task;   ///< type of task to perform
-        uint64_t id;    ///< ID of object to run task on
-    } task_struct;
-
-    virtual ~Scheduler();
-    
-    /**
-     * Schedule a new task for the range of IDs.
-     * @param task Task to schedule
-     * @param startId Starting ID of object to process
-     * @param endId Ending ID of object to process.
-     * @returns 1 on error 
-     */
-    virtual int schedule(Scheduler::TaskType task, uint64_t startId, uint64_t endId) {
-        return 0;
-    };
-
-    /**
-     * Schedule a new task for a specific ID.
-     * @param task Task to schedule
-     * @returns 1 on error 
-     */
-    int schedule(Scheduler::task_struct &task) {
-        return schedule(task.task, task.id, task.id);
-    };
-
-    /**
-     * Get the next task to process from the scheduler.  Note that different
-     * scheduling systems have a pull versus push architecture. This method is for 
-     * pulling designs and may return NULL in push designs (i.e. if the scheduler is
-     * a wrapper around another distributed system scheduler, then it may constantly 
-     * push tasks to the system scheduler and this will always return NULL because everything
-     * has already been submitted).
-     * @returns Next task to run or NULL if there are none to process.  Caller must 
-     * free the object.
-     */
-    virtual task_struct *nextTask() = 0;
-};
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#ifndef _OSS_SCHEDULER_H
+#define _OSS_SCHEDULER_H
+
+#include "tsk/framework/framework_i.h"
+
+
+/**
+ * Interface for class that will handle scheduling of tasks.  
+ * Different implementations will deal with how to get the tasks out (nextTask())
+ * because some will immediately schedule and others may keep a sorted
+ * list locally.  
+ * The current scheduler can be registered with and retrieved from TskServices.
+ */
+class TSK_FRAMEWORK_API Scheduler
+{
+public:
+    /// Types of tasks that can be scheduled or performed. 
+    enum TaskType {
+        Extract, ///< Analyze image and add files to database.
+        Carve,  ///< Carve a file that contains unallocated data.
+        FileAnalysis,    ///< Analye a file using a file analysis pipeline
+        Reporting   ///< Run the reporting / post-processing pipeline
+    };
+
+    
+    /// Describes a single task to be scheduled or perform. 
+    typedef struct {
+        Scheduler::TaskType task;   ///< type of task to perform
+        uint64_t id;    ///< ID of object to run task on
+    } task_struct;
+
+    virtual ~Scheduler();
+    
+    /**
+     * Schedule a new task for the range of IDs.
+     * @param task Task to schedule
+     * @param startId Starting ID of object to process
+     * @param endId Ending ID of object to process.
+     * @returns 1 on error 
+     */
+    virtual int schedule(Scheduler::TaskType task, uint64_t startId, uint64_t endId) {
+        return 0;
+    };
+
+    /**
+     * Schedule a new task for a specific ID.
+     * @param task Task to schedule
+     * @returns 1 on error 
+     */
+    int schedule(Scheduler::task_struct &task) {
+        return schedule(task.task, task.id, task.id);
+    };
+
+    /**
+     * Get the next task to process from the scheduler.  Note that different
+     * scheduling systems have a pull versus push architecture. This method is for 
+     * pulling designs and may return NULL in push designs (i.e. if the scheduler is
+     * a wrapper around another distributed system scheduler, then it may constantly 
+     * push tasks to the system scheduler and this will always return NULL because everything
+     * has already been submitted).
+     * @returns Next task to run or NULL if there are none to process.  Caller must 
+     * free the object.
+     */
+    virtual task_struct *nextTask() = 0;
+};
+#endif
diff --git a/framework/tsk/framework/services/TskBlackboard.cpp b/framework/tsk/framework/services/TskBlackboard.cpp
index e056a0fd9082f3276e22827eee174a7cf3b8e25e..3541a36ecabe8aa378ae929b698fe4bc94db90e7 100755
--- a/framework/tsk/framework/services/TskBlackboard.cpp
+++ b/framework/tsk/framework/services/TskBlackboard.cpp
@@ -1,199 +1,199 @@
-/*
-* The Sleuth Kit
-*
-* Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
-* Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
-* reserved.
-*
-* This software is distributed under the Common Public License 1.0
-*/
-
-#include "TskBlackboard.h"
-
-map<int, TskArtifactNames> initializeArtifactTypeMap(){
-    map<int, TskArtifactNames> retval;
-    retval.insert(pair<int, TskArtifactNames>(TSK_GEN_INFO, TskArtifactNames("TSK_GEN_INFO", "General Info")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_WEB_BOOKMARK, TskArtifactNames("TSK_WEB_BOOKMARK", "Web Bookmark")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_WEB_COOKIE, TskArtifactNames("TSK_WEB_COOKIE", "Web Cookie")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_WEB_HISTORY, TskArtifactNames("TSK_WEB_HISTORY", "History")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_WEB_DOWNLOAD, TskArtifactNames("TSK_WEB_DOWNLOAD", "Download")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_RECENT_OBJECT, TskArtifactNames("TSK_RECENT_OBJECT", "Recent History Object")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_TRACKPOINT, TskArtifactNames("TSK_TRACKPOINT", "Trackpoint")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_INSTALLED_PROG, TskArtifactNames("TSK_INSTALLED_PROG", "Installed Program")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_KEYWORD_HIT, TskArtifactNames("TSK_KEYWORD_HIT", "Keyword Hit")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_HASHSET_HIT, TskArtifactNames("TSK_HASHSET_HIT", "Hashset Hit")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_DEVICE_ATTACHED, TskArtifactNames("TSK_DEVICE_ATTACHED", "Device Attached")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_INTERESTING_FILE_HIT, TskArtifactNames("TSK_INTERESTING_FILE_HIT", "Interesting File")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_EMAIL_MSG, TskArtifactNames("TSK_EMAIL_MSG", "E-Mail Message")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_EXTRACTED_TEXT, TskArtifactNames("TSK_EXTRACTED_TEXT", "Extracted Text")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_WEB_SEARCH_QUERY, TskArtifactNames("TSK_WEB_SEARCH_QUERY", "Web Search Engine Query")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_METADATA_EXIF, TskArtifactNames("TSK_METADATA_EXIF", "EXIF Metadata")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_TAG_FILE, TskArtifactNames("TSK_TAG_FILE", "File Tag")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_TAG_ARTIFACT, TskArtifactNames("TSK_TAG_ARTIFACT", "Result Tag")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_OS_INFO, TskArtifactNames("TSK_OS_INFO", "Operating System Information")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_OS_ACCOUNT, TskArtifactNames("TSK_OS_ACCOUNT", "Operating System User Account")));
-    retval.insert(pair<int, TskArtifactNames>(TSK_SERVICE_ACCOUNT, TskArtifactNames("TSK_SERVICE_ACCOUNT", "Network Service User Account")));
-
-    return retval;
-}
-
-map<int, TskAttributeNames> initializeAttributeTypeMap(){
-    map<int, TskAttributeNames> retval;
-    retval.insert(pair<int, TskAttributeNames>(TSK_URL, TskAttributeNames("TSK_URL", "URL")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_DATETIME, TskAttributeNames("TSK_DATETIME", "Datetime")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_NAME, TskAttributeNames("TSK_NAME", "Name")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_PROG_NAME, TskAttributeNames("TSK_PROG_NAME", "Program Name")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_VALUE, TskAttributeNames("TSK_VALUE", "Value")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_FLAG, TskAttributeNames("TSK_FLAG", "Flag")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_PATH, TskAttributeNames("TSK_PATH", "Path")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_KEYWORD, TskAttributeNames("TSK_KEYWORD", "Keyword")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_KEYWORD_REGEXP, TskAttributeNames("TSK_KEYWORD_REGEXP", "Keyword Regular Expression")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_KEYWORD_PREVIEW, TskAttributeNames("TSK_KEYWORD_PREVIEW", "Keyword Preview")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_KEYWORD_SET, TskAttributeNames("TSK_KEYWORD_SET", "Keyword Set")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_USER_NAME, TskAttributeNames("TSK_USER_NAME", "Username")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_DOMAIN, TskAttributeNames("TSK_DOMAIN", "Domain")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_PASSWORD, TskAttributeNames("TSK_PASSWORD", "Password")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_NAME_PERSON, TskAttributeNames("TSK_NAME_PERSON", "Person Name")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_DEVICE_MODEL, TskAttributeNames("TSK_DEVICE_MODEL", "Device Model")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_DEVICE_MAKE, TskAttributeNames("TSK_DEVICE_MAKE", "Device Make")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_DEVICE_ID, TskAttributeNames("TSK_DEVICE_ID", "Device ID")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL, TskAttributeNames("TSK_EMAIL", "Email")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_HASH_MD5, TskAttributeNames("TSK_HASH_MD5", "MD5 Hash")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_HASH_SHA1, TskAttributeNames("TSK_HASH_SHA1", "SHA1 Hash")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_HASH_SHA2_256, TskAttributeNames("TSK_HASH_SHA2_256", "SHA2-256 Hash")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_HASH_SHA2_512, TskAttributeNames("TSK_HASH_SHA2_512", "SHA2-512 Hash")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_TEXT, TskAttributeNames("TSK_TEXT", "Text")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_TEXT_FILE, TskAttributeNames("TSK_TEXT_FILE", "Text File")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_TEXT_LANGUAGE, TskAttributeNames("TSK_TEXT_LANGUAGE", "Text Language")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_ENTROPY, TskAttributeNames("TSK_ENTROPY", "Entropy")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_HASHSET_NAME, TskAttributeNames("TSK_HASHSET_NAME", "Hashset Name")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_INTERESTING_FILE, TskAttributeNames("TSK_INTERESTING_FILE", "Interesting File")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_REFERRER, TskAttributeNames("TSK_REFERRER", "Referrer URL")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_DATETIME_ACCESSED, TskAttributeNames("TSK_DATETIME_ACCESSED", "Date Accessed"))); 
-    retval.insert(pair<int, TskAttributeNames>(TSK_IP_ADDRESS, TskAttributeNames("TSK_IP_ADDRESS", "IP Address")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_PHONE_NUMBER, TskAttributeNames("TSK_PHONE_NUMBER", "Phone Number")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_PATH_ID, TskAttributeNames("TSK_PATH_ID", "Id of Path")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_SET_NAME, TskAttributeNames("TSK_SET_NAME", "Set Name")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_ENCRYPTION_DETECTED, TskAttributeNames("TSK_ENCRYPTION_DETECTED", "File Encryption Detected")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_MALWARE_DETECTED, TskAttributeNames("TSK_MALWARE_DETECTED", "Malware Detected")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_STEG_DETECTED, TskAttributeNames("TSK_STEG_DETECTED", "Steganography Detected")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL_TO, TskAttributeNames("TSK_EMAIL_TO", "E-Mail To")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL_CC, TskAttributeNames("TSK_EMAIL_CC", "E-Mail CC")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL_BCC, TskAttributeNames("TSK_EMAIL_BCC", "E-Mail BCC")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL_FROM, TskAttributeNames("TSK_EMAIL_FROM", "E-Mail From")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL_CONTENT_PLAIN, TskAttributeNames("TSK_EMAIL_CONTENT_PLAIN", "Content (Plain Text)")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL_CONTENT_HTML, TskAttributeNames("TSK_EMAIL_CONTENT_HTML", "Content (HTML)")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL_CONTENT_RTF, TskAttributeNames("TSK_EMAIL_CONTENT_RTF", "Content (RTF)")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_MSG_ID, TskAttributeNames("TSK_MSG_ID", "Message ID")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_MSG_REPLY_ID, TskAttributeNames("TSK_MSG_REPLY_ID", "Message Reply ID")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_DATETIME_RCVD, TskAttributeNames("TSK_DATETIME_RCVD", "Date Received")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_DATETIME_SENT, TskAttributeNames("TSK_DATETIME_SENT", "Date Sent")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_SUBJECT, TskAttributeNames("TSK_SUBJECT", "Subject")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_LATITUDE, TskAttributeNames("TSK_GEO_LATITUDE", "Latitude")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_LONGITUDE, TskAttributeNames("TSK_GEO_LONGITUDE", "Longitude")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_VELOCITY, TskAttributeNames("TSK_GEO_VELOCITY", "Velocity")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_ALTITUDE, TskAttributeNames("TSK_GEO_ALTITUDE", "Altitude")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_BEARING, TskAttributeNames("TSK_GEO_BEARING", "Bearing")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_HPRECISION, TskAttributeNames("TSK_GEO_HPRECISION", "Horizontal Precision")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_VPRECISION, TskAttributeNames("TSK_GEO_VPRECISION", "Vertical Precision")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_MAPDATUM, TskAttributeNames("TSK_GEO_MAPDATUM", "Map Datum")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_FILE_TYPE_SIG, TskAttributeNames("TSK_FILE_TYPE_SIG", "File Type (by signature)")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_FILE_TYPE_EXT, TskAttributeNames("TSK_FILE_TYPE_EXT", "File Type (by extension)")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_TAGGED_ARTIFACT, TskAttributeNames("TSK_TAGGED_ARTIFACT", "Tagged Result")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_TAG_NAME, TskAttributeNames("TSK_TAG_NAME", "Tag Name")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_COMMENT, TskAttributeNames("TSK_COMMENT", "Comment")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_URL_DECODED, TskAttributeNames("TSK_URL_DECODED", "Decoded URL")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_DATETIME_CREATED, TskAttributeNames("TSK_DATETIME_CREATED", "Date Created")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_DATETIME_MODIFIED, TskAttributeNames("TSK_DATETIME_MODIFIED", "Date Modified")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_PROCESSOR_ARCHITECTURE, TskAttributeNames("TSK_PROCESSOR_ARCHITECTURE", "Processor Architecture")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_VERSION, TskAttributeNames("TSK_VERSION", "Version")));
-    retval.insert(pair<int, TskAttributeNames>(TSK_USER_ID, TskAttributeNames("TSK_USER_ID", "User ID")));
-
-    return retval;
-}
-
-/** \internal
-* The table used to store names and display names for built in artifacts
-*/
-
-static map<int, TskArtifactNames> artifact_type_table= initializeArtifactTypeMap();
-static map<int, TskAttributeNames> attribute_type_table= initializeAttributeTypeMap();
-
-int m_artifactIDcounter = 1000;
-int m_attributeIDcounter = 1000;
-
-string TskBlackboard::attrTypeIDToTypeDisplayName(const int attributeTypeID){
-    map<int, TskAttributeNames>::iterator it = attribute_type_table.find(attributeTypeID);
-    if(it == attribute_type_table.end())
-        throw TskException("No attribute type with that id");
-    else
-        return it->second.displayName;
-}
-int TskBlackboard::attrTypeNameToTypeID(const string& attributeTypeString){
-    map<int, TskAttributeNames>::iterator it;
-    for(it = attribute_type_table.begin(); it != attribute_type_table.end(); it++){
-        if(attributeTypeString.compare(it->second.typeName) == 0)
-            return it->first;
-    }
-    throw TskException("No attribute type with that name");
-}
-
-string TskBlackboard::attrTypeIDToTypeName(const int attributeTypeID){
-    map<int, TskAttributeNames>::iterator it = attribute_type_table.find(attributeTypeID);
-    if(it == attribute_type_table.end())
-        throw TskException("No attribute type with that id");
-    else
-        return it->second.typeName;
-}
-
-int TskBlackboard::addAttributeType(const string& attributeTypeName, const string& displayName){
-    map<int, TskAttributeNames>::iterator it = attribute_type_table.begin();
-    for(it; it != attribute_type_table.end(); it++){
-        if(attributeTypeName.compare(it->second.typeName) == 0)
-            throw TskException("Attribute type with that name already exists");
-    }
-    attribute_type_table.insert(pair<int, TskAttributeNames>(m_attributeIDcounter, TskAttributeNames(attributeTypeName, displayName)));
-    return m_attributeIDcounter++;
-}
-
-string TskBlackboard::artTypeIDToDisplayName(const int artifactTypeID){
-    map<int, TskArtifactNames>::iterator it = artifact_type_table.find(artifactTypeID);
-    if(it == artifact_type_table.end())
-        throw TskException("No artifact type with that id");
-    else
-        return it->second.displayName;
-}
-
-int TskBlackboard::artTypeNameToTypeID(const string& artifactTypeString){
-    map<int, TskArtifactNames>::iterator it = artifact_type_table.begin();
-    for(it; it != artifact_type_table.end(); it++){
-        if(artifactTypeString.compare(it->second.typeName) == 0)
-            return it->first;
-    }
-    throw TskException("No attribute type with that name");
-}
-
-string TskBlackboard::artTypeIDToTypeName(const int artifactTypeID){
-    map<int, TskArtifactNames>::iterator it = artifact_type_table.find(artifactTypeID);
-    if(it == artifact_type_table.end())
-        throw TskException("No attribute type with that id");
-    else
-        return it->second.typeName;
-}
-
-int TskBlackboard::addArtifactType(const string& artifactTypeName, const string& displayName){
-    map<int, TskArtifactNames>::iterator it = artifact_type_table.begin();
-    for(it; it != artifact_type_table.end(); it++){
-        if(artifactTypeName.compare(it->second.typeName) == 0)
-            throw TskException("Attribute type with that name already exists");
-    }
-    artifact_type_table.insert(pair<int, TskArtifactNames>(m_artifactIDcounter, TskArtifactNames(artifactTypeName, displayName)));
-    return m_artifactIDcounter++;
-}
-
-map<int, TskArtifactNames> TskBlackboard::getAllArtifactTypes(){
-    return artifact_type_table;
-}
-map<int, TskAttributeNames> TskBlackboard::getAllAttributeTypes(){
-    return attribute_type_table;
-}
+/*
+* The Sleuth Kit
+*
+* Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+* Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+* reserved.
+*
+* This software is distributed under the Common Public License 1.0
+*/
+
+#include "TskBlackboard.h"
+
+map<int, TskArtifactNames> initializeArtifactTypeMap(){
+    map<int, TskArtifactNames> retval;
+    retval.insert(pair<int, TskArtifactNames>(TSK_GEN_INFO, TskArtifactNames("TSK_GEN_INFO", "General Info")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_WEB_BOOKMARK, TskArtifactNames("TSK_WEB_BOOKMARK", "Web Bookmark")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_WEB_COOKIE, TskArtifactNames("TSK_WEB_COOKIE", "Web Cookie")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_WEB_HISTORY, TskArtifactNames("TSK_WEB_HISTORY", "History")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_WEB_DOWNLOAD, TskArtifactNames("TSK_WEB_DOWNLOAD", "Download")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_RECENT_OBJECT, TskArtifactNames("TSK_RECENT_OBJECT", "Recent History Object")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_TRACKPOINT, TskArtifactNames("TSK_TRACKPOINT", "Trackpoint")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_INSTALLED_PROG, TskArtifactNames("TSK_INSTALLED_PROG", "Installed Program")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_KEYWORD_HIT, TskArtifactNames("TSK_KEYWORD_HIT", "Keyword Hit")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_HASHSET_HIT, TskArtifactNames("TSK_HASHSET_HIT", "Hashset Hit")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_DEVICE_ATTACHED, TskArtifactNames("TSK_DEVICE_ATTACHED", "Device Attached")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_INTERESTING_FILE_HIT, TskArtifactNames("TSK_INTERESTING_FILE_HIT", "Interesting File")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_EMAIL_MSG, TskArtifactNames("TSK_EMAIL_MSG", "E-Mail Message")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_EXTRACTED_TEXT, TskArtifactNames("TSK_EXTRACTED_TEXT", "Extracted Text")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_WEB_SEARCH_QUERY, TskArtifactNames("TSK_WEB_SEARCH_QUERY", "Web Search Engine Query")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_METADATA_EXIF, TskArtifactNames("TSK_METADATA_EXIF", "EXIF Metadata")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_TAG_FILE, TskArtifactNames("TSK_TAG_FILE", "File Tag")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_TAG_ARTIFACT, TskArtifactNames("TSK_TAG_ARTIFACT", "Result Tag")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_OS_INFO, TskArtifactNames("TSK_OS_INFO", "Operating System Information")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_OS_ACCOUNT, TskArtifactNames("TSK_OS_ACCOUNT", "Operating System User Account")));
+    retval.insert(pair<int, TskArtifactNames>(TSK_SERVICE_ACCOUNT, TskArtifactNames("TSK_SERVICE_ACCOUNT", "Network Service User Account")));
+
+    return retval;
+}
+
+map<int, TskAttributeNames> initializeAttributeTypeMap(){
+    map<int, TskAttributeNames> retval;
+    retval.insert(pair<int, TskAttributeNames>(TSK_URL, TskAttributeNames("TSK_URL", "URL")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_DATETIME, TskAttributeNames("TSK_DATETIME", "Datetime")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_NAME, TskAttributeNames("TSK_NAME", "Name")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_PROG_NAME, TskAttributeNames("TSK_PROG_NAME", "Program Name")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_VALUE, TskAttributeNames("TSK_VALUE", "Value")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_FLAG, TskAttributeNames("TSK_FLAG", "Flag")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_PATH, TskAttributeNames("TSK_PATH", "Path")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_KEYWORD, TskAttributeNames("TSK_KEYWORD", "Keyword")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_KEYWORD_REGEXP, TskAttributeNames("TSK_KEYWORD_REGEXP", "Keyword Regular Expression")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_KEYWORD_PREVIEW, TskAttributeNames("TSK_KEYWORD_PREVIEW", "Keyword Preview")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_KEYWORD_SET, TskAttributeNames("TSK_KEYWORD_SET", "Keyword Set")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_USER_NAME, TskAttributeNames("TSK_USER_NAME", "Username")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_DOMAIN, TskAttributeNames("TSK_DOMAIN", "Domain")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_PASSWORD, TskAttributeNames("TSK_PASSWORD", "Password")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_NAME_PERSON, TskAttributeNames("TSK_NAME_PERSON", "Person Name")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_DEVICE_MODEL, TskAttributeNames("TSK_DEVICE_MODEL", "Device Model")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_DEVICE_MAKE, TskAttributeNames("TSK_DEVICE_MAKE", "Device Make")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_DEVICE_ID, TskAttributeNames("TSK_DEVICE_ID", "Device ID")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL, TskAttributeNames("TSK_EMAIL", "Email")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_HASH_MD5, TskAttributeNames("TSK_HASH_MD5", "MD5 Hash")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_HASH_SHA1, TskAttributeNames("TSK_HASH_SHA1", "SHA1 Hash")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_HASH_SHA2_256, TskAttributeNames("TSK_HASH_SHA2_256", "SHA2-256 Hash")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_HASH_SHA2_512, TskAttributeNames("TSK_HASH_SHA2_512", "SHA2-512 Hash")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_TEXT, TskAttributeNames("TSK_TEXT", "Text")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_TEXT_FILE, TskAttributeNames("TSK_TEXT_FILE", "Text File")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_TEXT_LANGUAGE, TskAttributeNames("TSK_TEXT_LANGUAGE", "Text Language")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_ENTROPY, TskAttributeNames("TSK_ENTROPY", "Entropy")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_HASHSET_NAME, TskAttributeNames("TSK_HASHSET_NAME", "Hashset Name")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_INTERESTING_FILE, TskAttributeNames("TSK_INTERESTING_FILE", "Interesting File")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_REFERRER, TskAttributeNames("TSK_REFERRER", "Referrer URL")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_DATETIME_ACCESSED, TskAttributeNames("TSK_DATETIME_ACCESSED", "Date Accessed"))); 
+    retval.insert(pair<int, TskAttributeNames>(TSK_IP_ADDRESS, TskAttributeNames("TSK_IP_ADDRESS", "IP Address")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_PHONE_NUMBER, TskAttributeNames("TSK_PHONE_NUMBER", "Phone Number")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_PATH_ID, TskAttributeNames("TSK_PATH_ID", "Id of Path")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_SET_NAME, TskAttributeNames("TSK_SET_NAME", "Set Name")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_ENCRYPTION_DETECTED, TskAttributeNames("TSK_ENCRYPTION_DETECTED", "File Encryption Detected")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_MALWARE_DETECTED, TskAttributeNames("TSK_MALWARE_DETECTED", "Malware Detected")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_STEG_DETECTED, TskAttributeNames("TSK_STEG_DETECTED", "Steganography Detected")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL_TO, TskAttributeNames("TSK_EMAIL_TO", "E-Mail To")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL_CC, TskAttributeNames("TSK_EMAIL_CC", "E-Mail CC")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL_BCC, TskAttributeNames("TSK_EMAIL_BCC", "E-Mail BCC")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL_FROM, TskAttributeNames("TSK_EMAIL_FROM", "E-Mail From")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL_CONTENT_PLAIN, TskAttributeNames("TSK_EMAIL_CONTENT_PLAIN", "Content (Plain Text)")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL_CONTENT_HTML, TskAttributeNames("TSK_EMAIL_CONTENT_HTML", "Content (HTML)")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_EMAIL_CONTENT_RTF, TskAttributeNames("TSK_EMAIL_CONTENT_RTF", "Content (RTF)")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_MSG_ID, TskAttributeNames("TSK_MSG_ID", "Message ID")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_MSG_REPLY_ID, TskAttributeNames("TSK_MSG_REPLY_ID", "Message Reply ID")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_DATETIME_RCVD, TskAttributeNames("TSK_DATETIME_RCVD", "Date Received")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_DATETIME_SENT, TskAttributeNames("TSK_DATETIME_SENT", "Date Sent")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_SUBJECT, TskAttributeNames("TSK_SUBJECT", "Subject")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_LATITUDE, TskAttributeNames("TSK_GEO_LATITUDE", "Latitude")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_LONGITUDE, TskAttributeNames("TSK_GEO_LONGITUDE", "Longitude")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_VELOCITY, TskAttributeNames("TSK_GEO_VELOCITY", "Velocity")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_ALTITUDE, TskAttributeNames("TSK_GEO_ALTITUDE", "Altitude")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_BEARING, TskAttributeNames("TSK_GEO_BEARING", "Bearing")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_HPRECISION, TskAttributeNames("TSK_GEO_HPRECISION", "Horizontal Precision")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_VPRECISION, TskAttributeNames("TSK_GEO_VPRECISION", "Vertical Precision")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_GEO_MAPDATUM, TskAttributeNames("TSK_GEO_MAPDATUM", "Map Datum")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_FILE_TYPE_SIG, TskAttributeNames("TSK_FILE_TYPE_SIG", "File Type (by signature)")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_FILE_TYPE_EXT, TskAttributeNames("TSK_FILE_TYPE_EXT", "File Type (by extension)")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_TAGGED_ARTIFACT, TskAttributeNames("TSK_TAGGED_ARTIFACT", "Tagged Result")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_TAG_NAME, TskAttributeNames("TSK_TAG_NAME", "Tag Name")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_COMMENT, TskAttributeNames("TSK_COMMENT", "Comment")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_URL_DECODED, TskAttributeNames("TSK_URL_DECODED", "Decoded URL")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_DATETIME_CREATED, TskAttributeNames("TSK_DATETIME_CREATED", "Date Created")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_DATETIME_MODIFIED, TskAttributeNames("TSK_DATETIME_MODIFIED", "Date Modified")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_PROCESSOR_ARCHITECTURE, TskAttributeNames("TSK_PROCESSOR_ARCHITECTURE", "Processor Architecture")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_VERSION, TskAttributeNames("TSK_VERSION", "Version")));
+    retval.insert(pair<int, TskAttributeNames>(TSK_USER_ID, TskAttributeNames("TSK_USER_ID", "User ID")));
+
+    return retval;
+}
+
+/** \internal
+* The table used to store names and display names for built in artifacts
+*/
+
+static map<int, TskArtifactNames> artifact_type_table= initializeArtifactTypeMap();
+static map<int, TskAttributeNames> attribute_type_table= initializeAttributeTypeMap();
+
+int m_artifactIDcounter = 1000;
+int m_attributeIDcounter = 1000;
+
+string TskBlackboard::attrTypeIDToTypeDisplayName(const int attributeTypeID){
+    map<int, TskAttributeNames>::iterator it = attribute_type_table.find(attributeTypeID);
+    if(it == attribute_type_table.end())
+        throw TskException("No attribute type with that id");
+    else
+        return it->second.displayName;
+}
+int TskBlackboard::attrTypeNameToTypeID(const string& attributeTypeString){
+    map<int, TskAttributeNames>::iterator it;
+    for(it = attribute_type_table.begin(); it != attribute_type_table.end(); it++){
+        if(attributeTypeString.compare(it->second.typeName) == 0)
+            return it->first;
+    }
+    throw TskException("No attribute type with that name");
+}
+
+string TskBlackboard::attrTypeIDToTypeName(const int attributeTypeID){
+    map<int, TskAttributeNames>::iterator it = attribute_type_table.find(attributeTypeID);
+    if(it == attribute_type_table.end())
+        throw TskException("No attribute type with that id");
+    else
+        return it->second.typeName;
+}
+
+int TskBlackboard::addAttributeType(const string& attributeTypeName, const string& displayName){
+    map<int, TskAttributeNames>::iterator it = attribute_type_table.begin();
+    for(it; it != attribute_type_table.end(); it++){
+        if(attributeTypeName.compare(it->second.typeName) == 0)
+            throw TskException("Attribute type with that name already exists");
+    }
+    attribute_type_table.insert(pair<int, TskAttributeNames>(m_attributeIDcounter, TskAttributeNames(attributeTypeName, displayName)));
+    return m_attributeIDcounter++;
+}
+
+string TskBlackboard::artTypeIDToDisplayName(const int artifactTypeID){
+    map<int, TskArtifactNames>::iterator it = artifact_type_table.find(artifactTypeID);
+    if(it == artifact_type_table.end())
+        throw TskException("No artifact type with that id");
+    else
+        return it->second.displayName;
+}
+
+int TskBlackboard::artTypeNameToTypeID(const string& artifactTypeString){
+    map<int, TskArtifactNames>::iterator it = artifact_type_table.begin();
+    for(it; it != artifact_type_table.end(); it++){
+        if(artifactTypeString.compare(it->second.typeName) == 0)
+            return it->first;
+    }
+    throw TskException("No attribute type with that name");
+}
+
+string TskBlackboard::artTypeIDToTypeName(const int artifactTypeID){
+    map<int, TskArtifactNames>::iterator it = artifact_type_table.find(artifactTypeID);
+    if(it == artifact_type_table.end())
+        throw TskException("No attribute type with that id");
+    else
+        return it->second.typeName;
+}
+
+int TskBlackboard::addArtifactType(const string& artifactTypeName, const string& displayName){
+    map<int, TskArtifactNames>::iterator it = artifact_type_table.begin();
+    for(it; it != artifact_type_table.end(); it++){
+        if(artifactTypeName.compare(it->second.typeName) == 0)
+            throw TskException("Attribute type with that name already exists");
+    }
+    artifact_type_table.insert(pair<int, TskArtifactNames>(m_artifactIDcounter, TskArtifactNames(artifactTypeName, displayName)));
+    return m_artifactIDcounter++;
+}
+
+map<int, TskArtifactNames> TskBlackboard::getAllArtifactTypes(){
+    return artifact_type_table;
+}
+map<int, TskAttributeNames> TskBlackboard::getAllAttributeTypes(){
+    return attribute_type_table;
+}
diff --git a/framework/tsk/framework/services/TskBlackboard.h b/framework/tsk/framework/services/TskBlackboard.h
index fe30305a33565fc3559ed8917cafe540a1a3292b..e2486f0224dcc97b34e6b16a38690641243c861c 100755
--- a/framework/tsk/framework/services/TskBlackboard.h
+++ b/framework/tsk/framework/services/TskBlackboard.h
@@ -1,405 +1,405 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskBlackboard.h
- * Interface for class that will implement the black board.  The black board
- * is used to store data from analysis modules.  The data is available to
- * later modules in the pipeline and in the final reporting phase.
- */
-
-#ifndef _TSK_BLACKBOARD_H
-#define _TSK_BLACKBOARD_H
-
-#include <string>
-#include <vector>
-#include "tsk/framework/utilities/TskException.h"
-#include "tsk/framework/framework_i.h"
-#include "tsk/framework/services/TskImgDB.h"
-#include "TskBlackboardArtifact.h"
-#include "TskBlackboardAttribute.h"
-
-using namespace std;
-
-/**
- * Built in artifact types.
- * Refer to http://wiki.sleuthkit.org/index.php?title=Artifact_Examples
- * for details on which attributes should be used for each artifact.
- */
-
-/* Note that the below comments are the only documentation 
- * for the standard types.  Please ensure that all types are
- * documented. 
- * 
- * The numbers are explicitly added to make it easier to verify
- * that the Java and C++ code is in sync.
- *
- * It is very important that this list be kept up to date and 
- * in sync with the Java code.  Do not add anything here unless
- * you also add it there.  
- * See bindings/java/src/org/sleuthkit/datamodel/BlackboardArtifact.java */
-enum TSK_ARTIFACT_TYPE {
-    TSK_GEN_INFO = 1,///< The general info artifact, if information doesn't need its own artifact it should go here
-    TSK_WEB_BOOKMARK = 2,///< A web bookmark. 
-    TSK_WEB_COOKIE = 3,///< A web cookie. 
-    TSK_WEB_HISTORY = 4,///< A web history enrty. 
-    TSK_WEB_DOWNLOAD = 5,///< A web download. 
-    TSK_RECENT_OBJECT = 6,///< A recently used object (MRU, recent document, etc.).
-    TSK_TRACKPOINT = 7,///< A trackpoint from a GPS log.
-    TSK_INSTALLED_PROG = 8,///< An installed program. 
-    TSK_KEYWORD_HIT = 9,///< A keyword hit. 
-    TSK_HASHSET_HIT = 10, ///< A hit within a known bad / notable hashset / hash database. 
-    TSK_DEVICE_ATTACHED = 11, ///< An event for a device being attached to the host computer
-    TSK_INTERESTING_FILE_HIT = 12, ///< A file that was flagged because it matched some search criteria for being interesting (i.e. because of its name, extension, etc.)
-    TSK_EMAIL_MSG = 13, ///< An e-mail message that was extracted from a file.
-    TSK_EXTRACTED_TEXT = 14, ///< Text that was extracted from a file.
-    TSK_WEB_SEARCH_QUERY = 15, ///< Web search engine query extracted from web history.
-    TSK_METADATA_EXIF = 16, ///< EXIF Metadata
-    TSK_TAG_FILE = 17, ///< File tags.
-    TSK_TAG_ARTIFACT = 18, ///< Result tags.
-    TSK_OS_INFO = 19, ///< Information pertaining to an operating system.
-    TSK_OS_ACCOUNT, ///< An operating system user account.
-    TSK_SERVICE_ACCOUNT, ///< A network service user account.
-    /* SEE ABOVE:
-    * - KEEP JAVA CODE IN SYNC 
-    * - UPDATE map in TskBlackboard.cpp
-    * - Update Wiki to reflect the attributes that should be part of the artifact. 
-    */
-};
-
-/**
- * Built in attribute types 
- */
-/* The numbers are explicitly added to make it easier to verify
- * that the Java and C++ code is in sync.
- *
- * It is very important that this list be kept up to date and 
- * in sync with the Java code.  Do not add anything here unless
- * you also add it there.  
- * See bindings/java/src/org/sleuthkit/datamodel/BlackboardAttribute.java 
- */
-enum TSK_ATTRIBUTE_TYPE {
-    TSK_URL = 1,///< String of a URL, should start with http:// or ftp:// etc.  You should also make a TskBlackoard::TSK_DOMAIN entry for the base domain name. 
-    TSK_DATETIME = 2,///< INT32: GMT based Unix time, defines number of secords elapsed since UTC Jan 1, 1970.
-    TSK_NAME = 3,///< STRING: The name associated with an artifact
-    TSK_PROG_NAME = 4,///< String of name of a program that was installed on the system
-    TSK_VALUE = 6,///< Some value associated with an artifact
-    TSK_FLAG = 7,///< Some flag associated with an artifact
-    TSK_PATH = 8,///< A filesystem path.  Should be fully qualified. Should set TSK_PATH_ID as well when this is set. TODO: Need to define this value more for cases with multiple images and multiple file systems per image. 
-    TSK_KEYWORD = 10,///< STRING: Keyword that was found in this file. 
-    TSK_KEYWORD_REGEXP = 11,///< STRING: A regular expression string
-    TSK_KEYWORD_PREVIEW = 12,///< STRING: A text preview
-    TSK_KEYWORD_SET = 13,///< STRING: A keyword set -- Deprecated in favor of TSK_SET_NAME
-    TSK_USER_NAME = 14,///< String of a user name.  Use TskBlackboard::TSK_DOMAIN to store the domain that the username is from (if it is known). 
-    TSK_DOMAIN = 15,///< String of a DNS Domain name, e.g. sleuthkit.org  use TskBlackboad::TSK_URL for a full URL.
-    TSK_PASSWORD = 16,///< String of a password that was found.  Use TskBlackboard::TSK_USER_NAME and TskBlackboard::TSK_DOMAIN to link the password to a given user and site. 
-    TSK_NAME_PERSON = 17,///< String of a person name
-    TSK_DEVICE_MODEL = 18,///< String of manufacturer name of device that was connected (or somehow related to) the data being analyzed
-    TSK_DEVICE_MAKE = 19,///< String of make of a device that was connected (or somehow related to) the data being analyzed
-    TSK_DEVICE_ID = 20,///< String of ID/serial number of a device that was connected (or somehow related to) the data being analyzed
-    TSK_EMAIL = 21,///< String of e-mail address in the form of user@host.com (note that there are also more specific TSK_EMAIL_TO and TSK_EMAIL_FROM attributes if you know the use of the address)
-    TSK_HASH_MD5 = 22,///< STRING: MD5 hash
-    TSK_HASH_SHA1 = 23,///< STRING: SHA1 hash
-    TSK_HASH_SHA2_256 = 24,///< STRING: SHA2 256 bit hash
-    TSK_HASH_SHA2_512 = 25,///< STRING: SHA2 512 bit hash
-    TSK_TEXT = 26,///< String of text extracted from a file (should be part of TSK_EXTRACTED_TEXT artifact).
-    TSK_TEXT_FILE = 27,///< String of path to file containing text. May be absolute or relative. If relative, will be evaluated relative to OUT_DIR setting. Should be part of TSK_EXTRACTED_TEXT artifact)
-    TSK_TEXT_LANGUAGE = 28,///< String of the detected language in ISO 639-3 language code of TskBlackboard::TSK_TEXT data in the same artifact (TSK_EXTRACTED_TEXT, for example).
-    TSK_ENTROPY = 29,///< DOUBLE: Entropy value of file
-    TSK_HASHSET_NAME = 30,///< String of the name or file name of the hashset -- Deprecated in favor of TSK_SET_NAME
-    TSK_INTERESTING_FILE = 31,///< An interesting file hit, potentially file id, name, or path
-    TSK_REFERRER = 32,///< String of referrer URL
-    TSK_DATETIME_ACCESSED = 33,///<datetime last time accessed
-    TSK_IP_ADDRESS = 34,///<String of IP Address
-    TSK_PHONE_NUMBER = 35,///<String of phone number
-    TSK_PATH_ID = 36,///< Object ID from database that a TSK_PATH attribute corresponds to.  Set to -1 if path is for a file that is not in database (i.e. deleted). 
-    TSK_SET_NAME = 37,///< STRING: The name of a set that was used to find this artifact (to be used for hash hits, keyword hits, interesting files, etc.)
-    TSK_ENCRYPTION_DETECTED = 38,///< STRING: The type of encryption that is believed to have been used on the file.
-    TSK_MALWARE_DETECTED = 39,///< STRING: The name of the malware that was detected in this file.
-    TSK_STEG_DETECTED = 40,///< STRING: The name of the steganography technique that was detected in this file.
-    TSK_EMAIL_TO = 41, ///< String of an e-mail address that a message is being sent to directly (not cc:).
-    TSK_EMAIL_CC = 42, ///< String of an e-mail address that a message is being sent to as a cc:.
-    TSK_EMAIL_BCC = 43, ///< String of an e-mail address that a message is being sent to as a bcc:.
-    TSK_EMAIL_FROM = 44, ///< String of an e-mail address that a message is being sent from.
-    TSK_EMAIL_CONTENT_PLAIN = 45, ///< String of e-mail message body in plain text
-    TSK_EMAIL_CONTENT_HTML = 46, ///< STring of e-mail message body in HTML
-    TSK_EMAIL_CONTENT_RTF = 47, ///< STring of e-mail message body in RTF
-    TSK_MSG_ID = 48, ///< String of a message ID (such as one of an e-mail message)
-    TSK_MSG_REPLY_ID = 49, ///< String of a message ID that a given message is in response to (such as one of an e-mail message) 
-    TSK_DATETIME_RCVD = 50, ///< Time in Unix epoch that something was received.
-    TSK_DATETIME_SENT = 51, ///< Time in Unix epoch that something was sent.
-    TSK_SUBJECT = 52, ///< String of a subject (such as one of an e-mail message)
-    TSK_TITLE = 53, ///< String of a title (such as a webpage or other document)
-    TSK_GEO_LATITUDE = 54, ///< Floating point of latitude coordinate.  Should be in WGS84. Positive North, Negative South. 
-    TSK_GEO_LONGITUDE = 55, ///< Floating point of longitude coordinate.  Should be in WGS84.  Positive East, Negative West.
-    TSK_GEO_VELOCITY = 56, ///< Floating point of velocity in geo coordinate in meters per second.
-    TSK_GEO_ALTITUDE = 57, ///< Floating point of altitude in geo coordinate in meters.
-    TSK_GEO_BEARING = 58, ///< Floating point of bearing in geo coordinate in true degrees.
-    TSK_GEO_HPRECISION = 59, ///< Floating point of horizontal precision in geo coordinate in meters.
-    TSK_GEO_VPRECISION = 60, ///< Floating point of vertical precision in geo coordinate in meters.
-    TSK_GEO_MAPDATUM = 61, ///< String of map datum used for coordinates if not WGS84.
-    TSK_FILE_TYPE_SIG = 62, ///< String of file type based on signature detection in file content.
-    TSK_FILE_TYPE_EXT = 63, ///< String of file type based on file name extension.
-    TSK_TAGGED_ARTIFACT = 64, ///< Tagged artifact (associated result).
-    TSK_TAG_NAME = 65, ///< The tag name.  Can contain slashes "/" to represent tag hierarchy.
-    TSK_COMMENT = 66, ///< Comment string.
-    TSK_URL_DECODED = 67, ///< Decoded URL.
-    TSK_DATETIME_CREATED = 68,///< Time in Unix epoch that something was created
-    TSK_DATETIME_MODIFIED = 69,///< Time in Unix epoch that something was modified
-    TSK_PROCESSOR_ARCHITECTURE = 70,///< String of processor architecture.  Naming convention from http://en.wikipedia.org/wiki/Comparison_of_CPU_architectures.  So far, we've used x86, x86-64, and IA64.
-    TSK_VERSION = 71,///< String for a software version 
-    TSK_USER_ID,///< User IDfor a user account, e.g., a Windows SID or Linux UID.
-
-    /* SEE ABOVE: 
-    * - KEEP JAVA CODE IN SYNC 
-    * - UPDATE map in TskBlackBoard.cpp too */
-};
-
-/**
- * Class used to store the pair of type and display names of attributes.
- */
-class TskAttributeNames{
-public:
-    string typeName;
-    string displayName;
-    TskAttributeNames(string name, string display):
-    typeName(name),
-        displayName(display){}
-};
-
-/**
- * Class used to store the pair of type and display names of artifacts.
- */
-class TskArtifactNames{
-public:
-    string typeName;
-    string displayName;
-    TskArtifactNames(string name, string display):
-    typeName(name),
-        displayName(display){}
-};
-
-/**
- * An interface for setting and retrieving name/value pairs to the blackboard.
- * The blackboard is used to store data for use by later modules in the pipeline.
- * Can be registered with and retrieved from TskServices.
- */
-class TSK_FRAMEWORK_API TskBlackboard
-{
-public:
-
-    /**
-    * Get the artifact with the given id
-    * @param artifactID id
-    * @returns the artifact throws an error if no artifact matches that id.
-    */
-    virtual TskBlackboardArtifact getBlackboardArtifact(const long artifactID) = 0;
-
-    /**
-    * Get all artifacts that match the given condition
-    * @param condition condition (implementation specific) to use for matching
-    * @returns vector of matching artifacts can return an empty vector if there are no matches
-    * @throws error if a bad condition string is supplied
-    */
-    virtual vector<TskBlackboardArtifact> getMatchingArtifacts(const string& condition)const = 0;
-    /**
-    * Get all artifacts with the given type name and file id
-    * @param file_id associated file id
-    * @param artifactTypeName type name
-    * @returns vector of matching artifacts can return an empty vector if there are no matches
-    */
-    virtual vector<TskBlackboardArtifact> getArtifacts(const uint64_t file_id, const string& artifactTypeName)const = 0;
-    /**
-    * Get all artifacts with the given type id and file id
-    * @param file_id associated file id
-    * @param artifactTypeID type id
-    * @returns vector of matching artifacts can return an empty vector if there are no matches
-    */
-    virtual vector<TskBlackboardArtifact> getArtifacts(const uint64_t file_id, int artifactTypeID)const = 0;
-    /**
-    * Get all artifacts with the given type and file id
-    * @param file_id associated file id
-    * @param artifactType name
-    * @returns vector of matching artifacts can return an empty vector if there are no matches
-    */
-    virtual vector<TskBlackboardArtifact> getArtifacts(const uint64_t file_id, TSK_ARTIFACT_TYPE artifactType)const = 0;
-    /**
-    * Get all artifacts with the given type
-    * @param artifactType type
-    * @returns vector of matching artifacts can return an empty vector if there are no matches
-    */
-    virtual vector<TskBlackboardArtifact> getArtifacts(const TSK_ARTIFACT_TYPE artifactType)const = 0;
-
-    /**
-    * Get all attributes that match the given condition 
-    * @param condition (implementation specific) to use for matching
-    * @returns vector of matching attributes can return an empty vector if there are no matches
-    * @throws error if a bad condition string is supplied
-    */
-    virtual vector<TskBlackboardAttribute> getMatchingAttributes(const string& condition)const = 0;   
-
-    /**
-    * Get all attributes with the given type name and file id
-    * @param file_id associated file id
-    * @param attributeTypeName type name
-    * @returns vector of matching attributes can return an empty vector if there are no matches
-    */
-    virtual vector<TskBlackboardAttribute> getAttributes(const uint64_t file_id, const string& attributeTypeName)const = 0;
-
-    /**
-    * Get all attributes with the given type and file id
-    * @param file_id associated file id
-    * @param attributeTypeID Type of attribute to return
-    * @returns vector of matching attributes can return an empty vector if there are no matches
-    */
-    virtual vector<TskBlackboardAttribute> getAttributes(const uint64_t file_id, int attributeTypeID)const = 0;
-
-    /** Get all attributes with the given type and file id
-    * @param file_id associated file id
-    * @param attributeType name
-    * @returns vector of matching attributes can return an empty vector if there are no matches
-    */
-    virtual vector<TskBlackboardAttribute> getAttributes(const uint64_t file_id, TSK_ATTRIBUTE_TYPE attributeType)const = 0;
-    /**
-    * Get all attributes with the given type
-    * @param attributeType type
-    * @returns vector of matching attributes can return an empty vector if there are no matches
-    */
-    virtual vector<TskBlackboardAttribute> getAttributes(const TSK_ATTRIBUTE_TYPE attributeType)const = 0;
-
-
-    /**
-    * Create a new blackboard artifact with the given type id and file id
-    * @param artifactTypeID artifact type id 
-    * @param file_id associated file id 
-    * @returns the new artifact
-    * @throws error if the artifact type does not exist
-    */
-    virtual TskBlackboardArtifact createArtifact(const uint64_t file_id, const int artifactTypeID) = 0;
-
-    /**
-    * Create a new blackboard artifact with the given type and file id
-    * @param file_id associated file id
-    * @param artifactType artifact type 
-    * @returns the new artifact
-    * @throws error if the artifact type does not exist
-    */
-    virtual TskBlackboardArtifact createArtifact(const uint64_t file_id, const TSK_ARTIFACT_TYPE artifactType) = 0;
-
-    /**
-    * Add a new artifact type with the given name and file id
-    * @param file_id associated file id
-    * @param artifactTypeName System name of artifact type 
-    * @returns the new artifact
-    * @throws error if the artifact type does not exist
-    */
-    virtual TskBlackboardArtifact createArtifact(const uint64_t file_id, const string& artifactTypeName) = 0;
-
-    /**
-    * Add a new attribute to the general info artifact for the given file
-    * @param file_id file id for the file to add the attribute to
-    * @param attr and attribute populated with values. this attribute will have
-    * its artifact_id and obj_id set by this method.
-    * @throws error if no file with the given id exists or if a bad attribute is passed in.
-    */
-    virtual void createGenInfoAttribute(const uint64_t file_id, TskBlackboardAttribute& attr) = 0;
-
-    /**
-    * Search the entire blackboard for all attribute types associated with any
-    * artifact of the given type.
-    * @param artifactTypeId artifact type to search
-    * @returns a vector of attribute ids can return an empty vector if no types are found
-    */
-    virtual vector<int> findAttributeTypes(int artifactTypeId) = 0;
-
-    /**
-    * Convert attribute type id to display name
-    * @param attributeTypeID attribute type id
-    * @returns display name
-    * @throws error if no type exists for that id
-    */
-    static string attrTypeIDToTypeDisplayName(const int attributeTypeID);
-    /**
-    * Convert attribute type name to id
-    * @param attributeTypeString attribute type name
-    * @returns attribute type id
-    * @throws error if no type exists with that name
-    */
-    static int attrTypeNameToTypeID(const string& attributeTypeString);
-    /**
-    * Convert attribute type id to name
-    * @param attributeTypeID id
-    * @returns attribute type name
-    * @throws error if no type exists with that name
-    */
-    static string attrTypeIDToTypeName(const int attributeTypeID);
-
-    /**
-    * Add a new attribute type with the given name and display name
-    * @param attributeTypeName name for the new attribute type. should be unique
-    * @param displayName name to display for this type. need not be unique
-    * @returns the new attribute type id generated for the type.
-    * @throws error if a type with that name already exists
-    */
-    static int addAttributeType(const string& attributeTypeName, const string& displayName);
-
-    /**
-    * Convert artifact type id to display name
-    * @param artifactTypeID artifact type id
-    * @returns display name
-    * @throws error if no type exists with that id
-    */
-    static string artTypeIDToDisplayName(const int artifactTypeID);
-    /**
-    * Convert artifact type name to id
-    * @param artifactTypeString artifact type name
-    * @returns artifact type id
-    * @throws error if no type exists with that name
-    */
-    static int artTypeNameToTypeID(const string& artifactTypeString);
-    /**
-    * Convert artifact type id to name
-    * @param artifactTypeID id
-    * @returns artifact type name
-    * @throws error if no type exists with that id
-    */
-    static string artTypeIDToTypeName(const int artifactTypeID);
-
-    /**
-    * Add a new artifact type with the given name and display name
-    * @param artifactTypeName name for the new attribute type. should be unique
-    * @param displayName name to display for this type. need not be unique
-    * @returns the new artifact type id generated for the type.
-    * @throws error if a type with that name already exists
-    */
-    static int addArtifactType(const string& artifactTypeName, const string& displayName);
-
-    friend class TskBlackboardArtifact;
-    friend class TskImgDB;
-
-protected:
-    static map<int, TskArtifactNames> getAllArtifactTypes();
-    static map<int, TskAttributeNames> getAllAttributeTypes();
-    virtual void addBlackboardAttribute(TskBlackboardAttribute& attr) = 0;
-    /// Default Constructor
-    TskBlackboard() {};
-
-    /// Copy Constructor
-    TskBlackboard(TskBlackboard const&) {};
-
-    /// Destructor
-    virtual ~TskBlackboard() {};
-
-private:
-
-};
-
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskBlackboard.h
+ * Interface for class that will implement the black board.  The black board
+ * is used to store data from analysis modules.  The data is available to
+ * later modules in the pipeline and in the final reporting phase.
+ */
+
+#ifndef _TSK_BLACKBOARD_H
+#define _TSK_BLACKBOARD_H
+
+#include <string>
+#include <vector>
+#include "tsk/framework/utilities/TskException.h"
+#include "tsk/framework/framework_i.h"
+#include "tsk/framework/services/TskImgDB.h"
+#include "TskBlackboardArtifact.h"
+#include "TskBlackboardAttribute.h"
+
+using namespace std;
+
+/**
+ * Built in artifact types.
+ * Refer to http://wiki.sleuthkit.org/index.php?title=Artifact_Examples
+ * for details on which attributes should be used for each artifact.
+ */
+
+/* Note that the below comments are the only documentation 
+ * for the standard types.  Please ensure that all types are
+ * documented. 
+ * 
+ * The numbers are explicitly added to make it easier to verify
+ * that the Java and C++ code is in sync.
+ *
+ * It is very important that this list be kept up to date and 
+ * in sync with the Java code.  Do not add anything here unless
+ * you also add it there.  
+ * See bindings/java/src/org/sleuthkit/datamodel/BlackboardArtifact.java */
+enum TSK_ARTIFACT_TYPE {
+    TSK_GEN_INFO = 1,///< The general info artifact, if information doesn't need its own artifact it should go here
+    TSK_WEB_BOOKMARK = 2,///< A web bookmark. 
+    TSK_WEB_COOKIE = 3,///< A web cookie. 
+    TSK_WEB_HISTORY = 4,///< A web history enrty. 
+    TSK_WEB_DOWNLOAD = 5,///< A web download. 
+    TSK_RECENT_OBJECT = 6,///< A recently used object (MRU, recent document, etc.).
+    TSK_TRACKPOINT = 7,///< A trackpoint from a GPS log.
+    TSK_INSTALLED_PROG = 8,///< An installed program. 
+    TSK_KEYWORD_HIT = 9,///< A keyword hit. 
+    TSK_HASHSET_HIT = 10, ///< A hit within a known bad / notable hashset / hash database. 
+    TSK_DEVICE_ATTACHED = 11, ///< An event for a device being attached to the host computer
+    TSK_INTERESTING_FILE_HIT = 12, ///< A file that was flagged because it matched some search criteria for being interesting (i.e. because of its name, extension, etc.)
+    TSK_EMAIL_MSG = 13, ///< An e-mail message that was extracted from a file.
+    TSK_EXTRACTED_TEXT = 14, ///< Text that was extracted from a file.
+    TSK_WEB_SEARCH_QUERY = 15, ///< Web search engine query extracted from web history.
+    TSK_METADATA_EXIF = 16, ///< EXIF Metadata
+    TSK_TAG_FILE = 17, ///< File tags.
+    TSK_TAG_ARTIFACT = 18, ///< Result tags.
+    TSK_OS_INFO = 19, ///< Information pertaining to an operating system.
+    TSK_OS_ACCOUNT, ///< An operating system user account.
+    TSK_SERVICE_ACCOUNT, ///< A network service user account.
+    /* SEE ABOVE:
+    * - KEEP JAVA CODE IN SYNC 
+    * - UPDATE map in TskBlackboard.cpp
+    * - Update Wiki to reflect the attributes that should be part of the artifact. 
+    */
+};
+
+/**
+ * Built in attribute types 
+ */
+/* The numbers are explicitly added to make it easier to verify
+ * that the Java and C++ code is in sync.
+ *
+ * It is very important that this list be kept up to date and 
+ * in sync with the Java code.  Do not add anything here unless
+ * you also add it there.  
+ * See bindings/java/src/org/sleuthkit/datamodel/BlackboardAttribute.java 
+ */
+enum TSK_ATTRIBUTE_TYPE {
+    TSK_URL = 1,///< String of a URL, should start with http:// or ftp:// etc.  You should also make a TskBlackoard::TSK_DOMAIN entry for the base domain name. 
+    TSK_DATETIME = 2,///< INT32: GMT based Unix time, defines number of secords elapsed since UTC Jan 1, 1970.
+    TSK_NAME = 3,///< STRING: The name associated with an artifact
+    TSK_PROG_NAME = 4,///< String of name of a program that was installed on the system
+    TSK_VALUE = 6,///< Some value associated with an artifact
+    TSK_FLAG = 7,///< Some flag associated with an artifact
+    TSK_PATH = 8,///< A filesystem path.  Should be fully qualified. Should set TSK_PATH_ID as well when this is set. TODO: Need to define this value more for cases with multiple images and multiple file systems per image. 
+    TSK_KEYWORD = 10,///< STRING: Keyword that was found in this file. 
+    TSK_KEYWORD_REGEXP = 11,///< STRING: A regular expression string
+    TSK_KEYWORD_PREVIEW = 12,///< STRING: A text preview
+    TSK_KEYWORD_SET = 13,///< STRING: A keyword set -- Deprecated in favor of TSK_SET_NAME
+    TSK_USER_NAME = 14,///< String of a user name.  Use TskBlackboard::TSK_DOMAIN to store the domain that the username is from (if it is known). 
+    TSK_DOMAIN = 15,///< String of a DNS Domain name, e.g. sleuthkit.org  use TskBlackboad::TSK_URL for a full URL.
+    TSK_PASSWORD = 16,///< String of a password that was found.  Use TskBlackboard::TSK_USER_NAME and TskBlackboard::TSK_DOMAIN to link the password to a given user and site. 
+    TSK_NAME_PERSON = 17,///< String of a person name
+    TSK_DEVICE_MODEL = 18,///< String of manufacturer name of device that was connected (or somehow related to) the data being analyzed
+    TSK_DEVICE_MAKE = 19,///< String of make of a device that was connected (or somehow related to) the data being analyzed
+    TSK_DEVICE_ID = 20,///< String of ID/serial number of a device that was connected (or somehow related to) the data being analyzed
+    TSK_EMAIL = 21,///< String of e-mail address in the form of user@host.com (note that there are also more specific TSK_EMAIL_TO and TSK_EMAIL_FROM attributes if you know the use of the address)
+    TSK_HASH_MD5 = 22,///< STRING: MD5 hash
+    TSK_HASH_SHA1 = 23,///< STRING: SHA1 hash
+    TSK_HASH_SHA2_256 = 24,///< STRING: SHA2 256 bit hash
+    TSK_HASH_SHA2_512 = 25,///< STRING: SHA2 512 bit hash
+    TSK_TEXT = 26,///< String of text extracted from a file (should be part of TSK_EXTRACTED_TEXT artifact).
+    TSK_TEXT_FILE = 27,///< String of path to file containing text. May be absolute or relative. If relative, will be evaluated relative to OUT_DIR setting. Should be part of TSK_EXTRACTED_TEXT artifact)
+    TSK_TEXT_LANGUAGE = 28,///< String of the detected language in ISO 639-3 language code of TskBlackboard::TSK_TEXT data in the same artifact (TSK_EXTRACTED_TEXT, for example).
+    TSK_ENTROPY = 29,///< DOUBLE: Entropy value of file
+    TSK_HASHSET_NAME = 30,///< String of the name or file name of the hashset -- Deprecated in favor of TSK_SET_NAME
+    TSK_INTERESTING_FILE = 31,///< An interesting file hit, potentially file id, name, or path
+    TSK_REFERRER = 32,///< String of referrer URL
+    TSK_DATETIME_ACCESSED = 33,///<datetime last time accessed
+    TSK_IP_ADDRESS = 34,///<String of IP Address
+    TSK_PHONE_NUMBER = 35,///<String of phone number
+    TSK_PATH_ID = 36,///< Object ID from database that a TSK_PATH attribute corresponds to.  Set to -1 if path is for a file that is not in database (i.e. deleted). 
+    TSK_SET_NAME = 37,///< STRING: The name of a set that was used to find this artifact (to be used for hash hits, keyword hits, interesting files, etc.)
+    TSK_ENCRYPTION_DETECTED = 38,///< STRING: The type of encryption that is believed to have been used on the file.
+    TSK_MALWARE_DETECTED = 39,///< STRING: The name of the malware that was detected in this file.
+    TSK_STEG_DETECTED = 40,///< STRING: The name of the steganography technique that was detected in this file.
+    TSK_EMAIL_TO = 41, ///< String of an e-mail address that a message is being sent to directly (not cc:).
+    TSK_EMAIL_CC = 42, ///< String of an e-mail address that a message is being sent to as a cc:.
+    TSK_EMAIL_BCC = 43, ///< String of an e-mail address that a message is being sent to as a bcc:.
+    TSK_EMAIL_FROM = 44, ///< String of an e-mail address that a message is being sent from.
+    TSK_EMAIL_CONTENT_PLAIN = 45, ///< String of e-mail message body in plain text
+    TSK_EMAIL_CONTENT_HTML = 46, ///< STring of e-mail message body in HTML
+    TSK_EMAIL_CONTENT_RTF = 47, ///< STring of e-mail message body in RTF
+    TSK_MSG_ID = 48, ///< String of a message ID (such as one of an e-mail message)
+    TSK_MSG_REPLY_ID = 49, ///< String of a message ID that a given message is in response to (such as one of an e-mail message) 
+    TSK_DATETIME_RCVD = 50, ///< Time in Unix epoch that something was received.
+    TSK_DATETIME_SENT = 51, ///< Time in Unix epoch that something was sent.
+    TSK_SUBJECT = 52, ///< String of a subject (such as one of an e-mail message)
+    TSK_TITLE = 53, ///< String of a title (such as a webpage or other document)
+    TSK_GEO_LATITUDE = 54, ///< Floating point of latitude coordinate.  Should be in WGS84. Positive North, Negative South. 
+    TSK_GEO_LONGITUDE = 55, ///< Floating point of longitude coordinate.  Should be in WGS84.  Positive East, Negative West.
+    TSK_GEO_VELOCITY = 56, ///< Floating point of velocity in geo coordinate in meters per second.
+    TSK_GEO_ALTITUDE = 57, ///< Floating point of altitude in geo coordinate in meters.
+    TSK_GEO_BEARING = 58, ///< Floating point of bearing in geo coordinate in true degrees.
+    TSK_GEO_HPRECISION = 59, ///< Floating point of horizontal precision in geo coordinate in meters.
+    TSK_GEO_VPRECISION = 60, ///< Floating point of vertical precision in geo coordinate in meters.
+    TSK_GEO_MAPDATUM = 61, ///< String of map datum used for coordinates if not WGS84.
+    TSK_FILE_TYPE_SIG = 62, ///< String of file type based on signature detection in file content.
+    TSK_FILE_TYPE_EXT = 63, ///< String of file type based on file name extension.
+    TSK_TAGGED_ARTIFACT = 64, ///< Tagged artifact (associated result).
+    TSK_TAG_NAME = 65, ///< The tag name.  Can contain slashes "/" to represent tag hierarchy.
+    TSK_COMMENT = 66, ///< Comment string.
+    TSK_URL_DECODED = 67, ///< Decoded URL.
+    TSK_DATETIME_CREATED = 68,///< Time in Unix epoch that something was created
+    TSK_DATETIME_MODIFIED = 69,///< Time in Unix epoch that something was modified
+    TSK_PROCESSOR_ARCHITECTURE = 70,///< String of processor architecture.  Naming convention from http://en.wikipedia.org/wiki/Comparison_of_CPU_architectures.  So far, we've used x86, x86-64, and IA64.
+    TSK_VERSION = 71,///< String for a software version 
+    TSK_USER_ID,///< User IDfor a user account, e.g., a Windows SID or Linux UID.
+
+    /* SEE ABOVE: 
+    * - KEEP JAVA CODE IN SYNC 
+    * - UPDATE map in TskBlackBoard.cpp too */
+};
+
+/**
+ * Class used to store the pair of type and display names of attributes.
+ */
+class TskAttributeNames{
+public:
+    string typeName;
+    string displayName;
+    TskAttributeNames(string name, string display):
+    typeName(name),
+        displayName(display){}
+};
+
+/**
+ * Class used to store the pair of type and display names of artifacts.
+ */
+class TskArtifactNames{
+public:
+    string typeName;
+    string displayName;
+    TskArtifactNames(string name, string display):
+    typeName(name),
+        displayName(display){}
+};
+
+/**
+ * An interface for setting and retrieving name/value pairs to the blackboard.
+ * The blackboard is used to store data for use by later modules in the pipeline.
+ * Can be registered with and retrieved from TskServices.
+ */
+class TSK_FRAMEWORK_API TskBlackboard
+{
+public:
+
+    /**
+    * Get the artifact with the given id
+    * @param artifactID id
+    * @returns the artifact throws an error if no artifact matches that id.
+    */
+    virtual TskBlackboardArtifact getBlackboardArtifact(const long artifactID) = 0;
+
+    /**
+    * Get all artifacts that match the given condition
+    * @param condition condition (implementation specific) to use for matching
+    * @returns vector of matching artifacts can return an empty vector if there are no matches
+    * @throws error if a bad condition string is supplied
+    */
+    virtual vector<TskBlackboardArtifact> getMatchingArtifacts(const string& condition)const = 0;
+    /**
+    * Get all artifacts with the given type name and file id
+    * @param file_id associated file id
+    * @param artifactTypeName type name
+    * @returns vector of matching artifacts can return an empty vector if there are no matches
+    */
+    virtual vector<TskBlackboardArtifact> getArtifacts(const uint64_t file_id, const string& artifactTypeName)const = 0;
+    /**
+    * Get all artifacts with the given type id and file id
+    * @param file_id associated file id
+    * @param artifactTypeID type id
+    * @returns vector of matching artifacts can return an empty vector if there are no matches
+    */
+    virtual vector<TskBlackboardArtifact> getArtifacts(const uint64_t file_id, int artifactTypeID)const = 0;
+    /**
+    * Get all artifacts with the given type and file id
+    * @param file_id associated file id
+    * @param artifactType name
+    * @returns vector of matching artifacts can return an empty vector if there are no matches
+    */
+    virtual vector<TskBlackboardArtifact> getArtifacts(const uint64_t file_id, TSK_ARTIFACT_TYPE artifactType)const = 0;
+    /**
+    * Get all artifacts with the given type
+    * @param artifactType type
+    * @returns vector of matching artifacts can return an empty vector if there are no matches
+    */
+    virtual vector<TskBlackboardArtifact> getArtifacts(const TSK_ARTIFACT_TYPE artifactType)const = 0;
+
+    /**
+    * Get all attributes that match the given condition 
+    * @param condition (implementation specific) to use for matching
+    * @returns vector of matching attributes can return an empty vector if there are no matches
+    * @throws error if a bad condition string is supplied
+    */
+    virtual vector<TskBlackboardAttribute> getMatchingAttributes(const string& condition)const = 0;   
+
+    /**
+    * Get all attributes with the given type name and file id
+    * @param file_id associated file id
+    * @param attributeTypeName type name
+    * @returns vector of matching attributes can return an empty vector if there are no matches
+    */
+    virtual vector<TskBlackboardAttribute> getAttributes(const uint64_t file_id, const string& attributeTypeName)const = 0;
+
+    /**
+    * Get all attributes with the given type and file id
+    * @param file_id associated file id
+    * @param attributeTypeID Type of attribute to return
+    * @returns vector of matching attributes can return an empty vector if there are no matches
+    */
+    virtual vector<TskBlackboardAttribute> getAttributes(const uint64_t file_id, int attributeTypeID)const = 0;
+
+    /** Get all attributes with the given type and file id
+    * @param file_id associated file id
+    * @param attributeType name
+    * @returns vector of matching attributes can return an empty vector if there are no matches
+    */
+    virtual vector<TskBlackboardAttribute> getAttributes(const uint64_t file_id, TSK_ATTRIBUTE_TYPE attributeType)const = 0;
+    /**
+    * Get all attributes with the given type
+    * @param attributeType type
+    * @returns vector of matching attributes can return an empty vector if there are no matches
+    */
+    virtual vector<TskBlackboardAttribute> getAttributes(const TSK_ATTRIBUTE_TYPE attributeType)const = 0;
+
+
+    /**
+    * Create a new blackboard artifact with the given type id and file id
+    * @param artifactTypeID artifact type id 
+    * @param file_id associated file id 
+    * @returns the new artifact
+    * @throws error if the artifact type does not exist
+    */
+    virtual TskBlackboardArtifact createArtifact(const uint64_t file_id, const int artifactTypeID) = 0;
+
+    /**
+    * Create a new blackboard artifact with the given type and file id
+    * @param file_id associated file id
+    * @param artifactType artifact type 
+    * @returns the new artifact
+    * @throws error if the artifact type does not exist
+    */
+    virtual TskBlackboardArtifact createArtifact(const uint64_t file_id, const TSK_ARTIFACT_TYPE artifactType) = 0;
+
+    /**
+    * Add a new artifact type with the given name and file id
+    * @param file_id associated file id
+    * @param artifactTypeName System name of artifact type 
+    * @returns the new artifact
+    * @throws error if the artifact type does not exist
+    */
+    virtual TskBlackboardArtifact createArtifact(const uint64_t file_id, const string& artifactTypeName) = 0;
+
+    /**
+    * Add a new attribute to the general info artifact for the given file
+    * @param file_id file id for the file to add the attribute to
+    * @param attr and attribute populated with values. this attribute will have
+    * its artifact_id and obj_id set by this method.
+    * @throws error if no file with the given id exists or if a bad attribute is passed in.
+    */
+    virtual void createGenInfoAttribute(const uint64_t file_id, TskBlackboardAttribute& attr) = 0;
+
+    /**
+    * Search the entire blackboard for all attribute types associated with any
+    * artifact of the given type.
+    * @param artifactTypeId artifact type to search
+    * @returns a vector of attribute ids can return an empty vector if no types are found
+    */
+    virtual vector<int> findAttributeTypes(int artifactTypeId) = 0;
+
+    /**
+    * Convert attribute type id to display name
+    * @param attributeTypeID attribute type id
+    * @returns display name
+    * @throws error if no type exists for that id
+    */
+    static string attrTypeIDToTypeDisplayName(const int attributeTypeID);
+    /**
+    * Convert attribute type name to id
+    * @param attributeTypeString attribute type name
+    * @returns attribute type id
+    * @throws error if no type exists with that name
+    */
+    static int attrTypeNameToTypeID(const string& attributeTypeString);
+    /**
+    * Convert attribute type id to name
+    * @param attributeTypeID id
+    * @returns attribute type name
+    * @throws error if no type exists with that name
+    */
+    static string attrTypeIDToTypeName(const int attributeTypeID);
+
+    /**
+    * Add a new attribute type with the given name and display name
+    * @param attributeTypeName name for the new attribute type. should be unique
+    * @param displayName name to display for this type. need not be unique
+    * @returns the new attribute type id generated for the type.
+    * @throws error if a type with that name already exists
+    */
+    static int addAttributeType(const string& attributeTypeName, const string& displayName);
+
+    /**
+    * Convert artifact type id to display name
+    * @param artifactTypeID artifact type id
+    * @returns display name
+    * @throws error if no type exists with that id
+    */
+    static string artTypeIDToDisplayName(const int artifactTypeID);
+    /**
+    * Convert artifact type name to id
+    * @param artifactTypeString artifact type name
+    * @returns artifact type id
+    * @throws error if no type exists with that name
+    */
+    static int artTypeNameToTypeID(const string& artifactTypeString);
+    /**
+    * Convert artifact type id to name
+    * @param artifactTypeID id
+    * @returns artifact type name
+    * @throws error if no type exists with that id
+    */
+    static string artTypeIDToTypeName(const int artifactTypeID);
+
+    /**
+    * Add a new artifact type with the given name and display name
+    * @param artifactTypeName name for the new attribute type. should be unique
+    * @param displayName name to display for this type. need not be unique
+    * @returns the new artifact type id generated for the type.
+    * @throws error if a type with that name already exists
+    */
+    static int addArtifactType(const string& artifactTypeName, const string& displayName);
+
+    friend class TskBlackboardArtifact;
+    friend class TskImgDB;
+
+protected:
+    static map<int, TskArtifactNames> getAllArtifactTypes();
+    static map<int, TskAttributeNames> getAllAttributeTypes();
+    virtual void addBlackboardAttribute(TskBlackboardAttribute& attr) = 0;
+    /// Default Constructor
+    TskBlackboard() {};
+
+    /// Copy Constructor
+    TskBlackboard(TskBlackboard const&) {};
+
+    /// Destructor
+    virtual ~TskBlackboard() {};
+
+private:
+
+};
+
+
+#endif
diff --git a/framework/tsk/framework/services/TskBlackboardArtifact.cpp b/framework/tsk/framework/services/TskBlackboardArtifact.cpp
index 3ecd7fb11f562bb95287c61362608a0d2e4ba232..914c6558f6869aa559d2e6786301c365c0a02d5e 100644
--- a/framework/tsk/framework/services/TskBlackboardArtifact.cpp
+++ b/framework/tsk/framework/services/TskBlackboardArtifact.cpp
@@ -1,99 +1,99 @@
-/*
-* The Sleuth Kit
-*
-* Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
-* Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
-* reserved.
-*
-* This software is distributed under the Common Public License 1.0
-*/
-
-#include <string>
-#include <vector>
-#include <iostream>
-#include <sstream>
-#include "tsk/framework/framework_i.h"
-#include "TskBlackboard.h"
-#include "TskBlackboardAttribute.h"
-#include "tsk/framework/utilities/TskException.h"
-#include "tsk/framework/services/TskServices.h"
-
-#define BLACKBOARD() (TskServices::Instance().getBlackboard())
-
-/**
-* Default destructor
-*/
-TskBlackboardArtifact::~TskBlackboardArtifact(){
-
-}
-
-/**
-* Get the artifact id
-* @returns artifact id
-*/
-uint64_t TskBlackboardArtifact::getArtifactID()const{
-    return m_artifactID;
-}
-
-/**
-* Get the object id
-* @returns object id
-*/
-uint64_t TskBlackboardArtifact::getObjectID()const{
-    return m_objID;
-}
-
-/**
-* Get the artifact type id
-* @returns artifact type id
-*/
-int TskBlackboardArtifact::getArtifactTypeID()const{
-    return m_artifactTypeID;
-}
-
-/**
-* Get the artifact type name
-* @returns artifact type name
-*/
-string TskBlackboardArtifact::getArtifactTypeName()const{
-    return BLACKBOARD().artTypeIDToTypeName(m_artifactTypeID);
-}
-
-/**
-* Get the display name
-* @returns display name
-*/
-string TskBlackboardArtifact::getDisplayName()const{
-    return BLACKBOARD().artTypeIDToDisplayName(m_artifactTypeID);
-}
-
-/**
-* Add an attribute to this artifact
-* @param attr attribute to be added
-* @throws error if the given attribute has a bad type
-*/
-void TskBlackboardArtifact::addAttribute(TskBlackboardAttribute& attr){
-    attr.setArtifactID(m_artifactID);
-    attr.setObjectID(m_objID);
-    BLACKBOARD().addBlackboardAttribute(attr);
-}
-
-/**
-* Get all attributes associated with this artifact
-* @returns a vector of attributes
-*/
-vector<TskBlackboardAttribute> TskBlackboardArtifact::getAttributes()const{
-    std::stringstream whereClause;
-    whereClause << "WHERE artifact_id = " << m_artifactID;
-
-    return BLACKBOARD().getMatchingAttributes(whereClause.str());
-}
-
-/**
-* Constructor
-* @param artifactID artifact id 
-* @param objID object id 
-* @param artifactTypeID arifact type id 
-*/	
-TskBlackboardArtifact::TskBlackboardArtifact(uint64_t artifactID, uint64_t objID, int artifactTypeID)
-: m_artifactID(artifactID), m_objID(objID), m_artifactTypeID(artifactTypeID) {}
+/*
+* The Sleuth Kit
+*
+* Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+* Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+* reserved.
+*
+* This software is distributed under the Common Public License 1.0
+*/
+
+#include <string>
+#include <vector>
+#include <iostream>
+#include <sstream>
+#include "tsk/framework/framework_i.h"
+#include "TskBlackboard.h"
+#include "TskBlackboardAttribute.h"
+#include "tsk/framework/utilities/TskException.h"
+#include "tsk/framework/services/TskServices.h"
+
+#define BLACKBOARD() (TskServices::Instance().getBlackboard())
+
+/**
+* Default destructor
+*/
+TskBlackboardArtifact::~TskBlackboardArtifact(){
+
+}
+
+/**
+* Get the artifact id
+* @returns artifact id
+*/
+uint64_t TskBlackboardArtifact::getArtifactID()const{
+    return m_artifactID;
+}
+
+/**
+* Get the object id
+* @returns object id
+*/
+uint64_t TskBlackboardArtifact::getObjectID()const{
+    return m_objID;
+}
+
+/**
+* Get the artifact type id
+* @returns artifact type id
+*/
+int TskBlackboardArtifact::getArtifactTypeID()const{
+    return m_artifactTypeID;
+}
+
+/**
+* Get the artifact type name
+* @returns artifact type name
+*/
+string TskBlackboardArtifact::getArtifactTypeName()const{
+    return BLACKBOARD().artTypeIDToTypeName(m_artifactTypeID);
+}
+
+/**
+* Get the display name
+* @returns display name
+*/
+string TskBlackboardArtifact::getDisplayName()const{
+    return BLACKBOARD().artTypeIDToDisplayName(m_artifactTypeID);
+}
+
+/**
+* Add an attribute to this artifact
+* @param attr attribute to be added
+* @throws error if the given attribute has a bad type
+*/
+void TskBlackboardArtifact::addAttribute(TskBlackboardAttribute& attr){
+    attr.setArtifactID(m_artifactID);
+    attr.setObjectID(m_objID);
+    BLACKBOARD().addBlackboardAttribute(attr);
+}
+
+/**
+* Get all attributes associated with this artifact
+* @returns a vector of attributes
+*/
+vector<TskBlackboardAttribute> TskBlackboardArtifact::getAttributes()const{
+    std::stringstream whereClause;
+    whereClause << "WHERE artifact_id = " << m_artifactID;
+
+    return BLACKBOARD().getMatchingAttributes(whereClause.str());
+}
+
+/**
+* Constructor
+* @param artifactID artifact id 
+* @param objID object id 
+* @param artifactTypeID arifact type id 
+*/	
+TskBlackboardArtifact::TskBlackboardArtifact(uint64_t artifactID, uint64_t objID, int artifactTypeID)
+: m_artifactID(artifactID), m_objID(objID), m_artifactTypeID(artifactTypeID) {}
diff --git a/framework/tsk/framework/services/TskBlackboardArtifact.h b/framework/tsk/framework/services/TskBlackboardArtifact.h
index 92e55ffd66c2b6eebb396773aad8c5acb7d79e9d..860c661c792153534af41da3c13a7897afd35892 100644
--- a/framework/tsk/framework/services/TskBlackboardArtifact.h
+++ b/framework/tsk/framework/services/TskBlackboardArtifact.h
@@ -1,86 +1,86 @@
-/*
-* The Sleuth Kit
-*
-* Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
-* Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
-* reserved.
-*
-* This software is distributed under the Common Public License 1.0
-*/
-
-/**
-* \file TskBlackboardArtifact.h
-* Contains the definition for the TskBlackboardArtifact class.
-*/
-#ifndef _TSK_BLACKBOARD_ARTIFACT_H
-#define _TSK_BLACKBOARD_ARTIFACT_H
-
-#include <string>
-#include <vector>
-#include "tsk/framework/framework_i.h"
-
-using namespace std;
-
-class TskBlackboardAttribute;
-class TskBlackboard;
-
-/**
-* Class that represents a blackboard artifact object.
-*/
-class TSK_FRAMEWORK_API TskBlackboardArtifact
-{
-public:
-    /**
-    * Get the artifact id for this artifact
-    * @returns artifact id
-    */
-    uint64_t getArtifactID() const;
-    /**
-    * Get the object id for this artifact
-    * @returns object id
-    */
-    uint64_t getObjectID() const;
-    /**
-    * Get the artifact type id for this artifact
-    * @returns artifact type id
-    */
-    int getArtifactTypeID() const;
-    /**
-    * Get the artifact type name for this artifact
-    * @returns artifact type name
-    */
-    string getArtifactTypeName() const;
-    /**
-    * Get the display name for this artifact
-    * @returns display name
-    */
-    string getDisplayName() const;
-    /**
-    * Add an attribute to this artifact
-    * @param attr attribute to be added
-    */
-    void addAttribute(TskBlackboardAttribute& attr);
-    /**
-    * Get all attributes associated with this artifact
-    * @returns a vector of attributes
-    */
-    vector<TskBlackboardAttribute> getAttributes() const;	
-    /*
-    * destructor
-    */
-    ~TskBlackboardArtifact();
-
-    friend class TskBlackboard;
-    friend class TskFile;
-    friend class TskImgDB;
-
-protected:
-    TskBlackboardArtifact(const uint64_t artifactID, const uint64_t objID, const int artifactTypeID);
-
-private:
-    uint64_t m_artifactID;
-    uint64_t m_objID;
-    int m_artifactTypeID;
-};
-
-#endif
+/*
+* The Sleuth Kit
+*
+* Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+* Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+* reserved.
+*
+* This software is distributed under the Common Public License 1.0
+*/
+
+/**
+* \file TskBlackboardArtifact.h
+* Contains the definition for the TskBlackboardArtifact class.
+*/
+#ifndef _TSK_BLACKBOARD_ARTIFACT_H
+#define _TSK_BLACKBOARD_ARTIFACT_H
+
+#include <string>
+#include <vector>
+#include "tsk/framework/framework_i.h"
+
+using namespace std;
+
+class TskBlackboardAttribute;
+class TskBlackboard;
+
+/**
+* Class that represents a blackboard artifact object.
+*/
+class TSK_FRAMEWORK_API TskBlackboardArtifact
+{
+public:
+    /**
+    * Get the artifact id for this artifact
+    * @returns artifact id
+    */
+    uint64_t getArtifactID() const;
+    /**
+    * Get the object id for this artifact
+    * @returns object id
+    */
+    uint64_t getObjectID() const;
+    /**
+    * Get the artifact type id for this artifact
+    * @returns artifact type id
+    */
+    int getArtifactTypeID() const;
+    /**
+    * Get the artifact type name for this artifact
+    * @returns artifact type name
+    */
+    string getArtifactTypeName() const;
+    /**
+    * Get the display name for this artifact
+    * @returns display name
+    */
+    string getDisplayName() const;
+    /**
+    * Add an attribute to this artifact
+    * @param attr attribute to be added
+    */
+    void addAttribute(TskBlackboardAttribute& attr);
+    /**
+    * Get all attributes associated with this artifact
+    * @returns a vector of attributes
+    */
+    vector<TskBlackboardAttribute> getAttributes() const;	
+    /*
+    * destructor
+    */
+    ~TskBlackboardArtifact();
+
+    friend class TskBlackboard;
+    friend class TskFile;
+    friend class TskImgDB;
+
+protected:
+    TskBlackboardArtifact(const uint64_t artifactID, const uint64_t objID, const int artifactTypeID);
+
+private:
+    uint64_t m_artifactID;
+    uint64_t m_objID;
+    int m_artifactTypeID;
+};
+
+#endif
diff --git a/framework/tsk/framework/services/TskBlackboardAttribute.cpp b/framework/tsk/framework/services/TskBlackboardAttribute.cpp
index 1e08c9d6dc597abc66586eec7e13ed370b95d915..f8e5e1793bd1d4e53c91f760ec82c77cd4ea9022 100644
--- a/framework/tsk/framework/services/TskBlackboardAttribute.cpp
+++ b/framework/tsk/framework/services/TskBlackboardAttribute.cpp
@@ -1,265 +1,265 @@
-/*
-* The Sleuth Kit
-*
-* Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
-* Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
-* reserved.
-*
-* This software is distributed under the Common Public License 1.0
-*/
-
-#include <string>
-#include <vector>
-#include "tsk/framework/framework_i.h"
-#include "TskBlackboardAttribute.h"
-#include "TskBlackboardArtifact.h"
-#include "TskBlackboard.h"
-#include "tsk/framework/utilities/TskException.h"
-#include "TskServices.h"
-
-/**
-* Default destructor
-*/	
-TskBlackboardAttribute::~TskBlackboardAttribute(){
-}
-
-/**
-* Constructor 
-* @param attributeTypeID attribute type id 
-* @param moduleName module that created this attribute 
-* @param context additional context 
-* @param valueInt integer value
-*/	
-TskBlackboardAttribute::TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const int valueInt): 
-    m_artifactID(),
-    m_attributeTypeID(attributeTypeID),
-    m_moduleName(moduleName),
-    m_context(context),
-    m_valueType(TSK_INTEGER),
-    m_valueInt(valueInt),   
-    m_valueLong(),
-    m_valueDouble(),
-    m_valueString(),
-    m_valueBytes(),
-    m_objectID(){}
-
-/**
-* Constructor 
-* @param attributeTypeID attribute type id 
-* @param moduleName module that created this attribute 
-* @param context additional context 
-* @param valueLong 64 bit integer value
-*/	
-TskBlackboardAttribute::TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const uint64_t valueLong): 
-    m_artifactID(),
-    m_attributeTypeID(attributeTypeID),
-    m_moduleName(moduleName),
-    m_context(context),
-    m_valueType(TSK_LONG),
-    m_valueInt(),
-    m_valueLong(valueLong),   
-    m_valueDouble(),
-    m_valueString(),
-    m_valueBytes(),
-    m_objectID(){}
-
-/**
-* Constructor 
-* @param attributeTypeID attribute type id 
-* @param moduleName module that created this attribute 
-* @param context additional context 
-* @param valueDouble double value
-*/	
-TskBlackboardAttribute::TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const double valueDouble): 
-    m_artifactID(),
-    m_attributeTypeID(attributeTypeID),
-    m_moduleName(moduleName),
-    m_context(context),
-    m_valueType(TSK_DOUBLE),
-    m_valueInt(),
-    m_valueLong(),   
-    m_valueDouble(valueDouble),
-    m_valueString(),
-    m_valueBytes(),
-    m_objectID(){}
-
-/**
-* Constructor 
-* @param attributeTypeID attribute type id 
-* @param moduleName module that created this attribute 
-* @param context additional context 
-* @param valueString string value
-*/	
-TskBlackboardAttribute::TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const string& valueString): 
-    m_artifactID(),
-    m_attributeTypeID(attributeTypeID),
-    m_moduleName(moduleName),
-    m_context(context),
-    m_valueType(TSK_STRING),
-    m_valueInt(),
-    m_valueLong(),   
-    m_valueDouble(),
-    m_valueString(valueString),
-    m_valueBytes(),
-    m_objectID(){}
-
-/**
-* Constructor 
-* @param attributeTypeID attribute type id 
-* @param moduleName module that created this attribute 
-* @param context additional context 
-* @param valueBytes byte array value
-*/	
-TskBlackboardAttribute::TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const vector<unsigned char>& valueBytes): 
-    m_artifactID(),
-    m_attributeTypeID(attributeTypeID),
-    m_moduleName(moduleName),
-    m_context(context),
-    m_valueType(TSK_BYTE),
-    m_valueInt(),
-    m_valueLong(),   
-    m_valueDouble(),
-    m_valueString(),
-    m_valueBytes(valueBytes),
-    m_objectID(){}
-
-/**
-* Constructor 
-* @param artifactID if of the artifact this is associated with
-* @param attributeTypeID attribute type id 
-* @param moduleName module that created this attribute 
-* @param context additional context 
-* @param valueType Type of value being set (only the corresponding value from the next parameters will be used)
-* @param valueInt integer value
-* @param valueLong 64 bit integer value
-* @param valueDouble double value
-* @param valueString string value
-* @param valueBytes byte array value
-* @param objectID object the attribute is associated with
-*/	
-TskBlackboardAttribute::TskBlackboardAttribute(const uint64_t artifactID, const int attributeTypeID, const uint64_t objectID, const string& moduleName, const string& context,
-                                               const TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE valueType, const int valueInt, const uint64_t valueLong, const double valueDouble, 
-                                               const string& valueString, const vector<unsigned char>& valueBytes):
-m_artifactID(artifactID), 
-m_attributeTypeID(attributeTypeID),
-m_moduleName(moduleName),
-m_context(context),
-m_valueType(valueType),
-m_valueInt(valueInt),
-m_valueLong(valueLong),
-m_valueDouble(valueDouble),
-m_valueString(valueString),
-m_valueBytes(valueBytes),
-m_objectID(objectID){}
-
-/**
-* Get artifact id
-* @returns artifact id
-*/	
-uint64_t TskBlackboardAttribute::getArtifactID()const{
-    return m_artifactID;
-}
-
-/**
-* Get attribute type id
-* @returns attribute type id
-*/	
-int TskBlackboardAttribute::getAttributeTypeID()const{
-    return m_attributeTypeID;
-}
-
-/**
-* Get value type
-* @returns value type
-*/	
-TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE TskBlackboardAttribute::getValueType()const {
-    return m_valueType;
-}
-
-/**
-* Get value int
-* @returns value int
-*/	
-int TskBlackboardAttribute::getValueInt()const{
-    return m_valueInt;
-}
-
-/**
-* Get value long
-* @returns value long
-*/	
-uint64_t TskBlackboardAttribute::getValueLong()const{
-    return m_valueLong;
-}
-
-/**
-* Get value double
-* @returns value double
-*/	
-double TskBlackboardAttribute::getValueDouble()const{
-    return m_valueDouble;
-}
-
-/**
-* Get value string
-* @returns value string
-*/	
-string TskBlackboardAttribute::getValueString()const{
-    return m_valueString;
-}
-
-/**
-* Get value bytes
-* @returns value bytes
-*/	
-vector<unsigned char> TskBlackboardAttribute::getValueBytes()const{
-    return m_valueBytes;
-}
-
-/**
-* Get module name
-* @returns module name
-*/	
-string TskBlackboardAttribute::getModuleName()const{
-    return m_moduleName;
-}
-
-/**
-* Get context
-* @returns context
-*/	
-string TskBlackboardAttribute::getContext()const{
-    return m_context;
-}
-
-/**
-* Get parent artifact
-* @returns parent artifact
-*/	
-TskBlackboardArtifact TskBlackboardAttribute::getParentArtifact()const{
-    return TskServices::Instance().getBlackboard().getBlackboardArtifact(m_artifactID);
-}
-
-/**
-* Get object id
-* @returns object id
-*/
-uint64_t TskBlackboardAttribute::getObjectID()const{
-    return m_objectID;
-}
-
-/**
-* Set object id
-* @param objectID object id
-*/
-void TskBlackboardAttribute::setObjectID(uint64_t objectID){
-    m_objectID = objectID;
-}
-
-/**
-* Set artifact id
-* @param artifactID artifact id
-*/
-void TskBlackboardAttribute::setArtifactID(uint64_t artifactID){
-    m_artifactID = artifactID;
-}
+/*
+* The Sleuth Kit
+*
+* Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+* Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+* reserved.
+*
+* This software is distributed under the Common Public License 1.0
+*/
+
+#include <string>
+#include <vector>
+#include "tsk/framework/framework_i.h"
+#include "TskBlackboardAttribute.h"
+#include "TskBlackboardArtifact.h"
+#include "TskBlackboard.h"
+#include "tsk/framework/utilities/TskException.h"
+#include "TskServices.h"
+
+/**
+* Default destructor
+*/	
+TskBlackboardAttribute::~TskBlackboardAttribute(){
+}
+
+/**
+* Constructor 
+* @param attributeTypeID attribute type id 
+* @param moduleName module that created this attribute 
+* @param context additional context 
+* @param valueInt integer value
+*/	
+TskBlackboardAttribute::TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const int valueInt): 
+    m_artifactID(),
+    m_attributeTypeID(attributeTypeID),
+    m_moduleName(moduleName),
+    m_context(context),
+    m_valueType(TSK_INTEGER),
+    m_valueInt(valueInt),   
+    m_valueLong(),
+    m_valueDouble(),
+    m_valueString(),
+    m_valueBytes(),
+    m_objectID(){}
+
+/**
+* Constructor 
+* @param attributeTypeID attribute type id 
+* @param moduleName module that created this attribute 
+* @param context additional context 
+* @param valueLong 64 bit integer value
+*/	
+TskBlackboardAttribute::TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const uint64_t valueLong): 
+    m_artifactID(),
+    m_attributeTypeID(attributeTypeID),
+    m_moduleName(moduleName),
+    m_context(context),
+    m_valueType(TSK_LONG),
+    m_valueInt(),
+    m_valueLong(valueLong),   
+    m_valueDouble(),
+    m_valueString(),
+    m_valueBytes(),
+    m_objectID(){}
+
+/**
+* Constructor 
+* @param attributeTypeID attribute type id 
+* @param moduleName module that created this attribute 
+* @param context additional context 
+* @param valueDouble double value
+*/	
+TskBlackboardAttribute::TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const double valueDouble): 
+    m_artifactID(),
+    m_attributeTypeID(attributeTypeID),
+    m_moduleName(moduleName),
+    m_context(context),
+    m_valueType(TSK_DOUBLE),
+    m_valueInt(),
+    m_valueLong(),   
+    m_valueDouble(valueDouble),
+    m_valueString(),
+    m_valueBytes(),
+    m_objectID(){}
+
+/**
+* Constructor 
+* @param attributeTypeID attribute type id 
+* @param moduleName module that created this attribute 
+* @param context additional context 
+* @param valueString string value
+*/	
+TskBlackboardAttribute::TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const string& valueString): 
+    m_artifactID(),
+    m_attributeTypeID(attributeTypeID),
+    m_moduleName(moduleName),
+    m_context(context),
+    m_valueType(TSK_STRING),
+    m_valueInt(),
+    m_valueLong(),   
+    m_valueDouble(),
+    m_valueString(valueString),
+    m_valueBytes(),
+    m_objectID(){}
+
+/**
+* Constructor 
+* @param attributeTypeID attribute type id 
+* @param moduleName module that created this attribute 
+* @param context additional context 
+* @param valueBytes byte array value
+*/	
+TskBlackboardAttribute::TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const vector<unsigned char>& valueBytes): 
+    m_artifactID(),
+    m_attributeTypeID(attributeTypeID),
+    m_moduleName(moduleName),
+    m_context(context),
+    m_valueType(TSK_BYTE),
+    m_valueInt(),
+    m_valueLong(),   
+    m_valueDouble(),
+    m_valueString(),
+    m_valueBytes(valueBytes),
+    m_objectID(){}
+
+/**
+* Constructor 
+* @param artifactID if of the artifact this is associated with
+* @param attributeTypeID attribute type id 
+* @param moduleName module that created this attribute 
+* @param context additional context 
+* @param valueType Type of value being set (only the corresponding value from the next parameters will be used)
+* @param valueInt integer value
+* @param valueLong 64 bit integer value
+* @param valueDouble double value
+* @param valueString string value
+* @param valueBytes byte array value
+* @param objectID object the attribute is associated with
+*/	
+TskBlackboardAttribute::TskBlackboardAttribute(const uint64_t artifactID, const int attributeTypeID, const uint64_t objectID, const string& moduleName, const string& context,
+                                               const TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE valueType, const int valueInt, const uint64_t valueLong, const double valueDouble, 
+                                               const string& valueString, const vector<unsigned char>& valueBytes):
+m_artifactID(artifactID), 
+m_attributeTypeID(attributeTypeID),
+m_moduleName(moduleName),
+m_context(context),
+m_valueType(valueType),
+m_valueInt(valueInt),
+m_valueLong(valueLong),
+m_valueDouble(valueDouble),
+m_valueString(valueString),
+m_valueBytes(valueBytes),
+m_objectID(objectID){}
+
+/**
+* Get artifact id
+* @returns artifact id
+*/	
+uint64_t TskBlackboardAttribute::getArtifactID()const{
+    return m_artifactID;
+}
+
+/**
+* Get attribute type id
+* @returns attribute type id
+*/	
+int TskBlackboardAttribute::getAttributeTypeID()const{
+    return m_attributeTypeID;
+}
+
+/**
+* Get value type
+* @returns value type
+*/	
+TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE TskBlackboardAttribute::getValueType()const {
+    return m_valueType;
+}
+
+/**
+* Get value int
+* @returns value int
+*/	
+int TskBlackboardAttribute::getValueInt()const{
+    return m_valueInt;
+}
+
+/**
+* Get value long
+* @returns value long
+*/	
+uint64_t TskBlackboardAttribute::getValueLong()const{
+    return m_valueLong;
+}
+
+/**
+* Get value double
+* @returns value double
+*/	
+double TskBlackboardAttribute::getValueDouble()const{
+    return m_valueDouble;
+}
+
+/**
+* Get value string
+* @returns value string
+*/	
+string TskBlackboardAttribute::getValueString()const{
+    return m_valueString;
+}
+
+/**
+* Get value bytes
+* @returns value bytes
+*/	
+vector<unsigned char> TskBlackboardAttribute::getValueBytes()const{
+    return m_valueBytes;
+}
+
+/**
+* Get module name
+* @returns module name
+*/	
+string TskBlackboardAttribute::getModuleName()const{
+    return m_moduleName;
+}
+
+/**
+* Get context
+* @returns context
+*/	
+string TskBlackboardAttribute::getContext()const{
+    return m_context;
+}
+
+/**
+* Get parent artifact
+* @returns parent artifact
+*/	
+TskBlackboardArtifact TskBlackboardAttribute::getParentArtifact()const{
+    return TskServices::Instance().getBlackboard().getBlackboardArtifact(m_artifactID);
+}
+
+/**
+* Get object id
+* @returns object id
+*/
+uint64_t TskBlackboardAttribute::getObjectID()const{
+    return m_objectID;
+}
+
+/**
+* Set object id
+* @param objectID object id
+*/
+void TskBlackboardAttribute::setObjectID(uint64_t objectID){
+    m_objectID = objectID;
+}
+
+/**
+* Set artifact id
+* @param artifactID artifact id
+*/
+void TskBlackboardAttribute::setArtifactID(uint64_t artifactID){
+    m_artifactID = artifactID;
+}
diff --git a/framework/tsk/framework/services/TskBlackboardAttribute.h b/framework/tsk/framework/services/TskBlackboardAttribute.h
index 4184665d4055575213863f7d2e95b17cad6f2e15..40e0173eb33140d38f84985a8929fcfaaa282ca4 100644
--- a/framework/tsk/framework/services/TskBlackboardAttribute.h
+++ b/framework/tsk/framework/services/TskBlackboardAttribute.h
@@ -1,183 +1,183 @@
-/*
-* The Sleuth Kit
-*
-* Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
-* Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
-* reserved.
-*
-* This software is distributed under the Common Public License 1.0
-*/
-
-/**
-* \file TskBlackboardAttribute.h
-* Contains the definition for the TskBlackboardAttribute class.
-*/
-
-#ifndef _TSK_BLACKBOARD_ATTR_H
-#define _TSK_BLACKBOARD_ATTR_H
-
-#include <string>
-#include <vector>
-#include <map>
-#include "tsk/framework/framework_i.h"
-
-using namespace std;
-
-/**
-* Value type enum, should always correspond to the stored value in an 
-* attribute
-*/
-enum TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE {
-    TSK_STRING = 0,	   ///< string
-    TSK_INTEGER,   ///< int
-    TSK_LONG,			///< long
-    TSK_DOUBLE,	  ///< double
-    TSK_BYTE,
-};	  ///< byte
-
-
-class TskBlackboardArtifact;
-class TskBlackboard;
-
-/**
-* Class that represents a blackboard attribute object.
-*/
-class TSK_FRAMEWORK_API TskBlackboardAttribute 
-{
-public:
-
-
-    /**
-    * Constructor for an attribute storing an int 
-    * @param attributeTypeID attribute type id 
-    * @param moduleName module that created this attribute 
-    * @param context additional context 
-    * @param valueInt integer value
-    */	
-    TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const int valueInt);
-    /**
-    * Constructor for an attribute storing a 64 bit integer 
-    * @param attributeTypeID attribute type id 
-    * @param moduleName module that created this attribute 
-    * @param context additional context 
-    * @param valueLong 64 bit integer value
-    */	
-    TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const uint64_t valueLong);
-    /**
-    * Constructor for an attribute storing a double 
-    * @param attributeTypeID attribute type id 
-    * @param moduleName module that created this attribute 
-    * @param context additional context 
-    * @param valueDouble double value
-    */	
-    TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const double valueDouble);
-    /**
-    * Constructor for an attribute storing a string
-    * @param attributeTypeID attribute type id 
-    * @param moduleName module that created this attribute 
-    * @param context additional context 
-    * @param valueString string value
-    */	
-    TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const string& valueString);
-    /**
-    * Constructor for an attribute storing a byte array
-    * @param attributeTypeID attribute type id 
-    * @param moduleName module that created this attribute 
-    * @param context additional context 
-    * @param valueBytes byte array value
-    */
-    TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const vector<unsigned char>& valueBytes);
-    /*
-    * destructor
-    */
-    ~TskBlackboardAttribute();
-
-    /**
-    * Get artifact id for the parent of this attribute
-    * @returns artifact id
-    */	
-    uint64_t getArtifactID() const;
-    /**
-    * Get attribute type id for this attribute
-    * @returns attribute type id
-    */	
-    int getAttributeTypeID() const;
-    /**
-    * Get typeof value this attribute stores
-    * @returns value type
-    */	
-    TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE getValueType() const;
-    /**
-    * Get value int (if the attribute stores an int)
-    * @returns value int
-    */	
-    int getValueInt() const;
-    /**
-    * Get value long (if the attribute stores a long0
-    * @returns value long
-    */	
-    uint64_t getValueLong() const;
-    /**
-    * Get value double (if the attribute stores a double)
-    * @returns value double
-    */	
-    double getValueDouble() const;
-    /**
-    * Get value string (if this attribute stores a string)
-    * @returns value string
-    */	
-    string getValueString() const;
-    /**
-    * Get value bytes (if this attribute stores bytes)
-    * @returns value bytes
-    */	
-    vector<unsigned char> getValueBytes() const;
-    /**
-    * Get nameof the module that created this attribute
-    * @returns module name
-    */
-    string getModuleName() const;
-    /**
-    * Get context for this attribute
-    * @returns context
-    */
-    string getContext() const;
-    /**
-    * Get object id this attribute is associated with
-    * @returns object id
-    */
-    uint64_t getObjectID() const;
-
-    /**
-    * Get parent artifact for this attribute
-    * @returns parent artifact
-    */	
-    TskBlackboardArtifact getParentArtifact() const; 
-
-    friend class TskImgDB;
-    friend class TskDBBlackboard;
-    friend class TskBlackboardArtifact;
-    friend class TskFile;
-
-protected:
-    void setArtifactID(uint64_t artifactID);
-    void setObjectID(uint64_t objectID);
-
-    TskBlackboardAttribute(const uint64_t artifactID, const int attributeTypeID, const uint64_t objectID, const string& moduleName, const string& context,
-        const TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE valueType, const int valueInt, const uint64_t valueLong, const double valueDouble, 
-        const string& valueString, const vector<unsigned char>& valueBytes);
-private:
-    uint64_t m_artifactID;
-    int m_attributeTypeID;
-    string m_moduleName;
-    string m_context;
-    TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE m_valueType;
-    int m_valueInt;
-    uint64_t m_valueLong;
-    double m_valueDouble;
-    string m_valueString;
-    vector<unsigned char> m_valueBytes;
-    uint64_t m_objectID;
-};
-
-#endif
+/*
+* The Sleuth Kit
+*
+* Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+* Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+* reserved.
+*
+* This software is distributed under the Common Public License 1.0
+*/
+
+/**
+* \file TskBlackboardAttribute.h
+* Contains the definition for the TskBlackboardAttribute class.
+*/
+
+#ifndef _TSK_BLACKBOARD_ATTR_H
+#define _TSK_BLACKBOARD_ATTR_H
+
+#include <string>
+#include <vector>
+#include <map>
+#include "tsk/framework/framework_i.h"
+
+using namespace std;
+
+/**
+* Value type enum, should always correspond to the stored value in an 
+* attribute
+*/
+enum TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE {
+    TSK_STRING = 0,	   ///< string
+    TSK_INTEGER,   ///< int
+    TSK_LONG,			///< long
+    TSK_DOUBLE,	  ///< double
+    TSK_BYTE,
+};	  ///< byte
+
+
+class TskBlackboardArtifact;
+class TskBlackboard;
+
+/**
+* Class that represents a blackboard attribute object.
+*/
+class TSK_FRAMEWORK_API TskBlackboardAttribute 
+{
+public:
+
+
+    /**
+    * Constructor for an attribute storing an int 
+    * @param attributeTypeID attribute type id 
+    * @param moduleName module that created this attribute 
+    * @param context additional context 
+    * @param valueInt integer value
+    */	
+    TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const int valueInt);
+    /**
+    * Constructor for an attribute storing a 64 bit integer 
+    * @param attributeTypeID attribute type id 
+    * @param moduleName module that created this attribute 
+    * @param context additional context 
+    * @param valueLong 64 bit integer value
+    */	
+    TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const uint64_t valueLong);
+    /**
+    * Constructor for an attribute storing a double 
+    * @param attributeTypeID attribute type id 
+    * @param moduleName module that created this attribute 
+    * @param context additional context 
+    * @param valueDouble double value
+    */	
+    TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const double valueDouble);
+    /**
+    * Constructor for an attribute storing a string
+    * @param attributeTypeID attribute type id 
+    * @param moduleName module that created this attribute 
+    * @param context additional context 
+    * @param valueString string value
+    */	
+    TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const string& valueString);
+    /**
+    * Constructor for an attribute storing a byte array
+    * @param attributeTypeID attribute type id 
+    * @param moduleName module that created this attribute 
+    * @param context additional context 
+    * @param valueBytes byte array value
+    */
+    TskBlackboardAttribute(const int attributeTypeID, const string& moduleName, const string& context, const vector<unsigned char>& valueBytes);
+    /*
+    * destructor
+    */
+    ~TskBlackboardAttribute();
+
+    /**
+    * Get artifact id for the parent of this attribute
+    * @returns artifact id
+    */	
+    uint64_t getArtifactID() const;
+    /**
+    * Get attribute type id for this attribute
+    * @returns attribute type id
+    */	
+    int getAttributeTypeID() const;
+    /**
+    * Get typeof value this attribute stores
+    * @returns value type
+    */	
+    TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE getValueType() const;
+    /**
+    * Get value int (if the attribute stores an int)
+    * @returns value int
+    */	
+    int getValueInt() const;
+    /**
+    * Get value long (if the attribute stores a long0
+    * @returns value long
+    */	
+    uint64_t getValueLong() const;
+    /**
+    * Get value double (if the attribute stores a double)
+    * @returns value double
+    */	
+    double getValueDouble() const;
+    /**
+    * Get value string (if this attribute stores a string)
+    * @returns value string
+    */	
+    string getValueString() const;
+    /**
+    * Get value bytes (if this attribute stores bytes)
+    * @returns value bytes
+    */	
+    vector<unsigned char> getValueBytes() const;
+    /**
+    * Get nameof the module that created this attribute
+    * @returns module name
+    */
+    string getModuleName() const;
+    /**
+    * Get context for this attribute
+    * @returns context
+    */
+    string getContext() const;
+    /**
+    * Get object id this attribute is associated with
+    * @returns object id
+    */
+    uint64_t getObjectID() const;
+
+    /**
+    * Get parent artifact for this attribute
+    * @returns parent artifact
+    */	
+    TskBlackboardArtifact getParentArtifact() const; 
+
+    friend class TskImgDB;
+    friend class TskDBBlackboard;
+    friend class TskBlackboardArtifact;
+    friend class TskFile;
+
+protected:
+    void setArtifactID(uint64_t artifactID);
+    void setObjectID(uint64_t objectID);
+
+    TskBlackboardAttribute(const uint64_t artifactID, const int attributeTypeID, const uint64_t objectID, const string& moduleName, const string& context,
+        const TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE valueType, const int valueInt, const uint64_t valueLong, const double valueDouble, 
+        const string& valueString, const vector<unsigned char>& valueBytes);
+private:
+    uint64_t m_artifactID;
+    int m_attributeTypeID;
+    string m_moduleName;
+    string m_context;
+    TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE m_valueType;
+    int m_valueInt;
+    uint64_t m_valueLong;
+    double m_valueDouble;
+    string m_valueString;
+    vector<unsigned char> m_valueBytes;
+    uint64_t m_objectID;
+};
+
+#endif
diff --git a/framework/tsk/framework/services/TskDBBlackboard.cpp b/framework/tsk/framework/services/TskDBBlackboard.cpp
index 9f38cace14a703422e9021ae5b1fd5c5d63b489c..7c94ba028ed885bcc8a4ab785bd4a136ef3a9375 100755
--- a/framework/tsk/framework/services/TskDBBlackboard.cpp
+++ b/framework/tsk/framework/services/TskDBBlackboard.cpp
@@ -1,212 +1,212 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#include <string>
-#include <sstream>
-
-#include "TskDBBlackboard.h"
-#include "tsk/framework/services/TskImgDB.h"
-#include "tsk/framework/services/TskServices.h"
-#include "tsk/framework/file/TskFileTsk.h"
-#include "tsk/framework/file/TskFile.h"
-#include "tsk/framework/file/TskFileManagerImpl.h"
-
-TskDBBlackboard * TskDBBlackboard::m_pInstance = NULL;
-
-#define IMGDB() (TskServices::Instance().getImgDB())
-
-TskDBBlackboard& TskDBBlackboard::instance()
-{
-    if (!m_pInstance)
-    {
-        m_pInstance = new TskDBBlackboard();
-    }
-    return *m_pInstance;
-}
-
-int TskDBBlackboard::addArtifactType(const string& artifactTypeName, const string& displayName){
-    try{
-        return TskBlackboard::artTypeNameToTypeID(artifactTypeName);
-    }
-    catch(TskException e){
-        try{
-            return IMGDB().getArtifactTypeID(artifactTypeName);
-        }
-        catch(TskException e){
-            int id = TskBlackboard::addArtifactType(artifactTypeName, displayName);
-            IMGDB().addArtifactType(id, artifactTypeName, displayName);
-            return id;
-        }
-    }
-}
-
-int TskDBBlackboard::addAttributeType(const string& attributeTypeName, const string& displayName){
-    try{
-        return TskBlackboard::attrTypeNameToTypeID(attributeTypeName);
-    }
-    catch(TskException e){
-        try{
-            return IMGDB().getAttributeTypeID(attributeTypeName);
-        }
-        catch(TskException e){
-            int id = TskBlackboard::addAttributeType(attributeTypeName, displayName);
-            IMGDB().addAttributeType(id, attributeTypeName, displayName);
-            return id;
-        }
-    }
-}
-
-void TskDBBlackboard::addBlackboardAttribute(TskBlackboardAttribute& attr){
-    if(attrTypeIDToTypeName(attr.getAttributeTypeID()).compare("") != 0)
-        IMGDB().addBlackboardAttribute(attr);
-    else
-        throw new TskException("No attribute type for the id of the given attribute");
-}
-
-string TskDBBlackboard::attrTypeIDToTypeDisplayName(const int attributeTypeID){
-    try{
-        return TskBlackboard::attrTypeIDToTypeDisplayName(attributeTypeID);
-    }
-    catch(TskException e){
-        return IMGDB().getAttributeTypeDisplayName(attributeTypeID);
-    }
-}
-
-int TskDBBlackboard::attrTypeNameToTypeID(const string& attributeTypeString){
-    try{
-        return TskBlackboard::attrTypeNameToTypeID(attributeTypeString);
-    }
-    catch(TskException e){
-        return IMGDB().getAttributeTypeID(attributeTypeString);
-    } 
-}
-
-string TskDBBlackboard::attrTypeIDToTypeName(const int attributeTypeID){
-    try{
-    return TskBlackboard::attrTypeIDToTypeName(attributeTypeID);
-    }
-    catch(TskException e){
-        return IMGDB().getAttributeTypeName(attributeTypeID);
-    }
-}
-
-string TskDBBlackboard::artTypeIDToDisplayName(const int artifactTypeID){
-    try{
-    return TskBlackboard::artTypeIDToDisplayName(artifactTypeID);}
-    catch(TskException e){
-        return IMGDB().getArtifactTypeDisplayName(artifactTypeID);
-    }
-}
-
-int TskDBBlackboard::artTypeNameToTypeID(const string& artifactTypeString){
-    try{
-    return TskBlackboard::artTypeNameToTypeID(artifactTypeString);}
-    catch(TskException e){
-        return IMGDB().getArtifactTypeID(artifactTypeString);
-    }
-}
-string TskDBBlackboard::artTypeIDToTypeName(const int artifactTypeID){
-    try{
-    return TskBlackboard::artTypeIDToTypeName(artifactTypeID);}
-    catch(TskException e){
-        return IMGDB().getArtifactTypeName(artifactTypeID);
-    }
-}
-
-TskBlackboardArtifact TskDBBlackboard::getBlackboardArtifact(const long artifactID){
-    stringstream condition;
-    condition << " WHERE artifact_id = " << artifactID;
-    return IMGDB().getMatchingArtifacts(condition.str())[0];
-}
-
-vector<TskBlackboardArtifact> TskDBBlackboard::getArtifacts(const uint64_t file_id, const string& artifactTypeName)const{
-    stringstream condition;
-    condition << " WHERE obj_id = " << file_id << " AND artifact_type_id = " << attrTypeNameToTypeID(artifactTypeName);
-    return IMGDB().getMatchingArtifacts(condition.str());
-}
-
-vector<TskBlackboardArtifact> TskDBBlackboard::getArtifacts(const uint64_t file_id, int artifactTypeID)const{
-    stringstream condition;
-    condition << " WHERE obj_id = " << file_id << " AND artifact_type_id = " << artifactTypeID;
-    return IMGDB().getMatchingArtifacts(condition.str());
-}
-
-vector<TskBlackboardArtifact> TskDBBlackboard::getArtifacts(const uint64_t file_id, TSK_ARTIFACT_TYPE artifactType)const{
-    stringstream condition;
-    condition << " WHERE obj_id = " << file_id << " AND artifact_type_id = " << artifactType;
-    return IMGDB().getMatchingArtifacts(condition.str());
-}
-
-vector<TskBlackboardArtifact> TskDBBlackboard::getArtifacts(TSK_ARTIFACT_TYPE artifactType)const{
-    stringstream condition;
-    condition << " WHERE artifact_type_id = " << artifactType;
-    return IMGDB().getMatchingArtifacts(condition.str());
-}
-
-vector<TskBlackboardArtifact> TskDBBlackboard::getMatchingArtifacts(const string& condition)const{
-    return IMGDB().getMatchingArtifacts(condition);
-}
-
-vector<TskBlackboardAttribute> TskDBBlackboard::getAttributes(const uint64_t file_id, const string& attributeTypeName)const{
-    stringstream condition;
-    condition << " WHERE obj_id = " << file_id << " AND attribute_type_id = " << attrTypeNameToTypeID(attributeTypeName);
-    return IMGDB().getMatchingAttributes(condition.str());
-}
-vector<TskBlackboardAttribute> TskDBBlackboard::getAttributes(const uint64_t file_id, int attributeTypeID)const{
-    stringstream condition;
-    condition << " WHERE obj_id = " << file_id << " AND attribute_type_id = " << attributeTypeID;
-    return IMGDB().getMatchingAttributes(condition.str());
-}
-vector<TskBlackboardAttribute> TskDBBlackboard::getAttributes(const uint64_t file_id, TSK_ATTRIBUTE_TYPE attributeType)const{
-    stringstream condition;
-    condition << " WHERE obj_id = " << file_id << " AND attribute_type_id = " << attributeType;
-    return IMGDB().getMatchingAttributes(condition.str());
-}
-vector<TskBlackboardAttribute> TskDBBlackboard::getAttributes(const TSK_ATTRIBUTE_TYPE attributeType)const{
-    stringstream condition;
-    condition << " WHERE attribute_type_id = " << attributeType;
-    return IMGDB().getMatchingAttributes(condition.str());
-}
-
-vector<TskBlackboardAttribute> TskDBBlackboard::getMatchingAttributes(const string& condition)const{
-    return IMGDB().getMatchingAttributes(condition);
-
-}
-
-TskBlackboardArtifact TskDBBlackboard::createArtifact(const uint64_t file_id, const int artifactTypeID){
-    if(artTypeIDToTypeName(artifactTypeID).compare("") != 0)
-        return IMGDB().createBlackboardArtifact(file_id, artifactTypeID);
-    else
-        throw new TskException("No Artifact type exists with that ID");
-}
-
-TskBlackboardArtifact TskDBBlackboard::createArtifact(const uint64_t file_id, const TSK_ARTIFACT_TYPE artifactType){
-    if(artTypeIDToTypeName(artifactType).compare("") != 0)
-        return IMGDB().createBlackboardArtifact(file_id, artifactType);
-    else
-        throw new TskException("No Artifact type exists with that name");
-}
-
-TskBlackboardArtifact TskDBBlackboard::createArtifact(const uint64_t file_id, const string& artifactTypeName){
-    if(artTypeNameToTypeID(artifactTypeName))
-        return IMGDB().createBlackboardArtifact(file_id, attrTypeNameToTypeID(artifactTypeName));
-    else
-        throw new TskException("Artifact type does not exist. Bad enum value.");
-}
-
-void TskDBBlackboard::createGenInfoAttribute(const uint64_t file_id, TskBlackboardAttribute& attr){
-    TskFile *file = TskFileManagerImpl::instance().getFile(file_id);
-    file->addGenInfoAttribute(attr);
-    delete file;
-}
-
-vector<int> TskDBBlackboard::findAttributeTypes(int artifactTypeId){
-    return IMGDB().findAttributeTypes(artifactTypeId);
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#include <string>
+#include <sstream>
+
+#include "TskDBBlackboard.h"
+#include "tsk/framework/services/TskImgDB.h"
+#include "tsk/framework/services/TskServices.h"
+#include "tsk/framework/file/TskFileTsk.h"
+#include "tsk/framework/file/TskFile.h"
+#include "tsk/framework/file/TskFileManagerImpl.h"
+
+TskDBBlackboard * TskDBBlackboard::m_pInstance = NULL;
+
+#define IMGDB() (TskServices::Instance().getImgDB())
+
+TskDBBlackboard& TskDBBlackboard::instance()
+{
+    if (!m_pInstance)
+    {
+        m_pInstance = new TskDBBlackboard();
+    }
+    return *m_pInstance;
+}
+
+int TskDBBlackboard::addArtifactType(const string& artifactTypeName, const string& displayName){
+    try{
+        return TskBlackboard::artTypeNameToTypeID(artifactTypeName);
+    }
+    catch(TskException e){
+        try{
+            return IMGDB().getArtifactTypeID(artifactTypeName);
+        }
+        catch(TskException e){
+            int id = TskBlackboard::addArtifactType(artifactTypeName, displayName);
+            IMGDB().addArtifactType(id, artifactTypeName, displayName);
+            return id;
+        }
+    }
+}
+
+int TskDBBlackboard::addAttributeType(const string& attributeTypeName, const string& displayName){
+    try{
+        return TskBlackboard::attrTypeNameToTypeID(attributeTypeName);
+    }
+    catch(TskException e){
+        try{
+            return IMGDB().getAttributeTypeID(attributeTypeName);
+        }
+        catch(TskException e){
+            int id = TskBlackboard::addAttributeType(attributeTypeName, displayName);
+            IMGDB().addAttributeType(id, attributeTypeName, displayName);
+            return id;
+        }
+    }
+}
+
+void TskDBBlackboard::addBlackboardAttribute(TskBlackboardAttribute& attr){
+    if(attrTypeIDToTypeName(attr.getAttributeTypeID()).compare("") != 0)
+        IMGDB().addBlackboardAttribute(attr);
+    else
+        throw new TskException("No attribute type for the id of the given attribute");
+}
+
+string TskDBBlackboard::attrTypeIDToTypeDisplayName(const int attributeTypeID){
+    try{
+        return TskBlackboard::attrTypeIDToTypeDisplayName(attributeTypeID);
+    }
+    catch(TskException e){
+        return IMGDB().getAttributeTypeDisplayName(attributeTypeID);
+    }
+}
+
+int TskDBBlackboard::attrTypeNameToTypeID(const string& attributeTypeString){
+    try{
+        return TskBlackboard::attrTypeNameToTypeID(attributeTypeString);
+    }
+    catch(TskException e){
+        return IMGDB().getAttributeTypeID(attributeTypeString);
+    } 
+}
+
+string TskDBBlackboard::attrTypeIDToTypeName(const int attributeTypeID){
+    try{
+    return TskBlackboard::attrTypeIDToTypeName(attributeTypeID);
+    }
+    catch(TskException e){
+        return IMGDB().getAttributeTypeName(attributeTypeID);
+    }
+}
+
+string TskDBBlackboard::artTypeIDToDisplayName(const int artifactTypeID){
+    try{
+    return TskBlackboard::artTypeIDToDisplayName(artifactTypeID);}
+    catch(TskException e){
+        return IMGDB().getArtifactTypeDisplayName(artifactTypeID);
+    }
+}
+
+int TskDBBlackboard::artTypeNameToTypeID(const string& artifactTypeString){
+    try{
+    return TskBlackboard::artTypeNameToTypeID(artifactTypeString);}
+    catch(TskException e){
+        return IMGDB().getArtifactTypeID(artifactTypeString);
+    }
+}
+string TskDBBlackboard::artTypeIDToTypeName(const int artifactTypeID){
+    try{
+    return TskBlackboard::artTypeIDToTypeName(artifactTypeID);}
+    catch(TskException e){
+        return IMGDB().getArtifactTypeName(artifactTypeID);
+    }
+}
+
+TskBlackboardArtifact TskDBBlackboard::getBlackboardArtifact(const long artifactID){
+    stringstream condition;
+    condition << " WHERE artifact_id = " << artifactID;
+    return IMGDB().getMatchingArtifacts(condition.str())[0];
+}
+
+vector<TskBlackboardArtifact> TskDBBlackboard::getArtifacts(const uint64_t file_id, const string& artifactTypeName)const{
+    stringstream condition;
+    condition << " WHERE obj_id = " << file_id << " AND artifact_type_id = " << attrTypeNameToTypeID(artifactTypeName);
+    return IMGDB().getMatchingArtifacts(condition.str());
+}
+
+vector<TskBlackboardArtifact> TskDBBlackboard::getArtifacts(const uint64_t file_id, int artifactTypeID)const{
+    stringstream condition;
+    condition << " WHERE obj_id = " << file_id << " AND artifact_type_id = " << artifactTypeID;
+    return IMGDB().getMatchingArtifacts(condition.str());
+}
+
+vector<TskBlackboardArtifact> TskDBBlackboard::getArtifacts(const uint64_t file_id, TSK_ARTIFACT_TYPE artifactType)const{
+    stringstream condition;
+    condition << " WHERE obj_id = " << file_id << " AND artifact_type_id = " << artifactType;
+    return IMGDB().getMatchingArtifacts(condition.str());
+}
+
+vector<TskBlackboardArtifact> TskDBBlackboard::getArtifacts(TSK_ARTIFACT_TYPE artifactType)const{
+    stringstream condition;
+    condition << " WHERE artifact_type_id = " << artifactType;
+    return IMGDB().getMatchingArtifacts(condition.str());
+}
+
+vector<TskBlackboardArtifact> TskDBBlackboard::getMatchingArtifacts(const string& condition)const{
+    return IMGDB().getMatchingArtifacts(condition);
+}
+
+vector<TskBlackboardAttribute> TskDBBlackboard::getAttributes(const uint64_t file_id, const string& attributeTypeName)const{
+    stringstream condition;
+    condition << " WHERE obj_id = " << file_id << " AND attribute_type_id = " << attrTypeNameToTypeID(attributeTypeName);
+    return IMGDB().getMatchingAttributes(condition.str());
+}
+vector<TskBlackboardAttribute> TskDBBlackboard::getAttributes(const uint64_t file_id, int attributeTypeID)const{
+    stringstream condition;
+    condition << " WHERE obj_id = " << file_id << " AND attribute_type_id = " << attributeTypeID;
+    return IMGDB().getMatchingAttributes(condition.str());
+}
+vector<TskBlackboardAttribute> TskDBBlackboard::getAttributes(const uint64_t file_id, TSK_ATTRIBUTE_TYPE attributeType)const{
+    stringstream condition;
+    condition << " WHERE obj_id = " << file_id << " AND attribute_type_id = " << attributeType;
+    return IMGDB().getMatchingAttributes(condition.str());
+}
+vector<TskBlackboardAttribute> TskDBBlackboard::getAttributes(const TSK_ATTRIBUTE_TYPE attributeType)const{
+    stringstream condition;
+    condition << " WHERE attribute_type_id = " << attributeType;
+    return IMGDB().getMatchingAttributes(condition.str());
+}
+
+vector<TskBlackboardAttribute> TskDBBlackboard::getMatchingAttributes(const string& condition)const{
+    return IMGDB().getMatchingAttributes(condition);
+
+}
+
+TskBlackboardArtifact TskDBBlackboard::createArtifact(const uint64_t file_id, const int artifactTypeID){
+    if(artTypeIDToTypeName(artifactTypeID).compare("") != 0)
+        return IMGDB().createBlackboardArtifact(file_id, artifactTypeID);
+    else
+        throw new TskException("No Artifact type exists with that ID");
+}
+
+TskBlackboardArtifact TskDBBlackboard::createArtifact(const uint64_t file_id, const TSK_ARTIFACT_TYPE artifactType){
+    if(artTypeIDToTypeName(artifactType).compare("") != 0)
+        return IMGDB().createBlackboardArtifact(file_id, artifactType);
+    else
+        throw new TskException("No Artifact type exists with that name");
+}
+
+TskBlackboardArtifact TskDBBlackboard::createArtifact(const uint64_t file_id, const string& artifactTypeName){
+    if(artTypeNameToTypeID(artifactTypeName))
+        return IMGDB().createBlackboardArtifact(file_id, attrTypeNameToTypeID(artifactTypeName));
+    else
+        throw new TskException("Artifact type does not exist. Bad enum value.");
+}
+
+void TskDBBlackboard::createGenInfoAttribute(const uint64_t file_id, TskBlackboardAttribute& attr){
+    TskFile *file = TskFileManagerImpl::instance().getFile(file_id);
+    file->addGenInfoAttribute(attr);
+    delete file;
+}
+
+vector<int> TskDBBlackboard::findAttributeTypes(int artifactTypeId){
+    return IMGDB().findAttributeTypes(artifactTypeId);
+}
diff --git a/framework/tsk/framework/services/TskDBBlackboard.h b/framework/tsk/framework/services/TskDBBlackboard.h
index 47d3ca7c129e0757098a8b80e8e91737f4e9fde5..ed99a638766c184abfa405a4b721354f8d33d76b 100755
--- a/framework/tsk/framework/services/TskDBBlackboard.h
+++ b/framework/tsk/framework/services/TskDBBlackboard.h
@@ -1,100 +1,100 @@
-/*
-* The Sleuth Kit
-*
-* Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
-* Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
-* reserved.
-*
-* This software is distributed under the Common Public License 1.0
-*/
-
-/**
-* \file TskDBBlackboard.h
-* Contains the definition for the TskDBBlackboard class.
-*/
-
-#ifndef _TSK_DB_BLACKBOARD_H
-#define _TSK_DB_BLACKBOARD_H
-
-#include <string>
-#include "tsk/framework/utilities/TskException.h"
-#include "tsk/framework/services/TskBlackboard.h"
-#include "tsk/framework/services/TskImgDB.h"
-#include "tsk/framework/services/TskServices.h"
-#include "TskBlackboardArtifact.h"
-#include "TskBlackboardAttribute.h"
-
-
-/**
-* An implementation of TskBlackboard that stores the name / value pairs
-* in the TskImgDB. 
-*/
-class TSK_FRAMEWORK_API TskDBBlackboard : public TskBlackboard
-{
-public:
-    // Singleton access
-    static TskDBBlackboard& instance();
-
-    virtual TskBlackboardArtifact getBlackboardArtifact(const long artifactID);
-
-    virtual vector<TskBlackboardArtifact> getMatchingArtifacts(const string& condition)const;
-    virtual vector<TskBlackboardArtifact> getArtifacts(const uint64_t file_id, const string& artifactTypeName)const;
-    virtual vector<TskBlackboardArtifact> getArtifacts(const uint64_t file_id, int artifactTypeID)const;
-    virtual vector<TskBlackboardArtifact> getArtifacts(const uint64_t file_id, TSK_ARTIFACT_TYPE artifactType)const;
-    virtual vector<TskBlackboardArtifact> getArtifacts(const TSK_ARTIFACT_TYPE artifactType)const;
-
-    virtual vector<TskBlackboardAttribute> getMatchingAttributes(const string& condition)const;   
-    virtual vector<TskBlackboardAttribute> getAttributes(const uint64_t file_id, const string& attributeTypeName)const;
-    virtual vector<TskBlackboardAttribute> getAttributes(const uint64_t file_id, int attributeTypeID)const;
-    virtual vector<TskBlackboardAttribute> getAttributes(const uint64_t file_id, TSK_ATTRIBUTE_TYPE attributeType)const;
-    virtual vector<TskBlackboardAttribute> getAttributes(const TSK_ATTRIBUTE_TYPE attributeType)const;
-
-
-    virtual TskBlackboardArtifact createArtifact(const uint64_t file_id, const int artifactTypeID);
-    virtual TskBlackboardArtifact createArtifact(const uint64_t file_id, const TSK_ARTIFACT_TYPE artifactType);
-    virtual TskBlackboardArtifact createArtifact(const uint64_t file_id, const string& artifactTypeName);
-
-    virtual void createGenInfoAttribute(const uint64_t file_id, TskBlackboardAttribute& attr);
-
-
-    static string attrTypeIDToTypeDisplayName(const int attributeTypeID);
-    static int attrTypeNameToTypeID(const string& attributeTypeString);
-    static string attrTypeIDToTypeName(const int attributeTypeID);
-
-    static int addAttributeType(const string& attributeTypeName, const string& displayName);
-
-    static string artTypeIDToDisplayName(const int artifactTypeID);
-    static int artTypeNameToTypeID(const string& artifactTypeString);
-    static string artTypeIDToTypeName(const int artifactTypeID);
-
-    static int addArtifactType(const string& artifactTypeName, const string& displayName);
-
-    virtual vector<int> findAttributeTypes(int artifactTypeId);
-
-    friend class TskBlackboardArtifact;
-
-protected:
-    virtual void addBlackboardAttribute(TskBlackboardAttribute& attr);
-    // Default Constructor
-    TskDBBlackboard() { 
-        m_pImgDB = &(TskServices::Instance().getImgDB()); 
-    };
-
-    // Copy Constructor
-    TskDBBlackboard(TskDBBlackboard const&) {};
-
-    // Assignment operator
-    TskDBBlackboard& operator=(TskDBBlackboard const&) { return *m_pInstance; };
-
-    // Destructor
-    virtual ~TskDBBlackboard() {};
-
-    // Our one and only instance
-    static TskDBBlackboard * m_pInstance;
-
-    TskImgDB * m_pImgDB;
-
-private: 
-
-};
-#endif
+/*
+* The Sleuth Kit
+*
+* Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+* Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+* reserved.
+*
+* This software is distributed under the Common Public License 1.0
+*/
+
+/**
+* \file TskDBBlackboard.h
+* Contains the definition for the TskDBBlackboard class.
+*/
+
+#ifndef _TSK_DB_BLACKBOARD_H
+#define _TSK_DB_BLACKBOARD_H
+
+#include <string>
+#include "tsk/framework/utilities/TskException.h"
+#include "tsk/framework/services/TskBlackboard.h"
+#include "tsk/framework/services/TskImgDB.h"
+#include "tsk/framework/services/TskServices.h"
+#include "TskBlackboardArtifact.h"
+#include "TskBlackboardAttribute.h"
+
+
+/**
+* An implementation of TskBlackboard that stores the name / value pairs
+* in the TskImgDB. 
+*/
+class TSK_FRAMEWORK_API TskDBBlackboard : public TskBlackboard
+{
+public:
+    // Singleton access
+    static TskDBBlackboard& instance();
+
+    virtual TskBlackboardArtifact getBlackboardArtifact(const long artifactID);
+
+    virtual vector<TskBlackboardArtifact> getMatchingArtifacts(const string& condition)const;
+    virtual vector<TskBlackboardArtifact> getArtifacts(const uint64_t file_id, const string& artifactTypeName)const;
+    virtual vector<TskBlackboardArtifact> getArtifacts(const uint64_t file_id, int artifactTypeID)const;
+    virtual vector<TskBlackboardArtifact> getArtifacts(const uint64_t file_id, TSK_ARTIFACT_TYPE artifactType)const;
+    virtual vector<TskBlackboardArtifact> getArtifacts(const TSK_ARTIFACT_TYPE artifactType)const;
+
+    virtual vector<TskBlackboardAttribute> getMatchingAttributes(const string& condition)const;   
+    virtual vector<TskBlackboardAttribute> getAttributes(const uint64_t file_id, const string& attributeTypeName)const;
+    virtual vector<TskBlackboardAttribute> getAttributes(const uint64_t file_id, int attributeTypeID)const;
+    virtual vector<TskBlackboardAttribute> getAttributes(const uint64_t file_id, TSK_ATTRIBUTE_TYPE attributeType)const;
+    virtual vector<TskBlackboardAttribute> getAttributes(const TSK_ATTRIBUTE_TYPE attributeType)const;
+
+
+    virtual TskBlackboardArtifact createArtifact(const uint64_t file_id, const int artifactTypeID);
+    virtual TskBlackboardArtifact createArtifact(const uint64_t file_id, const TSK_ARTIFACT_TYPE artifactType);
+    virtual TskBlackboardArtifact createArtifact(const uint64_t file_id, const string& artifactTypeName);
+
+    virtual void createGenInfoAttribute(const uint64_t file_id, TskBlackboardAttribute& attr);
+
+
+    static string attrTypeIDToTypeDisplayName(const int attributeTypeID);
+    static int attrTypeNameToTypeID(const string& attributeTypeString);
+    static string attrTypeIDToTypeName(const int attributeTypeID);
+
+    static int addAttributeType(const string& attributeTypeName, const string& displayName);
+
+    static string artTypeIDToDisplayName(const int artifactTypeID);
+    static int artTypeNameToTypeID(const string& artifactTypeString);
+    static string artTypeIDToTypeName(const int artifactTypeID);
+
+    static int addArtifactType(const string& artifactTypeName, const string& displayName);
+
+    virtual vector<int> findAttributeTypes(int artifactTypeId);
+
+    friend class TskBlackboardArtifact;
+
+protected:
+    virtual void addBlackboardAttribute(TskBlackboardAttribute& attr);
+    // Default Constructor
+    TskDBBlackboard() { 
+        m_pImgDB = &(TskServices::Instance().getImgDB()); 
+    };
+
+    // Copy Constructor
+    TskDBBlackboard(TskDBBlackboard const&) {};
+
+    // Assignment operator
+    TskDBBlackboard& operator=(TskDBBlackboard const&) { return *m_pInstance; };
+
+    // Destructor
+    virtual ~TskDBBlackboard() {};
+
+    // Our one and only instance
+    static TskDBBlackboard * m_pInstance;
+
+    TskImgDB * m_pImgDB;
+
+private: 
+
+};
+#endif
diff --git a/framework/tsk/framework/services/TskImgDB.cpp b/framework/tsk/framework/services/TskImgDB.cpp
index bcf5e9cbf71b2886b3db3e6e6685488baa6fad36..c35cbe1d77bfd868ee41794f6493736c91306620 100755
--- a/framework/tsk/framework/services/TskImgDB.cpp
+++ b/framework/tsk/framework/services/TskImgDB.cpp
@@ -1,74 +1,74 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskImgDB.cpp
- * Some common defines used by the framework data model.
- */
-
-#include "TskImgDB.h"
-
-/// Default constructor
-TskImgDB::TskImgDB()
-{
-}
-
-/// Destructor
-TskImgDB::~TskImgDB()
-{
-}
-
-/**
- * Store meta_addr to object id mapping of the directory in a local cache map
- * @param fsObjId fs id of this directory
- * @param meta_addr meta_addr of this directory
- * @param objId object id of this directory from the objects table
- */
-void TskImgDB::storeParObjId(const int64_t & fsObjId, const TSK_INUM_T & meta_addr, const int64_t & objId) {
-	map<TSK_INUM_T,int64_t> &tmpMap = m_parentDirIdCache[fsObjId];
-	//store only if does not exist
-	if (tmpMap.count(meta_addr) == 0)
-		tmpMap[meta_addr] = objId;
-}
-
-/**
- * Find parent object id of TSK_FS_FILE. Use local cache map, if not found, fall back to SQL
- * @param fs_file file to find parent obj id for
- * @param fsObjId fs id of this file
- * @returns parent obj id ( > 0), -1 on error
- */
-int64_t TskImgDB::findParObjId(const int64_t & fsObjId, TSK_INUM_T meta_addr) {
-    //get from cache by parent meta addr, if available
-    map<TSK_INUM_T,int64_t> &tmpMap = m_parentDirIdCache[fsObjId];
-    if (tmpMap.count(meta_addr) > 0) {
-        return tmpMap[meta_addr];
-    }
-
-    return getFileId(fsObjId, meta_addr);
-}
-
-TskBlackboardAttribute TskImgDB::createAttribute(uint64_t artifactID, int attributeTypeID, uint64_t objectID, string moduleName, string context,
-		TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE valueType, int valueInt, uint64_t valueLong, double valueDouble, 
-        string valueString, vector<unsigned char> valueBytes){
-
-    return TskBlackboardAttribute(artifactID, attributeTypeID, objectID, moduleName, context,
-		valueType, valueInt, valueLong, valueDouble, valueString, valueBytes);
-}
-TskBlackboardArtifact TskImgDB::createArtifact(uint64_t artifactID, uint64_t objID, int artifactTypeID){
-    return TskBlackboardArtifact(artifactID, objID, artifactTypeID);
-}
-
-map<int, TskArtifactNames> TskImgDB::getAllArtifactTypes(){
-    return TskBlackboard::getAllArtifactTypes();
-}
-
-map<int, TskAttributeNames> TskImgDB::getAllAttributeTypes(){
-    return TskBlackboard::getAllAttributeTypes();
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskImgDB.cpp
+ * Some common defines used by the framework data model.
+ */
+
+#include "TskImgDB.h"
+
+/// Default constructor
+TskImgDB::TskImgDB()
+{
+}
+
+/// Destructor
+TskImgDB::~TskImgDB()
+{
+}
+
+/**
+ * Store meta_addr to object id mapping of the directory in a local cache map
+ * @param fsObjId fs id of this directory
+ * @param meta_addr meta_addr of this directory
+ * @param objId object id of this directory from the objects table
+ */
+void TskImgDB::storeParObjId(const int64_t & fsObjId, const TSK_INUM_T & meta_addr, const int64_t & objId) {
+	map<TSK_INUM_T,int64_t> &tmpMap = m_parentDirIdCache[fsObjId];
+	//store only if does not exist
+	if (tmpMap.count(meta_addr) == 0)
+		tmpMap[meta_addr] = objId;
+}
+
+/**
+ * Find parent object id of TSK_FS_FILE. Use local cache map, if not found, fall back to SQL
+ * @param fs_file file to find parent obj id for
+ * @param fsObjId fs id of this file
+ * @returns parent obj id ( > 0), -1 on error
+ */
+int64_t TskImgDB::findParObjId(const int64_t & fsObjId, TSK_INUM_T meta_addr) {
+    //get from cache by parent meta addr, if available
+    map<TSK_INUM_T,int64_t> &tmpMap = m_parentDirIdCache[fsObjId];
+    if (tmpMap.count(meta_addr) > 0) {
+        return tmpMap[meta_addr];
+    }
+
+    return getFileId(fsObjId, meta_addr);
+}
+
+TskBlackboardAttribute TskImgDB::createAttribute(uint64_t artifactID, int attributeTypeID, uint64_t objectID, string moduleName, string context,
+		TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE valueType, int valueInt, uint64_t valueLong, double valueDouble, 
+        string valueString, vector<unsigned char> valueBytes){
+
+    return TskBlackboardAttribute(artifactID, attributeTypeID, objectID, moduleName, context,
+		valueType, valueInt, valueLong, valueDouble, valueString, valueBytes);
+}
+TskBlackboardArtifact TskImgDB::createArtifact(uint64_t artifactID, uint64_t objID, int artifactTypeID){
+    return TskBlackboardArtifact(artifactID, objID, artifactTypeID);
+}
+
+map<int, TskArtifactNames> TskImgDB::getAllArtifactTypes(){
+    return TskBlackboard::getAllArtifactTypes();
+}
+
+map<int, TskAttributeNames> TskImgDB::getAllAttributeTypes(){
+    return TskBlackboard::getAllAttributeTypes();
 }
\ No newline at end of file
diff --git a/framework/tsk/framework/services/TskImgDB.h b/framework/tsk/framework/services/TskImgDB.h
index 3f4f922efe59eda1989b72c9917a3ac718d51fed..b370afb37d64f0bebd6b547a99672fd3fbdce0d0 100755
--- a/framework/tsk/framework/services/TskImgDB.h
+++ b/framework/tsk/framework/services/TskImgDB.h
@@ -1,541 +1,541 @@
-/*
- *
- *  The Sleuth Kit
- *
- *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- *  reserved.
- *
- *  This software is distributed under the Common Public License 1.0
- */
-
-
-#ifndef _TSK_IMGDB_H
-#define _TSK_IMGDB_H
-
-#define IMGDB_SCHEMA_VERSION "1.5"
-
-#include <string> // to get std::wstring
-#include <list>
-#include <vector>
-#include "tsk/libtsk.h"
-#include "tsk/framework/framework_i.h"
-#include "tsk/framework/utilities/SectorRuns.h"
-#include "tsk/framework/utilities/UnallocRun.h"
-#include "TskBlackboardAttribute.h"
-#include "TskBlackboard.h"
-#include "TskBlackboardArtifact.h"
-
-using namespace std;
-
-class TskArtifactNames;
-class TskAttributeNames;
-
-typedef uint64_t artifact_t;
-
-
-/**
- * Contains data from a volume/partition record in the database.
- */
-struct TskVolumeInfoRecord
-{
-    uint64_t vol_id;
-    TSK_DADDR_T sect_start;
-    TSK_DADDR_T sect_len;
-    std::string description;
-    TSK_VS_PART_FLAG_ENUM flags;
-};
-
-/**
- * Contains data from a file system record in the database.
- */
-struct TskFsInfoRecord
-{
-    uint64_t fs_id;
-    TSK_OFF_T img_byte_offset;
-    uint64_t vol_id;
-    TSK_FS_TYPE_ENUM  fs_type;
-    unsigned int block_size;
-    TSK_DADDR_T block_count;
-    TSK_INUM_T root_inum;
-    TSK_INUM_T first_inum;
-    TSK_INUM_T last_inum;
-};
-
-/**
- * Contains data derived from joining carved file records from multiple tables in the image database.
- */
-struct TskCarvedFileInfo
-{
-    /**
-     * The unique ID of the carved file.
-     */
-    uint64_t fileID;
-
-    /**
-     * A hash of the carved file. The type of the hash is a parameter to the function
-     * that returns objects of this type and is not included in the struct to reduce object size,
-     * since this struct is used to satisfy potentially high-volume data requests.
-     * The hash member may be an empty string if the requested hash is unavailable.
-     */
-    std::string hash;
-
-    /**
-     * A "cfile" name for the carved file of the form: cfile_[vol_id]_[start_sector]_[file_id].[ext].
-     */
-    std::string cFileName;
-};
-
-struct TskFileTypeRecord
-{
-    std::string suffix; // file extension, normalized to lowercase. If no extension, it is an empty string.
-    std::string description; // descript of the file type.
-    uint64_t count; // count of files with this extension.
-};
-
-struct TskModuleStatus;
-struct TskModuleInfo;
-struct TskBlackboardRecord;
-struct TskUnallocImgStatusRecord;
-
-/**
- * Contains data about the mapping of data in the unallocated chunks back
- * to their original location in the disk image.
- */
-struct TskAllocUnallocMapRecord
-{
-    int vol_id;
-    int unalloc_img_id;
-    TSK_DADDR_T unalloc_img_sect_start;
-    TSK_DADDR_T sect_len;
-    TSK_DADDR_T orig_img_sect_start;
-};
-
-/**
- * contains data about the 'unused sectors', which did not have carvable data.
- */
-struct TskUnusedSectorsRecord
-{
-    uint64_t fileId;
-    TSK_DADDR_T sectStart;
-    TSK_DADDR_T sectLen;
-};
-
-struct TskFileRecord;
-
-/**
- * Interface for class that implments database storage for an image.
- * The database will be used to store information about the data
- * being analyzed. 
- * Can be registered with and retrieved from TskServices.
- */
-class TSK_FRAMEWORK_API TskImgDB
-{
-public:
-    /// File type classifications used by the framework
-    enum FILE_TYPES
-    {
-        IMGDB_FILES_TYPE_FS = 0,
-        IMGDB_FILES_TYPE_CARVED,
-        IMGDB_FILES_TYPE_DERIVED,
-        IMGDB_FILES_TYPE_UNUSED
-    };
-
-    /// File analysis statuses used by the framework
-    enum FILE_STATUS
-    {
-        IMGDB_FILES_STATUS_CREATED = 0,
-        IMGDB_FILES_STATUS_READY_FOR_ANALYSIS,
-        IMGDB_FILES_STATUS_ANALYSIS_IN_PROGRESS,
-        IMGDB_FILES_STATUS_ANALYSIS_COMPLETE,
-        IMGDB_FILES_STATUS_ANALYSIS_FAILED,
-        IMGDB_FILES_STATUS_ANALYSIS_SKIPPED
-    };
-
-    /**
-     * Files have a 'known' status that is updated
-     * with the use of hash databases. */
-    enum KNOWN_STATUS
-    {
-        IMGDB_FILES_KNOWN = 0,  ///< 'Known', but cannot differentiate between good or bad.  NSRL, for example, identifies known, but does not assign a good or bad status. 
-        IMGDB_FILES_KNOWN_GOOD,  ///< Known to be good / safely ignorable.
-        IMGDB_FILES_KNOWN_BAD,  ///< Known to be bad or notable
-        IMGDB_FILES_UNKNOWN     ///< Unknown files.  Perhaps because they haven't been analyzed yet or perhaps because they are user files that are not in a database.  All files start off in this state. 
-    };
-
-    /// Hash types supported by framework
-    enum HASH_TYPE 
-    {
-        MD5 = 0,    ///< 128-bit MD5
-        SHA1,       ///< 160-bit SHA1
-        SHA2_256,   ///< 256-bit SHA2
-        SHA2_512    ///< 512-bit SHA2
-    };
-
-    /// Data types that can be stored in blackboard
-    enum VALUE_TYPE
-    {
-        BB_VALUE_TYPE_BYTE = 0, ///< Single byte
-        BB_VALUE_TYPE_STRING,   ///< String 
-        BB_VALUE_TYPE_INT32,    ///< 32-bit integer
-        BB_VALUE_TYPE_INT64,    ///< 64-bit integer
-        BB_VALUE_TYPE_DOUBLE    ///< double floating point
-    };
-
-    /// Unallocated sectors file statuses used by the framework
-    enum UNALLOC_IMG_STATUS
-    {
-        IMGDB_UNALLOC_IMG_STATUS_CREATED = 0,
-        IMGDB_UNALLOC_IMG_STATUS_SCHEDULE_OK,
-        IMGDB_UNALLOC_IMG_STATUS_SCHEDULE_ERR,
-        IMGDB_UNALLOC_IMG_STATUS_CARVED_OK,
-        IMGDB_UNALLOC_IMG_STATUS_CARVED_ERR,
-        IMGDB_UNALLOC_IMG_STATUS_CARVED_NOT_NEEDED,
-    };
-
-    TskImgDB();
-    virtual ~ TskImgDB();
-
-    /**
-     * Opens the database and creates the needed tables.
-     * @returns 1 on error and 0 on success.
-     */
-    virtual int initialize() = 0;
-
-    /**
-     * Opens an existing database. Use initialize() to create
-     * a new one.
-     * @returns 1 on error and 0 on success.
-     */
-    virtual int open() = 0;
-
-    /**
-     * Close the database.
-     * @returns 0 on success and 1 on failure.
-     */
-    virtual int close() = 0;
-
-    virtual int begin() = 0;
-    virtual int commit() = 0;
-
-    virtual int addToolInfo(const char* name, const char* version) = 0;
-    virtual int addImageInfo(int type, int sectorSize) = 0;
-
-    /**
-     * Add the path to the image to the image database
-     *
-     * @param imgPath The image path.
-     */    
-    virtual int addImageName(char const * imgPath) = 0;
-    
-    virtual int addVolumeInfo(const TSK_VS_PART_INFO * vs_part) = 0;
-    virtual int addFsInfo(int volId, int fsId, const TSK_FS_INFO * fs_info) = 0;
-
-    /**
-     * Add data for a file system file to the image database.
-     * @param fileSystemID File system ID of the file system the file belongs to
-     * @param fileSystemFile TSK_FS_FILE object for the file
-     * @param fileName File name
-     * @param fileSystemAttrType File system attribute type (see #TSK_FS_ATTR_TYPE_ENUM)
-     * @param fileSystemAttrID File system attribute ID, used to index attributes for files with multiple attributes 
-     * @param [out] fileID File ID assigned to the file by the image database
-     * @param filePath Path to the file in the image, file name omitted
-     * @returns 0 on success or -1 on error.
-     */
-    virtual int addFsFileInfo(int fileSystemID, const TSK_FS_FILE *fileSystemFile, const char *fileName, int fileSystemAttrType, int fileSystemAttrID, uint64_t &fileID, const char *filePath) = 0;
-
-    virtual int addCarvedFileInfo(int vol_id, const char *name, uint64_t size, uint64_t *runStarts, uint64_t *runLengths, int numRuns, uint64_t & fileId) = 0;
-    virtual int addDerivedFileInfo(const std::string& name, const uint64_t parentId, 
-                                        const bool isDirectory, const uint64_t size, const std::string& details,
-                                        const int ctime, const int crtime, const int atime, const int mtime, uint64_t & fileId, std::string path) = 0;
-    virtual int addFsBlockInfo(int fsID, uint64_t a_mFileId, int count, uint64_t blk_addr, uint64_t len) = 0;
-
-    /**
-     * Add information about how the unallocated images were created so that we can 
-     later 
-     * map where data was recovered from. This is typically used by CarvePrep and the results are 
-     * used by CarveExtract via getUnallocRun(). 
-     * @param a_volID Volume ID that the data was extracted from.
-     * @param unallocImgID ID of the unallocated image that the sectors were copied into. 
-     * @param unallocImgStart Sector offset of where in the unallocated image that t
-     he run starts.
-     * @param length Number of sectors that are in the run.
-     * @param origImgStart Sector offset in the original image (relative to start of
-        image) where the run starts  
-     * @returns 1 on errror
-     */
-    virtual int addAllocUnallocMapInfo(int a_volID, int unallocImgID, uint64_t unallocImgStart, uint64_t length, uint64_t origImgStart) = 0;
-
-    virtual int getSessionID() const = 0;
-    virtual int getFileIds(char *a_fileName, uint64_t *a_outBuffer, int a_buffSize) const = 0;
-    virtual int getNumFiles() const = 0;
-    virtual int getMaxFileIdReadyForAnalysis(uint64_t a_lastFileId, uint64_t & maxFileId) const = 0;
-    virtual int getMinFileIdReadyForAnalysis(uint64_t & minFileId) const = 0;
-    virtual uint64_t getFileId(int fsId, uint64_t fs_file_id) const = 0;
-
-    /**
-     * Queries the blackboard for raw information about a specific file. 
-     * @param fileId ID of file to lookup
-     * @param fileRecord Location where data should be stored
-     * @returns -1 on error and 0 on success.
-     */
-    virtual int getFileRecord(const uint64_t fileId, TskFileRecord& fileRecord) const = 0;
-    virtual SectorRuns * getFileSectors(uint64_t fileId) const = 0;
-
-    /**
-     * Gets the base name of the image, i.e., the file name of the first image path stored in the database.
-     *
-     * @return The name of the image, possibly the empty string if no image paths have been stored.
-     */    
-    virtual std::string getImageBaseName() const = 0;
-
-    /**
-     * Gets a list of image paths.
-     *
-     * @returns A vector of image paths as std::strings. There may be multiple paths for a split image or the list may be empty if no image paths have been stored.
-     */
-    virtual std::vector<std::wstring> getImageNamesW() const = 0;
-    virtual std::vector<std::string>  getImageNames() const = 0;
-
-    virtual int getFileUniqueIdentifiers(uint64_t a_fileId, uint64_t &a_fsOffset, uint64_t &a_fsFileId, int &a_attrType, int &a_attrId) const = 0;
-    virtual int getNumVolumes() const = 0;
-    virtual int getImageInfo(int & type, int & sectorSize) const = 0;
-    virtual int getVolumeInfo(std::list<TskVolumeInfoRecord> & volumeInfoList) const = 0;
-    virtual int getFsInfo(std::list<TskFsInfoRecord> & fsInfoList) const = 0;
-    virtual int getFileInfoSummary(std::list<TskFileTypeRecord>& fileTypeInfoList) const = 0;
-    virtual int getFileInfoSummary(FILE_TYPES fileType, std::list<TskFileTypeRecord> & fileTypeInfoList) const = 0;
-    /**
-     * Return the known status of the file with the given id
-     * @param fileId id of the file to get the status of
-     * @returns KNOWN_STATUS or -1 on error
-     */
-    virtual KNOWN_STATUS getKnownStatus(const uint64_t fileId) const = 0;
-    
-
-    /**
-     * Given an offset in an unallocated image that was created for carving, 
-     * return information about where that data came from in the original image.
-     * This is used to map where a carved file is located in the original image.
-     * 
-     * @param a_unalloc_img_id ID of the unallocated image that you want data about
-     * @param a_file_offset Sector offset where file was found in the unallocated image
-     * @return NULL on error or a run descriptor.  
-     */
-    virtual UnallocRun * getUnallocRun(int a_unalloc_img_id, int a_file_offset) const = 0; 
-
-    /**
-     * Returns a list of the sectors that are not used by files and that
-     * are in unpartitioned space.  Typically this is used by CarvePrep.
-     */
-    virtual SectorRuns * getFreeSectors() const = 0;
-
-    /**
-     * update the status field in the database for a given file.
-     * @param a_file_id File to update.
-     * @param a_status Status flag to update to.
-     * @returns 1 on error.
-     */
-    virtual int updateFileStatus(uint64_t a_file_id, FILE_STATUS a_status) = 0;
-
-    /**
-     * update the known status field in the database for a given file.
-     * @param a_file_id File to update.
-     * @param a_status Status flag to update to.
-     * @returns 1 on error.
-     */
-    virtual int updateKnownStatus(uint64_t a_file_id, KNOWN_STATUS a_status) = 0;
-	virtual bool dbExist() const = 0;
-
-    // Get set of file ids that match the given condition (i.e. SQL where clause)
-    virtual std::vector<uint64_t> getFileIds(const std::string& condition) const = 0;
-    virtual const std::vector<TskFileRecord> getFileRecords(const std::string& condition) const = 0;
-
-    // Get the number of files that match the given condition
-    virtual int getFileCount(const std::string& condition) const = 0;
-
-    /**
-     * Returns the file ids and carved file names for a unique set of carved files.
-     * Uniqueness is based on the value of a particular hash type. Where duplicate
-     * hash values exist, the lowest file_id is chosen.
-     * NOTE: This function is deprecated and will be removed in the next major release,
-     * use the getUniqueCarvedFilesInfo() member function instead.
-     *
-     * @param hashType The type of hash value to use when determining uniqueness.
-     * @return A map of file ids to the corresponding carved file name.
-     */
-    virtual std::map<uint64_t, std::string> getUniqueCarvedFiles(HASH_TYPE hashType) const = 0;
-
-    /**
-     * Returns the file ids, content hashes and, carved file names for a unique set of carved files.
-     * Uniqueness is based on the value of a particular hash type. Where duplicate
-     * hash values exist, the lowest file_id is chosen.
-     *
-     * @param hashType The type of hash value to use when determining uniqueness.
-     * @return A map of file ids to the corresponding carved file name. Throws TskException.
-     */
-    virtual std::vector<TskCarvedFileInfo> getUniqueCarvedFilesInfo(HASH_TYPE hashType) const = 0;
-
-    virtual std::vector<uint64_t> getCarvedFileIds() const = 0;
-
-    virtual std::vector<uint64_t> getUniqueFileIds(HASH_TYPE hashType) const = 0;
-    virtual std::vector<uint64_t> getFileIds() const = 0;
-
-    virtual int setHash(const uint64_t a_file_id, const TskImgDB::HASH_TYPE hashType, const std::string& hash) const = 0;
-    virtual std::string getCfileName(const uint64_t a_file_id) const = 0;
-
-    virtual int addModule(const std::string& name, const std::string& description, int & moduleId) = 0;
-    virtual int setModuleStatus(uint64_t file_id, int module_id, int status) = 0;
-	virtual int getModuleInfo(std::vector<TskModuleInfo> & moduleInfoList) const = 0;
-    virtual int getModuleErrors(std::vector<TskModuleStatus> & moduleStatusList) const = 0;
-    virtual std::string getFileName(uint64_t file_id) const = 0;
-
-    /**
-     * Used when a new unallocated image file is created for carving. 
-     * @param unallocImgId [out] Stores the unique ID assigned to the image.
-     * @returns -1 on error, 0 on success.
-     */
-    virtual int addUnallocImg(int & unallocImgId) = 0;
-
-    virtual int setUnallocImgStatus(int unallocImgId, TskImgDB::UNALLOC_IMG_STATUS status) = 0;
-    virtual TskImgDB::UNALLOC_IMG_STATUS getUnallocImgStatus(int unallocImgId) const = 0;
-    virtual int getAllUnallocImgStatus(std::vector<TskUnallocImgStatusRecord> & unallocImgStatusList) const = 0;
-
-    virtual int addUnusedSectors(int unallocImgId, std::vector<TskUnusedSectorsRecord> & unusedSectorsList) = 0;
-    virtual int getUnusedSector(uint64_t fileId, TskUnusedSectorsRecord & unusedSectorsRecord) const = 0;
-
-	// Quote and escape a string, the returned quoted string can be used as string literal in SQL statement.
-	virtual std::string quote(const std::string str) const = 0;
-
-    friend class TskDBBlackboard;
-
-protected:
-    map<int64_t, map<TSK_INUM_T,int64_t> > m_parentDirIdCache; //maps a file system ID to a map, which maps a directory file system meta address to its parent's ID in the database
-
-	/**
-	 * Store meta_addr to object id mapping of the directory in a local cache map
-	 * @param fsObjId fs id of this directory
-	 * @param meta_addr meta_addr of this directory
-	 * @param objId object id of this directory from the objects table
-	 */
-    void storeParObjId(const int64_t & fsObjId, const TSK_INUM_T & meta_addr, const int64_t & objId);
-
-	/**
-	 * Find parent object id of TSK_FS_FILE. Use local cache map, if not found, fall back to SQL
-	 * @param fsObjId Id of file system that this file and parent should be in.
-	 * @param meta_addr File system address to find parent of
-	 * @returns parent obj id ( > 0), -1 on error
-	 */	
-	int64_t findParObjId(const int64_t & fsObjId, TSK_INUM_T meta_addr);    
-
-	// Blackboard methods.
-    virtual TskBlackboardArtifact createBlackboardArtifact(uint64_t file_id, int artifactTypeID) = 0;
-    virtual void addBlackboardAttribute(TskBlackboardAttribute attr) = 0;
-    
-    virtual string getArtifactTypeDisplayName(int artifactTypeID) = 0;
-    virtual int getArtifactTypeID(string artifactTypeString) = 0;
-    virtual string getArtifactTypeName(int artifactTypeID) = 0;
-    virtual vector<TskBlackboardArtifact> getMatchingArtifacts(string whereClause) = 0;
-
-    virtual void addArtifactType(int typeID, string artifactTypeName, string displayName) = 0;
-    virtual void addAttributeType(int typeID, string attributeTypeName, string displayName)= 0;
-
-    virtual string getAttributeTypeDisplayName(int attributeTypeID) = 0;
-    virtual int getAttributeTypeID(string attributeTypeString) = 0;
-    virtual string getAttributeTypeName(int attributeTypeID) = 0;
-    virtual vector<TskBlackboardAttribute> getMatchingAttributes(string whereClause) = 0;
-    TskBlackboardAttribute createAttribute(uint64_t artifactID, int attributeTypeID, uint64_t objectID, string moduleName, string context,
-		TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE valueType, int valueInt, uint64_t valueLong, double valueDouble, 
-		string valueString, vector<unsigned char> valueBytes);
-    TskBlackboardArtifact createArtifact(uint64_t artifactID, uint64_t objID, int artifactTypeID);
-    virtual map<int, TskArtifactNames> getAllArtifactTypes();
-    virtual map<int, TskAttributeNames> getAllAttributeTypes();
-    virtual vector<int> findAttributeTypes(int artifactTypeId) = 0;
-
-private:
-
-};
-
-/**
- * Contains data from a file record in the database.
- */
-struct TskFileRecord
-{
-    uint64_t fileId;
-    TskImgDB::FILE_TYPES typeId;
-    std::string name;
-    uint64_t parentFileId;
-    TSK_FS_NAME_TYPE_ENUM dirType;
-    TSK_FS_META_TYPE_ENUM metaType;
-    TSK_FS_NAME_FLAG_ENUM dirFlags;
-    TSK_FS_META_FLAG_ENUM metaFlags;
-    TSK_OFF_T size;
-    time_t ctime;
-    time_t crtime;
-    time_t atime;
-    time_t mtime;
-    TSK_FS_META_MODE_ENUM mode;
-    TSK_UID_T uid;
-    TSK_GID_T gid;
-    TskImgDB::FILE_STATUS status;
-    std::string md5;
-    std::string sha1;
-    std::string sha2_256;
-    std::string sha2_512;
-    std::string fullPath;
-};
-
-/**
- * Contains data about the module return status for a given file (as recorded in the database)
- */
-struct TskModuleStatus
-{
-    uint64_t file_id;
-    std::string module_name;
-    int status;
-};
-
-/**
- * Contains data about a module
- */
-struct TskModuleInfo
-{
-	int module_id;
-    std::string module_name;
-    std::string module_description;
-};
-
-/**
- * Contains data for a blackboard entry for a given file and artifact ID
- */
-struct TskBlackboardRecord
-{
-    artifact_t artifactId;
-    uint64_t fileId;    ///< File that this information pertains to.
-    string attribute; ///< Name / type of the data being stored. Standard attribute names are defined in TskBlackboard
-    string source;  ///< Name of the module that added this data
-    string context; ///< Optional string that provides more context about the data.  For example, it may have "Last Printed" if the entry is a DATETIME entry about when a document was last printed.
-    TskImgDB::VALUE_TYPE valueType; ///< Type of data being stored
-    int32_t valueInt32;
-    int64_t valueInt64;
-    string valueString;
-    double valueDouble;
-    vector<unsigned char> valueByte;
-
-    TskBlackboardRecord(artifact_t a_artifactId, uint64_t a_fileId, string a_attribute, string a_source, string a_context)
-        : artifactId(a_artifactId), fileId(a_fileId), attribute(a_attribute), source(a_source), context(a_context)
-    {
-    }
-    TskBlackboardRecord() {}
-};
-
-/**
- * Contains data about the current status for an unallocated chunk of data.
- */
-struct TskUnallocImgStatusRecord
-{
-    int unallocImgId;
-    TskImgDB::UNALLOC_IMG_STATUS status;
-};
-
-
-#endif
+/*
+ *
+ *  The Sleuth Kit
+ *
+ *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ *  reserved.
+ *
+ *  This software is distributed under the Common Public License 1.0
+ */
+
+
+#ifndef _TSK_IMGDB_H
+#define _TSK_IMGDB_H
+
+#define IMGDB_SCHEMA_VERSION "1.5"
+
+#include <string> // to get std::wstring
+#include <list>
+#include <vector>
+#include "tsk/libtsk.h"
+#include "tsk/framework/framework_i.h"
+#include "tsk/framework/utilities/SectorRuns.h"
+#include "tsk/framework/utilities/UnallocRun.h"
+#include "TskBlackboardAttribute.h"
+#include "TskBlackboard.h"
+#include "TskBlackboardArtifact.h"
+
+using namespace std;
+
+class TskArtifactNames;
+class TskAttributeNames;
+
+typedef uint64_t artifact_t;
+
+
+/**
+ * Contains data from a volume/partition record in the database.
+ */
+struct TskVolumeInfoRecord
+{
+    uint64_t vol_id;
+    TSK_DADDR_T sect_start;
+    TSK_DADDR_T sect_len;
+    std::string description;
+    TSK_VS_PART_FLAG_ENUM flags;
+};
+
+/**
+ * Contains data from a file system record in the database.
+ */
+struct TskFsInfoRecord
+{
+    uint64_t fs_id;
+    TSK_OFF_T img_byte_offset;
+    uint64_t vol_id;
+    TSK_FS_TYPE_ENUM  fs_type;
+    unsigned int block_size;
+    TSK_DADDR_T block_count;
+    TSK_INUM_T root_inum;
+    TSK_INUM_T first_inum;
+    TSK_INUM_T last_inum;
+};
+
+/**
+ * Contains data derived from joining carved file records from multiple tables in the image database.
+ */
+struct TskCarvedFileInfo
+{
+    /**
+     * The unique ID of the carved file.
+     */
+    uint64_t fileID;
+
+    /**
+     * A hash of the carved file. The type of the hash is a parameter to the function
+     * that returns objects of this type and is not included in the struct to reduce object size,
+     * since this struct is used to satisfy potentially high-volume data requests.
+     * The hash member may be an empty string if the requested hash is unavailable.
+     */
+    std::string hash;
+
+    /**
+     * A "cfile" name for the carved file of the form: cfile_[vol_id]_[start_sector]_[file_id].[ext].
+     */
+    std::string cFileName;
+};
+
+struct TskFileTypeRecord
+{
+    std::string suffix; // file extension, normalized to lowercase. If no extension, it is an empty string.
+    std::string description; // descript of the file type.
+    uint64_t count; // count of files with this extension.
+};
+
+struct TskModuleStatus;
+struct TskModuleInfo;
+struct TskBlackboardRecord;
+struct TskUnallocImgStatusRecord;
+
+/**
+ * Contains data about the mapping of data in the unallocated chunks back
+ * to their original location in the disk image.
+ */
+struct TskAllocUnallocMapRecord
+{
+    int vol_id;
+    int unalloc_img_id;
+    TSK_DADDR_T unalloc_img_sect_start;
+    TSK_DADDR_T sect_len;
+    TSK_DADDR_T orig_img_sect_start;
+};
+
+/**
+ * contains data about the 'unused sectors', which did not have carvable data.
+ */
+struct TskUnusedSectorsRecord
+{
+    uint64_t fileId;
+    TSK_DADDR_T sectStart;
+    TSK_DADDR_T sectLen;
+};
+
+struct TskFileRecord;
+
+/**
+ * Interface for class that implments database storage for an image.
+ * The database will be used to store information about the data
+ * being analyzed. 
+ * Can be registered with and retrieved from TskServices.
+ */
+class TSK_FRAMEWORK_API TskImgDB
+{
+public:
+    /// File type classifications used by the framework
+    enum FILE_TYPES
+    {
+        IMGDB_FILES_TYPE_FS = 0,
+        IMGDB_FILES_TYPE_CARVED,
+        IMGDB_FILES_TYPE_DERIVED,
+        IMGDB_FILES_TYPE_UNUSED
+    };
+
+    /// File analysis statuses used by the framework
+    enum FILE_STATUS
+    {
+        IMGDB_FILES_STATUS_CREATED = 0,
+        IMGDB_FILES_STATUS_READY_FOR_ANALYSIS,
+        IMGDB_FILES_STATUS_ANALYSIS_IN_PROGRESS,
+        IMGDB_FILES_STATUS_ANALYSIS_COMPLETE,
+        IMGDB_FILES_STATUS_ANALYSIS_FAILED,
+        IMGDB_FILES_STATUS_ANALYSIS_SKIPPED
+    };
+
+    /**
+     * Files have a 'known' status that is updated
+     * with the use of hash databases. */
+    enum KNOWN_STATUS
+    {
+        IMGDB_FILES_KNOWN = 0,  ///< 'Known', but cannot differentiate between good or bad.  NSRL, for example, identifies known, but does not assign a good or bad status. 
+        IMGDB_FILES_KNOWN_GOOD,  ///< Known to be good / safely ignorable.
+        IMGDB_FILES_KNOWN_BAD,  ///< Known to be bad or notable
+        IMGDB_FILES_UNKNOWN     ///< Unknown files.  Perhaps because they haven't been analyzed yet or perhaps because they are user files that are not in a database.  All files start off in this state. 
+    };
+
+    /// Hash types supported by framework
+    enum HASH_TYPE 
+    {
+        MD5 = 0,    ///< 128-bit MD5
+        SHA1,       ///< 160-bit SHA1
+        SHA2_256,   ///< 256-bit SHA2
+        SHA2_512    ///< 512-bit SHA2
+    };
+
+    /// Data types that can be stored in blackboard
+    enum VALUE_TYPE
+    {
+        BB_VALUE_TYPE_BYTE = 0, ///< Single byte
+        BB_VALUE_TYPE_STRING,   ///< String 
+        BB_VALUE_TYPE_INT32,    ///< 32-bit integer
+        BB_VALUE_TYPE_INT64,    ///< 64-bit integer
+        BB_VALUE_TYPE_DOUBLE    ///< double floating point
+    };
+
+    /// Unallocated sectors file statuses used by the framework
+    enum UNALLOC_IMG_STATUS
+    {
+        IMGDB_UNALLOC_IMG_STATUS_CREATED = 0,
+        IMGDB_UNALLOC_IMG_STATUS_SCHEDULE_OK,
+        IMGDB_UNALLOC_IMG_STATUS_SCHEDULE_ERR,
+        IMGDB_UNALLOC_IMG_STATUS_CARVED_OK,
+        IMGDB_UNALLOC_IMG_STATUS_CARVED_ERR,
+        IMGDB_UNALLOC_IMG_STATUS_CARVED_NOT_NEEDED,
+    };
+
+    TskImgDB();
+    virtual ~ TskImgDB();
+
+    /**
+     * Opens the database and creates the needed tables.
+     * @returns 1 on error and 0 on success.
+     */
+    virtual int initialize() = 0;
+
+    /**
+     * Opens an existing database. Use initialize() to create
+     * a new one.
+     * @returns 1 on error and 0 on success.
+     */
+    virtual int open() = 0;
+
+    /**
+     * Close the database.
+     * @returns 0 on success and 1 on failure.
+     */
+    virtual int close() = 0;
+
+    virtual int begin() = 0;
+    virtual int commit() = 0;
+
+    virtual int addToolInfo(const char* name, const char* version) = 0;
+    virtual int addImageInfo(int type, int sectorSize) = 0;
+
+    /**
+     * Add the path to the image to the image database
+     *
+     * @param imgPath The image path.
+     */    
+    virtual int addImageName(char const * imgPath) = 0;
+    
+    virtual int addVolumeInfo(const TSK_VS_PART_INFO * vs_part) = 0;
+    virtual int addFsInfo(int volId, int fsId, const TSK_FS_INFO * fs_info) = 0;
+
+    /**
+     * Add data for a file system file to the image database.
+     * @param fileSystemID File system ID of the file system the file belongs to
+     * @param fileSystemFile TSK_FS_FILE object for the file
+     * @param fileName File name
+     * @param fileSystemAttrType File system attribute type (see #TSK_FS_ATTR_TYPE_ENUM)
+     * @param fileSystemAttrID File system attribute ID, used to index attributes for files with multiple attributes 
+     * @param [out] fileID File ID assigned to the file by the image database
+     * @param filePath Path to the file in the image, file name omitted
+     * @returns 0 on success or -1 on error.
+     */
+    virtual int addFsFileInfo(int fileSystemID, const TSK_FS_FILE *fileSystemFile, const char *fileName, int fileSystemAttrType, int fileSystemAttrID, uint64_t &fileID, const char *filePath) = 0;
+
+    virtual int addCarvedFileInfo(int vol_id, const char *name, uint64_t size, uint64_t *runStarts, uint64_t *runLengths, int numRuns, uint64_t & fileId) = 0;
+    virtual int addDerivedFileInfo(const std::string& name, const uint64_t parentId, 
+                                        const bool isDirectory, const uint64_t size, const std::string& details,
+                                        const int ctime, const int crtime, const int atime, const int mtime, uint64_t & fileId, std::string path) = 0;
+    virtual int addFsBlockInfo(int fsID, uint64_t a_mFileId, int count, uint64_t blk_addr, uint64_t len) = 0;
+
+    /**
+     * Add information about how the unallocated images were created so that we can 
+     later 
+     * map where data was recovered from. This is typically used by CarvePrep and the results are 
+     * used by CarveExtract via getUnallocRun(). 
+     * @param a_volID Volume ID that the data was extracted from.
+     * @param unallocImgID ID of the unallocated image that the sectors were copied into. 
+     * @param unallocImgStart Sector offset of where in the unallocated image that t
+     he run starts.
+     * @param length Number of sectors that are in the run.
+     * @param origImgStart Sector offset in the original image (relative to start of
+        image) where the run starts  
+     * @returns 1 on errror
+     */
+    virtual int addAllocUnallocMapInfo(int a_volID, int unallocImgID, uint64_t unallocImgStart, uint64_t length, uint64_t origImgStart) = 0;
+
+    virtual int getSessionID() const = 0;
+    virtual int getFileIds(char *a_fileName, uint64_t *a_outBuffer, int a_buffSize) const = 0;
+    virtual int getNumFiles() const = 0;
+    virtual int getMaxFileIdReadyForAnalysis(uint64_t a_lastFileId, uint64_t & maxFileId) const = 0;
+    virtual int getMinFileIdReadyForAnalysis(uint64_t & minFileId) const = 0;
+    virtual uint64_t getFileId(int fsId, uint64_t fs_file_id) const = 0;
+
+    /**
+     * Queries the blackboard for raw information about a specific file. 
+     * @param fileId ID of file to lookup
+     * @param fileRecord Location where data should be stored
+     * @returns -1 on error and 0 on success.
+     */
+    virtual int getFileRecord(const uint64_t fileId, TskFileRecord& fileRecord) const = 0;
+    virtual SectorRuns * getFileSectors(uint64_t fileId) const = 0;
+
+    /**
+     * Gets the base name of the image, i.e., the file name of the first image path stored in the database.
+     *
+     * @return The name of the image, possibly the empty string if no image paths have been stored.
+     */    
+    virtual std::string getImageBaseName() const = 0;
+
+    /**
+     * Gets a list of image paths.
+     *
+     * @returns A vector of image paths as std::strings. There may be multiple paths for a split image or the list may be empty if no image paths have been stored.
+     */
+    virtual std::vector<std::wstring> getImageNamesW() const = 0;
+    virtual std::vector<std::string>  getImageNames() const = 0;
+
+    virtual int getFileUniqueIdentifiers(uint64_t a_fileId, uint64_t &a_fsOffset, uint64_t &a_fsFileId, int &a_attrType, int &a_attrId) const = 0;
+    virtual int getNumVolumes() const = 0;
+    virtual int getImageInfo(int & type, int & sectorSize) const = 0;
+    virtual int getVolumeInfo(std::list<TskVolumeInfoRecord> & volumeInfoList) const = 0;
+    virtual int getFsInfo(std::list<TskFsInfoRecord> & fsInfoList) const = 0;
+    virtual int getFileInfoSummary(std::list<TskFileTypeRecord>& fileTypeInfoList) const = 0;
+    virtual int getFileInfoSummary(FILE_TYPES fileType, std::list<TskFileTypeRecord> & fileTypeInfoList) const = 0;
+    /**
+     * Return the known status of the file with the given id
+     * @param fileId id of the file to get the status of
+     * @returns KNOWN_STATUS or -1 on error
+     */
+    virtual KNOWN_STATUS getKnownStatus(const uint64_t fileId) const = 0;
+    
+
+    /**
+     * Given an offset in an unallocated image that was created for carving, 
+     * return information about where that data came from in the original image.
+     * This is used to map where a carved file is located in the original image.
+     * 
+     * @param a_unalloc_img_id ID of the unallocated image that you want data about
+     * @param a_file_offset Sector offset where file was found in the unallocated image
+     * @return NULL on error or a run descriptor.  
+     */
+    virtual UnallocRun * getUnallocRun(int a_unalloc_img_id, int a_file_offset) const = 0; 
+
+    /**
+     * Returns a list of the sectors that are not used by files and that
+     * are in unpartitioned space.  Typically this is used by CarvePrep.
+     */
+    virtual SectorRuns * getFreeSectors() const = 0;
+
+    /**
+     * update the status field in the database for a given file.
+     * @param a_file_id File to update.
+     * @param a_status Status flag to update to.
+     * @returns 1 on error.
+     */
+    virtual int updateFileStatus(uint64_t a_file_id, FILE_STATUS a_status) = 0;
+
+    /**
+     * update the known status field in the database for a given file.
+     * @param a_file_id File to update.
+     * @param a_status Status flag to update to.
+     * @returns 1 on error.
+     */
+    virtual int updateKnownStatus(uint64_t a_file_id, KNOWN_STATUS a_status) = 0;
+	virtual bool dbExist() const = 0;
+
+    // Get set of file ids that match the given condition (i.e. SQL where clause)
+    virtual std::vector<uint64_t> getFileIds(const std::string& condition) const = 0;
+    virtual const std::vector<TskFileRecord> getFileRecords(const std::string& condition) const = 0;
+
+    // Get the number of files that match the given condition
+    virtual int getFileCount(const std::string& condition) const = 0;
+
+    /**
+     * Returns the file ids and carved file names for a unique set of carved files.
+     * Uniqueness is based on the value of a particular hash type. Where duplicate
+     * hash values exist, the lowest file_id is chosen.
+     * NOTE: This function is deprecated and will be removed in the next major release,
+     * use the getUniqueCarvedFilesInfo() member function instead.
+     *
+     * @param hashType The type of hash value to use when determining uniqueness.
+     * @return A map of file ids to the corresponding carved file name.
+     */
+    virtual std::map<uint64_t, std::string> getUniqueCarvedFiles(HASH_TYPE hashType) const = 0;
+
+    /**
+     * Returns the file ids, content hashes and, carved file names for a unique set of carved files.
+     * Uniqueness is based on the value of a particular hash type. Where duplicate
+     * hash values exist, the lowest file_id is chosen.
+     *
+     * @param hashType The type of hash value to use when determining uniqueness.
+     * @return A map of file ids to the corresponding carved file name. Throws TskException.
+     */
+    virtual std::vector<TskCarvedFileInfo> getUniqueCarvedFilesInfo(HASH_TYPE hashType) const = 0;
+
+    virtual std::vector<uint64_t> getCarvedFileIds() const = 0;
+
+    virtual std::vector<uint64_t> getUniqueFileIds(HASH_TYPE hashType) const = 0;
+    virtual std::vector<uint64_t> getFileIds() const = 0;
+
+    virtual int setHash(const uint64_t a_file_id, const TskImgDB::HASH_TYPE hashType, const std::string& hash) const = 0;
+    virtual std::string getCfileName(const uint64_t a_file_id) const = 0;
+
+    virtual int addModule(const std::string& name, const std::string& description, int & moduleId) = 0;
+    virtual int setModuleStatus(uint64_t file_id, int module_id, int status) = 0;
+	virtual int getModuleInfo(std::vector<TskModuleInfo> & moduleInfoList) const = 0;
+    virtual int getModuleErrors(std::vector<TskModuleStatus> & moduleStatusList) const = 0;
+    virtual std::string getFileName(uint64_t file_id) const = 0;
+
+    /**
+     * Used when a new unallocated image file is created for carving. 
+     * @param unallocImgId [out] Stores the unique ID assigned to the image.
+     * @returns -1 on error, 0 on success.
+     */
+    virtual int addUnallocImg(int & unallocImgId) = 0;
+
+    virtual int setUnallocImgStatus(int unallocImgId, TskImgDB::UNALLOC_IMG_STATUS status) = 0;
+    virtual TskImgDB::UNALLOC_IMG_STATUS getUnallocImgStatus(int unallocImgId) const = 0;
+    virtual int getAllUnallocImgStatus(std::vector<TskUnallocImgStatusRecord> & unallocImgStatusList) const = 0;
+
+    virtual int addUnusedSectors(int unallocImgId, std::vector<TskUnusedSectorsRecord> & unusedSectorsList) = 0;
+    virtual int getUnusedSector(uint64_t fileId, TskUnusedSectorsRecord & unusedSectorsRecord) const = 0;
+
+	// Quote and escape a string, the returned quoted string can be used as string literal in SQL statement.
+	virtual std::string quote(const std::string str) const = 0;
+
+    friend class TskDBBlackboard;
+
+protected:
+    map<int64_t, map<TSK_INUM_T,int64_t> > m_parentDirIdCache; //maps a file system ID to a map, which maps a directory file system meta address to its parent's ID in the database
+
+	/**
+	 * Store meta_addr to object id mapping of the directory in a local cache map
+	 * @param fsObjId fs id of this directory
+	 * @param meta_addr meta_addr of this directory
+	 * @param objId object id of this directory from the objects table
+	 */
+    void storeParObjId(const int64_t & fsObjId, const TSK_INUM_T & meta_addr, const int64_t & objId);
+
+	/**
+	 * Find parent object id of TSK_FS_FILE. Use local cache map, if not found, fall back to SQL
+	 * @param fsObjId Id of file system that this file and parent should be in.
+	 * @param meta_addr File system address to find parent of
+	 * @returns parent obj id ( > 0), -1 on error
+	 */	
+	int64_t findParObjId(const int64_t & fsObjId, TSK_INUM_T meta_addr);    
+
+	// Blackboard methods.
+    virtual TskBlackboardArtifact createBlackboardArtifact(uint64_t file_id, int artifactTypeID) = 0;
+    virtual void addBlackboardAttribute(TskBlackboardAttribute attr) = 0;
+    
+    virtual string getArtifactTypeDisplayName(int artifactTypeID) = 0;
+    virtual int getArtifactTypeID(string artifactTypeString) = 0;
+    virtual string getArtifactTypeName(int artifactTypeID) = 0;
+    virtual vector<TskBlackboardArtifact> getMatchingArtifacts(string whereClause) = 0;
+
+    virtual void addArtifactType(int typeID, string artifactTypeName, string displayName) = 0;
+    virtual void addAttributeType(int typeID, string attributeTypeName, string displayName)= 0;
+
+    virtual string getAttributeTypeDisplayName(int attributeTypeID) = 0;
+    virtual int getAttributeTypeID(string attributeTypeString) = 0;
+    virtual string getAttributeTypeName(int attributeTypeID) = 0;
+    virtual vector<TskBlackboardAttribute> getMatchingAttributes(string whereClause) = 0;
+    TskBlackboardAttribute createAttribute(uint64_t artifactID, int attributeTypeID, uint64_t objectID, string moduleName, string context,
+		TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE valueType, int valueInt, uint64_t valueLong, double valueDouble, 
+		string valueString, vector<unsigned char> valueBytes);
+    TskBlackboardArtifact createArtifact(uint64_t artifactID, uint64_t objID, int artifactTypeID);
+    virtual map<int, TskArtifactNames> getAllArtifactTypes();
+    virtual map<int, TskAttributeNames> getAllAttributeTypes();
+    virtual vector<int> findAttributeTypes(int artifactTypeId) = 0;
+
+private:
+
+};
+
+/**
+ * Contains data from a file record in the database.
+ */
+struct TskFileRecord
+{
+    uint64_t fileId;
+    TskImgDB::FILE_TYPES typeId;
+    std::string name;
+    uint64_t parentFileId;
+    TSK_FS_NAME_TYPE_ENUM dirType;
+    TSK_FS_META_TYPE_ENUM metaType;
+    TSK_FS_NAME_FLAG_ENUM dirFlags;
+    TSK_FS_META_FLAG_ENUM metaFlags;
+    TSK_OFF_T size;
+    time_t ctime;
+    time_t crtime;
+    time_t atime;
+    time_t mtime;
+    TSK_FS_META_MODE_ENUM mode;
+    TSK_UID_T uid;
+    TSK_GID_T gid;
+    TskImgDB::FILE_STATUS status;
+    std::string md5;
+    std::string sha1;
+    std::string sha2_256;
+    std::string sha2_512;
+    std::string fullPath;
+};
+
+/**
+ * Contains data about the module return status for a given file (as recorded in the database)
+ */
+struct TskModuleStatus
+{
+    uint64_t file_id;
+    std::string module_name;
+    int status;
+};
+
+/**
+ * Contains data about a module
+ */
+struct TskModuleInfo
+{
+	int module_id;
+    std::string module_name;
+    std::string module_description;
+};
+
+/**
+ * Contains data for a blackboard entry for a given file and artifact ID
+ */
+struct TskBlackboardRecord
+{
+    artifact_t artifactId;
+    uint64_t fileId;    ///< File that this information pertains to.
+    string attribute; ///< Name / type of the data being stored. Standard attribute names are defined in TskBlackboard
+    string source;  ///< Name of the module that added this data
+    string context; ///< Optional string that provides more context about the data.  For example, it may have "Last Printed" if the entry is a DATETIME entry about when a document was last printed.
+    TskImgDB::VALUE_TYPE valueType; ///< Type of data being stored
+    int32_t valueInt32;
+    int64_t valueInt64;
+    string valueString;
+    double valueDouble;
+    vector<unsigned char> valueByte;
+
+    TskBlackboardRecord(artifact_t a_artifactId, uint64_t a_fileId, string a_attribute, string a_source, string a_context)
+        : artifactId(a_artifactId), fileId(a_fileId), attribute(a_attribute), source(a_source), context(a_context)
+    {
+    }
+    TskBlackboardRecord() {}
+};
+
+/**
+ * Contains data about the current status for an unallocated chunk of data.
+ */
+struct TskUnallocImgStatusRecord
+{
+    int unallocImgId;
+    TskImgDB::UNALLOC_IMG_STATUS status;
+};
+
+
+#endif
diff --git a/framework/tsk/framework/services/TskImgDBSqlite.cpp b/framework/tsk/framework/services/TskImgDBSqlite.cpp
index 3529005d64cc521c1ca0c462671e873ba044eb73..79dd4ff0de1e6f869ba5dbd664d2bca96eee59ba 100755
--- a/framework/tsk/framework/services/TskImgDBSqlite.cpp
+++ b/framework/tsk/framework/services/TskImgDBSqlite.cpp
@@ -1,3784 +1,3784 @@
-/*
- *
- *  The Sleuth Kit
- *
- *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- *  reserved.
- *
- *  This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskImgDBSqlite.cpp
- * A SQLite based implementation of the framework data access layer.
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <cassert>
-#include <iostream>
-#include <sstream>
-#include <iomanip>
-#include <map>
-#include <assert.h>
-
-#include "Poco/UnicodeConverter.h"
-#include "Poco/Thread.h"
-
-#include "TskImgDBSqlite.h"
-#include "TskServices.h"
-#include "tsk/framework/utilities/TskException.h"
-#include "TskDBBlackboard.h"
-
-#include "Poco/UnicodeConverter.h"
-#include "Poco/NumberParser.h"
-#include "Poco/Path.h"
-
-#define IMGDB_CHUNK_SIZE 1024*1024*1 // what size chunks should the database use when growing and shrinking
-#define IMGDB_MAX_RETRY_COUNT 50    // how many times will we retry a SQL statement
-#define IMGDB_RETRY_WAIT 100   // how long (in milliseconds) are we willing to wait between retries
-
-/**
- * Set the database location.  Must call
- * initialize() before the object can be used.
- * @param a_outpath Directory to store the database in. This 
- * directory must already exist.
-*/
-TskImgDBSqlite::TskImgDBSqlite(const char * a_outpath)
-{
-    strncpy(m_outPath, a_outpath, 256);
-    // ensure that the path ends with a '/'
-    if (m_outPath[strlen(m_outPath)-1] != '/') {
-        int len1 = strlen(m_outPath);
-        m_outPath[len1] = '/';
-        m_outPath[len1+1] = '\0';
-    }
-    strncpy(m_dbFilePath, m_outPath, 256);
-    strncat(m_dbFilePath, "image.db", 256);
-    m_db = NULL;
-}
-
-TskImgDBSqlite::~TskImgDBSqlite()
-{
-    (void) close();
-}
-
-int TskImgDBSqlite::close()
-{
-    if (m_db) {
-        if (sqlite3_close(m_db) == SQLITE_OK)
-            m_db = NULL;
-        else
-            return 1;
-    }
-    return 0;
-}
-
-int TskImgDBSqlite::dropTables()
-{
-    if (!m_db)
-        return 1;
-
-    char * errmsg;
-    // Drop all the tables. No error checking just Teutonic Destruction...
-    sqlite3_exec(m_db, "DROP TABLE db_info",NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE image_info",NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE image_names",NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE vol_info",NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE fs_info",NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE fs_files",NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE fs_blocks",NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE files",NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE derived_files",NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE carved_files",NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE carved_sectors",NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE alloc_unalloc_map", NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE blackboard_artifacts", NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE blackboard_attributes", NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE blackboard_artifact_types", NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE blackboard_attribute_types", NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE file_hashes", NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE modules", NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE module_status", NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE unalloc_img_status", NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP TABLE unused_sectors", NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP INDEX attrs_artifact_id", NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP INDEX attrs_attribute_type", NULL, NULL, &errmsg);
-    sqlite3_exec(m_db, "DROP INDEX attrs_obj_id", NULL, NULL, &errmsg);
-
-    return 0;
-}
-
-int TskImgDBSqlite::initialize()
-{
-    std::wstringstream infoMessage;
-    char * errmsg;
-
-    // Open the database.
-    if (open() != 0)
-    {
-        // Error message will have been logged by open()
-        return 1;
-    }
-
-    // Clean up the whole database.
-    dropTables();
-
-    std::string stmt;
-
-    sqlite3_stmt *statement;
-
-    // set page size -- 4k is much faster on Windows than the default
-    executeStatement("PRAGMA page_size = 4096;", statement, "TskImgDBSqlite::initialize");
-    sqlite3_finalize(statement);
-
-    // we don't have a mechanism to recover from a crash anyway
-    executeStatement("PRAGMA synchronous = 0;", statement, "TskImgDBSqlite::initialize");
-    sqlite3_finalize(statement);
-
-    // ----- DB_INFO
-    stmt = "CREATE TABLE db_info (name TEXT PRIMARY KEY, version TEXT)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating db_info table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- IMAGE_INFO
-    stmt = "CREATE TABLE image_info (type INTEGER, ssize INTEGER)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating image_info table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- IMAGE_NAMES
-    stmt = "CREATE TABLE image_names (seq INTEGER PRIMARY KEY, name TEXT)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating image_names table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- VOL_INFO
-    stmt = "CREATE TABLE vol_info (vol_id INTEGER PRIMARY KEY, sect_start INTEGER NOT NULL, "
-        "sect_len INTEGER NOT NULL, description TEXT, flags INTEGER)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating vol_info table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- FS_INFO
-    stmt = "CREATE TABLE fs_info (fs_id INTEGER PRIMARY KEY, img_byte_offset INTEGER, "
-        "vol_id INTEGER NOT NULL, fs_type INTEGER, block_size INTEGER, "
-        "block_count INTEGER, root_inum INTEGER, first_inum INTEGER, last_inum INTEGER)";
-    if (sqlite3_exec(m_db, stmt.c_str() , NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating fs_info table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- FILES
-    stmt = "CREATE TABLE files (file_id INTEGER PRIMARY KEY, type_id INTEGER, "
-        "name TEXT, par_file_id INTEGER, dir_type INTEGER, meta_type INTEGER, "
-        "dir_flags INTEGER, meta_flags INTEGER, size INTEGER, ctime INTEGER, "
-        "crtime INTEGER, atime INTEGER, mtime INTEGER, mode INTEGER, uid INTEGER, "
-        "gid INTEGER, status INTEGER, full_path TEXT)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating files table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- FS_FILES
-    stmt = "CREATE TABLE fs_files (file_id INTEGER PRIMARY KEY, fs_id INTEGER, "
-        "fs_file_id INTEGER, attr_type INTEGER, attr_id INTEGER)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK)
-    {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating fs_files table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- FS_BLOCKS
-    stmt = "CREATE TABLE fs_blocks (fs_id INTEGER NOT NULL, file_id INTEGER NOT NULL, seq INTEGER, "
-        "blk_start INTEGER NOT NULL, blk_len INTEGER NOT NULL)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK)
-    {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating fs_blocks table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- CARVED_FILES
-    stmt = "CREATE TABLE carved_files (file_id INTEGER PRIMARY KEY, vol_id INTEGER)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK)
-    {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating carved_files table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- SECTOR_LIST
-    stmt = "CREATE TABLE carved_sectors ("
-        "file_id INTEGER, seq INTEGER, sect_start INTEGER, sect_len INTEGER)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK)
-    {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating carved_sectors table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- DERIVED_FILES
-    stmt = "CREATE TABLE derived_files (file_id INTEGER PRIMARY KEY, derivation_details TEXT)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK)
-    {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating derived_files table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- ALLOC_UNALLOC_MAP
-    stmt = "CREATE TABLE alloc_unalloc_map (vol_id INTEGER, unalloc_img_id INTEGER, "
-        "unalloc_img_sect_start INTEGER, sect_len INTEGER, orig_img_sect_start INTEGER)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK)
-    {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating alloc_unalloc_map table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- FILE_HASHES
-    stmt = "CREATE TABLE file_hashes (file_id INTEGER PRIMARY KEY, md5 TEXT, sha1 TEXT, sha2_256 TEXT, sha2_512 TEXT, known INTEGER)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating file_hashes table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- MODULES
-    stmt = "CREATE TABLE modules (module_id INTEGER PRIMARY KEY, name TEXT UNIQUE NOT NULL, description TEXT)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating module table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- MODULE_STATUS
-    stmt = "CREATE TABLE module_status (file_id INTEGER, module_id INTEGER, status INTEGER, PRIMARY KEY (file_id, module_id))";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating module_status table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- UNALLOC_IMG_STATUS
-    stmt = "CREATE TABLE unalloc_img_status (unalloc_img_id INTEGER PRIMARY KEY, status INTEGER)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating unalloc_img_status table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- UNUSED_SECTORS
-    stmt = "CREATE TABLE unused_sectors (file_id INTEGER PRIMARY KEY, sect_start INTEGER, sect_len INTEGER, vol_id INTEGER)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating unused_sectors table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- BLACKBOARD_ARTIFACTS
-    stmt = "CREATE TABLE blackboard_artifacts (artifact_id INTEGER PRIMARY KEY, obj_id INTEGER NOT NULL, artifact_type_id INTEGER)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating blackboard_artifacts table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- BLACKBOARD_ATTRIBUTES
-    stmt = "CREATE TABLE blackboard_attributes (artifact_id INTEGER NOT NULL, source TEXT, context TEXT, attribute_type_id INTEGER NOT NULL, value_type INTEGER NOT NULL, "
-        "value_byte BLOB, value_text TEXT, value_int32 INTEGER, value_int64 INTEGER, value_double NUMERIC(20, 10), obj_id INTEGER NOT NULL)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating blackboard_attributes table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- BLACKBOARD_ARTIFACT_TYPES
-    stmt = "CREATE TABLE blackboard_artifact_types (artifact_type_id INTEGER PRIMARY KEY, type_name TEXT, display_name TEXT)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating blackboard_artifact_types table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- BLACKBOARD_ATTRIBUTE_TYPES
-    stmt = "CREATE TABLE blackboard_attribute_types (attribute_type_id INTEGER PRIMARY KEY, type_name TEXT, display_name TEXT)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating blackboard_attribute_types table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    // ----- CREATE INDEXES
-    stmt = "CREATE INDEX attrs_artifact_id ON blackboard_attributes(artifact_id)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating attrs_artifact_id index: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    stmt = "CREATE INDEX attrs_attribute_type ON blackboard_attributes(attribute_type_id)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating attrs_attribute_type index: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    stmt = "CREATE INDEX attrs_obj_id ON blackboard_attributes(obj_id)";
-    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::initialize - Error creating attrs_obj_id index: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    map<int, TskArtifactNames> artTypes = TskImgDB::getAllArtifactTypes();
-    for (map<int, TskArtifactNames>::iterator it = artTypes.begin(); it != artTypes.end(); it++) {
-        addArtifactType(it->first, it->second.typeName, it->second.displayName);
-    }
-    map<int, TskAttributeNames> attrTypes = TskImgDB::getAllAttributeTypes();
-    for (map<int, TskAttributeNames>::iterator it = attrTypes.begin(); it != attrTypes.end(); it++) {
-        addAttributeType(it->first, it->second.typeName, it->second.displayName);
-    }
-
-    addToolInfo("DBSchema", IMGDB_SCHEMA_VERSION);
-    LOGINFO(L"ImgDB Created.");
-
-    return 0;
-}
-
-/*
- * If the database file exists this method will open it otherwise
- * it will create a new database. 
- * This method also configures the chunk size and the busy handler
- * for the newly opened database.
-*/
-int TskImgDBSqlite::open()
-{
-    std::wstringstream infoMessage;
-
-#if 0
-    if (sqlite3_open16(m_dbFilePath, &m_db)) 
-#else
-    if (sqlite3_open(m_dbFilePath, &m_db)) 
-#endif
-    {
-        infoMessage << L"TskImgDBSqlite::open - Can't create new database: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-
-        sqlite3_close(m_db);
-        return 1;
-    }
-
-    // The chunk size setting defines by how much the database will grow
-    // or shrink. The primary motivation behind this setting is to reduce
-    // database file fragmentation and potential performance improvements.
-    // We, however, are using this setting as a workaround for database
-    // corruption issues we have been experiencing when the database is
-    // updated by multiple concurrent processes.
-    // Database corruption was occuring when SQLite determined that the 
-    // number of database pages in the database was greater than a value
-    // that it had previously cached. 
-    // This workaround is a crude mechanism to get around that situation.
-    int chunkSize = IMGDB_CHUNK_SIZE;
-
-    if (sqlite3_file_control(m_db, NULL, SQLITE_FCNTL_CHUNK_SIZE, &chunkSize) != SQLITE_OK)
-    {
-        infoMessage << L"TskImgDBSqlite::open - Failed to set chunk size: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-
-        sqlite3_close(m_db);
-        return 1;
-    }
-
-    // Register a busy handler that will retry statements in situations
-    // where the database is locked by another process.
-    if (sqlite3_busy_handler(m_db, TskImgDBSqlite::busyHandler, m_db) != SQLITE_OK)
-    {
-        infoMessage <<  L"TskImgDBSqlite::open - Failed to set busy handler: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-
-        sqlite3_close(m_db);
-        return 1;
-    }
-
-    LOGINFO(L"ImgDB Opened.");
-
-    return 0;
-}
-
-int TskImgDBSqlite::addToolInfo(const char* name, const char* version)
-{
-    char *errmsg;
-    char stmt[1024];
-
-    if (!m_db)
-        return 1;
-
-    sqlite3_snprintf(1024, stmt, 
-        "INSERT INTO db_info (name, version) VALUES ('%q', '%q');",
-        name, version);
-    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK)
-    {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::addToolInfo - Error adding data to db_info table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    return 0;
-}
-
-int TskImgDBSqlite::addImageInfo(int type, int size)
-{
-    char *errmsg;
-    std::stringstream stmt;
-
-    if (!m_db)
-        return 1;
-
-    stmt << "INSERT INTO image_info (type, ssize) VALUES ("<< type << ", " << size << ");";
-    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) != SQLITE_OK)
-    {
-        std::wstringstream infoMessage;
-        infoMessage <<  L"TskImgDBSqlite::addImageInfo - Error adding data to image_info table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    return 0;
-}
-
-int TskImgDBSqlite::addImageName(char const *imgPath)
-{
-    char *errmsg;
-    char stmt[1024];
-
-    if (!m_db)
-        return 1;
-
-    sqlite3_snprintf(1024, stmt,
-        "INSERT INTO image_names (seq, name) VALUES (NULL, '%q')",
-        imgPath);
-    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK)
-    {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::addImageName - Error adding data to image_names table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-    return 0;
-}
-
-/*
- * Adds the sector addresses of the volumes into the db.
- */
-int TskImgDBSqlite::addVolumeInfo(const TSK_VS_PART_INFO * vs_part)
-{
-    char stmt[1024];
-    char * errmsg;
-
-    if (!m_db)
-        return 1;
-
-    sqlite3_snprintf(1024, stmt,
-        "INSERT INTO vol_info (vol_id, sect_start, sect_len, description, flags) VALUES (%d,%"
-        PRIuOFF ",%" PRIuOFF ",'%q',%d)", (int)vs_part->addr,
-        vs_part->start, vs_part->len, vs_part->desc, vs_part->flags);
-
-    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::addVolumeInfo - Error adding data to vol_info table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    return 0;
-}
-
-int TskImgDBSqlite::addFsInfo(int volId, int fsId, const TSK_FS_INFO * fs_info)
-{
-    std::stringstream stmt;
-    char * errmsg;
-
-    if (!m_db)
-        return 1;
-
-    stmt <<
-        "INSERT INTO fs_info (fs_id, img_byte_offset, vol_id, fs_type, block_size, "
-        "block_count, root_inum, first_inum, last_inum) VALUES (" << 
-        fsId << ", " << fs_info->offset << ", " <<  volId << ", " << 
-        (int)fs_info->ftype << ", " <<  fs_info->block_size << ", " <<  fs_info->block_count << ", " << 
-        fs_info->root_inum << ", " <<  fs_info->first_inum << ", " <<  fs_info->last_inum << ")";
-
-    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::addFsInfo - Error adding data to fs_info table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    return 0;
-}
-
-
-/**
- * Given a file system and fs_file_id, return the file_id.
- */
-uint64_t TskImgDBSqlite::getFileId(int a_fsId, uint64_t a_fsFileId) const
-{
-    if (!m_db)
-        return 0;
-
-    sqlite3_stmt * statement;
-    std::stringstream stmt;
-    uint64_t fileId = 0;
-    stmt << "SELECT file_id FROM fs_files WHERE fs_id=" << a_fsId << " and fs_file_id=" << a_fsFileId << ";";
-
-    /********** FIND the unallocated volumes *************/
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) {
-            fileId = (uint64_t)sqlite3_column_int64(statement, 0);
-        }
-        sqlite3_finalize(statement);
-    }
-    else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getFileId - Error querying fs_files table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-
-        return 0;
-    }
-    return fileId;
-}
-
-
-int TskImgDBSqlite::getFileRecord(const uint64_t fileId, TskFileRecord& fileRecord) const
-{
-    if (!m_db)
-        return -1;
-
-    int ret = 0;
-
-    sqlite3_stmt * statement;
-    std::stringstream stmt;
-
-    stmt << "SELECT f.file_id, f.type_id, f.name, f.par_file_id, f.dir_type, f.meta_type, f.dir_flags, "
-        << "f.meta_flags, f.size, f.ctime, f.crtime, f.atime, f.mtime, f.mode, f.uid, f.gid, f.status, f.full_path, "
-        << "fh.md5, fh.sha1, fh.sha2_256, fh.sha2_512 "
-        << "FROM files f LEFT OUTER JOIN file_hashes fh ON f.file_id = fh.file_id WHERE f.file_id=" << fileId;
-
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) 
-    {
-        int result = sqlite3_step(statement);
-
-        if (result == SQLITE_ROW) 
-        {
-            fileRecord.fileId       = sqlite3_column_int64(statement, 0);
-            fileRecord.typeId = (TskImgDB::FILE_TYPES)sqlite3_column_int(statement, 1);
-            fileRecord.name         = (char *)sqlite3_column_text(statement, 2);
-            fileRecord.parentFileId = sqlite3_column_int64(statement, 3);
-            fileRecord.dirType = (TSK_FS_NAME_TYPE_ENUM) sqlite3_column_int(statement, 4);
-            fileRecord.metaType = (TSK_FS_META_TYPE_ENUM) sqlite3_column_int(statement, 5);
-            fileRecord.dirFlags = (TSK_FS_NAME_FLAG_ENUM) sqlite3_column_int(statement, 6);
-            fileRecord.metaFlags = (TSK_FS_META_FLAG_ENUM) sqlite3_column_int(statement, 7);
-            fileRecord.size         = sqlite3_column_int64(statement, 8);
-            fileRecord.ctime        = sqlite3_column_int(statement, 9);
-            fileRecord.crtime       = sqlite3_column_int(statement, 10);
-            fileRecord.atime        = sqlite3_column_int(statement, 11);
-            fileRecord.mtime        = sqlite3_column_int(statement, 12);
-            fileRecord.mode = (TSK_FS_META_MODE_ENUM)sqlite3_column_int(statement, 13);
-            fileRecord.uid          = sqlite3_column_int(statement, 14);
-            fileRecord.gid          = sqlite3_column_int(statement, 15);
-            fileRecord.status = (TskImgDB::FILE_STATUS) sqlite3_column_int(statement, 16);
-            fileRecord.fullPath     = (char *)sqlite3_column_text(statement, 17);
-
-            if (sqlite3_column_type(statement, 18) == SQLITE_TEXT)
-                fileRecord.md5      = (char *)sqlite3_column_text(statement, 18);
-            if (sqlite3_column_type(statement, 19) == SQLITE_TEXT)
-                fileRecord.sha1     = (char *)sqlite3_column_text(statement, 19);
-            if (sqlite3_column_type(statement, 20) == SQLITE_TEXT)
-                fileRecord.sha2_256 = (char *)sqlite3_column_text(statement, 20);
-            if (sqlite3_column_type(statement, 21) == SQLITE_TEXT)
-                fileRecord.sha2_512 = (char *)sqlite3_column_text(statement, 21);
-        }
-        else 
-        {
-            std::wstringstream msg;
-            msg << L"TskImgDBSqlite::getFileRecord - Error querying files table for file id: " << fileId;
-            LOGERROR(msg.str());
-
-            ret = -1;
-        }
-        sqlite3_finalize(statement);
-    }
-    else 
-    {
-        std::wstringstream msg;
-        msg << L"TskImgDBSqlite::getFileRecord - Error querying files table for file id: " << fileId;
-        LOGERROR(msg.str());
-
-        ret = -1;
-    }
-
-    return ret;
-}
-
-int TskImgDBSqlite::addFsFileInfo(int fileSystemID, const TSK_FS_FILE *fileSystemFile, const char *fileName, int fileSystemAttrType, int fileSystemAttrID, uint64_t &fileID, const char *filePath)
-{
-    const std::string msgPrefix = "TskImgDBSqlite::addFsFileInfo : ";
-    fileID = 0;
-
-    if (!m_db)
-    {
-        return -1;
-    }
-
-    // Construct the full path of the file within the image.
-    std::string fullpath(filePath);
-    fullpath.append(fileName);
-
-    // Replace all single quotes in the file name with double single quotes to comply with SQLLite syntax.
-    std::string fileNameAsString(fileName);
-    size_t found = fileNameAsString.find("'");
-    if (found != std::string::npos) //Replace it and replace all its subsequent occurrences.
-    {
-        fileNameAsString.replace(found,1,"''");
-
-        while ((found=fileNameAsString.find("'", found+2)) != std::string::npos)// found+2 because we want to move past the newly inserted single quote.
-        {
-            fileNameAsString.replace(found,1,"''");
-        }
-    }
-
-    // Now remove all the control characters from the file name.
-    for (int codePoint=1; codePoint < 32; codePoint++)
-    {
-        char codePointAsHex[10];
-        codePointAsHex[0] = codePoint;
-        codePointAsHex[1] = '\0';
-        std::string stringToRemove(codePointAsHex);
-
-        found = fileNameAsString.find(stringToRemove);
-        if (found != std::string::npos) //Replace it and replace all its subsequent occurrences.
-        {
-            fileNameAsString.replace(found,1,"");
-
-            while ((found=fileNameAsString.find(stringToRemove,found+1)) != std::string::npos)// found+1 because the control characters are just 1 character.
-            {
-                fileNameAsString.replace(found,1,"");
-            }
-        }
-    }
-
-    fileName = fileNameAsString.c_str();
-
-    // Get the file size.
-    TSK_OFF_T size = 0; 
-    const TSK_FS_ATTR *fileSystemAttribute = tsk_fs_file_attr_get_id(const_cast<TSK_FS_FILE*>(fileSystemFile), fileSystemAttrID); 
-    if (fileSystemAttribute)
-    {
-        size = fileSystemAttribute->size;
-    }
-
-    // Get the file metadata, if it's available.
-    int mtime = 0;
-    int crtime = 0;
-    int ctime = 0;
-    int atime = 0;
-    int meta_type = 0;
-    int meta_flags = 0;
-    int meta_mode = 0;
-    int gid = 0;
-    int uid = 0;
-    if (fileSystemFile->meta) 
-    {
-        mtime = static_cast<int>(fileSystemFile->meta->mtime);
-        atime = static_cast<int>(fileSystemFile->meta->atime);
-        ctime = static_cast<int>(fileSystemFile->meta->ctime);
-        crtime = static_cast<int>(fileSystemFile->meta->crtime);
-        meta_type = fileSystemFile->meta->type;
-        meta_flags = fileSystemFile->meta->flags;
-        meta_mode = fileSystemFile->meta->mode;
-        gid = fileSystemFile->meta->gid;
-        uid = fileSystemFile->meta->uid;
-    }
-
-    // Insert into the files table.
-    char stmt[4096];
-    sqlite3_snprintf(4096, stmt,
-        "INSERT INTO files (file_id, type_id, status, name, par_file_id, dir_type, meta_type, "
-        "dir_flags, meta_flags, size, crtime, ctime, atime, mtime, mode, gid, uid, full_path) VALUES (NULL, %d, %d,"
-        "'%q',%llu,%d,%d,%d,%d,%" PRIuOFF",%d,%d,%d,%d,%d,%d,%d,'%q')", 
-        IMGDB_FILES_TYPE_FS, IMGDB_FILES_STATUS_READY_FOR_ANALYSIS, fileName, 
-        findParObjId(fileSystemID, fileSystemFile->name->par_addr), 
-        fileSystemFile->name->type, meta_type,
-        fileSystemFile->name->flags, meta_flags, size, crtime, ctime, atime,
-        mtime, meta_mode, gid, uid, fullpath.c_str());
-    char *errmsg;
-    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) 
-    {
-        std::ostringstream msg;
-        msg << msgPrefix << "Error adding data to files table: " << errmsg;
-        LOGERROR(msg.str());
-
-        sqlite3_free(errmsg);
-        return -1;
-    }
-
-    // Get the file_id from the last insert.
-    fileID = sqlite3_last_insert_rowid(m_db);
-
-    // Insert into the fs_files table.
-    sqlite3_snprintf(4096, stmt,
-        "INSERT INTO fs_files (file_id, fs_id, fs_file_id, attr_type, attr_id) VALUES (%llu,%d,%"
-        PRIuINUM ",%d,%d)", fileID, fileSystemID, fileSystemFile->name->meta_addr, fileSystemAttrType, fileSystemAttrID);
-
-    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) 
-    {
-        std::ostringstream msg;
-        msg << msgPrefix << "Error adding data to fs_files table: " << errmsg;
-        LOGERROR(msg.str());
-
-        sqlite3_free(errmsg);
-        return -1;
-    }
-
-    //if dir, update parent id cache
-    if (meta_type == TSK_FS_META_TYPE_DIR) {
-        storeParObjId(fileSystemID, fileSystemFile->name->meta_addr, fileID);
-    }
-
-    return 0;
-}
-
-/**
- * Add block info to the database.  This table stores the run information for each file so that we
- * can map which blocks are used by what files.
- * @param a_fsId Id that the file is located in
- * @param a_fileId ID of the file
- * @param a_sequence The sequence number of this run in the file (0 for the first run, 1 for the second run, etc.)
- * @param a_blk_addr Block address (the address that the file system uses -- NOT the physical sector addr)
- * @param a_len The number of blocks in the run
- * @returns 1 on error
- */
-int TskImgDBSqlite::addFsBlockInfo(int a_fsId, uint64_t a_fileId, int a_sequence, uint64_t a_blk_addr, uint64_t a_len)
-{
-    std::stringstream stmt;
-    char * errmsg;
-
-    if (!m_db)
-        return 1;
-
-    stmt <<
-        "INSERT INTO fs_blocks (fs_id, file_id, seq, blk_start, blk_len) VALUES (" <<
-        a_fsId << "," << a_fileId << "," << a_sequence << "," << a_blk_addr << "," <<  a_len << ")";
-
-    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::addFsBlockInfo - Error adding data to fs_blocks table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    return 0;
-}
-
-int TskImgDBSqlite::addAllocUnallocMapInfo(int a_volID, int unallocImgID, 
-                                           uint64_t unallocImgStart, uint64_t length, uint64_t origImgStart)
-{
-    std::stringstream stmt;
-    char * errmsg;
-
-    if (!m_db)
-        return 1;
-
-    stmt <<
-        "INSERT INTO alloc_unalloc_map (vol_id, unalloc_img_id, unalloc_img_sect_start, "
-        "sect_len, orig_img_sect_start) VALUES (" <<
-        a_volID << "," << unallocImgID << "," << 
-        unallocImgStart << "," << length << "," <<  origImgStart << ")";
-
-    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::addAllocUnallocMapInfo - Error adding data to alloc_unalloc_map table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    return 0;
-}
-
-/**
- * Get information on all of the free sectors in an image.
- *
- * @return Info on unallocated runs (or NULL on error).  Caller must free this when done.
- */
-SectorRuns * TskImgDBSqlite::getFreeSectors() const
-{
-    std::stringstream infoMessage;
-    std::stringstream msg;
-
-    if (!m_db)
-        return NULL;
-
-    SectorRuns * sr = new SectorRuns();
-
-    LOGINFO("TskImgDBSqlite::getFreeSectors - Identifying Unallocated Sectors");
-
-    sqlite3_stmt * statement;
-
-    /********** FIND the unallocated volumes *************/
-    if (sqlite3_prepare_v2(m_db,
-        "SELECT vol_id, sect_start, sect_len, flags FROM vol_info;",
-        -1, &statement, 0) == SQLITE_OK) {
-            while(true) {
-                int result = sqlite3_step(statement);
-                if (result == SQLITE_ROW) {
-                    int flags = sqlite3_column_int(statement, 3);
-
-                    int vol_id = sqlite3_column_int(statement,0);
-                    int64_t start = sqlite3_column_int64(statement,1);
-                    int64_t len = sqlite3_column_int64(statement,2);
-
-                    // add the unallocated volumes
-                    if (flags & TSK_VS_PART_FLAG_UNALLOC) {
-                        sr->addRun(start, len, vol_id);
-                    }
-                    // add the allocated volumes that don't have a known file system
-                    else {
-                        std::stringstream stmt;
-                        sqlite3_stmt *statement2;
-                        stmt << "SELECT fs_id FROM fs_info WHERE vol_id = " << vol_id << ";";
-                        if (sqlite3_prepare_v2(m_db, stmt.str().c_str() , -1, &statement2, 0) == SQLITE_OK) {
-                            if (sqlite3_step(statement2) != SQLITE_ROW) {
-                                sr->addRun(start, len, vol_id);
-                            }
-                            sqlite3_finalize(statement2);
-                        }
-                    }
-                }
-                else {
-                    break;  
-                }
-            }
-            sqlite3_finalize(statement);
-    }
-    else {
-        infoMessage << "TskImgDBSqlite::getFreeSectors - Error querying vol_info table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-
-        return NULL;
-    }
-
-    /*************** Find the unallocated blocks in each file system *************/
-    // @@@ Need to make more dynamic
-    int blk_size[32];
-    memset(blk_size, 0, sizeof(blk_size));
-    uint64_t blk_count[32];
-    memset(blk_count, 0, sizeof(blk_count));
-    int vol_id[32];
-    uint64_t img_offset[32];
-
-    // get basic info on each file system
-    if (sqlite3_prepare_v2(m_db, "SELECT fs_id, vol_id, img_byte_offset, block_size, block_count FROM fs_info;", -1, &statement, 0) == SQLITE_OK) {
-        LOGINFO("TskImgDBSqlite::getFreeSectors - START LOOP: Find the unallocated blocks in each file system.");
-        while(true)
-        {
-            int result = sqlite3_step(statement);
-            if (result == SQLITE_ROW)
-            {
-                int fs_id = sqlite3_column_int(statement, 0);
-                if (fs_id > 32)
-                {
-                    infoMessage.str("");
-                    infoMessage << "TskImgDBSqlite::getFreeSectors - fs_id in fs_info is bigger than 32: " << fs_id;
-                    LOGERROR(infoMessage.str());
-                    break;
-                }
-                vol_id[fs_id] = sqlite3_column_int(statement, 1);
-                img_offset[fs_id] = sqlite3_column_int64(statement, 2) / 512;
-                blk_size[fs_id] = sqlite3_column_int(statement, 3) / 512;
-                blk_count[fs_id] = sqlite3_column_int64(statement, 4);
-                // Debug Info
-                msg.str("");
-                msg << "TskImgDBSqlite::getFreeSectors - fs_id=" << fs_id << " vol_id=" << vol_id[fs_id] << " img_offset=" << img_offset[fs_id] << " blk_size=" << blk_size[fs_id] <<
-                    " blk_count=" << blk_count[fs_id];
-                LOGINFO(msg.str().c_str());
-            }
-            else
-            {
-                break;
-            }
-        }
-        sqlite3_finalize(statement);
-        LOGINFO("TskImgDBSqlite::getFreeSectors - DONE: Find the unallocated blocks in each file system.");
-    }
-    else
-    {
-        infoMessage.str("");
-        infoMessage << "TskImgDBSqlite::getFreeSectors - Error querying fs_info table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-
-        return NULL;
-    }
-
-    // see what blocks have been used and add them to a list
-    TSK_LIST *seen[32];
-    memset(seen, 0, 32*sizeof(TSK_LIST *));
-
-    if (sqlite3_prepare_v2(m_db, "SELECT fs_id, file_id, blk_start, blk_len FROM fs_blocks;", -1, &statement, 0) == SQLITE_OK) {
-        LOGINFO("TskImgDBSqlite::getFreeSectors - START LOOP: see what blocks have been used and add them to a list.");
-        while(true) {
-            int result = sqlite3_step(statement);
-            if (result == SQLITE_ROW) {
-                int fs_id = sqlite3_column_int(statement, 0);
-                if (fs_id > 32) {
-                    infoMessage.str("");
-                    infoMessage << "TskImgDBSqlite::getFreeSectors - fs_id in fs_info is bigger than 32: " << fs_id;
-                    LOGERROR(infoMessage.str());
-                    continue;
-                }
-                uint64_t file_id = (uint64_t)sqlite3_column_int64(statement, 1);
-                int64_t addr = sqlite3_column_int64(statement, 2);
-                int64_t len = sqlite3_column_int64(statement, 3);
-
-                // We only want to consider the runs for files that we allocated.
-                std::stringstream stmt;
-                stmt << "SELECT meta_flags from files WHERE file_id=" << file_id;
-
-                sqlite3_stmt * statement2;
-                if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement2, 0) != SQLITE_OK) {
-                    infoMessage.str("");
-                    infoMessage << "TskImgDBSqlite::getFreeSectors - error finding flags for file " << file_id;
-                    LOGERROR(infoMessage.str());
-                    continue;
-                }
-                sqlite3_step(statement2);
-                int flags = sqlite3_column_int(statement2, 0);
-                sqlite3_finalize(statement2);
-
-                if (flags & TSK_FS_META_FLAG_UNALLOC)
-                    continue;
-
-                // @@@ We can probably find a more effecient storage method than this...
-                int error = 0;
-                for (int64_t i = 0; i < len; i++) {
-                    if (tsk_list_add(&seen[fs_id], addr+i)) {
-                        infoMessage.str("");
-                        infoMessage << "TskImgDBSqlite::getFreeSectors - Error adding seen block address to list";
-                        LOGERROR(infoMessage.str());
-
-                        error = 1;
-                        break;
-                    }
-                }
-                if (error)
-                    break;
-            }
-            else {
-                break;
-            }
-        }
-        sqlite3_finalize(statement);
-        LOGINFO("TskImgDBSqlite::getFreeSectors - DONE: see what blocks have been used and add them to a list.");
-    }
-    else {
-        infoMessage.str("");
-        infoMessage << "TskImgDBSqlite::getFreeSectors - Error querying fs_block table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-
-        return NULL;
-    }
-
-    // cycle through each file system to find the unused blocks
-    LOGINFO("TskImgDBSqlite::getFreeSectors - START LOOP: cycle through each file system to find the unused blocks.");
-    for (int f = 0; f < 32; f++) {
-        if (blk_count[f] == 0)
-            continue;
-
-        uint64_t st = 0;
-        int len = 0;
-        // we previously adjusted blk_size and img_offset to be in sectors
-
-        msg.str("");
-        msg << "blk_count[" << f << "]=" << blk_count[f];
-        LOGINFO(msg.str().c_str());
-
-        for (uint64_t a = 0; a < blk_count[f]; a++) {
-            // see if this addr was used in a file
-            if (tsk_list_find(seen[f], a) == 0) {
-                // we already have a run being defined
-                if (len) {
-                    // same run, so add on to it
-                    if (st + len == a) {
-                        len++;
-                    }
-                    // different run, make a new one
-                    else {
-                        sr->addRun(img_offset[f]+st*blk_size[f], len*blk_size[f], vol_id[f]);
-                        st = a;
-                        len = 1;
-                    }
-                }
-                // start a new run
-                else {
-                    st = a;
-                    len = 1;
-                }
-            }
-        }
-        // add the final run
-        if (len) {
-            sr->addRun(img_offset[f]+st*blk_size[f], len*blk_size[f], vol_id[f]);
-        }
-        tsk_list_free(seen[f]);
-        seen[f] = NULL;
-    }
-    LOGINFO("TskImgDBSqlite::getFreeSectors - DONE: cycle through each file system to find the unused blocks.");
-
-    return sr;
-}
-
-std::string TskImgDBSqlite::getImageBaseName() const
-{
-    // There may be multiple file paths if the image is a split image. Oreder by sequence number to extract the file name from the first path.
-    sqlite3_stmt *statement;
-    executeStatement("SELECT name FROM image_names ORDER BY seq;", statement, "TskImgDBSqlite::getImageBaseName");
-
-    int result = sqlite3_step(statement);
-    if (result == SQLITE_ROW) 
-    {
-        Poco::Path imagePath(reinterpret_cast<const char*>(sqlite3_column_text(statement, 0))); // Reinterpret from const unsigned char*
-        return imagePath.getFileName();
-    }
-    else
-    {
-        return "";
-    }
-}
-
-std::vector<std::wstring> TskImgDBSqlite::getImageNamesW() const
-{
-    std::vector<std::wstring> imgList;
-
-    if (!m_db)
-        return imgList;
-
-    sqlite3_stmt *statement;
-
-    if (sqlite3_prepare_v2(m_db, "SELECT name FROM image_names ORDER BY seq;",
-        -1, &statement, 0) == SQLITE_OK) 
-    {
-        while(true)
-        {
-            int result = sqlite3_step(statement);
-            if (result == SQLITE_ROW) {
-                imgList.push_back((wchar_t *)sqlite3_column_text16(statement, 0));
-            }
-            else {
-                break;
-            }
-        }
-
-        sqlite3_finalize(statement);
-    }
-
-    return imgList;
-}
-
-
-std::vector<std::string> TskImgDBSqlite::getImageNames() const
-{
-    std::vector<std::string> imgList;
-
-    if (!m_db)
-        return imgList;
-
-    sqlite3_stmt *statement;
-
-    if (sqlite3_prepare_v2(m_db, "SELECT name FROM image_names ORDER BY seq;",
-        -1, &statement, 0) == SQLITE_OK) 
-    {
-        while(true)
-        {
-            int result = sqlite3_step(statement);
-            if (result == SQLITE_ROW) {
-                imgList.push_back((char *)sqlite3_column_text(statement, 0));
-            }
-            else {
-                break;
-            }
-        }
-
-        sqlite3_finalize(statement);
-    }
-
-    return imgList;
-}
-
-
-
-
-/**
- * @param a_fileId  File id to get information about
- * @param a_fsOffset Byte offset of start of file system that the file is located in
- * @param a_fsFileId File system-specific id of the file
- * @param a_attrType Type of attribute for this file
- * @param a_attrId The ID of the attribute for this file
- * @returns -1 on error
- */
-int TskImgDBSqlite::getFileUniqueIdentifiers(uint64_t a_fileId, uint64_t &a_fsOffset, uint64_t &a_fsFileId, int &a_attrType, int &a_attrId) const
-{
-    if (!m_db)
-        return -1;
-
-    sqlite3_stmt * statement;
-    std::stringstream stmt;
-
-    stmt <<
-        "SELECT fs_file_id, attr_type, attr_id, fs_info.img_byte_offset "
-        "FROM fs_files, fs_info WHERE file_id=" << a_fileId << " AND fs_info.fs_id = fs_files.fs_id;";
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) {
-            a_fsFileId = sqlite3_column_int64(statement, 0);
-            a_attrType = sqlite3_column_int(statement, 1);
-            a_attrId = sqlite3_column_int(statement, 2);
-            a_fsOffset = sqlite3_column_int64(statement, 3);
-        }
-        else {
-            return -1;
-        }
-        sqlite3_finalize(statement);
-    }
-    else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getFileUniqueIdentifiers - Error querying fs_files table : " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        return -1;
-    }
-
-    return 0;
-}
-
-/**
- * Get number of volumes in image.
- * @return Number of volumes in image or -1 on error
- */
-int TskImgDBSqlite::getNumVolumes() const
-{
-    if (!m_db)
-        return 0;
-
-    int count = 0;
-    sqlite3_stmt * statement;
-
-    /********** Get the number of volumes *************/
-    if (sqlite3_prepare_v2(m_db, "SELECT count(*) from vol_info;", -1, &statement, 0) == SQLITE_OK) 
-    {
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) 
-        {
-            count = (int)sqlite3_column_int(statement, 0);
-        }
-        sqlite3_finalize(statement);
-    }
-    else 
-    {
-        std::wstringstream msg;
-        msg << L"TskImgDBSqlite::getNumVolumes - Error querying vol_info table: " << sqlite3_errmsg(m_db);
-        LOGERROR(msg.str());
-
-        return -1;
-    }
-
-    return count;
-}
-/**
- * Get number of files in image.
- * @return Number of files in image or -1 on error
- */
-int TskImgDBSqlite::getNumFiles() const
-{
-    if (!m_db)
-        return 0;
-
-    std::string condition("");
-    return getFileCount(condition);
-}
-
-/**
- * @returns the session_id or -1 on error.
- */
-int TskImgDBSqlite::getSessionID() const
-{
-    if (!m_db)
-        return 0;
-
-    sqlite3_stmt * statement;
-    std::string stmt("SELECT version from db_info WHERE name=\"SID\";");
-    int sessionId = -1;
-
-    /********** FIND the unallocated volumes *************/
-    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) {
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) {
-            sessionId = (int)sqlite3_column_int(statement, 0);
-        }
-        sqlite3_finalize(statement);
-    }
-    else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getSessionID - Error querying db_info table for Session ID: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-
-        return -1;
-    }
-    return sessionId;
-}
-
-int TskImgDBSqlite::begin()
-{
-    char *errmsg;
-    if (!m_db)
-        return 1;
-
-    if (sqlite3_exec(m_db, "BEGIN", NULL, NULL, &errmsg) != SQLITE_OK) {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::begin - BEGIN Error: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-    return 0;
-}
-
-int TskImgDBSqlite::commit()
-{
-    char *errmsg;
-    if (!m_db)
-        return 1;
-
-    if (sqlite3_exec(m_db, "COMMIT", NULL, NULL, &errmsg) != SQLITE_OK) {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::commit - COMMIT Error: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return 1;
-    }
-    return 0;
-}
-
-UnallocRun * TskImgDBSqlite::getUnallocRun(int a_unalloc_img_id, int a_file_offset) const
-{
-    std::stringstream stmt;
-    char * errmsg;
-    if (!m_db)
-        return NULL;
-
-    stmt << "SELECT vol_id, unalloc_img_sect_start, sect_len, orig_img_sect_start FROM "
-        "alloc_unalloc_map WHERE unalloc_img_id = " << a_unalloc_img_id << 
-        " AND unalloc_img_sect_start <= " << a_file_offset << " ORDER BY unalloc_img_sect_start DESC";
-
-    char **result;
-    int nrow, ncol;
-    if (sqlite3_get_table(m_db, stmt.str().c_str(), &result, &nrow, &ncol, &errmsg) != SQLITE_OK)
-    {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getUnallocRun - Error fetching data from alloc_unalloc_map table: " << errmsg;
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-
-        return new UnallocRun(-1, -1, -1, -1, -1);
-    }
-    else
-    {
-        int vol_id;
-        int unalloc_img_sect_start;
-        int sect_len;
-        int orig_img_sect_start;
-        // skip the headers
-        // @@@ DO SOME ERROR CHECKING HERE to make sure that results has data...
-        sscanf(result[4], "%d", &vol_id);
-        sscanf(result[5], "%d", &unalloc_img_sect_start);
-        sscanf(result[6], "%d", &sect_len);
-        sscanf(result[7], "%d", &orig_img_sect_start);
-        sqlite3_free_table(result);
-        return new UnallocRun(vol_id, a_unalloc_img_id, unalloc_img_sect_start, sect_len, orig_img_sect_start);
-    }
-}
-
-/**
- * Adds information about a carved file into the database.  This includes the sector layout
- * information. 
- * 
- * @param vol_id Volume in which the carved file was found in
- * @param name Name of the file 
- * @param size Number of bytes in file
- * @param runStarts Array with starting sector (relative to start of image) for each run in file.
- * @param runLengths Array with number of sectors in each run 
- * @param numRuns Number of entries in previous arrays
- * @param fileId Carved file Id (output)
- * @returns 0 on success or -1 on error.
- */
-int TskImgDBSqlite::addCarvedFileInfo(int vol_id, const char *name, uint64_t size, 
-                                      uint64_t *runStarts, uint64_t *runLengths, int numRuns, uint64_t & fileId)
-{
-    char stmt[1024];
-    char * errmsg;
-    std::wstringstream infoMessage;
-
-    if (!m_db)
-        return -1;
-
-    // insert into files table
-    sqlite3_snprintf(1024, stmt,
-        "INSERT INTO files (file_id, type_id, name, par_file_id, dir_type, meta_type,"
-        "dir_flags, meta_flags, size, ctime, crtime, atime, mtime, mode, uid, gid, status, full_path) "
-        "VALUES (NULL, %d, '%q', NULL, %d, %d, %d, %d, %llu, 0, 0, 0, 0, NULL, NULL, NULL, %d, '%q')",
-        IMGDB_FILES_TYPE_CARVED, name, (int)TSK_FS_NAME_TYPE_REG, (int)TSK_FS_META_TYPE_REG,
-        (int)TSK_FS_NAME_FLAG_UNALLOC, (int)TSK_FS_META_FLAG_UNALLOC, size, IMGDB_FILES_STATUS_CREATED, name);
-    // MAY-118 NOTE: addCarvedFileInfo insert entry into files table, but actual file on disk has not been created yet.
-    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::addCarvedFileInfo - Error adding data to file table for carved file: " << errmsg << L" " << stmt;
-
-        LOGERROR(infoMessage.str());
-
-        sqlite3_free(errmsg);
-        return -1;
-    }
-
-    // get the assigned file_id
-    fileId = (uint64_t)sqlite3_last_insert_rowid(m_db);
-
-    // insert into the carved_files_table
-    sqlite3_snprintf(1024, stmt, "INSERT INTO carved_files (file_id, vol_id)"
-        "VALUES (%llu, %d)", fileId, vol_id);
-    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) {
-        infoMessage << L"TskImgDBSqlite::addCarvedFileInfo - Error adding data to carved_files table: " << errmsg;
-
-        LOGERROR(infoMessage.str());
-        sqlite3_free(errmsg);
-        return -1;
-    }
-
-    // insert into carved_sectors table
-    for (int i = 0; i < numRuns; i++)
-    {
-        sqlite3_snprintf(1023, stmt,
-            "INSERT INTO carved_sectors (file_id, seq, sect_start, sect_len) "
-            "VALUES (%llu, %d, %llu, %llu)",
-            fileId, i, runStarts[i], runLengths[i]);
-        if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) {
-            infoMessage << L"TskImgDBSqlite::addCarvedFileInfo - Error adding data to carved_sectors table: " << errmsg;
-
-            LOGERROR(infoMessage.str());
-
-            sqlite3_free(errmsg);
-            return -1;
-        }
-    }
-
-    return 0;
-}
-
-/**
- * Adds information about derived files to the database.  Derived files typically come
- * from archives and may be compressed.
- * 
- * @param name The name of the file.
- * @param parentId The id of the file from which this file is derived.
- * @param isDirectory True if entry is for a directory verus a file
- * @param size The size of the file.
- * @param details This is a string that may contain extra details related
- * to the particular type of mechanism that was used to derive this file, 
- * e.g. files derived from zip archives may have extra information about the
- * compressed size of the file.
- * @param ctime Time file system file entry was changed.
- * @param crtime Time the file was created.
- * @param atime Last access time.
- * @param mtime Last modified time.
- * @param fileId Reference to location where file_id for file can be assigned
- * @param path Path of file
- *
- * @returns 0 on success or -1 on error.
- */
-int TskImgDBSqlite::addDerivedFileInfo(const std::string& name, const uint64_t parentId, 
-                                       const bool isDirectory, const uint64_t size,
-                                       const std::string& details,
-                                       const int ctime, const int crtime, const int atime, const int mtime,
-                                       uint64_t &fileId, std::string path)
-{
-    if (!m_db)
-        return -1;
-
-    char stmt[1024];
-    char * errmsg;
-
-    TSK_FS_NAME_TYPE_ENUM dirType = isDirectory ? TSK_FS_NAME_TYPE_DIR : TSK_FS_NAME_TYPE_REG;
-    TSK_FS_META_TYPE_ENUM metaType = isDirectory ? TSK_FS_META_TYPE_DIR : TSK_FS_META_TYPE_REG;
-
-    // insert into files table
-    sqlite3_snprintf(1024, stmt,
-        "INSERT INTO files (file_id, type_id, name, par_file_id, dir_type, meta_type, size, ctime, crtime, atime, mtime, status, full_path) "
-        "VALUES (NULL, %d, '%q', %llu, %d, %d, %llu, %d, %d, %d, %d, %d, '%q')",
-        IMGDB_FILES_TYPE_DERIVED, name.c_str(), parentId, dirType, metaType, size, ctime, crtime, atime, mtime, IMGDB_FILES_STATUS_CREATED, path.c_str());
-
-    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) 
-    {
-        std::wstringstream msg;
-        msg << L"TskImgDBSqlite::addDerivedFileInfo - Error adding data to file table for derived file: "
-            << errmsg << L" " << stmt;
-
-        LOGERROR(msg.str());
-
-        sqlite3_free(errmsg);
-        return -1;
-    }
-
-    // get the assigned file_id
-    fileId = sqlite3_last_insert_rowid(m_db);
-
-    // insert into the derived_files table
-    sqlite3_snprintf(1024, stmt, "INSERT INTO derived_files (file_id, derivation_details) "
-        "VALUES (%llu, '%q')", fileId, details.c_str());
-    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) 
-    {
-        std::wstringstream msg;
-        msg << L"TskImgDBSqlite::addDerivedFileInfo - Error adding data to derived_files table : "
-            << errmsg;
-
-        LOGERROR(msg.str());
-        sqlite3_free(errmsg);
-        return -1;
-    }
-
-    return 0;
-}
-
-/**
- * Fills outBuffer with file IDs that match the name fileName.
- * Returns the number of file IDs written into outBuffer or -1 on error.
- */
-int TskImgDBSqlite::getFileIds(char *a_fileName, uint64_t *a_outBuffer, int a_buffSize) const
-{
-
-    if (!m_db)
-        return -1;
-
-    int outIdx = 0;
-
-    sqlite3_stmt * statement;
-    std::stringstream stmt;
-    stmt << "SELECT file_id FROM files WHERE name LIKE '" << a_fileName << "';";
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        while(sqlite3_step(statement) == SQLITE_ROW) {
-            a_outBuffer[outIdx++] = (uint64_t)sqlite3_column_int64(statement, 0);
-        }
-        sqlite3_finalize(statement);
-    }
-    else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getFileIds - Error querying files table : " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        return -1;
-    }
-
-    return outIdx;
-}
-
-/*
- * Return the minimum file id with status = READY_FOR_ANALYSIS in minFileId.
- * Return 0 on success, -1 if failed.
- */
-int TskImgDBSqlite::getMinFileIdReadyForAnalysis(uint64_t & minFileId) const
-{
-    if (!m_db)
-        return -1;
-
-    minFileId = 0;
-
-    sqlite3_stmt * statement;
-    std::stringstream stmt;
-    stmt << "SELECT min(file_id) FROM files WHERE status = " << 
-        TskImgDB::IMGDB_FILES_STATUS_READY_FOR_ANALYSIS << ";";
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) {
-            minFileId = (uint64_t)sqlite3_column_int64(statement, 0);
-        }
-        sqlite3_finalize(statement);
-    }
-    else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getMinFileIdReadyForAnalysis - Error querying files table : " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        return -1;
-    }
-    return 0;
-}
-
-/**
- * Given the last file ID ready for analysis, find the largest file ID ready of analysis (in maxFileId)
- * Returns 0 on success or -1 on error.
- */
-int TskImgDBSqlite::getMaxFileIdReadyForAnalysis(uint64_t a_lastFileId, uint64_t & maxFileId) const
-{
-    if (!m_db)
-        return -1;
-
-    maxFileId = 0;
-
-    sqlite3_stmt * statement;
-    std::stringstream stmt;
-    stmt << "SELECT max(file_id) FROM files WHERE status = " <<  
-        TskImgDB::IMGDB_FILES_STATUS_READY_FOR_ANALYSIS << 
-        " AND file_id >= " <<  a_lastFileId << ";";
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) {
-            maxFileId = (uint64_t)sqlite3_column_int64(statement, 0);
-        }
-        sqlite3_finalize(statement);
-    }
-    else {
-        std::wstringstream infoMessage;
-        infoMessage <<  L"TskImgDBSqlite::getMaxFileIdReadyForAnalysis - Error querying files table : " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        return -1;
-    }
-    return 0;
-}
-
-SectorRuns * TskImgDBSqlite::getFileSectors(uint64_t a_fileId) const
-{
-    if (!m_db)
-        return NULL;
-
-    SectorRuns * sr = new SectorRuns();
-
-    sqlite3_stmt * statement;
-    std::stringstream stmt;
-    int srCount = 0;
-    stmt <<
-        "SELECT fs_blocks.blk_start, fs_blocks.blk_len, "
-        "fs_info.block_size, fs_info.img_byte_offset, fs_info.vol_id "
-        "FROM files "
-        "JOIN fs_files ON files.file_id = fs_files.file_id "
-        "JOIN fs_blocks ON files.file_id = fs_blocks.file_id "
-        "JOIN fs_info ON fs_blocks.fs_id = fs_info.fs_id "
-        "WHERE files.file_id = " << a_fileId << " "
-        "ORDER BY fs_blocks.seq;";
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        while(sqlite3_step(statement) == SQLITE_ROW) {
-            uint64_t blkStart = (uint64_t)sqlite3_column_int64(statement, 0);
-            uint64_t blkLength = (uint64_t)sqlite3_column_int64(statement, 1);
-            int blkSize = sqlite3_column_int(statement, 2);
-            uint64_t imgByteOffset = (uint64_t)sqlite3_column_int64(statement, 3);
-            int volId = sqlite3_column_int(statement, 4);
-
-            uint64_t start = (imgByteOffset + blkStart * blkSize) / 512;
-            uint64_t len = (blkLength * blkSize) / 512;
-
-            sr->addRun(start, len, volId);
-            srCount++;
-        }
-
-        sqlite3_finalize(statement);
-    }
-    else {
-        std::wstringstream infoMessage;
-        infoMessage <<
-            L"TskImgDBSqlite::getFileSectors - "
-            L"Error finding block data for file_id=" << a_fileId << ": " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        return NULL;
-    }
-
-    if (srCount < 1) {
-        delete sr;
-        sr = NULL;
-    }
-    return sr;
-}
-
-/**
- * This callback mechanism is registered with SQLite and is 
- * called whenever an operation would result in SQLITE_BUSY.
- * Each time this method is called we will back off IMGDB_RETRY_WAIT
- * x count milliseconds. A non zero return value tells SQLite to 
- * retry the statement and a zero return value tells SQLite to 
- * stop retrying, in which case it will return SQLITE_BUSY or
- * SQLITE_IOERR_BLOCKED to the caller.
- *
- * @param pDB - a pointer to the sqlite3 structure
- * @param count - the number of times this handler has been
- * called for this blocking event.
- */
-int TskImgDBSqlite::busyHandler(void * pDB, int count)
-{
-    if (count < IMGDB_MAX_RETRY_COUNT)
-    {
-        Poco::Thread::sleep(IMGDB_RETRY_WAIT * count);
-        return 1;
-    }
-
-    return 0;
-}
-
-
-
-int TskImgDBSqlite::updateFileStatus(uint64_t a_file_id, FILE_STATUS a_status)
-{
-    if (!m_db)
-        return 1;
-
-    std::stringstream stmt;
-    char * errmsg;
-
-    stmt << "UPDATE files SET status = " << a_status << " WHERE file_id = " << a_file_id << ";";
-    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::updateFileStatus - Error UPDATE file status: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        return 1;
-    }
-
-    return 0;
-}
-
-
-int TskImgDBSqlite::updateKnownStatus(uint64_t a_file_id, KNOWN_STATUS a_status)
-{
-    if (!m_db)
-        return 1;
-
-    std::stringstream stmt;
-    char * errmsg;
-
-    stmt << "UPDATE file_hashes SET known = " << a_status << " WHERE file_id = " << a_file_id << ";";
-    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::updateFileStatus - Error UPDATE file status: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        return 1;
-    }
-
-    return 0;
-}
-
-bool TskImgDBSqlite::dbExist() const
-{
-    if (m_db)
-        return true;
-    else
-        return false;
-}
-
-void TskImgDBSqlite::getCarvedFileInfo(const std::string& stmt, std::map<uint64_t, std::string>& results) const
-{
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) 
-    {
-        while (sqlite3_step(statement) == SQLITE_ROW) 
-        {
-            uint64_t fileId = (uint64_t)sqlite3_column_int64(statement, 0);
-            std::string fileName = (char*)sqlite3_column_text(statement, 1);
-            std::string cfileName = (char*)sqlite3_column_text(statement, 2);
-
-            // Grab the extension and append it to the cfile name
-            std::string::size_type pos = fileName.rfind('.');
-            if (pos != std::string::npos)
-                cfileName.append(fileName.substr(pos));
-
-            results[fileId] = cfileName;
-        }
-        sqlite3_finalize(statement);
-    } else 
-    {
-        std::wstringstream msg;
-        msg << L"TskImgDBSqlite::getCarvedFileInfo - Error retrieving carved file details: "
-            << sqlite3_errmsg(m_db);
-        LOGERROR(msg.str());
-    }
-}
-
-std::map<uint64_t, std::string> TskImgDBSqlite::getUniqueCarvedFiles(HASH_TYPE hashType) const
-{
-    if (!m_db)
-        throw TskException("No database.");
-
-    std::map<uint64_t, std::string> results;
-
-    string hash;
-    switch (hashType) {
-    case TskImgDB::MD5:
-        hash = "md5";
-        break;
-    case TskImgDB::SHA1:
-        hash = "sha1";
-        break;
-    case TskImgDB::SHA2_256:
-        hash = "sha2_256";
-        break;
-    case TskImgDB::SHA2_512:
-        hash = "sha2_512";
-        break;
-    default:
-        std::wstringstream msg;
-        msg << L"TskImgDBSqlite::getUniqueCarvedFiles - Unsupported hashType : " << hashType;
-        LOGERROR(msg.str());
-        return results;
-    }
-
-    stringstream stmt;
-    
-    // If hashes have not been calculated return all carved files
-    stmt << "SELECT count(*) FROM file_hashes;";
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) 
-    {
-        if (sqlite3_step(statement) == SQLITE_ROW) 
-        {
-            uint64_t counter = (uint64_t)sqlite3_column_int64(statement, 0);
-            if (counter == 0) 
-            {
-                sqlite3_finalize(statement);
-                stmt.str("");
-                stmt << "select c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' "
-                    << "|| c.file_id from files f, carved_files c, carved_sectors cs "
-                    << "where c.file_id = cs.file_id and cs.seq = 0 and f.file_id = c.file_id order by c.file_id";
-                getCarvedFileInfo(stmt.str(), results);
-                return results;
-            }
-        }
-        sqlite3_finalize(statement);
-    } else 
-    {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getUniqueCarvedFiles - Error getting file_hashes count: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-    }
-
-    stmt.str("");
-
-    // Get the set of files for which the hash has been calculated.
-    stmt << "select c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' "
-        << "|| c.file_id from files f, carved_files c, carved_sectors cs "
-        << "where c.file_id = cs.file_id and cs.seq = 0 and f.file_id = c.file_id and c.file_id in "
-        << "(select min(file_id) from file_hashes where " << hash << " != '' group by " << hash << ") order by c.file_id";
-
-    getCarvedFileInfo(stmt.str(), results);
-
-    // Next get the set of files for which the hash has *not* been calculated.
-    stmt.str("");
-
-    stmt << "select c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' "
-        << "|| c.file_id from files f, carved_files c, carved_sectors cs "
-        << "where c.file_id = cs.file_id and cs.seq = 0 and f.file_id = c.file_id and c.file_id in "
-        << "(select file_id from file_hashes where " << hash << " = '') order by c.file_id";
-
-    getCarvedFileInfo(stmt.str(), results);
-
-    // Finally, add file info for all of the carved files for which there are no hashes of any sort.
-    // All of these files must be included because without hashes there is no way to determine uniqueness.
-    stmt.clear();
-    stmt.str("");
-    stmt << "SELECT c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' || c.file_id "
-         << "FROM files f, carved_files c, carved_sectors cs "
-         << "WHERE c.file_id = cs.file_id AND cs.seq = 0 AND f.file_id = c.file_id AND c.file_id NOT IN "
-         << "(SELECT fh.file_id FROM file_hashes fh) ORDER BY c.file_id";
-    getCarvedFileInfo(stmt.str(), results);
-
-    return results;
-}
-
-void TskImgDBSqlite::getCarvedFileInfo(const std::string &query, bool getHash, std::vector<TskCarvedFileInfo> &carvedFileInfos) const
-{
-    sqlite3_stmt *statement;
-    executeStatement(query, statement, "TskImgDBSqlite::getCarvedFileInfo");
-
-    TskCarvedFileInfo info;
-    while (sqlite3_step(statement) == SQLITE_ROW) 
-    {
-        info.fileID = static_cast<uint64_t>(sqlite3_column_int64(statement, 0));
-        std::string fileName = reinterpret_cast<const char*>(sqlite3_column_text(statement, 1)); // Reinterpret from unsigned Char*
-        info.cFileName = reinterpret_cast<const char*>(sqlite3_column_text(statement, 2)); // Reinterpret from unsigned Char*
-        if (getHash)
-        {
-            info.hash = reinterpret_cast<const char*>(sqlite3_column_text(statement, 3));
-        }
-
-        // Append the extension from the original file name to the constructed "cfile" name.
-        std::string::size_type pos = fileName.rfind('.');
-        if (pos != std::string::npos)
-        {
-            info.cFileName.append(fileName.substr(pos));
-        }
-
-        carvedFileInfos.push_back(info);
-    }
-
-    sqlite3_finalize(statement);
-}
-
-std::vector<TskCarvedFileInfo> TskImgDBSqlite::getUniqueCarvedFilesInfo(HASH_TYPE hashType) const
-{
-    const std::string msgPrefix = "TskImgDBSqlite::getUniqueCarvedFilesInfo : "; 
-
-    if (!m_db)
-    {
-        std::ostringstream msg;
-        msg << msgPrefix << "no database connection";
-        throw TskException(msg.str());
-    }
-
-    // Map the requested hash type to a file_hashes table column name.
-    string hash;
-    switch (hashType) 
-    {
-    case TskImgDB::MD5:
-        hash = "md5";
-        break;
-    case TskImgDB::SHA1:
-        hash = "sha1";
-        break;
-    case TskImgDB::SHA2_256:
-        hash = "sha2_256";
-        break;
-    case TskImgDB::SHA2_512:
-        hash = "sha2_512";
-        break;
-    default:
-        std::ostringstream msg;
-        msg << msgPrefix << "unsupported hash type :" << hashType;
-        throw TskException(msg.str());
-    }
-
-    std::vector<TskCarvedFileInfo> carvedFileInfos;
-
-    // Do a quick check to see if any hashes have been calculated.
-    std::ostringstream query;
-    query << "SELECT COUNT(*) FROM file_hashes;";
-    sqlite3_stmt *countStmt;
-    executeStatement(query.str(), countStmt, "TskImgDBSqlite::getUniqueCarvedFiles");
-    if (sqlite3_step(countStmt) == SQLITE_ROW && static_cast<uint64_t>(sqlite3_column_int64(countStmt, 0)) != 0) 
-    {
-        // At least one type of hash has been calculated (presumably for all files, but this is not guaranteed). 
-        // First, add file info for the set of unique files among the carved files for which the specified type of hash is available.
-        query.clear();
-        query.str("");
-        query << "SELECT c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' || c.file_id, fh." << hash << " "
-              << "FROM files f, carved_files c, carved_sectors cs, file_hashes fh "
-              << "WHERE c.file_id = cs.file_id AND cs.seq = 0 AND f.file_id = c.file_id AND c.file_id = fh.file_id AND c.file_id IN "
-              << "(SELECT MIN(file_id) FROM file_hashes WHERE " << hash << " != '' GROUP BY " << hash << ") ORDER BY c.file_id";
-        getCarvedFileInfo(query.str(), true, carvedFileInfos);
-
-         // Next, add file info for all of the carved files for which the specified hash is not available.
-         // All of these files must be included because without the specified hash there is no acceptable way to determine uniqueness.
-        query.clear();
-        query.str("");
-        query << "SELECT c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' || c.file_id "
-              << "FROM files f, carved_files c, carved_sectors cs "
-              << "WHERE c.file_id = cs.file_id AND cs.seq = 0 AND f.file_id = c.file_id AND c.file_id IN "
-              << "(SELECT file_id FROM file_hashes WHERE " << hash << " = '') ORDER BY c.file_id";
-        getCarvedFileInfo(query.str(), false, carvedFileInfos);
-
-        // Finally, add file info for all of the carved files for which there are no hashes of any sort.
-        // All of these files must be included because without hashes there is no way to determine uniqueness.
-        query.clear();
-        query.str("");
-        query << "SELECT c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' || c.file_id "
-              << "FROM files f, carved_files c, carved_sectors cs "
-              << "WHERE c.file_id = cs.file_id AND cs.seq = 0 AND f.file_id = c.file_id AND c.file_id NOT IN "
-              << "(SELECT fh.file_id FROM file_hashes fh) ORDER BY c.file_id";
-        getCarvedFileInfo(query.str(), false, carvedFileInfos);
-    }
-    else
-    {
-        // No hashes have been calculated.
-        // Return carved file info all of the carved files because without hashes there is no way to determine uniqueness.
-        query.clear();
-        query.str("");
-        query << "SELECT c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' || c.file_id "
-              << "FROM files f, carved_files c, carved_sectors cs "
-              << "WHERE c.file_id = cs.file_id AND cs.seq = 0 AND f.file_id = c.file_id ORDER BY c.file_id";
-        getCarvedFileInfo(query.str(), false, carvedFileInfos);
-
-        std::ostringstream msg;
-        msg << msgPrefix << "no hashes available, returning all carved files";
-        LOGWARN(msg.str());
-    }
-    sqlite3_finalize(countStmt);
-
-    return carvedFileInfos;
-}
-
-std::vector<uint64_t> TskImgDBSqlite::getCarvedFileIds() const
-{
-    return getFileIdsWorker("carved_files");
-}
-
-std::vector<uint64_t> TskImgDBSqlite::getUniqueFileIds(HASH_TYPE hashType) const
-{
-    if (!m_db)
-        throw TskException("No database.");
-
-    std::vector<uint64_t> results;
-
-    string hash;
-    switch (hashType) {
-    case TskImgDB::MD5:
-        hash = "md5";
-        break;
-    case TskImgDB::SHA1:
-        hash = "sha1";
-        break;
-    case TskImgDB::SHA2_256:
-        hash = "sha2_256";
-        break;
-    case TskImgDB::SHA2_512:
-        hash = "sha2_512";
-        break;
-    default:
-        std::wstringstream errorMsg;
-        errorMsg << L"TskImgDBSqlite::getUniqueFileIds - Unsupported hashType : " << hashType ;
-        LOGERROR(errorMsg.str());
-        return results;
-    }
-
-    stringstream stmt;
-
-    stmt << "SELECT min(file_id) FROM file_hashes WHERE " << hash << " != '' group by " << hash ;
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        while (sqlite3_step(statement) == SQLITE_ROW) {
-            uint64_t fileId = (uint64_t)sqlite3_column_int64(statement, 0);
-            results.push_back(fileId);
-        }
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getUniqueFileIds - Error querying file_hashes table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-    }
-    return results;
-}
-
-std::vector<uint64_t> TskImgDBSqlite::getFileIds() const
-{
-    return getFileIdsWorker("files");
-}
-
-std::vector<uint64_t> TskImgDBSqlite::getFileIdsWorker(std::string tableName, const std::string condition) const
-{
-    if (!m_db)
-        throw TskException("No database.");
-
-    std::vector<uint64_t> results;
-
-    stringstream stmt;
-
-    stmt << "SELECT file_id FROM " << tableName;
-    if (condition.compare("") != 0)
-        stmt << " WHERE " << condition;
-    stmt <<  " ORDER BY file_id";
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        while (sqlite3_step(statement) == SQLITE_ROW) {
-            uint64_t fileId = (uint64_t)sqlite3_column_int64(statement, 0);
-            results.push_back(fileId);
-        }
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getFileIdsWorker - Error getting file ids from table " << 
-            tableName.c_str() << ", " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-    }
-    return results;
-}
-
-/**
- * Get the list of file ids that match the given criteria.
- * The given string will be appended to "select files.file_id from files".
- * See \ref img_db_schema_v1_5_page for tables and columns to include in 
- * the selection criteria.
- *
- * @param condition Must be a valid SQL string defining the selection criteria.
- * @returns The collection of file ids matching the selection criteria. Throws
- * TskException if database not initialized.
- */
-std::vector<uint64_t> TskImgDBSqlite::getFileIds(const std::string& condition) const
-{
-    if (!m_db)
-        throw TskException("Database not initialized.");
-
-    std::vector<uint64_t> results;
-
-    std::string stmt("SELECT files.file_id FROM files");
-
-    constructStmt(stmt, condition);
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) 
-    {
-        while (sqlite3_step(statement) == SQLITE_ROW) 
-        {
-            uint64_t fileId = (uint64_t)sqlite3_column_int64(statement, 0);
-            results.push_back(fileId);
-        }
-        sqlite3_finalize(statement);
-    } else 
-    {
-        std::wstringstream msg;
-        msg << L"TskImgDBSqlite::getFilesIds - Error getting file ids: " << sqlite3_errmsg(m_db);
-        LOGERROR(msg.str());
-    }
-    return results;
-}
-/*
- * Get the list of file records that match the given criteria.
- * The given string will be appended to "select ... from files".
- *
- * @param condition Must be a valid SQL string defining the selection criteria.
- * @returns The collection of file records matching the selection criteria. Throws
- * TskException if database not initialized.
- */
-const std::vector<TskFileRecord> TskImgDBSqlite::getFileRecords(const std::string& condition) const
-{
-    if (!m_db)
-        throw TskException("Database not initialized.");
-
-    std::vector<TskFileRecord> results;
-
-    std::stringstream stmtstrm;
-
-    stmtstrm << "SELECT f.file_id, f.type_id, f.name, f.par_file_id, f.dir_type, f.meta_type, f.dir_flags, "
-        << "f.meta_flags, f.size, f.ctime, f.crtime, f.atime, f.mtime, f.mode, f.uid, f.gid, f.status, f.full_path, "
-        << "fh.md5, fh.sha1, fh.sha2_256, fh.sha2_512 "
-        << "FROM files f LEFT OUTER JOIN file_hashes fh ON f.file_id = fh.file_id ";
-
-    std::string stmt = stmtstrm.str();
-    constructStmt(stmt, condition);
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) 
-    {
-        while(sqlite3_step(statement) == SQLITE_ROW) {
-            TskFileRecord fileRecord;
-            fileRecord.fileId       = sqlite3_column_int64(statement, 0);
-            fileRecord.typeId       = (TskImgDB::FILE_TYPES) sqlite3_column_int(statement, 1);
-            fileRecord.name         = (char *)sqlite3_column_text(statement, 2);
-            fileRecord.parentFileId = sqlite3_column_int64(statement, 3);
-            fileRecord.dirType      = (TSK_FS_NAME_TYPE_ENUM) sqlite3_column_int(statement, 4);
-            fileRecord.metaType     = (TSK_FS_META_TYPE_ENUM) sqlite3_column_int(statement, 5);
-            fileRecord.dirFlags     = (TSK_FS_NAME_FLAG_ENUM) sqlite3_column_int(statement, 6);
-            fileRecord.metaFlags    = (TSK_FS_META_FLAG_ENUM) sqlite3_column_int(statement, 7);
-            fileRecord.size         = sqlite3_column_int64(statement, 8);
-            fileRecord.ctime        = sqlite3_column_int(statement, 9);
-            fileRecord.crtime       = sqlite3_column_int(statement, 10);
-            fileRecord.atime        = sqlite3_column_int(statement, 11);
-            fileRecord.mtime        = sqlite3_column_int(statement, 12);
-            fileRecord.mode         = (TSK_FS_META_MODE_ENUM) sqlite3_column_int(statement, 13);
-            fileRecord.uid          = sqlite3_column_int(statement, 14);
-            fileRecord.gid          = sqlite3_column_int(statement, 15);
-            fileRecord.status       = (TskImgDB::FILE_STATUS) sqlite3_column_int(statement, 16);
-            fileRecord.fullPath     = (char *)sqlite3_column_text(statement, 17);
-
-            if (sqlite3_column_type(statement, 18) == SQLITE_TEXT)
-                fileRecord.md5      = (char *)sqlite3_column_text(statement, 18);
-            if (sqlite3_column_type(statement, 19) == SQLITE_TEXT)
-                fileRecord.sha1     = (char *)sqlite3_column_text(statement, 19);
-            if (sqlite3_column_type(statement, 20) == SQLITE_TEXT)
-                fileRecord.sha2_256 = (char *)sqlite3_column_text(statement, 20);
-            if (sqlite3_column_type(statement, 21) == SQLITE_TEXT)
-                fileRecord.sha2_512 = (char *)sqlite3_column_text(statement, 21);
-            results.push_back(fileRecord);
-        }
-    }
-    else 
-    {
-        std::wstringstream msg;
-        msg << L"TskImgDBSqlite::getFilesRecords - Error getting file reocrds: " << sqlite3_errmsg(m_db);
-        LOGERROR(msg.str());
-    }
-    return results;
-}
-
-
-/**
- * Get the number of files that match the given criteria.
- * The given string will be appended to "select files.file_id from files".
- *
- * @param condition Must be a valid SQL string defining the selection criteria.
- * @returns The number of files matching the selection criteria. 
- */
-int TskImgDBSqlite::getFileCount(const std::string& condition) const
-{
-    if (!m_db)
-        throw TskException("Database not initialized.");
-
-    int result = 0;
-
-    std::string stmt("SELECT COUNT(files.file_id) FROM files");
-
-    constructStmt(stmt, condition);
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) 
-    {
-        while (sqlite3_step(statement) == SQLITE_ROW) 
-        {
-            result = (uint64_t)sqlite3_column_int(statement, 0);
-        }
-        sqlite3_finalize(statement);
-    } else 
-    {
-        std::wstringstream msg;
-        msg << L"TskImgDBSqlite::getFileCount - Error getting file count: " << sqlite3_errmsg(m_db);
-        LOGERROR(msg.str());
-    }
-    return result;
-}
-
-int tsk_strnicmp(const char *s1, const char *s2, size_t N)
-{
-    if (N == 0)
-        return 0;
-    int diff = 0;
-    if (s1 && s2) {
-        while (N-- > 0 && (diff = (toupper(*s1) - toupper(*s2))) == 0 && *s1 && *s2) {
-            s1++;
-            s2++;
-        }
-    }
-    else if (s1)
-        return +1;
-    else if (s2)
-        return -1;
-    return diff;
-}
-
-/* Append condition to stmt to make a single SQL query.
- */
-void TskImgDBSqlite::constructStmt(std::string& stmt, std::string condition) const
-{
-    if (!condition.empty())
-    {
-        // Remove leading whitespace from condition
-        condition.erase(0, condition.find_first_not_of(' '));
-
-        std::string whereClause("WHERE");
-        std::string joinClause("JOIN");
-        std::string leftClause("LEFT");
-        std::string orderClause("ORDER");
-
-        /* If the condition doesn't start with one of the below statements 
-         * (WHERE, JOIN, etc.), then 
-         * it is presumably extending the FROM clause with
-         * one or more table names. In this case we need to add the comma to
-         * the statement. */
-        if (tsk_strnicmp(condition.c_str(), whereClause.c_str(), whereClause.length()) != 0 &&
-            tsk_strnicmp(condition.c_str(), joinClause.c_str(), joinClause.length()) != 0 &&
-            tsk_strnicmp(condition.c_str(), leftClause.c_str(), leftClause.length()) != 0 &&
-            tsk_strnicmp(condition.c_str(), orderClause.c_str(), orderClause.length()) != 0 &&
-            condition[0] != ',')
-        {
-            stmt.append(",");
-        }
-    }
-
-    stmt.append(" ");
-    stmt.append(condition);
-}
-
-// Set file hash for hashType for a_file_id
-// Return 1 on failure, 0 on success.
-int TskImgDBSqlite::setHash(const uint64_t a_file_id, const TskImgDB::HASH_TYPE hashType, const std::string& hash) const 
-{
-    if (!m_db)
-        throw TskException("No database.");
-
-    string hashTypeStr;
-    switch (hashType) {
-    case TskImgDB::MD5:
-        hashTypeStr = "md5";
-        break;
-    case TskImgDB::SHA1:
-        hashTypeStr = "sha1";
-        break;
-    case TskImgDB::SHA2_256:
-        hashTypeStr = "sha2_256";
-        break;
-    case TskImgDB::SHA2_512:
-        hashTypeStr = "sha2_512";
-        break;
-    default:
-        std::wstringstream errorMsg;
-        errorMsg << L"TskImgDBSqlite::setHash - Unsupported hashType : " << hashType ;
-        LOGERROR(errorMsg.str());
-        return 1;
-    }
-
-    stringstream stmt;
-    std::string md5, sha1, sha2_256, sha2_512;
-    int known = IMGDB_FILES_UNKNOWN;
-    std::stringstream stream;
-
-    stmt << "SELECT md5, sha1, sha2_256, sha2_512, known from file_hashes WHERE file_id = " << a_file_id;
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) {
-            md5 = (char *)sqlite3_column_text(statement, 0);
-            sha1 = (char *)sqlite3_column_text(statement, 1);
-            sha2_256 = (char *)sqlite3_column_text(statement, 2);
-            sha2_512 = (char *)sqlite3_column_text(statement, 3);
-            known = (int)sqlite3_column_int(statement, 4);
-        } 
-        sqlite3_finalize(statement);
-    } else {
-        ; // OK if not exists
-    }
-
-    // insert new record
-    stmt.str("");
-    stmt << "INSERT OR REPLACE INTO file_hashes (file_id, md5, sha1, sha2_256, sha2_512, known) VALUES (" << a_file_id;
-    switch (hashType) {
-    case TskImgDB::MD5:
-        stmt << ", '" << hash << "'";
-        stmt << ", '" << sha1 << "'";
-        stmt << ", '" << sha2_256 << "'";
-        stmt << ", '" << sha2_512 << "'";
-        stream << known;
-        stmt << ", " << stream.str();
-        break;
-    case TskImgDB::SHA1:
-        stmt << ", '" << md5 << "'";
-        stmt << ", '" << hash << "'";
-        stmt << ", '" << sha2_256 << "'";
-        stmt << ", '" << sha2_512 << "'";
-        stream << known;
-        stmt << ", " << stream.str();
-        break;
-    case TskImgDB::SHA2_256:
-        stmt << ", '" << md5 << "'";
-        stmt << ", '" << sha1 << "'";
-        stmt << ", '" << hash << "'";
-        stmt << ", '" << sha2_512 << "'";
-        stream << known;
-        stmt << ", " << stream.str();
-        break;
-    case TskImgDB::SHA2_512:
-        stmt << ", '" << md5 << "'";
-        stmt << ", '" << sha1 << "'";
-        stmt << ", '" << sha2_256 << "'";
-        stmt << ", '" << hash << "'";
-        stream << known;
-        stmt << ", " << stream.str();
-        break;
-    }
-    stmt << ")";
-
-    char *errmsg;
-    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::setHash - Error adding hash to file_hashes table: " << errmsg;
-        LOGERROR(infoMessage.str());
-        sqlite3_free(errmsg);
-        return 1;
-    }
-
-    return 0;
-}
-
-std::string TskImgDBSqlite::getCfileName(const uint64_t a_file_id) const
-{
-    if (!m_db)
-        throw TskException("No database.");
-
-    std::string cfileName;
-    stringstream stmt;
-
-    stmt << "select 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' || f.file_id"
-        " from files f, carved_files c, carved_sectors cs where f.file_id = c.file_id and c.file_id = cs.file_id and cs.seq = 0"
-        " and f.file_id = " << a_file_id;
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) {
-            cfileName = (char *)sqlite3_column_text(statement, 0);
-        }
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage <<  L"TskImgDBSqlite::getCfileName - Error querying tables: %S" << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-    }
-
-    stmt.str("");
-    stmt << "select f.name "
-        " from files f, carved_files c, carved_sectors cs where f.file_id = c.file_id and c.file_id = cs.file_id and cs.seq = 0"
-        " and f.file_id = " << a_file_id;
-
-    std::string name;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) {
-            name = (char *)sqlite3_column_text(statement, 0);
-        }
-        sqlite3_finalize(statement);
-        size_t pos = name.rfind('.');
-        if (pos != string::npos)
-            cfileName += name.substr(pos);
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getCfileName - Error querying tables: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-    }
-
-    return cfileName;
-}
-
-/**
- * Return the ImageInfo
- * @param type Image Type (output)
- * @param sectorSize Image sector size (output)
- * @returns 0 on success or -1 on error.
- */
-int TskImgDBSqlite::getImageInfo(int & type, int & sectorSize) const
-{
-    int rc = -1;
-    if (!m_db)
-        return rc;
-
-    stringstream stmt;
-
-    stmt << "SELECT type, ssize FROM image_info";
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) {
-            type = (int)sqlite3_column_int64(statement, 0);
-            sectorSize = (int)sqlite3_column_int64(statement, 1);
-            rc = 0;
-        }
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage <<  L"TskImgDBSqlite::getImageInfo - Error querying image_info table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        return -1;
-    }
-    return rc;
-}
-
-/**
- * Return a list of TskVolumeInfoRecord
- * @param volumeInfoList A list of TskVolumeInfoRecord (output)
- * @returns 0 on success or -1 on error.
- */
-int TskImgDBSqlite::getVolumeInfo(std::list<TskVolumeInfoRecord> & volumeInfoList) const
-{
-    std::list<TskVolumeInfoRecord> list;
-
-    if (!m_db)
-        return -1;
-
-    stringstream stmt;
-    stmt << "SELECT vol_id, sect_start, sect_len, description, flags FROM vol_info";
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        while (sqlite3_step(statement) == SQLITE_ROW) {
-            TskVolumeInfoRecord vol_info;
-            vol_info.vol_id = sqlite3_column_int(statement,0);
-            vol_info.sect_start = sqlite3_column_int64(statement,1);
-            vol_info.sect_len = sqlite3_column_int64(statement,2);
-            vol_info.description.assign((char *)sqlite3_column_text(statement, 3));
-            vol_info.flags = (TSK_VS_PART_FLAG_ENUM)sqlite3_column_int(statement, 4);
-            volumeInfoList.push_back(vol_info);
-        }
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getVolumeInfo - Error getting from vol_info table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        return -1;
-    }
-    return 0;
-}
-
-/**
- * Return a list of TskFsInfoRecord
- * @param fsInfoList A list of TskFsInfoRecord (output)
- * @returns 0 on success or -1 on error.
- */
-int TskImgDBSqlite::getFsInfo(std::list<TskFsInfoRecord> & fsInfoList) const
-{
-    std::list<TskFsInfoRecord> list;
-
-    if (!m_db)
-        return -1;
-
-    stringstream stmt;
-    stmt << "SELECT fs_id, img_byte_offset, vol_id, fs_type, block_size, block_count, root_inum, first_inum, last_inum FROM fs_info";
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        while (sqlite3_step(statement) == SQLITE_ROW) {
-            TskFsInfoRecord fs_info;
-            fs_info.fs_id = sqlite3_column_int(statement,0);
-            fs_info.img_byte_offset = sqlite3_column_int64(statement,1);
-            fs_info.vol_id = sqlite3_column_int(statement,2);
-            fs_info.fs_type = (TSK_FS_TYPE_ENUM)sqlite3_column_int(statement,3);
-            fs_info.block_size = sqlite3_column_int(statement,4);
-            fs_info.block_count = sqlite3_column_int64(statement,5);
-            fs_info.root_inum = sqlite3_column_int64(statement,6);
-            fs_info.first_inum = sqlite3_column_int64(statement,7);
-            fs_info.last_inum = sqlite3_column_int64(statement,8);
-            fsInfoList.push_back(fs_info);
-        }
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getFsInfo - Error getting from fs_info table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        return -1;
-    }
-    return 0;
-}
-
-typedef std::map<std::string, int> FileTypeMap_t;
-
-static std::string getFileType(const char *name)
-{
-    std::string filename = name;
-    size_t pos = filename.rfind('.');
-    if (pos != std::string::npos) {
-        std::string suffix = filename.substr(pos);
-        std::string result;
-        for (size_t i=0; i < suffix.size(); i++) {
-            result += (char)tolower(suffix[i]);
-        }
-        return result;
-    }
-    else
-        return std::string("");
-}
-
-/**
- * Return a list of TskFileTypeRecord for all files.
- * @param fileTypeInfoList A list of TskFileTypeRecord (output)
- * @returns 0 on success or -1 on error.
- */
-int TskImgDBSqlite::getFileInfoSummary(std::list<TskFileTypeRecord> &fileTypeInfoList) const
-{
-    std::stringstream stmt;
-    stmt << "SELECT name FROM files WHERE dir_type = " << TSK_FS_NAME_TYPE_REG;
-
-    return getFileTypeRecords(stmt.str(), fileTypeInfoList);
-}
-
-/**
- * Return a list of TskFileTypeRecord for fileType
- * @param fileType FILE_TYPE to report
- * @param fileTypeInfoList A list of TskFileTypeRecord (output)
- * @returns 0 on success or -1 on error.
- */
-int TskImgDBSqlite::getFileInfoSummary(FILE_TYPES fileType, std::list<TskFileTypeRecord> & fileTypeInfoList) const
-{
-    stringstream stmt;
-    stmt << "SELECT name FROM files WHERE type_id = " << fileType << " AND dir_type = " << TSK_FS_NAME_TYPE_REG;
-
-    return getFileTypeRecords(stmt.str(), fileTypeInfoList);
-}
-
-/**
- * Return a list of TskFileTypeRecords matching the given SQL statement.
- * @param stmt The SQL statement used to match file records.
- * @param fileTypeInfoList A list of TskFileTypeRecord (output)
- * @returns 0 on success of -1 on error.
- */
-int TskImgDBSqlite::getFileTypeRecords(const std::string& stmt, std::list<TskFileTypeRecord>& fileTypeInfoList) const
-{
-    if (!m_db)
-        return -1;
-
-    std::list<TskFileTypeRecord> list;
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) {
-        FileTypeMap_t fileTypeMap;
-        while (sqlite3_step(statement) == SQLITE_ROW) {
-            char *name = (char *)sqlite3_column_text(statement, 0);
-            std::string type = getFileType(name);
-            FileTypeMap_t::iterator iter = fileTypeMap.find(type);
-            if (iter != fileTypeMap.end()) {
-                // increment file counter
-                int count = iter->second;
-                fileTypeMap[type] = ++count;
-            } else {
-                // add a new file type
-                fileTypeMap.insert(pair<std::string, int>(type, 1));
-            }
-        }
-        for (FileTypeMap_t::const_iterator iter=fileTypeMap.begin(); iter != fileTypeMap.end(); iter++) {
-            TskFileTypeRecord info;
-            info.suffix.assign((*iter).first.c_str());
-            info.count = (*iter).second;
-            info.description.assign("File Type Description");
-            fileTypeInfoList.push_back(info);
-        }
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getFileTypeRecords - Error querying files table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        return -1;
-    }
-    return 0;
-}
-
-/**
- * Insert the Module record, if module name does not already exist in modules table.
- * Returns Module Id associated with the Module record.
- * @param name Module name
- * @param description Module description
- * @param moduleId Module Id (output)
- * @returns 0 on success, -1 on error.
- */
-int TskImgDBSqlite::addModule(const std::string& name, const std::string& description, int & moduleId)
-{
-    if (!m_db)
-        return -1;
-
-    if (name.empty())
-    {
-        LOGWARN(L"TskImgDBSqlite::addModule - Given an empty module name.");
-        return -1;
-    }
-
-    moduleId = 0;
-
-    sqlite3_stmt * statement;
-    char stmt[1024];
-    sqlite3_snprintf(1024, stmt, "SELECT module_id FROM modules WHERE name = '%q';",
-                     name.c_str());
-
-    if (sqlite3_prepare_v2(m_db, stmt, -1, &statement, 0) == SQLITE_OK) 
-    {
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) 
-        {
-            // Already exists, return module_id
-            moduleId = sqlite3_column_int(statement, 0);
-        }
-        else
-        {
-            // Create a new module record.
-            char insertStmt[1024];
-            char * errmsg;
-            sqlite3_snprintf(1024, insertStmt, 
-                "INSERT INTO modules (module_id, name, description) VALUES (NULL, '%q', '%q');",
-                name.c_str(), description.c_str());
-            if (sqlite3_exec(m_db, insertStmt, NULL, NULL, &errmsg) == SQLITE_OK) 
-            {
-                moduleId = (int)sqlite3_last_insert_rowid(m_db);
-            } 
-            else 
-            {
-                std::wstringstream msg;
-                msg << L"TskImgDBSqlite::addModule - Error adding record to modules table: " << errmsg;
-                LOGERROR(msg.str());
-                sqlite3_free(errmsg);
-            }
-        }
-        sqlite3_finalize(statement);
-    }
-    else
-    {
-        std::wstringstream msg;
-        msg << L"TskImgDBSqlite::addModule - Failed to prepare statement: " << stmt;
-        LOGERROR(msg.str());
-    }
-    
-    if (moduleId == 0)
-        return -1;
-
-    return 0;
-}
-
-/**
- * Insert the module status record.
- * @param file_id file_id
- * @param module_id module_id
- * @param status Status of module
- * @returns 0 on success, -1 on error.
- */
-int TskImgDBSqlite::setModuleStatus(uint64_t file_id, int module_id, int status)
-{
-    int rc = -1;
-
-    if (!m_db)
-        return rc;
-
-    char * errmsg;
-    std::stringstream stmt;
-    stmt << "INSERT INTO module_status (file_id, module_id, status) VALUES (" <<
-        file_id << ", " <<  module_id << ", " << status << ")";
-
-    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) == SQLITE_OK) {
-        rc = 0;
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::setModuleStatus - Error adding data to module_status table: " << errmsg;
-        LOGERROR(infoMessage.str());
-        sqlite3_free(errmsg);
-    }
-    return rc;
-}
-
-/**
- * Get a list of TskModuleStatus.
- * @param moduleInfoList A list of TskModuleStatus (output)
- * @returns 0 on success, -1 on error.
-*/
-int TskImgDBSqlite::getModuleInfo(std::vector<TskModuleInfo> & moduleInfoList) const
-{
-    int rc = -1;
-
-    if (!m_db)
-        return rc;
-
-    stringstream stmt;
-    stmt << "SELECT module_id, name, description FROM modules ORDER BY module_id";
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        TskModuleInfo moduleInfo;
-        while (sqlite3_step(statement) == SQLITE_ROW) {
-            moduleInfo.module_id = (int)sqlite3_column_int64(statement, 0);
-            moduleInfo.module_name = (char *)sqlite3_column_text(statement, 1);
-            moduleInfo.module_description = (char *)sqlite3_column_text(statement, 2);
-            moduleInfoList.push_back(moduleInfo);
-        }
-        sqlite3_finalize(statement);
-        rc = 0;
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getModuleInfo - Error querying modules table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-    }
-    return rc;
-}
-
-/**
- * Get a list of TskModuleStatus.
- * @param moduleStatusList A list of TskModuleStatus (output)
- * @returns 0 on success, -1 on error.
-*/
-int TskImgDBSqlite::getModuleErrors(std::vector<TskModuleStatus> & moduleStatusList) const
-{
-    int rc = -1;
-
-    if (!m_db)
-        return rc;
-
-    stringstream stmt;
-    stmt << "SELECT f.file_id, m.name, ms.status FROM module_status ms, files f, modules m"
-        << " WHERE ms.status != 0 AND ms.file_id = f.file_id AND m.module_id = ms.module_id"
-        << " ORDER BY f.file_id";
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        TskModuleStatus moduleStatus;
-        while (sqlite3_step(statement) == SQLITE_ROW) {
-            moduleStatus.file_id = (uint64_t)sqlite3_column_int64(statement, 0);
-            moduleStatus.module_name = (char *)sqlite3_column_text(statement, 1);
-            moduleStatus.status = (int)sqlite3_column_int(statement, 2);
-            moduleStatusList.push_back(moduleStatus);
-        }
-        sqlite3_finalize(statement);
-        rc = 0;
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getModuleErrors - Error querying module_status table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-    }
-    // Find report module errors. These have file_id = 0.
-    stmt.str("");
-    stmt << "SELECT 0, m.name, ms.status FROM module_status ms, modules m"
-         << " WHERE ms.status != 0 AND ms.file_id = 0 AND m.module_id = ms.module_id";
-
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        TskModuleStatus moduleStatus;
-        while (sqlite3_step(statement) == SQLITE_ROW) {
-            moduleStatus.file_id = (uint64_t)sqlite3_column_int64(statement, 0);
-            moduleStatus.module_name = (char *)sqlite3_column_text(statement, 1);
-            moduleStatus.status = (int)sqlite3_column_int(statement, 2);
-            moduleStatusList.push_back(moduleStatus);
-        }
-        sqlite3_finalize(statement);
-        rc = 0;
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getModuleErrors - Error querying module_status table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-    }
-    return rc;
-}
-
-/*
- * Return a file name associated with a file_id, prefer Cfilename, otherwise name in the files table.
- * @param file_id file id
- * @returns file name as std::string
- */
-std::string TskImgDBSqlite::getFileName(uint64_t file_id) const
-{
-    std::string name;
-
-    if (!m_db)
-        return name;
-
-    name = getCfileName(file_id);
-    if (name == "") {
-        TskFileRecord fileRecord;
-        if (getFileRecord(file_id, fileRecord) == 0)
-            name = fileRecord.name;
-    }
-    return name;
-}
-
-
-TskImgDB::KNOWN_STATUS TskImgDBSqlite::getKnownStatus(const uint64_t fileId) const
-{
-    int retval = -1;
-
-    if (!m_db)
-        return (KNOWN_STATUS)retval;
-    
-    stringstream stmt;
-    stmt << "SELECT known FROM file_hashes WHERE file_id = " << fileId;
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        if(sqlite3_step(statement) == SQLITE_ROW) {
-            retval = (int)sqlite3_column_int(statement, 0);
-        }
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getKnownStatus - Error getting known status " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-    }
-
-    return (KNOWN_STATUS)retval;
-}
-
-
-/**
- * Add a new row to the unalloc_img_status table, returning the unalloc_img_id.
- * @param unallocImgId unalloc_img_id (output)
- * @returns -1 on error, 0 on success.
- */
-int TskImgDBSqlite::addUnallocImg(int & unallocImgId)
-{
-    int rc = -1;
-
-    if (!m_db)
-        return rc;
-
-    std::stringstream stmt;
-    stmt << "INSERT INTO unalloc_img_status (unalloc_img_id, status) VALUES (NULL, " << TskImgDB::IMGDB_UNALLOC_IMG_STATUS_CREATED << ")";
-    char * errmsg;
-    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) == SQLITE_OK) {
-        unallocImgId = (int)sqlite3_last_insert_rowid(m_db);
-        rc = 0;
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::addUnallocImg - Error adding unalloc_img_status table: " << errmsg;
-        LOGERROR(infoMessage.str());
-        sqlite3_free(errmsg);
-    }
-    return rc;
-}
-
-/**
- * Set the status in the unalloc_img_status table given the unalloc_img_id.
- * @param unallocImgId unalloc_img_id
- * @param status status of unalloc_img_id
- * @returns -1 on error, 0 on success.
- */
-int TskImgDBSqlite::setUnallocImgStatus(int unallocImgId, TskImgDB::UNALLOC_IMG_STATUS status)
-{
-    int rc = -1;
-
-    if (!m_db)
-        return rc;
-
-    std::stringstream stmt;
-    stmt << "UPDATE unalloc_img_status SET status = " << status << " WHERE unalloc_img_id = " << unallocImgId;
-    char * errmsg;
-    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) == SQLITE_OK) {
-        rc = 0;
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::addUnallocImg - Error adding unalloc_img_status table: " << errmsg;
-        LOGERROR(infoMessage.str());
-        sqlite3_free(errmsg);
-    }
-    return rc;
-}
-
-/**
- * Get the status of the unalloc_img_status table given the unalloc_img_id.
- * Can throws TskException.
- * @param unallocImgId unalloc_img_id
- * @returns TskImgDB::UNALLOC_IMG_STATUS
- */
-TskImgDB::UNALLOC_IMG_STATUS TskImgDBSqlite::getUnallocImgStatus(int unallocImgId) const
-{
-    if (!m_db)
-        throw TskException("Database not initialized.");
-
-    int status = 0;
-    stringstream stmt;
-    stmt << "SELECT status FROM unalloc_img_status WHERE unalloc_img_id = " << unallocImgId;
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        if (sqlite3_step(statement) == SQLITE_ROW) {
-            status = (int)sqlite3_column_int(statement, 0);
-        }
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getUnallocImgStatus - Error getting unalloc_img_status: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-    }
-    return (TskImgDB::UNALLOC_IMG_STATUS)status;
-}
-
-/**
- * Get all the unalloc_img_status table.
- * @param unallocImgStatusList A vector of TskUnallocImgStatusRecord (output)
- * @returns -1 on error, 0 on success.
- */
-int TskImgDBSqlite::getAllUnallocImgStatus(std::vector<TskUnallocImgStatusRecord> & unallocImgStatusList) const
-{
-    int rc = -1;
-    unallocImgStatusList.clear();
-
-    if (!m_db)
-        return rc;
-
-    stringstream stmt;
-    stmt << "SELECT unalloc_img_id, status FROM unalloc_img_status";
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        while (sqlite3_step(statement) == SQLITE_ROW) {
-            TskUnallocImgStatusRecord record;
-            record.unallocImgId = (int)sqlite3_column_int(statement, 0);
-            record.status = (TskImgDB::UNALLOC_IMG_STATUS)sqlite3_column_int(statement, 1);
-            unallocImgStatusList.push_back(record);
-        }
-        rc = 0;
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getAllUnallocImgStatus - Error getting unalloc_img_status: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-    }
-    return rc;
-}
-
-/**
- * Find and add all the unused sectors (unallocated and uncarved bytes) in the given unallocImgId
- * @param unallocImgId The unalloc image id.
- * @param unusedSectorsList A vector of TskUnusedSectorsRecord
- * @returns -1 on error, 0 on success.
- */
-int TskImgDBSqlite::addUnusedSectors(int unallocImgId, std::vector<TskUnusedSectorsRecord> & unusedSectorsList)
-{
-    assert(unallocImgId > 0);
-    int rc = -1;
-    if (!m_db)
-        return rc;
-
-    std::stringstream stmt;
-    stmt << "SELECT vol_id, unalloc_img_sect_start, sect_len, orig_img_sect_start FROM alloc_unalloc_map "
-        "WHERE unalloc_img_id = " << unallocImgId << " ORDER BY orig_img_sect_start ASC";
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        vector<TskAllocUnallocMapRecord> allocUnallocMapList;
-
-        while (sqlite3_step(statement) == SQLITE_ROW) {
-            TskAllocUnallocMapRecord record;
-            record.vol_id = (int)sqlite3_column_int(statement, 0);
-            record.unalloc_img_id = unallocImgId;
-            record.unalloc_img_sect_start = (uint64_t)sqlite3_column_int64(statement, 1);
-            record.sect_len = (uint64_t)sqlite3_column_int64(statement, 2);
-            record.orig_img_sect_start = (uint64_t)sqlite3_column_int64(statement, 3);
-            allocUnallocMapList.push_back(record);
-        }
-        sqlite3_finalize(statement);
-
-        for (std::vector<TskAllocUnallocMapRecord>::const_iterator it = allocUnallocMapList.begin();
-             it != allocUnallocMapList.end(); it++)
-        {
-            // Sector position tracks our position through the unallocated map record.
-            uint64_t sectPos = it->orig_img_sect_start;
-
-            uint64_t endSect = it->orig_img_sect_start + it->sect_len;
-
-            // Retrieve all carved_sector records in range for this section of unallocated space.
-            stmt.str("");
-            stmt << "SELECT cs.sect_start, cs.sect_len FROM carved_files cf, carved_sectors cs"
-                << " WHERE cf.file_id = cs.file_id AND cs.sect_start >= " << it->orig_img_sect_start
-                << " AND cs.sect_start < " << endSect << " ORDER BY cs.sect_start ASC";
-
-            if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-                while (sqlite3_step(statement) == SQLITE_ROW) {
-                    uint64_t cfileSectStart = (uint64_t)sqlite3_column_int64(statement, 0);
-                    uint64_t cfileSectLen = (uint64_t)sqlite3_column_int64(statement, 1);
-                    if (cfileSectStart > sectPos)
-                    {
-                        // We have a block of unused sectors between this position in the unallocated map
-                        // and the start of the carved file.
-                        addUnusedSector(sectPos, cfileSectStart, it->vol_id, unusedSectorsList);
-                    }
-
-                    sectPos = cfileSectStart + cfileSectLen;
-                }
-
-                // Handle case where there is slack at the end of the unalloc range
-                if (sectPos < endSect)
-                    addUnusedSector(sectPos, endSect, it->vol_id, unusedSectorsList);
-
-                sqlite3_finalize(statement);
-            } else {
-                std::wstringstream infoMessage;
-                infoMessage << L"TskImgDBSqlite::addUnusedSectors - Error querying carved_files, carved_sectors table: " << sqlite3_errmsg(m_db);
-                LOGERROR(infoMessage.str());
-            }
-        }
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::addUnusedSectors - Error querying alloc_unalloc_map table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-    }
-    return 0;
-}
-
-/**
- * Add one unused sector to the database, add it to the files and unused_sectors tables.
- * @param sectStart Unused sector start.
- * @param sectEnd Unused sector end.
- * @param volId Volume Id of the unused sector.
- * @param unusedSectorsList A vector of TskUnusedSectorsRecord (output)
- * @returns -1 on error, 0 on success.
- */
-int TskImgDBSqlite::addUnusedSector(uint64_t sectStart, uint64_t sectEnd, int volId, std::vector<TskUnusedSectorsRecord> & unusedSectorsList)
-{
-    assert(sectEnd > sectStart);
-    int rc = -1;
-    unusedSectorsList.clear();
-    if (!m_db)
-        return rc;
-
-    std::stringstream stmt;
-
-    std::string maxUnused = GetSystemProperty("MAX_UNUSED_FILE_SIZE_BYTES");
-    const uint64_t maxUnusedFileSizeBytes = maxUnused.empty() ? (50 * 1024 * 1024) : Poco::NumberParser::parse64(maxUnused);
-
-    uint64_t maxUnusedSectorSize = maxUnusedFileSizeBytes / 512;
-    uint64_t sectorIndex = 0;
-    uint64_t sectorCount = (sectEnd - sectStart) / maxUnusedSectorSize;
-
-    while (sectorIndex <= sectorCount) {
-        uint64_t thisSectStart = sectStart + (sectorIndex * maxUnusedSectorSize);
-        uint64_t thisSectEnd = thisSectStart + (std::min)(maxUnusedSectorSize, sectEnd - thisSectStart);
-
-        stmt.str("");
-        stmt << "INSERT INTO files (file_id, type_id, name, par_file_id, dir_type, meta_type,"
-            "dir_flags, meta_flags, size, ctime, crtime, atime, mtime, mode, uid, gid, status, full_path) "
-            "VALUES (NULL, " << IMGDB_FILES_TYPE_UNUSED << ", " << "'ufile'" 
-            << ", NULL, " <<  TSK_FS_NAME_TYPE_REG << ", " <<  TSK_FS_META_TYPE_REG << ", "
-            << TSK_FS_NAME_FLAG_UNALLOC << ", " << TSK_FS_META_FLAG_UNALLOC << ", "
-            << (thisSectEnd - thisSectStart) * 512 << ", NULL, NULL, NULL, NULL, NULL, NULL, NULL, " << IMGDB_FILES_STATUS_READY_FOR_ANALYSIS << "," << "'ufile'" << ")";
-
-        if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, NULL) == SQLITE_OK) {
-
-            TskUnusedSectorsRecord record;
-
-            // get the file_id from the last insert
-            record.fileId = sqlite3_last_insert_rowid(m_db);
-            record.sectStart = thisSectStart;
-            record.sectLen = thisSectEnd - thisSectStart;
-
-            std::stringstream name;
-            name << "ufile_" << thisSectStart << "_" << thisSectEnd << "_" << record.fileId;
-            stmt.str("");
-            char *item;
-            item = sqlite3_mprintf("%Q", name.str().c_str());
-            stmt << "UPDATE files SET name = " << item << ", full_path = " 
-                << item << " WHERE file_id = " << record.fileId;
-            sqlite3_free(item);
-
-            if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, NULL) != SQLITE_OK) {
-                std::wstringstream infoMessage;
-                infoMessage << L"TskImgDBSqlite::addUnusedSector - Error update into files table: " << sqlite3_errmsg(m_db);
-                LOGERROR(infoMessage.str());
-                rc = -1;
-                break;
-            }
-
-            stmt.str("");
-            stmt << "INSERT INTO unused_sectors (file_id, sect_start, sect_len, vol_id) VALUES (" 
-                 << record.fileId << ", " << record.sectStart << ", " << record.sectLen << ", " << volId << ")";
-
-            if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, NULL) != SQLITE_OK) {
-                std::wstringstream infoMessage;
-                infoMessage << L"TskImgDBSqlite::addUnusedSector - Error insert into unused_sectors table: " << sqlite3_errmsg(m_db);
-                LOGERROR(infoMessage.str());
-                rc = -1;
-                break;
-            }
-
-            unusedSectorsList.push_back(record);
-            rc = 0;
-
-        } else {
-            std::wstringstream infoMessage;
-            infoMessage << L"TskImgDBSqlite::addUnusedSector - Error insert into files table: " << sqlite3_errmsg(m_db);
-            LOGERROR(infoMessage.str());
-            rc = -1;
-            break;
-        }
-        sectorIndex++;
-    } // while
-    return rc;
-}
-
-/**
- * Get unused sector record given a file id.
- * @param fileId File id of the unused sector.
- * @param unusedSectorsRecord TskUnusedSectorsRecord (output)
- * @returns -1 on error, 0 on success.
- */
-int TskImgDBSqlite::getUnusedSector(uint64_t fileId, TskUnusedSectorsRecord & unusedSectorsRecord) const
-{
-    int rc = -1;
-    if (!m_db)
-        return rc;
-
-    std::stringstream stmt;
-    stmt << "SELECT sect_start, sect_len FROM unused_sectors WHERE file_id = " << fileId;
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        if (sqlite3_step(statement) == SQLITE_ROW) {
-            unusedSectorsRecord.fileId = fileId;
-            unusedSectorsRecord.sectStart = (uint64_t)sqlite3_column_int64(statement, 0);
-            unusedSectorsRecord.sectLen = (uint64_t)sqlite3_column_int64(statement, 1);
-            rc = 0;
-        } else {
-            std::wstringstream msg;
-            msg << L"TskDBSqlite::getUnusedSector - Error querying unused_sectors table for file_id "
-                << fileId ;
-            LOGERROR(msg.str());
-        }
-    } else {
-        std::wstringstream msg;
-        msg << L"TskDBSqlite::getUnusedSector - Error querying unused_sectors table: "
-            << sqlite3_errmsg(m_db) ;
-        LOGERROR(msg.str());
-    }
-    return rc;
-}
-
-///BLACKBOARD FUNCTIONS
-/**
- * Add the given blackboard attribute to the database
- * @param attr input attribute. should be fully populated
- */
-void TskImgDBSqlite::addBlackboardAttribute(TskBlackboardAttribute attr)
-{
-    if (!m_db)
-        throw TskException("No database.");
-
-    std::stringstream str;
-    char *item;
-    sqlite3_stmt * statement;
-
-    str << "INSERT INTO blackboard_attributes (artifact_id, source, context, attribute_type_id, value_type, "
-        "value_byte, value_text, value_int32, value_int64, value_double, obj_id) VALUES (";
-        str << attr.getArtifactID() << ", ";
-    item = sqlite3_mprintf("%Q", attr.getModuleName().c_str()); str << item << ", ";
-    sqlite3_free(item);
-    item = sqlite3_mprintf("%Q", attr.getContext().c_str()); str << item << ", ";
-    sqlite3_free(item);
-    str << attr.getAttributeTypeID() << ", ";
-    str << attr.getValueType() << ", ";
-    switch (attr.getValueType()) {
-        case TSK_BYTE:
-            str << " ?, '', 0, 0, 0.0";
-            break;
-        case TSK_STRING:
-            item = sqlite3_mprintf("%Q", attr.getValueString().c_str());
-            str << " '', " << item << ", 0, 0, 0.0";
-            sqlite3_free(item);
-            break;
-        case TSK_INTEGER:
-            str << " '', '', " << attr.getValueInt() << ",     0, 0.0";
-            break;
-        case TSK_LONG:
-            str << " '', '', 0, " << attr.getValueLong() << ",     0.0";
-            break;
-        case TSK_DOUBLE:
-            str << " '', '', 0, 0, " << setprecision(20) << attr.getValueDouble();
-            break;
-    };
-    str << ", " << attr.getObjectID();
-    str << ")";
-
-    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        int result = SQLITE_OK;
-        unsigned char *pBuf = 0;
-        if (attr.getValueType() == TSK_BYTE) {
-            // Bind the byte vector
-            int a_size = attr.getValueBytes().size();
-            pBuf = new unsigned char[a_size];
-            for (int i = 0; i < a_size; i++) {
-                pBuf[i] = attr.getValueBytes()[i];
-            }
-            result = sqlite3_bind_blob(statement, 1, pBuf, a_size, SQLITE_STATIC);
-        }
-        if (result == SQLITE_OK) {
-            result = sqlite3_step(statement);
-            if (!(result == SQLITE_ROW || result == SQLITE_DONE)) {
-                sqlite3_finalize(statement);
-                if (pBuf) delete [] pBuf;
-                throw TskException("TskImgDBSqlite::addBlackboardAttribute - Insert failed");
-            }
-        } else {
-            std::wstringstream infoMessage;
-            infoMessage << L"TskImgDBSqlite::addBlackboardAttribute - Error in sqlite3_bind_blob: " << sqlite3_errmsg(m_db);
-            LOGERROR(infoMessage.str());
-            throw TskException("TskImgDBSqlite::addBlackboardAttribute - Insert failed");
-        }
-        sqlite3_finalize(statement);
-        if (pBuf) delete [] pBuf;
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::addBlackboardAttribute - Error adding data to blackboard table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        throw TskException("TskImgDBSqlite::addBlackboardAttribute - Insert failed");
-    }
-}
-
-/**
- * Get the display name for the given artifact type id
- * @param artifactTypeID artifact type id
- * @returns display name
- */
-string TskImgDBSqlite::getArtifactTypeDisplayName(int artifactTypeID){
-    if (!m_db)
-        throw TskException("No database.");
-
-    std::stringstream str;
-    sqlite3_stmt * statement;
-    std::string displayName = "";
-
-    str << "SELECT display_name FROM blackboard_artifact_types WHERE artifact_type_id = " << artifactTypeID;
-
-    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK){
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) {
-            displayName = (char *)sqlite3_column_text(statement, 0);
-        }
-        else{
-            std::wstringstream infoMessage;
-            infoMessage << L"TskImgDBSqlite::getArtifactTypeDisplayName: " << sqlite3_errmsg(m_db);
-            LOGERROR(infoMessage.str());
-            throw TskException("TskImgDBSqlite::getArtifactTypeDisplayName - No artifact type with that ID");
-        }
-        sqlite3_finalize(statement);
-        return displayName;
-    }
-    else{
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getArtifactTypeDisplayName: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        throw TskException("TskImgDBSqlite::getArtifactTypeDisplayName - Select failed");
-    }
-}
-
-/**
- * Get the artifact type id for the given artifact type string
- * @param artifactTypeString display name
- * @returns artifact type id
- */
-int TskImgDBSqlite::getArtifactTypeID(string artifactTypeString){
-    if (!m_db)
-        throw TskException("No database.");
-
-    std::stringstream str;
-    sqlite3_stmt * statement;
-    int typeID;
-
-    str << "SELECT artifact_type_id FROM blackboard_artifact_types WHERE type_name = " << artifactTypeString;
-
-    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK){
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) {
-            typeID = (int) sqlite3_column_int(statement, 0);
-        }
-        else{
-            std::wstringstream infoMessage;
-            infoMessage << L"TskImgDBSqlite::getArtifactTypeID: " << sqlite3_errmsg(m_db);
-            LOGERROR(infoMessage.str());
-            throw TskException("TskImgDBSqlite::getArtifactTypeID - No artifact type with that name");
-        }
-        sqlite3_finalize(statement);
-        return typeID;
-    }
-    else{
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getArtifactTypeID: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        throw TskException("TskImgDBSqlite::getArtifactTypeID - Select failed");
-    }
-}
-
-/**
- * Get the artifact type name for the given artifact type id
- * @param artifactTypeID id
- * @returns artifact type name
- */
-string TskImgDBSqlite::getArtifactTypeName(int artifactTypeID){
-    if (!m_db)
-        throw TskException("No database.");
-
-    std::stringstream str;
-    sqlite3_stmt * statement;
-    std::string typeName = "";
-
-    str << "SELECT type_name FROM blackboard_artifact_types WHERE artifact_type_id = " << artifactTypeID;
-
-    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK){
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) {
-            typeName = (char *)sqlite3_column_text(statement, 0);
-        }
-        else{
-            std::wstringstream infoMessage;
-            infoMessage << L"TskImgDBSqlite::getArtifactTypeName: " << sqlite3_errmsg(m_db);
-            LOGERROR(infoMessage.str());
-            throw TskException("TskImgDBSqlite::getArtifactTypeName - No artifact type with that ID");
-        }
-        sqlite3_finalize(statement);
-        return typeName;
-    }
-    else{
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getArtifactTypeName: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        throw TskException("TskImgDBSqlite::getArtifactTypeName - Select failed");
-    }
-}
-
-/**
- * Get the display name for the given attribute type id
- * @param attributeTypeID attribute type id
- * @returns display name
- */
-string TskImgDBSqlite::getAttributeTypeDisplayName(int attributeTypeID){
-    if (!m_db)
-        throw TskException("No database.");
-
-    std::stringstream str;
-    sqlite3_stmt * statement;
-    std::string displayName = "";
-
-    str << "SELECT display_name FROM blackboard_attribute_types WHERE attribute_type_id = " << attributeTypeID;
-
-    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK){
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) {
-            displayName = (char *)sqlite3_column_text(statement, 0);
-        }
-        else{
-            std::wstringstream infoMessage;
-            infoMessage << L"TskImgDBSqlite::getAttributeTypeDisplayName: " << sqlite3_errmsg(m_db);
-            LOGERROR(infoMessage.str());
-            throw TskException("TskImgDBSqlite::getAttributeTypeDisplayName - No attribute type with that ID");
-        }
-        sqlite3_finalize(statement);
-        return displayName;
-    }
-    else{
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getAttributeTypeDisplayName: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        throw TskException("TskImgDBSqlite::getAttributeTypeDisplayName - Select failed");
-    }
-}
-
-/**
- * Get the attribute type id for the given artifact type string
- * @param attributeTypeString display name
- * @returns attribute type id
- */
-int TskImgDBSqlite::getAttributeTypeID(string attributeTypeString){
-    if (!m_db)
-        throw TskException("No database.");
-
-    std::stringstream str;
-    sqlite3_stmt * statement;
-    int typeID;
-
-    str << "SELECT attribute_type_id FROM blackboard_attribute_types WHERE type_name = " << attributeTypeString;
-
-    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK){
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) {
-            typeID = (int) sqlite3_column_int(statement, 0);
-        }
-        else{
-            std::wstringstream infoMessage;
-            infoMessage << L"TskImgDBSqlite::getAttributeTypeID: " << sqlite3_errmsg(m_db);
-            LOGERROR(infoMessage.str());
-            throw TskException("TskImgDBSqlite::getAttributeTypeID - No artifact type with that name");
-        }
-        sqlite3_finalize(statement);
-        return typeID;
-    }
-    else{
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getAttributeTypeID: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        throw TskException("TskImgDBSqlite::getAttributeTypeID - Select failed");
-    }
-}
-
-/**
- * Get the attribute type name for the given artifact type id
- * @param attributeTypeID id
- * @returns attribute type name
- */
-string TskImgDBSqlite::getAttributeTypeName(int attributeTypeID){
-    if (!m_db)
-        throw TskException("No database.");
-
-    std::stringstream str;
-    sqlite3_stmt * statement;
-    std::string typeName = "";
-
-    str << "SELECT type_name FROM blackboard_attribute_types WHERE attribute_type_id = " << attributeTypeID;
-
-    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK){
-        int result = sqlite3_step(statement);
-        if (result == SQLITE_ROW) {
-            typeName = (char *)sqlite3_column_text(statement, 0);
-        }
-        else{
-            std::wstringstream infoMessage;
-            infoMessage << L"TskImgDBSqlite::getAttributeTypeName: " << sqlite3_errmsg(m_db);
-            LOGERROR(infoMessage.str());
-            throw TskException("TskImgDBSqlite::getAttributeTypeName - No attribute type with that ID");
-        }
-        sqlite3_finalize(statement);
-        return typeName;
-    }
-    else{
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::getAttributeTypeName: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        throw TskException("TskImgDBSqlite::getAttributeTypeName - Select failed");
-    }
-}
-
-/**
- * Get all artifacts by performing a SQL Select statement with the given where clause.
- * @param condition The SQL select where clause that should be used in the query.
- * @returns vector of matching artifacts
- */
-vector<TskBlackboardArtifact> TskImgDBSqlite::getMatchingArtifacts(string condition)
-{
-    if (!m_db)
-        throw TskException("No database.");
-    
-    vector<TskBlackboardArtifact> artifacts;
-    std::string stmt("SELECT blackboard_artifacts.artifact_id, blackboard_artifacts.obj_id, blackboard_artifacts.artifact_type_id FROM blackboard_artifacts");
-
-    constructStmt(stmt, condition);
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) 
-    {
-        while (sqlite3_step(statement) == SQLITE_ROW) 
-        {
-            int artifactTypeID = sqlite3_column_int(statement, 2);
-
-            artifacts.push_back(TskImgDB::createArtifact(sqlite3_column_int64(statement, 0), sqlite3_column_int64(statement, 1), artifactTypeID));
-        }
-        sqlite3_finalize(statement);
-    } else 
-    {
-        std::wstringstream msg;
-        msg << L"TskImgDBSqlite::getMatchingArtifacts - Error getting artifacts: " << sqlite3_errmsg(m_db);
-        LOGERROR(msg.str());
-        throw TskException("TskImgDBSqlite::getMatchingArtifacts - Select failed");
-    }
-    return artifacts;
-}
-
-/**
- * Get all attributes with that match the given where clause 
- * @param condition where clause to use for matching
- * @returns vector of matching attributes
- */
-vector<TskBlackboardAttribute> TskImgDBSqlite::getMatchingAttributes(string condition)
-{
-    if (!m_db)
-        throw TskException("No database.");
-    
-    vector<TskBlackboardAttribute> attributes;
-    std::string stmt("SELECT blackboard_attributes.artifact_id, blackboard_attributes.source, blackboard_attributes.context, blackboard_attributes.attribute_type_id, blackboard_attributes.value_type, blackboard_attributes.value_byte, blackboard_attributes.value_text, blackboard_attributes.value_int32, blackboard_attributes.value_int64, blackboard_attributes.value_double, blackboard_attributes.obj_id FROM blackboard_attributes ");
-
-    constructStmt(stmt, condition);
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) 
-    {
-        while (sqlite3_step(statement) == SQLITE_ROW) 
-        { 
-            int blobSize = sqlite3_column_bytes(statement, 6);
-            const unsigned char *pBlob = (const unsigned char *)sqlite3_column_blob(statement, 6);
-            vector<unsigned char> bytes;
-            bytes.reserve(blobSize);
-            for (int i = 0; i < blobSize; i++) {
-                bytes.push_back((unsigned char)pBlob[i]);
-            }
-
-            attributes.push_back(TskImgDB::createAttribute(sqlite3_column_int64(statement, 0),sqlite3_column_int(statement, 3), sqlite3_column_int64(statement, 10), std::string((char *)sqlite3_column_text(statement, 1)), 
-                std::string((char *)sqlite3_column_text(statement, 2)), (TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE) sqlite3_column_int(statement, 4), sqlite3_column_int(statement, 7), 
-                sqlite3_column_int64(statement, 8), sqlite3_column_double(statement, 9), std::string((char *)sqlite3_column_text(statement, 6)), bytes));
-        }
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream msg;
-        msg << L"TskImgDBSqlite::getMatchingAttributes - Error getting attributes: " << sqlite3_errmsg(m_db);
-        LOGERROR(msg.str());
-        throw TskException("TskImgDBSqlite::getMatchingAttributes - Select failed");
-    }
-    return attributes;
-}
-
-/**
- * Create a new blackboard artifact with the given type id and file id
- * @param artifactTypeID artifact type id
- * @param file_id associated file id
- * @returns the new artifact
- */
-TskBlackboardArtifact TskImgDBSqlite::createBlackboardArtifact(uint64_t file_id, int artifactTypeID)
-{
-    if (!m_db)
-        throw TskException("No database.");
-
-    uint64_t artifactId = 0;
-    std::stringstream str;
-    sqlite3_stmt * statement;
-
-    str << "INSERT INTO blackboard_artifacts (artifact_id, obj_id, artifact_type_id) VALUES (NULL, " << file_id << ", " << artifactTypeID << ")";
-
-    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        if (!(sqlite3_step(statement) == SQLITE_DONE)) {
-            sqlite3_finalize(statement);
-            throw TskException("TskImgDBSqlite::addBlackboardInfo - Insert failed");
-        }
-        // select max(artifact_id) from blackboard
-        str.str("");
-        str << "SELECT artifact_id from blackboard_artifacts WHERE obj_id = " << file_id << " AND artifact_type_id = " << artifactTypeID;
-        sqlite3_finalize(statement);
-        if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-            while(sqlite3_step(statement) == SQLITE_ROW) {
-                uint64_t newID = sqlite3_column_int64(statement, 0);
-                if(newID > artifactId)
-                    artifactId = newID;
-            }
-        } else {
-            sqlite3_finalize(statement);
-            throw TskException("TskImgDBSqlite::newBlackboardArtifact - Select artifact_id failed");
-        }
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::newBlackboardArtifact - Error adding new artifact: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        throw TskException("TskImgDBSqlite::newBlackboardArtifact - Insert failed");
-    }
-
-    return TskImgDB::createArtifact(artifactId, file_id, artifactTypeID);
-}
-
-/**
- * Add a new artifact type with the given name, display name and id 
- * @param artifactTypeName type name
- * @param displayName display name
- * @param typeID type id
- */
-void TskImgDBSqlite::addArtifactType(int typeID, string artifactTypeName, string displayName)
-{
-    if (!m_db)
-        throw TskException("No database.");
-
-    std::stringstream str;
-    sqlite3_stmt * statement;
-
-    str << "SELECT * FROM blackboard_artifact_types WHERE type_name = '" << artifactTypeName << "'";
-
-    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        if (!(sqlite3_step(statement) == SQLITE_ROW)) {
-            sqlite3_finalize(statement);
-            str.str("");
-            str << "INSERT INTO blackboard_artifact_types (artifact_type_id, type_name, display_name) VALUES (" << typeID << " , '" << artifactTypeName << "', '" << displayName << "')";
-            if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-                if (!(sqlite3_step(statement) == SQLITE_DONE)) {
-                    sqlite3_finalize(statement);
-                    std::wstringstream infoMessage;
-                    infoMessage << L"TskImgDBSqlite::addArtifactType - Error adding data to blackboard table: " << sqlite3_errmsg(m_db);
-                    LOGERROR(infoMessage.str());
-                    throw TskException("TskImgDBSqlite::addArtifactType - Artifact type insert failed");
-                }
-            }
-        }
-        else{
-            sqlite3_finalize(statement);
-            throw TskException("TskImgDBSqlite::addArtifactType - Artifact type with that name already exists");
-        }
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::addArtifactType - Error adding data to blackboard table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        throw TskException("TskImgDBSqlite::addArtifactType - Insert failed");
-    }
-}
-
-/**
- * Add a new attribute type with the given name, display name and id 
- * @param attributeTypeName type name
- * @param displayName display name
- * @param typeID type id
- */
-void TskImgDBSqlite::addAttributeType(int typeID, string attributeTypeName, string displayName)
-{
-    if (!m_db)
-        throw TskException("No database.");
-
-    std::stringstream str;
-    sqlite3_stmt * statement;
-
-    str << "SELECT * FROM blackboard_attribute_types WHERE type_name = '" << attributeTypeName << "'";
-
-    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-        if (!(sqlite3_step(statement) == SQLITE_ROW)) {
-            sqlite3_finalize(statement);
-            str.str("");
-            str << "INSERT INTO blackboard_attribute_types (attribute_type_id, type_name, display_name) VALUES (" << typeID << " , '" << attributeTypeName << "', '" << displayName << "')";
-            if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
-                if (!(sqlite3_step(statement) == SQLITE_DONE)) {
-                    sqlite3_finalize(statement);
-                    std::wstringstream infoMessage;
-                    infoMessage << L"TskImgDBSqlite::addAttributeType - Error adding data to blackboard table: " << sqlite3_errmsg(m_db);
-                    LOGERROR(infoMessage.str());
-                    throw TskException("TskImgDBSqlite::addAttributeType - Attribute type insert failed");
-                }
-            }
-        } else {
-            sqlite3_finalize(statement);
-            throw TskException("TskImgDBSqlite::addAttributeType - Attribute type with that name already exists");
-        }
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream infoMessage;
-        infoMessage << L"TskImgDBSqlite::addAttributeType - Error adding data to blackboard table: " << sqlite3_errmsg(m_db);
-        LOGERROR(infoMessage.str());
-        throw TskException("TskImgDBSqlite::addAttributeType - Insert failed");
-    }
-}
-
-/**
- * Get all artifacts with the given type id, type name, and file id
- * @param artifactTypeID type id
- * @param artifactTypeName type name
- * @param file_id file id
- */
-vector<TskBlackboardArtifact> TskImgDBSqlite::getArtifactsHelper(uint64_t file_id, int artifactTypeID, string artifactTypeName)
-{
-    if (!m_db)
-        throw TskException("No database.");
-    
-    vector<TskBlackboardArtifact> artifacts;
-    std::stringstream stmt;
-    stmt << "SELECT artifact_id, obj_id, artifact_type_id FROM blackboard_artifacts WHERE obj_id = " << file_id << " AND artifact_type_id = " << artifactTypeID;
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) 
-    {
-        while (sqlite3_step(statement) == SQLITE_ROW) 
-        {
-            int artifactTypeID = sqlite3_column_int(statement, 2);
-
-            artifacts.push_back(TskImgDB::createArtifact(sqlite3_column_int64(statement, 0), file_id, artifactTypeID));
-        }
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream msg;
-        msg << L"TskImgDBSqlite::getArtifactsHelper - Error getting artifacts: " << sqlite3_errmsg(m_db);
-        LOGERROR(msg.str());
-        throw TskException("TskImgDBSqlite::getArtifactsHelper - Select failed");
-    }
-    return artifacts;
-}
-
-vector<int> TskImgDBSqlite::findAttributeTypes(int artifactTypeId)
-{
-    if (!m_db) {
-        throw TskException("No database.");
-    }
-    vector<int> attrTypes;
-    std::stringstream stmt;
-    stmt << "SELECT DISTINCT(attribute_type_id) FROM blackboard_attributes JOIN blackboard_artifacts ON blackboard_attributes.artifact_id = blackboard_artifacts.artifact_id WHERE artifact_type_id = " << artifactTypeId;
-
-    sqlite3_stmt * statement;
-    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) 
-    {
-        while (sqlite3_step(statement) == SQLITE_ROW) 
-        {
-            int artifactTypeID = sqlite3_column_int(statement, 0);
-
-            attrTypes.push_back(artifactTypeID);
-        }
-        sqlite3_finalize(statement);
-    } else {
-        std::wstringstream msg;
-        msg << L"TskImgDBSqlite::findAttributeTypes - Error finding attribute types: " << sqlite3_errmsg(m_db);
-        LOGERROR(msg.str());
-        throw TskException("TskImgDBSqlite::findAttributeTypes - Select failed");
-    }
-    return attrTypes;
-}
-
-std::string TskImgDBSqlite::quote(const std::string str) const
-{
-    char *item = sqlite3_mprintf("%Q", str.c_str());
-    std::string returnStr(item);
-    sqlite3_free(item);
-    return returnStr;
-}
-
-void TskImgDBSqlite::executeStatement(const std::string &stmtToExecute, sqlite3_stmt *&statement, const std::string &caller) const
-{
-    if (sqlite3_prepare_v2(m_db, stmtToExecute.c_str(), -1, &statement, 0) != SQLITE_OK)
-    {
-        sqlite3_finalize(statement);
-        std::ostringstream msg;
-        msg << caller << " : error executing " << stmtToExecute << " : " << sqlite3_errmsg(m_db);
-        throw TskException(msg.str());
-    }
-}
-
-
+/*
+ *
+ *  The Sleuth Kit
+ *
+ *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ *  reserved.
+ *
+ *  This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskImgDBSqlite.cpp
+ * A SQLite based implementation of the framework data access layer.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <cassert>
+#include <iostream>
+#include <sstream>
+#include <iomanip>
+#include <map>
+#include <assert.h>
+
+#include "Poco/UnicodeConverter.h"
+#include "Poco/Thread.h"
+
+#include "TskImgDBSqlite.h"
+#include "TskServices.h"
+#include "tsk/framework/utilities/TskException.h"
+#include "TskDBBlackboard.h"
+
+#include "Poco/UnicodeConverter.h"
+#include "Poco/NumberParser.h"
+#include "Poco/Path.h"
+
+#define IMGDB_CHUNK_SIZE 1024*1024*1 // what size chunks should the database use when growing and shrinking
+#define IMGDB_MAX_RETRY_COUNT 50    // how many times will we retry a SQL statement
+#define IMGDB_RETRY_WAIT 100   // how long (in milliseconds) are we willing to wait between retries
+
+/**
+ * Set the database location.  Must call
+ * initialize() before the object can be used.
+ * @param a_outpath Directory to store the database in. This 
+ * directory must already exist.
+*/
+TskImgDBSqlite::TskImgDBSqlite(const char * a_outpath)
+{
+    strncpy(m_outPath, a_outpath, 256);
+    // ensure that the path ends with a '/'
+    if (m_outPath[strlen(m_outPath)-1] != '/') {
+        int len1 = strlen(m_outPath);
+        m_outPath[len1] = '/';
+        m_outPath[len1+1] = '\0';
+    }
+    strncpy(m_dbFilePath, m_outPath, 256);
+    strncat(m_dbFilePath, "image.db", 256);
+    m_db = NULL;
+}
+
+TskImgDBSqlite::~TskImgDBSqlite()
+{
+    (void) close();
+}
+
+int TskImgDBSqlite::close()
+{
+    if (m_db) {
+        if (sqlite3_close(m_db) == SQLITE_OK)
+            m_db = NULL;
+        else
+            return 1;
+    }
+    return 0;
+}
+
+int TskImgDBSqlite::dropTables()
+{
+    if (!m_db)
+        return 1;
+
+    char * errmsg;
+    // Drop all the tables. No error checking just Teutonic Destruction...
+    sqlite3_exec(m_db, "DROP TABLE db_info",NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE image_info",NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE image_names",NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE vol_info",NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE fs_info",NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE fs_files",NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE fs_blocks",NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE files",NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE derived_files",NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE carved_files",NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE carved_sectors",NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE alloc_unalloc_map", NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE blackboard_artifacts", NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE blackboard_attributes", NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE blackboard_artifact_types", NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE blackboard_attribute_types", NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE file_hashes", NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE modules", NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE module_status", NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE unalloc_img_status", NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP TABLE unused_sectors", NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP INDEX attrs_artifact_id", NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP INDEX attrs_attribute_type", NULL, NULL, &errmsg);
+    sqlite3_exec(m_db, "DROP INDEX attrs_obj_id", NULL, NULL, &errmsg);
+
+    return 0;
+}
+
+int TskImgDBSqlite::initialize()
+{
+    std::wstringstream infoMessage;
+    char * errmsg;
+
+    // Open the database.
+    if (open() != 0)
+    {
+        // Error message will have been logged by open()
+        return 1;
+    }
+
+    // Clean up the whole database.
+    dropTables();
+
+    std::string stmt;
+
+    sqlite3_stmt *statement;
+
+    // set page size -- 4k is much faster on Windows than the default
+    executeStatement("PRAGMA page_size = 4096;", statement, "TskImgDBSqlite::initialize");
+    sqlite3_finalize(statement);
+
+    // we don't have a mechanism to recover from a crash anyway
+    executeStatement("PRAGMA synchronous = 0;", statement, "TskImgDBSqlite::initialize");
+    sqlite3_finalize(statement);
+
+    // ----- DB_INFO
+    stmt = "CREATE TABLE db_info (name TEXT PRIMARY KEY, version TEXT)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating db_info table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- IMAGE_INFO
+    stmt = "CREATE TABLE image_info (type INTEGER, ssize INTEGER)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating image_info table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- IMAGE_NAMES
+    stmt = "CREATE TABLE image_names (seq INTEGER PRIMARY KEY, name TEXT)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating image_names table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- VOL_INFO
+    stmt = "CREATE TABLE vol_info (vol_id INTEGER PRIMARY KEY, sect_start INTEGER NOT NULL, "
+        "sect_len INTEGER NOT NULL, description TEXT, flags INTEGER)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating vol_info table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- FS_INFO
+    stmt = "CREATE TABLE fs_info (fs_id INTEGER PRIMARY KEY, img_byte_offset INTEGER, "
+        "vol_id INTEGER NOT NULL, fs_type INTEGER, block_size INTEGER, "
+        "block_count INTEGER, root_inum INTEGER, first_inum INTEGER, last_inum INTEGER)";
+    if (sqlite3_exec(m_db, stmt.c_str() , NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating fs_info table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- FILES
+    stmt = "CREATE TABLE files (file_id INTEGER PRIMARY KEY, type_id INTEGER, "
+        "name TEXT, par_file_id INTEGER, dir_type INTEGER, meta_type INTEGER, "
+        "dir_flags INTEGER, meta_flags INTEGER, size INTEGER, ctime INTEGER, "
+        "crtime INTEGER, atime INTEGER, mtime INTEGER, mode INTEGER, uid INTEGER, "
+        "gid INTEGER, status INTEGER, full_path TEXT)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating files table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- FS_FILES
+    stmt = "CREATE TABLE fs_files (file_id INTEGER PRIMARY KEY, fs_id INTEGER, "
+        "fs_file_id INTEGER, attr_type INTEGER, attr_id INTEGER)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK)
+    {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating fs_files table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- FS_BLOCKS
+    stmt = "CREATE TABLE fs_blocks (fs_id INTEGER NOT NULL, file_id INTEGER NOT NULL, seq INTEGER, "
+        "blk_start INTEGER NOT NULL, blk_len INTEGER NOT NULL)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK)
+    {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating fs_blocks table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- CARVED_FILES
+    stmt = "CREATE TABLE carved_files (file_id INTEGER PRIMARY KEY, vol_id INTEGER)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK)
+    {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating carved_files table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- SECTOR_LIST
+    stmt = "CREATE TABLE carved_sectors ("
+        "file_id INTEGER, seq INTEGER, sect_start INTEGER, sect_len INTEGER)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK)
+    {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating carved_sectors table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- DERIVED_FILES
+    stmt = "CREATE TABLE derived_files (file_id INTEGER PRIMARY KEY, derivation_details TEXT)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK)
+    {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating derived_files table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- ALLOC_UNALLOC_MAP
+    stmt = "CREATE TABLE alloc_unalloc_map (vol_id INTEGER, unalloc_img_id INTEGER, "
+        "unalloc_img_sect_start INTEGER, sect_len INTEGER, orig_img_sect_start INTEGER)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK)
+    {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating alloc_unalloc_map table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- FILE_HASHES
+    stmt = "CREATE TABLE file_hashes (file_id INTEGER PRIMARY KEY, md5 TEXT, sha1 TEXT, sha2_256 TEXT, sha2_512 TEXT, known INTEGER)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating file_hashes table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- MODULES
+    stmt = "CREATE TABLE modules (module_id INTEGER PRIMARY KEY, name TEXT UNIQUE NOT NULL, description TEXT)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating module table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- MODULE_STATUS
+    stmt = "CREATE TABLE module_status (file_id INTEGER, module_id INTEGER, status INTEGER, PRIMARY KEY (file_id, module_id))";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating module_status table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- UNALLOC_IMG_STATUS
+    stmt = "CREATE TABLE unalloc_img_status (unalloc_img_id INTEGER PRIMARY KEY, status INTEGER)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating unalloc_img_status table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- UNUSED_SECTORS
+    stmt = "CREATE TABLE unused_sectors (file_id INTEGER PRIMARY KEY, sect_start INTEGER, sect_len INTEGER, vol_id INTEGER)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating unused_sectors table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- BLACKBOARD_ARTIFACTS
+    stmt = "CREATE TABLE blackboard_artifacts (artifact_id INTEGER PRIMARY KEY, obj_id INTEGER NOT NULL, artifact_type_id INTEGER)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating blackboard_artifacts table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- BLACKBOARD_ATTRIBUTES
+    stmt = "CREATE TABLE blackboard_attributes (artifact_id INTEGER NOT NULL, source TEXT, context TEXT, attribute_type_id INTEGER NOT NULL, value_type INTEGER NOT NULL, "
+        "value_byte BLOB, value_text TEXT, value_int32 INTEGER, value_int64 INTEGER, value_double NUMERIC(20, 10), obj_id INTEGER NOT NULL)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating blackboard_attributes table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- BLACKBOARD_ARTIFACT_TYPES
+    stmt = "CREATE TABLE blackboard_artifact_types (artifact_type_id INTEGER PRIMARY KEY, type_name TEXT, display_name TEXT)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating blackboard_artifact_types table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- BLACKBOARD_ATTRIBUTE_TYPES
+    stmt = "CREATE TABLE blackboard_attribute_types (attribute_type_id INTEGER PRIMARY KEY, type_name TEXT, display_name TEXT)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating blackboard_attribute_types table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    // ----- CREATE INDEXES
+    stmt = "CREATE INDEX attrs_artifact_id ON blackboard_attributes(artifact_id)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating attrs_artifact_id index: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    stmt = "CREATE INDEX attrs_attribute_type ON blackboard_attributes(attribute_type_id)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating attrs_attribute_type index: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    stmt = "CREATE INDEX attrs_obj_id ON blackboard_attributes(obj_id)";
+    if (sqlite3_exec(m_db, stmt.c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::initialize - Error creating attrs_obj_id index: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    map<int, TskArtifactNames> artTypes = TskImgDB::getAllArtifactTypes();
+    for (map<int, TskArtifactNames>::iterator it = artTypes.begin(); it != artTypes.end(); it++) {
+        addArtifactType(it->first, it->second.typeName, it->second.displayName);
+    }
+    map<int, TskAttributeNames> attrTypes = TskImgDB::getAllAttributeTypes();
+    for (map<int, TskAttributeNames>::iterator it = attrTypes.begin(); it != attrTypes.end(); it++) {
+        addAttributeType(it->first, it->second.typeName, it->second.displayName);
+    }
+
+    addToolInfo("DBSchema", IMGDB_SCHEMA_VERSION);
+    LOGINFO(L"ImgDB Created.");
+
+    return 0;
+}
+
+/*
+ * If the database file exists this method will open it otherwise
+ * it will create a new database. 
+ * This method also configures the chunk size and the busy handler
+ * for the newly opened database.
+*/
+int TskImgDBSqlite::open()
+{
+    std::wstringstream infoMessage;
+
+#if 0
+    if (sqlite3_open16(m_dbFilePath, &m_db)) 
+#else
+    if (sqlite3_open(m_dbFilePath, &m_db)) 
+#endif
+    {
+        infoMessage << L"TskImgDBSqlite::open - Can't create new database: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+
+        sqlite3_close(m_db);
+        return 1;
+    }
+
+    // The chunk size setting defines by how much the database will grow
+    // or shrink. The primary motivation behind this setting is to reduce
+    // database file fragmentation and potential performance improvements.
+    // We, however, are using this setting as a workaround for database
+    // corruption issues we have been experiencing when the database is
+    // updated by multiple concurrent processes.
+    // Database corruption was occuring when SQLite determined that the 
+    // number of database pages in the database was greater than a value
+    // that it had previously cached. 
+    // This workaround is a crude mechanism to get around that situation.
+    int chunkSize = IMGDB_CHUNK_SIZE;
+
+    if (sqlite3_file_control(m_db, NULL, SQLITE_FCNTL_CHUNK_SIZE, &chunkSize) != SQLITE_OK)
+    {
+        infoMessage << L"TskImgDBSqlite::open - Failed to set chunk size: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+
+        sqlite3_close(m_db);
+        return 1;
+    }
+
+    // Register a busy handler that will retry statements in situations
+    // where the database is locked by another process.
+    if (sqlite3_busy_handler(m_db, TskImgDBSqlite::busyHandler, m_db) != SQLITE_OK)
+    {
+        infoMessage <<  L"TskImgDBSqlite::open - Failed to set busy handler: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+
+        sqlite3_close(m_db);
+        return 1;
+    }
+
+    LOGINFO(L"ImgDB Opened.");
+
+    return 0;
+}
+
+int TskImgDBSqlite::addToolInfo(const char* name, const char* version)
+{
+    char *errmsg;
+    char stmt[1024];
+
+    if (!m_db)
+        return 1;
+
+    sqlite3_snprintf(1024, stmt, 
+        "INSERT INTO db_info (name, version) VALUES ('%q', '%q');",
+        name, version);
+    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK)
+    {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::addToolInfo - Error adding data to db_info table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    return 0;
+}
+
+int TskImgDBSqlite::addImageInfo(int type, int size)
+{
+    char *errmsg;
+    std::stringstream stmt;
+
+    if (!m_db)
+        return 1;
+
+    stmt << "INSERT INTO image_info (type, ssize) VALUES ("<< type << ", " << size << ");";
+    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) != SQLITE_OK)
+    {
+        std::wstringstream infoMessage;
+        infoMessage <<  L"TskImgDBSqlite::addImageInfo - Error adding data to image_info table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    return 0;
+}
+
+int TskImgDBSqlite::addImageName(char const *imgPath)
+{
+    char *errmsg;
+    char stmt[1024];
+
+    if (!m_db)
+        return 1;
+
+    sqlite3_snprintf(1024, stmt,
+        "INSERT INTO image_names (seq, name) VALUES (NULL, '%q')",
+        imgPath);
+    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK)
+    {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::addImageName - Error adding data to image_names table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+    return 0;
+}
+
+/*
+ * Adds the sector addresses of the volumes into the db.
+ */
+int TskImgDBSqlite::addVolumeInfo(const TSK_VS_PART_INFO * vs_part)
+{
+    char stmt[1024];
+    char * errmsg;
+
+    if (!m_db)
+        return 1;
+
+    sqlite3_snprintf(1024, stmt,
+        "INSERT INTO vol_info (vol_id, sect_start, sect_len, description, flags) VALUES (%d,%"
+        PRIuOFF ",%" PRIuOFF ",'%q',%d)", (int)vs_part->addr,
+        vs_part->start, vs_part->len, vs_part->desc, vs_part->flags);
+
+    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::addVolumeInfo - Error adding data to vol_info table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    return 0;
+}
+
+int TskImgDBSqlite::addFsInfo(int volId, int fsId, const TSK_FS_INFO * fs_info)
+{
+    std::stringstream stmt;
+    char * errmsg;
+
+    if (!m_db)
+        return 1;
+
+    stmt <<
+        "INSERT INTO fs_info (fs_id, img_byte_offset, vol_id, fs_type, block_size, "
+        "block_count, root_inum, first_inum, last_inum) VALUES (" << 
+        fsId << ", " << fs_info->offset << ", " <<  volId << ", " << 
+        (int)fs_info->ftype << ", " <<  fs_info->block_size << ", " <<  fs_info->block_count << ", " << 
+        fs_info->root_inum << ", " <<  fs_info->first_inum << ", " <<  fs_info->last_inum << ")";
+
+    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::addFsInfo - Error adding data to fs_info table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    return 0;
+}
+
+
+/**
+ * Given a file system and fs_file_id, return the file_id.
+ */
+uint64_t TskImgDBSqlite::getFileId(int a_fsId, uint64_t a_fsFileId) const
+{
+    if (!m_db)
+        return 0;
+
+    sqlite3_stmt * statement;
+    std::stringstream stmt;
+    uint64_t fileId = 0;
+    stmt << "SELECT file_id FROM fs_files WHERE fs_id=" << a_fsId << " and fs_file_id=" << a_fsFileId << ";";
+
+    /********** FIND the unallocated volumes *************/
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) {
+            fileId = (uint64_t)sqlite3_column_int64(statement, 0);
+        }
+        sqlite3_finalize(statement);
+    }
+    else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getFileId - Error querying fs_files table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+
+        return 0;
+    }
+    return fileId;
+}
+
+
+int TskImgDBSqlite::getFileRecord(const uint64_t fileId, TskFileRecord& fileRecord) const
+{
+    if (!m_db)
+        return -1;
+
+    int ret = 0;
+
+    sqlite3_stmt * statement;
+    std::stringstream stmt;
+
+    stmt << "SELECT f.file_id, f.type_id, f.name, f.par_file_id, f.dir_type, f.meta_type, f.dir_flags, "
+        << "f.meta_flags, f.size, f.ctime, f.crtime, f.atime, f.mtime, f.mode, f.uid, f.gid, f.status, f.full_path, "
+        << "fh.md5, fh.sha1, fh.sha2_256, fh.sha2_512 "
+        << "FROM files f LEFT OUTER JOIN file_hashes fh ON f.file_id = fh.file_id WHERE f.file_id=" << fileId;
+
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) 
+    {
+        int result = sqlite3_step(statement);
+
+        if (result == SQLITE_ROW) 
+        {
+            fileRecord.fileId       = sqlite3_column_int64(statement, 0);
+            fileRecord.typeId = (TskImgDB::FILE_TYPES)sqlite3_column_int(statement, 1);
+            fileRecord.name         = (char *)sqlite3_column_text(statement, 2);
+            fileRecord.parentFileId = sqlite3_column_int64(statement, 3);
+            fileRecord.dirType = (TSK_FS_NAME_TYPE_ENUM) sqlite3_column_int(statement, 4);
+            fileRecord.metaType = (TSK_FS_META_TYPE_ENUM) sqlite3_column_int(statement, 5);
+            fileRecord.dirFlags = (TSK_FS_NAME_FLAG_ENUM) sqlite3_column_int(statement, 6);
+            fileRecord.metaFlags = (TSK_FS_META_FLAG_ENUM) sqlite3_column_int(statement, 7);
+            fileRecord.size         = sqlite3_column_int64(statement, 8);
+            fileRecord.ctime        = sqlite3_column_int(statement, 9);
+            fileRecord.crtime       = sqlite3_column_int(statement, 10);
+            fileRecord.atime        = sqlite3_column_int(statement, 11);
+            fileRecord.mtime        = sqlite3_column_int(statement, 12);
+            fileRecord.mode = (TSK_FS_META_MODE_ENUM)sqlite3_column_int(statement, 13);
+            fileRecord.uid          = sqlite3_column_int(statement, 14);
+            fileRecord.gid          = sqlite3_column_int(statement, 15);
+            fileRecord.status = (TskImgDB::FILE_STATUS) sqlite3_column_int(statement, 16);
+            fileRecord.fullPath     = (char *)sqlite3_column_text(statement, 17);
+
+            if (sqlite3_column_type(statement, 18) == SQLITE_TEXT)
+                fileRecord.md5      = (char *)sqlite3_column_text(statement, 18);
+            if (sqlite3_column_type(statement, 19) == SQLITE_TEXT)
+                fileRecord.sha1     = (char *)sqlite3_column_text(statement, 19);
+            if (sqlite3_column_type(statement, 20) == SQLITE_TEXT)
+                fileRecord.sha2_256 = (char *)sqlite3_column_text(statement, 20);
+            if (sqlite3_column_type(statement, 21) == SQLITE_TEXT)
+                fileRecord.sha2_512 = (char *)sqlite3_column_text(statement, 21);
+        }
+        else 
+        {
+            std::wstringstream msg;
+            msg << L"TskImgDBSqlite::getFileRecord - Error querying files table for file id: " << fileId;
+            LOGERROR(msg.str());
+
+            ret = -1;
+        }
+        sqlite3_finalize(statement);
+    }
+    else 
+    {
+        std::wstringstream msg;
+        msg << L"TskImgDBSqlite::getFileRecord - Error querying files table for file id: " << fileId;
+        LOGERROR(msg.str());
+
+        ret = -1;
+    }
+
+    return ret;
+}
+
+int TskImgDBSqlite::addFsFileInfo(int fileSystemID, const TSK_FS_FILE *fileSystemFile, const char *fileName, int fileSystemAttrType, int fileSystemAttrID, uint64_t &fileID, const char *filePath)
+{
+    const std::string msgPrefix = "TskImgDBSqlite::addFsFileInfo : ";
+    fileID = 0;
+
+    if (!m_db)
+    {
+        return -1;
+    }
+
+    // Construct the full path of the file within the image.
+    std::string fullpath(filePath);
+    fullpath.append(fileName);
+
+    // Replace all single quotes in the file name with double single quotes to comply with SQLLite syntax.
+    std::string fileNameAsString(fileName);
+    size_t found = fileNameAsString.find("'");
+    if (found != std::string::npos) //Replace it and replace all its subsequent occurrences.
+    {
+        fileNameAsString.replace(found,1,"''");
+
+        while ((found=fileNameAsString.find("'", found+2)) != std::string::npos)// found+2 because we want to move past the newly inserted single quote.
+        {
+            fileNameAsString.replace(found,1,"''");
+        }
+    }
+
+    // Now remove all the control characters from the file name.
+    for (int codePoint=1; codePoint < 32; codePoint++)
+    {
+        char codePointAsHex[10];
+        codePointAsHex[0] = codePoint;
+        codePointAsHex[1] = '\0';
+        std::string stringToRemove(codePointAsHex);
+
+        found = fileNameAsString.find(stringToRemove);
+        if (found != std::string::npos) //Replace it and replace all its subsequent occurrences.
+        {
+            fileNameAsString.replace(found,1,"");
+
+            while ((found=fileNameAsString.find(stringToRemove,found+1)) != std::string::npos)// found+1 because the control characters are just 1 character.
+            {
+                fileNameAsString.replace(found,1,"");
+            }
+        }
+    }
+
+    fileName = fileNameAsString.c_str();
+
+    // Get the file size.
+    TSK_OFF_T size = 0; 
+    const TSK_FS_ATTR *fileSystemAttribute = tsk_fs_file_attr_get_id(const_cast<TSK_FS_FILE*>(fileSystemFile), fileSystemAttrID); 
+    if (fileSystemAttribute)
+    {
+        size = fileSystemAttribute->size;
+    }
+
+    // Get the file metadata, if it's available.
+    int mtime = 0;
+    int crtime = 0;
+    int ctime = 0;
+    int atime = 0;
+    int meta_type = 0;
+    int meta_flags = 0;
+    int meta_mode = 0;
+    int gid = 0;
+    int uid = 0;
+    if (fileSystemFile->meta) 
+    {
+        mtime = static_cast<int>(fileSystemFile->meta->mtime);
+        atime = static_cast<int>(fileSystemFile->meta->atime);
+        ctime = static_cast<int>(fileSystemFile->meta->ctime);
+        crtime = static_cast<int>(fileSystemFile->meta->crtime);
+        meta_type = fileSystemFile->meta->type;
+        meta_flags = fileSystemFile->meta->flags;
+        meta_mode = fileSystemFile->meta->mode;
+        gid = fileSystemFile->meta->gid;
+        uid = fileSystemFile->meta->uid;
+    }
+
+    // Insert into the files table.
+    char stmt[4096];
+    sqlite3_snprintf(4096, stmt,
+        "INSERT INTO files (file_id, type_id, status, name, par_file_id, dir_type, meta_type, "
+        "dir_flags, meta_flags, size, crtime, ctime, atime, mtime, mode, gid, uid, full_path) VALUES (NULL, %d, %d,"
+        "'%q',%llu,%d,%d,%d,%d,%" PRIuOFF",%d,%d,%d,%d,%d,%d,%d,'%q')", 
+        IMGDB_FILES_TYPE_FS, IMGDB_FILES_STATUS_READY_FOR_ANALYSIS, fileName, 
+        findParObjId(fileSystemID, fileSystemFile->name->par_addr), 
+        fileSystemFile->name->type, meta_type,
+        fileSystemFile->name->flags, meta_flags, size, crtime, ctime, atime,
+        mtime, meta_mode, gid, uid, fullpath.c_str());
+    char *errmsg;
+    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) 
+    {
+        std::ostringstream msg;
+        msg << msgPrefix << "Error adding data to files table: " << errmsg;
+        LOGERROR(msg.str());
+
+        sqlite3_free(errmsg);
+        return -1;
+    }
+
+    // Get the file_id from the last insert.
+    fileID = sqlite3_last_insert_rowid(m_db);
+
+    // Insert into the fs_files table.
+    sqlite3_snprintf(4096, stmt,
+        "INSERT INTO fs_files (file_id, fs_id, fs_file_id, attr_type, attr_id) VALUES (%llu,%d,%"
+        PRIuINUM ",%d,%d)", fileID, fileSystemID, fileSystemFile->name->meta_addr, fileSystemAttrType, fileSystemAttrID);
+
+    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) 
+    {
+        std::ostringstream msg;
+        msg << msgPrefix << "Error adding data to fs_files table: " << errmsg;
+        LOGERROR(msg.str());
+
+        sqlite3_free(errmsg);
+        return -1;
+    }
+
+    //if dir, update parent id cache
+    if (meta_type == TSK_FS_META_TYPE_DIR) {
+        storeParObjId(fileSystemID, fileSystemFile->name->meta_addr, fileID);
+    }
+
+    return 0;
+}
+
+/**
+ * Add block info to the database.  This table stores the run information for each file so that we
+ * can map which blocks are used by what files.
+ * @param a_fsId Id that the file is located in
+ * @param a_fileId ID of the file
+ * @param a_sequence The sequence number of this run in the file (0 for the first run, 1 for the second run, etc.)
+ * @param a_blk_addr Block address (the address that the file system uses -- NOT the physical sector addr)
+ * @param a_len The number of blocks in the run
+ * @returns 1 on error
+ */
+int TskImgDBSqlite::addFsBlockInfo(int a_fsId, uint64_t a_fileId, int a_sequence, uint64_t a_blk_addr, uint64_t a_len)
+{
+    std::stringstream stmt;
+    char * errmsg;
+
+    if (!m_db)
+        return 1;
+
+    stmt <<
+        "INSERT INTO fs_blocks (fs_id, file_id, seq, blk_start, blk_len) VALUES (" <<
+        a_fsId << "," << a_fileId << "," << a_sequence << "," << a_blk_addr << "," <<  a_len << ")";
+
+    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::addFsBlockInfo - Error adding data to fs_blocks table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    return 0;
+}
+
+int TskImgDBSqlite::addAllocUnallocMapInfo(int a_volID, int unallocImgID, 
+                                           uint64_t unallocImgStart, uint64_t length, uint64_t origImgStart)
+{
+    std::stringstream stmt;
+    char * errmsg;
+
+    if (!m_db)
+        return 1;
+
+    stmt <<
+        "INSERT INTO alloc_unalloc_map (vol_id, unalloc_img_id, unalloc_img_sect_start, "
+        "sect_len, orig_img_sect_start) VALUES (" <<
+        a_volID << "," << unallocImgID << "," << 
+        unallocImgStart << "," << length << "," <<  origImgStart << ")";
+
+    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::addAllocUnallocMapInfo - Error adding data to alloc_unalloc_map table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    return 0;
+}
+
+/**
+ * Get information on all of the free sectors in an image.
+ *
+ * @return Info on unallocated runs (or NULL on error).  Caller must free this when done.
+ */
+SectorRuns * TskImgDBSqlite::getFreeSectors() const
+{
+    std::stringstream infoMessage;
+    std::stringstream msg;
+
+    if (!m_db)
+        return NULL;
+
+    SectorRuns * sr = new SectorRuns();
+
+    LOGINFO("TskImgDBSqlite::getFreeSectors - Identifying Unallocated Sectors");
+
+    sqlite3_stmt * statement;
+
+    /********** FIND the unallocated volumes *************/
+    if (sqlite3_prepare_v2(m_db,
+        "SELECT vol_id, sect_start, sect_len, flags FROM vol_info;",
+        -1, &statement, 0) == SQLITE_OK) {
+            while(true) {
+                int result = sqlite3_step(statement);
+                if (result == SQLITE_ROW) {
+                    int flags = sqlite3_column_int(statement, 3);
+
+                    int vol_id = sqlite3_column_int(statement,0);
+                    int64_t start = sqlite3_column_int64(statement,1);
+                    int64_t len = sqlite3_column_int64(statement,2);
+
+                    // add the unallocated volumes
+                    if (flags & TSK_VS_PART_FLAG_UNALLOC) {
+                        sr->addRun(start, len, vol_id);
+                    }
+                    // add the allocated volumes that don't have a known file system
+                    else {
+                        std::stringstream stmt;
+                        sqlite3_stmt *statement2;
+                        stmt << "SELECT fs_id FROM fs_info WHERE vol_id = " << vol_id << ";";
+                        if (sqlite3_prepare_v2(m_db, stmt.str().c_str() , -1, &statement2, 0) == SQLITE_OK) {
+                            if (sqlite3_step(statement2) != SQLITE_ROW) {
+                                sr->addRun(start, len, vol_id);
+                            }
+                            sqlite3_finalize(statement2);
+                        }
+                    }
+                }
+                else {
+                    break;  
+                }
+            }
+            sqlite3_finalize(statement);
+    }
+    else {
+        infoMessage << "TskImgDBSqlite::getFreeSectors - Error querying vol_info table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+
+        return NULL;
+    }
+
+    /*************** Find the unallocated blocks in each file system *************/
+    // @@@ Need to make more dynamic
+    int blk_size[32];
+    memset(blk_size, 0, sizeof(blk_size));
+    uint64_t blk_count[32];
+    memset(blk_count, 0, sizeof(blk_count));
+    int vol_id[32];
+    uint64_t img_offset[32];
+
+    // get basic info on each file system
+    if (sqlite3_prepare_v2(m_db, "SELECT fs_id, vol_id, img_byte_offset, block_size, block_count FROM fs_info;", -1, &statement, 0) == SQLITE_OK) {
+        LOGINFO("TskImgDBSqlite::getFreeSectors - START LOOP: Find the unallocated blocks in each file system.");
+        while(true)
+        {
+            int result = sqlite3_step(statement);
+            if (result == SQLITE_ROW)
+            {
+                int fs_id = sqlite3_column_int(statement, 0);
+                if (fs_id > 32)
+                {
+                    infoMessage.str("");
+                    infoMessage << "TskImgDBSqlite::getFreeSectors - fs_id in fs_info is bigger than 32: " << fs_id;
+                    LOGERROR(infoMessage.str());
+                    break;
+                }
+                vol_id[fs_id] = sqlite3_column_int(statement, 1);
+                img_offset[fs_id] = sqlite3_column_int64(statement, 2) / 512;
+                blk_size[fs_id] = sqlite3_column_int(statement, 3) / 512;
+                blk_count[fs_id] = sqlite3_column_int64(statement, 4);
+                // Debug Info
+                msg.str("");
+                msg << "TskImgDBSqlite::getFreeSectors - fs_id=" << fs_id << " vol_id=" << vol_id[fs_id] << " img_offset=" << img_offset[fs_id] << " blk_size=" << blk_size[fs_id] <<
+                    " blk_count=" << blk_count[fs_id];
+                LOGINFO(msg.str().c_str());
+            }
+            else
+            {
+                break;
+            }
+        }
+        sqlite3_finalize(statement);
+        LOGINFO("TskImgDBSqlite::getFreeSectors - DONE: Find the unallocated blocks in each file system.");
+    }
+    else
+    {
+        infoMessage.str("");
+        infoMessage << "TskImgDBSqlite::getFreeSectors - Error querying fs_info table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+
+        return NULL;
+    }
+
+    // see what blocks have been used and add them to a list
+    TSK_LIST *seen[32];
+    memset(seen, 0, 32*sizeof(TSK_LIST *));
+
+    if (sqlite3_prepare_v2(m_db, "SELECT fs_id, file_id, blk_start, blk_len FROM fs_blocks;", -1, &statement, 0) == SQLITE_OK) {
+        LOGINFO("TskImgDBSqlite::getFreeSectors - START LOOP: see what blocks have been used and add them to a list.");
+        while(true) {
+            int result = sqlite3_step(statement);
+            if (result == SQLITE_ROW) {
+                int fs_id = sqlite3_column_int(statement, 0);
+                if (fs_id > 32) {
+                    infoMessage.str("");
+                    infoMessage << "TskImgDBSqlite::getFreeSectors - fs_id in fs_info is bigger than 32: " << fs_id;
+                    LOGERROR(infoMessage.str());
+                    continue;
+                }
+                uint64_t file_id = (uint64_t)sqlite3_column_int64(statement, 1);
+                int64_t addr = sqlite3_column_int64(statement, 2);
+                int64_t len = sqlite3_column_int64(statement, 3);
+
+                // We only want to consider the runs for files that we allocated.
+                std::stringstream stmt;
+                stmt << "SELECT meta_flags from files WHERE file_id=" << file_id;
+
+                sqlite3_stmt * statement2;
+                if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement2, 0) != SQLITE_OK) {
+                    infoMessage.str("");
+                    infoMessage << "TskImgDBSqlite::getFreeSectors - error finding flags for file " << file_id;
+                    LOGERROR(infoMessage.str());
+                    continue;
+                }
+                sqlite3_step(statement2);
+                int flags = sqlite3_column_int(statement2, 0);
+                sqlite3_finalize(statement2);
+
+                if (flags & TSK_FS_META_FLAG_UNALLOC)
+                    continue;
+
+                // @@@ We can probably find a more effecient storage method than this...
+                int error = 0;
+                for (int64_t i = 0; i < len; i++) {
+                    if (tsk_list_add(&seen[fs_id], addr+i)) {
+                        infoMessage.str("");
+                        infoMessage << "TskImgDBSqlite::getFreeSectors - Error adding seen block address to list";
+                        LOGERROR(infoMessage.str());
+
+                        error = 1;
+                        break;
+                    }
+                }
+                if (error)
+                    break;
+            }
+            else {
+                break;
+            }
+        }
+        sqlite3_finalize(statement);
+        LOGINFO("TskImgDBSqlite::getFreeSectors - DONE: see what blocks have been used and add them to a list.");
+    }
+    else {
+        infoMessage.str("");
+        infoMessage << "TskImgDBSqlite::getFreeSectors - Error querying fs_block table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+
+        return NULL;
+    }
+
+    // cycle through each file system to find the unused blocks
+    LOGINFO("TskImgDBSqlite::getFreeSectors - START LOOP: cycle through each file system to find the unused blocks.");
+    for (int f = 0; f < 32; f++) {
+        if (blk_count[f] == 0)
+            continue;
+
+        uint64_t st = 0;
+        int len = 0;
+        // we previously adjusted blk_size and img_offset to be in sectors
+
+        msg.str("");
+        msg << "blk_count[" << f << "]=" << blk_count[f];
+        LOGINFO(msg.str().c_str());
+
+        for (uint64_t a = 0; a < blk_count[f]; a++) {
+            // see if this addr was used in a file
+            if (tsk_list_find(seen[f], a) == 0) {
+                // we already have a run being defined
+                if (len) {
+                    // same run, so add on to it
+                    if (st + len == a) {
+                        len++;
+                    }
+                    // different run, make a new one
+                    else {
+                        sr->addRun(img_offset[f]+st*blk_size[f], len*blk_size[f], vol_id[f]);
+                        st = a;
+                        len = 1;
+                    }
+                }
+                // start a new run
+                else {
+                    st = a;
+                    len = 1;
+                }
+            }
+        }
+        // add the final run
+        if (len) {
+            sr->addRun(img_offset[f]+st*blk_size[f], len*blk_size[f], vol_id[f]);
+        }
+        tsk_list_free(seen[f]);
+        seen[f] = NULL;
+    }
+    LOGINFO("TskImgDBSqlite::getFreeSectors - DONE: cycle through each file system to find the unused blocks.");
+
+    return sr;
+}
+
+std::string TskImgDBSqlite::getImageBaseName() const
+{
+    // There may be multiple file paths if the image is a split image. Oreder by sequence number to extract the file name from the first path.
+    sqlite3_stmt *statement;
+    executeStatement("SELECT name FROM image_names ORDER BY seq;", statement, "TskImgDBSqlite::getImageBaseName");
+
+    int result = sqlite3_step(statement);
+    if (result == SQLITE_ROW) 
+    {
+        Poco::Path imagePath(reinterpret_cast<const char*>(sqlite3_column_text(statement, 0))); // Reinterpret from const unsigned char*
+        return imagePath.getFileName();
+    }
+    else
+    {
+        return "";
+    }
+}
+
+std::vector<std::wstring> TskImgDBSqlite::getImageNamesW() const
+{
+    std::vector<std::wstring> imgList;
+
+    if (!m_db)
+        return imgList;
+
+    sqlite3_stmt *statement;
+
+    if (sqlite3_prepare_v2(m_db, "SELECT name FROM image_names ORDER BY seq;",
+        -1, &statement, 0) == SQLITE_OK) 
+    {
+        while(true)
+        {
+            int result = sqlite3_step(statement);
+            if (result == SQLITE_ROW) {
+                imgList.push_back((wchar_t *)sqlite3_column_text16(statement, 0));
+            }
+            else {
+                break;
+            }
+        }
+
+        sqlite3_finalize(statement);
+    }
+
+    return imgList;
+}
+
+
+std::vector<std::string> TskImgDBSqlite::getImageNames() const
+{
+    std::vector<std::string> imgList;
+
+    if (!m_db)
+        return imgList;
+
+    sqlite3_stmt *statement;
+
+    if (sqlite3_prepare_v2(m_db, "SELECT name FROM image_names ORDER BY seq;",
+        -1, &statement, 0) == SQLITE_OK) 
+    {
+        while(true)
+        {
+            int result = sqlite3_step(statement);
+            if (result == SQLITE_ROW) {
+                imgList.push_back((char *)sqlite3_column_text(statement, 0));
+            }
+            else {
+                break;
+            }
+        }
+
+        sqlite3_finalize(statement);
+    }
+
+    return imgList;
+}
+
+
+
+
+/**
+ * @param a_fileId  File id to get information about
+ * @param a_fsOffset Byte offset of start of file system that the file is located in
+ * @param a_fsFileId File system-specific id of the file
+ * @param a_attrType Type of attribute for this file
+ * @param a_attrId The ID of the attribute for this file
+ * @returns -1 on error
+ */
+int TskImgDBSqlite::getFileUniqueIdentifiers(uint64_t a_fileId, uint64_t &a_fsOffset, uint64_t &a_fsFileId, int &a_attrType, int &a_attrId) const
+{
+    if (!m_db)
+        return -1;
+
+    sqlite3_stmt * statement;
+    std::stringstream stmt;
+
+    stmt <<
+        "SELECT fs_file_id, attr_type, attr_id, fs_info.img_byte_offset "
+        "FROM fs_files, fs_info WHERE file_id=" << a_fileId << " AND fs_info.fs_id = fs_files.fs_id;";
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) {
+            a_fsFileId = sqlite3_column_int64(statement, 0);
+            a_attrType = sqlite3_column_int(statement, 1);
+            a_attrId = sqlite3_column_int(statement, 2);
+            a_fsOffset = sqlite3_column_int64(statement, 3);
+        }
+        else {
+            return -1;
+        }
+        sqlite3_finalize(statement);
+    }
+    else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getFileUniqueIdentifiers - Error querying fs_files table : " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        return -1;
+    }
+
+    return 0;
+}
+
+/**
+ * Get number of volumes in image.
+ * @return Number of volumes in image or -1 on error
+ */
+int TskImgDBSqlite::getNumVolumes() const
+{
+    if (!m_db)
+        return 0;
+
+    int count = 0;
+    sqlite3_stmt * statement;
+
+    /********** Get the number of volumes *************/
+    if (sqlite3_prepare_v2(m_db, "SELECT count(*) from vol_info;", -1, &statement, 0) == SQLITE_OK) 
+    {
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) 
+        {
+            count = (int)sqlite3_column_int(statement, 0);
+        }
+        sqlite3_finalize(statement);
+    }
+    else 
+    {
+        std::wstringstream msg;
+        msg << L"TskImgDBSqlite::getNumVolumes - Error querying vol_info table: " << sqlite3_errmsg(m_db);
+        LOGERROR(msg.str());
+
+        return -1;
+    }
+
+    return count;
+}
+/**
+ * Get number of files in image.
+ * @return Number of files in image or -1 on error
+ */
+int TskImgDBSqlite::getNumFiles() const
+{
+    if (!m_db)
+        return 0;
+
+    std::string condition("");
+    return getFileCount(condition);
+}
+
+/**
+ * @returns the session_id or -1 on error.
+ */
+int TskImgDBSqlite::getSessionID() const
+{
+    if (!m_db)
+        return 0;
+
+    sqlite3_stmt * statement;
+    std::string stmt("SELECT version from db_info WHERE name=\"SID\";");
+    int sessionId = -1;
+
+    /********** FIND the unallocated volumes *************/
+    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) {
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) {
+            sessionId = (int)sqlite3_column_int(statement, 0);
+        }
+        sqlite3_finalize(statement);
+    }
+    else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getSessionID - Error querying db_info table for Session ID: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+
+        return -1;
+    }
+    return sessionId;
+}
+
+int TskImgDBSqlite::begin()
+{
+    char *errmsg;
+    if (!m_db)
+        return 1;
+
+    if (sqlite3_exec(m_db, "BEGIN", NULL, NULL, &errmsg) != SQLITE_OK) {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::begin - BEGIN Error: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+    return 0;
+}
+
+int TskImgDBSqlite::commit()
+{
+    char *errmsg;
+    if (!m_db)
+        return 1;
+
+    if (sqlite3_exec(m_db, "COMMIT", NULL, NULL, &errmsg) != SQLITE_OK) {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::commit - COMMIT Error: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return 1;
+    }
+    return 0;
+}
+
+UnallocRun * TskImgDBSqlite::getUnallocRun(int a_unalloc_img_id, int a_file_offset) const
+{
+    std::stringstream stmt;
+    char * errmsg;
+    if (!m_db)
+        return NULL;
+
+    stmt << "SELECT vol_id, unalloc_img_sect_start, sect_len, orig_img_sect_start FROM "
+        "alloc_unalloc_map WHERE unalloc_img_id = " << a_unalloc_img_id << 
+        " AND unalloc_img_sect_start <= " << a_file_offset << " ORDER BY unalloc_img_sect_start DESC";
+
+    char **result;
+    int nrow, ncol;
+    if (sqlite3_get_table(m_db, stmt.str().c_str(), &result, &nrow, &ncol, &errmsg) != SQLITE_OK)
+    {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getUnallocRun - Error fetching data from alloc_unalloc_map table: " << errmsg;
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+
+        return new UnallocRun(-1, -1, -1, -1, -1);
+    }
+    else
+    {
+        int vol_id;
+        int unalloc_img_sect_start;
+        int sect_len;
+        int orig_img_sect_start;
+        // skip the headers
+        // @@@ DO SOME ERROR CHECKING HERE to make sure that results has data...
+        sscanf(result[4], "%d", &vol_id);
+        sscanf(result[5], "%d", &unalloc_img_sect_start);
+        sscanf(result[6], "%d", &sect_len);
+        sscanf(result[7], "%d", &orig_img_sect_start);
+        sqlite3_free_table(result);
+        return new UnallocRun(vol_id, a_unalloc_img_id, unalloc_img_sect_start, sect_len, orig_img_sect_start);
+    }
+}
+
+/**
+ * Adds information about a carved file into the database.  This includes the sector layout
+ * information. 
+ * 
+ * @param vol_id Volume in which the carved file was found in
+ * @param name Name of the file 
+ * @param size Number of bytes in file
+ * @param runStarts Array with starting sector (relative to start of image) for each run in file.
+ * @param runLengths Array with number of sectors in each run 
+ * @param numRuns Number of entries in previous arrays
+ * @param fileId Carved file Id (output)
+ * @returns 0 on success or -1 on error.
+ */
+int TskImgDBSqlite::addCarvedFileInfo(int vol_id, const char *name, uint64_t size, 
+                                      uint64_t *runStarts, uint64_t *runLengths, int numRuns, uint64_t & fileId)
+{
+    char stmt[1024];
+    char * errmsg;
+    std::wstringstream infoMessage;
+
+    if (!m_db)
+        return -1;
+
+    // insert into files table
+    sqlite3_snprintf(1024, stmt,
+        "INSERT INTO files (file_id, type_id, name, par_file_id, dir_type, meta_type,"
+        "dir_flags, meta_flags, size, ctime, crtime, atime, mtime, mode, uid, gid, status, full_path) "
+        "VALUES (NULL, %d, '%q', NULL, %d, %d, %d, %d, %llu, 0, 0, 0, 0, NULL, NULL, NULL, %d, '%q')",
+        IMGDB_FILES_TYPE_CARVED, name, (int)TSK_FS_NAME_TYPE_REG, (int)TSK_FS_META_TYPE_REG,
+        (int)TSK_FS_NAME_FLAG_UNALLOC, (int)TSK_FS_META_FLAG_UNALLOC, size, IMGDB_FILES_STATUS_CREATED, name);
+    // MAY-118 NOTE: addCarvedFileInfo insert entry into files table, but actual file on disk has not been created yet.
+    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::addCarvedFileInfo - Error adding data to file table for carved file: " << errmsg << L" " << stmt;
+
+        LOGERROR(infoMessage.str());
+
+        sqlite3_free(errmsg);
+        return -1;
+    }
+
+    // get the assigned file_id
+    fileId = (uint64_t)sqlite3_last_insert_rowid(m_db);
+
+    // insert into the carved_files_table
+    sqlite3_snprintf(1024, stmt, "INSERT INTO carved_files (file_id, vol_id)"
+        "VALUES (%llu, %d)", fileId, vol_id);
+    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) {
+        infoMessage << L"TskImgDBSqlite::addCarvedFileInfo - Error adding data to carved_files table: " << errmsg;
+
+        LOGERROR(infoMessage.str());
+        sqlite3_free(errmsg);
+        return -1;
+    }
+
+    // insert into carved_sectors table
+    for (int i = 0; i < numRuns; i++)
+    {
+        sqlite3_snprintf(1023, stmt,
+            "INSERT INTO carved_sectors (file_id, seq, sect_start, sect_len) "
+            "VALUES (%llu, %d, %llu, %llu)",
+            fileId, i, runStarts[i], runLengths[i]);
+        if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) {
+            infoMessage << L"TskImgDBSqlite::addCarvedFileInfo - Error adding data to carved_sectors table: " << errmsg;
+
+            LOGERROR(infoMessage.str());
+
+            sqlite3_free(errmsg);
+            return -1;
+        }
+    }
+
+    return 0;
+}
+
+/**
+ * Adds information about derived files to the database.  Derived files typically come
+ * from archives and may be compressed.
+ * 
+ * @param name The name of the file.
+ * @param parentId The id of the file from which this file is derived.
+ * @param isDirectory True if entry is for a directory verus a file
+ * @param size The size of the file.
+ * @param details This is a string that may contain extra details related
+ * to the particular type of mechanism that was used to derive this file, 
+ * e.g. files derived from zip archives may have extra information about the
+ * compressed size of the file.
+ * @param ctime Time file system file entry was changed.
+ * @param crtime Time the file was created.
+ * @param atime Last access time.
+ * @param mtime Last modified time.
+ * @param fileId Reference to location where file_id for file can be assigned
+ * @param path Path of file
+ *
+ * @returns 0 on success or -1 on error.
+ */
+int TskImgDBSqlite::addDerivedFileInfo(const std::string& name, const uint64_t parentId, 
+                                       const bool isDirectory, const uint64_t size,
+                                       const std::string& details,
+                                       const int ctime, const int crtime, const int atime, const int mtime,
+                                       uint64_t &fileId, std::string path)
+{
+    if (!m_db)
+        return -1;
+
+    char stmt[1024];
+    char * errmsg;
+
+    TSK_FS_NAME_TYPE_ENUM dirType = isDirectory ? TSK_FS_NAME_TYPE_DIR : TSK_FS_NAME_TYPE_REG;
+    TSK_FS_META_TYPE_ENUM metaType = isDirectory ? TSK_FS_META_TYPE_DIR : TSK_FS_META_TYPE_REG;
+
+    // insert into files table
+    sqlite3_snprintf(1024, stmt,
+        "INSERT INTO files (file_id, type_id, name, par_file_id, dir_type, meta_type, size, ctime, crtime, atime, mtime, status, full_path) "
+        "VALUES (NULL, %d, '%q', %llu, %d, %d, %llu, %d, %d, %d, %d, %d, '%q')",
+        IMGDB_FILES_TYPE_DERIVED, name.c_str(), parentId, dirType, metaType, size, ctime, crtime, atime, mtime, IMGDB_FILES_STATUS_CREATED, path.c_str());
+
+    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) 
+    {
+        std::wstringstream msg;
+        msg << L"TskImgDBSqlite::addDerivedFileInfo - Error adding data to file table for derived file: "
+            << errmsg << L" " << stmt;
+
+        LOGERROR(msg.str());
+
+        sqlite3_free(errmsg);
+        return -1;
+    }
+
+    // get the assigned file_id
+    fileId = sqlite3_last_insert_rowid(m_db);
+
+    // insert into the derived_files table
+    sqlite3_snprintf(1024, stmt, "INSERT INTO derived_files (file_id, derivation_details) "
+        "VALUES (%llu, '%q')", fileId, details.c_str());
+    if (sqlite3_exec(m_db, stmt, NULL, NULL, &errmsg) != SQLITE_OK) 
+    {
+        std::wstringstream msg;
+        msg << L"TskImgDBSqlite::addDerivedFileInfo - Error adding data to derived_files table : "
+            << errmsg;
+
+        LOGERROR(msg.str());
+        sqlite3_free(errmsg);
+        return -1;
+    }
+
+    return 0;
+}
+
+/**
+ * Fills outBuffer with file IDs that match the name fileName.
+ * Returns the number of file IDs written into outBuffer or -1 on error.
+ */
+int TskImgDBSqlite::getFileIds(char *a_fileName, uint64_t *a_outBuffer, int a_buffSize) const
+{
+
+    if (!m_db)
+        return -1;
+
+    int outIdx = 0;
+
+    sqlite3_stmt * statement;
+    std::stringstream stmt;
+    stmt << "SELECT file_id FROM files WHERE name LIKE '" << a_fileName << "';";
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        while(sqlite3_step(statement) == SQLITE_ROW) {
+            a_outBuffer[outIdx++] = (uint64_t)sqlite3_column_int64(statement, 0);
+        }
+        sqlite3_finalize(statement);
+    }
+    else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getFileIds - Error querying files table : " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        return -1;
+    }
+
+    return outIdx;
+}
+
+/*
+ * Return the minimum file id with status = READY_FOR_ANALYSIS in minFileId.
+ * Return 0 on success, -1 if failed.
+ */
+int TskImgDBSqlite::getMinFileIdReadyForAnalysis(uint64_t & minFileId) const
+{
+    if (!m_db)
+        return -1;
+
+    minFileId = 0;
+
+    sqlite3_stmt * statement;
+    std::stringstream stmt;
+    stmt << "SELECT min(file_id) FROM files WHERE status = " << 
+        TskImgDB::IMGDB_FILES_STATUS_READY_FOR_ANALYSIS << ";";
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) {
+            minFileId = (uint64_t)sqlite3_column_int64(statement, 0);
+        }
+        sqlite3_finalize(statement);
+    }
+    else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getMinFileIdReadyForAnalysis - Error querying files table : " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        return -1;
+    }
+    return 0;
+}
+
+/**
+ * Given the last file ID ready for analysis, find the largest file ID ready of analysis (in maxFileId)
+ * Returns 0 on success or -1 on error.
+ */
+int TskImgDBSqlite::getMaxFileIdReadyForAnalysis(uint64_t a_lastFileId, uint64_t & maxFileId) const
+{
+    if (!m_db)
+        return -1;
+
+    maxFileId = 0;
+
+    sqlite3_stmt * statement;
+    std::stringstream stmt;
+    stmt << "SELECT max(file_id) FROM files WHERE status = " <<  
+        TskImgDB::IMGDB_FILES_STATUS_READY_FOR_ANALYSIS << 
+        " AND file_id >= " <<  a_lastFileId << ";";
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) {
+            maxFileId = (uint64_t)sqlite3_column_int64(statement, 0);
+        }
+        sqlite3_finalize(statement);
+    }
+    else {
+        std::wstringstream infoMessage;
+        infoMessage <<  L"TskImgDBSqlite::getMaxFileIdReadyForAnalysis - Error querying files table : " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        return -1;
+    }
+    return 0;
+}
+
+SectorRuns * TskImgDBSqlite::getFileSectors(uint64_t a_fileId) const
+{
+    if (!m_db)
+        return NULL;
+
+    SectorRuns * sr = new SectorRuns();
+
+    sqlite3_stmt * statement;
+    std::stringstream stmt;
+    int srCount = 0;
+    stmt <<
+        "SELECT fs_blocks.blk_start, fs_blocks.blk_len, "
+        "fs_info.block_size, fs_info.img_byte_offset, fs_info.vol_id "
+        "FROM files "
+        "JOIN fs_files ON files.file_id = fs_files.file_id "
+        "JOIN fs_blocks ON files.file_id = fs_blocks.file_id "
+        "JOIN fs_info ON fs_blocks.fs_id = fs_info.fs_id "
+        "WHERE files.file_id = " << a_fileId << " "
+        "ORDER BY fs_blocks.seq;";
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        while(sqlite3_step(statement) == SQLITE_ROW) {
+            uint64_t blkStart = (uint64_t)sqlite3_column_int64(statement, 0);
+            uint64_t blkLength = (uint64_t)sqlite3_column_int64(statement, 1);
+            int blkSize = sqlite3_column_int(statement, 2);
+            uint64_t imgByteOffset = (uint64_t)sqlite3_column_int64(statement, 3);
+            int volId = sqlite3_column_int(statement, 4);
+
+            uint64_t start = (imgByteOffset + blkStart * blkSize) / 512;
+            uint64_t len = (blkLength * blkSize) / 512;
+
+            sr->addRun(start, len, volId);
+            srCount++;
+        }
+
+        sqlite3_finalize(statement);
+    }
+    else {
+        std::wstringstream infoMessage;
+        infoMessage <<
+            L"TskImgDBSqlite::getFileSectors - "
+            L"Error finding block data for file_id=" << a_fileId << ": " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        return NULL;
+    }
+
+    if (srCount < 1) {
+        delete sr;
+        sr = NULL;
+    }
+    return sr;
+}
+
+/**
+ * This callback mechanism is registered with SQLite and is 
+ * called whenever an operation would result in SQLITE_BUSY.
+ * Each time this method is called we will back off IMGDB_RETRY_WAIT
+ * x count milliseconds. A non zero return value tells SQLite to 
+ * retry the statement and a zero return value tells SQLite to 
+ * stop retrying, in which case it will return SQLITE_BUSY or
+ * SQLITE_IOERR_BLOCKED to the caller.
+ *
+ * @param pDB - a pointer to the sqlite3 structure
+ * @param count - the number of times this handler has been
+ * called for this blocking event.
+ */
+int TskImgDBSqlite::busyHandler(void * pDB, int count)
+{
+    if (count < IMGDB_MAX_RETRY_COUNT)
+    {
+        Poco::Thread::sleep(IMGDB_RETRY_WAIT * count);
+        return 1;
+    }
+
+    return 0;
+}
+
+
+
+int TskImgDBSqlite::updateFileStatus(uint64_t a_file_id, FILE_STATUS a_status)
+{
+    if (!m_db)
+        return 1;
+
+    std::stringstream stmt;
+    char * errmsg;
+
+    stmt << "UPDATE files SET status = " << a_status << " WHERE file_id = " << a_file_id << ";";
+    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::updateFileStatus - Error UPDATE file status: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        return 1;
+    }
+
+    return 0;
+}
+
+
+int TskImgDBSqlite::updateKnownStatus(uint64_t a_file_id, KNOWN_STATUS a_status)
+{
+    if (!m_db)
+        return 1;
+
+    std::stringstream stmt;
+    char * errmsg;
+
+    stmt << "UPDATE file_hashes SET known = " << a_status << " WHERE file_id = " << a_file_id << ";";
+    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::updateFileStatus - Error UPDATE file status: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        return 1;
+    }
+
+    return 0;
+}
+
+bool TskImgDBSqlite::dbExist() const
+{
+    if (m_db)
+        return true;
+    else
+        return false;
+}
+
+void TskImgDBSqlite::getCarvedFileInfo(const std::string& stmt, std::map<uint64_t, std::string>& results) const
+{
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) 
+    {
+        while (sqlite3_step(statement) == SQLITE_ROW) 
+        {
+            uint64_t fileId = (uint64_t)sqlite3_column_int64(statement, 0);
+            std::string fileName = (char*)sqlite3_column_text(statement, 1);
+            std::string cfileName = (char*)sqlite3_column_text(statement, 2);
+
+            // Grab the extension and append it to the cfile name
+            std::string::size_type pos = fileName.rfind('.');
+            if (pos != std::string::npos)
+                cfileName.append(fileName.substr(pos));
+
+            results[fileId] = cfileName;
+        }
+        sqlite3_finalize(statement);
+    } else 
+    {
+        std::wstringstream msg;
+        msg << L"TskImgDBSqlite::getCarvedFileInfo - Error retrieving carved file details: "
+            << sqlite3_errmsg(m_db);
+        LOGERROR(msg.str());
+    }
+}
+
+std::map<uint64_t, std::string> TskImgDBSqlite::getUniqueCarvedFiles(HASH_TYPE hashType) const
+{
+    if (!m_db)
+        throw TskException("No database.");
+
+    std::map<uint64_t, std::string> results;
+
+    string hash;
+    switch (hashType) {
+    case TskImgDB::MD5:
+        hash = "md5";
+        break;
+    case TskImgDB::SHA1:
+        hash = "sha1";
+        break;
+    case TskImgDB::SHA2_256:
+        hash = "sha2_256";
+        break;
+    case TskImgDB::SHA2_512:
+        hash = "sha2_512";
+        break;
+    default:
+        std::wstringstream msg;
+        msg << L"TskImgDBSqlite::getUniqueCarvedFiles - Unsupported hashType : " << hashType;
+        LOGERROR(msg.str());
+        return results;
+    }
+
+    stringstream stmt;
+    
+    // If hashes have not been calculated return all carved files
+    stmt << "SELECT count(*) FROM file_hashes;";
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) 
+    {
+        if (sqlite3_step(statement) == SQLITE_ROW) 
+        {
+            uint64_t counter = (uint64_t)sqlite3_column_int64(statement, 0);
+            if (counter == 0) 
+            {
+                sqlite3_finalize(statement);
+                stmt.str("");
+                stmt << "select c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' "
+                    << "|| c.file_id from files f, carved_files c, carved_sectors cs "
+                    << "where c.file_id = cs.file_id and cs.seq = 0 and f.file_id = c.file_id order by c.file_id";
+                getCarvedFileInfo(stmt.str(), results);
+                return results;
+            }
+        }
+        sqlite3_finalize(statement);
+    } else 
+    {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getUniqueCarvedFiles - Error getting file_hashes count: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+    }
+
+    stmt.str("");
+
+    // Get the set of files for which the hash has been calculated.
+    stmt << "select c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' "
+        << "|| c.file_id from files f, carved_files c, carved_sectors cs "
+        << "where c.file_id = cs.file_id and cs.seq = 0 and f.file_id = c.file_id and c.file_id in "
+        << "(select min(file_id) from file_hashes where " << hash << " != '' group by " << hash << ") order by c.file_id";
+
+    getCarvedFileInfo(stmt.str(), results);
+
+    // Next get the set of files for which the hash has *not* been calculated.
+    stmt.str("");
+
+    stmt << "select c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' "
+        << "|| c.file_id from files f, carved_files c, carved_sectors cs "
+        << "where c.file_id = cs.file_id and cs.seq = 0 and f.file_id = c.file_id and c.file_id in "
+        << "(select file_id from file_hashes where " << hash << " = '') order by c.file_id";
+
+    getCarvedFileInfo(stmt.str(), results);
+
+    // Finally, add file info for all of the carved files for which there are no hashes of any sort.
+    // All of these files must be included because without hashes there is no way to determine uniqueness.
+    stmt.clear();
+    stmt.str("");
+    stmt << "SELECT c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' || c.file_id "
+         << "FROM files f, carved_files c, carved_sectors cs "
+         << "WHERE c.file_id = cs.file_id AND cs.seq = 0 AND f.file_id = c.file_id AND c.file_id NOT IN "
+         << "(SELECT fh.file_id FROM file_hashes fh) ORDER BY c.file_id";
+    getCarvedFileInfo(stmt.str(), results);
+
+    return results;
+}
+
+void TskImgDBSqlite::getCarvedFileInfo(const std::string &query, bool getHash, std::vector<TskCarvedFileInfo> &carvedFileInfos) const
+{
+    sqlite3_stmt *statement;
+    executeStatement(query, statement, "TskImgDBSqlite::getCarvedFileInfo");
+
+    TskCarvedFileInfo info;
+    while (sqlite3_step(statement) == SQLITE_ROW) 
+    {
+        info.fileID = static_cast<uint64_t>(sqlite3_column_int64(statement, 0));
+        std::string fileName = reinterpret_cast<const char*>(sqlite3_column_text(statement, 1)); // Reinterpret from unsigned Char*
+        info.cFileName = reinterpret_cast<const char*>(sqlite3_column_text(statement, 2)); // Reinterpret from unsigned Char*
+        if (getHash)
+        {
+            info.hash = reinterpret_cast<const char*>(sqlite3_column_text(statement, 3));
+        }
+
+        // Append the extension from the original file name to the constructed "cfile" name.
+        std::string::size_type pos = fileName.rfind('.');
+        if (pos != std::string::npos)
+        {
+            info.cFileName.append(fileName.substr(pos));
+        }
+
+        carvedFileInfos.push_back(info);
+    }
+
+    sqlite3_finalize(statement);
+}
+
+std::vector<TskCarvedFileInfo> TskImgDBSqlite::getUniqueCarvedFilesInfo(HASH_TYPE hashType) const
+{
+    const std::string msgPrefix = "TskImgDBSqlite::getUniqueCarvedFilesInfo : "; 
+
+    if (!m_db)
+    {
+        std::ostringstream msg;
+        msg << msgPrefix << "no database connection";
+        throw TskException(msg.str());
+    }
+
+    // Map the requested hash type to a file_hashes table column name.
+    string hash;
+    switch (hashType) 
+    {
+    case TskImgDB::MD5:
+        hash = "md5";
+        break;
+    case TskImgDB::SHA1:
+        hash = "sha1";
+        break;
+    case TskImgDB::SHA2_256:
+        hash = "sha2_256";
+        break;
+    case TskImgDB::SHA2_512:
+        hash = "sha2_512";
+        break;
+    default:
+        std::ostringstream msg;
+        msg << msgPrefix << "unsupported hash type :" << hashType;
+        throw TskException(msg.str());
+    }
+
+    std::vector<TskCarvedFileInfo> carvedFileInfos;
+
+    // Do a quick check to see if any hashes have been calculated.
+    std::ostringstream query;
+    query << "SELECT COUNT(*) FROM file_hashes;";
+    sqlite3_stmt *countStmt;
+    executeStatement(query.str(), countStmt, "TskImgDBSqlite::getUniqueCarvedFiles");
+    if (sqlite3_step(countStmt) == SQLITE_ROW && static_cast<uint64_t>(sqlite3_column_int64(countStmt, 0)) != 0) 
+    {
+        // At least one type of hash has been calculated (presumably for all files, but this is not guaranteed). 
+        // First, add file info for the set of unique files among the carved files for which the specified type of hash is available.
+        query.clear();
+        query.str("");
+        query << "SELECT c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' || c.file_id, fh." << hash << " "
+              << "FROM files f, carved_files c, carved_sectors cs, file_hashes fh "
+              << "WHERE c.file_id = cs.file_id AND cs.seq = 0 AND f.file_id = c.file_id AND c.file_id = fh.file_id AND c.file_id IN "
+              << "(SELECT MIN(file_id) FROM file_hashes WHERE " << hash << " != '' GROUP BY " << hash << ") ORDER BY c.file_id";
+        getCarvedFileInfo(query.str(), true, carvedFileInfos);
+
+         // Next, add file info for all of the carved files for which the specified hash is not available.
+         // All of these files must be included because without the specified hash there is no acceptable way to determine uniqueness.
+        query.clear();
+        query.str("");
+        query << "SELECT c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' || c.file_id "
+              << "FROM files f, carved_files c, carved_sectors cs "
+              << "WHERE c.file_id = cs.file_id AND cs.seq = 0 AND f.file_id = c.file_id AND c.file_id IN "
+              << "(SELECT file_id FROM file_hashes WHERE " << hash << " = '') ORDER BY c.file_id";
+        getCarvedFileInfo(query.str(), false, carvedFileInfos);
+
+        // Finally, add file info for all of the carved files for which there are no hashes of any sort.
+        // All of these files must be included because without hashes there is no way to determine uniqueness.
+        query.clear();
+        query.str("");
+        query << "SELECT c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' || c.file_id "
+              << "FROM files f, carved_files c, carved_sectors cs "
+              << "WHERE c.file_id = cs.file_id AND cs.seq = 0 AND f.file_id = c.file_id AND c.file_id NOT IN "
+              << "(SELECT fh.file_id FROM file_hashes fh) ORDER BY c.file_id";
+        getCarvedFileInfo(query.str(), false, carvedFileInfos);
+    }
+    else
+    {
+        // No hashes have been calculated.
+        // Return carved file info all of the carved files because without hashes there is no way to determine uniqueness.
+        query.clear();
+        query.str("");
+        query << "SELECT c.file_id, f.name, 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' || c.file_id "
+              << "FROM files f, carved_files c, carved_sectors cs "
+              << "WHERE c.file_id = cs.file_id AND cs.seq = 0 AND f.file_id = c.file_id ORDER BY c.file_id";
+        getCarvedFileInfo(query.str(), false, carvedFileInfos);
+
+        std::ostringstream msg;
+        msg << msgPrefix << "no hashes available, returning all carved files";
+        LOGWARN(msg.str());
+    }
+    sqlite3_finalize(countStmt);
+
+    return carvedFileInfos;
+}
+
+std::vector<uint64_t> TskImgDBSqlite::getCarvedFileIds() const
+{
+    return getFileIdsWorker("carved_files");
+}
+
+std::vector<uint64_t> TskImgDBSqlite::getUniqueFileIds(HASH_TYPE hashType) const
+{
+    if (!m_db)
+        throw TskException("No database.");
+
+    std::vector<uint64_t> results;
+
+    string hash;
+    switch (hashType) {
+    case TskImgDB::MD5:
+        hash = "md5";
+        break;
+    case TskImgDB::SHA1:
+        hash = "sha1";
+        break;
+    case TskImgDB::SHA2_256:
+        hash = "sha2_256";
+        break;
+    case TskImgDB::SHA2_512:
+        hash = "sha2_512";
+        break;
+    default:
+        std::wstringstream errorMsg;
+        errorMsg << L"TskImgDBSqlite::getUniqueFileIds - Unsupported hashType : " << hashType ;
+        LOGERROR(errorMsg.str());
+        return results;
+    }
+
+    stringstream stmt;
+
+    stmt << "SELECT min(file_id) FROM file_hashes WHERE " << hash << " != '' group by " << hash ;
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        while (sqlite3_step(statement) == SQLITE_ROW) {
+            uint64_t fileId = (uint64_t)sqlite3_column_int64(statement, 0);
+            results.push_back(fileId);
+        }
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getUniqueFileIds - Error querying file_hashes table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+    }
+    return results;
+}
+
+std::vector<uint64_t> TskImgDBSqlite::getFileIds() const
+{
+    return getFileIdsWorker("files");
+}
+
+std::vector<uint64_t> TskImgDBSqlite::getFileIdsWorker(std::string tableName, const std::string condition) const
+{
+    if (!m_db)
+        throw TskException("No database.");
+
+    std::vector<uint64_t> results;
+
+    stringstream stmt;
+
+    stmt << "SELECT file_id FROM " << tableName;
+    if (condition.compare("") != 0)
+        stmt << " WHERE " << condition;
+    stmt <<  " ORDER BY file_id";
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        while (sqlite3_step(statement) == SQLITE_ROW) {
+            uint64_t fileId = (uint64_t)sqlite3_column_int64(statement, 0);
+            results.push_back(fileId);
+        }
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getFileIdsWorker - Error getting file ids from table " << 
+            tableName.c_str() << ", " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+    }
+    return results;
+}
+
+/**
+ * Get the list of file ids that match the given criteria.
+ * The given string will be appended to "select files.file_id from files".
+ * See \ref img_db_schema_v1_5_page for tables and columns to include in 
+ * the selection criteria.
+ *
+ * @param condition Must be a valid SQL string defining the selection criteria.
+ * @returns The collection of file ids matching the selection criteria. Throws
+ * TskException if database not initialized.
+ */
+std::vector<uint64_t> TskImgDBSqlite::getFileIds(const std::string& condition) const
+{
+    if (!m_db)
+        throw TskException("Database not initialized.");
+
+    std::vector<uint64_t> results;
+
+    std::string stmt("SELECT files.file_id FROM files");
+
+    constructStmt(stmt, condition);
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) 
+    {
+        while (sqlite3_step(statement) == SQLITE_ROW) 
+        {
+            uint64_t fileId = (uint64_t)sqlite3_column_int64(statement, 0);
+            results.push_back(fileId);
+        }
+        sqlite3_finalize(statement);
+    } else 
+    {
+        std::wstringstream msg;
+        msg << L"TskImgDBSqlite::getFilesIds - Error getting file ids: " << sqlite3_errmsg(m_db);
+        LOGERROR(msg.str());
+    }
+    return results;
+}
+/*
+ * Get the list of file records that match the given criteria.
+ * The given string will be appended to "select ... from files".
+ *
+ * @param condition Must be a valid SQL string defining the selection criteria.
+ * @returns The collection of file records matching the selection criteria. Throws
+ * TskException if database not initialized.
+ */
+const std::vector<TskFileRecord> TskImgDBSqlite::getFileRecords(const std::string& condition) const
+{
+    if (!m_db)
+        throw TskException("Database not initialized.");
+
+    std::vector<TskFileRecord> results;
+
+    std::stringstream stmtstrm;
+
+    stmtstrm << "SELECT f.file_id, f.type_id, f.name, f.par_file_id, f.dir_type, f.meta_type, f.dir_flags, "
+        << "f.meta_flags, f.size, f.ctime, f.crtime, f.atime, f.mtime, f.mode, f.uid, f.gid, f.status, f.full_path, "
+        << "fh.md5, fh.sha1, fh.sha2_256, fh.sha2_512 "
+        << "FROM files f LEFT OUTER JOIN file_hashes fh ON f.file_id = fh.file_id ";
+
+    std::string stmt = stmtstrm.str();
+    constructStmt(stmt, condition);
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) 
+    {
+        while(sqlite3_step(statement) == SQLITE_ROW) {
+            TskFileRecord fileRecord;
+            fileRecord.fileId       = sqlite3_column_int64(statement, 0);
+            fileRecord.typeId       = (TskImgDB::FILE_TYPES) sqlite3_column_int(statement, 1);
+            fileRecord.name         = (char *)sqlite3_column_text(statement, 2);
+            fileRecord.parentFileId = sqlite3_column_int64(statement, 3);
+            fileRecord.dirType      = (TSK_FS_NAME_TYPE_ENUM) sqlite3_column_int(statement, 4);
+            fileRecord.metaType     = (TSK_FS_META_TYPE_ENUM) sqlite3_column_int(statement, 5);
+            fileRecord.dirFlags     = (TSK_FS_NAME_FLAG_ENUM) sqlite3_column_int(statement, 6);
+            fileRecord.metaFlags    = (TSK_FS_META_FLAG_ENUM) sqlite3_column_int(statement, 7);
+            fileRecord.size         = sqlite3_column_int64(statement, 8);
+            fileRecord.ctime        = sqlite3_column_int(statement, 9);
+            fileRecord.crtime       = sqlite3_column_int(statement, 10);
+            fileRecord.atime        = sqlite3_column_int(statement, 11);
+            fileRecord.mtime        = sqlite3_column_int(statement, 12);
+            fileRecord.mode         = (TSK_FS_META_MODE_ENUM) sqlite3_column_int(statement, 13);
+            fileRecord.uid          = sqlite3_column_int(statement, 14);
+            fileRecord.gid          = sqlite3_column_int(statement, 15);
+            fileRecord.status       = (TskImgDB::FILE_STATUS) sqlite3_column_int(statement, 16);
+            fileRecord.fullPath     = (char *)sqlite3_column_text(statement, 17);
+
+            if (sqlite3_column_type(statement, 18) == SQLITE_TEXT)
+                fileRecord.md5      = (char *)sqlite3_column_text(statement, 18);
+            if (sqlite3_column_type(statement, 19) == SQLITE_TEXT)
+                fileRecord.sha1     = (char *)sqlite3_column_text(statement, 19);
+            if (sqlite3_column_type(statement, 20) == SQLITE_TEXT)
+                fileRecord.sha2_256 = (char *)sqlite3_column_text(statement, 20);
+            if (sqlite3_column_type(statement, 21) == SQLITE_TEXT)
+                fileRecord.sha2_512 = (char *)sqlite3_column_text(statement, 21);
+            results.push_back(fileRecord);
+        }
+    }
+    else 
+    {
+        std::wstringstream msg;
+        msg << L"TskImgDBSqlite::getFilesRecords - Error getting file reocrds: " << sqlite3_errmsg(m_db);
+        LOGERROR(msg.str());
+    }
+    return results;
+}
+
+
+/**
+ * Get the number of files that match the given criteria.
+ * The given string will be appended to "select files.file_id from files".
+ *
+ * @param condition Must be a valid SQL string defining the selection criteria.
+ * @returns The number of files matching the selection criteria. 
+ */
+int TskImgDBSqlite::getFileCount(const std::string& condition) const
+{
+    if (!m_db)
+        throw TskException("Database not initialized.");
+
+    int result = 0;
+
+    std::string stmt("SELECT COUNT(files.file_id) FROM files");
+
+    constructStmt(stmt, condition);
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) 
+    {
+        while (sqlite3_step(statement) == SQLITE_ROW) 
+        {
+            result = (uint64_t)sqlite3_column_int(statement, 0);
+        }
+        sqlite3_finalize(statement);
+    } else 
+    {
+        std::wstringstream msg;
+        msg << L"TskImgDBSqlite::getFileCount - Error getting file count: " << sqlite3_errmsg(m_db);
+        LOGERROR(msg.str());
+    }
+    return result;
+}
+
+int tsk_strnicmp(const char *s1, const char *s2, size_t N)
+{
+    if (N == 0)
+        return 0;
+    int diff = 0;
+    if (s1 && s2) {
+        while (N-- > 0 && (diff = (toupper(*s1) - toupper(*s2))) == 0 && *s1 && *s2) {
+            s1++;
+            s2++;
+        }
+    }
+    else if (s1)
+        return +1;
+    else if (s2)
+        return -1;
+    return diff;
+}
+
+/* Append condition to stmt to make a single SQL query.
+ */
+void TskImgDBSqlite::constructStmt(std::string& stmt, std::string condition) const
+{
+    if (!condition.empty())
+    {
+        // Remove leading whitespace from condition
+        condition.erase(0, condition.find_first_not_of(' '));
+
+        std::string whereClause("WHERE");
+        std::string joinClause("JOIN");
+        std::string leftClause("LEFT");
+        std::string orderClause("ORDER");
+
+        /* If the condition doesn't start with one of the below statements 
+         * (WHERE, JOIN, etc.), then 
+         * it is presumably extending the FROM clause with
+         * one or more table names. In this case we need to add the comma to
+         * the statement. */
+        if (tsk_strnicmp(condition.c_str(), whereClause.c_str(), whereClause.length()) != 0 &&
+            tsk_strnicmp(condition.c_str(), joinClause.c_str(), joinClause.length()) != 0 &&
+            tsk_strnicmp(condition.c_str(), leftClause.c_str(), leftClause.length()) != 0 &&
+            tsk_strnicmp(condition.c_str(), orderClause.c_str(), orderClause.length()) != 0 &&
+            condition[0] != ',')
+        {
+            stmt.append(",");
+        }
+    }
+
+    stmt.append(" ");
+    stmt.append(condition);
+}
+
+// Set file hash for hashType for a_file_id
+// Return 1 on failure, 0 on success.
+int TskImgDBSqlite::setHash(const uint64_t a_file_id, const TskImgDB::HASH_TYPE hashType, const std::string& hash) const 
+{
+    if (!m_db)
+        throw TskException("No database.");
+
+    string hashTypeStr;
+    switch (hashType) {
+    case TskImgDB::MD5:
+        hashTypeStr = "md5";
+        break;
+    case TskImgDB::SHA1:
+        hashTypeStr = "sha1";
+        break;
+    case TskImgDB::SHA2_256:
+        hashTypeStr = "sha2_256";
+        break;
+    case TskImgDB::SHA2_512:
+        hashTypeStr = "sha2_512";
+        break;
+    default:
+        std::wstringstream errorMsg;
+        errorMsg << L"TskImgDBSqlite::setHash - Unsupported hashType : " << hashType ;
+        LOGERROR(errorMsg.str());
+        return 1;
+    }
+
+    stringstream stmt;
+    std::string md5, sha1, sha2_256, sha2_512;
+    int known = IMGDB_FILES_UNKNOWN;
+    std::stringstream stream;
+
+    stmt << "SELECT md5, sha1, sha2_256, sha2_512, known from file_hashes WHERE file_id = " << a_file_id;
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) {
+            md5 = (char *)sqlite3_column_text(statement, 0);
+            sha1 = (char *)sqlite3_column_text(statement, 1);
+            sha2_256 = (char *)sqlite3_column_text(statement, 2);
+            sha2_512 = (char *)sqlite3_column_text(statement, 3);
+            known = (int)sqlite3_column_int(statement, 4);
+        } 
+        sqlite3_finalize(statement);
+    } else {
+        ; // OK if not exists
+    }
+
+    // insert new record
+    stmt.str("");
+    stmt << "INSERT OR REPLACE INTO file_hashes (file_id, md5, sha1, sha2_256, sha2_512, known) VALUES (" << a_file_id;
+    switch (hashType) {
+    case TskImgDB::MD5:
+        stmt << ", '" << hash << "'";
+        stmt << ", '" << sha1 << "'";
+        stmt << ", '" << sha2_256 << "'";
+        stmt << ", '" << sha2_512 << "'";
+        stream << known;
+        stmt << ", " << stream.str();
+        break;
+    case TskImgDB::SHA1:
+        stmt << ", '" << md5 << "'";
+        stmt << ", '" << hash << "'";
+        stmt << ", '" << sha2_256 << "'";
+        stmt << ", '" << sha2_512 << "'";
+        stream << known;
+        stmt << ", " << stream.str();
+        break;
+    case TskImgDB::SHA2_256:
+        stmt << ", '" << md5 << "'";
+        stmt << ", '" << sha1 << "'";
+        stmt << ", '" << hash << "'";
+        stmt << ", '" << sha2_512 << "'";
+        stream << known;
+        stmt << ", " << stream.str();
+        break;
+    case TskImgDB::SHA2_512:
+        stmt << ", '" << md5 << "'";
+        stmt << ", '" << sha1 << "'";
+        stmt << ", '" << sha2_256 << "'";
+        stmt << ", '" << hash << "'";
+        stream << known;
+        stmt << ", " << stream.str();
+        break;
+    }
+    stmt << ")";
+
+    char *errmsg;
+    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) != SQLITE_OK) {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::setHash - Error adding hash to file_hashes table: " << errmsg;
+        LOGERROR(infoMessage.str());
+        sqlite3_free(errmsg);
+        return 1;
+    }
+
+    return 0;
+}
+
+std::string TskImgDBSqlite::getCfileName(const uint64_t a_file_id) const
+{
+    if (!m_db)
+        throw TskException("No database.");
+
+    std::string cfileName;
+    stringstream stmt;
+
+    stmt << "select 'cfile_' || c.vol_id || '_' || cs.sect_start || '_' || f.file_id"
+        " from files f, carved_files c, carved_sectors cs where f.file_id = c.file_id and c.file_id = cs.file_id and cs.seq = 0"
+        " and f.file_id = " << a_file_id;
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) {
+            cfileName = (char *)sqlite3_column_text(statement, 0);
+        }
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage <<  L"TskImgDBSqlite::getCfileName - Error querying tables: %S" << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+    }
+
+    stmt.str("");
+    stmt << "select f.name "
+        " from files f, carved_files c, carved_sectors cs where f.file_id = c.file_id and c.file_id = cs.file_id and cs.seq = 0"
+        " and f.file_id = " << a_file_id;
+
+    std::string name;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) {
+            name = (char *)sqlite3_column_text(statement, 0);
+        }
+        sqlite3_finalize(statement);
+        size_t pos = name.rfind('.');
+        if (pos != string::npos)
+            cfileName += name.substr(pos);
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getCfileName - Error querying tables: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+    }
+
+    return cfileName;
+}
+
+/**
+ * Return the ImageInfo
+ * @param type Image Type (output)
+ * @param sectorSize Image sector size (output)
+ * @returns 0 on success or -1 on error.
+ */
+int TskImgDBSqlite::getImageInfo(int & type, int & sectorSize) const
+{
+    int rc = -1;
+    if (!m_db)
+        return rc;
+
+    stringstream stmt;
+
+    stmt << "SELECT type, ssize FROM image_info";
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) {
+            type = (int)sqlite3_column_int64(statement, 0);
+            sectorSize = (int)sqlite3_column_int64(statement, 1);
+            rc = 0;
+        }
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage <<  L"TskImgDBSqlite::getImageInfo - Error querying image_info table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        return -1;
+    }
+    return rc;
+}
+
+/**
+ * Return a list of TskVolumeInfoRecord
+ * @param volumeInfoList A list of TskVolumeInfoRecord (output)
+ * @returns 0 on success or -1 on error.
+ */
+int TskImgDBSqlite::getVolumeInfo(std::list<TskVolumeInfoRecord> & volumeInfoList) const
+{
+    std::list<TskVolumeInfoRecord> list;
+
+    if (!m_db)
+        return -1;
+
+    stringstream stmt;
+    stmt << "SELECT vol_id, sect_start, sect_len, description, flags FROM vol_info";
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        while (sqlite3_step(statement) == SQLITE_ROW) {
+            TskVolumeInfoRecord vol_info;
+            vol_info.vol_id = sqlite3_column_int(statement,0);
+            vol_info.sect_start = sqlite3_column_int64(statement,1);
+            vol_info.sect_len = sqlite3_column_int64(statement,2);
+            vol_info.description.assign((char *)sqlite3_column_text(statement, 3));
+            vol_info.flags = (TSK_VS_PART_FLAG_ENUM)sqlite3_column_int(statement, 4);
+            volumeInfoList.push_back(vol_info);
+        }
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getVolumeInfo - Error getting from vol_info table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        return -1;
+    }
+    return 0;
+}
+
+/**
+ * Return a list of TskFsInfoRecord
+ * @param fsInfoList A list of TskFsInfoRecord (output)
+ * @returns 0 on success or -1 on error.
+ */
+int TskImgDBSqlite::getFsInfo(std::list<TskFsInfoRecord> & fsInfoList) const
+{
+    std::list<TskFsInfoRecord> list;
+
+    if (!m_db)
+        return -1;
+
+    stringstream stmt;
+    stmt << "SELECT fs_id, img_byte_offset, vol_id, fs_type, block_size, block_count, root_inum, first_inum, last_inum FROM fs_info";
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        while (sqlite3_step(statement) == SQLITE_ROW) {
+            TskFsInfoRecord fs_info;
+            fs_info.fs_id = sqlite3_column_int(statement,0);
+            fs_info.img_byte_offset = sqlite3_column_int64(statement,1);
+            fs_info.vol_id = sqlite3_column_int(statement,2);
+            fs_info.fs_type = (TSK_FS_TYPE_ENUM)sqlite3_column_int(statement,3);
+            fs_info.block_size = sqlite3_column_int(statement,4);
+            fs_info.block_count = sqlite3_column_int64(statement,5);
+            fs_info.root_inum = sqlite3_column_int64(statement,6);
+            fs_info.first_inum = sqlite3_column_int64(statement,7);
+            fs_info.last_inum = sqlite3_column_int64(statement,8);
+            fsInfoList.push_back(fs_info);
+        }
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getFsInfo - Error getting from fs_info table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        return -1;
+    }
+    return 0;
+}
+
+typedef std::map<std::string, int> FileTypeMap_t;
+
+static std::string getFileType(const char *name)
+{
+    std::string filename = name;
+    size_t pos = filename.rfind('.');
+    if (pos != std::string::npos) {
+        std::string suffix = filename.substr(pos);
+        std::string result;
+        for (size_t i=0; i < suffix.size(); i++) {
+            result += (char)tolower(suffix[i]);
+        }
+        return result;
+    }
+    else
+        return std::string("");
+}
+
+/**
+ * Return a list of TskFileTypeRecord for all files.
+ * @param fileTypeInfoList A list of TskFileTypeRecord (output)
+ * @returns 0 on success or -1 on error.
+ */
+int TskImgDBSqlite::getFileInfoSummary(std::list<TskFileTypeRecord> &fileTypeInfoList) const
+{
+    std::stringstream stmt;
+    stmt << "SELECT name FROM files WHERE dir_type = " << TSK_FS_NAME_TYPE_REG;
+
+    return getFileTypeRecords(stmt.str(), fileTypeInfoList);
+}
+
+/**
+ * Return a list of TskFileTypeRecord for fileType
+ * @param fileType FILE_TYPE to report
+ * @param fileTypeInfoList A list of TskFileTypeRecord (output)
+ * @returns 0 on success or -1 on error.
+ */
+int TskImgDBSqlite::getFileInfoSummary(FILE_TYPES fileType, std::list<TskFileTypeRecord> & fileTypeInfoList) const
+{
+    stringstream stmt;
+    stmt << "SELECT name FROM files WHERE type_id = " << fileType << " AND dir_type = " << TSK_FS_NAME_TYPE_REG;
+
+    return getFileTypeRecords(stmt.str(), fileTypeInfoList);
+}
+
+/**
+ * Return a list of TskFileTypeRecords matching the given SQL statement.
+ * @param stmt The SQL statement used to match file records.
+ * @param fileTypeInfoList A list of TskFileTypeRecord (output)
+ * @returns 0 on success of -1 on error.
+ */
+int TskImgDBSqlite::getFileTypeRecords(const std::string& stmt, std::list<TskFileTypeRecord>& fileTypeInfoList) const
+{
+    if (!m_db)
+        return -1;
+
+    std::list<TskFileTypeRecord> list;
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) {
+        FileTypeMap_t fileTypeMap;
+        while (sqlite3_step(statement) == SQLITE_ROW) {
+            char *name = (char *)sqlite3_column_text(statement, 0);
+            std::string type = getFileType(name);
+            FileTypeMap_t::iterator iter = fileTypeMap.find(type);
+            if (iter != fileTypeMap.end()) {
+                // increment file counter
+                int count = iter->second;
+                fileTypeMap[type] = ++count;
+            } else {
+                // add a new file type
+                fileTypeMap.insert(pair<std::string, int>(type, 1));
+            }
+        }
+        for (FileTypeMap_t::const_iterator iter=fileTypeMap.begin(); iter != fileTypeMap.end(); iter++) {
+            TskFileTypeRecord info;
+            info.suffix.assign((*iter).first.c_str());
+            info.count = (*iter).second;
+            info.description.assign("File Type Description");
+            fileTypeInfoList.push_back(info);
+        }
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getFileTypeRecords - Error querying files table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        return -1;
+    }
+    return 0;
+}
+
+/**
+ * Insert the Module record, if module name does not already exist in modules table.
+ * Returns Module Id associated with the Module record.
+ * @param name Module name
+ * @param description Module description
+ * @param moduleId Module Id (output)
+ * @returns 0 on success, -1 on error.
+ */
+int TskImgDBSqlite::addModule(const std::string& name, const std::string& description, int & moduleId)
+{
+    if (!m_db)
+        return -1;
+
+    if (name.empty())
+    {
+        LOGWARN(L"TskImgDBSqlite::addModule - Given an empty module name.");
+        return -1;
+    }
+
+    moduleId = 0;
+
+    sqlite3_stmt * statement;
+    char stmt[1024];
+    sqlite3_snprintf(1024, stmt, "SELECT module_id FROM modules WHERE name = '%q';",
+                     name.c_str());
+
+    if (sqlite3_prepare_v2(m_db, stmt, -1, &statement, 0) == SQLITE_OK) 
+    {
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) 
+        {
+            // Already exists, return module_id
+            moduleId = sqlite3_column_int(statement, 0);
+        }
+        else
+        {
+            // Create a new module record.
+            char insertStmt[1024];
+            char * errmsg;
+            sqlite3_snprintf(1024, insertStmt, 
+                "INSERT INTO modules (module_id, name, description) VALUES (NULL, '%q', '%q');",
+                name.c_str(), description.c_str());
+            if (sqlite3_exec(m_db, insertStmt, NULL, NULL, &errmsg) == SQLITE_OK) 
+            {
+                moduleId = (int)sqlite3_last_insert_rowid(m_db);
+            } 
+            else 
+            {
+                std::wstringstream msg;
+                msg << L"TskImgDBSqlite::addModule - Error adding record to modules table: " << errmsg;
+                LOGERROR(msg.str());
+                sqlite3_free(errmsg);
+            }
+        }
+        sqlite3_finalize(statement);
+    }
+    else
+    {
+        std::wstringstream msg;
+        msg << L"TskImgDBSqlite::addModule - Failed to prepare statement: " << stmt;
+        LOGERROR(msg.str());
+    }
+    
+    if (moduleId == 0)
+        return -1;
+
+    return 0;
+}
+
+/**
+ * Insert the module status record.
+ * @param file_id file_id
+ * @param module_id module_id
+ * @param status Status of module
+ * @returns 0 on success, -1 on error.
+ */
+int TskImgDBSqlite::setModuleStatus(uint64_t file_id, int module_id, int status)
+{
+    int rc = -1;
+
+    if (!m_db)
+        return rc;
+
+    char * errmsg;
+    std::stringstream stmt;
+    stmt << "INSERT INTO module_status (file_id, module_id, status) VALUES (" <<
+        file_id << ", " <<  module_id << ", " << status << ")";
+
+    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) == SQLITE_OK) {
+        rc = 0;
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::setModuleStatus - Error adding data to module_status table: " << errmsg;
+        LOGERROR(infoMessage.str());
+        sqlite3_free(errmsg);
+    }
+    return rc;
+}
+
+/**
+ * Get a list of TskModuleStatus.
+ * @param moduleInfoList A list of TskModuleStatus (output)
+ * @returns 0 on success, -1 on error.
+*/
+int TskImgDBSqlite::getModuleInfo(std::vector<TskModuleInfo> & moduleInfoList) const
+{
+    int rc = -1;
+
+    if (!m_db)
+        return rc;
+
+    stringstream stmt;
+    stmt << "SELECT module_id, name, description FROM modules ORDER BY module_id";
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        TskModuleInfo moduleInfo;
+        while (sqlite3_step(statement) == SQLITE_ROW) {
+            moduleInfo.module_id = (int)sqlite3_column_int64(statement, 0);
+            moduleInfo.module_name = (char *)sqlite3_column_text(statement, 1);
+            moduleInfo.module_description = (char *)sqlite3_column_text(statement, 2);
+            moduleInfoList.push_back(moduleInfo);
+        }
+        sqlite3_finalize(statement);
+        rc = 0;
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getModuleInfo - Error querying modules table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+    }
+    return rc;
+}
+
+/**
+ * Get a list of TskModuleStatus.
+ * @param moduleStatusList A list of TskModuleStatus (output)
+ * @returns 0 on success, -1 on error.
+*/
+int TskImgDBSqlite::getModuleErrors(std::vector<TskModuleStatus> & moduleStatusList) const
+{
+    int rc = -1;
+
+    if (!m_db)
+        return rc;
+
+    stringstream stmt;
+    stmt << "SELECT f.file_id, m.name, ms.status FROM module_status ms, files f, modules m"
+        << " WHERE ms.status != 0 AND ms.file_id = f.file_id AND m.module_id = ms.module_id"
+        << " ORDER BY f.file_id";
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        TskModuleStatus moduleStatus;
+        while (sqlite3_step(statement) == SQLITE_ROW) {
+            moduleStatus.file_id = (uint64_t)sqlite3_column_int64(statement, 0);
+            moduleStatus.module_name = (char *)sqlite3_column_text(statement, 1);
+            moduleStatus.status = (int)sqlite3_column_int(statement, 2);
+            moduleStatusList.push_back(moduleStatus);
+        }
+        sqlite3_finalize(statement);
+        rc = 0;
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getModuleErrors - Error querying module_status table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+    }
+    // Find report module errors. These have file_id = 0.
+    stmt.str("");
+    stmt << "SELECT 0, m.name, ms.status FROM module_status ms, modules m"
+         << " WHERE ms.status != 0 AND ms.file_id = 0 AND m.module_id = ms.module_id";
+
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        TskModuleStatus moduleStatus;
+        while (sqlite3_step(statement) == SQLITE_ROW) {
+            moduleStatus.file_id = (uint64_t)sqlite3_column_int64(statement, 0);
+            moduleStatus.module_name = (char *)sqlite3_column_text(statement, 1);
+            moduleStatus.status = (int)sqlite3_column_int(statement, 2);
+            moduleStatusList.push_back(moduleStatus);
+        }
+        sqlite3_finalize(statement);
+        rc = 0;
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getModuleErrors - Error querying module_status table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+    }
+    return rc;
+}
+
+/*
+ * Return a file name associated with a file_id, prefer Cfilename, otherwise name in the files table.
+ * @param file_id file id
+ * @returns file name as std::string
+ */
+std::string TskImgDBSqlite::getFileName(uint64_t file_id) const
+{
+    std::string name;
+
+    if (!m_db)
+        return name;
+
+    name = getCfileName(file_id);
+    if (name == "") {
+        TskFileRecord fileRecord;
+        if (getFileRecord(file_id, fileRecord) == 0)
+            name = fileRecord.name;
+    }
+    return name;
+}
+
+
+TskImgDB::KNOWN_STATUS TskImgDBSqlite::getKnownStatus(const uint64_t fileId) const
+{
+    int retval = -1;
+
+    if (!m_db)
+        return (KNOWN_STATUS)retval;
+    
+    stringstream stmt;
+    stmt << "SELECT known FROM file_hashes WHERE file_id = " << fileId;
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        if(sqlite3_step(statement) == SQLITE_ROW) {
+            retval = (int)sqlite3_column_int(statement, 0);
+        }
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getKnownStatus - Error getting known status " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+    }
+
+    return (KNOWN_STATUS)retval;
+}
+
+
+/**
+ * Add a new row to the unalloc_img_status table, returning the unalloc_img_id.
+ * @param unallocImgId unalloc_img_id (output)
+ * @returns -1 on error, 0 on success.
+ */
+int TskImgDBSqlite::addUnallocImg(int & unallocImgId)
+{
+    int rc = -1;
+
+    if (!m_db)
+        return rc;
+
+    std::stringstream stmt;
+    stmt << "INSERT INTO unalloc_img_status (unalloc_img_id, status) VALUES (NULL, " << TskImgDB::IMGDB_UNALLOC_IMG_STATUS_CREATED << ")";
+    char * errmsg;
+    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) == SQLITE_OK) {
+        unallocImgId = (int)sqlite3_last_insert_rowid(m_db);
+        rc = 0;
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::addUnallocImg - Error adding unalloc_img_status table: " << errmsg;
+        LOGERROR(infoMessage.str());
+        sqlite3_free(errmsg);
+    }
+    return rc;
+}
+
+/**
+ * Set the status in the unalloc_img_status table given the unalloc_img_id.
+ * @param unallocImgId unalloc_img_id
+ * @param status status of unalloc_img_id
+ * @returns -1 on error, 0 on success.
+ */
+int TskImgDBSqlite::setUnallocImgStatus(int unallocImgId, TskImgDB::UNALLOC_IMG_STATUS status)
+{
+    int rc = -1;
+
+    if (!m_db)
+        return rc;
+
+    std::stringstream stmt;
+    stmt << "UPDATE unalloc_img_status SET status = " << status << " WHERE unalloc_img_id = " << unallocImgId;
+    char * errmsg;
+    if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, &errmsg) == SQLITE_OK) {
+        rc = 0;
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::addUnallocImg - Error adding unalloc_img_status table: " << errmsg;
+        LOGERROR(infoMessage.str());
+        sqlite3_free(errmsg);
+    }
+    return rc;
+}
+
+/**
+ * Get the status of the unalloc_img_status table given the unalloc_img_id.
+ * Can throws TskException.
+ * @param unallocImgId unalloc_img_id
+ * @returns TskImgDB::UNALLOC_IMG_STATUS
+ */
+TskImgDB::UNALLOC_IMG_STATUS TskImgDBSqlite::getUnallocImgStatus(int unallocImgId) const
+{
+    if (!m_db)
+        throw TskException("Database not initialized.");
+
+    int status = 0;
+    stringstream stmt;
+    stmt << "SELECT status FROM unalloc_img_status WHERE unalloc_img_id = " << unallocImgId;
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        if (sqlite3_step(statement) == SQLITE_ROW) {
+            status = (int)sqlite3_column_int(statement, 0);
+        }
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getUnallocImgStatus - Error getting unalloc_img_status: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+    }
+    return (TskImgDB::UNALLOC_IMG_STATUS)status;
+}
+
+/**
+ * Get all the unalloc_img_status table.
+ * @param unallocImgStatusList A vector of TskUnallocImgStatusRecord (output)
+ * @returns -1 on error, 0 on success.
+ */
+int TskImgDBSqlite::getAllUnallocImgStatus(std::vector<TskUnallocImgStatusRecord> & unallocImgStatusList) const
+{
+    int rc = -1;
+    unallocImgStatusList.clear();
+
+    if (!m_db)
+        return rc;
+
+    stringstream stmt;
+    stmt << "SELECT unalloc_img_id, status FROM unalloc_img_status";
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        while (sqlite3_step(statement) == SQLITE_ROW) {
+            TskUnallocImgStatusRecord record;
+            record.unallocImgId = (int)sqlite3_column_int(statement, 0);
+            record.status = (TskImgDB::UNALLOC_IMG_STATUS)sqlite3_column_int(statement, 1);
+            unallocImgStatusList.push_back(record);
+        }
+        rc = 0;
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getAllUnallocImgStatus - Error getting unalloc_img_status: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+    }
+    return rc;
+}
+
+/**
+ * Find and add all the unused sectors (unallocated and uncarved bytes) in the given unallocImgId
+ * @param unallocImgId The unalloc image id.
+ * @param unusedSectorsList A vector of TskUnusedSectorsRecord
+ * @returns -1 on error, 0 on success.
+ */
+int TskImgDBSqlite::addUnusedSectors(int unallocImgId, std::vector<TskUnusedSectorsRecord> & unusedSectorsList)
+{
+    assert(unallocImgId > 0);
+    int rc = -1;
+    if (!m_db)
+        return rc;
+
+    std::stringstream stmt;
+    stmt << "SELECT vol_id, unalloc_img_sect_start, sect_len, orig_img_sect_start FROM alloc_unalloc_map "
+        "WHERE unalloc_img_id = " << unallocImgId << " ORDER BY orig_img_sect_start ASC";
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        vector<TskAllocUnallocMapRecord> allocUnallocMapList;
+
+        while (sqlite3_step(statement) == SQLITE_ROW) {
+            TskAllocUnallocMapRecord record;
+            record.vol_id = (int)sqlite3_column_int(statement, 0);
+            record.unalloc_img_id = unallocImgId;
+            record.unalloc_img_sect_start = (uint64_t)sqlite3_column_int64(statement, 1);
+            record.sect_len = (uint64_t)sqlite3_column_int64(statement, 2);
+            record.orig_img_sect_start = (uint64_t)sqlite3_column_int64(statement, 3);
+            allocUnallocMapList.push_back(record);
+        }
+        sqlite3_finalize(statement);
+
+        for (std::vector<TskAllocUnallocMapRecord>::const_iterator it = allocUnallocMapList.begin();
+             it != allocUnallocMapList.end(); it++)
+        {
+            // Sector position tracks our position through the unallocated map record.
+            uint64_t sectPos = it->orig_img_sect_start;
+
+            uint64_t endSect = it->orig_img_sect_start + it->sect_len;
+
+            // Retrieve all carved_sector records in range for this section of unallocated space.
+            stmt.str("");
+            stmt << "SELECT cs.sect_start, cs.sect_len FROM carved_files cf, carved_sectors cs"
+                << " WHERE cf.file_id = cs.file_id AND cs.sect_start >= " << it->orig_img_sect_start
+                << " AND cs.sect_start < " << endSect << " ORDER BY cs.sect_start ASC";
+
+            if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+                while (sqlite3_step(statement) == SQLITE_ROW) {
+                    uint64_t cfileSectStart = (uint64_t)sqlite3_column_int64(statement, 0);
+                    uint64_t cfileSectLen = (uint64_t)sqlite3_column_int64(statement, 1);
+                    if (cfileSectStart > sectPos)
+                    {
+                        // We have a block of unused sectors between this position in the unallocated map
+                        // and the start of the carved file.
+                        addUnusedSector(sectPos, cfileSectStart, it->vol_id, unusedSectorsList);
+                    }
+
+                    sectPos = cfileSectStart + cfileSectLen;
+                }
+
+                // Handle case where there is slack at the end of the unalloc range
+                if (sectPos < endSect)
+                    addUnusedSector(sectPos, endSect, it->vol_id, unusedSectorsList);
+
+                sqlite3_finalize(statement);
+            } else {
+                std::wstringstream infoMessage;
+                infoMessage << L"TskImgDBSqlite::addUnusedSectors - Error querying carved_files, carved_sectors table: " << sqlite3_errmsg(m_db);
+                LOGERROR(infoMessage.str());
+            }
+        }
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::addUnusedSectors - Error querying alloc_unalloc_map table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+    }
+    return 0;
+}
+
+/**
+ * Add one unused sector to the database, add it to the files and unused_sectors tables.
+ * @param sectStart Unused sector start.
+ * @param sectEnd Unused sector end.
+ * @param volId Volume Id of the unused sector.
+ * @param unusedSectorsList A vector of TskUnusedSectorsRecord (output)
+ * @returns -1 on error, 0 on success.
+ */
+int TskImgDBSqlite::addUnusedSector(uint64_t sectStart, uint64_t sectEnd, int volId, std::vector<TskUnusedSectorsRecord> & unusedSectorsList)
+{
+    assert(sectEnd > sectStart);
+    int rc = -1;
+    unusedSectorsList.clear();
+    if (!m_db)
+        return rc;
+
+    std::stringstream stmt;
+
+    std::string maxUnused = GetSystemProperty("MAX_UNUSED_FILE_SIZE_BYTES");
+    const uint64_t maxUnusedFileSizeBytes = maxUnused.empty() ? (50 * 1024 * 1024) : Poco::NumberParser::parse64(maxUnused);
+
+    uint64_t maxUnusedSectorSize = maxUnusedFileSizeBytes / 512;
+    uint64_t sectorIndex = 0;
+    uint64_t sectorCount = (sectEnd - sectStart) / maxUnusedSectorSize;
+
+    while (sectorIndex <= sectorCount) {
+        uint64_t thisSectStart = sectStart + (sectorIndex * maxUnusedSectorSize);
+        uint64_t thisSectEnd = thisSectStart + (std::min)(maxUnusedSectorSize, sectEnd - thisSectStart);
+
+        stmt.str("");
+        stmt << "INSERT INTO files (file_id, type_id, name, par_file_id, dir_type, meta_type,"
+            "dir_flags, meta_flags, size, ctime, crtime, atime, mtime, mode, uid, gid, status, full_path) "
+            "VALUES (NULL, " << IMGDB_FILES_TYPE_UNUSED << ", " << "'ufile'" 
+            << ", NULL, " <<  TSK_FS_NAME_TYPE_REG << ", " <<  TSK_FS_META_TYPE_REG << ", "
+            << TSK_FS_NAME_FLAG_UNALLOC << ", " << TSK_FS_META_FLAG_UNALLOC << ", "
+            << (thisSectEnd - thisSectStart) * 512 << ", NULL, NULL, NULL, NULL, NULL, NULL, NULL, " << IMGDB_FILES_STATUS_READY_FOR_ANALYSIS << "," << "'ufile'" << ")";
+
+        if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, NULL) == SQLITE_OK) {
+
+            TskUnusedSectorsRecord record;
+
+            // get the file_id from the last insert
+            record.fileId = sqlite3_last_insert_rowid(m_db);
+            record.sectStart = thisSectStart;
+            record.sectLen = thisSectEnd - thisSectStart;
+
+            std::stringstream name;
+            name << "ufile_" << thisSectStart << "_" << thisSectEnd << "_" << record.fileId;
+            stmt.str("");
+            char *item;
+            item = sqlite3_mprintf("%Q", name.str().c_str());
+            stmt << "UPDATE files SET name = " << item << ", full_path = " 
+                << item << " WHERE file_id = " << record.fileId;
+            sqlite3_free(item);
+
+            if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, NULL) != SQLITE_OK) {
+                std::wstringstream infoMessage;
+                infoMessage << L"TskImgDBSqlite::addUnusedSector - Error update into files table: " << sqlite3_errmsg(m_db);
+                LOGERROR(infoMessage.str());
+                rc = -1;
+                break;
+            }
+
+            stmt.str("");
+            stmt << "INSERT INTO unused_sectors (file_id, sect_start, sect_len, vol_id) VALUES (" 
+                 << record.fileId << ", " << record.sectStart << ", " << record.sectLen << ", " << volId << ")";
+
+            if (sqlite3_exec(m_db, stmt.str().c_str(), NULL, NULL, NULL) != SQLITE_OK) {
+                std::wstringstream infoMessage;
+                infoMessage << L"TskImgDBSqlite::addUnusedSector - Error insert into unused_sectors table: " << sqlite3_errmsg(m_db);
+                LOGERROR(infoMessage.str());
+                rc = -1;
+                break;
+            }
+
+            unusedSectorsList.push_back(record);
+            rc = 0;
+
+        } else {
+            std::wstringstream infoMessage;
+            infoMessage << L"TskImgDBSqlite::addUnusedSector - Error insert into files table: " << sqlite3_errmsg(m_db);
+            LOGERROR(infoMessage.str());
+            rc = -1;
+            break;
+        }
+        sectorIndex++;
+    } // while
+    return rc;
+}
+
+/**
+ * Get unused sector record given a file id.
+ * @param fileId File id of the unused sector.
+ * @param unusedSectorsRecord TskUnusedSectorsRecord (output)
+ * @returns -1 on error, 0 on success.
+ */
+int TskImgDBSqlite::getUnusedSector(uint64_t fileId, TskUnusedSectorsRecord & unusedSectorsRecord) const
+{
+    int rc = -1;
+    if (!m_db)
+        return rc;
+
+    std::stringstream stmt;
+    stmt << "SELECT sect_start, sect_len FROM unused_sectors WHERE file_id = " << fileId;
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        if (sqlite3_step(statement) == SQLITE_ROW) {
+            unusedSectorsRecord.fileId = fileId;
+            unusedSectorsRecord.sectStart = (uint64_t)sqlite3_column_int64(statement, 0);
+            unusedSectorsRecord.sectLen = (uint64_t)sqlite3_column_int64(statement, 1);
+            rc = 0;
+        } else {
+            std::wstringstream msg;
+            msg << L"TskDBSqlite::getUnusedSector - Error querying unused_sectors table for file_id "
+                << fileId ;
+            LOGERROR(msg.str());
+        }
+    } else {
+        std::wstringstream msg;
+        msg << L"TskDBSqlite::getUnusedSector - Error querying unused_sectors table: "
+            << sqlite3_errmsg(m_db) ;
+        LOGERROR(msg.str());
+    }
+    return rc;
+}
+
+///BLACKBOARD FUNCTIONS
+/**
+ * Add the given blackboard attribute to the database
+ * @param attr input attribute. should be fully populated
+ */
+void TskImgDBSqlite::addBlackboardAttribute(TskBlackboardAttribute attr)
+{
+    if (!m_db)
+        throw TskException("No database.");
+
+    std::stringstream str;
+    char *item;
+    sqlite3_stmt * statement;
+
+    str << "INSERT INTO blackboard_attributes (artifact_id, source, context, attribute_type_id, value_type, "
+        "value_byte, value_text, value_int32, value_int64, value_double, obj_id) VALUES (";
+        str << attr.getArtifactID() << ", ";
+    item = sqlite3_mprintf("%Q", attr.getModuleName().c_str()); str << item << ", ";
+    sqlite3_free(item);
+    item = sqlite3_mprintf("%Q", attr.getContext().c_str()); str << item << ", ";
+    sqlite3_free(item);
+    str << attr.getAttributeTypeID() << ", ";
+    str << attr.getValueType() << ", ";
+    switch (attr.getValueType()) {
+        case TSK_BYTE:
+            str << " ?, '', 0, 0, 0.0";
+            break;
+        case TSK_STRING:
+            item = sqlite3_mprintf("%Q", attr.getValueString().c_str());
+            str << " '', " << item << ", 0, 0, 0.0";
+            sqlite3_free(item);
+            break;
+        case TSK_INTEGER:
+            str << " '', '', " << attr.getValueInt() << ",     0, 0.0";
+            break;
+        case TSK_LONG:
+            str << " '', '', 0, " << attr.getValueLong() << ",     0.0";
+            break;
+        case TSK_DOUBLE:
+            str << " '', '', 0, 0, " << setprecision(20) << attr.getValueDouble();
+            break;
+    };
+    str << ", " << attr.getObjectID();
+    str << ")";
+
+    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        int result = SQLITE_OK;
+        unsigned char *pBuf = 0;
+        if (attr.getValueType() == TSK_BYTE) {
+            // Bind the byte vector
+            int a_size = attr.getValueBytes().size();
+            pBuf = new unsigned char[a_size];
+            for (int i = 0; i < a_size; i++) {
+                pBuf[i] = attr.getValueBytes()[i];
+            }
+            result = sqlite3_bind_blob(statement, 1, pBuf, a_size, SQLITE_STATIC);
+        }
+        if (result == SQLITE_OK) {
+            result = sqlite3_step(statement);
+            if (!(result == SQLITE_ROW || result == SQLITE_DONE)) {
+                sqlite3_finalize(statement);
+                if (pBuf) delete [] pBuf;
+                throw TskException("TskImgDBSqlite::addBlackboardAttribute - Insert failed");
+            }
+        } else {
+            std::wstringstream infoMessage;
+            infoMessage << L"TskImgDBSqlite::addBlackboardAttribute - Error in sqlite3_bind_blob: " << sqlite3_errmsg(m_db);
+            LOGERROR(infoMessage.str());
+            throw TskException("TskImgDBSqlite::addBlackboardAttribute - Insert failed");
+        }
+        sqlite3_finalize(statement);
+        if (pBuf) delete [] pBuf;
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::addBlackboardAttribute - Error adding data to blackboard table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        throw TskException("TskImgDBSqlite::addBlackboardAttribute - Insert failed");
+    }
+}
+
+/**
+ * Get the display name for the given artifact type id
+ * @param artifactTypeID artifact type id
+ * @returns display name
+ */
+string TskImgDBSqlite::getArtifactTypeDisplayName(int artifactTypeID){
+    if (!m_db)
+        throw TskException("No database.");
+
+    std::stringstream str;
+    sqlite3_stmt * statement;
+    std::string displayName = "";
+
+    str << "SELECT display_name FROM blackboard_artifact_types WHERE artifact_type_id = " << artifactTypeID;
+
+    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK){
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) {
+            displayName = (char *)sqlite3_column_text(statement, 0);
+        }
+        else{
+            std::wstringstream infoMessage;
+            infoMessage << L"TskImgDBSqlite::getArtifactTypeDisplayName: " << sqlite3_errmsg(m_db);
+            LOGERROR(infoMessage.str());
+            throw TskException("TskImgDBSqlite::getArtifactTypeDisplayName - No artifact type with that ID");
+        }
+        sqlite3_finalize(statement);
+        return displayName;
+    }
+    else{
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getArtifactTypeDisplayName: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        throw TskException("TskImgDBSqlite::getArtifactTypeDisplayName - Select failed");
+    }
+}
+
+/**
+ * Get the artifact type id for the given artifact type string
+ * @param artifactTypeString display name
+ * @returns artifact type id
+ */
+int TskImgDBSqlite::getArtifactTypeID(string artifactTypeString){
+    if (!m_db)
+        throw TskException("No database.");
+
+    std::stringstream str;
+    sqlite3_stmt * statement;
+    int typeID;
+
+    str << "SELECT artifact_type_id FROM blackboard_artifact_types WHERE type_name = " << artifactTypeString;
+
+    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK){
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) {
+            typeID = (int) sqlite3_column_int(statement, 0);
+        }
+        else{
+            std::wstringstream infoMessage;
+            infoMessage << L"TskImgDBSqlite::getArtifactTypeID: " << sqlite3_errmsg(m_db);
+            LOGERROR(infoMessage.str());
+            throw TskException("TskImgDBSqlite::getArtifactTypeID - No artifact type with that name");
+        }
+        sqlite3_finalize(statement);
+        return typeID;
+    }
+    else{
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getArtifactTypeID: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        throw TskException("TskImgDBSqlite::getArtifactTypeID - Select failed");
+    }
+}
+
+/**
+ * Get the artifact type name for the given artifact type id
+ * @param artifactTypeID id
+ * @returns artifact type name
+ */
+string TskImgDBSqlite::getArtifactTypeName(int artifactTypeID){
+    if (!m_db)
+        throw TskException("No database.");
+
+    std::stringstream str;
+    sqlite3_stmt * statement;
+    std::string typeName = "";
+
+    str << "SELECT type_name FROM blackboard_artifact_types WHERE artifact_type_id = " << artifactTypeID;
+
+    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK){
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) {
+            typeName = (char *)sqlite3_column_text(statement, 0);
+        }
+        else{
+            std::wstringstream infoMessage;
+            infoMessage << L"TskImgDBSqlite::getArtifactTypeName: " << sqlite3_errmsg(m_db);
+            LOGERROR(infoMessage.str());
+            throw TskException("TskImgDBSqlite::getArtifactTypeName - No artifact type with that ID");
+        }
+        sqlite3_finalize(statement);
+        return typeName;
+    }
+    else{
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getArtifactTypeName: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        throw TskException("TskImgDBSqlite::getArtifactTypeName - Select failed");
+    }
+}
+
+/**
+ * Get the display name for the given attribute type id
+ * @param attributeTypeID attribute type id
+ * @returns display name
+ */
+string TskImgDBSqlite::getAttributeTypeDisplayName(int attributeTypeID){
+    if (!m_db)
+        throw TskException("No database.");
+
+    std::stringstream str;
+    sqlite3_stmt * statement;
+    std::string displayName = "";
+
+    str << "SELECT display_name FROM blackboard_attribute_types WHERE attribute_type_id = " << attributeTypeID;
+
+    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK){
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) {
+            displayName = (char *)sqlite3_column_text(statement, 0);
+        }
+        else{
+            std::wstringstream infoMessage;
+            infoMessage << L"TskImgDBSqlite::getAttributeTypeDisplayName: " << sqlite3_errmsg(m_db);
+            LOGERROR(infoMessage.str());
+            throw TskException("TskImgDBSqlite::getAttributeTypeDisplayName - No attribute type with that ID");
+        }
+        sqlite3_finalize(statement);
+        return displayName;
+    }
+    else{
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getAttributeTypeDisplayName: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        throw TskException("TskImgDBSqlite::getAttributeTypeDisplayName - Select failed");
+    }
+}
+
+/**
+ * Get the attribute type id for the given artifact type string
+ * @param attributeTypeString display name
+ * @returns attribute type id
+ */
+int TskImgDBSqlite::getAttributeTypeID(string attributeTypeString){
+    if (!m_db)
+        throw TskException("No database.");
+
+    std::stringstream str;
+    sqlite3_stmt * statement;
+    int typeID;
+
+    str << "SELECT attribute_type_id FROM blackboard_attribute_types WHERE type_name = " << attributeTypeString;
+
+    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK){
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) {
+            typeID = (int) sqlite3_column_int(statement, 0);
+        }
+        else{
+            std::wstringstream infoMessage;
+            infoMessage << L"TskImgDBSqlite::getAttributeTypeID: " << sqlite3_errmsg(m_db);
+            LOGERROR(infoMessage.str());
+            throw TskException("TskImgDBSqlite::getAttributeTypeID - No artifact type with that name");
+        }
+        sqlite3_finalize(statement);
+        return typeID;
+    }
+    else{
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getAttributeTypeID: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        throw TskException("TskImgDBSqlite::getAttributeTypeID - Select failed");
+    }
+}
+
+/**
+ * Get the attribute type name for the given artifact type id
+ * @param attributeTypeID id
+ * @returns attribute type name
+ */
+string TskImgDBSqlite::getAttributeTypeName(int attributeTypeID){
+    if (!m_db)
+        throw TskException("No database.");
+
+    std::stringstream str;
+    sqlite3_stmt * statement;
+    std::string typeName = "";
+
+    str << "SELECT type_name FROM blackboard_attribute_types WHERE attribute_type_id = " << attributeTypeID;
+
+    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK){
+        int result = sqlite3_step(statement);
+        if (result == SQLITE_ROW) {
+            typeName = (char *)sqlite3_column_text(statement, 0);
+        }
+        else{
+            std::wstringstream infoMessage;
+            infoMessage << L"TskImgDBSqlite::getAttributeTypeName: " << sqlite3_errmsg(m_db);
+            LOGERROR(infoMessage.str());
+            throw TskException("TskImgDBSqlite::getAttributeTypeName - No attribute type with that ID");
+        }
+        sqlite3_finalize(statement);
+        return typeName;
+    }
+    else{
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::getAttributeTypeName: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        throw TskException("TskImgDBSqlite::getAttributeTypeName - Select failed");
+    }
+}
+
+/**
+ * Get all artifacts by performing a SQL Select statement with the given where clause.
+ * @param condition The SQL select where clause that should be used in the query.
+ * @returns vector of matching artifacts
+ */
+vector<TskBlackboardArtifact> TskImgDBSqlite::getMatchingArtifacts(string condition)
+{
+    if (!m_db)
+        throw TskException("No database.");
+    
+    vector<TskBlackboardArtifact> artifacts;
+    std::string stmt("SELECT blackboard_artifacts.artifact_id, blackboard_artifacts.obj_id, blackboard_artifacts.artifact_type_id FROM blackboard_artifacts");
+
+    constructStmt(stmt, condition);
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) 
+    {
+        while (sqlite3_step(statement) == SQLITE_ROW) 
+        {
+            int artifactTypeID = sqlite3_column_int(statement, 2);
+
+            artifacts.push_back(TskImgDB::createArtifact(sqlite3_column_int64(statement, 0), sqlite3_column_int64(statement, 1), artifactTypeID));
+        }
+        sqlite3_finalize(statement);
+    } else 
+    {
+        std::wstringstream msg;
+        msg << L"TskImgDBSqlite::getMatchingArtifacts - Error getting artifacts: " << sqlite3_errmsg(m_db);
+        LOGERROR(msg.str());
+        throw TskException("TskImgDBSqlite::getMatchingArtifacts - Select failed");
+    }
+    return artifacts;
+}
+
+/**
+ * Get all attributes with that match the given where clause 
+ * @param condition where clause to use for matching
+ * @returns vector of matching attributes
+ */
+vector<TskBlackboardAttribute> TskImgDBSqlite::getMatchingAttributes(string condition)
+{
+    if (!m_db)
+        throw TskException("No database.");
+    
+    vector<TskBlackboardAttribute> attributes;
+    std::string stmt("SELECT blackboard_attributes.artifact_id, blackboard_attributes.source, blackboard_attributes.context, blackboard_attributes.attribute_type_id, blackboard_attributes.value_type, blackboard_attributes.value_byte, blackboard_attributes.value_text, blackboard_attributes.value_int32, blackboard_attributes.value_int64, blackboard_attributes.value_double, blackboard_attributes.obj_id FROM blackboard_attributes ");
+
+    constructStmt(stmt, condition);
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.c_str(), -1, &statement, 0) == SQLITE_OK) 
+    {
+        while (sqlite3_step(statement) == SQLITE_ROW) 
+        { 
+            int blobSize = sqlite3_column_bytes(statement, 6);
+            const unsigned char *pBlob = (const unsigned char *)sqlite3_column_blob(statement, 6);
+            vector<unsigned char> bytes;
+            bytes.reserve(blobSize);
+            for (int i = 0; i < blobSize; i++) {
+                bytes.push_back((unsigned char)pBlob[i]);
+            }
+
+            attributes.push_back(TskImgDB::createAttribute(sqlite3_column_int64(statement, 0),sqlite3_column_int(statement, 3), sqlite3_column_int64(statement, 10), std::string((char *)sqlite3_column_text(statement, 1)), 
+                std::string((char *)sqlite3_column_text(statement, 2)), (TSK_BLACKBOARD_ATTRIBUTE_VALUE_TYPE) sqlite3_column_int(statement, 4), sqlite3_column_int(statement, 7), 
+                sqlite3_column_int64(statement, 8), sqlite3_column_double(statement, 9), std::string((char *)sqlite3_column_text(statement, 6)), bytes));
+        }
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream msg;
+        msg << L"TskImgDBSqlite::getMatchingAttributes - Error getting attributes: " << sqlite3_errmsg(m_db);
+        LOGERROR(msg.str());
+        throw TskException("TskImgDBSqlite::getMatchingAttributes - Select failed");
+    }
+    return attributes;
+}
+
+/**
+ * Create a new blackboard artifact with the given type id and file id
+ * @param artifactTypeID artifact type id
+ * @param file_id associated file id
+ * @returns the new artifact
+ */
+TskBlackboardArtifact TskImgDBSqlite::createBlackboardArtifact(uint64_t file_id, int artifactTypeID)
+{
+    if (!m_db)
+        throw TskException("No database.");
+
+    uint64_t artifactId = 0;
+    std::stringstream str;
+    sqlite3_stmt * statement;
+
+    str << "INSERT INTO blackboard_artifacts (artifact_id, obj_id, artifact_type_id) VALUES (NULL, " << file_id << ", " << artifactTypeID << ")";
+
+    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        if (!(sqlite3_step(statement) == SQLITE_DONE)) {
+            sqlite3_finalize(statement);
+            throw TskException("TskImgDBSqlite::addBlackboardInfo - Insert failed");
+        }
+        // select max(artifact_id) from blackboard
+        str.str("");
+        str << "SELECT artifact_id from blackboard_artifacts WHERE obj_id = " << file_id << " AND artifact_type_id = " << artifactTypeID;
+        sqlite3_finalize(statement);
+        if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+            while(sqlite3_step(statement) == SQLITE_ROW) {
+                uint64_t newID = sqlite3_column_int64(statement, 0);
+                if(newID > artifactId)
+                    artifactId = newID;
+            }
+        } else {
+            sqlite3_finalize(statement);
+            throw TskException("TskImgDBSqlite::newBlackboardArtifact - Select artifact_id failed");
+        }
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::newBlackboardArtifact - Error adding new artifact: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        throw TskException("TskImgDBSqlite::newBlackboardArtifact - Insert failed");
+    }
+
+    return TskImgDB::createArtifact(artifactId, file_id, artifactTypeID);
+}
+
+/**
+ * Add a new artifact type with the given name, display name and id 
+ * @param artifactTypeName type name
+ * @param displayName display name
+ * @param typeID type id
+ */
+void TskImgDBSqlite::addArtifactType(int typeID, string artifactTypeName, string displayName)
+{
+    if (!m_db)
+        throw TskException("No database.");
+
+    std::stringstream str;
+    sqlite3_stmt * statement;
+
+    str << "SELECT * FROM blackboard_artifact_types WHERE type_name = '" << artifactTypeName << "'";
+
+    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        if (!(sqlite3_step(statement) == SQLITE_ROW)) {
+            sqlite3_finalize(statement);
+            str.str("");
+            str << "INSERT INTO blackboard_artifact_types (artifact_type_id, type_name, display_name) VALUES (" << typeID << " , '" << artifactTypeName << "', '" << displayName << "')";
+            if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+                if (!(sqlite3_step(statement) == SQLITE_DONE)) {
+                    sqlite3_finalize(statement);
+                    std::wstringstream infoMessage;
+                    infoMessage << L"TskImgDBSqlite::addArtifactType - Error adding data to blackboard table: " << sqlite3_errmsg(m_db);
+                    LOGERROR(infoMessage.str());
+                    throw TskException("TskImgDBSqlite::addArtifactType - Artifact type insert failed");
+                }
+            }
+        }
+        else{
+            sqlite3_finalize(statement);
+            throw TskException("TskImgDBSqlite::addArtifactType - Artifact type with that name already exists");
+        }
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::addArtifactType - Error adding data to blackboard table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        throw TskException("TskImgDBSqlite::addArtifactType - Insert failed");
+    }
+}
+
+/**
+ * Add a new attribute type with the given name, display name and id 
+ * @param attributeTypeName type name
+ * @param displayName display name
+ * @param typeID type id
+ */
+void TskImgDBSqlite::addAttributeType(int typeID, string attributeTypeName, string displayName)
+{
+    if (!m_db)
+        throw TskException("No database.");
+
+    std::stringstream str;
+    sqlite3_stmt * statement;
+
+    str << "SELECT * FROM blackboard_attribute_types WHERE type_name = '" << attributeTypeName << "'";
+
+    if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+        if (!(sqlite3_step(statement) == SQLITE_ROW)) {
+            sqlite3_finalize(statement);
+            str.str("");
+            str << "INSERT INTO blackboard_attribute_types (attribute_type_id, type_name, display_name) VALUES (" << typeID << " , '" << attributeTypeName << "', '" << displayName << "')";
+            if (sqlite3_prepare_v2(m_db, str.str().c_str(), -1, &statement, 0) == SQLITE_OK) {
+                if (!(sqlite3_step(statement) == SQLITE_DONE)) {
+                    sqlite3_finalize(statement);
+                    std::wstringstream infoMessage;
+                    infoMessage << L"TskImgDBSqlite::addAttributeType - Error adding data to blackboard table: " << sqlite3_errmsg(m_db);
+                    LOGERROR(infoMessage.str());
+                    throw TskException("TskImgDBSqlite::addAttributeType - Attribute type insert failed");
+                }
+            }
+        } else {
+            sqlite3_finalize(statement);
+            throw TskException("TskImgDBSqlite::addAttributeType - Attribute type with that name already exists");
+        }
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream infoMessage;
+        infoMessage << L"TskImgDBSqlite::addAttributeType - Error adding data to blackboard table: " << sqlite3_errmsg(m_db);
+        LOGERROR(infoMessage.str());
+        throw TskException("TskImgDBSqlite::addAttributeType - Insert failed");
+    }
+}
+
+/**
+ * Get all artifacts with the given type id, type name, and file id
+ * @param artifactTypeID type id
+ * @param artifactTypeName type name
+ * @param file_id file id
+ */
+vector<TskBlackboardArtifact> TskImgDBSqlite::getArtifactsHelper(uint64_t file_id, int artifactTypeID, string artifactTypeName)
+{
+    if (!m_db)
+        throw TskException("No database.");
+    
+    vector<TskBlackboardArtifact> artifacts;
+    std::stringstream stmt;
+    stmt << "SELECT artifact_id, obj_id, artifact_type_id FROM blackboard_artifacts WHERE obj_id = " << file_id << " AND artifact_type_id = " << artifactTypeID;
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) 
+    {
+        while (sqlite3_step(statement) == SQLITE_ROW) 
+        {
+            int artifactTypeID = sqlite3_column_int(statement, 2);
+
+            artifacts.push_back(TskImgDB::createArtifact(sqlite3_column_int64(statement, 0), file_id, artifactTypeID));
+        }
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream msg;
+        msg << L"TskImgDBSqlite::getArtifactsHelper - Error getting artifacts: " << sqlite3_errmsg(m_db);
+        LOGERROR(msg.str());
+        throw TskException("TskImgDBSqlite::getArtifactsHelper - Select failed");
+    }
+    return artifacts;
+}
+
+vector<int> TskImgDBSqlite::findAttributeTypes(int artifactTypeId)
+{
+    if (!m_db) {
+        throw TskException("No database.");
+    }
+    vector<int> attrTypes;
+    std::stringstream stmt;
+    stmt << "SELECT DISTINCT(attribute_type_id) FROM blackboard_attributes JOIN blackboard_artifacts ON blackboard_attributes.artifact_id = blackboard_artifacts.artifact_id WHERE artifact_type_id = " << artifactTypeId;
+
+    sqlite3_stmt * statement;
+    if (sqlite3_prepare_v2(m_db, stmt.str().c_str(), -1, &statement, 0) == SQLITE_OK) 
+    {
+        while (sqlite3_step(statement) == SQLITE_ROW) 
+        {
+            int artifactTypeID = sqlite3_column_int(statement, 0);
+
+            attrTypes.push_back(artifactTypeID);
+        }
+        sqlite3_finalize(statement);
+    } else {
+        std::wstringstream msg;
+        msg << L"TskImgDBSqlite::findAttributeTypes - Error finding attribute types: " << sqlite3_errmsg(m_db);
+        LOGERROR(msg.str());
+        throw TskException("TskImgDBSqlite::findAttributeTypes - Select failed");
+    }
+    return attrTypes;
+}
+
+std::string TskImgDBSqlite::quote(const std::string str) const
+{
+    char *item = sqlite3_mprintf("%Q", str.c_str());
+    std::string returnStr(item);
+    sqlite3_free(item);
+    return returnStr;
+}
+
+void TskImgDBSqlite::executeStatement(const std::string &stmtToExecute, sqlite3_stmt *&statement, const std::string &caller) const
+{
+    if (sqlite3_prepare_v2(m_db, stmtToExecute.c_str(), -1, &statement, 0) != SQLITE_OK)
+    {
+        sqlite3_finalize(statement);
+        std::ostringstream msg;
+        msg << caller << " : error executing " << stmtToExecute << " : " << sqlite3_errmsg(m_db);
+        throw TskException(msg.str());
+    }
+}
+
+
diff --git a/framework/tsk/framework/services/TskImgDBSqlite.h b/framework/tsk/framework/services/TskImgDBSqlite.h
index b2c885457c5ac9f1d853570bd8ae562035bff21e..c10e5cd537d81ec21cfeb13a5f3454234bf84740 100755
--- a/framework/tsk/framework/services/TskImgDBSqlite.h
+++ b/framework/tsk/framework/services/TskImgDBSqlite.h
@@ -1,181 +1,181 @@
-/*
- *
- *  The Sleuth Kit
- *
- *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- *  reserved.
- *
- *  This software is distributed under the Common Public License 1.0
- */
-
-#ifndef _TSK_IMGDBSQLITE_H
-#define _TSK_IMGDBSQLITE_H
-
-// System includes
-#include <string> // to get std::wstring
-#include <list>
-#include <vector>
-using namespace std;
-
-// Framework includes
-#include "tsk/framework/framework_i.h"
-#include "TskImgDB.h"
-#include "tsk/framework/utilities/SectorRuns.h"
-#include "tsk/framework/utilities/UnallocRun.h"
-#include "TskBlackboardArtifact.h"
-#include "TskBlackboardAttribute.h"
-
-#include "tsk/libtsk.h"
-#include "tsk/auto/sqlite3.h"
-
-/** 
- * Implementation of TskImgDB that uses SQLite to store the data.
- * Do not use this in a distributed environment if multiple processes
- * will be accessing the database at the same time. 
- */
-class TSK_FRAMEWORK_API TskImgDBSqlite : public TskImgDB
-{
-public:
-    TskImgDBSqlite(const char * a_outpath);
-    virtual ~ TskImgDBSqlite();
-
-    virtual int initialize();
-    virtual int open();
-
-    virtual int close();
-
-    virtual int begin();
-    virtual int commit();
-
-    virtual int addToolInfo(const char* name, const char* version);
-    virtual int addImageInfo(int type, int sectorSize);
-    virtual int addImageName(char const * imgName);
-    virtual int addVolumeInfo(const TSK_VS_PART_INFO * vs_part);
-    virtual int addFsInfo(int volId, int fsId, const TSK_FS_INFO * fs_info);
-    virtual int addFsFileInfo(int fsId, const TSK_FS_FILE *fs_file, const char *name, int type, int idx, uint64_t & fileId, const char * path);
-
-    virtual int addCarvedFileInfo(int vol_id, const char * name, uint64_t size, uint64_t *runStarts, uint64_t *runLengths, int numRuns, uint64_t & fileId);
-    virtual int addDerivedFileInfo(const std::string& name, const uint64_t parentId,
-                                        const bool isDirectory, const uint64_t size, const std::string& details,
-                                        const int ctime, const int crtime, const int atime, const int mtime, uint64_t & fileId, std::string path);
-    virtual int addFsBlockInfo(int fsID, uint64_t a_mFileId, int count, uint64_t blk_addr, uint64_t len);
-    virtual int addAllocUnallocMapInfo(int a_volID, int unallocImgID, uint64_t unallocImgStart, uint64_t length, uint64_t origImgStart);
-    virtual int getSessionID() const;
-    virtual int getFileIds(char *a_fileName, uint64_t *a_outBuffer, int a_buffSize) const;
-    virtual int getMaxFileIdReadyForAnalysis(uint64_t a_lastFileId, uint64_t & maxFileId) const;
-    virtual int getMinFileIdReadyForAnalysis(uint64_t & minFileId) const;
-    virtual uint64_t getFileId(int fsId, uint64_t fs_file_id) const;
-    virtual int getFileRecord(const uint64_t fileId, TskFileRecord& fileRecord) const;
-    virtual SectorRuns * getFileSectors(uint64_t fileId) const;
-    virtual std::string getImageBaseName() const;
-    virtual std::vector<std::wstring> getImageNamesW() const;
-    virtual std::vector<std::string> getImageNames() const;
-    virtual int getFileUniqueIdentifiers(uint64_t a_fileId, uint64_t &a_fsOffset, uint64_t &a_fsFileId, int &a_attrType, int &a_attrId) const;
-    virtual int getNumVolumes() const;
-    virtual int getNumFiles() const;
-    virtual int getImageInfo(int & type, int & sectorSize) const;
-    virtual int getVolumeInfo(std::list<TskVolumeInfoRecord> & volumeInfoList) const;
-    virtual int getFsInfo(std::list<TskFsInfoRecord> & fsInfoList) const;
-    virtual int getFileInfoSummary(std::list<TskFileTypeRecord>& fileTypeInfoList) const;
-    virtual int getFileInfoSummary(FILE_TYPES fileType, std::list<TskFileTypeRecord> & fileTypeInfoList) const;
-    virtual TskImgDB::KNOWN_STATUS getKnownStatus(const uint64_t fileId) const;
-
-    virtual UnallocRun * getUnallocRun(int file_id, int file_offset) const; 
-    virtual SectorRuns * getFreeSectors() const;
-
-    virtual int updateFileStatus(uint64_t a_file_id, FILE_STATUS a_status);
-    virtual int updateKnownStatus(uint64_t a_file_id, KNOWN_STATUS a_status);
-	virtual bool dbExist() const;
-
-    // Get set of file ids that match the given condition (i.e. SQL where clause)
-    virtual std::vector<uint64_t> getFileIds(const std::string& condition) const;
-    virtual const std::vector<TskFileRecord> getFileRecords(const std::string& condition) const;
-
-    // Get the number of files that match the given condition
-    virtual int getFileCount(const std::string& condition) const;
-
-    virtual std::map<uint64_t, std::string> getUniqueCarvedFiles(HASH_TYPE hashType) const;
-    virtual std::vector<TskCarvedFileInfo> getUniqueCarvedFilesInfo(HASH_TYPE hashType) const;
-    virtual std::vector<uint64_t> getCarvedFileIds() const;
-
-    virtual std::vector<uint64_t> getUniqueFileIds(HASH_TYPE hashType) const;
-    virtual std::vector<uint64_t> getFileIds() const;
-
-    virtual int setHash(const uint64_t a_file_id, const TskImgDB::HASH_TYPE hashType, const std::string& hash) const;
-    virtual std::string getCfileName(const uint64_t a_file_id) const;
-
-    virtual int addModule(const std::string& name, const std::string& description, int & moduleId);
-    virtual int setModuleStatus(uint64_t file_id, int module_id, int status);
-	virtual int getModuleInfo(std::vector<TskModuleInfo> & moduleInfoList) const;
-    virtual int getModuleErrors(std::vector<TskModuleStatus> & moduleStatusList) const;
-    virtual std::string getFileName(uint64_t file_id) const;
-
-    virtual int addUnallocImg(int & unallocImgId);
-    virtual int setUnallocImgStatus(int unallocImgId, TskImgDB::UNALLOC_IMG_STATUS status);
-    virtual TskImgDB::UNALLOC_IMG_STATUS getUnallocImgStatus(int unallocImgId) const;
-    virtual int getAllUnallocImgStatus(std::vector<TskUnallocImgStatusRecord> & unallocImgStatusList) const;
-
-    virtual int addUnusedSectors(int unallocImgId, std::vector<TskUnusedSectorsRecord> & unusedSectorsList);
-    virtual int getUnusedSector(uint64_t fileId, TskUnusedSectorsRecord & unusedSectorsRecord) const;
-
-	virtual std::string quote(const std::string str) const;
-
-	friend class TskDBBlackboard;
-
-protected:
-    // Blackboard methods.
-    virtual TskBlackboardArtifact createBlackboardArtifact(uint64_t file_id, int artifactTypeID);
-    virtual void addBlackboardAttribute(TskBlackboardAttribute attr);
-    
-    virtual void addArtifactType(int typeID, string artifactTypeName, string displayName);
-    virtual void addAttributeType(int typeID, string attributeTypeName, string displayName);
-
-    virtual string getArtifactTypeDisplayName(int artifactTypeID);
-    virtual int getArtifactTypeID(string artifactTypeString);
-    virtual string getArtifactTypeName(int artifactTypeID);
-    virtual vector<TskBlackboardArtifact> getMatchingArtifacts(string condition);
-
-    virtual string getAttributeTypeDisplayName(int attributeTypeID);
-    virtual int getAttributeTypeID(string attributeTypeString);
-    virtual string getAttributeTypeName(int attributeTypeID);
-    virtual vector<TskBlackboardAttribute> getMatchingAttributes(string condition);
-    virtual vector<int> findAttributeTypes(int artifactTypeId);
-private:
-    char m_outPath[256];
-    char m_dbFilePath[256];
-    sqlite3 * m_db;
-
-    int dropTables();
-
-    static int busyHandler(void *, int);
-    std::vector<uint64_t> getFileIdsWorker(std::string tableName, const std::string condition = "") const;
-    void constructStmt(std::string& stmt, std::string condition) const;
-    int addUnusedSector(uint64_t sectStart, uint64_t sectEnd, int volId, std::vector<TskUnusedSectorsRecord> & unusedSectorsList);
-    int getFileTypeRecords(const std::string& stmt, std::list<TskFileTypeRecord>& fileTypeInfoList) const;
-    virtual vector<TskBlackboardArtifact> getArtifactsHelper(uint64_t file_id, int artifactTypeID, string artifactTypeName);
-    void getCarvedFileInfo(const std::string& stmt, std::map<uint64_t, std::string>& results) const;
-    
-    /**
-     * A helper function for getUniqueCarvedFilesInfo() that executes a very specific SQL SELECT statement 
-     * assembled by the caller.
-     *
-     * @param stmtToExecute The SQL statement.
-     * @param getHash A flag indicating whether the SELECT includes a hash value.
-     * @param carvedFileInfos[out] The data returned by the query as TskCarvedFileInfo objects.
-     * @return Throws TskException
-     */
-    void getCarvedFileInfo(const std::string &query,  bool getHash, std::vector<TskCarvedFileInfo> &carvedFileInfos) const;
-    
-    /**
-     * Executes an SQL statement.
-     *
-     * @param stmtToExecute The SQL statement.
-     * @param[out] statement The result set as a sqlite3_stmt object, caller should call sqlite3_finalize() on the pointer in case of normal execution. 
-     * @param caller The caller in the form <class_name>::<member_function_name> for error messages.
-     * @return Throws TskException.
-     */
-    void executeStatement(const std::string &stmtToExecute, sqlite3_stmt *&statement, const std::string &caller) const;
-};
-
-#endif
+/*
+ *
+ *  The Sleuth Kit
+ *
+ *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ *  reserved.
+ *
+ *  This software is distributed under the Common Public License 1.0
+ */
+
+#ifndef _TSK_IMGDBSQLITE_H
+#define _TSK_IMGDBSQLITE_H
+
+// System includes
+#include <string> // to get std::wstring
+#include <list>
+#include <vector>
+using namespace std;
+
+// Framework includes
+#include "tsk/framework/framework_i.h"
+#include "TskImgDB.h"
+#include "tsk/framework/utilities/SectorRuns.h"
+#include "tsk/framework/utilities/UnallocRun.h"
+#include "TskBlackboardArtifact.h"
+#include "TskBlackboardAttribute.h"
+
+#include "tsk/libtsk.h"
+#include "tsk/auto/sqlite3.h"
+
+/** 
+ * Implementation of TskImgDB that uses SQLite to store the data.
+ * Do not use this in a distributed environment if multiple processes
+ * will be accessing the database at the same time. 
+ */
+class TSK_FRAMEWORK_API TskImgDBSqlite : public TskImgDB
+{
+public:
+    TskImgDBSqlite(const char * a_outpath);
+    virtual ~ TskImgDBSqlite();
+
+    virtual int initialize();
+    virtual int open();
+
+    virtual int close();
+
+    virtual int begin();
+    virtual int commit();
+
+    virtual int addToolInfo(const char* name, const char* version);
+    virtual int addImageInfo(int type, int sectorSize);
+    virtual int addImageName(char const * imgName);
+    virtual int addVolumeInfo(const TSK_VS_PART_INFO * vs_part);
+    virtual int addFsInfo(int volId, int fsId, const TSK_FS_INFO * fs_info);
+    virtual int addFsFileInfo(int fsId, const TSK_FS_FILE *fs_file, const char *name, int type, int idx, uint64_t & fileId, const char * path);
+
+    virtual int addCarvedFileInfo(int vol_id, const char * name, uint64_t size, uint64_t *runStarts, uint64_t *runLengths, int numRuns, uint64_t & fileId);
+    virtual int addDerivedFileInfo(const std::string& name, const uint64_t parentId,
+                                        const bool isDirectory, const uint64_t size, const std::string& details,
+                                        const int ctime, const int crtime, const int atime, const int mtime, uint64_t & fileId, std::string path);
+    virtual int addFsBlockInfo(int fsID, uint64_t a_mFileId, int count, uint64_t blk_addr, uint64_t len);
+    virtual int addAllocUnallocMapInfo(int a_volID, int unallocImgID, uint64_t unallocImgStart, uint64_t length, uint64_t origImgStart);
+    virtual int getSessionID() const;
+    virtual int getFileIds(char *a_fileName, uint64_t *a_outBuffer, int a_buffSize) const;
+    virtual int getMaxFileIdReadyForAnalysis(uint64_t a_lastFileId, uint64_t & maxFileId) const;
+    virtual int getMinFileIdReadyForAnalysis(uint64_t & minFileId) const;
+    virtual uint64_t getFileId(int fsId, uint64_t fs_file_id) const;
+    virtual int getFileRecord(const uint64_t fileId, TskFileRecord& fileRecord) const;
+    virtual SectorRuns * getFileSectors(uint64_t fileId) const;
+    virtual std::string getImageBaseName() const;
+    virtual std::vector<std::wstring> getImageNamesW() const;
+    virtual std::vector<std::string> getImageNames() const;
+    virtual int getFileUniqueIdentifiers(uint64_t a_fileId, uint64_t &a_fsOffset, uint64_t &a_fsFileId, int &a_attrType, int &a_attrId) const;
+    virtual int getNumVolumes() const;
+    virtual int getNumFiles() const;
+    virtual int getImageInfo(int & type, int & sectorSize) const;
+    virtual int getVolumeInfo(std::list<TskVolumeInfoRecord> & volumeInfoList) const;
+    virtual int getFsInfo(std::list<TskFsInfoRecord> & fsInfoList) const;
+    virtual int getFileInfoSummary(std::list<TskFileTypeRecord>& fileTypeInfoList) const;
+    virtual int getFileInfoSummary(FILE_TYPES fileType, std::list<TskFileTypeRecord> & fileTypeInfoList) const;
+    virtual TskImgDB::KNOWN_STATUS getKnownStatus(const uint64_t fileId) const;
+
+    virtual UnallocRun * getUnallocRun(int file_id, int file_offset) const; 
+    virtual SectorRuns * getFreeSectors() const;
+
+    virtual int updateFileStatus(uint64_t a_file_id, FILE_STATUS a_status);
+    virtual int updateKnownStatus(uint64_t a_file_id, KNOWN_STATUS a_status);
+	virtual bool dbExist() const;
+
+    // Get set of file ids that match the given condition (i.e. SQL where clause)
+    virtual std::vector<uint64_t> getFileIds(const std::string& condition) const;
+    virtual const std::vector<TskFileRecord> getFileRecords(const std::string& condition) const;
+
+    // Get the number of files that match the given condition
+    virtual int getFileCount(const std::string& condition) const;
+
+    virtual std::map<uint64_t, std::string> getUniqueCarvedFiles(HASH_TYPE hashType) const;
+    virtual std::vector<TskCarvedFileInfo> getUniqueCarvedFilesInfo(HASH_TYPE hashType) const;
+    virtual std::vector<uint64_t> getCarvedFileIds() const;
+
+    virtual std::vector<uint64_t> getUniqueFileIds(HASH_TYPE hashType) const;
+    virtual std::vector<uint64_t> getFileIds() const;
+
+    virtual int setHash(const uint64_t a_file_id, const TskImgDB::HASH_TYPE hashType, const std::string& hash) const;
+    virtual std::string getCfileName(const uint64_t a_file_id) const;
+
+    virtual int addModule(const std::string& name, const std::string& description, int & moduleId);
+    virtual int setModuleStatus(uint64_t file_id, int module_id, int status);
+	virtual int getModuleInfo(std::vector<TskModuleInfo> & moduleInfoList) const;
+    virtual int getModuleErrors(std::vector<TskModuleStatus> & moduleStatusList) const;
+    virtual std::string getFileName(uint64_t file_id) const;
+
+    virtual int addUnallocImg(int & unallocImgId);
+    virtual int setUnallocImgStatus(int unallocImgId, TskImgDB::UNALLOC_IMG_STATUS status);
+    virtual TskImgDB::UNALLOC_IMG_STATUS getUnallocImgStatus(int unallocImgId) const;
+    virtual int getAllUnallocImgStatus(std::vector<TskUnallocImgStatusRecord> & unallocImgStatusList) const;
+
+    virtual int addUnusedSectors(int unallocImgId, std::vector<TskUnusedSectorsRecord> & unusedSectorsList);
+    virtual int getUnusedSector(uint64_t fileId, TskUnusedSectorsRecord & unusedSectorsRecord) const;
+
+	virtual std::string quote(const std::string str) const;
+
+	friend class TskDBBlackboard;
+
+protected:
+    // Blackboard methods.
+    virtual TskBlackboardArtifact createBlackboardArtifact(uint64_t file_id, int artifactTypeID);
+    virtual void addBlackboardAttribute(TskBlackboardAttribute attr);
+    
+    virtual void addArtifactType(int typeID, string artifactTypeName, string displayName);
+    virtual void addAttributeType(int typeID, string attributeTypeName, string displayName);
+
+    virtual string getArtifactTypeDisplayName(int artifactTypeID);
+    virtual int getArtifactTypeID(string artifactTypeString);
+    virtual string getArtifactTypeName(int artifactTypeID);
+    virtual vector<TskBlackboardArtifact> getMatchingArtifacts(string condition);
+
+    virtual string getAttributeTypeDisplayName(int attributeTypeID);
+    virtual int getAttributeTypeID(string attributeTypeString);
+    virtual string getAttributeTypeName(int attributeTypeID);
+    virtual vector<TskBlackboardAttribute> getMatchingAttributes(string condition);
+    virtual vector<int> findAttributeTypes(int artifactTypeId);
+private:
+    char m_outPath[256];
+    char m_dbFilePath[256];
+    sqlite3 * m_db;
+
+    int dropTables();
+
+    static int busyHandler(void *, int);
+    std::vector<uint64_t> getFileIdsWorker(std::string tableName, const std::string condition = "") const;
+    void constructStmt(std::string& stmt, std::string condition) const;
+    int addUnusedSector(uint64_t sectStart, uint64_t sectEnd, int volId, std::vector<TskUnusedSectorsRecord> & unusedSectorsList);
+    int getFileTypeRecords(const std::string& stmt, std::list<TskFileTypeRecord>& fileTypeInfoList) const;
+    virtual vector<TskBlackboardArtifact> getArtifactsHelper(uint64_t file_id, int artifactTypeID, string artifactTypeName);
+    void getCarvedFileInfo(const std::string& stmt, std::map<uint64_t, std::string>& results) const;
+    
+    /**
+     * A helper function for getUniqueCarvedFilesInfo() that executes a very specific SQL SELECT statement 
+     * assembled by the caller.
+     *
+     * @param stmtToExecute The SQL statement.
+     * @param getHash A flag indicating whether the SELECT includes a hash value.
+     * @param carvedFileInfos[out] The data returned by the query as TskCarvedFileInfo objects.
+     * @return Throws TskException
+     */
+    void getCarvedFileInfo(const std::string &query,  bool getHash, std::vector<TskCarvedFileInfo> &carvedFileInfos) const;
+    
+    /**
+     * Executes an SQL statement.
+     *
+     * @param stmtToExecute The SQL statement.
+     * @param[out] statement The result set as a sqlite3_stmt object, caller should call sqlite3_finalize() on the pointer in case of normal execution. 
+     * @param caller The caller in the form <class_name>::<member_function_name> for error messages.
+     * @return Throws TskException.
+     */
+    void executeStatement(const std::string &stmtToExecute, sqlite3_stmt *&statement, const std::string &caller) const;
+};
+
+#endif
diff --git a/framework/tsk/framework/services/TskSchedulerQueue.cpp b/framework/tsk/framework/services/TskSchedulerQueue.cpp
index 1409ac689d117d63a01302e0e9b2b041f400f677..ce147303cffbe5293e1aad4ba5c0931ed9806044 100644
--- a/framework/tsk/framework/services/TskSchedulerQueue.cpp
+++ b/framework/tsk/framework/services/TskSchedulerQueue.cpp
@@ -1,36 +1,36 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-#include "TskSchedulerQueue.h"
-
-int TskSchedulerQueue::schedule(Scheduler::TaskType task, uint64_t startId, uint64_t endId)
-{
-    if (endId < startId) {
-        // @@@ Log a message
-        return -1;
-    }
-
-    for (uint64_t i = startId; i <= endId; i++) {
-        TskSchedulerQueue::task_struct *t = new(task_struct);
-        t->task = task;
-        t->id = i;
-        m_queue.push(t);
-    }
-    return 0;
-};
-
-Scheduler::task_struct *TskSchedulerQueue::nextTask() 
-{
-    if (m_queue.empty())
-        return NULL;
-    
-    task_struct *t = m_queue.front();
-    m_queue.pop();
-    return t;
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+#include "TskSchedulerQueue.h"
+
+int TskSchedulerQueue::schedule(Scheduler::TaskType task, uint64_t startId, uint64_t endId)
+{
+    if (endId < startId) {
+        // @@@ Log a message
+        return -1;
+    }
+
+    for (uint64_t i = startId; i <= endId; i++) {
+        TskSchedulerQueue::task_struct *t = new(task_struct);
+        t->task = task;
+        t->id = i;
+        m_queue.push(t);
+    }
+    return 0;
+};
+
+Scheduler::task_struct *TskSchedulerQueue::nextTask() 
+{
+    if (m_queue.empty())
+        return NULL;
+    
+    task_struct *t = m_queue.front();
+    m_queue.pop();
+    return t;
 };
\ No newline at end of file
diff --git a/framework/tsk/framework/services/TskSchedulerQueue.h b/framework/tsk/framework/services/TskSchedulerQueue.h
index cde5230eda39b60aaf62d21ef4f3f860258239bd..80a24de6c0c3933fcc39673b6a05c146bc604181 100644
--- a/framework/tsk/framework/services/TskSchedulerQueue.h
+++ b/framework/tsk/framework/services/TskSchedulerQueue.h
@@ -1,32 +1,32 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#ifndef TSK_SCHEDULER_QUEUE
-#define TSK_SCHEDULER_QUEUE
-
-#include "Scheduler.h"
-#include <queue>
-
-/**
- * Implementation of the Scheduler interface that keeps a 
- * local queue of tasks to run. Can be used in a non-distributed
- * environment.
- */
-class TSK_FRAMEWORK_API TskSchedulerQueue : public Scheduler {
-public:
-    int schedule(Scheduler::TaskType task, uint64_t startId, uint64_t endId);
-    task_struct *nextTask();
-
-private:
-    std::queue <task_struct *> m_queue;  
-};
-
-
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#ifndef TSK_SCHEDULER_QUEUE
+#define TSK_SCHEDULER_QUEUE
+
+#include "Scheduler.h"
+#include <queue>
+
+/**
+ * Implementation of the Scheduler interface that keeps a 
+ * local queue of tasks to run. Can be used in a non-distributed
+ * environment.
+ */
+class TSK_FRAMEWORK_API TskSchedulerQueue : public Scheduler {
+public:
+    int schedule(Scheduler::TaskType task, uint64_t startId, uint64_t endId);
+    task_struct *nextTask();
+
+private:
+    std::queue <task_struct *> m_queue;  
+};
+
+
 #endif
\ No newline at end of file
diff --git a/framework/tsk/framework/services/TskServices.cpp b/framework/tsk/framework/services/TskServices.cpp
index fb997cfea33c654402de8fa5322c4e2af0ffdfdb..2a7c98dafc382630432043c8ca5fbd0bc5a55fe9 100755
--- a/framework/tsk/framework/services/TskServices.cpp
+++ b/framework/tsk/framework/services/TskServices.cpp
@@ -1,238 +1,238 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#include <string>
-
-#include "TskServices.h"
-#include "tsk/framework/utilities/TskException.h"
-#include "tsk/framework/services/TskSystemPropertiesImpl.h"
-
-TskServices *TskServices::m_pInstance = NULL;
-
-/**
- * Singleton interface to return the TskServices instance.
- */
-TskServices &TskServices::Instance()
-{
-    if (!m_pInstance) {
-        m_pInstance = new TskServices;
-        m_pInstance->m_log = NULL;
-        m_pInstance->m_scheduler = NULL;
-        m_pInstance->m_imgDB = NULL;
-        m_pInstance->m_blackboard = NULL;
-        m_pInstance->m_systemProperties = NULL;
-        m_pInstance->m_imageFile = NULL;
-        m_pInstance->m_fileManager = NULL;
-    }
-    return *m_pInstance;
-}
-
-/** 
- * Return the system log service.  If no log was setup, a service will be
- * created that sends messages to stderr.
- * @returns log reference. 
- */
-Log& TskServices::getLog()
-{
-    // create a default one if it has not been set yet
-    if (!m_log) {
-        m_defaultLog.logInfo(L"TskServices::getLog - Log has not been set, using default implementation.");
-        return m_defaultLog;
-    }
-    return *m_log;
-}
-
-/**
- * Set the log service. 
- * Throws an exception if one has already been set. 
- */
-void TskServices::setLog(Log &log)
-{
-    if (m_log) {
-        LOGERROR(L"TskServices::setLog - Log has already been initialized.");
-        throw TskException("Log already initialized.");
-    } else {
-        m_log = &log;
-    }
-}
-
-/** 
- * Return the system scheduler service.  If no service was setup, an exception
- * is thrown.
- * @returns scheduler reference. 
- */
-Scheduler& TskServices::getScheduler()
-{
-    if (m_scheduler == NULL)
-    {
-        LOGERROR(L"TskServices::getScheduler - Scheduler has not been initialized.");
-        throw TskException("Scheduler not initialized.");
-    }
-
-    return *m_scheduler;
-}
-
-/**
- * Set the scheduler service. 
- * Throws an exception if one has already been set. 
- */
-void TskServices::setScheduler(Scheduler &scheduler)
-{
-    if (m_scheduler) {
-        LOGERROR(L"TskServices::setScheduler - Scheduler has already been initialized.");
-        throw TskException("Scheduler already initialized.");
-    } else {
-        m_scheduler = &scheduler;
-    }
-}
-
-
-/** 
- * Return the database service.  If no service was setup, an exception
- * is thrown.
- * @returns database reference. 
- */
-TskImgDB& TskServices::getImgDB()
-{
-    if (m_imgDB == NULL)
-    {
-        LOGERROR(L"TskServices::getImgDB - ImgDB has not been initialized.");
-        throw TskException("ImgDB not initialized.");
-    }
-
-    return *m_imgDB;
-}
-
-/**
- * Set the database service. 
- * Throws an exception if one has already been set. 
- */
-void TskServices::setImgDB(TskImgDB& imgDB)
-{
-    if (m_imgDB) {
-        LOGERROR(L"TskServices::setImgDB - ImgDB has already been initialized.");
-        throw TskException("ImgDB already initialized.");
-    } else {
-        m_imgDB = &imgDB;
-    }
-}
-
-
-
-/**
- * Set the image file service. 
- * Throws an exception if one has already been set. 
- */
-void TskServices::setImageFile(TskImageFile& imageFile)
-{
-    if (m_imageFile) {
-        LOGERROR(L"TskServices::setImageFile - ImageFile has already been initialized.");
-        throw TskException("ImageFile already initialized.");
-    } else {
-        m_imageFile = &imageFile;
-    }
-}
-
-/** 
- * Return the image file service.  If no service was setup, an exception
- * is thrown.
- * @returns image file reference. 
- */
-TskImageFile& TskServices::getImageFile()
-{
-    if (m_imageFile == NULL)
-    {
-        LOGERROR(L"TskServices::getImageFile - ImageFile has not been initialized.");
-        throw TskException("ImageFile not initialized.");
-    }
-
-    return *m_imageFile;
-}
-
-/**
- * Set the blackboard service. 
- * Throws an exception if one has already been set. 
- */
-void TskServices::setBlackboard(TskBlackboard& blackboard)
-{
-    if (m_blackboard) {
-        LOGERROR(L"TskServices::setBlackboard - Blackboard has already been initialized.");
-        throw TskException("Blackboard already initialized.");
-    } else {
-        m_blackboard = &blackboard;
-    }
-}
-
-/** 
- * Return the blackboard service.  If no service was setup, an exception
- * is thrown.
- * @returns blackboard file reference. 
- */
-TskBlackboard& TskServices::getBlackboard()
-{
-    if (m_blackboard == NULL)
-    {
-        LOGERROR(L"TskServices::getBlackboard - Blackboard has not been initialized.");
-        throw TskException("Blackboard not initialized.");
-    }
-    return *m_blackboard;
-}
-
-/**
- * Set the system properties service. 
- * Throws an exception if one has already been set. 
- */
-void TskServices::setSystemProperties(TskSystemProperties& systemProperties)
-{
-    if (m_systemProperties) {
-        LOGERROR(L"TskServices::setSystemProperties - SystemProperties has already been initialized.");
-        throw TskException("SystemProperties already initialized.");
-    } else {
-        m_systemProperties = &systemProperties;
-    }
-}
-
-/** 
- * Return the system properties service.  If no service was setup, a
- * default memory-based version is created.
- * @returns system properties reference. 
- */
-TskSystemProperties& TskServices::getSystemProperties()
-{
-    if (m_systemProperties == NULL)
-    {
-        TskSystemPropertiesImpl *prop = new TskSystemPropertiesImpl();
-        prop->initialize();
-        setSystemProperties(*prop);
-
-        LOGINFO(L"TskServices::getSystemProperties - SystemProperties has not been set, using default implementation.");
-    }
-    return *m_systemProperties;
-}
-
-void TskServices::setFileManager(TskFileManager& fileManager)
-{
-    if (m_fileManager) {
-        LOGERROR(L"TskServices::setFileManager - File Manager has already been initialized.");
-        throw TskException("FileManager already initialized.");
-    } else {
-        m_fileManager = &fileManager;
-    }
-}
-
-TskFileManager& TskServices::getFileManager()
-{
-    if (m_fileManager == NULL)
-    {
-        LOGERROR(L"TskServices::getFileManager - File Manager has not been initialized.");
-        throw TskException("File Manager not initialized.");
-    }
-    return *m_fileManager;
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#include <string>
+
+#include "TskServices.h"
+#include "tsk/framework/utilities/TskException.h"
+#include "tsk/framework/services/TskSystemPropertiesImpl.h"
+
+TskServices *TskServices::m_pInstance = NULL;
+
+/**
+ * Singleton interface to return the TskServices instance.
+ */
+TskServices &TskServices::Instance()
+{
+    if (!m_pInstance) {
+        m_pInstance = new TskServices;
+        m_pInstance->m_log = NULL;
+        m_pInstance->m_scheduler = NULL;
+        m_pInstance->m_imgDB = NULL;
+        m_pInstance->m_blackboard = NULL;
+        m_pInstance->m_systemProperties = NULL;
+        m_pInstance->m_imageFile = NULL;
+        m_pInstance->m_fileManager = NULL;
+    }
+    return *m_pInstance;
+}
+
+/** 
+ * Return the system log service.  If no log was setup, a service will be
+ * created that sends messages to stderr.
+ * @returns log reference. 
+ */
+Log& TskServices::getLog()
+{
+    // create a default one if it has not been set yet
+    if (!m_log) {
+        m_defaultLog.logInfo(L"TskServices::getLog - Log has not been set, using default implementation.");
+        return m_defaultLog;
+    }
+    return *m_log;
+}
+
+/**
+ * Set the log service. 
+ * Throws an exception if one has already been set. 
+ */
+void TskServices::setLog(Log &log)
+{
+    if (m_log) {
+        LOGERROR(L"TskServices::setLog - Log has already been initialized.");
+        throw TskException("Log already initialized.");
+    } else {
+        m_log = &log;
+    }
+}
+
+/** 
+ * Return the system scheduler service.  If no service was setup, an exception
+ * is thrown.
+ * @returns scheduler reference. 
+ */
+Scheduler& TskServices::getScheduler()
+{
+    if (m_scheduler == NULL)
+    {
+        LOGERROR(L"TskServices::getScheduler - Scheduler has not been initialized.");
+        throw TskException("Scheduler not initialized.");
+    }
+
+    return *m_scheduler;
+}
+
+/**
+ * Set the scheduler service. 
+ * Throws an exception if one has already been set. 
+ */
+void TskServices::setScheduler(Scheduler &scheduler)
+{
+    if (m_scheduler) {
+        LOGERROR(L"TskServices::setScheduler - Scheduler has already been initialized.");
+        throw TskException("Scheduler already initialized.");
+    } else {
+        m_scheduler = &scheduler;
+    }
+}
+
+
+/** 
+ * Return the database service.  If no service was setup, an exception
+ * is thrown.
+ * @returns database reference. 
+ */
+TskImgDB& TskServices::getImgDB()
+{
+    if (m_imgDB == NULL)
+    {
+        LOGERROR(L"TskServices::getImgDB - ImgDB has not been initialized.");
+        throw TskException("ImgDB not initialized.");
+    }
+
+    return *m_imgDB;
+}
+
+/**
+ * Set the database service. 
+ * Throws an exception if one has already been set. 
+ */
+void TskServices::setImgDB(TskImgDB& imgDB)
+{
+    if (m_imgDB) {
+        LOGERROR(L"TskServices::setImgDB - ImgDB has already been initialized.");
+        throw TskException("ImgDB already initialized.");
+    } else {
+        m_imgDB = &imgDB;
+    }
+}
+
+
+
+/**
+ * Set the image file service. 
+ * Throws an exception if one has already been set. 
+ */
+void TskServices::setImageFile(TskImageFile& imageFile)
+{
+    if (m_imageFile) {
+        LOGERROR(L"TskServices::setImageFile - ImageFile has already been initialized.");
+        throw TskException("ImageFile already initialized.");
+    } else {
+        m_imageFile = &imageFile;
+    }
+}
+
+/** 
+ * Return the image file service.  If no service was setup, an exception
+ * is thrown.
+ * @returns image file reference. 
+ */
+TskImageFile& TskServices::getImageFile()
+{
+    if (m_imageFile == NULL)
+    {
+        LOGERROR(L"TskServices::getImageFile - ImageFile has not been initialized.");
+        throw TskException("ImageFile not initialized.");
+    }
+
+    return *m_imageFile;
+}
+
+/**
+ * Set the blackboard service. 
+ * Throws an exception if one has already been set. 
+ */
+void TskServices::setBlackboard(TskBlackboard& blackboard)
+{
+    if (m_blackboard) {
+        LOGERROR(L"TskServices::setBlackboard - Blackboard has already been initialized.");
+        throw TskException("Blackboard already initialized.");
+    } else {
+        m_blackboard = &blackboard;
+    }
+}
+
+/** 
+ * Return the blackboard service.  If no service was setup, an exception
+ * is thrown.
+ * @returns blackboard file reference. 
+ */
+TskBlackboard& TskServices::getBlackboard()
+{
+    if (m_blackboard == NULL)
+    {
+        LOGERROR(L"TskServices::getBlackboard - Blackboard has not been initialized.");
+        throw TskException("Blackboard not initialized.");
+    }
+    return *m_blackboard;
+}
+
+/**
+ * Set the system properties service. 
+ * Throws an exception if one has already been set. 
+ */
+void TskServices::setSystemProperties(TskSystemProperties& systemProperties)
+{
+    if (m_systemProperties) {
+        LOGERROR(L"TskServices::setSystemProperties - SystemProperties has already been initialized.");
+        throw TskException("SystemProperties already initialized.");
+    } else {
+        m_systemProperties = &systemProperties;
+    }
+}
+
+/** 
+ * Return the system properties service.  If no service was setup, a
+ * default memory-based version is created.
+ * @returns system properties reference. 
+ */
+TskSystemProperties& TskServices::getSystemProperties()
+{
+    if (m_systemProperties == NULL)
+    {
+        TskSystemPropertiesImpl *prop = new TskSystemPropertiesImpl();
+        prop->initialize();
+        setSystemProperties(*prop);
+
+        LOGINFO(L"TskServices::getSystemProperties - SystemProperties has not been set, using default implementation.");
+    }
+    return *m_systemProperties;
+}
+
+void TskServices::setFileManager(TskFileManager& fileManager)
+{
+    if (m_fileManager) {
+        LOGERROR(L"TskServices::setFileManager - File Manager has already been initialized.");
+        throw TskException("FileManager already initialized.");
+    } else {
+        m_fileManager = &fileManager;
+    }
+}
+
+TskFileManager& TskServices::getFileManager()
+{
+    if (m_fileManager == NULL)
+    {
+        LOGERROR(L"TskServices::getFileManager - File Manager has not been initialized.");
+        throw TskException("File Manager not initialized.");
+    }
+    return *m_fileManager;
+}
diff --git a/framework/tsk/framework/services/TskServices.h b/framework/tsk/framework/services/TskServices.h
index 00ec69e9b8f7772507b0e57f369ea9e68ead61b9..996aefc9626b254870b58b8478491af1ba6cd6ea 100755
--- a/framework/tsk/framework/services/TskServices.h
+++ b/framework/tsk/framework/services/TskServices.h
@@ -1,208 +1,208 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#ifndef _TSK_SERVICES_H
-#define _TSK_SERVICES_H
-
-#include "Log.h"
-#include "Scheduler.h"
-#include "TskImgDB.h"
-#include "tsk/framework/extraction/TskImageFile.h"
-#include "tsk/framework/services/TskBlackboard.h"
-#include "tsk/framework/services/TskSystemProperties.h"
-#include "tsk/framework/file/TskFileManager.h"
-
-/**
- * Provides singleton access to many framework services.  This is used
- * to register and access the classes that implement the services. 
- */
-class TSK_FRAMEWORK_API TskServices
-{
-public:
-    static TskServices &Instance(); 
-
-    Log& getLog();
-    void setLog(Log &log);
-
-    void setScheduler(Scheduler &scheduler);
-    Scheduler& getScheduler();
-
-    void setImgDB(TskImgDB& imgDB);
-    TskImgDB& getImgDB();
-
-    void setImageFile(TskImageFile& imgFile);
-    TskImageFile& getImageFile();
-
-    void setBlackboard(TskBlackboard& blackboard);
-    TskBlackboard& getBlackboard();
-
-    void setSystemProperties(TskSystemProperties& systemProperties);
-    TskSystemProperties& getSystemProperties();
-
-    /**
-     * Set the File Manager service.
-     * The standard framework implementation class is TskFileManagerImpl.
-     * @param fileManager A File Manager implementation.
-     * @throws TskException if one has already been set.
-     */
-    void setFileManager(TskFileManager& fileManager);
-    /**
-     * Return the File Manager service.
-     * @returns File Manager reference.
-     * @throws TskException if File Manager has not been set.
-     */
-    TskFileManager& getFileManager();
-
-private:
-    // Private constructor, copy constructor and assignment operator
-    // to prevent creation of multiple instances.
-    TskServices() {};
-    TskServices(TskServices const&) {};
-    TskServices& operator=(TskServices const&) { return *m_pInstance; };
-
-    // Private destructor to prevent deletion of our instance.
-    ~TskServices() {};
-
-    // Default log instance that is used until TskServices::setLog() is called.
-    Log m_defaultLog;
-
-    static TskServices *m_pInstance;
-    Log *m_log;
-    Scheduler *m_scheduler;
-    TskImgDB * m_imgDB;
-    TskImageFile * m_imageFile;
-    TskBlackboard * m_blackboard;
-    TskSystemProperties * m_systemProperties;
-    TskFileManager * m_fileManager;
-};
-
-/** 
- * Associates a string value with a name.
- *
- * @param prop An element of the /ref PredefinedProperty enum.
- * @param value The value to associate with the name corresponding to the
- * /ref PredefinedProperty enum element.
- * @return Throws /ref TskException if prop is out of range.
- */
-inline void SetSystemPropertyW(TskSystemProperties::PredefinedProperty prop, const std::wstring &value)
-{
-    TskServices::Instance().getSystemProperties().setW(prop, value);
-}
-
-/** 
- * Associates a string value with a name.
- *
- * @param name The name with which to associate the value.
- * @param value The value to associate with the name.
- * @return Throws /ref TskException if name is empty.
- */
-inline void SetSystemPropertyW(const std::wstring &name, const std::wstring &value)
-{
-    TskServices::Instance().getSystemProperties().setW(name, value);
-}
-
-/** 
- * Associates a string value with a name.
- *
- * @param prop An element of the /ref PredefinedProperty enum.
- * @param value The value to associate with the name corresponding to the
- * /ref PredefinedProperty enum element.
- * @return Throws /ref TskException if prop is out of range.
- */
-inline void SetSystemProperty(TskSystemProperties::PredefinedProperty prop, const std::string &value)
-{
-    TskServices::Instance().getSystemProperties().set(prop, value);
-}
-
-/** 
- * Associates a string value with a name.
- *
- * @param name The name with which to associate the value.
- * @param value The value to associate with the name.
- * @return Throws /ref TskException if name is empty.
- */
-inline void SetSystemProperty(const std::string &name, const std::string &value)
-{
-    TskServices::Instance().getSystemProperties().set(name, value);
-}
-
-/** 
- * Retrieves the string value associated with the given name.
- *
- * @param prop An element of the /ref PredefinedProperty enum.
- * @returns String value corresponding to prop. Throws
- * /ref TskException if the requested value is for a required predefined 
- * property that is not set.
- */
-inline std::wstring GetSystemPropertyW(TskSystemProperties::PredefinedProperty prop)
-{
-    return TskServices::Instance().getSystemProperties().getW(prop);
-}
-
-/** 
- * Retrieves the string value associated with the given name.
- *
- * @param name Name of value to retrieve.
- * @returns String value or empty string if name was not found. 
- */
-inline std::wstring GetSystemPropertyW(const std::wstring &name)
-{
-    return TskServices::Instance().getSystemProperties().getW(name);
-}
-
-/** 
- * Retrieves the string value associated with the given name.
- *
- * @param prop An element of the /ref PredefinedProperty enum.
- * @returns String value corresponding to prop. Throws
- * /ref TskException if the requested value is for a required predefined 
- * property that is not set.
- */
-inline std::string GetSystemProperty(TskSystemProperties::PredefinedProperty prop)
-{
-    return TskServices::Instance().getSystemProperties().get(prop);
-}
-
-/** 
- * Retrieves the string value associated with the given name.
- *
- * @param name Name of value to retrieve.
- * @returns String value or empty string if name was not found. 
- */
-inline std::string GetSystemProperty(const std::string &name)
-{
-    return TskServices::Instance().getSystemProperties().get(name);
-}
-
-/**
- * Recursively expands any system property macros in a given string. 
- *
- * @param inputStr The input string.
- * @return A copy of the input string with all system property macros
- * expanded.
- */
-inline std::wstring ExpandSystemPropertyMacrosW(const std::wstring &inputStr)
-{
-    return TskServices::Instance().getSystemProperties().expandMacrosW(inputStr);
-}
-
-/**
- * Recursively expands any system property macros in a given string. 
- *
- * @param inputStr The input string.
- * @return A copy of the input string with all system property macros
- * expanded.
- */
-inline std::string ExpandSystemPropertyMacros(const std::string &inputStr)
-{
-    return TskServices::Instance().getSystemProperties().expandMacros(inputStr);
-}
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#ifndef _TSK_SERVICES_H
+#define _TSK_SERVICES_H
+
+#include "Log.h"
+#include "Scheduler.h"
+#include "TskImgDB.h"
+#include "tsk/framework/extraction/TskImageFile.h"
+#include "tsk/framework/services/TskBlackboard.h"
+#include "tsk/framework/services/TskSystemProperties.h"
+#include "tsk/framework/file/TskFileManager.h"
+
+/**
+ * Provides singleton access to many framework services.  This is used
+ * to register and access the classes that implement the services. 
+ */
+class TSK_FRAMEWORK_API TskServices
+{
+public:
+    static TskServices &Instance(); 
+
+    Log& getLog();
+    void setLog(Log &log);
+
+    void setScheduler(Scheduler &scheduler);
+    Scheduler& getScheduler();
+
+    void setImgDB(TskImgDB& imgDB);
+    TskImgDB& getImgDB();
+
+    void setImageFile(TskImageFile& imgFile);
+    TskImageFile& getImageFile();
+
+    void setBlackboard(TskBlackboard& blackboard);
+    TskBlackboard& getBlackboard();
+
+    void setSystemProperties(TskSystemProperties& systemProperties);
+    TskSystemProperties& getSystemProperties();
+
+    /**
+     * Set the File Manager service.
+     * The standard framework implementation class is TskFileManagerImpl.
+     * @param fileManager A File Manager implementation.
+     * @throws TskException if one has already been set.
+     */
+    void setFileManager(TskFileManager& fileManager);
+    /**
+     * Return the File Manager service.
+     * @returns File Manager reference.
+     * @throws TskException if File Manager has not been set.
+     */
+    TskFileManager& getFileManager();
+
+private:
+    // Private constructor, copy constructor and assignment operator
+    // to prevent creation of multiple instances.
+    TskServices() {};
+    TskServices(TskServices const&) {};
+    TskServices& operator=(TskServices const&) { return *m_pInstance; };
+
+    // Private destructor to prevent deletion of our instance.
+    ~TskServices() {};
+
+    // Default log instance that is used until TskServices::setLog() is called.
+    Log m_defaultLog;
+
+    static TskServices *m_pInstance;
+    Log *m_log;
+    Scheduler *m_scheduler;
+    TskImgDB * m_imgDB;
+    TskImageFile * m_imageFile;
+    TskBlackboard * m_blackboard;
+    TskSystemProperties * m_systemProperties;
+    TskFileManager * m_fileManager;
+};
+
+/** 
+ * Associates a string value with a name.
+ *
+ * @param prop An element of the /ref PredefinedProperty enum.
+ * @param value The value to associate with the name corresponding to the
+ * /ref PredefinedProperty enum element.
+ * @return Throws /ref TskException if prop is out of range.
+ */
+inline void SetSystemPropertyW(TskSystemProperties::PredefinedProperty prop, const std::wstring &value)
+{
+    TskServices::Instance().getSystemProperties().setW(prop, value);
+}
+
+/** 
+ * Associates a string value with a name.
+ *
+ * @param name The name with which to associate the value.
+ * @param value The value to associate with the name.
+ * @return Throws /ref TskException if name is empty.
+ */
+inline void SetSystemPropertyW(const std::wstring &name, const std::wstring &value)
+{
+    TskServices::Instance().getSystemProperties().setW(name, value);
+}
+
+/** 
+ * Associates a string value with a name.
+ *
+ * @param prop An element of the /ref PredefinedProperty enum.
+ * @param value The value to associate with the name corresponding to the
+ * /ref PredefinedProperty enum element.
+ * @return Throws /ref TskException if prop is out of range.
+ */
+inline void SetSystemProperty(TskSystemProperties::PredefinedProperty prop, const std::string &value)
+{
+    TskServices::Instance().getSystemProperties().set(prop, value);
+}
+
+/** 
+ * Associates a string value with a name.
+ *
+ * @param name The name with which to associate the value.
+ * @param value The value to associate with the name.
+ * @return Throws /ref TskException if name is empty.
+ */
+inline void SetSystemProperty(const std::string &name, const std::string &value)
+{
+    TskServices::Instance().getSystemProperties().set(name, value);
+}
+
+/** 
+ * Retrieves the string value associated with the given name.
+ *
+ * @param prop An element of the /ref PredefinedProperty enum.
+ * @returns String value corresponding to prop. Throws
+ * /ref TskException if the requested value is for a required predefined 
+ * property that is not set.
+ */
+inline std::wstring GetSystemPropertyW(TskSystemProperties::PredefinedProperty prop)
+{
+    return TskServices::Instance().getSystemProperties().getW(prop);
+}
+
+/** 
+ * Retrieves the string value associated with the given name.
+ *
+ * @param name Name of value to retrieve.
+ * @returns String value or empty string if name was not found. 
+ */
+inline std::wstring GetSystemPropertyW(const std::wstring &name)
+{
+    return TskServices::Instance().getSystemProperties().getW(name);
+}
+
+/** 
+ * Retrieves the string value associated with the given name.
+ *
+ * @param prop An element of the /ref PredefinedProperty enum.
+ * @returns String value corresponding to prop. Throws
+ * /ref TskException if the requested value is for a required predefined 
+ * property that is not set.
+ */
+inline std::string GetSystemProperty(TskSystemProperties::PredefinedProperty prop)
+{
+    return TskServices::Instance().getSystemProperties().get(prop);
+}
+
+/** 
+ * Retrieves the string value associated with the given name.
+ *
+ * @param name Name of value to retrieve.
+ * @returns String value or empty string if name was not found. 
+ */
+inline std::string GetSystemProperty(const std::string &name)
+{
+    return TskServices::Instance().getSystemProperties().get(name);
+}
+
+/**
+ * Recursively expands any system property macros in a given string. 
+ *
+ * @param inputStr The input string.
+ * @return A copy of the input string with all system property macros
+ * expanded.
+ */
+inline std::wstring ExpandSystemPropertyMacrosW(const std::wstring &inputStr)
+{
+    return TskServices::Instance().getSystemProperties().expandMacrosW(inputStr);
+}
+
+/**
+ * Recursively expands any system property macros in a given string. 
+ *
+ * @param inputStr The input string.
+ * @return A copy of the input string with all system property macros
+ * expanded.
+ */
+inline std::string ExpandSystemPropertyMacros(const std::string &inputStr)
+{
+    return TskServices::Instance().getSystemProperties().expandMacros(inputStr);
+}
+
+#endif
diff --git a/framework/tsk/framework/services/TskSystemProperties.cpp b/framework/tsk/framework/services/TskSystemProperties.cpp
index 1804eaa1c6e8fc24d959e116f24a2d4b23abbda1..c200c887dfb119797f4f01da781933e5678960c4 100644
--- a/framework/tsk/framework/services/TskSystemProperties.cpp
+++ b/framework/tsk/framework/services/TskSystemProperties.cpp
@@ -1,274 +1,274 @@
-/*
- *  The Sleuth Kit
- *
- *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- *  reserved.
- *
- *  This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskSystemProperties.cpp
- * Contains the implementation of the TskSystemProperties class.
- */
-
-// Include the class definition first to ensure it does not depend on subsequent includes in this file.
-#include "TskSystemProperties.h"
-
-// TSK Framework includes
-#include "tsk/framework/services/TskServices.h" // @@@ TODO: Resolve need to include TskServices.h before Log.h (macros in Log.h cause circular references)
-#include "tsk/framework/services/Log.h"
-#include "tsk/framework/utilities/TskUtilities.h"
-#include "tsk/framework/utilities/TskException.h"
-
-// Poco includes
-#include "Poco/Path.h"
-#include "Poco/StringTokenizer.h"
-#include "Poco/LocalDateTime.h"
-#include "Poco/DateTimeFormatter.h"
-
-// C/C++ library includes
-#include <sstream>
-#include <assert.h>
-
-namespace
-{
-    const std::string DEFAULT_PROG_DIR = Poco::Path::current();
-    const std::string DEFAULT_CONFIG_DIR = std::string("#PROG_DIR#") + Poco::Path::separator() + std::string("Config");
-    const std::string DEFAULT_MODULE_DIR = std::string("#PROG_DIR#") + Poco::Path::separator() + std::string("Modules");
-    const std::string DEFAULT_SYSTEM_OUT_DIR = std::string("#OUT_DIR#") + Poco::Path::separator() + std::string("SystemOutput");
-    const std::string DEFAULT_MODULE_OUT_DIR = std::string("#OUT_DIR#") + Poco::Path::separator() + std::string("ModuleOutput");
-    const std::string DEFAULT_LOG_DIR = std::string("#SYSTEM_OUT_DIR#") + Poco::Path::separator() + std::string("Logs");
-    const std::string DEFAULT_CARVE_DIR = std::string("#SYSTEM_OUT_DIR#") + Poco::Path::separator() + std::string("Carving");
-    const std::string DEFAULT_UNALLOC_SECTORS_IMG_FILE_NAME = "unalloc.bin";
-    const std::string DEFAULT_MAX_UNALLOC_SECTORS_IMG_FILE_SIZE = "0";
-    const std::string DEFAULT_CARVE_EXTRACT_KEEP_INPUT_FILES = "false";
-    const std::string DEFAULT_CARVE_EXTRACT_KEEP_OUTPUT_FILES = "false";
-    const std::string DEFAULT_SCALPEL_CONFIG_FILE = std::string("#SCALPEL_DIR#") + Poco::Path::separator() + std::string("scalpel.conf");
-    const std::string DEFAULT_PIPELINE_CONFIG_FILE = std::string("#CONFIG_DIR#") + Poco::Path::separator() + std::string("pipeline_config.xml");
-
-    struct PredefProp
-    {
-        PredefProp(TskSystemProperties::PredefinedProperty propId, const std::string &macroToken, bool propRequired, const std::string &propDefaultValue) :
-            id(propId), token(macroToken), required(propRequired), defaultValue(propDefaultValue) {}
-        TskSystemProperties::PredefinedProperty id;
-        std::string token;
-        bool required;
-        std::string defaultValue;
-    };
-
-    const PredefProp predefinedProperties[] =
-    {
-        PredefProp(TskSystemProperties::PROG_DIR, "PROG_DIR", false, ""),
-        PredefProp(TskSystemProperties::CONFIG_DIR, "CONFIG_DIR", false, DEFAULT_CONFIG_DIR),
-        PredefProp(TskSystemProperties::MODULE_DIR, "MODULE_DIR", false, DEFAULT_MODULE_DIR),
-        PredefProp(TskSystemProperties::MODULE_CONFIG_DIR, "MODULE_CONFIG_DIR", false, DEFAULT_MODULE_DIR),    // default == MODULE_DIR
-        PredefProp(TskSystemProperties::OUT_DIR, "OUT_DIR", true, ""),
-        PredefProp(TskSystemProperties::SYSTEM_OUT_DIR, "SYSTEM_OUT_DIR", false, DEFAULT_SYSTEM_OUT_DIR),
-        PredefProp(TskSystemProperties::MODULE_OUT_DIR, "MODULE_OUT_DIR", false, DEFAULT_MODULE_OUT_DIR),
-        PredefProp(TskSystemProperties::LOG_DIR, "LOG_DIR", false, DEFAULT_LOG_DIR),
-        PredefProp(TskSystemProperties::DB_HOST, "DB_HOST", false, ""),
-        PredefProp(TskSystemProperties::DB_PORT, "DB_PORT", false, ""),
-        PredefProp(TskSystemProperties::CARVE_DIR, "CARVE_DIR", false, DEFAULT_CARVE_DIR),
-        PredefProp(TskSystemProperties::UNALLOC_SECTORS_IMG_FILE_NAME, "UNALLOC_SECTORS_IMG_FILE_NAME", false, DEFAULT_UNALLOC_SECTORS_IMG_FILE_NAME), 
-        PredefProp(TskSystemProperties::MAX_UNALLOC_SECTORS_IMG_FILE_SIZE, "MAX_UNALLOC_SECTORS_IMG_FILE_SIZE", false, DEFAULT_MAX_UNALLOC_SECTORS_IMG_FILE_SIZE),
-        PredefProp(TskSystemProperties::CARVE_EXTRACT_KEEP_INPUT_FILES, "CARVE_EXTRACT_KEEP_INPUT_FILES", false, DEFAULT_CARVE_EXTRACT_KEEP_INPUT_FILES), 
-        PredefProp(TskSystemProperties::CARVE_EXTRACT_KEEP_OUTPUT_FILES, "CARVE_EXTRACT_KEEP_OUTPUT_FILES", false, DEFAULT_CARVE_EXTRACT_KEEP_OUTPUT_FILES),
-        PredefProp(TskSystemProperties::SCALPEL_DIR, "SCALPEL_DIR", false, ""),
-        PredefProp(TskSystemProperties::SCALPEL_CONFIG_FILE, "SCALPEL_CONFIG_FILE", false, DEFAULT_SCALPEL_CONFIG_FILE),
-        PredefProp(TskSystemProperties::PIPELINE_CONFIG_FILE, "PIPELINE_CONFIG_FILE", false, DEFAULT_PIPELINE_CONFIG_FILE),
-        PredefProp(TskSystemProperties::SESSION_ID, "SESSION_ID", false, ""),
-        PredefProp(TskSystemProperties::CURRENT_TASK, "CURRENT_TASK", false, ""),
-        PredefProp(TskSystemProperties::CURRENT_SEQUENCE_NUMBER, "CURRENT_SEQUENCE_NUMBER", false, ""),
-        PredefProp(TskSystemProperties::NODE, "NODE", false, ""),
-        PredefProp(TskSystemProperties::PID, "PID", false, ""),
-        PredefProp(TskSystemProperties::START_TIME, "START_TIME", false, ""),
-        PredefProp(TskSystemProperties::CURRENT_TIME, "CURRENT_TIME", false, ""),
-        PredefProp(TskSystemProperties::UNIQUE_ID, "UNIQUE_ID", false, ""),
-        PredefProp(TskSystemProperties::IMAGE_FILE, "IMAGE_FILE", false, "")
-    };
-
-    const std::size_t MAX_PATH_LENGTH = 1024;
-    const std::size_t MAX_RECURSION_DEPTH = 10;
-}
-
-TskSystemProperties::TskSystemProperties()
-{
-    // Populate the lookup data structures. 
-    for (std::size_t i = 0; i < END_PROPS; ++i)
-    {
-        predefProps[predefinedProperties[i].token] = predefinedProperties[i].id;
-        predefPropNames[predefinedProperties[i].id] = predefinedProperties[i].token;
-        predefPropTokens.insert(predefinedProperties[i].token);
-
-        if (predefinedProperties[i].required)
-        {
-            requiredProps.insert(predefinedProperties[i].id);
-        }
-
-        predefPropDefaults[predefinedProperties[i].id] = predefinedProperties[i].defaultValue; 
-    }
-}
-
-bool TskSystemProperties::isConfigured() const
-{
-    // Check whether all of the required predefined system properties are set.
-    for (std::set<PredefinedProperty>::const_iterator prop = requiredProps.begin(); prop != requiredProps.end(); ++prop)
-    {
-        std::string value = getProperty(predefPropNames[*prop]);
-        if (value.empty())
-        {
-            return false;
-        }
-    }
-
-    return true;
-}
-
-void TskSystemProperties::setW(PredefinedProperty prop, const std::wstring &value)
-{
-    set(prop, TskUtilities::toUTF8(value));
-}
-
-void TskSystemProperties::setW(const std::wstring &name, const std::wstring &value)
-{
-    set(TskUtilities::toUTF8(name), TskUtilities::toUTF8(value));
-}
-
-void TskSystemProperties::set(PredefinedProperty prop, const std::string &value)
-{
-    assert(prop >= PROG_DIR && prop < END_PROPS);
-    if (prop < PROG_DIR || prop >= END_PROPS)
-    {
-        throw TskException("TskSystemProperties::set : passed out of range prop argument");
-    }
-
-    set(predefPropNames[prop], value);
-}
-
-void TskSystemProperties::set(const std::string &name, const std::string &value)
-{
-    assert(!name.empty());
-    if (name.empty())
-    {
-        throw TskException("TskSystemProperties::set : passed empty name argument");
-    }
-
-    assert(name != "CURRENT_TIME");
-    if (name == "CURRENT_TIME")
-    {
-        LOGWARN("TskSystemProperties::set : attempt to set read-only CURRENT_TIME system property");
-        return;
-    }
-
-    setProperty(name, value);
-}
-
-std::wstring TskSystemProperties::getW(PredefinedProperty prop) const
-{
-    return TskUtilities::toUTF16(get(prop));
-}
-
-std::wstring TskSystemProperties::getW(const std::wstring &name) const
-{
-    return TskUtilities::toUTF16(get(TskUtilities::toUTF8(name)));
-}
-
-std::string TskSystemProperties::get(PredefinedProperty prop) const
-{
-    assert(prop >= PROG_DIR && prop < END_PROPS);
-    if (prop < PROG_DIR || prop >= END_PROPS)
-    {
-        throw TskException("TskSystemProperties::get : passed out of range prop argument");
-    }
-
-    if (prop == CURRENT_TIME)
-    {
-        // CURRENT_TIME is always computed upon request.
-        return Poco::DateTimeFormatter::format(Poco::LocalDateTime(), "%Y_%m_%d_%H_%M_%S");
-    }
-
-    std::string value = getProperty(predefPropNames[prop]);
-        
-    if (value.empty())
-    {
-        if (prop == PROG_DIR)
-        {            
-            // If PROG_DIR has not been set, set it to the location of the currently executing program.
-            value = TskUtilities::getProgDir();
-            const_cast<TskSystemProperties*>(this)->set(prop, value);
-        }
-        else if (prop == IMAGE_FILE)
-        {
-            // If IMAGE_FILE has not been set, attempt to retrieve it from the image database.
-            const std::vector<std::string> imgNames = TskServices::Instance().getImgDB().getImageNames();
-            if (!imgNames.empty())
-            {
-                const_cast<TskSystemProperties*>(this)->set(prop, imgNames[0]);
-            }
-        }
-        else
-        {
-            // Perhaps there is a default value.
-            value = predefPropDefaults[prop];
-        }
-    }
-
-    if (value.empty() && requiredProps.count(prop) != 0)
-    {
-        // The empty property is an unset required property.
-        std::stringstream msg;
-        msg << "TskSystemProperties::get : required predefined system property '" << predefPropNames[prop] << "' is not set";
-        throw TskException(msg.str());
-    }
-
-    return  expandMacros(value);
-}
-
-std::string TskSystemProperties::get(const std::string &name) const
-{
-    if (predefProps.count(name) != 0)
-    {
-        return get(predefProps[name]);
-    }
-
-    return expandMacros(getProperty(name));
-}
-
-std::wstring TskSystemProperties::expandMacrosW(const std::wstring &inputStr) const
-{
-    return TskUtilities::toUTF16(expandMacros(TskUtilities::toUTF8(inputStr)));
-}
-
-std::string TskSystemProperties::expandMacros(const std::string &inputStr) const
-{
-    std::string outputStr;
-    expandMacros(inputStr, outputStr, 1);
-    return outputStr;
-}
-
-void TskSystemProperties::expandMacros(const std::string &inputStr, std::string &outputStr, std::size_t depth) const
-{
-    assert(depth <= MAX_RECURSION_DEPTH);
-    if (depth > MAX_RECURSION_DEPTH)
-    {
-        std::wstringstream msg;
-        msg << L"TskSystemProperties::expandMacros : reached maximum depth (" << MAX_RECURSION_DEPTH << L") of recursion, cannot complete expansion of " << inputStr.c_str();
-        LOGERROR(msg.str());
-        return;
-    }
-
-    Poco::StringTokenizer tokenizer(inputStr, "#", Poco::StringTokenizer::TOK_IGNORE_EMPTY);
-    for (Poco::StringTokenizer::Iterator token = tokenizer.begin(); token != tokenizer.end(); ++token)
-    {
-        if (predefPropTokens.count(*token) != 0)
-        {
-            expandMacros(get(*token), outputStr, depth + 1);
-        }
-        else
-        {
-            outputStr += *token;
-        }
-    }
-}
+/*
+ *  The Sleuth Kit
+ *
+ *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ *  reserved.
+ *
+ *  This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskSystemProperties.cpp
+ * Contains the implementation of the TskSystemProperties class.
+ */
+
+// Include the class definition first to ensure it does not depend on subsequent includes in this file.
+#include "TskSystemProperties.h"
+
+// TSK Framework includes
+#include "tsk/framework/services/TskServices.h" // @@@ TODO: Resolve need to include TskServices.h before Log.h (macros in Log.h cause circular references)
+#include "tsk/framework/services/Log.h"
+#include "tsk/framework/utilities/TskUtilities.h"
+#include "tsk/framework/utilities/TskException.h"
+
+// Poco includes
+#include "Poco/Path.h"
+#include "Poco/StringTokenizer.h"
+#include "Poco/LocalDateTime.h"
+#include "Poco/DateTimeFormatter.h"
+
+// C/C++ library includes
+#include <sstream>
+#include <assert.h>
+
+namespace
+{
+    const std::string DEFAULT_PROG_DIR = Poco::Path::current();
+    const std::string DEFAULT_CONFIG_DIR = std::string("#PROG_DIR#") + Poco::Path::separator() + std::string("Config");
+    const std::string DEFAULT_MODULE_DIR = std::string("#PROG_DIR#") + Poco::Path::separator() + std::string("Modules");
+    const std::string DEFAULT_SYSTEM_OUT_DIR = std::string("#OUT_DIR#") + Poco::Path::separator() + std::string("SystemOutput");
+    const std::string DEFAULT_MODULE_OUT_DIR = std::string("#OUT_DIR#") + Poco::Path::separator() + std::string("ModuleOutput");
+    const std::string DEFAULT_LOG_DIR = std::string("#SYSTEM_OUT_DIR#") + Poco::Path::separator() + std::string("Logs");
+    const std::string DEFAULT_CARVE_DIR = std::string("#SYSTEM_OUT_DIR#") + Poco::Path::separator() + std::string("Carving");
+    const std::string DEFAULT_UNALLOC_SECTORS_IMG_FILE_NAME = "unalloc.bin";
+    const std::string DEFAULT_MAX_UNALLOC_SECTORS_IMG_FILE_SIZE = "0";
+    const std::string DEFAULT_CARVE_EXTRACT_KEEP_INPUT_FILES = "false";
+    const std::string DEFAULT_CARVE_EXTRACT_KEEP_OUTPUT_FILES = "false";
+    const std::string DEFAULT_SCALPEL_CONFIG_FILE = std::string("#SCALPEL_DIR#") + Poco::Path::separator() + std::string("scalpel.conf");
+    const std::string DEFAULT_PIPELINE_CONFIG_FILE = std::string("#CONFIG_DIR#") + Poco::Path::separator() + std::string("pipeline_config.xml");
+
+    struct PredefProp
+    {
+        PredefProp(TskSystemProperties::PredefinedProperty propId, const std::string &macroToken, bool propRequired, const std::string &propDefaultValue) :
+            id(propId), token(macroToken), required(propRequired), defaultValue(propDefaultValue) {}
+        TskSystemProperties::PredefinedProperty id;
+        std::string token;
+        bool required;
+        std::string defaultValue;
+    };
+
+    const PredefProp predefinedProperties[] =
+    {
+        PredefProp(TskSystemProperties::PROG_DIR, "PROG_DIR", false, ""),
+        PredefProp(TskSystemProperties::CONFIG_DIR, "CONFIG_DIR", false, DEFAULT_CONFIG_DIR),
+        PredefProp(TskSystemProperties::MODULE_DIR, "MODULE_DIR", false, DEFAULT_MODULE_DIR),
+        PredefProp(TskSystemProperties::MODULE_CONFIG_DIR, "MODULE_CONFIG_DIR", false, DEFAULT_MODULE_DIR),    // default == MODULE_DIR
+        PredefProp(TskSystemProperties::OUT_DIR, "OUT_DIR", true, ""),
+        PredefProp(TskSystemProperties::SYSTEM_OUT_DIR, "SYSTEM_OUT_DIR", false, DEFAULT_SYSTEM_OUT_DIR),
+        PredefProp(TskSystemProperties::MODULE_OUT_DIR, "MODULE_OUT_DIR", false, DEFAULT_MODULE_OUT_DIR),
+        PredefProp(TskSystemProperties::LOG_DIR, "LOG_DIR", false, DEFAULT_LOG_DIR),
+        PredefProp(TskSystemProperties::DB_HOST, "DB_HOST", false, ""),
+        PredefProp(TskSystemProperties::DB_PORT, "DB_PORT", false, ""),
+        PredefProp(TskSystemProperties::CARVE_DIR, "CARVE_DIR", false, DEFAULT_CARVE_DIR),
+        PredefProp(TskSystemProperties::UNALLOC_SECTORS_IMG_FILE_NAME, "UNALLOC_SECTORS_IMG_FILE_NAME", false, DEFAULT_UNALLOC_SECTORS_IMG_FILE_NAME), 
+        PredefProp(TskSystemProperties::MAX_UNALLOC_SECTORS_IMG_FILE_SIZE, "MAX_UNALLOC_SECTORS_IMG_FILE_SIZE", false, DEFAULT_MAX_UNALLOC_SECTORS_IMG_FILE_SIZE),
+        PredefProp(TskSystemProperties::CARVE_EXTRACT_KEEP_INPUT_FILES, "CARVE_EXTRACT_KEEP_INPUT_FILES", false, DEFAULT_CARVE_EXTRACT_KEEP_INPUT_FILES), 
+        PredefProp(TskSystemProperties::CARVE_EXTRACT_KEEP_OUTPUT_FILES, "CARVE_EXTRACT_KEEP_OUTPUT_FILES", false, DEFAULT_CARVE_EXTRACT_KEEP_OUTPUT_FILES),
+        PredefProp(TskSystemProperties::SCALPEL_DIR, "SCALPEL_DIR", false, ""),
+        PredefProp(TskSystemProperties::SCALPEL_CONFIG_FILE, "SCALPEL_CONFIG_FILE", false, DEFAULT_SCALPEL_CONFIG_FILE),
+        PredefProp(TskSystemProperties::PIPELINE_CONFIG_FILE, "PIPELINE_CONFIG_FILE", false, DEFAULT_PIPELINE_CONFIG_FILE),
+        PredefProp(TskSystemProperties::SESSION_ID, "SESSION_ID", false, ""),
+        PredefProp(TskSystemProperties::CURRENT_TASK, "CURRENT_TASK", false, ""),
+        PredefProp(TskSystemProperties::CURRENT_SEQUENCE_NUMBER, "CURRENT_SEQUENCE_NUMBER", false, ""),
+        PredefProp(TskSystemProperties::NODE, "NODE", false, ""),
+        PredefProp(TskSystemProperties::PID, "PID", false, ""),
+        PredefProp(TskSystemProperties::START_TIME, "START_TIME", false, ""),
+        PredefProp(TskSystemProperties::CURRENT_TIME, "CURRENT_TIME", false, ""),
+        PredefProp(TskSystemProperties::UNIQUE_ID, "UNIQUE_ID", false, ""),
+        PredefProp(TskSystemProperties::IMAGE_FILE, "IMAGE_FILE", false, "")
+    };
+
+    const std::size_t MAX_PATH_LENGTH = 1024;
+    const std::size_t MAX_RECURSION_DEPTH = 10;
+}
+
+TskSystemProperties::TskSystemProperties()
+{
+    // Populate the lookup data structures. 
+    for (std::size_t i = 0; i < END_PROPS; ++i)
+    {
+        predefProps[predefinedProperties[i].token] = predefinedProperties[i].id;
+        predefPropNames[predefinedProperties[i].id] = predefinedProperties[i].token;
+        predefPropTokens.insert(predefinedProperties[i].token);
+
+        if (predefinedProperties[i].required)
+        {
+            requiredProps.insert(predefinedProperties[i].id);
+        }
+
+        predefPropDefaults[predefinedProperties[i].id] = predefinedProperties[i].defaultValue; 
+    }
+}
+
+bool TskSystemProperties::isConfigured() const
+{
+    // Check whether all of the required predefined system properties are set.
+    for (std::set<PredefinedProperty>::const_iterator prop = requiredProps.begin(); prop != requiredProps.end(); ++prop)
+    {
+        std::string value = getProperty(predefPropNames[*prop]);
+        if (value.empty())
+        {
+            return false;
+        }
+    }
+
+    return true;
+}
+
+void TskSystemProperties::setW(PredefinedProperty prop, const std::wstring &value)
+{
+    set(prop, TskUtilities::toUTF8(value));
+}
+
+void TskSystemProperties::setW(const std::wstring &name, const std::wstring &value)
+{
+    set(TskUtilities::toUTF8(name), TskUtilities::toUTF8(value));
+}
+
+void TskSystemProperties::set(PredefinedProperty prop, const std::string &value)
+{
+    assert(prop >= PROG_DIR && prop < END_PROPS);
+    if (prop < PROG_DIR || prop >= END_PROPS)
+    {
+        throw TskException("TskSystemProperties::set : passed out of range prop argument");
+    }
+
+    set(predefPropNames[prop], value);
+}
+
+void TskSystemProperties::set(const std::string &name, const std::string &value)
+{
+    assert(!name.empty());
+    if (name.empty())
+    {
+        throw TskException("TskSystemProperties::set : passed empty name argument");
+    }
+
+    assert(name != "CURRENT_TIME");
+    if (name == "CURRENT_TIME")
+    {
+        LOGWARN("TskSystemProperties::set : attempt to set read-only CURRENT_TIME system property");
+        return;
+    }
+
+    setProperty(name, value);
+}
+
+std::wstring TskSystemProperties::getW(PredefinedProperty prop) const
+{
+    return TskUtilities::toUTF16(get(prop));
+}
+
+std::wstring TskSystemProperties::getW(const std::wstring &name) const
+{
+    return TskUtilities::toUTF16(get(TskUtilities::toUTF8(name)));
+}
+
+std::string TskSystemProperties::get(PredefinedProperty prop) const
+{
+    assert(prop >= PROG_DIR && prop < END_PROPS);
+    if (prop < PROG_DIR || prop >= END_PROPS)
+    {
+        throw TskException("TskSystemProperties::get : passed out of range prop argument");
+    }
+
+    if (prop == CURRENT_TIME)
+    {
+        // CURRENT_TIME is always computed upon request.
+        return Poco::DateTimeFormatter::format(Poco::LocalDateTime(), "%Y_%m_%d_%H_%M_%S");
+    }
+
+    std::string value = getProperty(predefPropNames[prop]);
+        
+    if (value.empty())
+    {
+        if (prop == PROG_DIR)
+        {            
+            // If PROG_DIR has not been set, set it to the location of the currently executing program.
+            value = TskUtilities::getProgDir();
+            const_cast<TskSystemProperties*>(this)->set(prop, value);
+        }
+        else if (prop == IMAGE_FILE)
+        {
+            // If IMAGE_FILE has not been set, attempt to retrieve it from the image database.
+            const std::vector<std::string> imgNames = TskServices::Instance().getImgDB().getImageNames();
+            if (!imgNames.empty())
+            {
+                const_cast<TskSystemProperties*>(this)->set(prop, imgNames[0]);
+            }
+        }
+        else
+        {
+            // Perhaps there is a default value.
+            value = predefPropDefaults[prop];
+        }
+    }
+
+    if (value.empty() && requiredProps.count(prop) != 0)
+    {
+        // The empty property is an unset required property.
+        std::stringstream msg;
+        msg << "TskSystemProperties::get : required predefined system property '" << predefPropNames[prop] << "' is not set";
+        throw TskException(msg.str());
+    }
+
+    return  expandMacros(value);
+}
+
+std::string TskSystemProperties::get(const std::string &name) const
+{
+    if (predefProps.count(name) != 0)
+    {
+        return get(predefProps[name]);
+    }
+
+    return expandMacros(getProperty(name));
+}
+
+std::wstring TskSystemProperties::expandMacrosW(const std::wstring &inputStr) const
+{
+    return TskUtilities::toUTF16(expandMacros(TskUtilities::toUTF8(inputStr)));
+}
+
+std::string TskSystemProperties::expandMacros(const std::string &inputStr) const
+{
+    std::string outputStr;
+    expandMacros(inputStr, outputStr, 1);
+    return outputStr;
+}
+
+void TskSystemProperties::expandMacros(const std::string &inputStr, std::string &outputStr, std::size_t depth) const
+{
+    assert(depth <= MAX_RECURSION_DEPTH);
+    if (depth > MAX_RECURSION_DEPTH)
+    {
+        std::wstringstream msg;
+        msg << L"TskSystemProperties::expandMacros : reached maximum depth (" << MAX_RECURSION_DEPTH << L") of recursion, cannot complete expansion of " << inputStr.c_str();
+        LOGERROR(msg.str());
+        return;
+    }
+
+    Poco::StringTokenizer tokenizer(inputStr, "#", Poco::StringTokenizer::TOK_IGNORE_EMPTY);
+    for (Poco::StringTokenizer::Iterator token = tokenizer.begin(); token != tokenizer.end(); ++token)
+    {
+        if (predefPropTokens.count(*token) != 0)
+        {
+            expandMacros(get(*token), outputStr, depth + 1);
+        }
+        else
+        {
+            outputStr += *token;
+        }
+    }
+}
diff --git a/framework/tsk/framework/services/TskSystemProperties.h b/framework/tsk/framework/services/TskSystemProperties.h
index cfc422d174a9bbe6abfae8a6e9bc13d0a056db28..6bd58369b501718e47ac9cfa00bfb117b6dcfe9d 100755
--- a/framework/tsk/framework/services/TskSystemProperties.h
+++ b/framework/tsk/framework/services/TskSystemProperties.h
@@ -1,403 +1,403 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskSystemProperties.h
- * Contains the interface of the TskSystemProperties class.
- */
-
-#ifndef _TSK_SYSTEMPROPERTIES_H
-#define _TSK_SYSTEMPROPERTIES_H
-
-// TSK Framework includes
-#include "tsk/framework/framework_i.h"
-
-// C/C++ library includes
-#include <string>
-#include <map>
-#include <set>
-
-/**
- * A base class for setting and retrieving system-wide name/value pairs.
- * Typically used to store system settings so that all modules and classes can
- * access the settings. Can be registered with and retrieved from TskServices.
- *
- * The class defines several standard 'names' in the PredefinedProperties
- * enum.  Any 'name' can be used though.
- *
- * Values can refer to other 'names' in the SystemProperties.  When the
- * values are retrieved via one of the get() methods, the value is searched
- * for words between two '#' characters.  If the word is a defined system 
- * property, then its value will be replaced. For example, \#PROG_DIR\# would 
- * be replaced by the PROG_DIR system property value in "#PROG_DIR#\\foo". 
- * 
- * The class is abstract; derived classes supply property storage options and 
- * implement the private virtual functions setProperty and getProperty (the 
- * class design makes use of Herb Sutter's Non-Virtual Interface [NVI] idiom).
- */
-class TSK_FRAMEWORK_API TskSystemProperties
-{
-public:
-    /**
-     * The TSK Framework predefines a set of system properties. Many of these
-     * properties have default values, while others are required to have values 
-     * supplied by either the executing program or the framework configuration
-     * file. TskSystemProperties::isConfigured() may be called to do a runtime
-     * query of whether or not all required system properties are set.
-     */
-    enum PredefinedProperty
-    {
-        /** 
-         * Program root directory. Defaults to the directory where the 
-         * executing program is installed. 
-         */
-        PROG_DIR,
-
-        /** 
-         * Directory where configuration files and data can be found. 
-         * Defaults to \#PROG_DIR#/Config. 
-         */
-        CONFIG_DIR,
-        
-        /** 
-          * Directory where plug-in and executable modules can be found.
-          * Defaults to \#PROG_DIR#/Modules.
-          */
-        MODULE_DIR,
-
-        /** 
-          * Directory where plug-in modules can find their configuration files,
-          * if any.
-          * Defaults to MODULE_DIR.
-          */
-        MODULE_CONFIG_DIR,
-
-        /** 
-         * Root output directory. It should be a shared location if the TSK
-         * Framework is being used in a distributed environment. It is a 
-         * required system property.
-         */
-        OUT_DIR,
-
-        /** 
-         * The output directory for the executing program. Defaults to 
-         * \#OUT_DIR#/SystemOutput.
-         */
-        SYSTEM_OUT_DIR,
-
-        /** 
-         * The output directory for plug-in and executable modules. Defaults to 
-         * \#OUT_DIR#/ModuleOutput.
-         */
-        MODULE_OUT_DIR,
-
-        /** 
-         * Directory where system logs are written. Defaults to 
-         * \#SYSTEM_OUT_DIR#/Logs. 
-         */
-        LOG_DIR,
-
-        /** 
-         * Hostname of database server (if one is being used). 
-         */
-        DB_HOST,
-
-        /** 
-         * Port of database server (if one is being used) 
-         */
-        DB_PORT,
-
-        /** 
-         * Directory where unallocated sectors image files are stored prior to
-         * carving. Defaults to \#SYSTEM_OUT_DIR#\\Carving. 
-         */ 
-        CARVE_DIR,
-
-        /**
-         * File name to be given to all unallocated sectors image files.
-         * Default to unalloc.bin.
-         */
-        UNALLOC_SECTORS_IMG_FILE_NAME,
-
-        /**
-         * Maximum allowable size for unallocated sectors image files. Can be 
-         * Set to zero to have no maximum size and instead break files on 
-         * volume boundaries only. Defaults to zero.
-         */
-        MAX_UNALLOC_SECTORS_IMG_FILE_SIZE,
-
-        /**
-         * Whether or not unallocated sectors image files should be retained
-         * after carving is completed. Defaults to false.
-         */
-        CARVE_EXTRACT_KEEP_INPUT_FILES,
-
-        /**
-         * Whether or not carved files should be retained in the carving 
-         * directory after they are copied to file storage. Defaults to false.
-         */
-        CARVE_EXTRACT_KEEP_OUTPUT_FILES,
-
-        /**
-         * Directory where scalpel.exe is installed. Used by the TSK 
-         * Framework's implementation of the CarveExtract interface. 
-         */
-        SCALPEL_DIR,
-
-        /**
-         * Path to a Scalpel configuration file. Used by the TSK 
-         * Framework's implementation of the CarveExtract interface.
-         * Defaults to \#SCALPEL_DIR#/scalpel.conf.
-         */
-        SCALPEL_CONFIG_FILE,
-
-        /** 
-         * Path to a pipeline configuration file. Defaults to 
-         * \#CONFIG_DIR#/pipeline_config.xml. 
-         */ 
-        PIPELINE_CONFIG_FILE,
-
-        /** 
-          * ID of this session.  The intended use of this is in a distributed
-          * environment that is processing multiple images at the same time.
-          * Each image would have a unique session ID. 
-          */
-        SESSION_ID,
-
-        /** 
-         * Currently executing task, e.g., file analysis, carving, etc. 
-         */
-        CURRENT_TASK,
-
-        /** 
-          * Can be used to assign a number in a sequence to a sub task of the
-          * current task. 
-          */ 
-        CURRENT_SEQUENCE_NUMBER,
-
-        /** 
-         * The hostname of the computer on which the program is executing. 
-         */
-        NODE,
-
-        /** 
-         * The process identifier of the process running the program. 
-         */
-        PID,
-
-        /** 
-         * The time the process running the program began executing. 
-         */
-        START_TIME,
-
-        /** 
-         * Current system time. Read only. 
-         */
-        CURRENT_TIME,
-
-        /** 
-         * A combination of elements that define a unique identifier for the
-         * current task. For example, this property might be defined to be a
-         * string of the form CurrentTask_HostName_PID_StartTime. 
-         */
-        UNIQUE_ID,
-
-        /** 
-         * Image file path. Defaults to the image file path stored in the image database. 
-         */
-        IMAGE_FILE,
-
-		END_PROPS
-    };
-
-    /** 
-     * Default constructor. 
-     */
-    TskSystemProperties();
-
-    /** 
-     * Destructor, virtual since this is an abstract base class. 
-     */
-    virtual ~TskSystemProperties() {}
-
-    /**
-     * Determines whether or not all required predefined system properties are
-     * currently set.
-     *
-     * @return True if all required properties are set, false otherwise.
-     */
-    bool isConfigured() const;
-
-    /** 
-     * Associates a string value with a name.
-     * See the class description for more details on setting properties
-     * based on other properties. 
-     *
-     * @param prop An element of the PredefinedProperty enum.
-     * @param value The value to associate with the name corresponding to the
-     * PredefinedProperty enum element.
-     * @return Throws TskException if prop is out of range.
-     */
-    void setW(PredefinedProperty prop, const std::wstring &value);
-    
-    /** 
-     * Associates a string value with an unofficial name.
-     * See the class description for more details on setting properties
-     * based on other properties. 
-     *
-     * @param name The name with which to associate the value.
-     * @param value The value to associate with the name.
-     * @return Throws TskException if name is empty.
-     */
-    void setW(const std::wstring &name, const std::wstring &value);
-
-    /** 
-     * Associates a string value with a name.
-     * See the class description for more details on setting properties
-     * based on other properties. 
-     *
-     * @param prop An element of the PredefinedProperty enum.
-     * @param value The value to associate with the name corresponding to the
-     * PredefinedProperty enum element.
-     * @return Throws TskException if prop is out of range.
-     */
-    void set(PredefinedProperty prop, const std::string &value);
-
-    /** 
-     * Associates a string value with an unofficial name.
-     * See the class description for more details on setting properties
-     * based on other properties. 
-     *
-     * @param name The name with which to associate the value.
-     * @param value The value to associate with the name.
-     * @return Throws TskException if name is empty.
-     */
-    void set(const std::string &name, const std::string &value);
-
-    /** 
-     * Retrieves the string value associated with a name.
-     *
-     * @param prop An element of the PredefinedProperty enum.
-     * @returns String value corresponding to prop. Throws
-     *  TskException if the requested value is for a required predefined 
-     * property that is not set.
-     */
-    std::wstring getW(PredefinedProperty prop) const;
-
-    /** 
-     * Retrieves the string value associated with a name.
-     *
-     * @param name Name of value to retrieve.
-     * @returns String value or empty string if name was not found. 
-     */
-    std::wstring getW(const std::wstring &name) const;
-
-    /** 
-     * Retrieves the string value associated with a name.
-     *
-     * @param prop An element of the PredefinedProperty enum.
-     * @returns String value corresponding to prop. Throws
-     * TskException if the requested value is for a required predefined 
-     * property that is not set.
-     */
-    std::string get(PredefinedProperty prop) const;
-    
-    /** 
-     * Retrieves the string value associated with a name.
-     *
-     * @param name Name of value to retrieve.
-     * @returns String value or empty string if name was not found. 
-     */
-    std::string get(const std::string &name) const;
-
-    /**
-     * Expands any system property macros in a given string. 
-     *
-     * @param inputStr The input string.
-     * @return A copy of the input string with all system property macros
-     * expanded.
-     */
-    std::wstring expandMacrosW(const std::wstring &inputStr) const;
-
-    /**
-     * Expands any system property macros in a given string. 
-     *
-     * @param inputStr The input string.
-     * @return A copy of the input string with all system property macros
-     * expanded.
-     */
-    std::string expandMacros(const std::string &inputStr) const;
-
-private:
-    /**
-     * Associates a string value with a name. Called by the public interface of
-     * this class in accordance with Herb Sutter's Non-Virtual Interface (NVI) 
-     * idiom.
-     *
-     * @param name The name with which to associate the value.
-     * @param value The value to associate with the name.
-     */
-    virtual void setProperty(const std::string &name, const std::string &value) = 0;
-
-    /** 
-     * Retrieves the string value associated with a name. Called by the public 
-     * interface of this class in accordance with Herb Sutter's Non-Virtual 
-     * Interface (NVI) idiom.
-     *
-     * @param name Name of value to retrieve.
-     * @returns String value or empty string if name was not found. 
-     */
-    virtual std::string getProperty(const std::string &name) const = 0;
-
-    /**
-     * Recursively expands the system property macros in a given string with
-     * recursion not to exceed TskSystemProperties::MAX_RECURSION_DEPTH. 
-     *
-     * @param inputStr The input string.
-     * @param outputStr The output string.
-     * @param depth The current depth of the recursion.
-     * @return A copy of the input string with all system property macros
-     * at the current recursion depth expanded.
-     */
-    void expandMacros(const std::string &inputStr, std::string &outputStr, std::size_t depth) const;
-
-    /**
-     * Lookup data structure used to map name strings of predefined system 
-     * properties to elements of the PredefinedProperty enum.
-     */
-    mutable std::map<std::string, PredefinedProperty> predefProps;
-
-    /**
-     * Lookup data structure used to map elements of the 
-     * PredefinedProperty enum to name strings.
-     */
-    mutable std::map<PredefinedProperty, std::string> predefPropNames;
-
-    /**
-     * Lookup data structure used to determine whether or not a token in a 
-     * string passed to the expandMacros function corresponds to a predefined 
-     * system property.
-     */
-    mutable std::set<std::string> predefPropTokens;
-
-    /**
-     * Lookup data structure used to determine whether or not a predefined 
-     * system property is required.
-     */
-    mutable std::set<PredefinedProperty> requiredProps; 
-
-    /**
-     * Lookup data structure used to get the default values of predefined 
-     * system properties.
-     */
-    mutable std::map<PredefinedProperty, std::string> predefPropDefaults;
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskSystemProperties.h
+ * Contains the interface of the TskSystemProperties class.
+ */
+
+#ifndef _TSK_SYSTEMPROPERTIES_H
+#define _TSK_SYSTEMPROPERTIES_H
+
+// TSK Framework includes
+#include "tsk/framework/framework_i.h"
+
+// C/C++ library includes
+#include <string>
+#include <map>
+#include <set>
+
+/**
+ * A base class for setting and retrieving system-wide name/value pairs.
+ * Typically used to store system settings so that all modules and classes can
+ * access the settings. Can be registered with and retrieved from TskServices.
+ *
+ * The class defines several standard 'names' in the PredefinedProperties
+ * enum.  Any 'name' can be used though.
+ *
+ * Values can refer to other 'names' in the SystemProperties.  When the
+ * values are retrieved via one of the get() methods, the value is searched
+ * for words between two '#' characters.  If the word is a defined system 
+ * property, then its value will be replaced. For example, \#PROG_DIR\# would 
+ * be replaced by the PROG_DIR system property value in "#PROG_DIR#\\foo". 
+ * 
+ * The class is abstract; derived classes supply property storage options and 
+ * implement the private virtual functions setProperty and getProperty (the 
+ * class design makes use of Herb Sutter's Non-Virtual Interface [NVI] idiom).
+ */
+class TSK_FRAMEWORK_API TskSystemProperties
+{
+public:
+    /**
+     * The TSK Framework predefines a set of system properties. Many of these
+     * properties have default values, while others are required to have values 
+     * supplied by either the executing program or the framework configuration
+     * file. TskSystemProperties::isConfigured() may be called to do a runtime
+     * query of whether or not all required system properties are set.
+     */
+    enum PredefinedProperty
+    {
+        /** 
+         * Program root directory. Defaults to the directory where the 
+         * executing program is installed. 
+         */
+        PROG_DIR,
+
+        /** 
+         * Directory where configuration files and data can be found. 
+         * Defaults to \#PROG_DIR#/Config. 
+         */
+        CONFIG_DIR,
+        
+        /** 
+          * Directory where plug-in and executable modules can be found.
+          * Defaults to \#PROG_DIR#/Modules.
+          */
+        MODULE_DIR,
+
+        /** 
+          * Directory where plug-in modules can find their configuration files,
+          * if any.
+          * Defaults to MODULE_DIR.
+          */
+        MODULE_CONFIG_DIR,
+
+        /** 
+         * Root output directory. It should be a shared location if the TSK
+         * Framework is being used in a distributed environment. It is a 
+         * required system property.
+         */
+        OUT_DIR,
+
+        /** 
+         * The output directory for the executing program. Defaults to 
+         * \#OUT_DIR#/SystemOutput.
+         */
+        SYSTEM_OUT_DIR,
+
+        /** 
+         * The output directory for plug-in and executable modules. Defaults to 
+         * \#OUT_DIR#/ModuleOutput.
+         */
+        MODULE_OUT_DIR,
+
+        /** 
+         * Directory where system logs are written. Defaults to 
+         * \#SYSTEM_OUT_DIR#/Logs. 
+         */
+        LOG_DIR,
+
+        /** 
+         * Hostname of database server (if one is being used). 
+         */
+        DB_HOST,
+
+        /** 
+         * Port of database server (if one is being used) 
+         */
+        DB_PORT,
+
+        /** 
+         * Directory where unallocated sectors image files are stored prior to
+         * carving. Defaults to \#SYSTEM_OUT_DIR#\\Carving. 
+         */ 
+        CARVE_DIR,
+
+        /**
+         * File name to be given to all unallocated sectors image files.
+         * Default to unalloc.bin.
+         */
+        UNALLOC_SECTORS_IMG_FILE_NAME,
+
+        /**
+         * Maximum allowable size for unallocated sectors image files. Can be 
+         * Set to zero to have no maximum size and instead break files on 
+         * volume boundaries only. Defaults to zero.
+         */
+        MAX_UNALLOC_SECTORS_IMG_FILE_SIZE,
+
+        /**
+         * Whether or not unallocated sectors image files should be retained
+         * after carving is completed. Defaults to false.
+         */
+        CARVE_EXTRACT_KEEP_INPUT_FILES,
+
+        /**
+         * Whether or not carved files should be retained in the carving 
+         * directory after they are copied to file storage. Defaults to false.
+         */
+        CARVE_EXTRACT_KEEP_OUTPUT_FILES,
+
+        /**
+         * Directory where scalpel.exe is installed. Used by the TSK 
+         * Framework's implementation of the CarveExtract interface. 
+         */
+        SCALPEL_DIR,
+
+        /**
+         * Path to a Scalpel configuration file. Used by the TSK 
+         * Framework's implementation of the CarveExtract interface.
+         * Defaults to \#SCALPEL_DIR#/scalpel.conf.
+         */
+        SCALPEL_CONFIG_FILE,
+
+        /** 
+         * Path to a pipeline configuration file. Defaults to 
+         * \#CONFIG_DIR#/pipeline_config.xml. 
+         */ 
+        PIPELINE_CONFIG_FILE,
+
+        /** 
+          * ID of this session.  The intended use of this is in a distributed
+          * environment that is processing multiple images at the same time.
+          * Each image would have a unique session ID. 
+          */
+        SESSION_ID,
+
+        /** 
+         * Currently executing task, e.g., file analysis, carving, etc. 
+         */
+        CURRENT_TASK,
+
+        /** 
+          * Can be used to assign a number in a sequence to a sub task of the
+          * current task. 
+          */ 
+        CURRENT_SEQUENCE_NUMBER,
+
+        /** 
+         * The hostname of the computer on which the program is executing. 
+         */
+        NODE,
+
+        /** 
+         * The process identifier of the process running the program. 
+         */
+        PID,
+
+        /** 
+         * The time the process running the program began executing. 
+         */
+        START_TIME,
+
+        /** 
+         * Current system time. Read only. 
+         */
+        CURRENT_TIME,
+
+        /** 
+         * A combination of elements that define a unique identifier for the
+         * current task. For example, this property might be defined to be a
+         * string of the form CurrentTask_HostName_PID_StartTime. 
+         */
+        UNIQUE_ID,
+
+        /** 
+         * Image file path. Defaults to the image file path stored in the image database. 
+         */
+        IMAGE_FILE,
+
+		END_PROPS
+    };
+
+    /** 
+     * Default constructor. 
+     */
+    TskSystemProperties();
+
+    /** 
+     * Destructor, virtual since this is an abstract base class. 
+     */
+    virtual ~TskSystemProperties() {}
+
+    /**
+     * Determines whether or not all required predefined system properties are
+     * currently set.
+     *
+     * @return True if all required properties are set, false otherwise.
+     */
+    bool isConfigured() const;
+
+    /** 
+     * Associates a string value with a name.
+     * See the class description for more details on setting properties
+     * based on other properties. 
+     *
+     * @param prop An element of the PredefinedProperty enum.
+     * @param value The value to associate with the name corresponding to the
+     * PredefinedProperty enum element.
+     * @return Throws TskException if prop is out of range.
+     */
+    void setW(PredefinedProperty prop, const std::wstring &value);
+    
+    /** 
+     * Associates a string value with an unofficial name.
+     * See the class description for more details on setting properties
+     * based on other properties. 
+     *
+     * @param name The name with which to associate the value.
+     * @param value The value to associate with the name.
+     * @return Throws TskException if name is empty.
+     */
+    void setW(const std::wstring &name, const std::wstring &value);
+
+    /** 
+     * Associates a string value with a name.
+     * See the class description for more details on setting properties
+     * based on other properties. 
+     *
+     * @param prop An element of the PredefinedProperty enum.
+     * @param value The value to associate with the name corresponding to the
+     * PredefinedProperty enum element.
+     * @return Throws TskException if prop is out of range.
+     */
+    void set(PredefinedProperty prop, const std::string &value);
+
+    /** 
+     * Associates a string value with an unofficial name.
+     * See the class description for more details on setting properties
+     * based on other properties. 
+     *
+     * @param name The name with which to associate the value.
+     * @param value The value to associate with the name.
+     * @return Throws TskException if name is empty.
+     */
+    void set(const std::string &name, const std::string &value);
+
+    /** 
+     * Retrieves the string value associated with a name.
+     *
+     * @param prop An element of the PredefinedProperty enum.
+     * @returns String value corresponding to prop. Throws
+     *  TskException if the requested value is for a required predefined 
+     * property that is not set.
+     */
+    std::wstring getW(PredefinedProperty prop) const;
+
+    /** 
+     * Retrieves the string value associated with a name.
+     *
+     * @param name Name of value to retrieve.
+     * @returns String value or empty string if name was not found. 
+     */
+    std::wstring getW(const std::wstring &name) const;
+
+    /** 
+     * Retrieves the string value associated with a name.
+     *
+     * @param prop An element of the PredefinedProperty enum.
+     * @returns String value corresponding to prop. Throws
+     * TskException if the requested value is for a required predefined 
+     * property that is not set.
+     */
+    std::string get(PredefinedProperty prop) const;
+    
+    /** 
+     * Retrieves the string value associated with a name.
+     *
+     * @param name Name of value to retrieve.
+     * @returns String value or empty string if name was not found. 
+     */
+    std::string get(const std::string &name) const;
+
+    /**
+     * Expands any system property macros in a given string. 
+     *
+     * @param inputStr The input string.
+     * @return A copy of the input string with all system property macros
+     * expanded.
+     */
+    std::wstring expandMacrosW(const std::wstring &inputStr) const;
+
+    /**
+     * Expands any system property macros in a given string. 
+     *
+     * @param inputStr The input string.
+     * @return A copy of the input string with all system property macros
+     * expanded.
+     */
+    std::string expandMacros(const std::string &inputStr) const;
+
+private:
+    /**
+     * Associates a string value with a name. Called by the public interface of
+     * this class in accordance with Herb Sutter's Non-Virtual Interface (NVI) 
+     * idiom.
+     *
+     * @param name The name with which to associate the value.
+     * @param value The value to associate with the name.
+     */
+    virtual void setProperty(const std::string &name, const std::string &value) = 0;
+
+    /** 
+     * Retrieves the string value associated with a name. Called by the public 
+     * interface of this class in accordance with Herb Sutter's Non-Virtual 
+     * Interface (NVI) idiom.
+     *
+     * @param name Name of value to retrieve.
+     * @returns String value or empty string if name was not found. 
+     */
+    virtual std::string getProperty(const std::string &name) const = 0;
+
+    /**
+     * Recursively expands the system property macros in a given string with
+     * recursion not to exceed TskSystemProperties::MAX_RECURSION_DEPTH. 
+     *
+     * @param inputStr The input string.
+     * @param outputStr The output string.
+     * @param depth The current depth of the recursion.
+     * @return A copy of the input string with all system property macros
+     * at the current recursion depth expanded.
+     */
+    void expandMacros(const std::string &inputStr, std::string &outputStr, std::size_t depth) const;
+
+    /**
+     * Lookup data structure used to map name strings of predefined system 
+     * properties to elements of the PredefinedProperty enum.
+     */
+    mutable std::map<std::string, PredefinedProperty> predefProps;
+
+    /**
+     * Lookup data structure used to map elements of the 
+     * PredefinedProperty enum to name strings.
+     */
+    mutable std::map<PredefinedProperty, std::string> predefPropNames;
+
+    /**
+     * Lookup data structure used to determine whether or not a token in a 
+     * string passed to the expandMacros function corresponds to a predefined 
+     * system property.
+     */
+    mutable std::set<std::string> predefPropTokens;
+
+    /**
+     * Lookup data structure used to determine whether or not a predefined 
+     * system property is required.
+     */
+    mutable std::set<PredefinedProperty> requiredProps; 
+
+    /**
+     * Lookup data structure used to get the default values of predefined 
+     * system properties.
+     */
+    mutable std::map<PredefinedProperty, std::string> predefPropDefaults;
+};
+
+#endif
diff --git a/framework/tsk/framework/services/TskSystemPropertiesImpl.cpp b/framework/tsk/framework/services/TskSystemPropertiesImpl.cpp
index 11c6ae1dc1d46b7c0a1dc25288a096fa8cd9c25c..00dd11cc19acca4ac4dd385bc401c041054452de 100755
--- a/framework/tsk/framework/services/TskSystemPropertiesImpl.cpp
+++ b/framework/tsk/framework/services/TskSystemPropertiesImpl.cpp
@@ -1,75 +1,75 @@
-/*
- *
- *  The Sleuth Kit
- *
- *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- *  reserved.
- *
- *  This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskSystemPropertiesImpl.cpp
- * Contains the implementation of the TskSystemPropertiesImpl class.
- */
-
-// Include the class definition first to ensure it does not depend on subsequent includes in this file.
-#include "TskSystemPropertiesImpl.h"
-
-#include "tsk/framework/services/Log.h"
-#include "tsk/framework/services/TskServices.h"
-#include "tsk/framework/utilities/TskUtilities.h"
-#include "tsk/framework/utilities/TskException.h"
-#include "Poco/Util/XMLConfiguration.h"
-#include "Poco/Util/MapConfiguration.h"
-#include <sstream>
-
-void TskSystemPropertiesImpl::initialize(const std::wstring &configFile) 
-{
-    initialize(TskUtilities::toUTF8(configFile));
-}
-
-void TskSystemPropertiesImpl::initialize(const std::string &configfile) 
-{
-    try {
-        m_abstractConfig = new Poco::Util::XMLConfiguration(configfile);
-    }
-    catch (Poco::FileNotFoundException& )
-    {
-        throw TskException("Configuration file not found : " + configfile);
-    }
-}
-
-void TskSystemPropertiesImpl::initialize()
-{
-    m_abstractConfig = new Poco::Util::MapConfiguration();
-}
-
-void TskSystemPropertiesImpl::setProperty(const std::string &name, const std::string &value)
-{
-    if (!m_abstractConfig) 
-    {
-        throw TskException("TskSystemPropertiesImpl::set - Configuration not initialized.");
-    } 
-
-    m_abstractConfig->setString(name, value);
-}
-
-std::string TskSystemPropertiesImpl::getProperty(const std::string &name) const
-{
-    if (!m_abstractConfig) 
-    {
-        throw TskException("TskSystemPropertiesImpl::get - Configuration not initialized.");
-    }
-
-    try 
-    {
-        return m_abstractConfig->getString(name);
-    } 
-    catch (Poco::NotFoundException &) 
-    {
-        // Return empty string per documentation of base class interface.
-        return "";
-    }
-}
+/*
+ *
+ *  The Sleuth Kit
+ *
+ *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ *  reserved.
+ *
+ *  This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskSystemPropertiesImpl.cpp
+ * Contains the implementation of the TskSystemPropertiesImpl class.
+ */
+
+// Include the class definition first to ensure it does not depend on subsequent includes in this file.
+#include "TskSystemPropertiesImpl.h"
+
+#include "tsk/framework/services/Log.h"
+#include "tsk/framework/services/TskServices.h"
+#include "tsk/framework/utilities/TskUtilities.h"
+#include "tsk/framework/utilities/TskException.h"
+#include "Poco/Util/XMLConfiguration.h"
+#include "Poco/Util/MapConfiguration.h"
+#include <sstream>
+
+void TskSystemPropertiesImpl::initialize(const std::wstring &configFile) 
+{
+    initialize(TskUtilities::toUTF8(configFile));
+}
+
+void TskSystemPropertiesImpl::initialize(const std::string &configfile) 
+{
+    try {
+        m_abstractConfig = new Poco::Util::XMLConfiguration(configfile);
+    }
+    catch (Poco::FileNotFoundException& )
+    {
+        throw TskException("Configuration file not found : " + configfile);
+    }
+}
+
+void TskSystemPropertiesImpl::initialize()
+{
+    m_abstractConfig = new Poco::Util::MapConfiguration();
+}
+
+void TskSystemPropertiesImpl::setProperty(const std::string &name, const std::string &value)
+{
+    if (!m_abstractConfig) 
+    {
+        throw TskException("TskSystemPropertiesImpl::set - Configuration not initialized.");
+    } 
+
+    m_abstractConfig->setString(name, value);
+}
+
+std::string TskSystemPropertiesImpl::getProperty(const std::string &name) const
+{
+    if (!m_abstractConfig) 
+    {
+        throw TskException("TskSystemPropertiesImpl::get - Configuration not initialized.");
+    }
+
+    try 
+    {
+        return m_abstractConfig->getString(name);
+    } 
+    catch (Poco::NotFoundException &) 
+    {
+        // Return empty string per documentation of base class interface.
+        return "";
+    }
+}
diff --git a/framework/tsk/framework/services/TskSystemPropertiesImpl.h b/framework/tsk/framework/services/TskSystemPropertiesImpl.h
index da6b09fd746d5481e78ddb57cef23345f925ce72..5722f20c7f3918692ccab033761e5cc5c277860c 100755
--- a/framework/tsk/framework/services/TskSystemPropertiesImpl.h
+++ b/framework/tsk/framework/services/TskSystemPropertiesImpl.h
@@ -1,90 +1,90 @@
-/*
- *  The Sleuth Kit
- *
- *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- *  reserved.
- *
- *  This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskSystemPropertiesImpl.h
- * Contains the interface of the TskSystemPropertiesImpl class.
- */
-
-#ifndef _TSK_SYSTEMPROPERTIESIMPL_H
-#define _TSK_SYSTEMPROPERTIESIMPL_H
-
-#include "tsk/framework/framework_i.h"
-#include "TskSystemProperties.h"
-#include "Poco/Util/AbstractConfiguration.h"
-#include <string>
-
-/**
- * An implementation of TskSystemProperties that uses Poco
- * AbstractConfiguration class to set and retrieve name/value
- * pairs from an XML file. Allows system property values to refer 
- * to other system property values (see the TskSystemProperties class 
- * description for more details).
- * 
- * The XML schema for this is that the name of the value is the tag and
- * the value is stored in the tag.  Here is an example:
- * 
- * \verbatim
- <?xml version="1.0" encoding="utf-8"?>
- <TSK_FRAMEWORK_CONFIG>
-   <CONFIG_DIR>#PROG_DIR#/Config</CONFIG_DIR>
-   <MODULE_DIR>#PROG_DIR#/Modules</MODULE_DIR>
- </TSK_FRAMEWORK_CONFIG>
- * \endverbatim
- * You can make up your own tags and the values will be inserted and 
- * available via the TskSystemProperties service. 
- */
-class TSK_FRAMEWORK_API TskSystemPropertiesImpl : public TskSystemProperties
-{
-public:
-    /**
-     * Default constructor. The TskSystemPropertiesImpl object must then be 
-     * initialized with a call to one of the initialize() member functions
-     * before the object can be used.
-     */ 
-    TskSystemPropertiesImpl() : m_abstractConfig(static_cast<Poco::Util::AbstractConfiguration*>(NULL)) {}
-
-    /**
-     * Initialize using a configuration file.
-     *
-     * @param configfile Path to the XML file to be used to initialize the
-     * system properties.
-     */
-    void initialize(const std::wstring &configfile);
-
-    /**
-     * Initialize using a configuration file.
-     *
-     * @param configfile Path to the XML file to be used to initialize the
-     * system properties.
-     */
-    void initialize(const std::string &configfile);
-
-    /**
-     * Initialize with no initial system property settings.
-     */
-    void initialize();
-
-private:
-    // Prohibit copying by declaring copy control functions without implementations. 
-    TskSystemPropertiesImpl(const TskSystemPropertiesImpl&);
-    TskSystemPropertiesImpl& operator=(const TskSystemPropertiesImpl&);
-
-    virtual void setProperty(const std::string &name, const std::string &value);
-    virtual std::string getProperty(const std::string &name) const;
-
-    /**
-     * Manages a pointer to a Poco::Util::XMLConfiguration or
-     * Poco::Util::MapConfiguration object that maps names to values. 
-     */ 
-    Poco::AutoPtr<Poco::Util::AbstractConfiguration> m_abstractConfig;
-};
-
-#endif
+/*
+ *  The Sleuth Kit
+ *
+ *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ *  reserved.
+ *
+ *  This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskSystemPropertiesImpl.h
+ * Contains the interface of the TskSystemPropertiesImpl class.
+ */
+
+#ifndef _TSK_SYSTEMPROPERTIESIMPL_H
+#define _TSK_SYSTEMPROPERTIESIMPL_H
+
+#include "tsk/framework/framework_i.h"
+#include "TskSystemProperties.h"
+#include "Poco/Util/AbstractConfiguration.h"
+#include <string>
+
+/**
+ * An implementation of TskSystemProperties that uses Poco
+ * AbstractConfiguration class to set and retrieve name/value
+ * pairs from an XML file. Allows system property values to refer 
+ * to other system property values (see the TskSystemProperties class 
+ * description for more details).
+ * 
+ * The XML schema for this is that the name of the value is the tag and
+ * the value is stored in the tag.  Here is an example:
+ * 
+ * \verbatim
+ <?xml version="1.0" encoding="utf-8"?>
+ <TSK_FRAMEWORK_CONFIG>
+   <CONFIG_DIR>#PROG_DIR#/Config</CONFIG_DIR>
+   <MODULE_DIR>#PROG_DIR#/Modules</MODULE_DIR>
+ </TSK_FRAMEWORK_CONFIG>
+ * \endverbatim
+ * You can make up your own tags and the values will be inserted and 
+ * available via the TskSystemProperties service. 
+ */
+class TSK_FRAMEWORK_API TskSystemPropertiesImpl : public TskSystemProperties
+{
+public:
+    /**
+     * Default constructor. The TskSystemPropertiesImpl object must then be 
+     * initialized with a call to one of the initialize() member functions
+     * before the object can be used.
+     */ 
+    TskSystemPropertiesImpl() : m_abstractConfig(static_cast<Poco::Util::AbstractConfiguration*>(NULL)) {}
+
+    /**
+     * Initialize using a configuration file.
+     *
+     * @param configfile Path to the XML file to be used to initialize the
+     * system properties.
+     */
+    void initialize(const std::wstring &configfile);
+
+    /**
+     * Initialize using a configuration file.
+     *
+     * @param configfile Path to the XML file to be used to initialize the
+     * system properties.
+     */
+    void initialize(const std::string &configfile);
+
+    /**
+     * Initialize with no initial system property settings.
+     */
+    void initialize();
+
+private:
+    // Prohibit copying by declaring copy control functions without implementations. 
+    TskSystemPropertiesImpl(const TskSystemPropertiesImpl&);
+    TskSystemPropertiesImpl& operator=(const TskSystemPropertiesImpl&);
+
+    virtual void setProperty(const std::string &name, const std::string &value);
+    virtual std::string getProperty(const std::string &name) const;
+
+    /**
+     * Manages a pointer to a Poco::Util::XMLConfiguration or
+     * Poco::Util::MapConfiguration object that maps names to values. 
+     */ 
+    Poco::AutoPtr<Poco::Util::AbstractConfiguration> m_abstractConfig;
+};
+
+#endif
diff --git a/framework/tsk/framework/utilities/SectorRuns.cpp b/framework/tsk/framework/utilities/SectorRuns.cpp
index 5dc498bebff3b9327c50cb0dbae153f479c23d74..588b4f1019317474c16f104b152265e6a4165aa6 100755
--- a/framework/tsk/framework/utilities/SectorRuns.cpp
+++ b/framework/tsk/framework/utilities/SectorRuns.cpp
@@ -1,139 +1,139 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#include "SectorRuns.h"
-#include "tsk/framework/services/TskServices.h"
-
-/* This class is used to store a list of sector runs.  It is 
- * used to identify which runs contain unallocated data.
- */
-SectorRuns::SectorRuns() :
-    m_runs(NULL),
-    m_numRunsUsed(0),
-    m_numRunsAlloc(0),
-    m_curRun(0)
-{
-    // @@@
-    // Constructor should query the DB
-    // and build a list of IDs to empty sectors.
-    // The list is what will be iterated over.
-}
-
-SectorRuns::~SectorRuns()
-{
-    if (m_runs)
-        free(m_runs);
-    m_runs = NULL;
-}
-
-
-/**
- * Add a run to the list. 
- *
- * @param a_start Starting sector address relative to start of image file
- * @param a_len Length of run in sectors. 
- * @param a_vol_id Volume ID that run is located in
- * @returns -1 on error
- */
-int SectorRuns::addRun(uint64_t a_start, uint64_t a_len, int a_vol_id)
-{
-    if (m_numRunsUsed == m_numRunsAlloc)
-    {
-        m_numRunsAlloc += 64;
-        if ((m_runs = (SectorRun *)realloc(m_runs, m_numRunsAlloc * sizeof(SectorRun))) == NULL)
-        {
-            TskServices::Instance().getLog().logError(L"SectorRuns::addRun - Error allocating sector runs\n");
-            return -1;
-        }
-    }
-    m_runs[m_numRunsUsed].start = a_start;
-    m_runs[m_numRunsUsed].len = a_len;
-    m_runs[m_numRunsUsed].vol_id = a_vol_id;
-    m_numRunsUsed++;
-    return 0;
-}
-
-/** 
- * reset so that the next get() returns data on the first entry.
- */
-void SectorRuns::reset()
-{
-    m_curRun = 0;
-}
-
-/**
- * Advances internal pointer to next run.
- *
- * @returns -1 when at end of list
- */
-int SectorRuns::next()
-{
-    if (m_curRun + 1 == m_numRunsUsed)
-        return -1;
-
-    m_curRun++;
-    return 0;
-}
-
-/**
- * Get the length of the current entry.
- * @returns length of run in sectors
- */
-uint64_t SectorRuns::getDataLen() const
-{
-    if (m_curRun >= m_numRunsUsed)
-        return 0;
-    return m_runs[m_curRun].len;
-}
-
-/**
- * Get starting address of current entry. 
- * @returns start of run in sectors
- */
-uint64_t SectorRuns::getDataStart() const
-{
-    if (m_curRun >= m_numRunsUsed)
-        return 0;
-    return m_runs[m_curRun].start;
-}
-
-/**
- * Get volume id of current entry.
- * @returns volume ID of run in sectors
- */
-int SectorRuns::getVolID() const
-{
-    if (m_curRun >= m_numRunsUsed)
-        return 0;
-    return m_runs[m_curRun].vol_id;
-}
-
-/**
- * Read data in the current entry into the buffer.
- *
- * @param a_offsetSect Sector offset to start reading from (relative to start of current sector run)
- * @param a_lenSect Number of sectors to read
- * @param a_buffer Buffer to read into (must be of size a_len * 512 or larger)
- * @returns -1 on error or number of sectors read
- */
-int SectorRuns::getData(uint64_t a_offsetSect, int a_lenSect, char * a_buffer) const
-{
-    if (m_curRun >= m_numRunsUsed)
-        return -1;
-
-    if (a_offsetSect > m_runs[m_curRun].len) 
-        return -1;
-
-    uint64_t len_toread = a_lenSect;
-    if (a_offsetSect + a_lenSect > m_runs[m_curRun].len)
-        len_toread = m_runs[m_curRun].len - a_offsetSect;
-
-    return TskServices::Instance().getImageFile().getSectorData(m_runs[m_curRun].start + a_offsetSect, len_toread, a_buffer);
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#include "SectorRuns.h"
+#include "tsk/framework/services/TskServices.h"
+
+/* This class is used to store a list of sector runs.  It is 
+ * used to identify which runs contain unallocated data.
+ */
+SectorRuns::SectorRuns() :
+    m_runs(NULL),
+    m_numRunsUsed(0),
+    m_numRunsAlloc(0),
+    m_curRun(0)
+{
+    // @@@
+    // Constructor should query the DB
+    // and build a list of IDs to empty sectors.
+    // The list is what will be iterated over.
+}
+
+SectorRuns::~SectorRuns()
+{
+    if (m_runs)
+        free(m_runs);
+    m_runs = NULL;
+}
+
+
+/**
+ * Add a run to the list. 
+ *
+ * @param a_start Starting sector address relative to start of image file
+ * @param a_len Length of run in sectors. 
+ * @param a_vol_id Volume ID that run is located in
+ * @returns -1 on error
+ */
+int SectorRuns::addRun(uint64_t a_start, uint64_t a_len, int a_vol_id)
+{
+    if (m_numRunsUsed == m_numRunsAlloc)
+    {
+        m_numRunsAlloc += 64;
+        if ((m_runs = (SectorRun *)realloc(m_runs, m_numRunsAlloc * sizeof(SectorRun))) == NULL)
+        {
+            TskServices::Instance().getLog().logError(L"SectorRuns::addRun - Error allocating sector runs\n");
+            return -1;
+        }
+    }
+    m_runs[m_numRunsUsed].start = a_start;
+    m_runs[m_numRunsUsed].len = a_len;
+    m_runs[m_numRunsUsed].vol_id = a_vol_id;
+    m_numRunsUsed++;
+    return 0;
+}
+
+/** 
+ * reset so that the next get() returns data on the first entry.
+ */
+void SectorRuns::reset()
+{
+    m_curRun = 0;
+}
+
+/**
+ * Advances internal pointer to next run.
+ *
+ * @returns -1 when at end of list
+ */
+int SectorRuns::next()
+{
+    if (m_curRun + 1 == m_numRunsUsed)
+        return -1;
+
+    m_curRun++;
+    return 0;
+}
+
+/**
+ * Get the length of the current entry.
+ * @returns length of run in sectors
+ */
+uint64_t SectorRuns::getDataLen() const
+{
+    if (m_curRun >= m_numRunsUsed)
+        return 0;
+    return m_runs[m_curRun].len;
+}
+
+/**
+ * Get starting address of current entry. 
+ * @returns start of run in sectors
+ */
+uint64_t SectorRuns::getDataStart() const
+{
+    if (m_curRun >= m_numRunsUsed)
+        return 0;
+    return m_runs[m_curRun].start;
+}
+
+/**
+ * Get volume id of current entry.
+ * @returns volume ID of run in sectors
+ */
+int SectorRuns::getVolID() const
+{
+    if (m_curRun >= m_numRunsUsed)
+        return 0;
+    return m_runs[m_curRun].vol_id;
+}
+
+/**
+ * Read data in the current entry into the buffer.
+ *
+ * @param a_offsetSect Sector offset to start reading from (relative to start of current sector run)
+ * @param a_lenSect Number of sectors to read
+ * @param a_buffer Buffer to read into (must be of size a_len * 512 or larger)
+ * @returns -1 on error or number of sectors read
+ */
+int SectorRuns::getData(uint64_t a_offsetSect, int a_lenSect, char * a_buffer) const
+{
+    if (m_curRun >= m_numRunsUsed)
+        return -1;
+
+    if (a_offsetSect > m_runs[m_curRun].len) 
+        return -1;
+
+    uint64_t len_toread = a_lenSect;
+    if (a_offsetSect + a_lenSect > m_runs[m_curRun].len)
+        len_toread = m_runs[m_curRun].len - a_offsetSect;
+
+    return TskServices::Instance().getImageFile().getSectorData(m_runs[m_curRun].start + a_offsetSect, len_toread, a_buffer);
+}
diff --git a/framework/tsk/framework/utilities/SectorRuns.h b/framework/tsk/framework/utilities/SectorRuns.h
index 20ffeeb8f944736c8340bc1cc80081ac6bd01fd4..3b1733b65f1e1f52e8386aca0d200f8f5c376c11 100755
--- a/framework/tsk/framework/utilities/SectorRuns.h
+++ b/framework/tsk/framework/utilities/SectorRuns.h
@@ -1,51 +1,51 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#ifndef _OSS_SECTORRUNS_H
-#define _OSS_SECTORRUNS_H
-
-#include "tsk/framework/framework_i.h"
-
-/**
- * Stores a list of runs (which have a starting sector and length).
- * Can be used to store information about a file, unused areas of an
- * image, or ...
- */
-class TSK_FRAMEWORK_API SectorRuns
-{
-public:
-    SectorRuns();
-    virtual ~SectorRuns();
-
-    int addRun(uint64_t start, uint64_t len, int vol_id);
-
-    int next();     // updates the current run; return -1 if none available
-    void reset();
-    int getData(uint64_t offset, int len, char * buffer) const;   // fills buffer with data from current run
-                                                  // returns the number of bytes written
-                                                  // returns -1 if no further data in the run
-    uint64_t getDataLen() const;
-    uint64_t getDataStart() const;
-    int getVolID() const;
-
-private:
-    typedef struct {
-        uint64_t start;
-        uint64_t len;
-        int vol_id;
-    } SectorRun;
-
-    SectorRun *m_runs;
-    unsigned int m_numRunsUsed;
-    unsigned int m_numRunsAlloc;
-    unsigned int m_curRun; 
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#ifndef _OSS_SECTORRUNS_H
+#define _OSS_SECTORRUNS_H
+
+#include "tsk/framework/framework_i.h"
+
+/**
+ * Stores a list of runs (which have a starting sector and length).
+ * Can be used to store information about a file, unused areas of an
+ * image, or ...
+ */
+class TSK_FRAMEWORK_API SectorRuns
+{
+public:
+    SectorRuns();
+    virtual ~SectorRuns();
+
+    int addRun(uint64_t start, uint64_t len, int vol_id);
+
+    int next();     // updates the current run; return -1 if none available
+    void reset();
+    int getData(uint64_t offset, int len, char * buffer) const;   // fills buffer with data from current run
+                                                  // returns the number of bytes written
+                                                  // returns -1 if no further data in the run
+    uint64_t getDataLen() const;
+    uint64_t getDataStart() const;
+    int getVolID() const;
+
+private:
+    typedef struct {
+        uint64_t start;
+        uint64_t len;
+        int vol_id;
+    } SectorRun;
+
+    SectorRun *m_runs;
+    unsigned int m_numRunsUsed;
+    unsigned int m_numRunsAlloc;
+    unsigned int m_curRun; 
+};
+
+#endif
diff --git a/framework/tsk/framework/utilities/TskException.cpp b/framework/tsk/framework/utilities/TskException.cpp
index 46e6636ccddc8411bddc0520792511a03381aab2..a0772086f149e83a6ffb73a57aab6d3ea5381fc8 100755
--- a/framework/tsk/framework/utilities/TskException.cpp
+++ b/framework/tsk/framework/utilities/TskException.cpp
@@ -1,65 +1,65 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskException.cpp
- * Contains definition of Framework exception classes.
- * Based on techniques used in the Poco Exception class.
- */
-
-#include "TskException.h"
-#include <typeinfo>
-
-TskException::TskException(int code) : m_code(code)
-{
-}
-
-TskException::TskException(const std::string &msg, int code) : m_msg(msg), m_code(code)
-{
-}
-
-TskException::TskException(const TskException &e) : std::exception(e), m_msg(e.m_msg), m_code(e.m_code)
-{
-}
-
-TskException::~TskException() throw()
-{
-}
-
-TskException& TskException::operator =(const TskException &e)
-{
-    if (&e != this)
-    {
-        m_msg = e.m_msg;
-        m_code = e.m_code;
-    }
-
-    return *this;
-}
-
-const char * TskException::name() const throw()
-{
-    return "TskException";
-}
-
-const char * TskException::className() const throw()
-{
-    return typeid(*this).name();
-}
-
-const char * TskException::what() const throw()
-{
-    return name();
-}
-
-TSK_IMPLEMENT_EXCEPTION(TskFileException, TskException, "File access error")
-TSK_IMPLEMENT_EXCEPTION(TskNullPointerException, TskException, "NULL pointer")
-TSK_IMPLEMENT_EXCEPTION(TskFileNotFoundException, TskFileException, "File not found")
-TSK_IMPLEMENT_EXCEPTION(TskSystemPropertiesException, TskException, "System property not found")
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskException.cpp
+ * Contains definition of Framework exception classes.
+ * Based on techniques used in the Poco Exception class.
+ */
+
+#include "TskException.h"
+#include <typeinfo>
+
+TskException::TskException(int code) : m_code(code)
+{
+}
+
+TskException::TskException(const std::string &msg, int code) : m_msg(msg), m_code(code)
+{
+}
+
+TskException::TskException(const TskException &e) : std::exception(e), m_msg(e.m_msg), m_code(e.m_code)
+{
+}
+
+TskException::~TskException() throw()
+{
+}
+
+TskException& TskException::operator =(const TskException &e)
+{
+    if (&e != this)
+    {
+        m_msg = e.m_msg;
+        m_code = e.m_code;
+    }
+
+    return *this;
+}
+
+const char * TskException::name() const throw()
+{
+    return "TskException";
+}
+
+const char * TskException::className() const throw()
+{
+    return typeid(*this).name();
+}
+
+const char * TskException::what() const throw()
+{
+    return name();
+}
+
+TSK_IMPLEMENT_EXCEPTION(TskFileException, TskException, "File access error")
+TSK_IMPLEMENT_EXCEPTION(TskNullPointerException, TskException, "NULL pointer")
+TSK_IMPLEMENT_EXCEPTION(TskFileNotFoundException, TskFileException, "File not found")
+TSK_IMPLEMENT_EXCEPTION(TskSystemPropertiesException, TskException, "System property not found")
diff --git a/framework/tsk/framework/utilities/TskException.h b/framework/tsk/framework/utilities/TskException.h
index 8fea8f9826bed716a05edaac6859f3d263230efb..f2d4f344faafe1cec208fe8517edd154c9ef7cf5 100755
--- a/framework/tsk/framework/utilities/TskException.h
+++ b/framework/tsk/framework/utilities/TskException.h
@@ -1,140 +1,140 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskException.h
- * Contains definition of Framework exception classes.
- * Based on techniques used in the Poco Exception class.
- */
-
-#ifndef _TSK_EXCEPTION_H
-#define _TSK_EXCEPTION_H
-
-#include <stdexcept>
-
-#include "tsk/framework/framework_i.h"
-
-/**
- * Framework exception class
- */
-class TSK_FRAMEWORK_API TskException : public std::exception
-{
-public:
-    /// Create an exception using the supplied message.
-    TskException(const std::string& msg, int code = 0);
-
-    /// Copy Constructor
-    TskException(const TskException& e);
-
-    /// Destructor
-    ~TskException() throw ();
-
-    /// Assignment operator
-    TskException& operator= (const TskException& e);
-
-    /// Returns a static string describing the exception.
-    virtual const char * name() const throw();
-
-    /// Returns the name of the exception class.
-    virtual const char * className() const throw();
-
-    /// Returns a static string describing the exception.
-    /// Same as name(), but for compatibility with std::exception.
-    virtual const char * what() const throw();
-
-    /// Returns the message text.
-    const std::string& message() const;
-
-    /// Returns the exception code.
-    int code() const;
-
-protected:
-    /// Default constructor.
-    TskException(int code = 0);
-
-    /// Sets the message for the exception.
-    void message(const std::string& msg);
-
-private:
-    std::string m_msg;
-    int m_code;
-};
-
-inline const std::string& TskException::message() const
-{
-    return m_msg;
-}
-
-inline void TskException::message(const std::string &msg)
-{
-    m_msg = msg;
-}
-
-inline int TskException::code() const
-{
-    return m_code;
-}
-
-//
-// Macros for quickly declaring and implementing exception classes.
-// Unfortunately, we cannot use a template here because character
-// pointers (which we need for specifying the exception name)
-// are not allowed as template arguments.
-//
-#define TSK_DECLARE_EXCEPTION(CLS, BASE) \
-	class TSK_FRAMEWORK_API CLS: public BASE									    \
-	{																				\
-	public:																			\
-		CLS(int code = 0);															\
-		CLS(const std::string& msg, int code = 0);									\
-		CLS(const CLS& exc);														\
-		~CLS() throw();																\
-		CLS& operator = (const CLS& exc);											\
-		const char* name() const throw();											\
-		const char* className() const throw();										\
-	};
-
-
-#define TSK_IMPLEMENT_EXCEPTION(CLS, BASE, NAME)													\
-	CLS::CLS(int code): BASE(code)																	\
-	{																								\
-	}																								\
-	CLS::CLS(const std::string& msg, int code): BASE(msg, code)										\
-	{																								\
-	}																								\
-	CLS::CLS(const CLS& exc): BASE(exc)																\
-	{																								\
-	}																								\
-	CLS::~CLS() throw()																				\
-	{																								\
-	}																								\
-	CLS& CLS::operator = (const CLS& exc)															\
-	{																								\
-		BASE::operator = (exc);																		\
-		return *this;																				\
-	}																								\
-	const char* CLS::name() const throw()	           												\
-	{																								\
-		return NAME;																				\
-	}																								\
-	const char* CLS::className() const throw()			    										\
-	{																								\
-		return typeid(*this).name();																\
-	}																								\
-
-//
-// Standard exception classes
-//
-TSK_DECLARE_EXCEPTION(TskFileException, TskException)
-TSK_DECLARE_EXCEPTION(TskNullPointerException, TskException)
-TSK_DECLARE_EXCEPTION(TskFileNotFoundException, TskFileException)
-TSK_DECLARE_EXCEPTION(TskSystemPropertiesException, TskException)
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskException.h
+ * Contains definition of Framework exception classes.
+ * Based on techniques used in the Poco Exception class.
+ */
+
+#ifndef _TSK_EXCEPTION_H
+#define _TSK_EXCEPTION_H
+
+#include <stdexcept>
+
+#include "tsk/framework/framework_i.h"
+
+/**
+ * Framework exception class
+ */
+class TSK_FRAMEWORK_API TskException : public std::exception
+{
+public:
+    /// Create an exception using the supplied message.
+    TskException(const std::string& msg, int code = 0);
+
+    /// Copy Constructor
+    TskException(const TskException& e);
+
+    /// Destructor
+    ~TskException() throw ();
+
+    /// Assignment operator
+    TskException& operator= (const TskException& e);
+
+    /// Returns a static string describing the exception.
+    virtual const char * name() const throw();
+
+    /// Returns the name of the exception class.
+    virtual const char * className() const throw();
+
+    /// Returns a static string describing the exception.
+    /// Same as name(), but for compatibility with std::exception.
+    virtual const char * what() const throw();
+
+    /// Returns the message text.
+    const std::string& message() const;
+
+    /// Returns the exception code.
+    int code() const;
+
+protected:
+    /// Default constructor.
+    TskException(int code = 0);
+
+    /// Sets the message for the exception.
+    void message(const std::string& msg);
+
+private:
+    std::string m_msg;
+    int m_code;
+};
+
+inline const std::string& TskException::message() const
+{
+    return m_msg;
+}
+
+inline void TskException::message(const std::string &msg)
+{
+    m_msg = msg;
+}
+
+inline int TskException::code() const
+{
+    return m_code;
+}
+
+//
+// Macros for quickly declaring and implementing exception classes.
+// Unfortunately, we cannot use a template here because character
+// pointers (which we need for specifying the exception name)
+// are not allowed as template arguments.
+//
+#define TSK_DECLARE_EXCEPTION(CLS, BASE) \
+	class TSK_FRAMEWORK_API CLS: public BASE									    \
+	{																				\
+	public:																			\
+		CLS(int code = 0);															\
+		CLS(const std::string& msg, int code = 0);									\
+		CLS(const CLS& exc);														\
+		~CLS() throw();																\
+		CLS& operator = (const CLS& exc);											\
+		const char* name() const throw();											\
+		const char* className() const throw();										\
+	};
+
+
+#define TSK_IMPLEMENT_EXCEPTION(CLS, BASE, NAME)													\
+	CLS::CLS(int code): BASE(code)																	\
+	{																								\
+	}																								\
+	CLS::CLS(const std::string& msg, int code): BASE(msg, code)										\
+	{																								\
+	}																								\
+	CLS::CLS(const CLS& exc): BASE(exc)																\
+	{																								\
+	}																								\
+	CLS::~CLS() throw()																				\
+	{																								\
+	}																								\
+	CLS& CLS::operator = (const CLS& exc)															\
+	{																								\
+		BASE::operator = (exc);																		\
+		return *this;																				\
+	}																								\
+	const char* CLS::name() const throw()	           												\
+	{																								\
+		return NAME;																				\
+	}																								\
+	const char* CLS::className() const throw()			    										\
+	{																								\
+		return typeid(*this).name();																\
+	}																								\
+
+//
+// Standard exception classes
+//
+TSK_DECLARE_EXCEPTION(TskFileException, TskException)
+TSK_DECLARE_EXCEPTION(TskNullPointerException, TskException)
+TSK_DECLARE_EXCEPTION(TskFileNotFoundException, TskFileException)
+TSK_DECLARE_EXCEPTION(TskSystemPropertiesException, TskException)
+
+#endif
diff --git a/framework/tsk/framework/utilities/TskModuleDev.h b/framework/tsk/framework/utilities/TskModuleDev.h
index bb4c4d58b27a71fd17021746693f286137e8c875..f5e23486a73a74dd4af0fd3b6cdbcbd2c845867f 100644
--- a/framework/tsk/framework/utilities/TskModuleDev.h
+++ b/framework/tsk/framework/utilities/TskModuleDev.h
@@ -1,71 +1,71 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#ifndef _TSK_MODULEDEV_H
-#define _TSK_MODULEDEV_H
-
-/** 
- * Include this .h file when writing a dynamic link library
- */
-
-#include "tsk/framework/TskVersionInfo.h"
-#include "tsk/framework/services/TskServices.h"
-#include "tsk/framework/utilities/TskUtilities.h"
-#include "tsk/framework/pipeline/TskModule.h"
-
-#if defined(_WIN32)
-#if !defined(TSK_MODULE_IMPORT)
-    #define TSK_MODULE_EXPORT __declspec(dllexport)
-#else
-    #define TSK_MODULE_EXPORT __declspec(dllimport)
-#endif
-#else
-    #define TSK_MODULE_EXPORT
-#endif
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-    /**
-     * Returns the compiler that the module was built with.
-     */
-    TSK_MODULE_EXPORT TskVersionInfo::Compiler getCompiler()
-    {
-        return TskVersionInfo::getCompiler();
-    }
-
-    /**
-     * Returns the version of the compiler that the module was built with.
-     */
-    TSK_MODULE_EXPORT int getCompilerVersion()
-    {
-        return TskVersionInfo::getCompilerVersion();
-    }
-
-    /**
-     * Returns the version of the TSK framework that the module was built against.
-     */
-    TSK_MODULE_EXPORT int getFrameWorkVersion()
-    {
-        return TskVersionInfo::getFrameworkVersion();
-    }
-
-    /**
-     * Returns whether this is a debug or release build of the module.
-     */
-    TSK_MODULE_EXPORT TskVersionInfo::BuildType getBuildType()
-    {
-        return TskVersionInfo::getBuildType();
-    }
-#ifdef __cplusplus
-}
-#endif
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#ifndef _TSK_MODULEDEV_H
+#define _TSK_MODULEDEV_H
+
+/** 
+ * Include this .h file when writing a dynamic link library
+ */
+
+#include "tsk/framework/TskVersionInfo.h"
+#include "tsk/framework/services/TskServices.h"
+#include "tsk/framework/utilities/TskUtilities.h"
+#include "tsk/framework/pipeline/TskModule.h"
+
+#if defined(_WIN32)
+#if !defined(TSK_MODULE_IMPORT)
+    #define TSK_MODULE_EXPORT __declspec(dllexport)
+#else
+    #define TSK_MODULE_EXPORT __declspec(dllimport)
+#endif
+#else
+    #define TSK_MODULE_EXPORT
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+    /**
+     * Returns the compiler that the module was built with.
+     */
+    TSK_MODULE_EXPORT TskVersionInfo::Compiler getCompiler()
+    {
+        return TskVersionInfo::getCompiler();
+    }
+
+    /**
+     * Returns the version of the compiler that the module was built with.
+     */
+    TSK_MODULE_EXPORT int getCompilerVersion()
+    {
+        return TskVersionInfo::getCompilerVersion();
+    }
+
+    /**
+     * Returns the version of the TSK framework that the module was built against.
+     */
+    TSK_MODULE_EXPORT int getFrameWorkVersion()
+    {
+        return TskVersionInfo::getFrameworkVersion();
+    }
+
+    /**
+     * Returns whether this is a debug or release build of the module.
+     */
+    TSK_MODULE_EXPORT TskVersionInfo::BuildType getBuildType()
+    {
+        return TskVersionInfo::getBuildType();
+    }
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/framework/tsk/framework/utilities/TskUtilities.cpp b/framework/tsk/framework/utilities/TskUtilities.cpp
index 4083bca6e026fad2e831b22ac87e093be100a4a4..25023fa925e60f8e7b509ae36688a3dcee38e3d6 100755
--- a/framework/tsk/framework/utilities/TskUtilities.cpp
+++ b/framework/tsk/framework/utilities/TskUtilities.cpp
@@ -1,216 +1,216 @@
-/*
- *
- *  The Sleuth Kit
- *
- *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- *  reserved.
- *
- *  This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskUtilities.cpp
- * Contains common utility methods.
- */
-
-// TSK and TSK Framework includes
-#include "TskUtilities.h"
-#include "tsk/framework/services/TskServices.h"
-#include "tsk/base/tsk_base_i.h"
-
-// Poco Includes
-#include "Poco/UnicodeConverter.h"
-#include "Poco/Net/DNS.h"
-#include "Poco/Net/HostEntry.h"
-#include "Poco/Net/NetException.h"
-#include "Poco/Path.h"
-
-// C/C++ library includes
-#include <sstream>
-
-#if defined _WIN32 || defined _WIN64
-#include <Windows.h>
-#endif
-
-#ifdef __APPLE__
-#include <mach-o/dyld.h>
-#endif
-
-/**
- * Convert a given UTF16 string to UTF8
- * @param utf16Str The UTF16 encoded string.
- * @returns A UTF8 encoded version of the input string.
- */
-std::string TskUtilities::toUTF8(const std::wstring &utf16Str)
-{
-    std::string utf8Str;
-    char *utf8Buf;
-    int utf8Size = utf16Str.size() * 5 + 1;
-    utf8Buf = new char[utf8Size];
-    UTF8 *ptr8;
-    wchar_t *ptr16;
-
-    ptr8 = (UTF8 *) utf8Buf;
-    ptr16 = (wchar_t *) utf16Str.c_str();
-
-    TSKConversionResult retval =
-        tsk_UTF16WtoUTF8_lclorder((const wchar_t **)&ptr16, 
-                                  (wchar_t *)&ptr16[utf16Str.size()+1],
-                                  &ptr8,
-                                  (UTF8 *) ((uintptr_t) ptr8 + utf8Size * sizeof(UTF8)), 
-                                  TSKstrictConversion);
-    if (retval != TSKconversionOK) 
-    {
-        return "";
-    }
-    utf8Str.assign(utf8Buf);
-    delete [] utf8Buf;
-    return utf8Str;
-}
-
-/**
- * Convert a given UTF8 string to UTF16
- * @param utf8Str The UTF8 encoded string.
- * @returns A UTF16 encoded version of the input string.
- */
-std::wstring TskUtilities::toUTF16(const std::string &utf8Str)
-{
-    std::wstring utf16Str;
-    wchar_t *utf16Buf;
-    int utf16Size = utf8Str.size() + 1;
-    utf16Buf = new wchar_t[utf16Size];
-    UTF8 *ptr8;
-    wchar_t *ptr16;
-
-    ptr16 = (wchar_t *) utf16Buf;
-    ptr8 = (UTF8 *) utf8Str.data();
-
-    TSKConversionResult retval =
-        tsk_UTF8toUTF16W((const UTF8 **) &ptr8, 
-                        (UTF8 *) & utf8Str.data()[utf8Str.size()], 
-                        &ptr16,
-                        (wchar_t *) ((uintptr_t) ptr16 + utf16Size * sizeof(wchar_t)), 
-                        TSKstrictConversion);
-    if (retval != TSKconversionOK) 
-    {
-        return L"";
-    }
-    utf16Str.assign(utf16Buf, ptr16 - utf16Buf);
-    delete [] utf16Buf;
-    return utf16Str;
-}
-
-void TskUtilities::cleanUTF8(char *buf)
-{
-    tsk_cleanupUTF8(buf, '^'); 
-}
-
-/**
- * Get the IP address for the given host name.
- * @param host The name of the host who's IP address you want.
- * @param host_ip This string will be filled in with the IP address.
- * @returns true on success, false otherwise.
- */
-bool TskUtilities::getHostIP(const std::string& host, std::string & host_ip)
-{
-    try
-    {
-        Poco::Net::HostEntry hostEntry = Poco::Net::DNS::hostByName(host);
-
-        if (hostEntry.addresses().empty())
-        {
-            LOGERROR(L"TskUtilities::getHostIP - No addresses found for host.\n");
-            return false;
-        }
-
-        // Take the first address.
-        host_ip = hostEntry.addresses()[0].toString();
-        return true;
-    }
-    catch (Poco::Net::NetException& netEx)
-    {
-        std::wstringstream msg;
-        msg << L"TskUtilities::getHostIP - Error resolving host name: " << host.c_str() 
-            << L" : " << netEx.what() << std::endl;
-        LOGERROR(msg.str());
-        return false;
-    }
-}
-
-/** Get the path of the directory where the currently executing program is 
- * installed.  
- *
- * @returns The path of the program directory.
- */
-std::string TskUtilities::getProgDir()
-{
-#ifdef TSK_WIN32
-    wchar_t progPath[256];
-    wchar_t fullPath[256];
-    HINSTANCE hInstance = GetModuleHandleW(NULL);
-
-    GetModuleFileNameW(hInstance, fullPath, 256);
-    int i = wcslen(fullPath)-1;
-    for (; i > 0; i--) {
-        if (i > 256)
-            break;
-
-        if (fullPath[i] == '\\') {
-            wcsncpy_s(progPath, fullPath, i+1);
-            break;
-        }
-    }
-
-    std::wstring progPathNoNull(progPath, i+1);
-    return TskUtilities::toUTF8(progPathNoNull);
-
-#elif __APPLE__
-    char path[MAXPATHLEN+1];
-    uint32_t path_len = MAXPATHLEN;
-    if (_NSGetExecutablePath(path, &path_len) == 0) {
-        Poco::Path p(path);
-        return p.makeParent().toString();
-    }
-    return std::string("");
-#else // NOT TSK_WIN32
-    int size = 256;
-    char* buf = 0;
-    int ret = 0;
- 
-    while (1) {
-        buf = (char*)realloc(buf, size*sizeof(char));
-        if (!buf)
-            return std::string("");
-        ret = readlink("/proc/self/exe", buf, size);
-        if (ret < 0) {
-            free(buf);
-            return std::string("");
-        }
-        if (ret < size) {
-            std::string s(buf, ret);
-            free(buf);
-            Poco::Path path(s);
-            return path.makeParent().toString();
-        }
-        size *= 2;
-    }
-    return std::string("");
-#endif // NOT TSK_WIN32
-}
-
-/** Strip matching leading and trailing double quotes from the input str.
- * If there is no matching quotes, the input str is returned.
- * @returns String without matching leading and trailing double quote.
- */
-std::string TskUtilities::stripQuotes(const std::string& str)
-{
-    if (str.length() == 0)
-        return str;
-    std::string outStr;
-    if (str[0] == '"' && str[str.length()-1] == '"') {
-        outStr = str.substr(1, str.length()-2);
-    } else
-        outStr = str;
-    return outStr;
-}
+/*
+ *
+ *  The Sleuth Kit
+ *
+ *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ *  reserved.
+ *
+ *  This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskUtilities.cpp
+ * Contains common utility methods.
+ */
+
+// TSK and TSK Framework includes
+#include "TskUtilities.h"
+#include "tsk/framework/services/TskServices.h"
+#include "tsk/base/tsk_base_i.h"
+
+// Poco Includes
+#include "Poco/UnicodeConverter.h"
+#include "Poco/Net/DNS.h"
+#include "Poco/Net/HostEntry.h"
+#include "Poco/Net/NetException.h"
+#include "Poco/Path.h"
+
+// C/C++ library includes
+#include <sstream>
+
+#if defined _WIN32 || defined _WIN64
+#include <Windows.h>
+#endif
+
+#ifdef __APPLE__
+#include <mach-o/dyld.h>
+#endif
+
+/**
+ * Convert a given UTF16 string to UTF8
+ * @param utf16Str The UTF16 encoded string.
+ * @returns A UTF8 encoded version of the input string.
+ */
+std::string TskUtilities::toUTF8(const std::wstring &utf16Str)
+{
+    std::string utf8Str;
+    char *utf8Buf;
+    int utf8Size = utf16Str.size() * 5 + 1;
+    utf8Buf = new char[utf8Size];
+    UTF8 *ptr8;
+    wchar_t *ptr16;
+
+    ptr8 = (UTF8 *) utf8Buf;
+    ptr16 = (wchar_t *) utf16Str.c_str();
+
+    TSKConversionResult retval =
+        tsk_UTF16WtoUTF8_lclorder((const wchar_t **)&ptr16, 
+                                  (wchar_t *)&ptr16[utf16Str.size()+1],
+                                  &ptr8,
+                                  (UTF8 *) ((uintptr_t) ptr8 + utf8Size * sizeof(UTF8)), 
+                                  TSKstrictConversion);
+    if (retval != TSKconversionOK) 
+    {
+        return "";
+    }
+    utf8Str.assign(utf8Buf);
+    delete [] utf8Buf;
+    return utf8Str;
+}
+
+/**
+ * Convert a given UTF8 string to UTF16
+ * @param utf8Str The UTF8 encoded string.
+ * @returns A UTF16 encoded version of the input string.
+ */
+std::wstring TskUtilities::toUTF16(const std::string &utf8Str)
+{
+    std::wstring utf16Str;
+    wchar_t *utf16Buf;
+    int utf16Size = utf8Str.size() + 1;
+    utf16Buf = new wchar_t[utf16Size];
+    UTF8 *ptr8;
+    wchar_t *ptr16;
+
+    ptr16 = (wchar_t *) utf16Buf;
+    ptr8 = (UTF8 *) utf8Str.data();
+
+    TSKConversionResult retval =
+        tsk_UTF8toUTF16W((const UTF8 **) &ptr8, 
+                        (UTF8 *) & utf8Str.data()[utf8Str.size()], 
+                        &ptr16,
+                        (wchar_t *) ((uintptr_t) ptr16 + utf16Size * sizeof(wchar_t)), 
+                        TSKstrictConversion);
+    if (retval != TSKconversionOK) 
+    {
+        return L"";
+    }
+    utf16Str.assign(utf16Buf, ptr16 - utf16Buf);
+    delete [] utf16Buf;
+    return utf16Str;
+}
+
+void TskUtilities::cleanUTF8(char *buf)
+{
+    tsk_cleanupUTF8(buf, '^'); 
+}
+
+/**
+ * Get the IP address for the given host name.
+ * @param host The name of the host who's IP address you want.
+ * @param host_ip This string will be filled in with the IP address.
+ * @returns true on success, false otherwise.
+ */
+bool TskUtilities::getHostIP(const std::string& host, std::string & host_ip)
+{
+    try
+    {
+        Poco::Net::HostEntry hostEntry = Poco::Net::DNS::hostByName(host);
+
+        if (hostEntry.addresses().empty())
+        {
+            LOGERROR(L"TskUtilities::getHostIP - No addresses found for host.\n");
+            return false;
+        }
+
+        // Take the first address.
+        host_ip = hostEntry.addresses()[0].toString();
+        return true;
+    }
+    catch (Poco::Net::NetException& netEx)
+    {
+        std::wstringstream msg;
+        msg << L"TskUtilities::getHostIP - Error resolving host name: " << host.c_str() 
+            << L" : " << netEx.what() << std::endl;
+        LOGERROR(msg.str());
+        return false;
+    }
+}
+
+/** Get the path of the directory where the currently executing program is 
+ * installed.  
+ *
+ * @returns The path of the program directory.
+ */
+std::string TskUtilities::getProgDir()
+{
+#ifdef TSK_WIN32
+    wchar_t progPath[256];
+    wchar_t fullPath[256];
+    HINSTANCE hInstance = GetModuleHandleW(NULL);
+
+    GetModuleFileNameW(hInstance, fullPath, 256);
+    int i = wcslen(fullPath)-1;
+    for (; i > 0; i--) {
+        if (i > 256)
+            break;
+
+        if (fullPath[i] == '\\') {
+            wcsncpy_s(progPath, fullPath, i+1);
+            break;
+        }
+    }
+
+    std::wstring progPathNoNull(progPath, i+1);
+    return TskUtilities::toUTF8(progPathNoNull);
+
+#elif __APPLE__
+    char path[MAXPATHLEN+1];
+    uint32_t path_len = MAXPATHLEN;
+    if (_NSGetExecutablePath(path, &path_len) == 0) {
+        Poco::Path p(path);
+        return p.makeParent().toString();
+    }
+    return std::string("");
+#else // NOT TSK_WIN32
+    int size = 256;
+    char* buf = 0;
+    int ret = 0;
+ 
+    while (1) {
+        buf = (char*)realloc(buf, size*sizeof(char));
+        if (!buf)
+            return std::string("");
+        ret = readlink("/proc/self/exe", buf, size);
+        if (ret < 0) {
+            free(buf);
+            return std::string("");
+        }
+        if (ret < size) {
+            std::string s(buf, ret);
+            free(buf);
+            Poco::Path path(s);
+            return path.makeParent().toString();
+        }
+        size *= 2;
+    }
+    return std::string("");
+#endif // NOT TSK_WIN32
+}
+
+/** Strip matching leading and trailing double quotes from the input str.
+ * If there is no matching quotes, the input str is returned.
+ * @returns String without matching leading and trailing double quote.
+ */
+std::string TskUtilities::stripQuotes(const std::string& str)
+{
+    if (str.length() == 0)
+        return str;
+    std::string outStr;
+    if (str[0] == '"' && str[str.length()-1] == '"') {
+        outStr = str.substr(1, str.length()-2);
+    } else
+        outStr = str;
+    return outStr;
+}
diff --git a/framework/tsk/framework/utilities/TskUtilities.h b/framework/tsk/framework/utilities/TskUtilities.h
index d0d7c43f4d302637b82edbdc40ac5375261870f1..ac357b3292a57df586912e510e7a8e88fa58de78 100755
--- a/framework/tsk/framework/utilities/TskUtilities.h
+++ b/framework/tsk/framework/utilities/TskUtilities.h
@@ -1,39 +1,39 @@
-/*
- *
- *  The Sleuth Kit
- *
- *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- *  reserved.
- *
- *  This software is distributed under the Common Public License 1.0
- */
-
-/**
- * \file TskUtilities.h
- * Contains common utility methods.
- */
-
-#ifndef _TSK_UTILITIES_H
-#define _TSK_UTILITIES_H
-
-#include <string>
-
-#include "tsk/framework/framework_i.h"
-
-/**
- * Contains commonly needed utility methods.  Refer to the poco library
- * for other commonly needed methods.
- */
-class TSK_FRAMEWORK_API TskUtilities
-{
-public:
-    static std::string toUTF8(const std::wstring& utf16Str);
-    static std::wstring toUTF16(const std::string& utf8Str);
-    static void cleanUTF8(char *buf);
-    static bool getHostIP(const std::string& host, std::string& host_ip);
-    static std::string getProgDir();
-    static std::string stripQuotes(const std::string& str);
-};
-
-#endif
+/*
+ *
+ *  The Sleuth Kit
+ *
+ *  Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ *  Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ *  reserved.
+ *
+ *  This software is distributed under the Common Public License 1.0
+ */
+
+/**
+ * \file TskUtilities.h
+ * Contains common utility methods.
+ */
+
+#ifndef _TSK_UTILITIES_H
+#define _TSK_UTILITIES_H
+
+#include <string>
+
+#include "tsk/framework/framework_i.h"
+
+/**
+ * Contains commonly needed utility methods.  Refer to the poco library
+ * for other commonly needed methods.
+ */
+class TSK_FRAMEWORK_API TskUtilities
+{
+public:
+    static std::string toUTF8(const std::wstring& utf16Str);
+    static std::wstring toUTF16(const std::string& utf8Str);
+    static void cleanUTF8(char *buf);
+    static bool getHostIP(const std::string& host, std::string& host_ip);
+    static std::string getProgDir();
+    static std::string stripQuotes(const std::string& str);
+};
+
+#endif
diff --git a/framework/tsk/framework/utilities/UnallocRun.cpp b/framework/tsk/framework/utilities/UnallocRun.cpp
index d54ddedc99e15fa615b4f8a4ce838b5358a77ef8..285c5a2e41fdd6404ccd5363afca9fba1ef162ac 100755
--- a/framework/tsk/framework/utilities/UnallocRun.cpp
+++ b/framework/tsk/framework/utilities/UnallocRun.cpp
@@ -1,59 +1,59 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#include "UnallocRun.h"
-
-/**
- * Stores mapping between the unallocated images that are used for carving and
- * the original images.
- * @param a_volId Volume ID in original image that sector run is located in.
- * @param a_unallocImgId ID of the unallocated image
- * @param a_unallocStart Starting sector in unallocated image
- * @param a_length Number of sectors in run
- * @param a_allocStart Starting sector in original image
- */
-UnallocRun::UnallocRun(int a_volId, int a_unallocImgId, uint64_t a_unallocStart,
-                       uint64_t a_length, uint64_t a_allocStart) :
-        m_volId(a_volId),
-        m_unallocImgId(a_unallocImgId),
-        m_unallocStart(a_unallocStart),
-        m_length(a_length),
-        m_origStart(a_allocStart)
-{
-}
-
-UnallocRun::~UnallocRun()
-{
-}
-
-int UnallocRun::getVolId() const
-{
-    return m_volId;
-}
-
-int UnallocRun::getUnallocImgId() const
-{
-    return m_unallocImgId;
-}
-
-uint64_t UnallocRun::getUnallocStart() const
-{
-    return m_unallocStart;
-}
-
-uint64_t UnallocRun::getLength() const
-{
-    return m_length;
-}
-
-uint64_t UnallocRun::getAllocStart() const
-{
-    return m_origStart;
-}
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#include "UnallocRun.h"
+
+/**
+ * Stores mapping between the unallocated images that are used for carving and
+ * the original images.
+ * @param a_volId Volume ID in original image that sector run is located in.
+ * @param a_unallocImgId ID of the unallocated image
+ * @param a_unallocStart Starting sector in unallocated image
+ * @param a_length Number of sectors in run
+ * @param a_allocStart Starting sector in original image
+ */
+UnallocRun::UnallocRun(int a_volId, int a_unallocImgId, uint64_t a_unallocStart,
+                       uint64_t a_length, uint64_t a_allocStart) :
+        m_volId(a_volId),
+        m_unallocImgId(a_unallocImgId),
+        m_unallocStart(a_unallocStart),
+        m_length(a_length),
+        m_origStart(a_allocStart)
+{
+}
+
+UnallocRun::~UnallocRun()
+{
+}
+
+int UnallocRun::getVolId() const
+{
+    return m_volId;
+}
+
+int UnallocRun::getUnallocImgId() const
+{
+    return m_unallocImgId;
+}
+
+uint64_t UnallocRun::getUnallocStart() const
+{
+    return m_unallocStart;
+}
+
+uint64_t UnallocRun::getLength() const
+{
+    return m_length;
+}
+
+uint64_t UnallocRun::getAllocStart() const
+{
+    return m_origStart;
+}
diff --git a/framework/tsk/framework/utilities/UnallocRun.h b/framework/tsk/framework/utilities/UnallocRun.h
index 95177a0080417f941d08fb8e521989a6749dce1a..87c3d6281d02af8bbf17251ea7a2cf85aa512b2f 100755
--- a/framework/tsk/framework/utilities/UnallocRun.h
+++ b/framework/tsk/framework/utilities/UnallocRun.h
@@ -1,42 +1,42 @@
-/*
- * The Sleuth Kit
- *
- * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
- * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
- * reserved.
- *
- * This software is distributed under the Common Public License 1.0
- */
-
-#ifndef _OSS_UNALLOCRUN_H
-#define _OSS_UNALLOCRUN_H
-
-#include "tsk/framework/framework_i.h"
-
-/**
- * Stores information that can map a region in the original disk image
- * to a region in one of the chunks of unallocated space (as created by
- * the CarvePrep implementation. 
- */
-class TSK_FRAMEWORK_API UnallocRun
-{
-public:
-    UnallocRun(int a_volId, int a_unallocImgId, uint64_t a_unallocStart,
-        uint64_t a_length, uint64_t a_allocStart);
-    ~UnallocRun();
-
-    int getVolId() const;
-    int getUnallocImgId() const;
-    uint64_t getUnallocStart() const;
-    uint64_t getLength() const;
-    uint64_t getAllocStart() const;
-
-private:
-    int m_volId;
-    int m_unallocImgId;
-    uint64_t m_unallocStart;
-    uint64_t m_length;
-    uint64_t m_origStart;
-};
-
-#endif
+/*
+ * The Sleuth Kit
+ *
+ * Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+ * Copyright (c) 2010-2012 Basis Technology Corporation. All Rights
+ * reserved.
+ *
+ * This software is distributed under the Common Public License 1.0
+ */
+
+#ifndef _OSS_UNALLOCRUN_H
+#define _OSS_UNALLOCRUN_H
+
+#include "tsk/framework/framework_i.h"
+
+/**
+ * Stores information that can map a region in the original disk image
+ * to a region in one of the chunks of unallocated space (as created by
+ * the CarvePrep implementation. 
+ */
+class TSK_FRAMEWORK_API UnallocRun
+{
+public:
+    UnallocRun(int a_volId, int a_unallocImgId, uint64_t a_unallocStart,
+        uint64_t a_length, uint64_t a_allocStart);
+    ~UnallocRun();
+
+    int getVolId() const;
+    int getUnallocImgId() const;
+    uint64_t getUnallocStart() const;
+    uint64_t getLength() const;
+    uint64_t getAllocStart() const;
+
+private:
+    int m_volId;
+    int m_unallocImgId;
+    uint64_t m_unallocStart;
+    uint64_t m_length;
+    uint64_t m_origStart;
+};
+
+#endif
diff --git a/man/tsk_comparedir.1 b/man/tsk_comparedir.1
index 66d6451f82cfd969b91265018db3e9400f66bc17..12b89363bb257abf03c69a5f1e5428247706698d 100644
--- a/man/tsk_comparedir.1
+++ b/man/tsk_comparedir.1
@@ -1,59 +1,59 @@
-.TH TSK_COMPAREDIR 1 
-.SH NAME
-tsk_comparedir - compare the contents of a directory with the contents of an image or local device. 
-.SH SYNOPSIS
-.B tsk_comparedir [-vV] [-n
-.I start_inum
-.B ] [ -f
-.I fstype
-.B ] [ -i
-.I imgtype
-.B ] [ -b
-.I dev_sector_size
-.B ] [ -o
-.I sector_offset
-.B ]
-.I image [images] comparison_directory
-.SH DESCRIPTION
-.B tsk_comparedir 
-compares the contents of
-.I image
-to the contents of
-.I comparison_directory.
-This can be useful for detecting rootkits and when testing.  Rootkits can be detected by comparing the contents of a local directory and a local raw device.  The rootkits typically don't hide data when it is read directly from the raw device. 
-
-The arguments are as follows:
-.IP "-o sector_offset"
-Sector offset for a partition in the image or device to compare with.
-.IP "-n start_inum"
-Starting inum for a directory in the image to start the comparison at.
-.IP -v
-verbose output to stderr
-.IP -V
-Print version
+.TH TSK_COMPAREDIR 1 
+.SH NAME
+tsk_comparedir - compare the contents of a directory with the contents of an image or local device. 
+.SH SYNOPSIS
+.B tsk_comparedir [-vV] [-n
+.I start_inum
+.B ] [ -f
+.I fstype
+.B ] [ -i
+.I imgtype
+.B ] [ -b
+.I dev_sector_size
+.B ] [ -o
+.I sector_offset
+.B ]
+.I image [images] comparison_directory
+.SH DESCRIPTION
+.B tsk_comparedir 
+compares the contents of
+.I image
+to the contents of
+.I comparison_directory.
+This can be useful for detecting rootkits and when testing.  Rootkits can be detected by comparing the contents of a local directory and a local raw device.  The rootkits typically don't hide data when it is read directly from the raw device. 
+
+The arguments are as follows:
+.IP "-o sector_offset"
+Sector offset for a partition in the image or device to compare with.
+.IP "-n start_inum"
+Starting inum for a directory in the image to start the comparison at.
+.IP -v
+verbose output to stderr
+.IP -V
+Print version
 .IP "-f fstype"
 Specify the file system type.
 Use '\-f list' to list the supported file system types.
 If not given, autodetection methods are used.
-.IP "-i imgtype"
+.IP "-i imgtype"
 The format of the image file, such as raw.
 Use '\-i list' to list the supported types.
-If not given, autodetection methods are used.
-.IP "-b dev_sector_size"
-The size (in bytes) of the device sectors.
-If not given, autodetection methods are used.
+If not given, autodetection methods are used.
+.IP "-b dev_sector_size"
+The size (in bytes) of the device sectors.
+If not given, autodetection methods are used.
 .IP "image [images]"
 The disk or partition image to read, whose format is given with '\-i'.
 Multiple image file names can be given if the image is split into multiple segments.
 If only one image file is given, and its name is the first in a sequence (e.g., as indicated by ending in '.001'), subsequent image segments will be included automatically.
-
-.SH EXAMPLES
-To compare the directories in image.dd to those in directory:
-
-	# tsk_comparedir ./image.dd ./directory
-
-
-.SH AUTHOR
-Brian Carrier <carrier at sleuthkit dot org>
-
-Send documentation updates to <doc-updates at sleuthkit dot org>
+
+.SH EXAMPLES
+To compare the directories in image.dd to those in directory:
+
+	# tsk_comparedir ./image.dd ./directory
+
+
+.SH AUTHOR
+Brian Carrier <carrier at sleuthkit dot org>
+
+Send documentation updates to <doc-updates at sleuthkit dot org>
diff --git a/man/tsk_gettimes.1 b/man/tsk_gettimes.1
index a015d153f4b826c6a5cf207be05312ad10e6544a..eb831cd7d4fd8d887af7891742ec49686ce05f0f 100644
--- a/man/tsk_gettimes.1
+++ b/man/tsk_gettimes.1
@@ -1,62 +1,62 @@
-.TH TSK_GETTIMES 1 
-.SH NAME
-tsk_gettimes - Collect MAC times from a disk image into a body file.
-.SH SYNOPSIS
+.TH TSK_GETTIMES 1 
+.SH NAME
+tsk_gettimes - Collect MAC times from a disk image into a body file.
+.SH SYNOPSIS
 .B tsk_gettimes [-vV] [ -f
 .I fstype
-.B ] [ -i
-.I imgtype
-.B ] [ -b
-.I dev_sector_size
-.B ] [ -z
-.I zone
-.B ] [ -s
-.I seconds
-.B ] 
-.I image [images]
-.SH DESCRIPTION
-.B tsk_gettimes
-examines each of the file systems in a disk image and returns the data about them in the MACtime body format (the same as running 'fls -m' on each file system).  The output of this can be used as input to mactime to make a timeline of file activity. The data is printed to STDOUT, which can then be redirected to a file.
-
-The arguments are as follows:
-.IP -v
-verbose output to stderr
-.IP -V
-Print version
+.B ] [ -i
+.I imgtype
+.B ] [ -b
+.I dev_sector_size
+.B ] [ -z
+.I zone
+.B ] [ -s
+.I seconds
+.B ] 
+.I image [images]
+.SH DESCRIPTION
+.B tsk_gettimes
+examines each of the file systems in a disk image and returns the data about them in the MACtime body format (the same as running 'fls -m' on each file system).  The output of this can be used as input to mactime to make a timeline of file activity. The data is printed to STDOUT, which can then be redirected to a file.
+
+The arguments are as follows:
+.IP -v
+verbose output to stderr
+.IP -V
+Print version
 .IP "-f fstype"
 Specify the file system type.
 Use '\-f list' to list the supported file system types.
 If not given, autodetection methods are used.
-.IP "-i imgtype"
+.IP "-i imgtype"
 The format of the image file, such as raw.
 Use '\-i list' to list the supported types.
-If not given, autodetection methods are used.
-.IP "-b dev_sector_size"
-The size (in bytes) of the device sectors.
-If not given, autodetection methods are used.  
-.IP "-o sector_offset"
-Sector offset for a volume to recover (recovers only that volume)
-If not given, will attempt to recover all volumes in image and save them
-to different folders. 
-.IP "-s seconds"
-The time skew of the original system in seconds.  For example, if the
-original system was 100 seconds slow, this value would be \-100.  
-.IP "-z zone"
-The ASCII string of the time zone of the original system.  For
-example, EST or GMT.  These strings must be defined by your operating
-system and may vary.
+If not given, autodetection methods are used.
+.IP "-b dev_sector_size"
+The size (in bytes) of the device sectors.
+If not given, autodetection methods are used.  
+.IP "-o sector_offset"
+Sector offset for a volume to recover (recovers only that volume)
+If not given, will attempt to recover all volumes in image and save them
+to different folders. 
+.IP "-s seconds"
+The time skew of the original system in seconds.  For example, if the
+original system was 100 seconds slow, this value would be \-100.  
+.IP "-z zone"
+The ASCII string of the time zone of the original system.  For
+example, EST or GMT.  These strings must be defined by your operating
+system and may vary.
 .IP "image [images]"
 The disk or partition image to read, whose format is given with '\-i'.
 Multiple image file names can be given if the image is split into multiple segments.
 If only one image file is given, and its name is the first in a sequence (e.g., as indicated by ending in '.001'), subsequent image segments will be included automatically.
-
-.SH EXAMPLES
-To collect data about image image.dd:
-
-	# tsk_gettimes ./image.dd > body.txt
-
-.SH AUTHOR
-Brian Carrier <carrier at sleuthkit dot org>
-
-Send documentation updates to <doc-updates at sleuthkit dot org>
-
+
+.SH EXAMPLES
+To collect data about image image.dd:
+
+	# tsk_gettimes ./image.dd > body.txt
+
+.SH AUTHOR
+Brian Carrier <carrier at sleuthkit dot org>
+
+Send documentation updates to <doc-updates at sleuthkit dot org>
+
diff --git a/man/tsk_loaddb.1 b/man/tsk_loaddb.1
index 879d62d81009e0790af62c5f2afbc5655d05cffa..d8f610a248f51f7d09d7db2174cd8bef40349542 100644
--- a/man/tsk_loaddb.1
+++ b/man/tsk_loaddb.1
@@ -1,57 +1,57 @@
-.TH TSK_LOADDB 1 
-.SH NAME
-tsk_loaddb - populate a SQLite database with metadata from a disk image
-.SH SYNOPSIS
-.B tsk_loaddb [-ahkvV] [ -i
-.I imgtype
-.B ] [ -b
-.I dev_sector_size
-.B ] [ -i
-.I imgtype
-.B ] [ -d
-.I database
-.B ]
-.I image [images]
-.SH DESCRIPTION
-.B tsk_loaddb
-loads disk information from 
-.I image
-to a SQLite database.  This database can then be used by tools in other languages for analysis. By default, the database is stored in the same directory as the image with ".db" appended to the name or the database name can be specified with '-d'. 
-
-The arguments are as follows:
-.IP "-a"
-Adds image to an existing database instead of creating a new one.  Requires that -d be also specified.
-.IP "-d database"
-Path for the database (default is the same directory as the image with name derived from image name
-.IP -v
-verbose output to stderr
-.IP -V
-Print version
-.IP -k
-Don't create block data table.  This table maps each block to the file that
-allocated it.  This option will make this program run faster.
-.IP -h
-Calculate MD5 hash value for each file and store it in table.  This option
-will make the program run slower. 
-.IP "-i imgtype"
+.TH TSK_LOADDB 1 
+.SH NAME
+tsk_loaddb - populate a SQLite database with metadata from a disk image
+.SH SYNOPSIS
+.B tsk_loaddb [-ahkvV] [ -i
+.I imgtype
+.B ] [ -b
+.I dev_sector_size
+.B ] [ -i
+.I imgtype
+.B ] [ -d
+.I database
+.B ]
+.I image [images]
+.SH DESCRIPTION
+.B tsk_loaddb
+loads disk information from 
+.I image
+to a SQLite database.  This database can then be used by tools in other languages for analysis. By default, the database is stored in the same directory as the image with ".db" appended to the name or the database name can be specified with '-d'. 
+
+The arguments are as follows:
+.IP "-a"
+Adds image to an existing database instead of creating a new one.  Requires that -d be also specified.
+.IP "-d database"
+Path for the database (default is the same directory as the image with name derived from image name
+.IP -v
+verbose output to stderr
+.IP -V
+Print version
+.IP -k
+Don't create block data table.  This table maps each block to the file that
+allocated it.  This option will make this program run faster.
+.IP -h
+Calculate MD5 hash value for each file and store it in table.  This option
+will make the program run slower. 
+.IP "-i imgtype"
 The format of the image file, such as raw.
 Use '\-i list' to list the supported types.
-If not given, autodetection methods are used.
-.IP "-b dev_sector_size"
-The size (in bytes) of the device sectors.
-If not given, autodetection methods are used.
+If not given, autodetection methods are used.
+.IP "-b dev_sector_size"
+The size (in bytes) of the device sectors.
+If not given, autodetection methods are used.
 .IP "image [images]"
 The disk or partition image to read, whose format is given with '\-i'.
 Multiple image file names can be given if the image is split into multiple segments.
 If only one image file is given, and its name is the first in a sequence (e.g., as indicated by ending in '.001'), subsequent image segments will be included automatically.
-
-.SH EXAMPLES
-To load image data from image.dd to image.dd.db:
-
-	# tsk_loaddb ./image.dd
-
-
-.SH AUTHOR
-Brian Carrier <carrier at sleuthkit dot org>
-
-Send documentation updates to <doc-updates at sleuthkit dot org>
+
+.SH EXAMPLES
+To load image data from image.dd to image.dd.db:
+
+	# tsk_loaddb ./image.dd
+
+
+.SH AUTHOR
+Brian Carrier <carrier at sleuthkit dot org>
+
+Send documentation updates to <doc-updates at sleuthkit dot org>
diff --git a/man/tsk_recover.1 b/man/tsk_recover.1
index c1756f54b9d517e4c634442a83f7943f9e4e13db..4ab958519f93b4eb46b60a79dd563ac52b3cd50b 100644
--- a/man/tsk_recover.1
+++ b/man/tsk_recover.1
@@ -1,67 +1,67 @@
-.TH TSK_RECOVER 1 
-.SH NAME
-tsk_recover - Export files from an image into a local directory
-.SH SYNOPSIS
+.TH TSK_RECOVER 1 
+.SH NAME
+tsk_recover - Export files from an image into a local directory
+.SH SYNOPSIS
 .B tsk_recover [-vVae] [ -f
 .I fstype
-.B ] [ -i
-.I imgtype
-.B ] [ -b
-.I dev_sector_size
-.B ] [ -o
-.I sector_offset
-.B ] [ -d  
-.I dir_inum
-.B ]
-.I  image [images] output_dir 
-.SH DESCRIPTION
-.B tsk_recover
-recovers files to the
-.I output_dir
-from the 
-.I image.
-By default recovers only unallocated files. With flags, it will export all files.  
-
-The arguments are as follows:
-.IP -v
-verbose output to stderr
-.IP -V
-Print version
-.IP -a
-Recover allocated files only
-.IP -e
-Recover all files (allocated and unallocated)
+.B ] [ -i
+.I imgtype
+.B ] [ -b
+.I dev_sector_size
+.B ] [ -o
+.I sector_offset
+.B ] [ -d  
+.I dir_inum
+.B ]
+.I  image [images] output_dir 
+.SH DESCRIPTION
+.B tsk_recover
+recovers files to the
+.I output_dir
+from the 
+.I image.
+By default recovers only unallocated files. With flags, it will export all files.  
+
+The arguments are as follows:
+.IP -v
+verbose output to stderr
+.IP -V
+Print version
+.IP -a
+Recover allocated files only
+.IP -e
+Recover all files (allocated and unallocated)
 .IP "-f fstype"
 Specify the file system type.
 Use '\-f list' to list the supported file system types.
 If not given, autodetection methods are used.
-.IP "-i imgtype"
+.IP "-i imgtype"
 The format of the image file, such as raw.
 Use '\-i list' to list the supported types.
-If not given, autodetection methods are used.
-.IP "-b dev_sector_size"
-The size (in bytes) of the device sectors.
-If not given, autodetection methods are used.  
-.IP "-o sector_offset"
-Sector offset for a volume to recover (recovers only that volume)
-If not given, will attempt to recover all volumes in image and save them
-to different folders. 
-.IP "-d dir_inum"
-Directory inum to recover from (must also specify a specific partition using -o or there must not be a volume system)
+If not given, autodetection methods are used.
+.IP "-b dev_sector_size"
+The size (in bytes) of the device sectors.
+If not given, autodetection methods are used.  
+.IP "-o sector_offset"
+Sector offset for a volume to recover (recovers only that volume)
+If not given, will attempt to recover all volumes in image and save them
+to different folders. 
+.IP "-d dir_inum"
+Directory inum to recover from (must also specify a specific partition using -o or there must not be a volume system)
 .IP "image [images]"
 The disk or partition image to read, whose format is given with '\-i'.
 Multiple image file names can be given if the image is split into multiple segments.
 If only one image file is given, and its name is the first in a sequence (e.g., as indicated by ending in '.001'), subsequent image segments will be included automatically.
 .IP output_dir
 The directory in which to save recovered files.
-
-.SH EXAMPLES
-To recover only unallocated files from image.dd to the recovered directory:
-
-	# tsk_recover ./image.dd ./recovered
-
-.SH AUTHOR
-Brian Carrier <carrier at sleuthkit dot org>
-
-Send documentation updates to <doc-updates at sleuthkit dot org>
-
+
+.SH EXAMPLES
+To recover only unallocated files from image.dd to the recovered directory:
+
+	# tsk_recover ./image.dd ./recovered
+
+.SH AUTHOR
+Brian Carrier <carrier at sleuthkit dot org>
+
+Send documentation updates to <doc-updates at sleuthkit dot org>
+
diff --git a/tools/fiwalk/plugins/jpeg_extract.java b/tools/fiwalk/plugins/jpeg_extract.java
index 587b7c607c217a7cc931091a9097b1c0a59f6e68..d17178e919ea5f7684c79fc046edbabc45fbc384 100644
--- a/tools/fiwalk/plugins/jpeg_extract.java
+++ b/tools/fiwalk/plugins/jpeg_extract.java
@@ -46,7 +46,7 @@ static String process(String fn){
 
     public static void main(String[] args){
 	//System.out.print(process(args[0]));
-        if (args.length >= 1){
+        if (args.length >= 1){
             System.out.print(process(args[0]));
         }else{
              System.out.println("Usage: jpeg_extract filename.***, legal extensions are .jpeg, .jpg");
diff --git a/tools/fiwalk/src/hexbuf.c b/tools/fiwalk/src/hexbuf.c
index ee60e48a947018b94c5535af0c3661d862ab7f5f..07df7bed4d45feea65ddf9b6b8d1dd997a9c9f5f 100644
--- a/tools/fiwalk/src/hexbuf.c
+++ b/tools/fiwalk/src/hexbuf.c
@@ -1,41 +1,41 @@
-/**
- * hexbuf()
- * Turns a binary buffer into a hexdecimal string.
- */
-
-#include "tsk/tsk_config.h"
-#include "hexbuf.h"
-#include <stdio.h>
-
-#ifdef _MSC_VER
-#define _CRT_SECURE_NO_WARNINGS
-#endif
-
-const char *hexbuf(char *dst,int dst_len,const unsigned char *bin,int bytes,int flag)
-{
-    int charcount = 0;
-    const char *start = dst;		// remember where the start of the string is
-    const char *fmt = (flag & HEXBUF_UPPERCASE) ? "%02X" : "%02x";
-
-    *dst = 0;				// begin with null termination
-    while(bytes>0 && dst_len > 3){
-	int add_spaces = 0;
-
-	sprintf(dst,fmt,*bin); // convert the next byte
-	dst += 2;
-	bin += 1;
-	dst_len -= 2;
-	bytes--;
-	charcount++;			// how many characters
-	
-	if(flag & HEXBUF_SPACE2) add_spaces = 1;
-	if((flag & HEXBUF_SPACE4) && charcount%2==0){
-	    *dst++ = ' ';
-	    *dst   = '\000';
-	    dst_len -= 1;
-	}
-    }
-    return start;			// return the start
-}
-
-
+/**
+ * hexbuf()
+ * Turns a binary buffer into a hexdecimal string.
+ */
+
+#include "tsk/tsk_config.h"
+#include "hexbuf.h"
+#include <stdio.h>
+
+#ifdef _MSC_VER
+#define _CRT_SECURE_NO_WARNINGS
+#endif
+
+const char *hexbuf(char *dst,int dst_len,const unsigned char *bin,int bytes,int flag)
+{
+    int charcount = 0;
+    const char *start = dst;		// remember where the start of the string is
+    const char *fmt = (flag & HEXBUF_UPPERCASE) ? "%02X" : "%02x";
+
+    *dst = 0;				// begin with null termination
+    while(bytes>0 && dst_len > 3){
+	int add_spaces = 0;
+
+	sprintf(dst,fmt,*bin); // convert the next byte
+	dst += 2;
+	bin += 1;
+	dst_len -= 2;
+	bytes--;
+	charcount++;			// how many characters
+	
+	if(flag & HEXBUF_SPACE2) add_spaces = 1;
+	if((flag & HEXBUF_SPACE4) && charcount%2==0){
+	    *dst++ = ' ';
+	    *dst   = '\000';
+	    dst_len -= 1;
+	}
+    }
+    return start;			// return the start
+}
+
+
diff --git a/tools/fiwalk/src/utils.c b/tools/fiwalk/src/utils.c
index 681ee8c66e6437728c3d0440f6298a340074520f..33151383f8f5b9ad845a563a422eee3a1bef2410 100644
--- a/tools/fiwalk/src/utils.c
+++ b/tools/fiwalk/src/utils.c
@@ -1,114 +1,114 @@
-/**
- * A collection of utility functions that are useful.
- */
-
-// Just for this module
-#define _FILE_OFFSET_BITS 64
-
-
-/* required per C++ standard */
-#ifndef __STDC_FORMAT_MACROS
-#define __STDC_FORMAT_MACROS
-#endif
-
-#include "tsk/tsk_config.h"
-#include "utils.h"
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#include <stdio.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <ctype.h>
-#include <assert.h>
-
-#ifdef HAVE_INTTYPES_H
-#include <inttypes.h>
-#endif
-
-#include <stdlib.h>
-#include <sys/stat.h>
-#include <string.h>
-
-#ifndef HAVE_ERR
-#include <stdarg.h>
-void err(int eval,const char *fmt,...)
-{
-  va_list ap;
-  va_start(ap,fmt);
-  vfprintf(stderr,fmt,ap);
-  va_end(ap);
-  fprintf(stderr,": %s\n",strerror(errno));
-  exit(eval);
-}
-#endif
-
-#ifndef HAVE_ERRX
-#include <stdarg.h>
-void errx(int eval,const char *fmt,...)
-{
-  va_list ap;
-  va_start(ap,fmt);
-  vfprintf(stderr,fmt,ap);
-  fprintf(stderr,"%s\n",strerror(errno));
-  va_end(ap);
-  exit(eval);
-}
-#endif
-
-#ifndef HAVE_WARN
-#include <stdarg.h>
-void	warn(const char *fmt, ...)
-{
-    va_list args;
-    va_start(args,fmt);
-    vfprintf(stderr,fmt, args);
-    fprintf(stderr,": %s\n",strerror(errno));
-}
-#endif
-
-#ifndef HAVE_WARNX
-#include <stdarg.h>
-void warnx(const char *fmt,...)
-{
-  va_list ap;
-  va_start(ap,fmt);
-  vfprintf(stderr,fmt,ap);
-  va_end(ap);
-}
-#endif
-
-#ifdef _MSC_VER
-#define inline
-#include <io.h>
-#include <stdio.h>
-//pread implementation from https://gist.github.com/1258986
-int pread(unsigned int fd, char *buf, size_t count, int offset)
-{
-if (_lseek(fd, offset, SEEK_SET) != offset) {
-return -1;
-}
-return read(fd, buf, count);
-}
-
-#endif
-
-#ifndef HAVE_ISHEXNUMBER
-int ishexnumber(int c);
-inline int ishexnumber(int c)
-{
-    switch(c){
-    case '0':         case '1':         case '2':         case '3':         case '4':
-    case '5':         case '6':         case '7':         case '8':         case '9':
-    case 'A':         case 'B':         case 'C':         case 'D':         case 'E':
-    case 'F':         case 'a':         case 'b':         case 'c':         case 'd':
-    case 'e':         case 'f':
-	return 1;
-    }
-    return 0;
-}
-#endif
-
-
+/**
+ * A collection of utility functions that are useful.
+ */
+
+// Just for this module
+#define _FILE_OFFSET_BITS 64
+
+
+/* required per C++ standard */
+#ifndef __STDC_FORMAT_MACROS
+#define __STDC_FORMAT_MACROS
+#endif
+
+#include "tsk/tsk_config.h"
+#include "utils.h"
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <stdio.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <ctype.h>
+#include <assert.h>
+
+#ifdef HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+
+#include <stdlib.h>
+#include <sys/stat.h>
+#include <string.h>
+
+#ifndef HAVE_ERR
+#include <stdarg.h>
+void err(int eval,const char *fmt,...)
+{
+  va_list ap;
+  va_start(ap,fmt);
+  vfprintf(stderr,fmt,ap);
+  va_end(ap);
+  fprintf(stderr,": %s\n",strerror(errno));
+  exit(eval);
+}
+#endif
+
+#ifndef HAVE_ERRX
+#include <stdarg.h>
+void errx(int eval,const char *fmt,...)
+{
+  va_list ap;
+  va_start(ap,fmt);
+  vfprintf(stderr,fmt,ap);
+  fprintf(stderr,"%s\n",strerror(errno));
+  va_end(ap);
+  exit(eval);
+}
+#endif
+
+#ifndef HAVE_WARN
+#include <stdarg.h>
+void	warn(const char *fmt, ...)
+{
+    va_list args;
+    va_start(args,fmt);
+    vfprintf(stderr,fmt, args);
+    fprintf(stderr,": %s\n",strerror(errno));
+}
+#endif
+
+#ifndef HAVE_WARNX
+#include <stdarg.h>
+void warnx(const char *fmt,...)
+{
+  va_list ap;
+  va_start(ap,fmt);
+  vfprintf(stderr,fmt,ap);
+  va_end(ap);
+}
+#endif
+
+#ifdef _MSC_VER
+#define inline
+#include <io.h>
+#include <stdio.h>
+//pread implementation from https://gist.github.com/1258986
+int pread(unsigned int fd, char *buf, size_t count, int offset)
+{
+if (_lseek(fd, offset, SEEK_SET) != offset) {
+return -1;
+}
+return read(fd, buf, count);
+}
+
+#endif
+
+#ifndef HAVE_ISHEXNUMBER
+int ishexnumber(int c);
+inline int ishexnumber(int c)
+{
+    switch(c){
+    case '0':         case '1':         case '2':         case '3':         case '4':
+    case '5':         case '6':         case '7':         case '8':         case '9':
+    case 'A':         case 'B':         case 'C':         case 'D':         case 'E':
+    case 'F':         case 'a':         case 'b':         case 'c':         case 'd':
+    case 'e':         case 'f':
+	return 1;
+    }
+    return 0;
+}
+#endif
+
+
diff --git a/tools/fiwalk/src/utils.h b/tools/fiwalk/src/utils.h
index 394f77301672379aa14247ddb4781fd56c5b34df..6a238dfb51cfd6a98c1e92c726f66b427a21b5df 100644
--- a/tools/fiwalk/src/utils.h
+++ b/tools/fiwalk/src/utils.h
@@ -1,54 +1,54 @@
-/****************************************************************
- *** utils.h
- *** 
- *** To use utils.c/utils.h, be sure this is in your configure.ac file:
- ***
-AC_CHECK_HEADERS([err.h err.h sys/mman.h sys/resource.h unistd.h])
-AC_CHECK_FUNCS([ishexnumber unistd.h err errx warn warnx pread _lseeki64 ])
-
- ***
- ****************************************************************/
-
-
-
-#ifndef UTILS_H
-#define UTILS_H
-
-#include <sys/types.h>
-
-#ifdef HAVE_STDINT_H
-#include <stdint.h>
-#endif
-
-#ifndef __BEGIN_DECLS
-#if defined(__cplusplus)
-#define __BEGIN_DECLS   extern "C" {
-#define __END_DECLS     }
-#else
-#define __BEGIN_DECLS
-#define __END_DECLS
-#endif
-#endif
-
-__BEGIN_DECLS
-
-#ifdef HAVE_ERR_H
-#include <err.h>
-#else
-    #ifdef __GNUC__
-    void err(int eval,const char *fmt,...) __attribute__((format(printf, 2, 0))) __attribute__ ((__noreturn__));
-    void errx(int eval,const char *fmt,...) __attribute__((format(printf, 2, 0))) __attribute__ ((__noreturn__));
-    void warn(const char *fmt, ...) __attribute__((format(printf, 1, 0)));
-    void warnx(const char *fmt,...) __attribute__((format(printf, 1, 0)));
-    #else
-    void err(int eval,const char *fmt,...);
-    void errx(int eval,const char *fmt,...);
-    void warn(const char *fmt, ...);
-    void warnx(const char *fmt,...);
-    #endif
-#endif
-
-
-__END_DECLS
-
-#endif
+/****************************************************************
+ *** utils.h
+ *** 
+ *** To use utils.c/utils.h, be sure this is in your configure.ac file:
+ ***
+AC_CHECK_HEADERS([err.h err.h sys/mman.h sys/resource.h unistd.h])
+AC_CHECK_FUNCS([ishexnumber unistd.h err errx warn warnx pread _lseeki64 ])
+
+ ***
+ ****************************************************************/
+
+
+
+#ifndef UTILS_H
+#define UTILS_H
+
+#include <sys/types.h>
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
+#ifndef __BEGIN_DECLS
+#if defined(__cplusplus)
+#define __BEGIN_DECLS   extern "C" {
+#define __END_DECLS     }
+#else
+#define __BEGIN_DECLS
+#define __END_DECLS
+#endif
+#endif
+
+__BEGIN_DECLS
+
+#ifdef HAVE_ERR_H
+#include <err.h>
+#else
+    #ifdef __GNUC__
+    void err(int eval,const char *fmt,...) __attribute__((format(printf, 2, 0))) __attribute__ ((__noreturn__));
+    void errx(int eval,const char *fmt,...) __attribute__((format(printf, 2, 0))) __attribute__ ((__noreturn__));
+    void warn(const char *fmt, ...) __attribute__((format(printf, 1, 0)));
+    void warnx(const char *fmt,...) __attribute__((format(printf, 1, 0)));
+    #else
+    void err(int eval,const char *fmt,...);
+    void errx(int eval,const char *fmt,...);
+    void warn(const char *fmt, ...);
+    void warnx(const char *fmt,...);
+    #endif
+#endif
+
+
+__END_DECLS
+
+#endif
diff --git a/tsk/docs/fs.dox b/tsk/docs/fs.dox
index d6b64e72d0af8b8841fbd4a3c4d744cc3df60e9b..d3d36f2a41285b1d347a174369c321aec1ac6f5e 100644
--- a/tsk/docs/fs.dox
+++ b/tsk/docs/fs.dox
@@ -32,7 +32,7 @@ A basic ASCII diagram is shown here of the different categories.  The file syste
         +------------+      +-----------+      +-------------+
 </pre>
 
-The command line tools and the file system APIs are organized based on these layers.   Data at each layer can be directly accessed and some functions combine layers. 
+The command line tools and the file system APIs are organized based on these layers.   Data at each layer can be directly accessed and some functions combine layers. 
     
 \subsection fs_del Deleted Files
 
diff --git a/tsk/fs/tsk_exfatfs.h b/tsk/fs/tsk_exfatfs.h
index 108c96c73707e968c79d0eea6a47add14ae1644e..bf0793757268914a1fcdac994ba30a4e658fce2f 100755
--- a/tsk/fs/tsk_exfatfs.h
+++ b/tsk/fs/tsk_exfatfs.h
@@ -1,387 +1,387 @@
-/*
-** The Sleuth Kit
-**
-** Copyright (c) 2013 Basis Technology Corp.  All rights reserved
-** Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
-**
-** This software is distributed under the Common Public License 1.0
-**
-*/
-
-/*
- * This code makes use of research presented in the following paper:
- * "Reverse Engineering the exFAT File System" by Robert Shullich
- * Retrieved May 2013 from: 
- * http://www.sans.org/reading_room/whitepapers/forensics/reverse-engineering-microsoft-exfat-file-system_33274
- *
- * Some additional details concerning TexFAT were obtained in May 2013
- * from:
- * http://msdn.microsoft.com/en-us/library/ee490643(v=winembedded.60).aspx
-*/
-
-/**
- * \file tsk_exfatfs.h
- * Contains declarations of structures and functions specific to TSK exFAT 
- * file system support.
- */
-
-#ifndef _TSK_EXFATFS_H
-#define _TSK_EXFATFS_H
-
-#include "tsk_fs_i.h"
-#include "tsk_fatfs.h"
-
-/**
- * \internal
- * The first cluster of an exFAT cluster heap (data area) is cluster #2.
- */
-#define EXFATFS_FIRST_CLUSTER 2
-
-/**
- * \internal
- * An exFAT volume name directory entry includes from 0 to 15 UTF-16 
- * characters.
- */
-#define EXFATFS_MAX_VOLUME_LABEL_LEN 15
-
-/**
- * \internal
- * AnS exFAT file entry set consists of a file directory entry followed by a
- * file stream directory entry and at least one file name directory entry.
- * The file stream and file name entries are the secondary entries.
- */
-#define EXFATFS_MIN_FILE_SECONDARY_DENTRIES_COUNT 2 
-
-/**
- * \internal
- * An exFAT file entry set consists of a file directory entry followed by a
- * file stream directory entry and up to seventeen file name directory entries.
- * The file stream and file name entries are the secondary entries.
- */
-#define EXFATFS_MAX_FILE_SECONDARY_DENTRIES_COUNT 18
-
-/**
- * \internal
- * An exFAT file name directory entry includes from 1 to 15 UTF-16 characters.
- */
-#define EXFATFS_MAX_FILE_NAME_SEGMENT_LENGTH 15
-
-/**
- * \internal
- * In an exFAT file stream directory entry, the second bit of the general 
- * secondary flags byte is set if there is no FAT chain for a file, i.e., the
- * file is not fragmented.
- */
-#define EXFATFS_INVALID_FAT_CHAIN_MASK 0x02
-
-/**
- * Name for an exFAT volume label directory entry that has an empty label, with 
- * the "$" prefix that is used to indicate "special file" directory entries and
- * non-file directory entries.
- */
-#define EXFATFS_EMPTY_VOLUME_LABEL_DENTRY_NAME "$EMPTY_VOLUME_LABEL"   
-
-/**
- * Name for an exFAT volume GUID directory entry, with the "$" prefix that is
- * used to indicate "special file" directory entries and non-file directory 
- * entries.
- */
-#define EXFATFS_VOLUME_GUID_DENTRY_NAME "$VOLUME_GUID"   
-
-/**
- * Name for an exFAT allocation bitmap directory entry, with the "$" prefix 
- * that is used to indicate "special file" directory entries and non-file 
- * directory entries.
- */
-#define EXFATFS_ALLOC_BITMAP_DENTRY_NAME "$ALLOC_BITMAP"   
-
-/**
- * Name for an exFAT upcase table directory entry, with the "$" prefix that is 
- * used to indicate "special file" directory entries and non-file directory 
- * entries.
- */
-#define EXFATFS_UPCASE_TABLE_DENTRY_NAME "$UPCASE_TABLE"   
-
-/**
- * Name for an exFAT TexFAT directory entry, with the "$" prefix that is used 
- * to indicate "special file" directory entries and non-file directory entries.
- */
-#define EXFATFS_TEX_FAT_DENTRY_NAME "$TEX_FAT"   
-
-/**
- * Name for an exFAT access control table directory entry, with the "$" prefix
- * that is used to indicate "special file" directory entries and non-file 
- * directory entries.
- */
-#define EXFATFS_ACT_DENTRY_NAME "$ACCESS_CONTROL_TABLE"   
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-    /**
-     * \internal
-     * Master boot record (MBR) structure for exFAT file systems. The MBR will
-     * be at least 512 bytes in length, but may be padded for larger sector 
-     * sizes. It is part of a larger structure called the volume boot record 
-     * (VBR) that includes OEM parameters, reserved space, and a hash value. 
-     * There  should be both a primary and a backup VBR, so there is a primary 
-     * MBR and a backup MBR.
-     */
-    typedef struct { 
-        uint8_t jump_to_boot_code[3];
-        uint8_t fs_name[8]; 
-        uint8_t must_be_zeros[53]; 
-		uint8_t partition_offset[8]; 
-		uint8_t vol_len_in_sectors[8];             
-		uint8_t fat_offset[4];          
-		uint8_t fat_len_in_sectors[4];                
-		uint8_t cluster_heap_offset[4]; 
-		uint8_t cluster_cnt[4]; 
-		uint8_t root_dir_cluster[4]; 
-		uint8_t vol_serial_no[4]; 
-		uint8_t fs_revision[2]; 
-		uint8_t vol_flags[2]; 
-		uint8_t bytes_per_sector; 
-		uint8_t sectors_per_cluster; 
-		uint8_t num_fats; 
-		uint8_t drive_select; 
-		uint8_t percent_of_cluster_heap_in_use; 
-		uint8_t reserved[7]; 
-		uint8_t boot_code[390]; 
-		uint8_t signature[2]; 
-	} EXFATFS_MASTER_BOOT_REC;
-
-    // RJCTODO: It appears that all of the directory entry types have the in-use bit.
-    // This enum and the code should be updated to reflect that, although I suspect that 
-    // only the file directory entry set entries ever have the bit unset.
-    /**
-     * exFAT directory entry types, the first byte of a directory entry.
-     */
-    enum EXFATFS_DIR_ENTRY_TYPE_ENUM {
-        EXFATFS_DIR_ENTRY_TYPE_NONE = 0x00,
-        EXFATFS_DIR_ENTRY_TYPE_VOLUME_LABEL = 0x83,     
-        EXFATFS_DIR_ENTRY_TYPE_EMPTY_VOLUME_LABEL = 0x03,     
-        EXFATFS_DIR_ENTRY_TYPE_VOLUME_GUID = 0xA0,     
-        EXFATFS_DIR_ENTRY_TYPE_ALLOC_BITMAP = 0x81,     
-        EXFATFS_DIR_ENTRY_TYPE_UPCASE_TABLE = 0x82,     
-        EXFATFS_DIR_ENTRY_TYPE_TEXFAT = 0xA1,     
-        EXFATFS_DIR_ENTRY_TYPE_ACT = 0xE2,     
-        EXFATFS_DIR_ENTRY_TYPE_FILE = 0x85,     
-        EXFATFS_DIR_ENTRY_TYPE_UNALLOC_FILE = 0x05,     
-        EXFATFS_DIR_ENTRY_TYPE_FILE_STREAM = 0xC0,     
-        EXFATFS_DIR_ENTRY_TYPE_UNALLOC_FILE_STREAM = 0x40,  
-        EXFATFS_DIR_ENTRY_TYPE_FILE_NAME = 0xC1,     
-        EXFATFS_DIR_ENTRY_TYPE_UNALLOC_FILE_NAME = 0x41     
-    };
-    typedef enum EXFATFS_DIR_ENTRY_TYPE_ENUM EXFATFS_DIR_ENTRY_TYPE_ENUM;
-
-    /**
-     * Volume label directory entry structure for exFAT file systems. This 
-     * type of entry should be found only in the root directory.
-     */
-    typedef struct {
-        uint8_t entry_type;
-        uint8_t utf16_char_count;
-        uint8_t volume_label[30];
-    } EXFATFS_VOL_LABEL_DIR_ENTRY;
-
-    /**
-     * Volume GUID directory entry structure for exFAT file systems. This type
-     * of entry should be found only in the root directory.
-     */
-    typedef struct {
-        uint8_t entry_type;
-        uint8_t secondary_entries_count;
-        uint8_t check_sum[2];
-        uint8_t flags[2];
-        uint8_t volume_guid[16];
-        uint8_t reserved[10];
-    } EXFATFS_VOL_GUID_DIR_ENTRY;
-
-    /**
-     * Allocation bitmap directory entry structure for exFAT file systems.
-     * There will be one allocation bitmap for exFAT and two for TexFAT 
-     * (transactional exFAT). Bit zero of the flags byte is 0 in the directory
-     * entry for the first bitmap, 1 for in the directory entry for the second 
-     * bitmap. This type of entry should be found only in the root directory.
-     */
-    typedef struct {
-        uint8_t entry_type;
-        uint8_t flags;
-        uint8_t reserved[18];
-        uint8_t first_cluster_of_bitmap[4];
-        uint8_t length_of_alloc_bitmap_in_bytes[8];
-    } EXFATFS_ALLOC_BITMAP_DIR_ENTRY;
-
-    /**
-     * UP-Case table directory entry structure for exFAT file systems.
-     * The UP-Case table is used to convert file names to upper case when
-     * required. This type of entry should be found only in the root directory.
-     */
-    typedef struct {
-        uint8_t entry_type;
-        uint8_t reserved1[3];
-        uint8_t table_check_sum[4];
-        uint8_t reserved2[12];
-        uint8_t first_cluster_of_table[4];
-        uint8_t table_length_in_bytes[8];
-    } EXFATFS_UPCASE_TABLE_DIR_ENTRY;
-
-    /**
-     * TexFAT (transactional exFAT) directory entry structure for exFAT file 
-     * systems. This type of entry should be found only in the root directory.
-     */
-    typedef struct {
-        uint8_t entry_type;
-        uint8_t reserved[31];
-    } EXFATFS_TEXFAT_DIR_ENTRY;
-
-    /**
-     * Access control table directory entry structure for exFAT file systems.
-     * This type of entry should be found only in the root directory.
-     */
-    typedef struct {
-        uint8_t entry_type;
-        uint8_t reserved[31];
-    } EXFATFS_ACCESS_CTRL_TABLE_DIR_ENTRY;
-
-    /**
-     * \internal
-     * It will be followed by a stream directory entry and 1-17 file name
-     * entries. The stream and file name entries are secondary entries. A file
-     * entry and its stream and file name entries constitute a file directory
-     * entry set.
-     */
-    typedef struct {
-        uint8_t entry_type;
-        uint8_t secondary_entries_count;
-        uint8_t check_sum[2];
-        uint8_t attrs[2];
-        uint8_t reserved1[2];
-        uint8_t created_time[2];
-        uint8_t created_date[2];
-        uint8_t modified_time[2];
-        uint8_t modified_date[2];
-        uint8_t accessed_time[2];
-        uint8_t accessed_date[2];
-        uint8_t created_time_tenths_of_sec;
-        uint8_t modified_time_tenths_of_sec;
-        uint8_t created_time_time_zone_offset;
-        uint8_t modified_time_time_zone_offset;
-        uint8_t accessed_time_time_zone_offset;
-        uint8_t reserved2[7];
-    } EXFATFS_FILE_DIR_ENTRY;
-
-    /**
-     * Stream extension directory entry structure for exFAT file systems.
-     * It will be preceded by a file directory entry and followed by 1-17
-     * file name directory entries. The stream and file name entries are 
-     * secondary entries. A file entry and its stream and file name entries 
-     * constitute a file directory entry set.
-     */
-    typedef struct {
-        uint8_t entry_type;
-        uint8_t flags;
-        uint8_t reserved1;
-        uint8_t file_name_length;
-        uint8_t file_name_hash[2];
-        uint8_t reserved2[2];
-        uint8_t valid_data_length[8];
-        uint8_t reserved3[4];
-        uint8_t first_cluster_addr[4];
-        uint8_t data_length[8];
-    } EXFATFS_FILE_STREAM_DIR_ENTRY;
-
-    /**
-     * File name extension directory entry structure for exFAT file systems.
-     * It will be preceded by 0-16 file name entries, a stream entry, and
-     * a file entry. A file entry and its stream and file name entries 
-     * constitute a file directory entry set. Note that file names are not 
-     * null-terminated. The length of a file name is stored in the file stream
-     * entry of the file direcotry entry set.
-     */
-    typedef struct {
-        uint8_t entry_type;
-        uint8_t flags;
-        uint8_t utf16_name_chars[30];
-    } EXFATFS_FILE_NAME_DIR_ENTRY;
-
-	extern uint8_t 
-    exfatfs_open(FATFS_INFO *a_fatfs);
-
-    extern int8_t 
-    exfatfs_is_cluster_alloc(FATFS_INFO *a_fatfs, TSK_DADDR_T a_cluster_addr);
-
-    extern uint8_t
-    exfatfs_fsstat(TSK_FS_INFO *a_fs, FILE *a_hFile);
-
-    extern uint8_t 
-    exfatfs_is_dentry(FATFS_INFO *a_fatfs, FATFS_DENTRY *a_dentry, 
-        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_cluster_is_alloc, 
-        uint8_t a_do_basic_tests_only);
-
-    extern uint8_t
-    exfatfs_is_vol_label_dentry(FATFS_DENTRY *a_dentry, 
-        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_cluster_is_alloc);
-
-    extern uint8_t
-    exfatfs_is_vol_guid_dentry(FATFS_DENTRY *a_dentry, 
-        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_alloc_status);
-
-    extern uint8_t
-    exfatfs_is_alloc_bitmap_dentry(FATFS_DENTRY *a_dentry, 
-        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_alloc_status, FATFS_INFO *a_fatfs);
-
-    extern uint8_t
-    exfatfs_is_upcase_table_dentry(FATFS_DENTRY *a_dentry, 
-        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_alloc_status, FATFS_INFO *a_fatfs);
-
-    extern uint8_t
-    exfatfs_is_texfat_dentry(FATFS_DENTRY *a_dentry, 
-        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_alloc_status);
-
-    extern uint8_t
-    exfatfs_is_access_ctrl_table_dentry(FATFS_DENTRY *a_dentry, 
-        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_alloc_status);
-
-    extern uint8_t
-    exfatfs_is_file_dentry(FATFS_DENTRY *a_dentry, FATFS_INFO *a_fatfs);
-
-    extern uint8_t
-    exfatfs_is_file_stream_dentry(FATFS_DENTRY *a_dentry, FATFS_INFO *a_fatfs);
-
-    extern uint8_t
-    exfatfs_find_file_stream_dentry(FATFS_INFO *a_fatfs, TSK_INUM_T a_file_entry_inum, 
-        TSK_DADDR_T a_sector, uint8_t a_sector_is_alloc,  
-        EXFATFS_DIR_ENTRY_TYPE_ENUM a_file_dentry_type,
-        FATFS_DENTRY *a_stream_dentry);
-
-    extern uint8_t
-    exfatfs_is_file_name_dentry(FATFS_DENTRY *a_dentry);
-
-    extern TSK_RETVAL_ENUM
-    exfatfs_dinode_copy(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum, 
-        FATFS_DENTRY *a_dentry, uint8_t a_is_alloc, TSK_FS_FILE *a_fs_file);
-
-    extern uint8_t
-    exfatfs_inode_lookup(FATFS_INFO *a_fatfs, TSK_FS_FILE *a_fs_file,
-        TSK_INUM_T a_inum);
-
-    extern uint8_t
-    exfatfs_istat_attr_flags(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum, FILE *a_hFile);
-
-    extern uint8_t
-    exfatfs_inode_walk_should_skip_dentry(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum, 
-        FATFS_DENTRY *a_dentry, unsigned int a_selection_flags, 
-        int a_cluster_is_alloc);
-
-    extern TSK_RETVAL_ENUM
-    exfatfs_dent_parse_buf(FATFS_INFO *a_fatfs, TSK_FS_DIR *a_fs_dir, char *a_buf,
-        TSK_OFF_T a_buf_len, TSK_DADDR_T *a_sector_addrs);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+/*
+** The Sleuth Kit
+**
+** Copyright (c) 2013 Basis Technology Corp.  All rights reserved
+** Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+**
+** This software is distributed under the Common Public License 1.0
+**
+*/
+
+/*
+ * This code makes use of research presented in the following paper:
+ * "Reverse Engineering the exFAT File System" by Robert Shullich
+ * Retrieved May 2013 from: 
+ * http://www.sans.org/reading_room/whitepapers/forensics/reverse-engineering-microsoft-exfat-file-system_33274
+ *
+ * Some additional details concerning TexFAT were obtained in May 2013
+ * from:
+ * http://msdn.microsoft.com/en-us/library/ee490643(v=winembedded.60).aspx
+*/
+
+/**
+ * \file tsk_exfatfs.h
+ * Contains declarations of structures and functions specific to TSK exFAT 
+ * file system support.
+ */
+
+#ifndef _TSK_EXFATFS_H
+#define _TSK_EXFATFS_H
+
+#include "tsk_fs_i.h"
+#include "tsk_fatfs.h"
+
+/**
+ * \internal
+ * The first cluster of an exFAT cluster heap (data area) is cluster #2.
+ */
+#define EXFATFS_FIRST_CLUSTER 2
+
+/**
+ * \internal
+ * An exFAT volume name directory entry includes from 0 to 15 UTF-16 
+ * characters.
+ */
+#define EXFATFS_MAX_VOLUME_LABEL_LEN 15
+
+/**
+ * \internal
+ * AnS exFAT file entry set consists of a file directory entry followed by a
+ * file stream directory entry and at least one file name directory entry.
+ * The file stream and file name entries are the secondary entries.
+ */
+#define EXFATFS_MIN_FILE_SECONDARY_DENTRIES_COUNT 2 
+
+/**
+ * \internal
+ * An exFAT file entry set consists of a file directory entry followed by a
+ * file stream directory entry and up to seventeen file name directory entries.
+ * The file stream and file name entries are the secondary entries.
+ */
+#define EXFATFS_MAX_FILE_SECONDARY_DENTRIES_COUNT 18
+
+/**
+ * \internal
+ * An exFAT file name directory entry includes from 1 to 15 UTF-16 characters.
+ */
+#define EXFATFS_MAX_FILE_NAME_SEGMENT_LENGTH 15
+
+/**
+ * \internal
+ * In an exFAT file stream directory entry, the second bit of the general 
+ * secondary flags byte is set if there is no FAT chain for a file, i.e., the
+ * file is not fragmented.
+ */
+#define EXFATFS_INVALID_FAT_CHAIN_MASK 0x02
+
+/**
+ * Name for an exFAT volume label directory entry that has an empty label, with 
+ * the "$" prefix that is used to indicate "special file" directory entries and
+ * non-file directory entries.
+ */
+#define EXFATFS_EMPTY_VOLUME_LABEL_DENTRY_NAME "$EMPTY_VOLUME_LABEL"   
+
+/**
+ * Name for an exFAT volume GUID directory entry, with the "$" prefix that is
+ * used to indicate "special file" directory entries and non-file directory 
+ * entries.
+ */
+#define EXFATFS_VOLUME_GUID_DENTRY_NAME "$VOLUME_GUID"   
+
+/**
+ * Name for an exFAT allocation bitmap directory entry, with the "$" prefix 
+ * that is used to indicate "special file" directory entries and non-file 
+ * directory entries.
+ */
+#define EXFATFS_ALLOC_BITMAP_DENTRY_NAME "$ALLOC_BITMAP"   
+
+/**
+ * Name for an exFAT upcase table directory entry, with the "$" prefix that is 
+ * used to indicate "special file" directory entries and non-file directory 
+ * entries.
+ */
+#define EXFATFS_UPCASE_TABLE_DENTRY_NAME "$UPCASE_TABLE"   
+
+/**
+ * Name for an exFAT TexFAT directory entry, with the "$" prefix that is used 
+ * to indicate "special file" directory entries and non-file directory entries.
+ */
+#define EXFATFS_TEX_FAT_DENTRY_NAME "$TEX_FAT"   
+
+/**
+ * Name for an exFAT access control table directory entry, with the "$" prefix
+ * that is used to indicate "special file" directory entries and non-file 
+ * directory entries.
+ */
+#define EXFATFS_ACT_DENTRY_NAME "$ACCESS_CONTROL_TABLE"   
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+    /**
+     * \internal
+     * Master boot record (MBR) structure for exFAT file systems. The MBR will
+     * be at least 512 bytes in length, but may be padded for larger sector 
+     * sizes. It is part of a larger structure called the volume boot record 
+     * (VBR) that includes OEM parameters, reserved space, and a hash value. 
+     * There  should be both a primary and a backup VBR, so there is a primary 
+     * MBR and a backup MBR.
+     */
+    typedef struct { 
+        uint8_t jump_to_boot_code[3];
+        uint8_t fs_name[8]; 
+        uint8_t must_be_zeros[53]; 
+		uint8_t partition_offset[8]; 
+		uint8_t vol_len_in_sectors[8];             
+		uint8_t fat_offset[4];          
+		uint8_t fat_len_in_sectors[4];                
+		uint8_t cluster_heap_offset[4]; 
+		uint8_t cluster_cnt[4]; 
+		uint8_t root_dir_cluster[4]; 
+		uint8_t vol_serial_no[4]; 
+		uint8_t fs_revision[2]; 
+		uint8_t vol_flags[2]; 
+		uint8_t bytes_per_sector; 
+		uint8_t sectors_per_cluster; 
+		uint8_t num_fats; 
+		uint8_t drive_select; 
+		uint8_t percent_of_cluster_heap_in_use; 
+		uint8_t reserved[7]; 
+		uint8_t boot_code[390]; 
+		uint8_t signature[2]; 
+	} EXFATFS_MASTER_BOOT_REC;
+
+    // RJCTODO: It appears that all of the directory entry types have the in-use bit.
+    // This enum and the code should be updated to reflect that, although I suspect that 
+    // only the file directory entry set entries ever have the bit unset.
+    /**
+     * exFAT directory entry types, the first byte of a directory entry.
+     */
+    enum EXFATFS_DIR_ENTRY_TYPE_ENUM {
+        EXFATFS_DIR_ENTRY_TYPE_NONE = 0x00,
+        EXFATFS_DIR_ENTRY_TYPE_VOLUME_LABEL = 0x83,     
+        EXFATFS_DIR_ENTRY_TYPE_EMPTY_VOLUME_LABEL = 0x03,     
+        EXFATFS_DIR_ENTRY_TYPE_VOLUME_GUID = 0xA0,     
+        EXFATFS_DIR_ENTRY_TYPE_ALLOC_BITMAP = 0x81,     
+        EXFATFS_DIR_ENTRY_TYPE_UPCASE_TABLE = 0x82,     
+        EXFATFS_DIR_ENTRY_TYPE_TEXFAT = 0xA1,     
+        EXFATFS_DIR_ENTRY_TYPE_ACT = 0xE2,     
+        EXFATFS_DIR_ENTRY_TYPE_FILE = 0x85,     
+        EXFATFS_DIR_ENTRY_TYPE_UNALLOC_FILE = 0x05,     
+        EXFATFS_DIR_ENTRY_TYPE_FILE_STREAM = 0xC0,     
+        EXFATFS_DIR_ENTRY_TYPE_UNALLOC_FILE_STREAM = 0x40,  
+        EXFATFS_DIR_ENTRY_TYPE_FILE_NAME = 0xC1,     
+        EXFATFS_DIR_ENTRY_TYPE_UNALLOC_FILE_NAME = 0x41     
+    };
+    typedef enum EXFATFS_DIR_ENTRY_TYPE_ENUM EXFATFS_DIR_ENTRY_TYPE_ENUM;
+
+    /**
+     * Volume label directory entry structure for exFAT file systems. This 
+     * type of entry should be found only in the root directory.
+     */
+    typedef struct {
+        uint8_t entry_type;
+        uint8_t utf16_char_count;
+        uint8_t volume_label[30];
+    } EXFATFS_VOL_LABEL_DIR_ENTRY;
+
+    /**
+     * Volume GUID directory entry structure for exFAT file systems. This type
+     * of entry should be found only in the root directory.
+     */
+    typedef struct {
+        uint8_t entry_type;
+        uint8_t secondary_entries_count;
+        uint8_t check_sum[2];
+        uint8_t flags[2];
+        uint8_t volume_guid[16];
+        uint8_t reserved[10];
+    } EXFATFS_VOL_GUID_DIR_ENTRY;
+
+    /**
+     * Allocation bitmap directory entry structure for exFAT file systems.
+     * There will be one allocation bitmap for exFAT and two for TexFAT 
+     * (transactional exFAT). Bit zero of the flags byte is 0 in the directory
+     * entry for the first bitmap, 1 for in the directory entry for the second 
+     * bitmap. This type of entry should be found only in the root directory.
+     */
+    typedef struct {
+        uint8_t entry_type;
+        uint8_t flags;
+        uint8_t reserved[18];
+        uint8_t first_cluster_of_bitmap[4];
+        uint8_t length_of_alloc_bitmap_in_bytes[8];
+    } EXFATFS_ALLOC_BITMAP_DIR_ENTRY;
+
+    /**
+     * UP-Case table directory entry structure for exFAT file systems.
+     * The UP-Case table is used to convert file names to upper case when
+     * required. This type of entry should be found only in the root directory.
+     */
+    typedef struct {
+        uint8_t entry_type;
+        uint8_t reserved1[3];
+        uint8_t table_check_sum[4];
+        uint8_t reserved2[12];
+        uint8_t first_cluster_of_table[4];
+        uint8_t table_length_in_bytes[8];
+    } EXFATFS_UPCASE_TABLE_DIR_ENTRY;
+
+    /**
+     * TexFAT (transactional exFAT) directory entry structure for exFAT file 
+     * systems. This type of entry should be found only in the root directory.
+     */
+    typedef struct {
+        uint8_t entry_type;
+        uint8_t reserved[31];
+    } EXFATFS_TEXFAT_DIR_ENTRY;
+
+    /**
+     * Access control table directory entry structure for exFAT file systems.
+     * This type of entry should be found only in the root directory.
+     */
+    typedef struct {
+        uint8_t entry_type;
+        uint8_t reserved[31];
+    } EXFATFS_ACCESS_CTRL_TABLE_DIR_ENTRY;
+
+    /**
+     * \internal
+     * It will be followed by a stream directory entry and 1-17 file name
+     * entries. The stream and file name entries are secondary entries. A file
+     * entry and its stream and file name entries constitute a file directory
+     * entry set.
+     */
+    typedef struct {
+        uint8_t entry_type;
+        uint8_t secondary_entries_count;
+        uint8_t check_sum[2];
+        uint8_t attrs[2];
+        uint8_t reserved1[2];
+        uint8_t created_time[2];
+        uint8_t created_date[2];
+        uint8_t modified_time[2];
+        uint8_t modified_date[2];
+        uint8_t accessed_time[2];
+        uint8_t accessed_date[2];
+        uint8_t created_time_tenths_of_sec;
+        uint8_t modified_time_tenths_of_sec;
+        uint8_t created_time_time_zone_offset;
+        uint8_t modified_time_time_zone_offset;
+        uint8_t accessed_time_time_zone_offset;
+        uint8_t reserved2[7];
+    } EXFATFS_FILE_DIR_ENTRY;
+
+    /**
+     * Stream extension directory entry structure for exFAT file systems.
+     * It will be preceded by a file directory entry and followed by 1-17
+     * file name directory entries. The stream and file name entries are 
+     * secondary entries. A file entry and its stream and file name entries 
+     * constitute a file directory entry set.
+     */
+    typedef struct {
+        uint8_t entry_type;
+        uint8_t flags;
+        uint8_t reserved1;
+        uint8_t file_name_length;
+        uint8_t file_name_hash[2];
+        uint8_t reserved2[2];
+        uint8_t valid_data_length[8];
+        uint8_t reserved3[4];
+        uint8_t first_cluster_addr[4];
+        uint8_t data_length[8];
+    } EXFATFS_FILE_STREAM_DIR_ENTRY;
+
+    /**
+     * File name extension directory entry structure for exFAT file systems.
+     * It will be preceded by 0-16 file name entries, a stream entry, and
+     * a file entry. A file entry and its stream and file name entries 
+     * constitute a file directory entry set. Note that file names are not 
+     * null-terminated. The length of a file name is stored in the file stream
+     * entry of the file direcotry entry set.
+     */
+    typedef struct {
+        uint8_t entry_type;
+        uint8_t flags;
+        uint8_t utf16_name_chars[30];
+    } EXFATFS_FILE_NAME_DIR_ENTRY;
+
+	extern uint8_t 
+    exfatfs_open(FATFS_INFO *a_fatfs);
+
+    extern int8_t 
+    exfatfs_is_cluster_alloc(FATFS_INFO *a_fatfs, TSK_DADDR_T a_cluster_addr);
+
+    extern uint8_t
+    exfatfs_fsstat(TSK_FS_INFO *a_fs, FILE *a_hFile);
+
+    extern uint8_t 
+    exfatfs_is_dentry(FATFS_INFO *a_fatfs, FATFS_DENTRY *a_dentry, 
+        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_cluster_is_alloc, 
+        uint8_t a_do_basic_tests_only);
+
+    extern uint8_t
+    exfatfs_is_vol_label_dentry(FATFS_DENTRY *a_dentry, 
+        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_cluster_is_alloc);
+
+    extern uint8_t
+    exfatfs_is_vol_guid_dentry(FATFS_DENTRY *a_dentry, 
+        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_alloc_status);
+
+    extern uint8_t
+    exfatfs_is_alloc_bitmap_dentry(FATFS_DENTRY *a_dentry, 
+        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_alloc_status, FATFS_INFO *a_fatfs);
+
+    extern uint8_t
+    exfatfs_is_upcase_table_dentry(FATFS_DENTRY *a_dentry, 
+        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_alloc_status, FATFS_INFO *a_fatfs);
+
+    extern uint8_t
+    exfatfs_is_texfat_dentry(FATFS_DENTRY *a_dentry, 
+        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_alloc_status);
+
+    extern uint8_t
+    exfatfs_is_access_ctrl_table_dentry(FATFS_DENTRY *a_dentry, 
+        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_alloc_status);
+
+    extern uint8_t
+    exfatfs_is_file_dentry(FATFS_DENTRY *a_dentry, FATFS_INFO *a_fatfs);
+
+    extern uint8_t
+    exfatfs_is_file_stream_dentry(FATFS_DENTRY *a_dentry, FATFS_INFO *a_fatfs);
+
+    extern uint8_t
+    exfatfs_find_file_stream_dentry(FATFS_INFO *a_fatfs, TSK_INUM_T a_file_entry_inum, 
+        TSK_DADDR_T a_sector, uint8_t a_sector_is_alloc,  
+        EXFATFS_DIR_ENTRY_TYPE_ENUM a_file_dentry_type,
+        FATFS_DENTRY *a_stream_dentry);
+
+    extern uint8_t
+    exfatfs_is_file_name_dentry(FATFS_DENTRY *a_dentry);
+
+    extern TSK_RETVAL_ENUM
+    exfatfs_dinode_copy(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum, 
+        FATFS_DENTRY *a_dentry, uint8_t a_is_alloc, TSK_FS_FILE *a_fs_file);
+
+    extern uint8_t
+    exfatfs_inode_lookup(FATFS_INFO *a_fatfs, TSK_FS_FILE *a_fs_file,
+        TSK_INUM_T a_inum);
+
+    extern uint8_t
+    exfatfs_istat_attr_flags(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum, FILE *a_hFile);
+
+    extern uint8_t
+    exfatfs_inode_walk_should_skip_dentry(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum, 
+        FATFS_DENTRY *a_dentry, unsigned int a_selection_flags, 
+        int a_cluster_is_alloc);
+
+    extern TSK_RETVAL_ENUM
+    exfatfs_dent_parse_buf(FATFS_INFO *a_fatfs, TSK_FS_DIR *a_fs_dir, char *a_buf,
+        TSK_OFF_T a_buf_len, TSK_DADDR_T *a_sector_addrs);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/tsk/fs/tsk_fatfs.h b/tsk/fs/tsk_fatfs.h
index 0944f89c43ed7df9d84b94a8ab457e7a2e4a0bfe..505c077a7ded02a1cfd471302185e8541e14c412 100644
--- a/tsk/fs/tsk_fatfs.h
+++ b/tsk/fs/tsk_fatfs.h
@@ -1,381 +1,381 @@
-/*
-** The Sleuth Kit
-**
-** Copyright (c) 2013 Basis Technology Corp.  All rights reserved
-** Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
-**
-** This software is distributed under the Common Public License 1.0
-**
-*/
-
-/**
- * \file tsk_fatfs.h
- * Contains the structures and function APIs for TSK FAT (FAT12, FAT16, FAT32, 
- * exFAT) file system support.
- */
-
-#ifndef _TSK_FATFS_H
-#define _TSK_FATFS_H
-
-#include "tsk_fs_i.h"
-
-/**
- * \internal
- *
- * Per TSK convention, FAT file system functions return integer 0 on success
- * and integer 1 on failure. 
- */
-#define FATFS_OK 0
-
-/**
- * \internal
- *
- * Per TSK convention, FAT file system functions return integer 0 on success
- * and integer 1 on failure. 
- */
-#define FATFS_FAIL 1
-
-#define FATFS_FS_MAGIC	0xaa55
-
-#define FATFS_FIRST_CLUSTER_ADDR 2
-
-#define FATFS_FIRSTINO	2
-#define FATFS_ROOTINO	2       /* location of root directory inode */
-#define FATFS_FIRST_NORMINO 3
-
-#define FATFS_ROOTNAME "$ROOT"
-#define FATFS_MBRNAME  "$MBR"
-#define FATFS_FAT1NAME "$FAT1"
-#define FATFS_FAT2NAME "$FAT2"
-
-#define FATFS_NUM_VIRT_FILES(fatfs) \
-    (fatfs->numfat + 2)
-
-/* size of FAT to read into FATFS_INFO each time */
-/* This must be at least 1024 bytes or else fat12 will get messed up */
-#define FATFS_FAT_CACHE_N		4       // number of caches
-#define FATFS_FAT_CACHE_B		4096
-#define FATFS_FAT_CACHE_S		8       // number of sectors in cache
-
-#define FATFS_MASTER_BOOT_RECORD_SIZE 512
-
-/** 
- * Directory entries for all FAT file systems are currently 32 bytes long.
- */
-#define FATFS_DENTRY_SIZE 32
-
-/* MASK values for FAT entries */
-#define FATFS_12_MASK	0x00000fff
-#define FATFS_16_MASK	0x0000ffff
-#define FATFS_32_MASK	0x0fffffff
-#define EXFATFS_MASK	0x0fffffff
-
-#define FATFS_FILE_CONTENT_LEN sizeof(TSK_DADDR_T)      // we will store the starting cluster
-
-/* flags for attributes field */
-#define FATFS_ATTR_NORMAL	0x00    /* normal file */
-#define FATFS_ATTR_READONLY	0x01    /* file is readonly */
-#define FATFS_ATTR_HIDDEN	0x02    /* file is hidden */
-#define FATFS_ATTR_SYSTEM	0x04    /* file is a system file */
-#define FATFS_ATTR_VOLUME	0x08    /* entry is a volume label */
-#define FATFS_ATTR_DIRECTORY	0x10    /* entry is a directory name */
-#define FATFS_ATTR_ARCHIVE	0x20    /* file is new or modified */
-#define FATFS_ATTR_LFN		0x0f    /* A long file name entry */
-#define FATFS_ATTR_ALL		0x3f    /* all flags set */
-
-#define FATFS_CLUST_2_SECT(fatfs, c)	\
-	(TSK_DADDR_T)(fatfs->firstclustsect + ((((c) & fatfs->mask) - 2) * fatfs->csize))
-
-#define FATFS_SECT_2_CLUST(fatfs, s)	\
-	(TSK_DADDR_T)(2 + ((s)  - fatfs->firstclustsect) / fatfs->csize)
-
-/* given an inode address, determine in which sector it is located
- * i must be larger than 3 (2 is the root and it doesn't have a sector)
- */
-#define FATFS_INODE_2_SECT(fatfs, i)    \
-    (TSK_DADDR_T)((i - FATFS_FIRST_NORMINO)/(fatfs->dentry_cnt_se) + fatfs->firstdatasect)
-
-#define FATFS_INODE_2_OFF(fatfs, i)     \
-    (size_t)(((i - FATFS_FIRST_NORMINO) % fatfs->dentry_cnt_se) * sizeof(FATFS_DENTRY))
-
-/* given a sector IN THE DATA AREA, return the base inode for it */
-#define FATFS_SECT_2_INODE(fatfs, s)    \
-    (TSK_INUM_T)((s - fatfs->firstdatasect) * fatfs->dentry_cnt_se + FATFS_FIRST_NORMINO)
-
-/* Constants for the FAT entry */
-#define FATFS_UNALLOC	0
-#define FATFS_BAD		0x0ffffff7
-#define FATFS_EOFS		0x0ffffff8
-#define FATFS_EOFE		0x0fffffff
-
-/* macro to identify if the FAT value is End of File
- * returns 1 if it is and 0 if it is not 
- */
-#define FATFS_ISEOF(val, mask)	\
-	((val >= (FATFS_EOFS & mask)) && (val <= (FATFS_EOFE)))
-
-#define FATFS_ISBAD(val, mask) \
-	((val) == (FATFS_BAD & mask))
-
-#define FATFS_SEC_MASK		0x1f    /* number of seconds div by 2 */
-#define FATFS_SEC_SHIFT		0
-#define FATFS_SEC_MIN		0
-#define FATFS_SEC_MAX		30
-#define FATFS_MIN_MASK		0x7e0   /* number of minutes 0-59 */
-#define FATFS_MIN_SHIFT		5
-#define FATFS_MIN_MIN		0
-#define FATFS_MIN_MAX		59
-#define FATFS_HOUR_MASK		0xf800  /* number of hours 0-23 */
-#define FATFS_HOUR_SHIFT	11
-#define FATFS_HOUR_MIN		0
-#define FATFS_HOUR_MAX		23
-
-/* return 1 if x is a valid FAT time */
-#define FATFS_ISTIME(x)	\
-	(((((x & FATFS_SEC_MASK) >> FATFS_SEC_SHIFT) > FATFS_SEC_MAX) || \
-	  (((x & FATFS_MIN_MASK) >> FATFS_MIN_SHIFT) > FATFS_MIN_MAX) || \
-	  (((x & FATFS_HOUR_MASK) >> FATFS_HOUR_SHIFT) > FATFS_HOUR_MAX) ) == 0)
-
-#define FATFS_DAY_MASK		0x1f    /* day of month 1-31 */
-#define FATFS_DAY_SHIFT		0
-#define FATFS_DAY_MIN		1
-#define FATFS_DAY_MAX		31
-#define FATFS_MON_MASK		0x1e0   /* month 1-12 */
-#define FATFS_MON_SHIFT		5
-#define FATFS_MON_MIN		1
-#define FATFS_MON_MAX		12
-#define FATFS_YEAR_MASK		0xfe00  /* year, from 1980 0-127 */
-#define FATFS_YEAR_SHIFT	9
-#define FATFS_YEAR_MIN		0
-#define FATFS_YEAR_MAX		127
-
-/* return 1 if x is a valid FAT date */
-#define FATFS_ISDATE(x)	\
-	 (((((x & FATFS_DAY_MASK) >> FATFS_DAY_SHIFT) > FATFS_DAY_MAX) || \
-	   (((x & FATFS_DAY_MASK) >> FATFS_DAY_SHIFT) < FATFS_DAY_MIN) || \
-	   (((x & FATFS_MON_MASK) >> FATFS_MON_SHIFT) > FATFS_MON_MAX) || \
-	   (((x & FATFS_MON_MASK) >> FATFS_MON_SHIFT) < FATFS_MON_MIN) || \
-	   (((x & FATFS_YEAR_MASK) >> FATFS_YEAR_SHIFT) > FATFS_YEAR_MAX) ) == 0)
-
-/**
- * \internal
- * Buffer size for conversion of exFAT UTF-16 strings to UTF-8 strings.
- */
-#define FATFS_MAXNAMLEN_UTF8	1024
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-    typedef struct FATFS_INFO FATFS_INFO; 
-
-    // RJCTODO: Use of this through out would allow addition of an ERR status
-    // and would make use of the is_alloc functions cleaner.
-    enum FATFS_DATA_UNIT_ALLOC_STATUS_ENUM {
-        FATFS_DATA_UNIT_ALLOC_STATUS_UNALLOC = 0,
-        FATFS_DATA_UNIT_ALLOC_STATUS_ALLOC = 1,
-        FATFS_DATA_UNIT_ALLOC_STATUS_UNKNOWN = 2
-    };
-    typedef enum FATFS_DATA_UNIT_ALLOC_STATUS_ENUM FATFS_DATA_UNIT_ALLOC_STATUS_ENUM;
-
-	typedef enum {
-		TSK_FATFS_SUBTYPE_SPEC = 0,
-		TSK_FATFS_SUBTYPE_ANDROID_1 = 1
-	} TSK_FATFS_SUBTYPE_ENUM;
-
-    typedef struct
-    {
-        uint8_t data[FATFS_MASTER_BOOT_RECORD_SIZE - 2];
-        uint8_t magic[2];
-    } FATFS_MASTER_BOOT_RECORD;
-
-	/** 
-     * Generic directory entry structure for FAT file systems.
-     */
-    typedef struct {
-        uint8_t data[FATFS_DENTRY_SIZE];
-    } FATFS_DENTRY;
-
-    /* 
-     * Internal TSK_FS_INFO derived structure for FATXX and exFAT file systems.  
-     */
-    struct FATFS_INFO {
-        TSK_FS_INFO fs_info;    /* super class */
-
-        /* FAT cache */
-        /* cache_lock protects fatc_buf, fatc_addr, fatc_ttl */
-        tsk_lock_t cache_lock;
-        char fatc_buf[FATFS_FAT_CACHE_N][FATFS_FAT_CACHE_B];        //r/w shared - lock
-        TSK_DADDR_T fatc_addr[FATFS_FAT_CACHE_N];     // r/w shared - lock
-        uint8_t fatc_ttl[FATFS_FAT_CACHE_N];  //r/w shared - lock
-
-        /* First sector of FAT */
-        TSK_DADDR_T firstfatsect;
-
-        /* First sector after FAT  - For TSK_FS_INFO_TYPE_FAT_12 and TSK_FS_INFO_TYPE_FAT_16, this is where the
-         * root directory entries are.  For TSK_FS_INFO_TYPE_FAT_32, this is the the first 
-         * cluster */
-        TSK_DADDR_T firstdatasect;
-
-        /* The sector number were cluster 2 (the first one) is
-         * for TSK_FS_INFO_TYPE_FAT_32, it will be the same as firstdatasect, but for TSK_FS_INFO_TYPE_FAT_12 & 16
-         * it will be the first sector after the Root directory  */
-        TSK_DADDR_T firstclustsect;
-
-        /* size of data area in clusters, starting at firstdatasect */
-        TSK_DADDR_T clustcnt;
-
-        TSK_DADDR_T lastclust;
-
-        /* sector where the root directory is located */
-        TSK_DADDR_T rootsect;
-
-        uint32_t dentry_cnt_se; /* max number of dentries per sector */
-        uint32_t dentry_cnt_cl; /* max number of dentries per cluster */
-
-        uint16_t ssize;         /* size of sectors in bytes */
-        uint16_t ssize_sh;      /* power of 2 for size of sectors */
-        uint8_t csize;          /* size of clusters in sectors */
-        uint8_t numfat;         /* number of fat tables */
-        uint32_t sectperfat;    /* sectors per fat table */
-        uint16_t numroot;       /* number of 32-byte dentries in root dir */
-        uint32_t mask;          /* the mask to use for the sectors */
-
-        TSK_INUM_T mbr_virt_inum;
-        TSK_INUM_T fat1_virt_inum;
-        TSK_INUM_T fat2_virt_inum;
-
-        tsk_lock_t dir_lock;    //< Lock that protects inum2par.
-        void *inum2par;         //< Maps subfolder metadata address to parent folder metadata addresses.
-
-		char boot_sector_buffer[FATFS_MASTER_BOOT_RECORD_SIZE];
-        int using_backup_boot_sector;
-
-		TSK_FATFS_SUBTYPE_ENUM subtype; // Identifies any variations on the standard FAT format
-
-        int8_t (*is_cluster_alloc)(FATFS_INFO *fatfs, TSK_DADDR_T clust);
-
-        uint8_t (*is_dentry)(FATFS_INFO *a_fatfs, FATFS_DENTRY *a_dentry, 
-            FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_cluster_is_alloc, 
-            uint8_t a_do_basic_tests_only);
-
-        uint8_t (*inode_lookup)(FATFS_INFO *a_fatfs, TSK_FS_FILE *a_fs_file,
-            TSK_INUM_T a_inum);
-
-        uint8_t (*inode_walk_should_skip_dentry)(FATFS_INFO *a_fatfs, 
-            TSK_INUM_T a_inum, FATFS_DENTRY *a_dentry, 
-            unsigned int a_selection_flags, int a_cluster_is_alloc);
-
-        uint8_t (*istat_attr_flags) (FATFS_INFO *a_fatfs, TSK_INUM_T a_inum,  FILE *a_hFile);
-
-        TSK_RETVAL_ENUM (*dent_parse_buf)(FATFS_INFO *a_fatfs, 
-            TSK_FS_DIR *a_fs_dir, char *a_buf, TSK_OFF_T a_buf_len, 
-            TSK_DADDR_T *a_sector_addrs);
-
-        TSK_RETVAL_ENUM (*dinode_copy)(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum, 
-            FATFS_DENTRY *a_dentry, uint8_t a_cluster_is_alloc, TSK_FS_FILE *a_fs_file);
-
-        // RJCTODO: Consider wrapping this struct around FATFS_INFO. The original plan was to make a union of
-        // FATXX- and exFAT-specific members, but it turns out that all of the additions are exFAT only.
-        struct {
-            uint64_t first_sector_of_alloc_bitmap;
-            uint64_t length_of_alloc_bitmap_in_bytes;
-        } EXFATFS_INFO;
-	};
-
-    extern uint8_t
-    fatfs_inum_is_in_range(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum);
-
-    extern uint8_t
-    fatfs_ptr_arg_is_null(void *ptr, const char *param_name, const char *func_name);
-
-    extern uint8_t
-    fatfs_inum_arg_is_in_range(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum, const char *func_name);
-
-    extern time_t fatfs_dos_2_unix_time(uint16_t date, uint16_t time, uint8_t timetens);
-
-    extern uint32_t
-    fatfs_dos_2_nanosec(uint8_t timetens);
-
-    extern TSKConversionResult
-    fatfs_utf16_inode_str_2_utf8(FATFS_INFO *a_fatfs, UTF16 *src, size_t src_len, UTF8 *dest, size_t dest_len, TSK_INUM_T a_inum, const char *a_desc);
-
-    extern void fatfs_cleanup_ascii(char *);
-
-	extern TSK_FS_INFO 
-    *fatfs_open(TSK_IMG_INFO *a_img_info, TSK_OFF_T a_offset, TSK_FS_TYPE_ENUM a_ftype, uint8_t a_test);
-
-    extern uint8_t
-    fatfs_fscheck(TSK_FS_INFO *fs, FILE *hFile);
-
-    extern int8_t fatfs_is_sectalloc(FATFS_INFO *, TSK_DADDR_T);
-
-    extern uint8_t
-    fatfs_block_walk(TSK_FS_INFO * fs, TSK_DADDR_T a_start_blk,
-        TSK_DADDR_T a_end_blk, TSK_FS_BLOCK_WALK_FLAG_ENUM a_flags,
-        TSK_FS_BLOCK_WALK_CB a_action, void *a_ptr);
-
-    extern TSK_FS_BLOCK_FLAG_ENUM
-    fatfs_block_getflags(TSK_FS_INFO * a_fs, TSK_DADDR_T a_addr);
-
-    extern TSK_FS_ATTR_TYPE_ENUM
-    fatfs_get_default_attr_type(const TSK_FS_FILE * a_file);
-
-    extern uint8_t fatfs_make_data_runs(TSK_FS_FILE * a_fs_file);
-
-    extern uint8_t fatfs_getFAT(FATFS_INFO * fatfs, TSK_DADDR_T clust,
-        TSK_DADDR_T * value);
-
-    extern uint8_t 
-    fatfs_dir_buf_add(FATFS_INFO * fatfs, TSK_INUM_T par_inum, TSK_INUM_T dir_inum); 
-
-    extern uint8_t
-    fatfs_dir_buf_get(FATFS_INFO * fatfs, TSK_INUM_T dir_inum,
-    TSK_INUM_T *par_inum);
-
-    extern TSK_WALK_RET_ENUM
-    fatfs_find_parent_act(TSK_FS_FILE * fs_file, const char *a_path, void *ptr);
-
-    extern uint8_t
-    fatfs_istat(TSK_FS_INFO * fs, FILE * hFile, TSK_INUM_T inum,
-        TSK_DADDR_T numblock, int32_t sec_skew);
-
-    extern uint8_t fatfs_inode_walk(TSK_FS_INFO * fs,
-        TSK_INUM_T start_inum, TSK_INUM_T end_inum,
-        TSK_FS_META_FLAG_ENUM a_flags, TSK_FS_META_WALK_CB a_action,
-        void *a_ptr);
-
-    extern uint8_t fatfs_inode_lookup(TSK_FS_INFO *a_fs,
-        TSK_FS_FILE *a_fs_file, TSK_INUM_T a_inum);
-
-    extern uint8_t fatfs_dentry_load(FATFS_INFO *a_fatfs, FATFS_DENTRY *a_dentry, 
-        TSK_INUM_T a_inum);
-
-    extern TSK_RETVAL_ENUM
-        fatfs_dir_open_meta(TSK_FS_INFO * a_fs, TSK_FS_DIR ** a_fs_dir,
-        TSK_INUM_T a_addr);
-
-    extern int fatfs_name_cmp(TSK_FS_INFO *, const char *, const char *);
-
-    extern uint8_t fatfs_dir_buf_add(FATFS_INFO * fatfs,
-        TSK_INUM_T par_inum, TSK_INUM_T dir_inum);
-
-    extern void fatfs_dir_buf_free(FATFS_INFO *fatfs);
-
-    extern uint8_t
-    fatfs_jopen(TSK_FS_INFO * fs, TSK_INUM_T inum);
-
-    extern uint8_t
-    fatfs_jentry_walk(TSK_FS_INFO * fs, int a_flags,
-        TSK_FS_JENTRY_WALK_CB a_action, void *a_ptr);
-
-    extern uint8_t
-    fatfs_jblk_walk(TSK_FS_INFO * fs, TSK_DADDR_T start, TSK_DADDR_T end,
-        int a_flags, TSK_FS_JBLK_WALK_CB a_action, void *a_ptr);
-
-    extern void fatfs_close(TSK_FS_INFO *fs);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+/*
+** The Sleuth Kit
+**
+** Copyright (c) 2013 Basis Technology Corp.  All rights reserved
+** Contact: Brian Carrier [carrier <at> sleuthkit [dot] org]
+**
+** This software is distributed under the Common Public License 1.0
+**
+*/
+
+/**
+ * \file tsk_fatfs.h
+ * Contains the structures and function APIs for TSK FAT (FAT12, FAT16, FAT32, 
+ * exFAT) file system support.
+ */
+
+#ifndef _TSK_FATFS_H
+#define _TSK_FATFS_H
+
+#include "tsk_fs_i.h"
+
+/**
+ * \internal
+ *
+ * Per TSK convention, FAT file system functions return integer 0 on success
+ * and integer 1 on failure. 
+ */
+#define FATFS_OK 0
+
+/**
+ * \internal
+ *
+ * Per TSK convention, FAT file system functions return integer 0 on success
+ * and integer 1 on failure. 
+ */
+#define FATFS_FAIL 1
+
+#define FATFS_FS_MAGIC	0xaa55
+
+#define FATFS_FIRST_CLUSTER_ADDR 2
+
+#define FATFS_FIRSTINO	2
+#define FATFS_ROOTINO	2       /* location of root directory inode */
+#define FATFS_FIRST_NORMINO 3
+
+#define FATFS_ROOTNAME "$ROOT"
+#define FATFS_MBRNAME  "$MBR"
+#define FATFS_FAT1NAME "$FAT1"
+#define FATFS_FAT2NAME "$FAT2"
+
+#define FATFS_NUM_VIRT_FILES(fatfs) \
+    (fatfs->numfat + 2)
+
+/* size of FAT to read into FATFS_INFO each time */
+/* This must be at least 1024 bytes or else fat12 will get messed up */
+#define FATFS_FAT_CACHE_N		4       // number of caches
+#define FATFS_FAT_CACHE_B		4096
+#define FATFS_FAT_CACHE_S		8       // number of sectors in cache
+
+#define FATFS_MASTER_BOOT_RECORD_SIZE 512
+
+/** 
+ * Directory entries for all FAT file systems are currently 32 bytes long.
+ */
+#define FATFS_DENTRY_SIZE 32
+
+/* MASK values for FAT entries */
+#define FATFS_12_MASK	0x00000fff
+#define FATFS_16_MASK	0x0000ffff
+#define FATFS_32_MASK	0x0fffffff
+#define EXFATFS_MASK	0x0fffffff
+
+#define FATFS_FILE_CONTENT_LEN sizeof(TSK_DADDR_T)      // we will store the starting cluster
+
+/* flags for attributes field */
+#define FATFS_ATTR_NORMAL	0x00    /* normal file */
+#define FATFS_ATTR_READONLY	0x01    /* file is readonly */
+#define FATFS_ATTR_HIDDEN	0x02    /* file is hidden */
+#define FATFS_ATTR_SYSTEM	0x04    /* file is a system file */
+#define FATFS_ATTR_VOLUME	0x08    /* entry is a volume label */
+#define FATFS_ATTR_DIRECTORY	0x10    /* entry is a directory name */
+#define FATFS_ATTR_ARCHIVE	0x20    /* file is new or modified */
+#define FATFS_ATTR_LFN		0x0f    /* A long file name entry */
+#define FATFS_ATTR_ALL		0x3f    /* all flags set */
+
+#define FATFS_CLUST_2_SECT(fatfs, c)	\
+	(TSK_DADDR_T)(fatfs->firstclustsect + ((((c) & fatfs->mask) - 2) * fatfs->csize))
+
+#define FATFS_SECT_2_CLUST(fatfs, s)	\
+	(TSK_DADDR_T)(2 + ((s)  - fatfs->firstclustsect) / fatfs->csize)
+
+/* given an inode address, determine in which sector it is located
+ * i must be larger than 3 (2 is the root and it doesn't have a sector)
+ */
+#define FATFS_INODE_2_SECT(fatfs, i)    \
+    (TSK_DADDR_T)((i - FATFS_FIRST_NORMINO)/(fatfs->dentry_cnt_se) + fatfs->firstdatasect)
+
+#define FATFS_INODE_2_OFF(fatfs, i)     \
+    (size_t)(((i - FATFS_FIRST_NORMINO) % fatfs->dentry_cnt_se) * sizeof(FATFS_DENTRY))
+
+/* given a sector IN THE DATA AREA, return the base inode for it */
+#define FATFS_SECT_2_INODE(fatfs, s)    \
+    (TSK_INUM_T)((s - fatfs->firstdatasect) * fatfs->dentry_cnt_se + FATFS_FIRST_NORMINO)
+
+/* Constants for the FAT entry */
+#define FATFS_UNALLOC	0
+#define FATFS_BAD		0x0ffffff7
+#define FATFS_EOFS		0x0ffffff8
+#define FATFS_EOFE		0x0fffffff
+
+/* macro to identify if the FAT value is End of File
+ * returns 1 if it is and 0 if it is not 
+ */
+#define FATFS_ISEOF(val, mask)	\
+	((val >= (FATFS_EOFS & mask)) && (val <= (FATFS_EOFE)))
+
+#define FATFS_ISBAD(val, mask) \
+	((val) == (FATFS_BAD & mask))
+
+#define FATFS_SEC_MASK		0x1f    /* number of seconds div by 2 */
+#define FATFS_SEC_SHIFT		0
+#define FATFS_SEC_MIN		0
+#define FATFS_SEC_MAX		30
+#define FATFS_MIN_MASK		0x7e0   /* number of minutes 0-59 */
+#define FATFS_MIN_SHIFT		5
+#define FATFS_MIN_MIN		0
+#define FATFS_MIN_MAX		59
+#define FATFS_HOUR_MASK		0xf800  /* number of hours 0-23 */
+#define FATFS_HOUR_SHIFT	11
+#define FATFS_HOUR_MIN		0
+#define FATFS_HOUR_MAX		23
+
+/* return 1 if x is a valid FAT time */
+#define FATFS_ISTIME(x)	\
+	(((((x & FATFS_SEC_MASK) >> FATFS_SEC_SHIFT) > FATFS_SEC_MAX) || \
+	  (((x & FATFS_MIN_MASK) >> FATFS_MIN_SHIFT) > FATFS_MIN_MAX) || \
+	  (((x & FATFS_HOUR_MASK) >> FATFS_HOUR_SHIFT) > FATFS_HOUR_MAX) ) == 0)
+
+#define FATFS_DAY_MASK		0x1f    /* day of month 1-31 */
+#define FATFS_DAY_SHIFT		0
+#define FATFS_DAY_MIN		1
+#define FATFS_DAY_MAX		31
+#define FATFS_MON_MASK		0x1e0   /* month 1-12 */
+#define FATFS_MON_SHIFT		5
+#define FATFS_MON_MIN		1
+#define FATFS_MON_MAX		12
+#define FATFS_YEAR_MASK		0xfe00  /* year, from 1980 0-127 */
+#define FATFS_YEAR_SHIFT	9
+#define FATFS_YEAR_MIN		0
+#define FATFS_YEAR_MAX		127
+
+/* return 1 if x is a valid FAT date */
+#define FATFS_ISDATE(x)	\
+	 (((((x & FATFS_DAY_MASK) >> FATFS_DAY_SHIFT) > FATFS_DAY_MAX) || \
+	   (((x & FATFS_DAY_MASK) >> FATFS_DAY_SHIFT) < FATFS_DAY_MIN) || \
+	   (((x & FATFS_MON_MASK) >> FATFS_MON_SHIFT) > FATFS_MON_MAX) || \
+	   (((x & FATFS_MON_MASK) >> FATFS_MON_SHIFT) < FATFS_MON_MIN) || \
+	   (((x & FATFS_YEAR_MASK) >> FATFS_YEAR_SHIFT) > FATFS_YEAR_MAX) ) == 0)
+
+/**
+ * \internal
+ * Buffer size for conversion of exFAT UTF-16 strings to UTF-8 strings.
+ */
+#define FATFS_MAXNAMLEN_UTF8	1024
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+    typedef struct FATFS_INFO FATFS_INFO; 
+
+    // RJCTODO: Use of this through out would allow addition of an ERR status
+    // and would make use of the is_alloc functions cleaner.
+    enum FATFS_DATA_UNIT_ALLOC_STATUS_ENUM {
+        FATFS_DATA_UNIT_ALLOC_STATUS_UNALLOC = 0,
+        FATFS_DATA_UNIT_ALLOC_STATUS_ALLOC = 1,
+        FATFS_DATA_UNIT_ALLOC_STATUS_UNKNOWN = 2
+    };
+    typedef enum FATFS_DATA_UNIT_ALLOC_STATUS_ENUM FATFS_DATA_UNIT_ALLOC_STATUS_ENUM;
+
+	typedef enum {
+		TSK_FATFS_SUBTYPE_SPEC = 0,
+		TSK_FATFS_SUBTYPE_ANDROID_1 = 1
+	} TSK_FATFS_SUBTYPE_ENUM;
+
+    typedef struct
+    {
+        uint8_t data[FATFS_MASTER_BOOT_RECORD_SIZE - 2];
+        uint8_t magic[2];
+    } FATFS_MASTER_BOOT_RECORD;
+
+	/** 
+     * Generic directory entry structure for FAT file systems.
+     */
+    typedef struct {
+        uint8_t data[FATFS_DENTRY_SIZE];
+    } FATFS_DENTRY;
+
+    /* 
+     * Internal TSK_FS_INFO derived structure for FATXX and exFAT file systems.  
+     */
+    struct FATFS_INFO {
+        TSK_FS_INFO fs_info;    /* super class */
+
+        /* FAT cache */
+        /* cache_lock protects fatc_buf, fatc_addr, fatc_ttl */
+        tsk_lock_t cache_lock;
+        char fatc_buf[FATFS_FAT_CACHE_N][FATFS_FAT_CACHE_B];        //r/w shared - lock
+        TSK_DADDR_T fatc_addr[FATFS_FAT_CACHE_N];     // r/w shared - lock
+        uint8_t fatc_ttl[FATFS_FAT_CACHE_N];  //r/w shared - lock
+
+        /* First sector of FAT */
+        TSK_DADDR_T firstfatsect;
+
+        /* First sector after FAT  - For TSK_FS_INFO_TYPE_FAT_12 and TSK_FS_INFO_TYPE_FAT_16, this is where the
+         * root directory entries are.  For TSK_FS_INFO_TYPE_FAT_32, this is the the first 
+         * cluster */
+        TSK_DADDR_T firstdatasect;
+
+        /* The sector number were cluster 2 (the first one) is
+         * for TSK_FS_INFO_TYPE_FAT_32, it will be the same as firstdatasect, but for TSK_FS_INFO_TYPE_FAT_12 & 16
+         * it will be the first sector after the Root directory  */
+        TSK_DADDR_T firstclustsect;
+
+        /* size of data area in clusters, starting at firstdatasect */
+        TSK_DADDR_T clustcnt;
+
+        TSK_DADDR_T lastclust;
+
+        /* sector where the root directory is located */
+        TSK_DADDR_T rootsect;
+
+        uint32_t dentry_cnt_se; /* max number of dentries per sector */
+        uint32_t dentry_cnt_cl; /* max number of dentries per cluster */
+
+        uint16_t ssize;         /* size of sectors in bytes */
+        uint16_t ssize_sh;      /* power of 2 for size of sectors */
+        uint8_t csize;          /* size of clusters in sectors */
+        uint8_t numfat;         /* number of fat tables */
+        uint32_t sectperfat;    /* sectors per fat table */
+        uint16_t numroot;       /* number of 32-byte dentries in root dir */
+        uint32_t mask;          /* the mask to use for the sectors */
+
+        TSK_INUM_T mbr_virt_inum;
+        TSK_INUM_T fat1_virt_inum;
+        TSK_INUM_T fat2_virt_inum;
+
+        tsk_lock_t dir_lock;    //< Lock that protects inum2par.
+        void *inum2par;         //< Maps subfolder metadata address to parent folder metadata addresses.
+
+		char boot_sector_buffer[FATFS_MASTER_BOOT_RECORD_SIZE];
+        int using_backup_boot_sector;
+
+		TSK_FATFS_SUBTYPE_ENUM subtype; // Identifies any variations on the standard FAT format
+
+        int8_t (*is_cluster_alloc)(FATFS_INFO *fatfs, TSK_DADDR_T clust);
+
+        uint8_t (*is_dentry)(FATFS_INFO *a_fatfs, FATFS_DENTRY *a_dentry, 
+            FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_cluster_is_alloc, 
+            uint8_t a_do_basic_tests_only);
+
+        uint8_t (*inode_lookup)(FATFS_INFO *a_fatfs, TSK_FS_FILE *a_fs_file,
+            TSK_INUM_T a_inum);
+
+        uint8_t (*inode_walk_should_skip_dentry)(FATFS_INFO *a_fatfs, 
+            TSK_INUM_T a_inum, FATFS_DENTRY *a_dentry, 
+            unsigned int a_selection_flags, int a_cluster_is_alloc);
+
+        uint8_t (*istat_attr_flags) (FATFS_INFO *a_fatfs, TSK_INUM_T a_inum,  FILE *a_hFile);
+
+        TSK_RETVAL_ENUM (*dent_parse_buf)(FATFS_INFO *a_fatfs, 
+            TSK_FS_DIR *a_fs_dir, char *a_buf, TSK_OFF_T a_buf_len, 
+            TSK_DADDR_T *a_sector_addrs);
+
+        TSK_RETVAL_ENUM (*dinode_copy)(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum, 
+            FATFS_DENTRY *a_dentry, uint8_t a_cluster_is_alloc, TSK_FS_FILE *a_fs_file);
+
+        // RJCTODO: Consider wrapping this struct around FATFS_INFO. The original plan was to make a union of
+        // FATXX- and exFAT-specific members, but it turns out that all of the additions are exFAT only.
+        struct {
+            uint64_t first_sector_of_alloc_bitmap;
+            uint64_t length_of_alloc_bitmap_in_bytes;
+        } EXFATFS_INFO;
+	};
+
+    extern uint8_t
+    fatfs_inum_is_in_range(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum);
+
+    extern uint8_t
+    fatfs_ptr_arg_is_null(void *ptr, const char *param_name, const char *func_name);
+
+    extern uint8_t
+    fatfs_inum_arg_is_in_range(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum, const char *func_name);
+
+    extern time_t fatfs_dos_2_unix_time(uint16_t date, uint16_t time, uint8_t timetens);
+
+    extern uint32_t
+    fatfs_dos_2_nanosec(uint8_t timetens);
+
+    extern TSKConversionResult
+    fatfs_utf16_inode_str_2_utf8(FATFS_INFO *a_fatfs, UTF16 *src, size_t src_len, UTF8 *dest, size_t dest_len, TSK_INUM_T a_inum, const char *a_desc);
+
+    extern void fatfs_cleanup_ascii(char *);
+
+	extern TSK_FS_INFO 
+    *fatfs_open(TSK_IMG_INFO *a_img_info, TSK_OFF_T a_offset, TSK_FS_TYPE_ENUM a_ftype, uint8_t a_test);
+
+    extern uint8_t
+    fatfs_fscheck(TSK_FS_INFO *fs, FILE *hFile);
+
+    extern int8_t fatfs_is_sectalloc(FATFS_INFO *, TSK_DADDR_T);
+
+    extern uint8_t
+    fatfs_block_walk(TSK_FS_INFO * fs, TSK_DADDR_T a_start_blk,
+        TSK_DADDR_T a_end_blk, TSK_FS_BLOCK_WALK_FLAG_ENUM a_flags,
+        TSK_FS_BLOCK_WALK_CB a_action, void *a_ptr);
+
+    extern TSK_FS_BLOCK_FLAG_ENUM
+    fatfs_block_getflags(TSK_FS_INFO * a_fs, TSK_DADDR_T a_addr);
+
+    extern TSK_FS_ATTR_TYPE_ENUM
+    fatfs_get_default_attr_type(const TSK_FS_FILE * a_file);
+
+    extern uint8_t fatfs_make_data_runs(TSK_FS_FILE * a_fs_file);
+
+    extern uint8_t fatfs_getFAT(FATFS_INFO * fatfs, TSK_DADDR_T clust,
+        TSK_DADDR_T * value);
+
+    extern uint8_t 
+    fatfs_dir_buf_add(FATFS_INFO * fatfs, TSK_INUM_T par_inum, TSK_INUM_T dir_inum); 
+
+    extern uint8_t
+    fatfs_dir_buf_get(FATFS_INFO * fatfs, TSK_INUM_T dir_inum,
+    TSK_INUM_T *par_inum);
+
+    extern TSK_WALK_RET_ENUM
+    fatfs_find_parent_act(TSK_FS_FILE * fs_file, const char *a_path, void *ptr);
+
+    extern uint8_t
+    fatfs_istat(TSK_FS_INFO * fs, FILE * hFile, TSK_INUM_T inum,
+        TSK_DADDR_T numblock, int32_t sec_skew);
+
+    extern uint8_t fatfs_inode_walk(TSK_FS_INFO * fs,
+        TSK_INUM_T start_inum, TSK_INUM_T end_inum,
+        TSK_FS_META_FLAG_ENUM a_flags, TSK_FS_META_WALK_CB a_action,
+        void *a_ptr);
+
+    extern uint8_t fatfs_inode_lookup(TSK_FS_INFO *a_fs,
+        TSK_FS_FILE *a_fs_file, TSK_INUM_T a_inum);
+
+    extern uint8_t fatfs_dentry_load(FATFS_INFO *a_fatfs, FATFS_DENTRY *a_dentry, 
+        TSK_INUM_T a_inum);
+
+    extern TSK_RETVAL_ENUM
+        fatfs_dir_open_meta(TSK_FS_INFO * a_fs, TSK_FS_DIR ** a_fs_dir,
+        TSK_INUM_T a_addr);
+
+    extern int fatfs_name_cmp(TSK_FS_INFO *, const char *, const char *);
+
+    extern uint8_t fatfs_dir_buf_add(FATFS_INFO * fatfs,
+        TSK_INUM_T par_inum, TSK_INUM_T dir_inum);
+
+    extern void fatfs_dir_buf_free(FATFS_INFO *fatfs);
+
+    extern uint8_t
+    fatfs_jopen(TSK_FS_INFO * fs, TSK_INUM_T inum);
+
+    extern uint8_t
+    fatfs_jentry_walk(TSK_FS_INFO * fs, int a_flags,
+        TSK_FS_JENTRY_WALK_CB a_action, void *a_ptr);
+
+    extern uint8_t
+    fatfs_jblk_walk(TSK_FS_INFO * fs, TSK_DADDR_T start, TSK_DADDR_T end,
+        int a_flags, TSK_FS_JBLK_WALK_CB a_action, void *a_ptr);
+
+    extern void fatfs_close(TSK_FS_INFO *fs);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/tsk/fs/tsk_fatxxfs.h b/tsk/fs/tsk_fatxxfs.h
index ea40dd31264b275a04caa96d284ef5e0768d1615..a1c2a14f405bbd2abb8e65647d6341a9edd2e17e 100755
--- a/tsk/fs/tsk_fatxxfs.h
+++ b/tsk/fs/tsk_fatxxfs.h
@@ -1,203 +1,203 @@
-/*
-** The Sleuth Kit 
-**
-** Brian Carrier [carrier <at> sleuthkit [dot] org]
-** Copyright (c) 2003-2013 Brian Carrier.  All rights reserved
-**
-** TASK
-** Copyright (c) 2002 @stake Inc.  All rights reserved
-**
-** This software is distributed under the Common Public License 1.0
-**
-*/
-
-/**
- * \file fatxxfs.h
- * Contains the structures and function APIs for TSK FATXX (FAT12, FAT16,
- * FAT32) file system support.
- */
-
-#ifndef _TSK_FATXXFS_H
-#define _TSK_FATXXFS_H
-
-#include "tsk_fs_i.h"
-#include "tsk_fatfs.h"
-
-/* Macro to combine the upper and lower 2-byte parts of the starting
- * cluster 
- */
-#define FATXXFS_DENTRY_CLUST(fsi, de)	\
-	(TSK_DADDR_T)((tsk_getu16(fsi->endian, de->startclust)) | (tsk_getu16(fsi->endian, de->highclust)<<16))
-
-/* constants for first byte of name[] */
-#define FATXXFS_SLOT_E5		0x05    /* actual value is 0xe5 */
-#define FATXXFS_SLOT_DELETED	0xe5
-
-/* Macro to test allocation status
- * Have seen FAT image that uses non-standard flags in the short name (00 00 -> unallocated, 20 00 -> allocated)
- */
-#define FATXXFS_IS_DELETED(name, fatfs)	\
-	(fatfs->subtype == TSK_FATFS_SUBTYPE_ANDROID_1) ? \
-	((name[0] == 0) && (name[1] == 0)) : \
-	(name[0] == FATXXFS_SLOT_DELETED) 
-
-/* 
- *Return 1 if c is an valid charactor for a short file name 
- *
- * NOTE: 0x05 is allowed in name[0], and 0x2e (".") is allowed for name[0]
- * and name[1] and 0xe5 is allowed for name[0]
- */
-#define FATXXFS_IS_83_NAME(c)		\
-	((((c) < 0x20) || \
-	  ((c) == 0x22) || \
-	  (((c) >= 0x2a) && ((c) <= 0x2c)) || \
-	  ((c) == 0x2e) || \
-	  ((c) == 0x2f) || \
-	  (((c) >= 0x3a) && ((c) <= 0x3f)) || \
-	  (((c) >= 0x5b) && ((c) <= 0x5d)) || \
-	  ((c) == 0x7c)) == 0)
-
-// extensions are to be ascii / latin
-#define FATXXFS_IS_83_EXT(c)		\
-    (FATXXFS_IS_83_NAME((c)) && ((c) < 0x7f))
-
-/* flags for lowercase field */
-#define FATXXFS_CASE_LOWER_BASE	0x08    /* base is lower case */
-#define FATXXFS_CASE_LOWER_EXT	0x10    /* extension is lower case */
-#define FATXXFS_CASE_LOWER_ALL	0x18    /* both are lower */
-
-/* flags for seq field */
-#define FATXXFS_LFN_SEQ_FIRST	0x40    /* This bit is set for the first lfn entry */
-#define FATXXFS_LFN_SEQ_MASK	0x3f    /* These bits are a mask for the decreasing
-                                         * sequence number for the entries */
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-	/*
-	 * Boot sector structure for FATXX file systems (TSK_FS_INFO_TYPE_FAT_12, 
-	 * TSK_FS_INFO_TYPE_FAT_16, and TSK_FS_INFO_TYPE_FAT_32).
-	 */
-    typedef struct {
-        uint8_t f1[3];
-        char oemname[8];
-        uint8_t ssize[2];       /* sector size in bytes */
-        uint8_t csize;          /* cluster size in sectors */
-        uint8_t reserved[2];    /* number of reserved sectors for boot sectors */
-        uint8_t numfat;         /* Number of FATs */
-        uint8_t numroot[2];     /* Number of Root dentries */
-        uint8_t sectors16[2];   /* number of sectors in FS */
-        uint8_t f2[1];
-        uint8_t sectperfat16[2];        /* size of FAT */
-        uint8_t f3[4];
-        uint8_t prevsect[4];    /* number of sectors before FS partition */
-        uint8_t sectors32[4];   /* 32-bit value of number of FS sectors */
-
-        /* The following are different for fat12/fat16 and fat32 */
-        union {
-            struct {
-                uint8_t f5[3];
-                uint8_t vol_id[4];
-                uint8_t vol_lab[11];
-                uint8_t fs_type[8];
-                uint8_t f6[448];
-            } f16;
-            struct {
-                uint8_t sectperfat32[4];
-                uint8_t ext_flag[2];
-                uint8_t fs_ver[2];
-                uint8_t rootclust[4];   /* cluster where root directory is stored */
-                uint8_t fsinfo[2];      /* TSK_FS_INFO Location */
-                uint8_t bs_backup[2];   /* sector of backup of boot sector */
-                uint8_t f5[12];
-                uint8_t drvnum;
-                uint8_t f6[2];
-                uint8_t vol_id[4];
-                uint8_t vol_lab[11];
-                uint8_t fs_type[8];
-                uint8_t f7[420];
-            } f32;
-        } a;
-
-        uint8_t magic[2];       /* MAGIC for all versions */
-
-    } FATXXFS_SB;
-
-    typedef struct {
-        uint8_t magic1[4];      /* 41615252 */
-        uint8_t f1[480];
-        uint8_t magic2[4];      /* 61417272 */
-        uint8_t freecnt[4];     /* free clusters 0xfffffffff if unknown */
-        uint8_t nextfree[4];    /* next free cluster */
-        uint8_t f2[12];
-        uint8_t magic3[4];      /* AA550000 */
-    } FATXXFS_FSINFO;
-
-	/* directory entry short name structure */
-    typedef struct {
-        uint8_t name[8];
-        uint8_t ext[3];
-        uint8_t attrib;
-        uint8_t lowercase;
-        uint8_t ctimeten;       /* create times (ctimeten is 0-199) */
-        uint8_t ctime[2];
-        uint8_t cdate[2];
-        uint8_t adate[2];       /* access time */
-        uint8_t highclust[2];
-        uint8_t wtime[2];       /* last write time */
-        uint8_t wdate[2];
-        uint8_t startclust[2];
-        uint8_t size[4];
-    } FATXXFS_DENTRY;
-
-	/* 
-	 * Long file name support for windows 
-	 *
-	 * Contents of this are in UNICODE, not ASCII 
-	 */
-    typedef struct {
-        uint8_t seq;
-        uint8_t part1[10];
-        uint8_t attributes;
-        uint8_t reserved1;
-        uint8_t chksum;
-        uint8_t part2[12];
-        uint8_t reserved2[2];
-        uint8_t part3[4];
-    } FATXXFS_DENTRY_LFN;
-
-	extern uint8_t fatxxfs_open(FATFS_INFO *fatfs);
-
-    extern int8_t fatxxfs_is_cluster_alloc(FATFS_INFO *fatfs, TSK_DADDR_T clust);
-
-    extern uint8_t 
-    fatxxfs_is_dentry(FATFS_INFO *a_fatfs, FATFS_DENTRY *a_dentry, 
-        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_cluster_is_alloc, 
-        uint8_t a_do_basic_tests_only);
-
-    extern TSK_RETVAL_ENUM
-    fatxxfs_dinode_copy(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum, 
-        FATFS_DENTRY *a_dentry, uint8_t a_cluster_is_alloc, TSK_FS_FILE *a_fs_file);
-
-    extern uint8_t
-    fatxxfs_inode_lookup(FATFS_INFO *a_fatfs, TSK_FS_FILE *a_fs_file,
-        TSK_INUM_T a_inum);
-
-    extern uint8_t 
-    fatxxfs_istat_attr_flags(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum, 
-        FILE *a_hFile);
-
-    extern uint8_t
-    fatxxfs_inode_walk_should_skip_dentry(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum,
-        FATFS_DENTRY *a_dentry, unsigned int a_selection_flags, 
-        int a_cluster_is_alloc);
-
-    extern TSK_RETVAL_ENUM
-    fatxxfs_dent_parse_buf(FATFS_INFO * fatfs, TSK_FS_DIR * a_fs_dir, char *buf,
-        TSK_OFF_T len, TSK_DADDR_T * addrs);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+/*
+** The Sleuth Kit 
+**
+** Brian Carrier [carrier <at> sleuthkit [dot] org]
+** Copyright (c) 2003-2013 Brian Carrier.  All rights reserved
+**
+** TASK
+** Copyright (c) 2002 @stake Inc.  All rights reserved
+**
+** This software is distributed under the Common Public License 1.0
+**
+*/
+
+/**
+ * \file fatxxfs.h
+ * Contains the structures and function APIs for TSK FATXX (FAT12, FAT16,
+ * FAT32) file system support.
+ */
+
+#ifndef _TSK_FATXXFS_H
+#define _TSK_FATXXFS_H
+
+#include "tsk_fs_i.h"
+#include "tsk_fatfs.h"
+
+/* Macro to combine the upper and lower 2-byte parts of the starting
+ * cluster 
+ */
+#define FATXXFS_DENTRY_CLUST(fsi, de)	\
+	(TSK_DADDR_T)((tsk_getu16(fsi->endian, de->startclust)) | (tsk_getu16(fsi->endian, de->highclust)<<16))
+
+/* constants for first byte of name[] */
+#define FATXXFS_SLOT_E5		0x05    /* actual value is 0xe5 */
+#define FATXXFS_SLOT_DELETED	0xe5
+
+/* Macro to test allocation status
+ * Have seen FAT image that uses non-standard flags in the short name (00 00 -> unallocated, 20 00 -> allocated)
+ */
+#define FATXXFS_IS_DELETED(name, fatfs)	\
+	(fatfs->subtype == TSK_FATFS_SUBTYPE_ANDROID_1) ? \
+	((name[0] == 0) && (name[1] == 0)) : \
+	(name[0] == FATXXFS_SLOT_DELETED) 
+
+/* 
+ *Return 1 if c is an valid charactor for a short file name 
+ *
+ * NOTE: 0x05 is allowed in name[0], and 0x2e (".") is allowed for name[0]
+ * and name[1] and 0xe5 is allowed for name[0]
+ */
+#define FATXXFS_IS_83_NAME(c)		\
+	((((c) < 0x20) || \
+	  ((c) == 0x22) || \
+	  (((c) >= 0x2a) && ((c) <= 0x2c)) || \
+	  ((c) == 0x2e) || \
+	  ((c) == 0x2f) || \
+	  (((c) >= 0x3a) && ((c) <= 0x3f)) || \
+	  (((c) >= 0x5b) && ((c) <= 0x5d)) || \
+	  ((c) == 0x7c)) == 0)
+
+// extensions are to be ascii / latin
+#define FATXXFS_IS_83_EXT(c)		\
+    (FATXXFS_IS_83_NAME((c)) && ((c) < 0x7f))
+
+/* flags for lowercase field */
+#define FATXXFS_CASE_LOWER_BASE	0x08    /* base is lower case */
+#define FATXXFS_CASE_LOWER_EXT	0x10    /* extension is lower case */
+#define FATXXFS_CASE_LOWER_ALL	0x18    /* both are lower */
+
+/* flags for seq field */
+#define FATXXFS_LFN_SEQ_FIRST	0x40    /* This bit is set for the first lfn entry */
+#define FATXXFS_LFN_SEQ_MASK	0x3f    /* These bits are a mask for the decreasing
+                                         * sequence number for the entries */
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+	/*
+	 * Boot sector structure for FATXX file systems (TSK_FS_INFO_TYPE_FAT_12, 
+	 * TSK_FS_INFO_TYPE_FAT_16, and TSK_FS_INFO_TYPE_FAT_32).
+	 */
+    typedef struct {
+        uint8_t f1[3];
+        char oemname[8];
+        uint8_t ssize[2];       /* sector size in bytes */
+        uint8_t csize;          /* cluster size in sectors */
+        uint8_t reserved[2];    /* number of reserved sectors for boot sectors */
+        uint8_t numfat;         /* Number of FATs */
+        uint8_t numroot[2];     /* Number of Root dentries */
+        uint8_t sectors16[2];   /* number of sectors in FS */
+        uint8_t f2[1];
+        uint8_t sectperfat16[2];        /* size of FAT */
+        uint8_t f3[4];
+        uint8_t prevsect[4];    /* number of sectors before FS partition */
+        uint8_t sectors32[4];   /* 32-bit value of number of FS sectors */
+
+        /* The following are different for fat12/fat16 and fat32 */
+        union {
+            struct {
+                uint8_t f5[3];
+                uint8_t vol_id[4];
+                uint8_t vol_lab[11];
+                uint8_t fs_type[8];
+                uint8_t f6[448];
+            } f16;
+            struct {
+                uint8_t sectperfat32[4];
+                uint8_t ext_flag[2];
+                uint8_t fs_ver[2];
+                uint8_t rootclust[4];   /* cluster where root directory is stored */
+                uint8_t fsinfo[2];      /* TSK_FS_INFO Location */
+                uint8_t bs_backup[2];   /* sector of backup of boot sector */
+                uint8_t f5[12];
+                uint8_t drvnum;
+                uint8_t f6[2];
+                uint8_t vol_id[4];
+                uint8_t vol_lab[11];
+                uint8_t fs_type[8];
+                uint8_t f7[420];
+            } f32;
+        } a;
+
+        uint8_t magic[2];       /* MAGIC for all versions */
+
+    } FATXXFS_SB;
+
+    typedef struct {
+        uint8_t magic1[4];      /* 41615252 */
+        uint8_t f1[480];
+        uint8_t magic2[4];      /* 61417272 */
+        uint8_t freecnt[4];     /* free clusters 0xfffffffff if unknown */
+        uint8_t nextfree[4];    /* next free cluster */
+        uint8_t f2[12];
+        uint8_t magic3[4];      /* AA550000 */
+    } FATXXFS_FSINFO;
+
+	/* directory entry short name structure */
+    typedef struct {
+        uint8_t name[8];
+        uint8_t ext[3];
+        uint8_t attrib;
+        uint8_t lowercase;
+        uint8_t ctimeten;       /* create times (ctimeten is 0-199) */
+        uint8_t ctime[2];
+        uint8_t cdate[2];
+        uint8_t adate[2];       /* access time */
+        uint8_t highclust[2];
+        uint8_t wtime[2];       /* last write time */
+        uint8_t wdate[2];
+        uint8_t startclust[2];
+        uint8_t size[4];
+    } FATXXFS_DENTRY;
+
+	/* 
+	 * Long file name support for windows 
+	 *
+	 * Contents of this are in UNICODE, not ASCII 
+	 */
+    typedef struct {
+        uint8_t seq;
+        uint8_t part1[10];
+        uint8_t attributes;
+        uint8_t reserved1;
+        uint8_t chksum;
+        uint8_t part2[12];
+        uint8_t reserved2[2];
+        uint8_t part3[4];
+    } FATXXFS_DENTRY_LFN;
+
+	extern uint8_t fatxxfs_open(FATFS_INFO *fatfs);
+
+    extern int8_t fatxxfs_is_cluster_alloc(FATFS_INFO *fatfs, TSK_DADDR_T clust);
+
+    extern uint8_t 
+    fatxxfs_is_dentry(FATFS_INFO *a_fatfs, FATFS_DENTRY *a_dentry, 
+        FATFS_DATA_UNIT_ALLOC_STATUS_ENUM a_cluster_is_alloc, 
+        uint8_t a_do_basic_tests_only);
+
+    extern TSK_RETVAL_ENUM
+    fatxxfs_dinode_copy(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum, 
+        FATFS_DENTRY *a_dentry, uint8_t a_cluster_is_alloc, TSK_FS_FILE *a_fs_file);
+
+    extern uint8_t
+    fatxxfs_inode_lookup(FATFS_INFO *a_fatfs, TSK_FS_FILE *a_fs_file,
+        TSK_INUM_T a_inum);
+
+    extern uint8_t 
+    fatxxfs_istat_attr_flags(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum, 
+        FILE *a_hFile);
+
+    extern uint8_t
+    fatxxfs_inode_walk_should_skip_dentry(FATFS_INFO *a_fatfs, TSK_INUM_T a_inum,
+        FATFS_DENTRY *a_dentry, unsigned int a_selection_flags, 
+        int a_cluster_is_alloc);
+
+    extern TSK_RETVAL_ENUM
+    fatxxfs_dent_parse_buf(FATFS_INFO * fatfs, TSK_FS_DIR * a_fs_dir, char *buf,
+        TSK_OFF_T len, TSK_DADDR_T * addrs);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/win32/BUILDING.txt b/win32/BUILDING.txt
index a14e317065a6290c7624beefbb6470f33d21ee2c..d1bf6f3fa8fe764f5c6f8a15e2cc918d785bea72 100755
--- a/win32/BUILDING.txt
+++ b/win32/BUILDING.txt
@@ -1,28 +1,28 @@
-This file describes how to build TSK using Visual Studio (see README_win32.txt for instructions on building the win32 libraries and executables from Linux).  If you do not have a copy of Visual Studio, you can use the free Express Edition:
-
-    http://www.microsoft.com/express/vc/
-
-The Visual Studio Solution file has three build targets: Debug, Debug_NoLibs, and Release.  Debug and Release require that libewf exists (to provide support for E01 image files) and that zlib exists (to provide support for HFS+ compressed data).   Debug_NoLibs does not require libewf or zlib and you should be able to compile Debug_NoLibs without any additional setup.
-
-The steps below outline the process required to compile the Debug and Release targets.
-
-1) Download libewf-20130128 (or later) from:
-    http://sourceforge.net/projects/libewf/
-
-2) Open archive file and follow the README instructions in libewf to build libewf_dll (at the time of this writing, that includes downloading the zlib dll). Note that TSK will use only the Release version of libewf_dll.  Later steps also depend on the zlib dll being built inside of libewf. 
-
-3) Set the LIBEWF_HOME environment variable to point to the libewf folder that you created and built in step 2. 
-
-4) If you want to build libtsk_jni for the Java JNI bindings, then set the JDK_HOME environment variable to point to the top directory of your Java SDK.
-
-5) Open the TSK Visual Studio Solution file, tsk-win.sln, in the win32 directory. 
-
-6) Compile a Debug, Debug_NoLibs, or Release version of the libraries and executables.  The resulting libraries and executables will be put in win32/Debug, win32/Debug_NoLibs, or win32/Release as appropriate.
-
-7) Note that the libraries and executables will depend on the libewf and zlib dll files (which are copied to the TSK build directories). 
-
-Refer to the API docs at http://sleuthkit.org/sleuthkit/docs/api-docs/ for details on how to use the library in an application.
-
--------------------------------------------------------------------
-carrier <at> sleuthkit <dot> org
-Brian Carrier
+This file describes how to build TSK using Visual Studio (see README_win32.txt for instructions on building the win32 libraries and executables from Linux).  If you do not have a copy of Visual Studio, you can use the free Express Edition:
+
+    http://www.microsoft.com/express/vc/
+
+The Visual Studio Solution file has three build targets: Debug, Debug_NoLibs, and Release.  Debug and Release require that libewf exists (to provide support for E01 image files) and that zlib exists (to provide support for HFS+ compressed data).   Debug_NoLibs does not require libewf or zlib and you should be able to compile Debug_NoLibs without any additional setup.
+
+The steps below outline the process required to compile the Debug and Release targets.
+
+1) Download libewf-20130128 (or later) from:
+    http://sourceforge.net/projects/libewf/
+
+2) Open archive file and follow the README instructions in libewf to build libewf_dll (at the time of this writing, that includes downloading the zlib dll). Note that TSK will use only the Release version of libewf_dll.  Later steps also depend on the zlib dll being built inside of libewf. 
+
+3) Set the LIBEWF_HOME environment variable to point to the libewf folder that you created and built in step 2. 
+
+4) If you want to build libtsk_jni for the Java JNI bindings, then set the JDK_HOME environment variable to point to the top directory of your Java SDK.
+
+5) Open the TSK Visual Studio Solution file, tsk-win.sln, in the win32 directory. 
+
+6) Compile a Debug, Debug_NoLibs, or Release version of the libraries and executables.  The resulting libraries and executables will be put in win32/Debug, win32/Debug_NoLibs, or win32/Release as appropriate.
+
+7) Note that the libraries and executables will depend on the libewf and zlib dll files (which are copied to the TSK build directories). 
+
+Refer to the API docs at http://sleuthkit.org/sleuthkit/docs/api-docs/ for details on how to use the library in an application.
+
+-------------------------------------------------------------------
+carrier <at> sleuthkit <dot> org
+Brian Carrier
diff --git a/win32/blkcalc/blkcalc.vcproj b/win32/blkcalc/blkcalc.vcproj
index 53be44a5c2102e6141287d489d91e396ec0a2933..d616e994d512526a19488352a66704cf23355ace 100755
--- a/win32/blkcalc/blkcalc.vcproj
+++ b/win32/blkcalc/blkcalc.vcproj
@@ -1,263 +1,263 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="blkcalc"
-	ProjectGUID="{46B82840-9832-466F-8568-132407CA3853}"
-	RootNamespace="blkcalc"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\fstools\blkcalc.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="blkcalc"
+	ProjectGUID="{46B82840-9832-466F-8568-132407CA3853}"
+	RootNamespace="blkcalc"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\fstools\blkcalc.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/blkcalc/blkcalc.vcxproj b/win32/blkcalc/blkcalc.vcxproj
index cf7fc792aef140bed70b27db60ecec66af69eef4..11e02024cae540127d1d5972477a5ce16e219524 100755
--- a/win32/blkcalc/blkcalc.vcxproj
+++ b/win32/blkcalc/blkcalc.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{46B82840-9832-466F-8568-132407CA3853}</ProjectGuid>
-    <RootNamespace>blkcalc</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\blkcalc.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{46B82840-9832-466F-8568-132407CA3853}</ProjectGuid>
+    <RootNamespace>blkcalc</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\blkcalc.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/blkcalc/blkcalc.vcxproj.filters b/win32/blkcalc/blkcalc.vcxproj.filters
index ccb05697f69893a0649d4a8eb3f089c5fbbf922c..a815937df74be432eae4ef2a8e33063e887b6b0c 100755
--- a/win32/blkcalc/blkcalc.vcxproj.filters
+++ b/win32/blkcalc/blkcalc.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\blkcalc.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\blkcalc.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/blkcat/blkcat.vcproj b/win32/blkcat/blkcat.vcproj
index de016ba0c85355bee287377e303c18db2e1cc829..bfabf051fb337bbf90bc451aae3f1e05b4713de4 100755
--- a/win32/blkcat/blkcat.vcproj
+++ b/win32/blkcat/blkcat.vcproj
@@ -1,263 +1,263 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="blkcat"
-	ProjectGUID="{A2BEA467-A4CC-4FA6-9C74-587498E35467}"
-	RootNamespace="blkcat"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\fstools\blkcat.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="blkcat"
+	ProjectGUID="{A2BEA467-A4CC-4FA6-9C74-587498E35467}"
+	RootNamespace="blkcat"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\fstools\blkcat.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/blkcat/blkcat.vcxproj b/win32/blkcat/blkcat.vcxproj
index c3c3048ee2f6a662088e49a8b1744a7cfad58498..e6f5f9bee72dc341a030018a34c76be107e00ba1 100755
--- a/win32/blkcat/blkcat.vcxproj
+++ b/win32/blkcat/blkcat.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{A2BEA467-A4CC-4FA6-9C74-587498E35467}</ProjectGuid>
-    <RootNamespace>blkcat</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\blkcat.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{A2BEA467-A4CC-4FA6-9C74-587498E35467}</ProjectGuid>
+    <RootNamespace>blkcat</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\blkcat.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/blkcat/blkcat.vcxproj.filters b/win32/blkcat/blkcat.vcxproj.filters
index a3d1d1d0ed684c41002b70e18621419cf348bcad..ac7948617723a91d348e1b45e7f633a0ae694d45 100755
--- a/win32/blkcat/blkcat.vcxproj.filters
+++ b/win32/blkcat/blkcat.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\blkcat.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\blkcat.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/blkls/blkls.vcproj b/win32/blkls/blkls.vcproj
index 9aaec49138ca2d4599c740d7d63be521ae799976..92083bba72845a51e1f712ea937c0a190547984c 100755
--- a/win32/blkls/blkls.vcproj
+++ b/win32/blkls/blkls.vcproj
@@ -1,263 +1,263 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="blkls"
-	ProjectGUID="{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}"
-	RootNamespace="blkls"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\fstools\blkls.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="blkls"
+	ProjectGUID="{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}"
+	RootNamespace="blkls"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\fstools\blkls.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/blkls/blkls.vcxproj b/win32/blkls/blkls.vcxproj
index 61947ba532cb0f3e159b4eae46a66012176490dd..48df1b1653d685f7f917bee5f39832cd2e4b1823 100755
--- a/win32/blkls/blkls.vcxproj
+++ b/win32/blkls/blkls.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}</ProjectGuid>
-    <RootNamespace>blkls</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\blkls.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}</ProjectGuid>
+    <RootNamespace>blkls</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\blkls.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/blkls/blkls.vcxproj.filters b/win32/blkls/blkls.vcxproj.filters
index 7bc3cffbedfcc93672f3b33f1efeca1ad8d9e3d5..b4f48797b1e52f170be4f09890aebe2374960d06 100755
--- a/win32/blkls/blkls.vcxproj.filters
+++ b/win32/blkls/blkls.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\blkls.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\blkls.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/blkstat/blkstat.vcproj b/win32/blkstat/blkstat.vcproj
index f470a118fc5315f4ad613066b888983d1bc4bb7c..6f504287dbd0c4bf8c33e2bf30a863ad58bd325b 100755
--- a/win32/blkstat/blkstat.vcproj
+++ b/win32/blkstat/blkstat.vcproj
@@ -1,263 +1,263 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="blkstat"
-	ProjectGUID="{FBB66156-9A54-4713-A801-C507BE7A3AE3}"
-	RootNamespace="blkstat"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\fstools\blkstat.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="blkstat"
+	ProjectGUID="{FBB66156-9A54-4713-A801-C507BE7A3AE3}"
+	RootNamespace="blkstat"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\fstools\blkstat.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/blkstat/blkstat.vcxproj b/win32/blkstat/blkstat.vcxproj
index d4556a5ac7277c08894502d5d88adc09be155dca..52b2deb526830e44cae66dad8e45ad2bdce7addb 100755
--- a/win32/blkstat/blkstat.vcxproj
+++ b/win32/blkstat/blkstat.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{FBB66156-9A54-4713-A801-C507BE7A3AE3}</ProjectGuid>
-    <RootNamespace>blkstat</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\blkstat.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{FBB66156-9A54-4713-A801-C507BE7A3AE3}</ProjectGuid>
+    <RootNamespace>blkstat</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\blkstat.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/blkstat/blkstat.vcxproj.filters b/win32/blkstat/blkstat.vcxproj.filters
index 57470de94ad0a22abdfe54de24ac437a52516954..e905b26f2e935e13107fc617174fa996edecafef 100755
--- a/win32/blkstat/blkstat.vcxproj.filters
+++ b/win32/blkstat/blkstat.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\blkstat.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\blkstat.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/callback-cpp-sample/callback-cpp-sample.vcproj b/win32/callback-cpp-sample/callback-cpp-sample.vcproj
index 42b03e980740e0b4e6d07138478a584c8a895a30..1ddd471c74a00a80eea08b06d4b491f42675e424 100755
--- a/win32/callback-cpp-sample/callback-cpp-sample.vcproj
+++ b/win32/callback-cpp-sample/callback-cpp-sample.vcproj
@@ -1,265 +1,265 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="callback-cpp-sample"
-	ProjectGUID="{3B32F1BE-9686-4DC9-8197-F734D146E9F8}"
-	RootNamespace="callbackcppsample"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\samples\callback-cpp-style.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="callback-cpp-sample"
+	ProjectGUID="{3B32F1BE-9686-4DC9-8197-F734D146E9F8}"
+	RootNamespace="callbackcppsample"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\samples\callback-cpp-style.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/callback-cpp-sample/callback-cpp-sample.vcxproj b/win32/callback-cpp-sample/callback-cpp-sample.vcxproj
index 73ef5b61b731416769c5110e951e8af0ffbc81bf..a87ce23563d1b377a213c5e5da911994102380ac 100755
--- a/win32/callback-cpp-sample/callback-cpp-sample.vcxproj
+++ b/win32/callback-cpp-sample/callback-cpp-sample.vcxproj
@@ -1,140 +1,140 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{3B32F1BE-9686-4DC9-8197-F734D146E9F8}</ProjectGuid>
-    <RootNamespace>callbackcppsample</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\samples\callback-cpp-style.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{3B32F1BE-9686-4DC9-8197-F734D146E9F8}</ProjectGuid>
+    <RootNamespace>callbackcppsample</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\samples\callback-cpp-style.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/callback-cpp-sample/callback-cpp-sample.vcxproj.filters b/win32/callback-cpp-sample/callback-cpp-sample.vcxproj.filters
index c98eefefa7c31485e84f9c1e8b2a8b3f99347161..f51f8df736d26dbd26856cedb58f108661e04cc7 100755
--- a/win32/callback-cpp-sample/callback-cpp-sample.vcxproj.filters
+++ b/win32/callback-cpp-sample/callback-cpp-sample.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\samples\callback-cpp-style.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\samples\callback-cpp-style.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/callback-sample/callback-sample.vcproj b/win32/callback-sample/callback-sample.vcproj
index 11926dfe4c2a7003fd2f0becdae7850c92d42390..976a374e20b124dc15e8278722cbc9c096be5001 100755
--- a/win32/callback-sample/callback-sample.vcproj
+++ b/win32/callback-sample/callback-sample.vcproj
@@ -1,263 +1,263 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="callback-sample"
-	ProjectGUID="{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}"
-	RootNamespace="callbacksample"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\samples\callback-style.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="callback-sample"
+	ProjectGUID="{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}"
+	RootNamespace="callbacksample"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\samples\callback-style.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/callback-sample/callback-sample.vcxproj b/win32/callback-sample/callback-sample.vcxproj
index 31a9115a6fa320c2f72dd6bdb5a3953aaa8dff6a..5b495a678ece1736e5b71d1e874f2ce4e977fb54 100755
--- a/win32/callback-sample/callback-sample.vcxproj
+++ b/win32/callback-sample/callback-sample.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}</ProjectGuid>
-    <RootNamespace>callbacksample</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\samples\callback-style.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}</ProjectGuid>
+    <RootNamespace>callbacksample</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\samples\callback-style.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/callback-sample/callback-sample.vcxproj.filters b/win32/callback-sample/callback-sample.vcxproj.filters
index 955cf5ee7dc2084612af521a64a9aba705c425d4..2343f4a1d999315fe8c78fd32b200ccace23c683 100755
--- a/win32/callback-sample/callback-sample.vcxproj.filters
+++ b/win32/callback-sample/callback-sample.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\samples\callback-style.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\samples\callback-style.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/docs/README-win32.txt b/win32/docs/README-win32.txt
index 16f6f87234dd84d6c5e752b5f34577fbcd4b49a1..aa227d22fa9c2362146b4a1d5df16da868726efd 100755
--- a/win32/docs/README-win32.txt
+++ b/win32/docs/README-win32.txt
@@ -1,60 +1,60 @@
-                          The Sleuth Kit
-                        Windows Executables
-
-                http://www.sleuthkit.org/sleuthkit
-
-               Brian Carrier [carrier@sleuthkit.org]
-
-                     Last Updated: July 2012
-
-
-======================================================================
-
-This zip file contains the Microsoft Windows executables for The Sleuth
-Kit.  The full source code (including Visual Studio Solution files) and 
-documentation can be downloaded from:
-
-http://www.sleuthkit.org
-
-These are distributed under the IBM Public License and the Common 
-Public License, which can be found in the licenses folder. 
-
-
-NOTES
-
-The dll files in the zip file are required to run the executables. They
-must be either in the same directory as the executables or in the path.
-
-There have been reports of the exe files not running on some systems
-and they give the error "The system cannot execute the specified program".
-This occurs because the system can't find the needed dll files. Installing
-the "Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)" seems
-to fix the problem.  It can be downloaded from Microsoft:
-
-http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en
-
-
-mactime.pl requires a Windows port of Perl to be installed. If you have 
-the ".pl" extension associated with Perl, you should be able to run
-"mactime.pl" from the command line. Otherwise, you may need to run it
-as "perl mactime.pl".  Examples of Windows ports of Perl include:
-- ActivePerl (http://www.activestate.com/activeperl/)
-- Strawberry Perl (http://strawberryperl.com/)
-
-
-CURRENT LIMITATIONS
-
-The tools do not currently support globbing, which means that you 
-cannot use 'fls img.*' on a split image.  Windows does not automatically
-expand the '*' to all file names.  However, most split images can now
-be used in The Sleuth Kit by simply specifying the first segment's path.
-
-These programs can be run on a live system, if you use the 
-\\.\PhysicalDrive0 syntax.  Note though, that you may get errors or the
-file system type may not be detected because the data being read is out 
-of sync with cached versions of the data.  
-
-Unicode characters are not always properly displayed in the command
-shell.
-
-The AFF image formats are not supported. 
+                          The Sleuth Kit
+                        Windows Executables
+
+                http://www.sleuthkit.org/sleuthkit
+
+               Brian Carrier [carrier@sleuthkit.org]
+
+                     Last Updated: July 2012
+
+
+======================================================================
+
+This zip file contains the Microsoft Windows executables for The Sleuth
+Kit.  The full source code (including Visual Studio Solution files) and 
+documentation can be downloaded from:
+
+http://www.sleuthkit.org
+
+These are distributed under the IBM Public License and the Common 
+Public License, which can be found in the licenses folder. 
+
+
+NOTES
+
+The dll files in the zip file are required to run the executables. They
+must be either in the same directory as the executables or in the path.
+
+There have been reports of the exe files not running on some systems
+and they give the error "The system cannot execute the specified program".
+This occurs because the system can't find the needed dll files. Installing
+the "Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)" seems
+to fix the problem.  It can be downloaded from Microsoft:
+
+http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en
+
+
+mactime.pl requires a Windows port of Perl to be installed. If you have 
+the ".pl" extension associated with Perl, you should be able to run
+"mactime.pl" from the command line. Otherwise, you may need to run it
+as "perl mactime.pl".  Examples of Windows ports of Perl include:
+- ActivePerl (http://www.activestate.com/activeperl/)
+- Strawberry Perl (http://strawberryperl.com/)
+
+
+CURRENT LIMITATIONS
+
+The tools do not currently support globbing, which means that you 
+cannot use 'fls img.*' on a split image.  Windows does not automatically
+expand the '*' to all file names.  However, most split images can now
+be used in The Sleuth Kit by simply specifying the first segment's path.
+
+These programs can be run on a live system, if you use the 
+\\.\PhysicalDrive0 syntax.  Note though, that you may get errors or the
+file system type may not be detected because the data being read is out 
+of sync with cached versions of the data.  
+
+Unicode characters are not always properly displayed in the command
+shell.
+
+The AFF image formats are not supported. 
diff --git a/win32/fcat/fcat.vcxproj b/win32/fcat/fcat.vcxproj
index 30bdb305f41d6f3b64502baed8c767db6324fa47..c61da03fd9c0830131c7398c50642ffae9ee1632 100755
--- a/win32/fcat/fcat.vcxproj
+++ b/win32/fcat/fcat.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{E4A40368-152D-4D54-9E2E-4B140212F98F}</ProjectGuid>
-    <RootNamespace>fcat</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\fcat.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{E4A40368-152D-4D54-9E2E-4B140212F98F}</ProjectGuid>
+    <RootNamespace>fcat</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\fcat.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/ffind/ffind.vcproj b/win32/ffind/ffind.vcproj
index 85c82202b46a31dcce650e033a00a1a6c5161a05..9c5f919814e506f83bd3d0b7a023a01e928dc092 100755
--- a/win32/ffind/ffind.vcproj
+++ b/win32/ffind/ffind.vcproj
@@ -1,263 +1,263 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ffind"
-	ProjectGUID="{7C132953-1700-42FF-9F61-A814C9F2C758}"
-	RootNamespace="ffind"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\fstools\ffind.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="ffind"
+	ProjectGUID="{7C132953-1700-42FF-9F61-A814C9F2C758}"
+	RootNamespace="ffind"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\fstools\ffind.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/ffind/ffind.vcxproj b/win32/ffind/ffind.vcxproj
index df1b6877e633568751a82f49675f6e876d188cd1..83dbb72ec061da217ca4f8380b93cf0b8ba7baeb 100755
--- a/win32/ffind/ffind.vcxproj
+++ b/win32/ffind/ffind.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{7C132953-1700-42FF-9F61-A814C9F2C758}</ProjectGuid>
-    <RootNamespace>ffind</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\ffind.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{7C132953-1700-42FF-9F61-A814C9F2C758}</ProjectGuid>
+    <RootNamespace>ffind</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\ffind.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/ffind/ffind.vcxproj.filters b/win32/ffind/ffind.vcxproj.filters
index 5076345588e23206650fc181ec53735188f06b79..31766994497e148bf174bcf96d6d5135a4b66c41 100755
--- a/win32/ffind/ffind.vcxproj.filters
+++ b/win32/ffind/ffind.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\ffind.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\ffind.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/fls/fls.vcproj b/win32/fls/fls.vcproj
index a21d882c394e75e6982ee4c99ba0c30e4b87d47e..d345cb68e990977b40a2140e003b547853ae12df 100755
--- a/win32/fls/fls.vcproj
+++ b/win32/fls/fls.vcproj
@@ -1,266 +1,266 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="fls"
-	ProjectGUID="{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}"
-	RootNamespace="fls"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\fstools\fls.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="fls"
+	ProjectGUID="{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}"
+	RootNamespace="fls"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\fstools\fls.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/fls/fls.vcxproj b/win32/fls/fls.vcxproj
index fc589dafdb638873c7e6c2f8e8958f8c50b06ee2..53fc0fc03ea7d6f39a6a37d76f0bcf982d52b54e 100755
--- a/win32/fls/fls.vcxproj
+++ b/win32/fls/fls.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}</ProjectGuid>
-    <RootNamespace>fls</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\fls.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}</ProjectGuid>
+    <RootNamespace>fls</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\fls.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/fls/fls.vcxproj.filters b/win32/fls/fls.vcxproj.filters
index 5dda6706a845d6f540be271619ff8f6daeb3a317..023e457c2df000b7fe0b6adc1e3c17df3d0a7919 100755
--- a/win32/fls/fls.vcxproj.filters
+++ b/win32/fls/fls.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\fls.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\fls.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/fsstat/fsstat.vcproj b/win32/fsstat/fsstat.vcproj
index 5fc644f52e31ce3b6c07d668033c58875ab1f3ec..ad1f08aeb4f676736d9ba30339ca213728a27120 100755
--- a/win32/fsstat/fsstat.vcproj
+++ b/win32/fsstat/fsstat.vcproj
@@ -1,266 +1,266 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="fsstat"
-	ProjectGUID="{D1E6567A-4F65-4832-8018-D33B3CB4692B}"
-	RootNamespace="fsstat"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\fstools\fsstat.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="fsstat"
+	ProjectGUID="{D1E6567A-4F65-4832-8018-D33B3CB4692B}"
+	RootNamespace="fsstat"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\fstools\fsstat.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/fsstat/fsstat.vcxproj b/win32/fsstat/fsstat.vcxproj
index e0e8c66868deeb18f3014ff69e90685ea32afa23..cca0c1da8f035b7aca46c395d9a9707591cf68a6 100755
--- a/win32/fsstat/fsstat.vcxproj
+++ b/win32/fsstat/fsstat.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{D1E6567A-4F65-4832-8018-D33B3CB4692B}</ProjectGuid>
-    <RootNamespace>fsstat</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\fsstat.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{D1E6567A-4F65-4832-8018-D33B3CB4692B}</ProjectGuid>
+    <RootNamespace>fsstat</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\fsstat.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/fsstat/fsstat.vcxproj.filters b/win32/fsstat/fsstat.vcxproj.filters
index 948e0bff58cf1c75dd5a453025901b022f9c976d..2aec5947e0b63b5b8289f2b58f3956c1a825dd88 100755
--- a/win32/fsstat/fsstat.vcxproj.filters
+++ b/win32/fsstat/fsstat.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\fsstat.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\fsstat.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/hfind/hfind.vcproj b/win32/hfind/hfind.vcproj
index 8f3d730c6eadd7dd6dc30fbbf9550173618a7e9f..a451ada9bca7656cb89e8ca0cf0a541b64c64dd0 100755
--- a/win32/hfind/hfind.vcproj
+++ b/win32/hfind/hfind.vcproj
@@ -1,266 +1,266 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="hfind"
-	ProjectGUID="{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}"
-	RootNamespace="hfind"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\hashtools\hfind.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="hfind"
+	ProjectGUID="{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}"
+	RootNamespace="hfind"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\hashtools\hfind.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/hfind/hfind.vcxproj b/win32/hfind/hfind.vcxproj
index 5f335e7490b4dd76c72f19ad49125e7b1e682e99..46aeb6584ca8dfef06c577d50304dedadd9b69f1 100755
--- a/win32/hfind/hfind.vcxproj
+++ b/win32/hfind/hfind.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}</ProjectGuid>
-    <RootNamespace>hfind</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\hashtools\hfind.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}</ProjectGuid>
+    <RootNamespace>hfind</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\hashtools\hfind.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/hfind/hfind.vcxproj.filters b/win32/hfind/hfind.vcxproj.filters
index 39a79ec6c5ce32e23c06cad33caf780fecd55e32..290ee8128d8b5b334ba84e0561ad5b7831bd3b00 100755
--- a/win32/hfind/hfind.vcxproj.filters
+++ b/win32/hfind/hfind.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\hashtools\hfind.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\hashtools\hfind.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/icat/icat.vcproj b/win32/icat/icat.vcproj
index 3fa21133f96bd388612fe9bbcc63c8f115b2a1ff..a8f20dcd87b1d09657b64c2cd634a960968e6280 100755
--- a/win32/icat/icat.vcproj
+++ b/win32/icat/icat.vcproj
@@ -1,266 +1,266 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="icat"
-	ProjectGUID="{38D89022-2C83-4436-A333-375A2E3E7BB0}"
-	RootNamespace="icat"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\fstools\icat.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="icat"
+	ProjectGUID="{38D89022-2C83-4436-A333-375A2E3E7BB0}"
+	RootNamespace="icat"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\fstools\icat.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/icat/icat.vcxproj b/win32/icat/icat.vcxproj
index ab5657e0cce2ed9cfc344e95d9d5a3c27fa36cf6..9c792d5d93709514a443fc5ae75490bc1393905f 100755
--- a/win32/icat/icat.vcxproj
+++ b/win32/icat/icat.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{38D89022-2C83-4436-A333-375A2E3E7BB0}</ProjectGuid>
-    <RootNamespace>icat</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\icat.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{38D89022-2C83-4436-A333-375A2E3E7BB0}</ProjectGuid>
+    <RootNamespace>icat</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\icat.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/icat/icat.vcxproj.filters b/win32/icat/icat.vcxproj.filters
index e7aae44b743baecac3f176f4672e611f879acb0a..bfb0e89a529a2a09616bbe945475eb6aa7c604bf 100755
--- a/win32/icat/icat.vcxproj.filters
+++ b/win32/icat/icat.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\icat.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\icat.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/ifind/ifind.vcproj b/win32/ifind/ifind.vcproj
index 1ffd18a02a4193cc104b474c133a69991d587e22..e12cede1bf95af2ed1a3b7f4ad91df7c134a7bf9 100755
--- a/win32/ifind/ifind.vcproj
+++ b/win32/ifind/ifind.vcproj
@@ -1,266 +1,266 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ifind"
-	ProjectGUID="{52251CB2-65A3-421B-9CB4-7DAC13BB3758}"
-	RootNamespace="ifind"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\fstools\ifind.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="ifind"
+	ProjectGUID="{52251CB2-65A3-421B-9CB4-7DAC13BB3758}"
+	RootNamespace="ifind"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\fstools\ifind.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/ifind/ifind.vcxproj b/win32/ifind/ifind.vcxproj
index 09df401a65050d05b9846884956e41caa59678c5..60e6141e4705b34081e0381ecc8a5a8346a1214f 100755
--- a/win32/ifind/ifind.vcxproj
+++ b/win32/ifind/ifind.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{52251CB2-65A3-421B-9CB4-7DAC13BB3758}</ProjectGuid>
-    <RootNamespace>ifind</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\ifind.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{52251CB2-65A3-421B-9CB4-7DAC13BB3758}</ProjectGuid>
+    <RootNamespace>ifind</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\ifind.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/ifind/ifind.vcxproj.filters b/win32/ifind/ifind.vcxproj.filters
index e9c602d5214e361d87e4a7bb4114c6d9599e5def..4cbf97e2f6fa71bce38c45daa3b482c74d2396ba 100755
--- a/win32/ifind/ifind.vcxproj.filters
+++ b/win32/ifind/ifind.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\ifind.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\ifind.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/ils/ils.vcproj b/win32/ils/ils.vcproj
index 8f9123ee6499434486ec76c58737bf1ffa0d5407..6ca0b6f9cf9bcbdb0c9e73d20efa15998962bc35 100755
--- a/win32/ils/ils.vcproj
+++ b/win32/ils/ils.vcproj
@@ -1,266 +1,266 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="ils"
-	ProjectGUID="{62C97F5E-64DD-4623-9563-747C4C173348}"
-	RootNamespace="ils"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\fstools\ils.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="ils"
+	ProjectGUID="{62C97F5E-64DD-4623-9563-747C4C173348}"
+	RootNamespace="ils"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\fstools\ils.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/ils/ils.vcxproj b/win32/ils/ils.vcxproj
index f3c172fbc89ac4704aa1464d7498f4ab52c97664..e5df6dea1b1d0d20053a92200324183ce00535a0 100755
--- a/win32/ils/ils.vcxproj
+++ b/win32/ils/ils.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{62C97F5E-64DD-4623-9563-747C4C173348}</ProjectGuid>
-    <RootNamespace>ils</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\ils.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{62C97F5E-64DD-4623-9563-747C4C173348}</ProjectGuid>
+    <RootNamespace>ils</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\ils.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/ils/ils.vcxproj.filters b/win32/ils/ils.vcxproj.filters
index 68f3ad30db5d14ef40686f453dfeb631838f4289..c92f22c8489e0adb07281ae07eb8e1fb515044a5 100755
--- a/win32/ils/ils.vcxproj.filters
+++ b/win32/ils/ils.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\ils.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\ils.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/img_cat/img_cat.vcproj b/win32/img_cat/img_cat.vcproj
index 71e72ec3efd871edfdc2772f39c434ebd5dfd658..522a40b4064d1a4e7c2723a44a3451e14b5aae08 100755
--- a/win32/img_cat/img_cat.vcproj
+++ b/win32/img_cat/img_cat.vcproj
@@ -1,266 +1,266 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="img_cat"
-	ProjectGUID="{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}"
-	RootNamespace="img_cat"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\imgtools\img_cat.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="img_cat"
+	ProjectGUID="{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}"
+	RootNamespace="img_cat"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\imgtools\img_cat.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/img_cat/img_cat.vcxproj b/win32/img_cat/img_cat.vcxproj
index 57ce7d7ecbdb593ca49f497b0c7ad47e3c7542c1..1125835939af9a2a82eae4c14477a4144d0562f3 100755
--- a/win32/img_cat/img_cat.vcxproj
+++ b/win32/img_cat/img_cat.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}</ProjectGuid>
-    <RootNamespace>img_cat</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\imgtools\img_cat.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}</ProjectGuid>
+    <RootNamespace>img_cat</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\imgtools\img_cat.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/img_cat/img_cat.vcxproj.filters b/win32/img_cat/img_cat.vcxproj.filters
index 96fba2f66ae9ba42f44f93e27658ddb79b61e17c..825ee789acaa39e579904164803766f938d1f535 100755
--- a/win32/img_cat/img_cat.vcxproj.filters
+++ b/win32/img_cat/img_cat.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\imgtools\img_cat.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\imgtools\img_cat.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/img_stat/img_stat.vcproj b/win32/img_stat/img_stat.vcproj
index cb7dbd14e33c7bd925cc2af2041092e9823a92f7..fa0fa514499fb8859eb4c4ac85290ff6c3b91ed2 100755
--- a/win32/img_stat/img_stat.vcproj
+++ b/win32/img_stat/img_stat.vcproj
@@ -1,266 +1,266 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="img_stat"
-	ProjectGUID="{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}"
-	RootNamespace="img_stat"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\imgtools\img_stat.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="img_stat"
+	ProjectGUID="{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}"
+	RootNamespace="img_stat"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\imgtools\img_stat.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/img_stat/img_stat.vcxproj b/win32/img_stat/img_stat.vcxproj
index f43d520aa0ad2adb305c0dd92f9a44483d0d2430..9e188c4ea9602f47facf10573b76c632133e8029 100755
--- a/win32/img_stat/img_stat.vcxproj
+++ b/win32/img_stat/img_stat.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}</ProjectGuid>
-    <RootNamespace>img_stat</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\imgtools\img_stat.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}</ProjectGuid>
+    <RootNamespace>img_stat</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\imgtools\img_stat.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/img_stat/img_stat.vcxproj.filters b/win32/img_stat/img_stat.vcxproj.filters
index 22e04ec12322d7fb86554f3e0c858cb40d50d1d4..9dc0d53d20932ee9cd290bb642128d0c4d3b1053 100755
--- a/win32/img_stat/img_stat.vcxproj.filters
+++ b/win32/img_stat/img_stat.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\imgtools\img_stat.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\imgtools\img_stat.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/istat/istat.vcproj b/win32/istat/istat.vcproj
index 2ef055a288f48c87ea277f1c1a1789ff75b8651d..3061fbeb8dad0f5014164accd0a8c12a84e8dd08 100755
--- a/win32/istat/istat.vcproj
+++ b/win32/istat/istat.vcproj
@@ -1,266 +1,266 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="istat"
-	ProjectGUID="{D7643AD7-8518-4B3E-8F3F-F11258D9540E}"
-	RootNamespace="istat"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\fstools\istat.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="istat"
+	ProjectGUID="{D7643AD7-8518-4B3E-8F3F-F11258D9540E}"
+	RootNamespace="istat"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\fstools\istat.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/istat/istat.vcxproj b/win32/istat/istat.vcxproj
index 4661a2494d6ad75b2e5b42b6d6446d730534287e..2f8934a03391f8c5ef160bc84b0c75036e59ff95 100755
--- a/win32/istat/istat.vcxproj
+++ b/win32/istat/istat.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{D7643AD7-8518-4B3E-8F3F-F11258D9540E}</ProjectGuid>
-    <RootNamespace>istat</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\istat.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{D7643AD7-8518-4B3E-8F3F-F11258D9540E}</ProjectGuid>
+    <RootNamespace>istat</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\istat.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/istat/istat.vcxproj.filters b/win32/istat/istat.vcxproj.filters
index e64bed34f32db0cec21842849606ee8556ad9cab..76c9f883e44228bca95e5c111f6ae2be827b6e00 100755
--- a/win32/istat/istat.vcxproj.filters
+++ b/win32/istat/istat.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\istat.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\istat.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/jcat/jcat.vcproj b/win32/jcat/jcat.vcproj
index edef0262af11f4bb998c870a868626f8300a7f53..4fff9d10879d0066a4a3173a23575d438a33566f 100755
--- a/win32/jcat/jcat.vcproj
+++ b/win32/jcat/jcat.vcproj
@@ -1,266 +1,266 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="jcat"
-	ProjectGUID="{44A003BE-400D-4434-AFED-64D8E3B448D9}"
-	RootNamespace="jcat"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\fstools\jcat.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="jcat"
+	ProjectGUID="{44A003BE-400D-4434-AFED-64D8E3B448D9}"
+	RootNamespace="jcat"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\fstools\jcat.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/jcat/jcat.vcxproj b/win32/jcat/jcat.vcxproj
index 622519826b2548eb8edf24ef0ffc5159e386e33f..55a5c8a6d56336797e4e83ad1f39945bf9271d8c 100755
--- a/win32/jcat/jcat.vcxproj
+++ b/win32/jcat/jcat.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{44A003BE-400D-4434-AFED-64D8E3B448D9}</ProjectGuid>
-    <RootNamespace>jcat</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\jcat.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{44A003BE-400D-4434-AFED-64D8E3B448D9}</ProjectGuid>
+    <RootNamespace>jcat</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\jcat.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/jcat/jcat.vcxproj.filters b/win32/jcat/jcat.vcxproj.filters
index efdb602bdac0eaadb1f5fca4c5505f19e6d4e4bd..3178ebd6df8f48ce12aab9f2c45e1013f188c590 100755
--- a/win32/jcat/jcat.vcxproj.filters
+++ b/win32/jcat/jcat.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\jcat.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\jcat.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/jls/jls.vcproj b/win32/jls/jls.vcproj
index 6cedc4ffcb9813a56f167a394b48082954126d63..0972aab89df5969372e7a89fbed0d6f81f735840 100755
--- a/win32/jls/jls.vcproj
+++ b/win32/jls/jls.vcproj
@@ -1,266 +1,266 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="jls"
-	ProjectGUID="{C52F935E-1FD2-443C-A181-27908DAB3BC8}"
-	RootNamespace="jls"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\fstools\jls.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="jls"
+	ProjectGUID="{C52F935E-1FD2-443C-A181-27908DAB3BC8}"
+	RootNamespace="jls"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\fstools\jls.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/jls/jls.vcxproj b/win32/jls/jls.vcxproj
index 8b9cf63bead84cf3df74ca0b8f1a9f14c4d8fb15..40e6f5248cfe925ee54fd870120d310d3e161c94 100755
--- a/win32/jls/jls.vcxproj
+++ b/win32/jls/jls.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{C52F935E-1FD2-443C-A181-27908DAB3BC8}</ProjectGuid>
-    <RootNamespace>jls</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\jls.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C52F935E-1FD2-443C-A181-27908DAB3BC8}</ProjectGuid>
+    <RootNamespace>jls</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\jls.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/jls/jls.vcxproj.filters b/win32/jls/jls.vcxproj.filters
index dba81b1a48e1fcb8463dadbd77dc153fb260d5d9..330c159e9241b2e24189daadb2e10d1bbccdadd8 100755
--- a/win32/jls/jls.vcxproj.filters
+++ b/win32/jls/jls.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\fstools\jls.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\fstools\jls.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/libtsk/libtsk.vcproj b/win32/libtsk/libtsk.vcproj
index 8601ecebd04b2e93dc53157f4a925129e8356070..aca9babb6d621285be8142691ad4b1cb013d5900 100755
--- a/win32/libtsk/libtsk.vcproj
+++ b/win32/libtsk/libtsk.vcproj
@@ -1,691 +1,691 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="libtsk"
-	ProjectGUID="{76EFC06C-1F64-4478-ABE8-79832716B393}"
-	RootNamespace="libtsk"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="196613"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\&quot;;&quot;$(LIBEWF_HOME)\common&quot;;&quot;$(LIBEWF_HOME)\include&quot;;&quot;$(LIBEWF_HOME)\msvscpp\zlib-1.2.6&quot;"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;HAVE_LIBEWF;HAVE_LIBZ;WIN32;_DEBUG;_LIB"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine="copy &quot;$(LIBEWF_HOME)\msvscpp\release\libewf.dll&quot; &quot;$(OutDir)&quot;&#x0D;&#x0A;copy &quot;$(LIBEWF_HOME)\msvscpp\release\zlib.dll&quot; &quot;$(OutDir)&quot;&#x0D;&#x0A;"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\&quot;;&quot;$(LIBEWF_HOME)\common&quot;;&quot;$(LIBEWF_HOME)\include&quot;;&quot;$(LIBEWF_HOME)\msvscpp\zlib-1.2.6&quot;"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;HAVE_LIBEWF;HAVE_LIBZ;WIN32;NDEBUG;_LIB"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine="copy &quot;$(LIBEWF_HOME)\msvscpp\release\libewf.dll&quot; &quot;$(OutDir)&quot;&#x0D;&#x0A;copy &quot;$(LIBEWF_HOME)\msvscpp\release\zlib.dll&quot; &quot;$(OutDir)&quot;&#x0D;&#x0A;"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="4"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;WIN32;_DEBUG;_LIB"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="vs"
-			>
-			<File
-				RelativePath="..\..\tsk\vs\bsd.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\vs\dos.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\vs\gpt.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\vs\mac.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\vs\mm_io.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\vs\mm_open.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\vs\mm_part.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\vs\mm_types.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\vs\sun.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\vs\tsk_bsd.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\vs\tsk_dos.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\vs\tsk_gpt.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\vs\tsk_mac.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\vs\tsk_sun.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\vs\tsk_vs.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\vs\tsk_vs_i.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="fs"
-			>
-			<File
-				RelativePath="..\..\tsk\fs\dcalc_lib.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\dcat_lib.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\dls_lib.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\dstat_lib.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\ext2fs.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\ext2fs_dent.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\ext2fs_journal.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fatfs.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fatfs_dent.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fatfs_meta.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\ffind_lib.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\ffs.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\ffs_dent.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fls_lib.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fs_attr.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fs_attrlist.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fs_block.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fs_dir.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fs_file.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fs_inode.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fs_io.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fs_load.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fs_name.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fs_open.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fs_parse.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\fs_types.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\hfs.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\hfs_dent.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\hfs_journal.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\hfs_unicompare.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\icat_lib.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\ifind_lib.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\ils_lib.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\iso9660.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\iso9660_dent.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\nofs_misc.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\ntfs.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\ntfs_dent.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\rawfs.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\swapfs.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\tsk_ext2fs.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\tsk_fatfs.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\tsk_ffs.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\tsk_fs.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\tsk_fs_i.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\tsk_hfs.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\tsk_iso9660.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\tsk_ntfs.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\unix_misc.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\fs\walk_cpp.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="auto"
-			>
-			<File
-				RelativePath="..\..\tsk\auto\auto.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\auto\auto_db.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\auto\case_db.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\auto\db_sqlite.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\auto\sqlite3.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\auto\sqlite3.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\auto\tsk_auto.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\auto\tsk_auto_i.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\auto\tsk_case_db.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\auto\tsk_db_sqlite.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="base"
-			>
-			<File
-				RelativePath="..\..\tsk\base\md5c.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\mymalloc.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\sha1c.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\tsk_base.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\tsk_base_i.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\tsk_endian.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\tsk_error.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\tsk_error_win32.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\tsk_list.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\tsk_lock.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\tsk_os.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\tsk_parse.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\tsk_printf.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\tsk_stack.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\tsk_unicode.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\tsk_version.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\base\XGetopt.c"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="hash"
-			>
-			<File
-				RelativePath="..\..\tsk\hashdb\encase_index.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\hashdb\hk_index.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\hashdb\idxonly_index.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\hashdb\md5sum_index.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\hashdb\nsrl_index.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\hashdb\tm_lookup.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\hashdb\tsk_hashdb.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\hashdb\tsk_hashdb_i.h"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="img"
-			>
-			<File
-				RelativePath="..\..\tsk\img\aff.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\img\aff.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\img\ewf.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\img\ewf.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\img\img_io.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\img\img_open.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\img\img_types.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\img\mult_files.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\img\raw.c"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\img\raw.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\img\tsk_img.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\tsk\img\tsk_img_i.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="libtsk"
+	ProjectGUID="{76EFC06C-1F64-4478-ABE8-79832716B393}"
+	RootNamespace="libtsk"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="196613"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="4"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\&quot;;&quot;$(LIBEWF_HOME)\common&quot;;&quot;$(LIBEWF_HOME)\include&quot;;&quot;$(LIBEWF_HOME)\msvscpp\zlib-1.2.6&quot;"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;HAVE_LIBEWF;HAVE_LIBZ;WIN32;_DEBUG;_LIB"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(LIBEWF_HOME)\msvscpp\release\libewf.dll&quot; &quot;$(OutDir)&quot;&#x0D;&#x0A;copy &quot;$(LIBEWF_HOME)\msvscpp\release\zlib.dll&quot; &quot;$(OutDir)&quot;&#x0D;&#x0A;"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="4"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				AdditionalIncludeDirectories="&quot;$(ProjectDir)\..\..\&quot;;&quot;$(LIBEWF_HOME)\common&quot;;&quot;$(LIBEWF_HOME)\include&quot;;&quot;$(LIBEWF_HOME)\msvscpp\zlib-1.2.6&quot;"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;HAVE_LIBEWF;HAVE_LIBZ;WIN32;NDEBUG;_LIB"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy &quot;$(LIBEWF_HOME)\msvscpp\release\libewf.dll&quot; &quot;$(OutDir)&quot;&#x0D;&#x0A;copy &quot;$(LIBEWF_HOME)\msvscpp\release\zlib.dll&quot; &quot;$(OutDir)&quot;&#x0D;&#x0A;"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="4"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE;WIN32;_DEBUG;_LIB"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="vs"
+			>
+			<File
+				RelativePath="..\..\tsk\vs\bsd.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\vs\dos.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\vs\gpt.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\vs\mac.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\vs\mm_io.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\vs\mm_open.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\vs\mm_part.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\vs\mm_types.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\vs\sun.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\vs\tsk_bsd.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\vs\tsk_dos.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\vs\tsk_gpt.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\vs\tsk_mac.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\vs\tsk_sun.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\vs\tsk_vs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\vs\tsk_vs_i.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="fs"
+			>
+			<File
+				RelativePath="..\..\tsk\fs\dcalc_lib.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\dcat_lib.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\dls_lib.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\dstat_lib.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\ext2fs.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\ext2fs_dent.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\ext2fs_journal.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fatfs.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fatfs_dent.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fatfs_meta.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\ffind_lib.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\ffs.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\ffs_dent.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fls_lib.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fs_attr.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fs_attrlist.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fs_block.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fs_dir.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fs_file.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fs_inode.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fs_io.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fs_load.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fs_name.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fs_open.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fs_parse.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\fs_types.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\hfs.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\hfs_dent.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\hfs_journal.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\hfs_unicompare.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\icat_lib.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\ifind_lib.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\ils_lib.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\iso9660.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\iso9660_dent.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\nofs_misc.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\ntfs.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\ntfs_dent.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\rawfs.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\swapfs.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\tsk_ext2fs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\tsk_fatfs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\tsk_ffs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\tsk_fs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\tsk_fs_i.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\tsk_hfs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\tsk_iso9660.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\tsk_ntfs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\unix_misc.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\fs\walk_cpp.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="auto"
+			>
+			<File
+				RelativePath="..\..\tsk\auto\auto.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\auto\auto_db.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\auto\case_db.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\auto\db_sqlite.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\auto\sqlite3.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\auto\sqlite3.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\auto\tsk_auto.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\auto\tsk_auto_i.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\auto\tsk_case_db.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\auto\tsk_db_sqlite.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="base"
+			>
+			<File
+				RelativePath="..\..\tsk\base\md5c.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\mymalloc.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\sha1c.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\tsk_base.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\tsk_base_i.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\tsk_endian.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\tsk_error.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\tsk_error_win32.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\tsk_list.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\tsk_lock.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\tsk_os.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\tsk_parse.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\tsk_printf.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\tsk_stack.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\tsk_unicode.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\tsk_version.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\base\XGetopt.c"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="hash"
+			>
+			<File
+				RelativePath="..\..\tsk\hashdb\encase_index.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\hashdb\hk_index.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\hashdb\idxonly_index.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\hashdb\md5sum_index.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\hashdb\nsrl_index.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\hashdb\tm_lookup.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\hashdb\tsk_hashdb.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\hashdb\tsk_hashdb_i.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="img"
+			>
+			<File
+				RelativePath="..\..\tsk\img\aff.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\img\aff.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\img\ewf.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\img\ewf.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\img\img_io.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\img\img_open.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\img\img_types.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\img\mult_files.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\img\raw.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\img\raw.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\img\tsk_img.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\tsk\img\tsk_img_i.h"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/mmcat/mmcat.vcproj b/win32/mmcat/mmcat.vcproj
index 191e63bec911077e96ccff593d666b83dda98879..a164aaba067d2c433a6471c46d52d274f506bda6 100755
--- a/win32/mmcat/mmcat.vcproj
+++ b/win32/mmcat/mmcat.vcproj
@@ -1,266 +1,266 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="mmcat"
-	ProjectGUID="{A15F1E4F-951A-403E-B746-2A6D63D9C416}"
-	RootNamespace="mmcat"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\vstools\mmcat.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="mmcat"
+	ProjectGUID="{A15F1E4F-951A-403E-B746-2A6D63D9C416}"
+	RootNamespace="mmcat"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\vstools\mmcat.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/mmcat/mmcat.vcxproj b/win32/mmcat/mmcat.vcxproj
index 625830e36aa97c4a79d5a10a9588fab0cf15a642..054146979559510dd671f8f216d4154f2a7f538d 100755
--- a/win32/mmcat/mmcat.vcxproj
+++ b/win32/mmcat/mmcat.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{A15F1E4F-951A-403E-B746-2A6D63D9C416}</ProjectGuid>
-    <RootNamespace>mmcat</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\vstools\mmcat.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{A15F1E4F-951A-403E-B746-2A6D63D9C416}</ProjectGuid>
+    <RootNamespace>mmcat</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\vstools\mmcat.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/mmcat/mmcat.vcxproj.filters b/win32/mmcat/mmcat.vcxproj.filters
index 431cbed718ce8adf1cee7744d63ebc86fe1c3958..3a27fbadd4f08b537634ce9bc3fcbe7c4596110c 100755
--- a/win32/mmcat/mmcat.vcxproj.filters
+++ b/win32/mmcat/mmcat.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\vstools\mmcat.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\vstools\mmcat.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/mmls/mmls.vcproj b/win32/mmls/mmls.vcproj
index cbcc8a6444508b9c8e57a0fdc5d6ccd6cc2834e8..3ff019d2f171d866745ea5d2332cae6874ebae82 100755
--- a/win32/mmls/mmls.vcproj
+++ b/win32/mmls/mmls.vcproj
@@ -1,266 +1,266 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="mmls"
-	ProjectGUID="{712DD83B-786E-485E-83C7-7197DD851B78}"
-	RootNamespace="mmls"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\vstools\mmls.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="mmls"
+	ProjectGUID="{712DD83B-786E-485E-83C7-7197DD851B78}"
+	RootNamespace="mmls"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\vstools\mmls.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/mmls/mmls.vcxproj b/win32/mmls/mmls.vcxproj
index fd7549e4e7a3322387138ed3b7b081a1f866f616..f5dbaad852c87be8444ce452287a50ec3d899197 100755
--- a/win32/mmls/mmls.vcxproj
+++ b/win32/mmls/mmls.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{712DD83B-786E-485E-83C7-7197DD851B78}</ProjectGuid>
-    <RootNamespace>mmls</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\vstools\mmls.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{712DD83B-786E-485E-83C7-7197DD851B78}</ProjectGuid>
+    <RootNamespace>mmls</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\vstools\mmls.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/mmls/mmls.vcxproj.filters b/win32/mmls/mmls.vcxproj.filters
index 227438a0dbecf11c4160671d3381c298edfc1362..72b150512054c938092246f9c0c640914f98a5a2 100755
--- a/win32/mmls/mmls.vcxproj.filters
+++ b/win32/mmls/mmls.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\vstools\mmls.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\vstools\mmls.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/mmstat/mmstat.vcproj b/win32/mmstat/mmstat.vcproj
index 76e73026394f3fa7bbd9a3f458bc6885d51f3f61..32b7dd9e31333934421f679bb6910586d0c34db5 100755
--- a/win32/mmstat/mmstat.vcproj
+++ b/win32/mmstat/mmstat.vcproj
@@ -1,266 +1,266 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="mmstat"
-	ProjectGUID="{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}"
-	RootNamespace="mmstat"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\vstools\mmstat.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="mmstat"
+	ProjectGUID="{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}"
+	RootNamespace="mmstat"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\vstools\mmstat.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/mmstat/mmstat.vcxproj b/win32/mmstat/mmstat.vcxproj
index 7ed19ed4829dc16d985efb8824601f9d18be2e0b..5675624fe7258e0f54918d0bcbb522fc8b65d814 100755
--- a/win32/mmstat/mmstat.vcxproj
+++ b/win32/mmstat/mmstat.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}</ProjectGuid>
-    <RootNamespace>mmstat</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\vstools\mmstat.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}</ProjectGuid>
+    <RootNamespace>mmstat</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\vstools\mmstat.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/mmstat/mmstat.vcxproj.filters b/win32/mmstat/mmstat.vcxproj.filters
index 23a8b2f1f3627e4340b3e3f3af0f1117549b4b3a..ebef696835a95741c33ed7ab9abf15c9148f7864 100755
--- a/win32/mmstat/mmstat.vcxproj.filters
+++ b/win32/mmstat/mmstat.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\vstools\mmstat.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\vstools\mmstat.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/posix-cpp-sample/posix-cpp-sample.vcproj b/win32/posix-cpp-sample/posix-cpp-sample.vcproj
index f0697ae93ac8ec93914b8abe5fd650c4341a8038..ee8aa80e357334b2a607e6988c6c0ccac9753540 100755
--- a/win32/posix-cpp-sample/posix-cpp-sample.vcproj
+++ b/win32/posix-cpp-sample/posix-cpp-sample.vcproj
@@ -1,262 +1,262 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="posix-cpp-sample"
-	ProjectGUID="{5594DC0E-191C-4F2A-83FE-97F53A9C1222}"
-	RootNamespace="posixcppsample"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\samples\posix-cpp-style.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="posix-cpp-sample"
+	ProjectGUID="{5594DC0E-191C-4F2A-83FE-97F53A9C1222}"
+	RootNamespace="posixcppsample"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\samples\posix-cpp-style.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/posix-cpp-sample/posix-cpp-sample.vcxproj b/win32/posix-cpp-sample/posix-cpp-sample.vcxproj
index af0a65e95987a395fcd1f974bd4936f966eb371a..90471adaaf127dd475a4cf5ad2b927097ea96087 100755
--- a/win32/posix-cpp-sample/posix-cpp-sample.vcxproj
+++ b/win32/posix-cpp-sample/posix-cpp-sample.vcxproj
@@ -1,137 +1,137 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{5594DC0E-191C-4F2A-83FE-97F53A9C1222}</ProjectGuid>
-    <RootNamespace>posixcppsample</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\samples\posix-cpp-style.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{5594DC0E-191C-4F2A-83FE-97F53A9C1222}</ProjectGuid>
+    <RootNamespace>posixcppsample</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\samples\posix-cpp-style.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/posix-cpp-sample/posix-cpp-sample.vcxproj.filters b/win32/posix-cpp-sample/posix-cpp-sample.vcxproj.filters
index 113a655ef50dcb80ce00efaeec3e41d07b68e09f..cd2805ca84e38b5b2ac09885628e29f976b18e0c 100755
--- a/win32/posix-cpp-sample/posix-cpp-sample.vcxproj.filters
+++ b/win32/posix-cpp-sample/posix-cpp-sample.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\samples\posix-cpp-style.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\samples\posix-cpp-style.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/posix-sample/posix-sample.vcproj b/win32/posix-sample/posix-sample.vcproj
index a8c78317914cb5f42fda801dadebc322047ba934..55ada157c3bf94e9f7c96eaeb71df2781268a34c 100755
--- a/win32/posix-sample/posix-sample.vcproj
+++ b/win32/posix-sample/posix-sample.vcproj
@@ -1,266 +1,266 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="posix-sample"
-	ProjectGUID="{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}"
-	RootNamespace="posixsample"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="131072"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				Detect64BitPortabilityProblems="false"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				RandomizedBaseAddress="1"
-				DataExecutionPrevention="0"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\samples\posix-style.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="posix-sample"
+	ProjectGUID="{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}"
+	RootNamespace="posixsample"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\samples\posix-style.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/posix-sample/posix-sample.vcxproj b/win32/posix-sample/posix-sample.vcxproj
index 5a1effdc2e40cea5f91b7e8abdf01a9cc73f9377..db1c34b5f66713a58adaaf0af61463b647455fcb 100755
--- a/win32/posix-sample/posix-sample.vcxproj
+++ b/win32/posix-sample/posix-sample.vcxproj
@@ -1,143 +1,143 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}</ProjectGuid>
-    <RootNamespace>posixsample</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <RandomizedBaseAddress>false</RandomizedBaseAddress>
-      <DataExecutionPrevention>
-      </DataExecutionPrevention>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\samples\posix-style.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}</ProjectGuid>
+    <RootNamespace>posixsample</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <RandomizedBaseAddress>false</RandomizedBaseAddress>
+      <DataExecutionPrevention>
+      </DataExecutionPrevention>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\samples\posix-style.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/posix-sample/posix-sample.vcxproj.filters b/win32/posix-sample/posix-sample.vcxproj.filters
index 5d01e279e6a795edf2a728778a2b983e66e2d13d..d472120f75574ca868e4be656075f27a3d212cff 100755
--- a/win32/posix-sample/posix-sample.vcxproj.filters
+++ b/win32/posix-sample/posix-sample.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\samples\posix-style.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\samples\posix-style.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/tsk-win.sln b/win32/tsk-win.sln
index 9905bc08aa8baf6c739ce3dcee82a7c02f907689..18da441bc54add04bd7876217ba6bd5225777bff 100644
--- a/win32/tsk-win.sln
+++ b/win32/tsk-win.sln
@@ -1,255 +1,255 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual C++ Express 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "img_stat", "img_stat\img_stat.vcxproj", "{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mmls", "mmls\mmls.vcxproj", "{712DD83B-786E-485E-83C7-7197DD851B78}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "img_cat", "img_cat\img_cat.vcxproj", "{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mmstat", "mmstat\mmstat.vcxproj", "{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fls", "fls\fls.vcxproj", "{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fsstat", "fsstat\fsstat.vcxproj", "{D1E6567A-4F65-4832-8018-D33B3CB4692B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blkcat", "blkcat\blkcat.vcxproj", "{A2BEA467-A4CC-4FA6-9C74-587498E35467}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blkstat", "blkstat\blkstat.vcxproj", "{FBB66156-9A54-4713-A801-C507BE7A3AE3}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blkcalc", "blkcalc\blkcalc.vcxproj", "{46B82840-9832-466F-8568-132407CA3853}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blkls", "blkls\blkls.vcxproj", "{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ffind", "ffind\ffind.vcxproj", "{7C132953-1700-42FF-9F61-A814C9F2C758}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icat", "icat\icat.vcxproj", "{38D89022-2C83-4436-A333-375A2E3E7BB0}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ifind", "ifind\ifind.vcxproj", "{52251CB2-65A3-421B-9CB4-7DAC13BB3758}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ils", "ils\ils.vcxproj", "{62C97F5E-64DD-4623-9563-747C4C173348}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "istat", "istat\istat.vcxproj", "{D7643AD7-8518-4B3E-8F3F-F11258D9540E}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jcat", "jcat\jcat.vcxproj", "{44A003BE-400D-4434-AFED-64D8E3B448D9}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jls", "jls\jls.vcxproj", "{C52F935E-1FD2-443C-A181-27908DAB3BC8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hfind", "hfind\hfind.vcxproj", "{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mmcat", "mmcat\mmcat.vcxproj", "{A15F1E4F-951A-403E-B746-2A6D63D9C416}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "callback-sample", "callback-sample\callback-sample.vcxproj", "{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "posix-sample", "posix-sample\posix-sample.vcxproj", "{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tsk_recover", "tsk_recover\tsk_recover.vcxproj", "{06D707E5-68FF-4FC4-AFD0-C84584E32F47}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tsk_loaddb", "tsk_loaddb\tsk_loaddb.vcxproj", "{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tsk_comparedir", "tsk_comparedir\tsk_compare.vcxproj", "{8EE881F4-78DC-49C7-8845-E842358AC0FA}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "callback-cpp-sample", "callback-cpp-sample\callback-cpp-sample.vcxproj", "{3B32F1BE-9686-4DC9-8197-F734D146E9F8}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "posix-cpp-sample", "posix-cpp-sample\posix-cpp-sample.vcxproj", "{5594DC0E-191C-4F2A-83FE-97F53A9C1222}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tsk_gettimes", "tsk_gettimes\tsk_gettimes.vcxproj", "{11A8927C-F971-4104-A286-5DC11C25E2EC}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtsk_jni", "tsk_jni\tsk_jni.vcxproj", "{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtsk", "libtsk\libtsk.vcxproj", "{76EFC06C-1F64-4478-ABE8-79832716B393}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fcat", "fcat\fcat.vcxproj", "{E4A40368-152D-4D54-9E2E-4B140212F98F}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug_NoLibs|Win32 = Debug_NoLibs|Win32
-		Debug|Win32 = Debug|Win32
-		Release|Win32 = Release|Win32
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}.Debug|Win32.ActiveCfg = Debug|Win32
-		{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}.Debug|Win32.Build.0 = Debug|Win32
-		{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}.Release|Win32.ActiveCfg = Release|Win32
-		{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}.Release|Win32.Build.0 = Release|Win32
-		{712DD83B-786E-485E-83C7-7197DD851B78}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{712DD83B-786E-485E-83C7-7197DD851B78}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{712DD83B-786E-485E-83C7-7197DD851B78}.Debug|Win32.ActiveCfg = Debug|Win32
-		{712DD83B-786E-485E-83C7-7197DD851B78}.Debug|Win32.Build.0 = Debug|Win32
-		{712DD83B-786E-485E-83C7-7197DD851B78}.Release|Win32.ActiveCfg = Release|Win32
-		{712DD83B-786E-485E-83C7-7197DD851B78}.Release|Win32.Build.0 = Release|Win32
-		{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}.Debug|Win32.ActiveCfg = Debug|Win32
-		{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}.Debug|Win32.Build.0 = Debug|Win32
-		{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}.Release|Win32.ActiveCfg = Release|Win32
-		{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}.Release|Win32.Build.0 = Release|Win32
-		{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}.Debug|Win32.ActiveCfg = Debug|Win32
-		{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}.Debug|Win32.Build.0 = Debug|Win32
-		{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}.Release|Win32.ActiveCfg = Release|Win32
-		{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}.Release|Win32.Build.0 = Release|Win32
-		{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}.Debug|Win32.ActiveCfg = Debug|Win32
-		{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}.Debug|Win32.Build.0 = Debug|Win32
-		{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}.Release|Win32.ActiveCfg = Release|Win32
-		{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}.Release|Win32.Build.0 = Release|Win32
-		{D1E6567A-4F65-4832-8018-D33B3CB4692B}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{D1E6567A-4F65-4832-8018-D33B3CB4692B}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{D1E6567A-4F65-4832-8018-D33B3CB4692B}.Debug|Win32.ActiveCfg = Debug|Win32
-		{D1E6567A-4F65-4832-8018-D33B3CB4692B}.Debug|Win32.Build.0 = Debug|Win32
-		{D1E6567A-4F65-4832-8018-D33B3CB4692B}.Release|Win32.ActiveCfg = Release|Win32
-		{D1E6567A-4F65-4832-8018-D33B3CB4692B}.Release|Win32.Build.0 = Release|Win32
-		{A2BEA467-A4CC-4FA6-9C74-587498E35467}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{A2BEA467-A4CC-4FA6-9C74-587498E35467}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{A2BEA467-A4CC-4FA6-9C74-587498E35467}.Debug|Win32.ActiveCfg = Debug|Win32
-		{A2BEA467-A4CC-4FA6-9C74-587498E35467}.Debug|Win32.Build.0 = Debug|Win32
-		{A2BEA467-A4CC-4FA6-9C74-587498E35467}.Release|Win32.ActiveCfg = Release|Win32
-		{A2BEA467-A4CC-4FA6-9C74-587498E35467}.Release|Win32.Build.0 = Release|Win32
-		{FBB66156-9A54-4713-A801-C507BE7A3AE3}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{FBB66156-9A54-4713-A801-C507BE7A3AE3}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{FBB66156-9A54-4713-A801-C507BE7A3AE3}.Debug|Win32.ActiveCfg = Debug|Win32
-		{FBB66156-9A54-4713-A801-C507BE7A3AE3}.Debug|Win32.Build.0 = Debug|Win32
-		{FBB66156-9A54-4713-A801-C507BE7A3AE3}.Release|Win32.ActiveCfg = Release|Win32
-		{FBB66156-9A54-4713-A801-C507BE7A3AE3}.Release|Win32.Build.0 = Release|Win32
-		{46B82840-9832-466F-8568-132407CA3853}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{46B82840-9832-466F-8568-132407CA3853}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{46B82840-9832-466F-8568-132407CA3853}.Debug|Win32.ActiveCfg = Debug|Win32
-		{46B82840-9832-466F-8568-132407CA3853}.Debug|Win32.Build.0 = Debug|Win32
-		{46B82840-9832-466F-8568-132407CA3853}.Release|Win32.ActiveCfg = Release|Win32
-		{46B82840-9832-466F-8568-132407CA3853}.Release|Win32.Build.0 = Release|Win32
-		{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}.Debug|Win32.ActiveCfg = Debug|Win32
-		{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}.Debug|Win32.Build.0 = Debug|Win32
-		{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}.Release|Win32.ActiveCfg = Release|Win32
-		{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}.Release|Win32.Build.0 = Release|Win32
-		{7C132953-1700-42FF-9F61-A814C9F2C758}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{7C132953-1700-42FF-9F61-A814C9F2C758}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{7C132953-1700-42FF-9F61-A814C9F2C758}.Debug|Win32.ActiveCfg = Debug|Win32
-		{7C132953-1700-42FF-9F61-A814C9F2C758}.Debug|Win32.Build.0 = Debug|Win32
-		{7C132953-1700-42FF-9F61-A814C9F2C758}.Release|Win32.ActiveCfg = Release|Win32
-		{7C132953-1700-42FF-9F61-A814C9F2C758}.Release|Win32.Build.0 = Release|Win32
-		{38D89022-2C83-4436-A333-375A2E3E7BB0}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{38D89022-2C83-4436-A333-375A2E3E7BB0}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{38D89022-2C83-4436-A333-375A2E3E7BB0}.Debug|Win32.ActiveCfg = Debug|Win32
-		{38D89022-2C83-4436-A333-375A2E3E7BB0}.Debug|Win32.Build.0 = Debug|Win32
-		{38D89022-2C83-4436-A333-375A2E3E7BB0}.Release|Win32.ActiveCfg = Release|Win32
-		{38D89022-2C83-4436-A333-375A2E3E7BB0}.Release|Win32.Build.0 = Release|Win32
-		{52251CB2-65A3-421B-9CB4-7DAC13BB3758}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{52251CB2-65A3-421B-9CB4-7DAC13BB3758}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{52251CB2-65A3-421B-9CB4-7DAC13BB3758}.Debug|Win32.ActiveCfg = Debug|Win32
-		{52251CB2-65A3-421B-9CB4-7DAC13BB3758}.Debug|Win32.Build.0 = Debug|Win32
-		{52251CB2-65A3-421B-9CB4-7DAC13BB3758}.Release|Win32.ActiveCfg = Release|Win32
-		{52251CB2-65A3-421B-9CB4-7DAC13BB3758}.Release|Win32.Build.0 = Release|Win32
-		{62C97F5E-64DD-4623-9563-747C4C173348}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{62C97F5E-64DD-4623-9563-747C4C173348}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{62C97F5E-64DD-4623-9563-747C4C173348}.Debug|Win32.ActiveCfg = Debug|Win32
-		{62C97F5E-64DD-4623-9563-747C4C173348}.Debug|Win32.Build.0 = Debug|Win32
-		{62C97F5E-64DD-4623-9563-747C4C173348}.Release|Win32.ActiveCfg = Release|Win32
-		{62C97F5E-64DD-4623-9563-747C4C173348}.Release|Win32.Build.0 = Release|Win32
-		{D7643AD7-8518-4B3E-8F3F-F11258D9540E}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{D7643AD7-8518-4B3E-8F3F-F11258D9540E}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{D7643AD7-8518-4B3E-8F3F-F11258D9540E}.Debug|Win32.ActiveCfg = Debug|Win32
-		{D7643AD7-8518-4B3E-8F3F-F11258D9540E}.Debug|Win32.Build.0 = Debug|Win32
-		{D7643AD7-8518-4B3E-8F3F-F11258D9540E}.Release|Win32.ActiveCfg = Release|Win32
-		{D7643AD7-8518-4B3E-8F3F-F11258D9540E}.Release|Win32.Build.0 = Release|Win32
-		{44A003BE-400D-4434-AFED-64D8E3B448D9}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{44A003BE-400D-4434-AFED-64D8E3B448D9}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{44A003BE-400D-4434-AFED-64D8E3B448D9}.Debug|Win32.ActiveCfg = Debug|Win32
-		{44A003BE-400D-4434-AFED-64D8E3B448D9}.Debug|Win32.Build.0 = Debug|Win32
-		{44A003BE-400D-4434-AFED-64D8E3B448D9}.Release|Win32.ActiveCfg = Release|Win32
-		{44A003BE-400D-4434-AFED-64D8E3B448D9}.Release|Win32.Build.0 = Release|Win32
-		{C52F935E-1FD2-443C-A181-27908DAB3BC8}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{C52F935E-1FD2-443C-A181-27908DAB3BC8}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{C52F935E-1FD2-443C-A181-27908DAB3BC8}.Debug|Win32.ActiveCfg = Debug|Win32
-		{C52F935E-1FD2-443C-A181-27908DAB3BC8}.Debug|Win32.Build.0 = Debug|Win32
-		{C52F935E-1FD2-443C-A181-27908DAB3BC8}.Release|Win32.ActiveCfg = Release|Win32
-		{C52F935E-1FD2-443C-A181-27908DAB3BC8}.Release|Win32.Build.0 = Release|Win32
-		{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}.Debug|Win32.ActiveCfg = Debug|Win32
-		{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}.Debug|Win32.Build.0 = Debug|Win32
-		{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}.Release|Win32.ActiveCfg = Release|Win32
-		{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}.Release|Win32.Build.0 = Release|Win32
-		{A15F1E4F-951A-403E-B746-2A6D63D9C416}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{A15F1E4F-951A-403E-B746-2A6D63D9C416}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{A15F1E4F-951A-403E-B746-2A6D63D9C416}.Debug|Win32.ActiveCfg = Debug|Win32
-		{A15F1E4F-951A-403E-B746-2A6D63D9C416}.Debug|Win32.Build.0 = Debug|Win32
-		{A15F1E4F-951A-403E-B746-2A6D63D9C416}.Release|Win32.ActiveCfg = Release|Win32
-		{A15F1E4F-951A-403E-B746-2A6D63D9C416}.Release|Win32.Build.0 = Release|Win32
-		{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}.Debug|Win32.ActiveCfg = Debug|Win32
-		{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}.Debug|Win32.Build.0 = Debug|Win32
-		{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}.Release|Win32.ActiveCfg = Release|Win32
-		{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}.Release|Win32.Build.0 = Release|Win32
-		{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}.Debug|Win32.ActiveCfg = Debug|Win32
-		{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}.Debug|Win32.Build.0 = Debug|Win32
-		{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}.Release|Win32.ActiveCfg = Release|Win32
-		{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}.Release|Win32.Build.0 = Release|Win32
-		{06D707E5-68FF-4FC4-AFD0-C84584E32F47}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{06D707E5-68FF-4FC4-AFD0-C84584E32F47}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{06D707E5-68FF-4FC4-AFD0-C84584E32F47}.Debug|Win32.ActiveCfg = Debug|Win32
-		{06D707E5-68FF-4FC4-AFD0-C84584E32F47}.Debug|Win32.Build.0 = Debug|Win32
-		{06D707E5-68FF-4FC4-AFD0-C84584E32F47}.Release|Win32.ActiveCfg = Release|Win32
-		{06D707E5-68FF-4FC4-AFD0-C84584E32F47}.Release|Win32.Build.0 = Release|Win32
-		{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}.Debug|Win32.ActiveCfg = Debug|Win32
-		{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}.Debug|Win32.Build.0 = Debug|Win32
-		{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}.Release|Win32.ActiveCfg = Release|Win32
-		{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}.Release|Win32.Build.0 = Release|Win32
-		{8EE881F4-78DC-49C7-8845-E842358AC0FA}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{8EE881F4-78DC-49C7-8845-E842358AC0FA}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{8EE881F4-78DC-49C7-8845-E842358AC0FA}.Debug|Win32.ActiveCfg = Debug|Win32
-		{8EE881F4-78DC-49C7-8845-E842358AC0FA}.Debug|Win32.Build.0 = Debug|Win32
-		{8EE881F4-78DC-49C7-8845-E842358AC0FA}.Release|Win32.ActiveCfg = Release|Win32
-		{8EE881F4-78DC-49C7-8845-E842358AC0FA}.Release|Win32.Build.0 = Release|Win32
-		{3B32F1BE-9686-4DC9-8197-F734D146E9F8}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{3B32F1BE-9686-4DC9-8197-F734D146E9F8}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{3B32F1BE-9686-4DC9-8197-F734D146E9F8}.Debug|Win32.ActiveCfg = Debug|Win32
-		{3B32F1BE-9686-4DC9-8197-F734D146E9F8}.Debug|Win32.Build.0 = Debug|Win32
-		{3B32F1BE-9686-4DC9-8197-F734D146E9F8}.Release|Win32.ActiveCfg = Release|Win32
-		{3B32F1BE-9686-4DC9-8197-F734D146E9F8}.Release|Win32.Build.0 = Release|Win32
-		{5594DC0E-191C-4F2A-83FE-97F53A9C1222}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{5594DC0E-191C-4F2A-83FE-97F53A9C1222}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{5594DC0E-191C-4F2A-83FE-97F53A9C1222}.Debug|Win32.ActiveCfg = Debug|Win32
-		{5594DC0E-191C-4F2A-83FE-97F53A9C1222}.Debug|Win32.Build.0 = Debug|Win32
-		{5594DC0E-191C-4F2A-83FE-97F53A9C1222}.Release|Win32.ActiveCfg = Release|Win32
-		{5594DC0E-191C-4F2A-83FE-97F53A9C1222}.Release|Win32.Build.0 = Release|Win32
-		{11A8927C-F971-4104-A286-5DC11C25E2EC}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{11A8927C-F971-4104-A286-5DC11C25E2EC}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{11A8927C-F971-4104-A286-5DC11C25E2EC}.Debug|Win32.ActiveCfg = Debug|Win32
-		{11A8927C-F971-4104-A286-5DC11C25E2EC}.Debug|Win32.Build.0 = Debug|Win32
-		{11A8927C-F971-4104-A286-5DC11C25E2EC}.Release|Win32.ActiveCfg = Release|Win32
-		{11A8927C-F971-4104-A286-5DC11C25E2EC}.Release|Win32.Build.0 = Release|Win32
-		{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}.Debug|Win32.ActiveCfg = Debug|Win32
-		{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}.Debug|Win32.Build.0 = Debug|Win32
-		{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}.Release|Win32.ActiveCfg = Release|Win32
-		{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}.Release|Win32.Build.0 = Release|Win32
-		{76EFC06C-1F64-4478-ABE8-79832716B393}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{76EFC06C-1F64-4478-ABE8-79832716B393}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{76EFC06C-1F64-4478-ABE8-79832716B393}.Debug|Win32.ActiveCfg = Debug|Win32
-		{76EFC06C-1F64-4478-ABE8-79832716B393}.Debug|Win32.Build.0 = Debug|Win32
-		{76EFC06C-1F64-4478-ABE8-79832716B393}.Release|Win32.ActiveCfg = Release|Win32
-		{76EFC06C-1F64-4478-ABE8-79832716B393}.Release|Win32.Build.0 = Release|Win32
-		{E4A40368-152D-4D54-9E2E-4B140212F98F}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
-		{E4A40368-152D-4D54-9E2E-4B140212F98F}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
-		{E4A40368-152D-4D54-9E2E-4B140212F98F}.Debug|Win32.ActiveCfg = Debug|Win32
-		{E4A40368-152D-4D54-9E2E-4B140212F98F}.Debug|Win32.Build.0 = Debug|Win32
-		{E4A40368-152D-4D54-9E2E-4B140212F98F}.Release|Win32.ActiveCfg = Release|Win32
-		{E4A40368-152D-4D54-9E2E-4B140212F98F}.Release|Win32.Build.0 = Release|Win32
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual C++ Express 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "img_stat", "img_stat\img_stat.vcxproj", "{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mmls", "mmls\mmls.vcxproj", "{712DD83B-786E-485E-83C7-7197DD851B78}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "img_cat", "img_cat\img_cat.vcxproj", "{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mmstat", "mmstat\mmstat.vcxproj", "{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fls", "fls\fls.vcxproj", "{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fsstat", "fsstat\fsstat.vcxproj", "{D1E6567A-4F65-4832-8018-D33B3CB4692B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blkcat", "blkcat\blkcat.vcxproj", "{A2BEA467-A4CC-4FA6-9C74-587498E35467}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blkstat", "blkstat\blkstat.vcxproj", "{FBB66156-9A54-4713-A801-C507BE7A3AE3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blkcalc", "blkcalc\blkcalc.vcxproj", "{46B82840-9832-466F-8568-132407CA3853}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blkls", "blkls\blkls.vcxproj", "{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ffind", "ffind\ffind.vcxproj", "{7C132953-1700-42FF-9F61-A814C9F2C758}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icat", "icat\icat.vcxproj", "{38D89022-2C83-4436-A333-375A2E3E7BB0}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ifind", "ifind\ifind.vcxproj", "{52251CB2-65A3-421B-9CB4-7DAC13BB3758}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ils", "ils\ils.vcxproj", "{62C97F5E-64DD-4623-9563-747C4C173348}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "istat", "istat\istat.vcxproj", "{D7643AD7-8518-4B3E-8F3F-F11258D9540E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jcat", "jcat\jcat.vcxproj", "{44A003BE-400D-4434-AFED-64D8E3B448D9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "jls", "jls\jls.vcxproj", "{C52F935E-1FD2-443C-A181-27908DAB3BC8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hfind", "hfind\hfind.vcxproj", "{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mmcat", "mmcat\mmcat.vcxproj", "{A15F1E4F-951A-403E-B746-2A6D63D9C416}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "callback-sample", "callback-sample\callback-sample.vcxproj", "{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "posix-sample", "posix-sample\posix-sample.vcxproj", "{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tsk_recover", "tsk_recover\tsk_recover.vcxproj", "{06D707E5-68FF-4FC4-AFD0-C84584E32F47}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tsk_loaddb", "tsk_loaddb\tsk_loaddb.vcxproj", "{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tsk_comparedir", "tsk_comparedir\tsk_compare.vcxproj", "{8EE881F4-78DC-49C7-8845-E842358AC0FA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "callback-cpp-sample", "callback-cpp-sample\callback-cpp-sample.vcxproj", "{3B32F1BE-9686-4DC9-8197-F734D146E9F8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "posix-cpp-sample", "posix-cpp-sample\posix-cpp-sample.vcxproj", "{5594DC0E-191C-4F2A-83FE-97F53A9C1222}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tsk_gettimes", "tsk_gettimes\tsk_gettimes.vcxproj", "{11A8927C-F971-4104-A286-5DC11C25E2EC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtsk_jni", "tsk_jni\tsk_jni.vcxproj", "{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtsk", "libtsk\libtsk.vcxproj", "{76EFC06C-1F64-4478-ABE8-79832716B393}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fcat", "fcat\fcat.vcxproj", "{E4A40368-152D-4D54-9E2E-4B140212F98F}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug_NoLibs|Win32 = Debug_NoLibs|Win32
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}.Debug|Win32.ActiveCfg = Debug|Win32
+		{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}.Debug|Win32.Build.0 = Debug|Win32
+		{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}.Release|Win32.ActiveCfg = Release|Win32
+		{48F52EA8-A5D1-4BF4-B774-6ECFCB0CE3C9}.Release|Win32.Build.0 = Release|Win32
+		{712DD83B-786E-485E-83C7-7197DD851B78}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{712DD83B-786E-485E-83C7-7197DD851B78}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{712DD83B-786E-485E-83C7-7197DD851B78}.Debug|Win32.ActiveCfg = Debug|Win32
+		{712DD83B-786E-485E-83C7-7197DD851B78}.Debug|Win32.Build.0 = Debug|Win32
+		{712DD83B-786E-485E-83C7-7197DD851B78}.Release|Win32.ActiveCfg = Release|Win32
+		{712DD83B-786E-485E-83C7-7197DD851B78}.Release|Win32.Build.0 = Release|Win32
+		{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}.Debug|Win32.Build.0 = Debug|Win32
+		{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}.Release|Win32.ActiveCfg = Release|Win32
+		{671D843F-4DFA-4CB8-8BC9-D44E7F4ECF1E}.Release|Win32.Build.0 = Release|Win32
+		{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}.Debug|Win32.ActiveCfg = Debug|Win32
+		{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}.Debug|Win32.Build.0 = Debug|Win32
+		{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}.Release|Win32.ActiveCfg = Release|Win32
+		{5D75FBFB-539A-4014-ACEB-520BB16F5BFC}.Release|Win32.Build.0 = Release|Win32
+		{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}.Debug|Win32.ActiveCfg = Debug|Win32
+		{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}.Debug|Win32.Build.0 = Debug|Win32
+		{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}.Release|Win32.ActiveCfg = Release|Win32
+		{58DA1042-AC19-4779-AC1A-AA8EEB3A4524}.Release|Win32.Build.0 = Release|Win32
+		{D1E6567A-4F65-4832-8018-D33B3CB4692B}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{D1E6567A-4F65-4832-8018-D33B3CB4692B}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{D1E6567A-4F65-4832-8018-D33B3CB4692B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{D1E6567A-4F65-4832-8018-D33B3CB4692B}.Debug|Win32.Build.0 = Debug|Win32
+		{D1E6567A-4F65-4832-8018-D33B3CB4692B}.Release|Win32.ActiveCfg = Release|Win32
+		{D1E6567A-4F65-4832-8018-D33B3CB4692B}.Release|Win32.Build.0 = Release|Win32
+		{A2BEA467-A4CC-4FA6-9C74-587498E35467}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{A2BEA467-A4CC-4FA6-9C74-587498E35467}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{A2BEA467-A4CC-4FA6-9C74-587498E35467}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A2BEA467-A4CC-4FA6-9C74-587498E35467}.Debug|Win32.Build.0 = Debug|Win32
+		{A2BEA467-A4CC-4FA6-9C74-587498E35467}.Release|Win32.ActiveCfg = Release|Win32
+		{A2BEA467-A4CC-4FA6-9C74-587498E35467}.Release|Win32.Build.0 = Release|Win32
+		{FBB66156-9A54-4713-A801-C507BE7A3AE3}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{FBB66156-9A54-4713-A801-C507BE7A3AE3}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{FBB66156-9A54-4713-A801-C507BE7A3AE3}.Debug|Win32.ActiveCfg = Debug|Win32
+		{FBB66156-9A54-4713-A801-C507BE7A3AE3}.Debug|Win32.Build.0 = Debug|Win32
+		{FBB66156-9A54-4713-A801-C507BE7A3AE3}.Release|Win32.ActiveCfg = Release|Win32
+		{FBB66156-9A54-4713-A801-C507BE7A3AE3}.Release|Win32.Build.0 = Release|Win32
+		{46B82840-9832-466F-8568-132407CA3853}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{46B82840-9832-466F-8568-132407CA3853}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{46B82840-9832-466F-8568-132407CA3853}.Debug|Win32.ActiveCfg = Debug|Win32
+		{46B82840-9832-466F-8568-132407CA3853}.Debug|Win32.Build.0 = Debug|Win32
+		{46B82840-9832-466F-8568-132407CA3853}.Release|Win32.ActiveCfg = Release|Win32
+		{46B82840-9832-466F-8568-132407CA3853}.Release|Win32.Build.0 = Release|Win32
+		{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}.Debug|Win32.ActiveCfg = Debug|Win32
+		{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}.Debug|Win32.Build.0 = Debug|Win32
+		{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}.Release|Win32.ActiveCfg = Release|Win32
+		{48D98A0A-BF9C-4D7E-9AF8-E4CAE8437997}.Release|Win32.Build.0 = Release|Win32
+		{7C132953-1700-42FF-9F61-A814C9F2C758}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{7C132953-1700-42FF-9F61-A814C9F2C758}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{7C132953-1700-42FF-9F61-A814C9F2C758}.Debug|Win32.ActiveCfg = Debug|Win32
+		{7C132953-1700-42FF-9F61-A814C9F2C758}.Debug|Win32.Build.0 = Debug|Win32
+		{7C132953-1700-42FF-9F61-A814C9F2C758}.Release|Win32.ActiveCfg = Release|Win32
+		{7C132953-1700-42FF-9F61-A814C9F2C758}.Release|Win32.Build.0 = Release|Win32
+		{38D89022-2C83-4436-A333-375A2E3E7BB0}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{38D89022-2C83-4436-A333-375A2E3E7BB0}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{38D89022-2C83-4436-A333-375A2E3E7BB0}.Debug|Win32.ActiveCfg = Debug|Win32
+		{38D89022-2C83-4436-A333-375A2E3E7BB0}.Debug|Win32.Build.0 = Debug|Win32
+		{38D89022-2C83-4436-A333-375A2E3E7BB0}.Release|Win32.ActiveCfg = Release|Win32
+		{38D89022-2C83-4436-A333-375A2E3E7BB0}.Release|Win32.Build.0 = Release|Win32
+		{52251CB2-65A3-421B-9CB4-7DAC13BB3758}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{52251CB2-65A3-421B-9CB4-7DAC13BB3758}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{52251CB2-65A3-421B-9CB4-7DAC13BB3758}.Debug|Win32.ActiveCfg = Debug|Win32
+		{52251CB2-65A3-421B-9CB4-7DAC13BB3758}.Debug|Win32.Build.0 = Debug|Win32
+		{52251CB2-65A3-421B-9CB4-7DAC13BB3758}.Release|Win32.ActiveCfg = Release|Win32
+		{52251CB2-65A3-421B-9CB4-7DAC13BB3758}.Release|Win32.Build.0 = Release|Win32
+		{62C97F5E-64DD-4623-9563-747C4C173348}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{62C97F5E-64DD-4623-9563-747C4C173348}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{62C97F5E-64DD-4623-9563-747C4C173348}.Debug|Win32.ActiveCfg = Debug|Win32
+		{62C97F5E-64DD-4623-9563-747C4C173348}.Debug|Win32.Build.0 = Debug|Win32
+		{62C97F5E-64DD-4623-9563-747C4C173348}.Release|Win32.ActiveCfg = Release|Win32
+		{62C97F5E-64DD-4623-9563-747C4C173348}.Release|Win32.Build.0 = Release|Win32
+		{D7643AD7-8518-4B3E-8F3F-F11258D9540E}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{D7643AD7-8518-4B3E-8F3F-F11258D9540E}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{D7643AD7-8518-4B3E-8F3F-F11258D9540E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{D7643AD7-8518-4B3E-8F3F-F11258D9540E}.Debug|Win32.Build.0 = Debug|Win32
+		{D7643AD7-8518-4B3E-8F3F-F11258D9540E}.Release|Win32.ActiveCfg = Release|Win32
+		{D7643AD7-8518-4B3E-8F3F-F11258D9540E}.Release|Win32.Build.0 = Release|Win32
+		{44A003BE-400D-4434-AFED-64D8E3B448D9}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{44A003BE-400D-4434-AFED-64D8E3B448D9}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{44A003BE-400D-4434-AFED-64D8E3B448D9}.Debug|Win32.ActiveCfg = Debug|Win32
+		{44A003BE-400D-4434-AFED-64D8E3B448D9}.Debug|Win32.Build.0 = Debug|Win32
+		{44A003BE-400D-4434-AFED-64D8E3B448D9}.Release|Win32.ActiveCfg = Release|Win32
+		{44A003BE-400D-4434-AFED-64D8E3B448D9}.Release|Win32.Build.0 = Release|Win32
+		{C52F935E-1FD2-443C-A181-27908DAB3BC8}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{C52F935E-1FD2-443C-A181-27908DAB3BC8}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{C52F935E-1FD2-443C-A181-27908DAB3BC8}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C52F935E-1FD2-443C-A181-27908DAB3BC8}.Debug|Win32.Build.0 = Debug|Win32
+		{C52F935E-1FD2-443C-A181-27908DAB3BC8}.Release|Win32.ActiveCfg = Release|Win32
+		{C52F935E-1FD2-443C-A181-27908DAB3BC8}.Release|Win32.Build.0 = Release|Win32
+		{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}.Debug|Win32.Build.0 = Debug|Win32
+		{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}.Release|Win32.ActiveCfg = Release|Win32
+		{0B127AE3-0C18-4EEF-AB20-A0693E6AA822}.Release|Win32.Build.0 = Release|Win32
+		{A15F1E4F-951A-403E-B746-2A6D63D9C416}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{A15F1E4F-951A-403E-B746-2A6D63D9C416}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{A15F1E4F-951A-403E-B746-2A6D63D9C416}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A15F1E4F-951A-403E-B746-2A6D63D9C416}.Debug|Win32.Build.0 = Debug|Win32
+		{A15F1E4F-951A-403E-B746-2A6D63D9C416}.Release|Win32.ActiveCfg = Release|Win32
+		{A15F1E4F-951A-403E-B746-2A6D63D9C416}.Release|Win32.Build.0 = Release|Win32
+		{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}.Debug|Win32.ActiveCfg = Debug|Win32
+		{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}.Debug|Win32.Build.0 = Debug|Win32
+		{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}.Release|Win32.ActiveCfg = Release|Win32
+		{6CE3D593-E90D-4CC1-A66B-694AC909F6B8}.Release|Win32.Build.0 = Release|Win32
+		{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}.Debug|Win32.ActiveCfg = Debug|Win32
+		{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}.Debug|Win32.Build.0 = Debug|Win32
+		{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}.Release|Win32.ActiveCfg = Release|Win32
+		{1BA0B9E8-F135-494F-9CF5-86427C1F6E41}.Release|Win32.Build.0 = Release|Win32
+		{06D707E5-68FF-4FC4-AFD0-C84584E32F47}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{06D707E5-68FF-4FC4-AFD0-C84584E32F47}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{06D707E5-68FF-4FC4-AFD0-C84584E32F47}.Debug|Win32.ActiveCfg = Debug|Win32
+		{06D707E5-68FF-4FC4-AFD0-C84584E32F47}.Debug|Win32.Build.0 = Debug|Win32
+		{06D707E5-68FF-4FC4-AFD0-C84584E32F47}.Release|Win32.ActiveCfg = Release|Win32
+		{06D707E5-68FF-4FC4-AFD0-C84584E32F47}.Release|Win32.Build.0 = Release|Win32
+		{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}.Debug|Win32.ActiveCfg = Debug|Win32
+		{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}.Debug|Win32.Build.0 = Debug|Win32
+		{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}.Release|Win32.ActiveCfg = Release|Win32
+		{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}.Release|Win32.Build.0 = Release|Win32
+		{8EE881F4-78DC-49C7-8845-E842358AC0FA}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{8EE881F4-78DC-49C7-8845-E842358AC0FA}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{8EE881F4-78DC-49C7-8845-E842358AC0FA}.Debug|Win32.ActiveCfg = Debug|Win32
+		{8EE881F4-78DC-49C7-8845-E842358AC0FA}.Debug|Win32.Build.0 = Debug|Win32
+		{8EE881F4-78DC-49C7-8845-E842358AC0FA}.Release|Win32.ActiveCfg = Release|Win32
+		{8EE881F4-78DC-49C7-8845-E842358AC0FA}.Release|Win32.Build.0 = Release|Win32
+		{3B32F1BE-9686-4DC9-8197-F734D146E9F8}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{3B32F1BE-9686-4DC9-8197-F734D146E9F8}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{3B32F1BE-9686-4DC9-8197-F734D146E9F8}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3B32F1BE-9686-4DC9-8197-F734D146E9F8}.Debug|Win32.Build.0 = Debug|Win32
+		{3B32F1BE-9686-4DC9-8197-F734D146E9F8}.Release|Win32.ActiveCfg = Release|Win32
+		{3B32F1BE-9686-4DC9-8197-F734D146E9F8}.Release|Win32.Build.0 = Release|Win32
+		{5594DC0E-191C-4F2A-83FE-97F53A9C1222}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{5594DC0E-191C-4F2A-83FE-97F53A9C1222}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{5594DC0E-191C-4F2A-83FE-97F53A9C1222}.Debug|Win32.ActiveCfg = Debug|Win32
+		{5594DC0E-191C-4F2A-83FE-97F53A9C1222}.Debug|Win32.Build.0 = Debug|Win32
+		{5594DC0E-191C-4F2A-83FE-97F53A9C1222}.Release|Win32.ActiveCfg = Release|Win32
+		{5594DC0E-191C-4F2A-83FE-97F53A9C1222}.Release|Win32.Build.0 = Release|Win32
+		{11A8927C-F971-4104-A286-5DC11C25E2EC}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{11A8927C-F971-4104-A286-5DC11C25E2EC}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{11A8927C-F971-4104-A286-5DC11C25E2EC}.Debug|Win32.ActiveCfg = Debug|Win32
+		{11A8927C-F971-4104-A286-5DC11C25E2EC}.Debug|Win32.Build.0 = Debug|Win32
+		{11A8927C-F971-4104-A286-5DC11C25E2EC}.Release|Win32.ActiveCfg = Release|Win32
+		{11A8927C-F971-4104-A286-5DC11C25E2EC}.Release|Win32.Build.0 = Release|Win32
+		{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}.Debug|Win32.ActiveCfg = Debug|Win32
+		{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}.Debug|Win32.Build.0 = Debug|Win32
+		{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}.Release|Win32.ActiveCfg = Release|Win32
+		{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}.Release|Win32.Build.0 = Release|Win32
+		{76EFC06C-1F64-4478-ABE8-79832716B393}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{76EFC06C-1F64-4478-ABE8-79832716B393}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{76EFC06C-1F64-4478-ABE8-79832716B393}.Debug|Win32.ActiveCfg = Debug|Win32
+		{76EFC06C-1F64-4478-ABE8-79832716B393}.Debug|Win32.Build.0 = Debug|Win32
+		{76EFC06C-1F64-4478-ABE8-79832716B393}.Release|Win32.ActiveCfg = Release|Win32
+		{76EFC06C-1F64-4478-ABE8-79832716B393}.Release|Win32.Build.0 = Release|Win32
+		{E4A40368-152D-4D54-9E2E-4B140212F98F}.Debug_NoLibs|Win32.ActiveCfg = Debug_NoLibs|Win32
+		{E4A40368-152D-4D54-9E2E-4B140212F98F}.Debug_NoLibs|Win32.Build.0 = Debug_NoLibs|Win32
+		{E4A40368-152D-4D54-9E2E-4B140212F98F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{E4A40368-152D-4D54-9E2E-4B140212F98F}.Debug|Win32.Build.0 = Debug|Win32
+		{E4A40368-152D-4D54-9E2E-4B140212F98F}.Release|Win32.ActiveCfg = Release|Win32
+		{E4A40368-152D-4D54-9E2E-4B140212F98F}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/win32/tsk_comparedir/tsk_compare.vcproj b/win32/tsk_comparedir/tsk_compare.vcproj
index 6327c73c44257289139629fdfc69e69e56afda5c..9fce736d7ac15cd70e23b353b39e53f722cd3f1f 100755
--- a/win32/tsk_comparedir/tsk_compare.vcproj
+++ b/win32/tsk_comparedir/tsk_compare.vcproj
@@ -1,259 +1,259 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="tsk_comparedir"
-	ProjectGUID="{8EE881F4-78DC-49C7-8845-E842358AC0FA}"
-	RootNamespace="tsk_compare"
-	TargetFrameworkVersion="196613"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				WarningLevel="1"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				AssemblyDebug="1"
-				TargetMachine="0"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\autotools\tsk_comparedir.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\..\tools\autotools\tsk_comparedir.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="tsk_comparedir"
+	ProjectGUID="{8EE881F4-78DC-49C7-8845-E842358AC0FA}"
+	RootNamespace="tsk_compare"
+	TargetFrameworkVersion="196613"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				WarningLevel="1"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				AssemblyDebug="1"
+				TargetMachine="0"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\autotools\tsk_comparedir.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\tools\autotools\tsk_comparedir.h"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/tsk_comparedir/tsk_compare.vcxproj b/win32/tsk_comparedir/tsk_compare.vcxproj
index 9225ef1390aaa445edb69221a1f2ac30534ddab2..f7ff30e7337ae7d3382f9465179d046b62e8de61 100755
--- a/win32/tsk_comparedir/tsk_compare.vcxproj
+++ b/win32/tsk_comparedir/tsk_compare.vcxproj
@@ -1,128 +1,128 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectName>tsk_comparedir</ProjectName>
-    <ProjectGuid>{8EE881F4-78DC-49C7-8845-E842358AC0FA}</ProjectGuid>
-    <RootNamespace>tsk_compare</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <WarningLevel>Level1</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <Optimization>Disabled</Optimization>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AssemblyDebug>true</AssemblyDebug>
-      <TargetMachine>NotSet</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\autotools\tsk_comparedir.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\tools\autotools\tsk_comparedir.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>tsk_comparedir</ProjectName>
+    <ProjectGuid>{8EE881F4-78DC-49C7-8845-E842358AC0FA}</ProjectGuid>
+    <RootNamespace>tsk_compare</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level1</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AssemblyDebug>true</AssemblyDebug>
+      <TargetMachine>NotSet</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\autotools\tsk_comparedir.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\tools\autotools\tsk_comparedir.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/tsk_comparedir/tsk_compare.vcxproj.filters b/win32/tsk_comparedir/tsk_compare.vcxproj.filters
index 91b790639c087cdb0507a44af65b353fda275792..1f1e410cf7b72a058ff0b4345a377a032a5c11da 100755
--- a/win32/tsk_comparedir/tsk_compare.vcxproj.filters
+++ b/win32/tsk_comparedir/tsk_compare.vcxproj.filters
@@ -1,23 +1,23 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\autotools\tsk_comparedir.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\tools\autotools\tsk_comparedir.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\autotools\tsk_comparedir.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\tools\autotools\tsk_comparedir.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/tsk_gettimes/tsk_gettimes.vcproj b/win32/tsk_gettimes/tsk_gettimes.vcproj
index 40398f9520c1a52862da081bb7c764b44a867b86..bb30be43988644c9c670ed96bc096e346103abb8 100755
--- a/win32/tsk_gettimes/tsk_gettimes.vcproj
+++ b/win32/tsk_gettimes/tsk_gettimes.vcproj
@@ -1,268 +1,268 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="tsk_gettimes"
-	ProjectGUID="{11A8927C-F971-4104-A286-5DC11C25E2EC}"
-	RootNamespace="tsk_gettimes"
-	Keyword="ManagedCProj"
-	TargetFrameworkVersion="196613"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			ManagedExtensions="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				AssemblyDebug="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			ManagedExtensions="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			ManagedExtensions="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				AssemblyDebug="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-		<AssemblyReference
-			RelativePath="System.dll"
-			AssemblyName="System, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
-			MinFrameworkVersion="131072"
-		/>
-		<AssemblyReference
-			RelativePath="System.Data.dll"
-			AssemblyName="System.Data, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=x86"
-			MinFrameworkVersion="131072"
-		/>
-		<AssemblyReference
-			RelativePath="System.XML.dll"
-			AssemblyName="System.Xml, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
-			MinFrameworkVersion="131072"
-		/>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\autotools\tsk_gettimes.cpp"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="tsk_gettimes"
+	ProjectGUID="{11A8927C-F971-4104-A286-5DC11C25E2EC}"
+	RootNamespace="tsk_gettimes"
+	Keyword="ManagedCProj"
+	TargetFrameworkVersion="196613"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			ManagedExtensions="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				AssemblyDebug="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			ManagedExtensions="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			ManagedExtensions="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				AssemblyDebug="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+		<AssemblyReference
+			RelativePath="System.dll"
+			AssemblyName="System, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
+			MinFrameworkVersion="131072"
+		/>
+		<AssemblyReference
+			RelativePath="System.Data.dll"
+			AssemblyName="System.Data, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=x86"
+			MinFrameworkVersion="131072"
+		/>
+		<AssemblyReference
+			RelativePath="System.XML.dll"
+			AssemblyName="System.Xml, Version=2.0.0.0, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"
+			MinFrameworkVersion="131072"
+		/>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\autotools\tsk_gettimes.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/tsk_gettimes/tsk_gettimes.vcxproj b/win32/tsk_gettimes/tsk_gettimes.vcxproj
index 4b1313d74a78302c9d575a032518153068bcf429..270b0359bd61d670acde72eb335c3afa937d6683 100755
--- a/win32/tsk_gettimes/tsk_gettimes.vcxproj
+++ b/win32/tsk_gettimes/tsk_gettimes.vcxproj
@@ -1,144 +1,144 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{11A8927C-F971-4104-A286-5DC11C25E2EC}</ProjectGuid>
-    <RootNamespace>tsk_gettimes</RootNamespace>
-    <Keyword>ManagedCProj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <CLRSupport>true</CLRSupport>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <CLRSupport>true</CLRSupport>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <CLRSupport>true</CLRSupport>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AssemblyDebug>true</AssemblyDebug>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AssemblyDebug>true</AssemblyDebug>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <Reference Include="System">
-      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-    </Reference>
-    <Reference Include="System.Data">
-      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-    </Reference>
-    <Reference Include="System.Xml">
-      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
-      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\autotools\tsk_gettimes.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{11A8927C-F971-4104-A286-5DC11C25E2EC}</ProjectGuid>
+    <RootNamespace>tsk_gettimes</RootNamespace>
+    <Keyword>ManagedCProj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <CLRSupport>true</CLRSupport>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <CLRSupport>true</CLRSupport>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <CLRSupport>true</CLRSupport>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AssemblyDebug>true</AssemblyDebug>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AssemblyDebug>true</AssemblyDebug>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <Reference Include="System">
+      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </Reference>
+    <Reference Include="System.Data">
+      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </Reference>
+    <Reference Include="System.Xml">
+      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
+      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\autotools\tsk_gettimes.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/tsk_gettimes/tsk_gettimes.vcxproj.filters b/win32/tsk_gettimes/tsk_gettimes.vcxproj.filters
index 2a75890ca3924d6ff99e1c867076fe8f71e2486c..40c6937c5638a3fca7bba4986264e1b8e385a062 100755
--- a/win32/tsk_gettimes/tsk_gettimes.vcxproj.filters
+++ b/win32/tsk_gettimes/tsk_gettimes.vcxproj.filters
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\autotools\tsk_gettimes.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\autotools\tsk_gettimes.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/tsk_jni/tsk_jni.vcproj b/win32/tsk_jni/tsk_jni.vcproj
index 09e342bbfa2198326eaa33268dfb8c727b25cc8e..b35e450f605450af6a395c1fcfa4a9bc1ee5589b 100755
--- a/win32/tsk_jni/tsk_jni.vcproj
+++ b/win32/tsk_jni/tsk_jni.vcproj
@@ -1,277 +1,277 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="libtsk_jni"
-	ProjectGUID="{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}"
-	RootNamespace="tsk_jni"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="196613"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(JDK_HOME)\include&quot;;&quot;$(JDK_HOME)\include\win32&quot;;&quot;$(ProjectDir)\..\..&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS;_CRT_SECURE_NO_WARNINGS"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				UseLibraryDependencyInputs="false"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine=""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			UseOfMFC="0"
-			UseOfATL="0"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="&quot;$(JDK_HOME)\include&quot;;&quot;$(JDK_HOME)\include\win32&quot;;&quot;$(ProjectDir)\..\..&quot;"
-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS;_CRT_SECURE_NO_WARNINGS"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="0"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="false"
-				SubSystem="2"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine=""
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="2"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="&quot;$(JDK_HOME)\include&quot;;&quot;$(JDK_HOME)\include\win32&quot;;&quot;$(ProjectDir)\..\..&quot;"
-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS;_CRT_SECURE_NO_WARNINGS"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				UseLibraryDependencyInputs="false"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				SubSystem="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-				CommandLine=""
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\bindings\java\jni\dataModel_SleuthkitJNI.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\..\bindings\java\jni\dataModel_SleuthkitJNI.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="libtsk_jni"
+	ProjectGUID="{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}"
+	RootNamespace="tsk_jni"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="196613"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="&quot;$(JDK_HOME)\include&quot;;&quot;$(JDK_HOME)\include\win32&quot;;&quot;$(ProjectDir)\..\..&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS;_CRT_SECURE_NO_WARNINGS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				UseLibraryDependencyInputs="false"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine=""
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			UseOfMFC="0"
+			UseOfATL="0"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				AdditionalIncludeDirectories="&quot;$(JDK_HOME)\include&quot;;&quot;$(JDK_HOME)\include\win32&quot;;&quot;$(ProjectDir)\..\..&quot;"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS;_CRT_SECURE_NO_WARNINGS"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="0"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="false"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine=""
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="&quot;$(JDK_HOME)\include&quot;;&quot;$(JDK_HOME)\include\win32&quot;;&quot;$(ProjectDir)\..\..&quot;"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS;_CRT_SECURE_NO_WARNINGS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				UseLibraryDependencyInputs="false"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine=""
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\bindings\java\jni\dataModel_SleuthkitJNI.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\bindings\java\jni\dataModel_SleuthkitJNI.h"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/tsk_jni/tsk_jni.vcxproj b/win32/tsk_jni/tsk_jni.vcxproj
index 6246f2d07459feb86d4cab61422e8c07eea4596e..e6ec93d092e0e6dc2cf4725f847d6dbe8e999eff 100755
--- a/win32/tsk_jni/tsk_jni.vcxproj
+++ b/win32/tsk_jni/tsk_jni.vcxproj
@@ -1,162 +1,162 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectName>libtsk_jni</ProjectName>
-    <ProjectGuid>{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}</ProjectGuid>
-    <RootNamespace>tsk_jni</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseOfMfc>false</UseOfMfc>
-    <UseOfAtl>false</UseOfAtl>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(JDK_HOME)\include;$(JDK_HOME)\include\win32;$(ProjectDir)\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <ProjectReference>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>
-      </Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(JDK_HOME)\include;$(JDK_HOME)\include\win32;$(ProjectDir)\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>
-      </DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>false</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>
-      </Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(JDK_HOME)\include;$(JDK_HOME)\include\win32;$(ProjectDir)\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <ProjectReference>
-      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
-    </ProjectReference>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Windows</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-    <PostBuildEvent>
-      <Command>
-      </Command>
-    </PostBuildEvent>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\bindings\java\jni\dataModel_SleuthkitJNI.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\bindings\java\jni\dataModel_SleuthkitJNI.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectName>libtsk_jni</ProjectName>
+    <ProjectGuid>{62D88133-09F6-4E13-B39F-36FCEFBE4FAF}</ProjectGuid>
+    <RootNamespace>tsk_jni</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseOfMfc>false</UseOfMfc>
+    <UseOfAtl>false</UseOfAtl>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(JDK_HOME)\include;$(JDK_HOME)\include\win32;$(ProjectDir)\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>
+      </Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(JDK_HOME)\include;$(JDK_HOME)\include\win32;$(ProjectDir)\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>
+      </DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>false</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>
+      </Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(JDK_HOME)\include;$(JDK_HOME)\include\win32;$(ProjectDir)\..\..;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;TSK_JNI_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <ProjectReference>
+      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
+    </ProjectReference>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+    <PostBuildEvent>
+      <Command>
+      </Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\bindings\java\jni\dataModel_SleuthkitJNI.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\bindings\java\jni\dataModel_SleuthkitJNI.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/tsk_jni/tsk_jni.vcxproj.filters b/win32/tsk_jni/tsk_jni.vcxproj.filters
index 5bc0bd64ac6189e685d6dd2f97194cf57657359e..3a1bcb722218d3405eb6cf8a73c15364285c6df1 100755
--- a/win32/tsk_jni/tsk_jni.vcxproj.filters
+++ b/win32/tsk_jni/tsk_jni.vcxproj.filters
@@ -1,23 +1,23 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\bindings\java\jni\dataModel_SleuthkitJNI.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\bindings\java\jni\dataModel_SleuthkitJNI.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\bindings\java\jni\dataModel_SleuthkitJNI.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\bindings\java\jni\dataModel_SleuthkitJNI.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/tsk_loaddb/tsk_loaddb.vcproj b/win32/tsk_loaddb/tsk_loaddb.vcproj
index aebc63b56ad9d666c81403d7b1d270d50cd84265..b903b3c6499463a0f8896fa2104fc61c9f88b5e4 100755
--- a/win32/tsk_loaddb/tsk_loaddb.vcproj
+++ b/win32/tsk_loaddb/tsk_loaddb.vcproj
@@ -1,253 +1,253 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="tsk_loaddb"
-	ProjectGUID="{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}"
-	RootNamespace="tsk_loaddb"
-	TargetFrameworkVersion="196613"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="2"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalLibraryDirectories=""
-				GenerateDebugInformation="true"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\autotools\tsk_loaddb.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="tsk_loaddb"
+	ProjectGUID="{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}"
+	RootNamespace="tsk_loaddb"
+	TargetFrameworkVersion="196613"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="0"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="0"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalLibraryDirectories=""
+				GenerateDebugInformation="true"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\autotools\tsk_loaddb.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/tsk_loaddb/tsk_loaddb.vcxproj b/win32/tsk_loaddb/tsk_loaddb.vcxproj
index 34cedb32ad38b9f6be22f696d1c7b80a69a195a4..7095087f6e00dc9ec277c772bc7482fa461ace67 100755
--- a/win32/tsk_loaddb/tsk_loaddb.vcxproj
+++ b/win32/tsk_loaddb/tsk_loaddb.vcxproj
@@ -1,123 +1,123 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}</ProjectGuid>
-    <RootNamespace>tsk_loaddb</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>MultiByte</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>NotSet</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;</PreprocessorDefinitions>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\autotools\tsk_loaddb.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{96AFC6D4-A3DC-44D4-8F55-F74E1D21798C}</ProjectGuid>
+    <RootNamespace>tsk_loaddb</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>MultiByte</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\autotools\tsk_loaddb.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/tsk_loaddb/tsk_loaddb.vcxproj.filters b/win32/tsk_loaddb/tsk_loaddb.vcxproj.filters
index 8b74dadb7b76317a0fb4e2c07bd55fb2c84602d2..a4a448a922189dcf24e8f9322a5cf382d50ad17c 100755
--- a/win32/tsk_loaddb/tsk_loaddb.vcxproj.filters
+++ b/win32/tsk_loaddb/tsk_loaddb.vcxproj.filters
@@ -1,18 +1,18 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\autotools\tsk_loaddb.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\autotools\tsk_loaddb.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/tsk_recover/tsk_recover.vcproj b/win32/tsk_recover/tsk_recover.vcproj
index 8bbd75df62179162b26496ede9703f2620a4bea7..b4a63f869363069abf2d22d78e5f90935e09e2c0 100755
--- a/win32/tsk_recover/tsk_recover.vcproj
+++ b/win32/tsk_recover/tsk_recover.vcproj
@@ -1,263 +1,263 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9.00"
-	Name="tsk_recover"
-	ProjectGUID="{06D707E5-68FF-4FC4-AFD0-C84584E32F47}"
-	RootNamespace="tsk_recover"
-	Keyword="Win32Proj"
-	TargetFrameworkVersion="196613"
-	>
-	<Platforms>
-		<Platform
-			Name="Win32"
-		/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="0"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="2"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			CharacterSet="1"
-			WholeProgramOptimization="1"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				Optimization="2"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
-				RuntimeLibrary="2"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="libewf.lib zlib.lib"
-				LinkIncremental="1"
-				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Debug_NoLibs|Win32"
-			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
-			IntermediateDirectory="$(ConfigurationName)"
-			ConfigurationType="1"
-			ManagedExtensions="0"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCWebServiceProxyGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
-				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
-				MinimalRebuild="true"
-				BasicRuntimeChecks="3"
-				RuntimeLibrary="3"
-				DebugInformationFormat="4"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalLibraryDirectories=""
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCManifestTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCAppVerifierTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<References>
-	</References>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
-			>
-			<File
-				RelativePath="..\..\tools\autotools\tsk_recover.cpp"
-				>
-			</File>
-		</Filter>
-		<Filter
-			Name="Header Files"
-			Filter="h;hpp;hxx;hm;inl;inc;xsd"
-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
-			>
-			<File
-				RelativePath="..\..\tools\autotools\tsk_recover.h"
-				>
-			</File>
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="tsk_recover"
+	ProjectGUID="{06D707E5-68FF-4FC4-AFD0-C84584E32F47}"
+	RootNamespace="tsk_recover"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="196613"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="2"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="libewf.lib zlib.lib"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="&quot;$(LIBEWF_HOME)\msvscpp\release&quot;"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug_NoLibs|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			ManagedExtensions="0"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="$(ProjectDir)\..\..\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalLibraryDirectories=""
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\tools\autotools\tsk_recover.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\tools\autotools\tsk_recover.h"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/win32/tsk_recover/tsk_recover.vcxproj b/win32/tsk_recover/tsk_recover.vcxproj
index b69bc7ff7c1c9fe1369d2f0cb5257906fd199a60..dd013c6504556dee49a931b2e6219e6b42b13168 100755
--- a/win32/tsk_recover/tsk_recover.vcxproj
+++ b/win32/tsk_recover/tsk_recover.vcxproj
@@ -1,133 +1,133 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug_NoLibs|Win32">
-      <Configuration>Debug_NoLibs</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{06D707E5-68FF-4FC4-AFD0-C84584E32F47}</ProjectGuid>
-    <RootNamespace>tsk_recover</RootNamespace>
-    <Keyword>Win32Proj</Keyword>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CLRSupport>false</CLRSupport>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>Application</ConfigurationType>
-    <CharacterSet>Unicode</CharacterSet>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
-    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
-    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
-    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Link>
-      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <SubSystem>Console</SubSystem>
-      <OptimizeReferences>true</OptimizeReferences>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
-    <ClCompile>
-      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <MinimalRebuild>true</MinimalRebuild>
-      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
-      <Optimization>Disabled</Optimization>
-    </ClCompile>
-    <Link>
-      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\autotools\tsk_recover.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\tools\autotools\tsk_recover.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
-      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug_NoLibs|Win32">
+      <Configuration>Debug_NoLibs</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{06D707E5-68FF-4FC4-AFD0-C84584E32F47}</ProjectGuid>
+    <RootNamespace>tsk_recover</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CLRSupport>false</CLRSupport>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">$(Configuration)\</IntDir>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>libewf.lib;zlib.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>$(LIBEWF_HOME)\msvscpp\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Console</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_NoLibs|Win32'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(ProjectDir)\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <Optimization>Disabled</Optimization>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\autotools\tsk_recover.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\tools\autotools\tsk_recover.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\libtsk\libtsk.vcxproj">
+      <Project>{76efc06c-1f64-4478-abe8-79832716b393}</Project>
+      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
 </Project>
\ No newline at end of file
diff --git a/win32/tsk_recover/tsk_recover.vcxproj.filters b/win32/tsk_recover/tsk_recover.vcxproj.filters
index db129d51dde7f52cc85bb93e61158f03c98f74c5..82af077692d998107e7a93d14d0b4e7b86fd110f 100755
--- a/win32/tsk_recover/tsk_recover.vcxproj.filters
+++ b/win32/tsk_recover/tsk_recover.vcxproj.filters
@@ -1,23 +1,23 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="Source Files">
-      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
-      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
-    </Filter>
-    <Filter Include="Header Files">
-      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
-      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\tools\autotools\tsk_recover.cpp">
-      <Filter>Source Files</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\tools\autotools\tsk_recover.h">
-      <Filter>Header Files</Filter>
-    </ClInclude>
-  </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\tools\autotools\tsk_recover.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\tools\autotools\tsk_recover.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
 </Project>
\ No newline at end of file