diff --git a/ChangeLog b/ChangeLog index b05579ef..2b436ede 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19355,3 +19355,6 @@ 2019-12-16 Fred Gleason * Fixed a bug in rdimport(1) that caused UTF-8 multibyte characters in filenames to be corrupted. +2019-12-16 Fred Gleason + * Fixed a bug in rdimport(1) that caused non-Latin1 characters + to be corrupted when using standard input. diff --git a/utils/rdimport/rdimport.cpp b/utils/rdimport/rdimport.cpp index a513ad86..17791f34 100644 --- a/utils/rdimport/rdimport.cpp +++ b/utils/rdimport/rdimport.cpp @@ -750,7 +750,16 @@ MainObject::MainObject(QObject *parent) import_fadeup_marker->dump(); Log(LOG_INFO,QString(" Files to process:\n")); for(unsigned i=import_file_key;icmdSwitch()->keys();i++) { - Log(LOG_INFO,QString().sprintf(" \"%s\"\n",(const char *)rda->cmdSwitch()->key(i).toUtf8())); + if(rda->cmdSwitch()->key(i)=="-") { + if(!import_stdin_specified) { + Log(LOG_INFO," [stdin]\n"); + import_stdin_specified=true; + } + } + else { + Log(LOG_INFO,QString().sprintf(" \"%s\"\n", + (const char *)rda->cmdSwitch()->key(i).toUtf8())); + } } // @@ -787,52 +796,14 @@ void MainObject::userData() } else { for(unsigned i=import_file_key;icmdSwitch()->keys();i++) { - ProcessFileList(rda->cmdSwitch()->key(i)); + ProcessFileEntry(rda->cmdSwitch()->key(i)); } if(import_stdin_specified) { - bool quote_mode=false; - bool escape_mode=false; - char buffer[PATH_MAX]; - unsigned ptr=0; - while((ptr0) { - buffer[ptr]=0; - ProcessFileList(buffer); + QTextStream in_stream(stdin,QIODevice::ReadOnly); + QString line=in_stream.readLine(); + while(!line.isNull()) { + ProcessFileEntry(line); + line=in_stream.readLine(); } } } @@ -873,7 +844,7 @@ void MainObject::RunDropBox() // Scan for Eligible Imports // for(unsigned i=import_file_key;icmdSwitch()->keys();i++) { - ProcessFileList(rda->cmdSwitch()->key(i)); + ProcessFileEntry(rda->cmdSwitch()->key(i)); } // @@ -895,17 +866,6 @@ void MainObject::RunDropBox() } -void MainObject::ProcessFileList(const QString &flist) -{ - QString entry; - - for(int i=0;i