[med-svn] [SCM] aghermann branch, master, updated. c0bd21ca8eb529ade7e0c7aad22951a308a8dc8f

Andrei Zavada johnhommer at gmail.com
Wed May 1 00:09:34 UTC 2013


The following commit has been merged in the master branch:
commit c804ec2a70de61b0606f28702cf840e9df949011
Author: Andrei Zavada <johnhommer at gmail.com>
Date:   Thu Apr 25 15:27:05 2013 +0300

    discard and report unsupported files early in tree scanner

diff --git a/src/expdesign/primaries.hh b/src/expdesign/primaries.hh
index 6ab0dcd..12861c9 100644
--- a/src/expdesign/primaries.hh
+++ b/src/expdesign/primaries.hh
@@ -363,6 +363,7 @@ class CExpDesign {
       // edf sources
 	int register_intree_source( sigfile::CTypedSource&&,
 				    const char **reason_if_failed_p = nullptr);
+	static bool is_supported_source( sigfile::CTypedSource&);
 
       // model runs
 	int setup_modrun( const char* j, const char* d, const char* h,
diff --git a/src/expdesign/tree-scanner.cc b/src/expdesign/tree-scanner.cc
index 42ef454..6a3f0cd 100644
--- a/src/expdesign/tree-scanner.cc
+++ b/src/expdesign/tree-scanner.cc
@@ -240,8 +240,17 @@ register_intree_source( sigfile::CTypedSource&& F,
 
 
 
-
-
+bool
+agh::CExpDesign::
+is_supported_source( sigfile::CTypedSource& F)
+{
+	using namespace sigfile;
+	CEDFFile::TSubtype subtype;
+	return F.type() == CTypedSource::TType::edf and
+		(subtype = static_cast<CEDFFile*>(&F()) -> subtype(),
+		 (subtype == CEDFFile::TSubtype::edf ||
+		  subtype == CEDFFile::TSubtype::edfplus_c));
+}
 
 namespace {
 
@@ -264,11 +273,16 @@ edf_file_processor( const char *fname, const struct stat*, int flag, struct FTW
 			++__cur_edf_file;
 			only_progress_fun( fname, agh::fs::__n_edf_files, __cur_edf_file);
 			try {
-				sigfile::CTypedSource f_tmp {fname, __expdesign->fft_params.pagesize};
-				string st = f_tmp().explain_status();
+				using namespace sigfile;
+				CTypedSource F {fname, __expdesign->fft_params.pagesize};
+				string st = F().explain_status();
 				if ( not st.empty() )
 					__expdesign->log_message( "In %s:\n%s\n", fname, st.c_str());
-				__expdesign -> register_intree_source( move(f_tmp));
+				// we only support edf and edfplus/edf_c
+				if ( agh::CExpDesign::is_supported_source(F) )
+					__expdesign -> register_intree_source( move(F));
+				else
+					__expdesign -> log_message( "File %s: unsupported format\n", fname);
 
 			} catch ( invalid_argument ex) {
 				__expdesign->log_message(ex.what());

-- 
Sleep experiment manager



More information about the debian-med-commit mailing list