The following commit has been merged in the master branch:
commit 4e96c112349875ce4c31fcce82d6f78ee4fc2cc1
Author: Andrei Zavada <[email protected]>
Date:   Tue Apr 23 16:38:25 2013 +0300

    collapse spaces when parsing channel labels like "EEG C3"

diff --git a/src/libsigfile/edf.cc b/src/libsigfile/edf.cc
index 9f2578d..21c678b 100644
--- a/src/libsigfile/edf.cc
+++ b/src/libsigfile/edf.cc
@@ -783,16 +783,17 @@ _parse_header()
                if ( H.label == SSignal::edf_annotations_label )
                        H.signal_type = SChannel::TType::embedded_annotation;
                else {
-                     // try parsing as "type channel" first
-                       string parsable (H.label);
-                       char    *savep,
-                               *_1 = strtok_r( &parsable[0], " :,./", &savep),
-                               *_2 = strtok_r( NULL, " :,./", &savep);
-                       if ( _2 ) {
-                               H.signal_type_s = _1;
-                               H.signal_type = 
SChannel::figure_signal_type(_1);
-                               H.label.assign( _2);  // .channel overwritten
-                     // it only has a channel name
+                       auto tt = agh::str::tokens( H.label, " ");
+                       SChannel::TType figured_type;
+                       // parse legacy pre 0.9 specs ("EEG F3" etc)
+                       if ( tt.size() > 1 &&
+                            (figured_type = 
SChannel::figure_signal_type(tt.front().c_str()))
+                            != SChannel::TType::other ) {
+                               H.signal_type = figured_type;
+                               H.signal_type_s = tt.front();
+                               H.label = (tt.pop_front(), agh::str::join( tt, 
" "));
+                               if ( not H.label.follows_system1020() )
+                                       _status |= non1020_channel;
                        } else {
                                H.signal_type_s = SChannel::kemp_signal_types[
                                        H.signal_type = 
SChannel::signal_type_of_channel( H.label) ];

-- 
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