The following commit has been merged in the master branch:
commit 84680a5b730d97041cf0a7149c5fdf27b357510e
Author: Andrei Zavada <[email protected]>
Date:   Sun Apr 21 00:21:40 2013 +0300

    less strict parsing of PatientId, just drop 5th and extra subfields

diff --git a/src/libsigfile/edf.cc b/src/libsigfile/edf.cc
index 60f4ef7..f0e1f34 100644
--- a/src/libsigfile/edf.cc
+++ b/src/libsigfile/edf.cc
@@ -585,10 +585,12 @@ _parse_header()
                        auto subfields = tokens( _patient_id, " ");
                        if ( unlikely (_patient_id.empty()) ) {
                                _status |= missing_patient_id;
-                       } else if ( subfields.size() != 4 ) {
+                       } else if ( subfields.size() < 4 ) {
                                _subject.id = subfields.front();
                                _status |= nonconforming_patient_id;
                        } else {
+                               if ( subfields.size() > 4 )
+                                       _status |= extra_patientid_subfields;
                                auto i = subfields.begin();
                                _subject.id = *i++;
                                _subject.gender = 
agh::SSubjectId::char_to_gender((*i++)[0]);
@@ -1005,6 +1007,8 @@ explain_edf_status( int status)
                recv.emplace_back( "* File truncated");
        if ( status & trailing_junk )
                recv.emplace_back( "* File has trailing junk");
+       if ( status & extra_patientid_subfields )
+               recv.emplace_back( "* Extra subfields in PatientId");
        return join(recv, "\n");
 }
 
diff --git a/src/libsigfile/edf.hh b/src/libsigfile/edf.hh
index 573b261..154518f 100644
--- a/src/libsigfile/edf.hh
+++ b/src/libsigfile/edf.hh
@@ -497,26 +497,27 @@ class CEDFFile
 
 
        enum TStatus : int_least32_t {
-               ok                       = 0,
-               bad_header               = (1 <<  0),
-               bad_version              = (1 <<  1),
-               bad_numfld               = (1 <<  2),
-               bad_recording            = (1 <<  3),
-               date_unparsable          = (1 <<  4),
-               time_unparsable          = (1 <<  5),
-               nosession                = (1 <<  6),
-               noepisode                = (1 <<  7),
-               nonkemp_signaltype       = (1 <<  8),
-               non1020_channel          = (1 <<  9),
-               dup_channels             = (1 << 10),
-               nogain                   = (1 << 11),
-               sysfail                  = (1 << 12),
-               too_many_channels        = (1 << 13),
-               nonconforming_patient_id = (1 << 14),
-               missing_patient_id       = (1 << 15),
-               invalid_subject_details  = (1 << 16),
-               file_truncated           = (1 << 17),
-               trailing_junk            = (1 << 18),
+               ok                        = 0,
+               bad_header                = (1 <<  0),
+               bad_version               = (1 <<  1),
+               bad_numfld                = (1 <<  2),
+               bad_recording             = (1 <<  3),
+               date_unparsable           = (1 <<  4),
+               time_unparsable           = (1 <<  5),
+               nosession                 = (1 <<  6),
+               noepisode                 = (1 <<  7),
+               nonkemp_signaltype        = (1 <<  8),
+               non1020_channel           = (1 <<  9),
+               dup_channels              = (1 << 10),
+               nogain                    = (1 << 11),
+               sysfail                   = (1 << 12),
+               too_many_channels         = (1 << 13),
+               nonconforming_patient_id  = (1 << 14),
+               missing_patient_id        = (1 << 15),
+               invalid_subject_details   = (1 << 16),
+               file_truncated            = (1 << 17),
+               trailing_junk             = (1 << 18),
+               extra_patientid_subfields = (1 << 19),
 
                inoperable               = (bad_header
                                           | bad_version

-- 
Sleep experiment manager

_______________________________________________
debian-med-commit mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit

Reply via email to