@@ -252,9 +252,15 @@ class flxFormatCSV : public flxOutputFormat
252252 virtual void writeObservation ()
253253 {
254254
255+ // First run? output mime type
256+ if (_isFirstRun)
257+ {
258+ outputObservation (" Content-Type: text/csv" , flxLineTypeMime);
259+ _isFirstRun = false ;
260+ }
255261 // Write out the header?
256262 if ((_writeHeader & kHeaderWrite ) == kHeaderWrite && _header_buffer.length () > 0 )
257- outputObservation (_header_buffer.c_str ());
263+ outputObservation (_header_buffer.c_str (), flxLineTypeHeader );
258264
259265 outputObservation (_data_buffer.c_str ());
260266 }
@@ -277,6 +283,7 @@ class flxFormatCSV : public flxOutputFormat
277283 _writeHeader = kHeaderWrite ;
278284 _section_name = nullptr ;
279285 _inObservation = false ;
286+ _isFirstRun = true ;
280287 }
281288
282289 // -----------------------------------------------------------------
@@ -292,7 +299,13 @@ class flxFormatCSV : public flxOutputFormat
292299 // the end of the observation. So, if in an observation, set the pending bit
293300
294301 if (_inObservation)
295- _writeHeader = (flxFmtCSVHeader_t)(_writeHeader | kHeaderPending );
302+ {
303+ // Are we writing a header with this observation? If so we are
304+ // starting a new file on a new system and writing data and a header
305+ // so skip adding a pending header
306+ if ((_writeHeader & kHeaderWrite ) != kHeaderWrite )
307+ _writeHeader = (flxFmtCSVHeader_t)(_writeHeader | kHeaderPending );
308+ }
296309 else
297310 _writeHeader = kHeaderWrite ;
298311 }
@@ -440,4 +453,5 @@ class flxFormatCSV : public flxOutputFormat
440453 flxFmtCSVHeader_t _writeHeader;
441454
442455 bool _inObservation;
456+ bool _isFirstRun;
443457};
0 commit comments