Change logging from fprintf to use RDConfig::log(). Allow overriding

[Logs] section in rd.conf with new --log-directory, --log-filename,
and --log-syslog options.
This commit is contained in:
Patrick Linstruth 2018-10-03 20:26:13 -07:00
parent bf8698196f
commit d65e81981b
2 changed files with 192 additions and 205 deletions

View File

@ -35,6 +35,7 @@
#include <rd.h> #include <rd.h>
#include <rdapplication.h> #include <rdapplication.h>
#include <rdconfig.h>
#include <rdaudioimport.h> #include <rdaudioimport.h>
#include <rdconf.h> #include <rdconf.h>
#include <rdcut.h> #include <rdcut.h>
@ -68,7 +69,9 @@ MainObject::MainObject(QObject *parent)
import_file_key=0; import_file_key=0;
import_group=NULL; import_group=NULL;
import_verbose=false; import_verbose=false;
import_log_mode=false; import_log_syslog=false;
import_log_directory="";
import_log_filename="";
import_single_cart=false; import_single_cart=false;
import_use_cartchunk_cutid=false; import_use_cartchunk_cutid=false;
import_cart_number_offset=0; import_cart_number_offset=0;
@ -109,6 +112,7 @@ MainObject::MainObject(QObject *parent)
fprintf(stderr,"\n"); fprintf(stderr,"\n");
fprintf(stderr,"%s",RDIMPORT_USAGE); fprintf(stderr,"%s",RDIMPORT_USAGE);
fprintf(stderr,"\n"); fprintf(stderr,"\n");
rda->log(RDConfig::LogErr,QString(RDIMPORT_USAGE));
exit(2); exit(2);
} }
for(unsigned i=0;i<rda->cmdSwitch()->keys()-2;i++) { for(unsigned i=0;i<rda->cmdSwitch()->keys()-2;i++) {
@ -116,19 +120,26 @@ MainObject::MainObject(QObject *parent)
import_verbose=true; import_verbose=true;
rda->cmdSwitch()->setProcessed(i,true); rda->cmdSwitch()->setProcessed(i,true);
} }
if(rda->cmdSwitch()->key(i)=="--log-mode") { if(rda->cmdSwitch()->key(i)=="--log-syslog") {
import_verbose=true; import_log_syslog=true;
import_log_mode=true; rda->cmdSwitch()->setProcessed(i,true);
}
if(rda->cmdSwitch()->key(i)=="--log-directory") {
import_log_directory=rda->cmdSwitch()->value(i);
rda->cmdSwitch()->setProcessed(i,true);
}
if(rda->cmdSwitch()->key(i)=="--log-filename") {
import_log_filename=rda->cmdSwitch()->value(i);
rda->cmdSwitch()->setProcessed(i,true); rda->cmdSwitch()->setProcessed(i,true);
} }
if(rda->cmdSwitch()->key(i)=="--to-cart") { if(rda->cmdSwitch()->key(i)=="--to-cart") {
import_cart_number=rda->cmdSwitch()->value(i).toUInt(&ok); import_cart_number=rda->cmdSwitch()->value(i).toUInt(&ok);
if((!ok)||(import_cart_number<1)||(import_cart_number>999999)) { if((!ok)||(import_cart_number<1)||(import_cart_number>999999)) {
fprintf(stderr,"rdimport: invalid cart number\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid cart number"));
exit(2); exit(2);
} }
if(import_use_cartchunk_cutid) { if(import_use_cartchunk_cutid) {
fprintf(stderr,"rdimport: '--to-cart' and '--use-cartchunk-cutid' are mutually exclusive\n"); rda->log(RDConfig::LogErr,QString("rdimport: '--to-cart' and '--use-cartchunk-cutid' are mutually exclusive"));
exit(2); exit(2);
} }
import_single_cart=true; import_single_cart=true;
@ -136,7 +147,7 @@ MainObject::MainObject(QObject *parent)
} }
if(rda->cmdSwitch()->key(i)=="--use-cartchunk-cutid") { if(rda->cmdSwitch()->key(i)=="--use-cartchunk-cutid") {
if(import_cart_number!=0) { if(import_cart_number!=0) {
fprintf(stderr,"rdimport: '--to-cart' and '--use-cartchunk-cutid' are mutually exclusive\n"); rda->log(RDConfig::LogErr,QString("rdimport: '--to-cart' and '--use-cartchunk-cutid' are mutually exclusive"));
exit(2); exit(2);
} }
import_use_cartchunk_cutid=true; import_use_cartchunk_cutid=true;
@ -145,7 +156,7 @@ MainObject::MainObject(QObject *parent)
if(rda->cmdSwitch()->key(i)=="--cart-number-offset") { if(rda->cmdSwitch()->key(i)=="--cart-number-offset") {
import_cart_number_offset=rda->cmdSwitch()->value(i).toInt(&ok); import_cart_number_offset=rda->cmdSwitch()->value(i).toInt(&ok);
if(!ok) { if(!ok) {
fprintf(stderr,"rdimport: invalid --cart-number-offset\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid --cart-number-offset"));
exit(2); exit(2);
} }
rda->cmdSwitch()->setProcessed(i,true); rda->cmdSwitch()->setProcessed(i,true);
@ -165,7 +176,7 @@ MainObject::MainObject(QObject *parent)
if(rda->cmdSwitch()->key(i)=="--startdate-offset") { if(rda->cmdSwitch()->key(i)=="--startdate-offset") {
import_startdate_offset=rda->cmdSwitch()->value(i).toInt(&ok); import_startdate_offset=rda->cmdSwitch()->value(i).toInt(&ok);
if(!ok) { if(!ok) {
fprintf(stderr,"rdimport: invalid startdate-offset\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid startdate-offset"));
exit(2); exit(2);
} }
rda->cmdSwitch()->setProcessed(i,true); rda->cmdSwitch()->setProcessed(i,true);
@ -173,7 +184,7 @@ MainObject::MainObject(QObject *parent)
if(rda->cmdSwitch()->key(i)=="--enddate-offset") { if(rda->cmdSwitch()->key(i)=="--enddate-offset") {
import_enddate_offset=rda->cmdSwitch()->value(i).toInt(&ok); import_enddate_offset=rda->cmdSwitch()->value(i).toInt(&ok);
if(!ok) { if(!ok) {
fprintf(stderr,"rdimport: invalid enddate-offset\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid enddate-offset"));
exit(2); exit(2);
} }
rda->cmdSwitch()->setProcessed(i,true); rda->cmdSwitch()->setProcessed(i,true);
@ -185,52 +196,52 @@ MainObject::MainObject(QObject *parent)
if(rda->cmdSwitch()->key(i)=="--set-datetimes") { if(rda->cmdSwitch()->key(i)=="--set-datetimes") {
QStringList f0=rda->cmdSwitch()->value(i).split(","); QStringList f0=rda->cmdSwitch()->value(i).split(",");
if(f0.size()!=2) { if(f0.size()!=2) {
fprintf(stderr,"rdimport: invalid argument to --set-datetimes\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid argument to --set-datetimes"));
exit(2); exit(2);
} }
for(unsigned j=0;j<2;j++) { for(unsigned j=0;j<2;j++) {
if((f0[j].length()!=15)||(f0[j].mid(8,1)!="-")) { if((f0[j].length()!=15)||(f0[j].mid(8,1)!="-")) {
fprintf(stderr,"rdimport: invalid argument to --set-datetimes\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid argument to --set-datetimes"));
exit(2); exit(2);
} }
unsigned year=f0[j].left(4).toUInt(&ok); unsigned year=f0[j].left(4).toUInt(&ok);
if(!ok) { if(!ok) {
fprintf(stderr,"rdimport: invalid year argument to --set-datetimes\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid year argument to --set-datetimes"));
exit(2); exit(2);
} }
unsigned month=f0[j].mid(4,2).toUInt(&ok); unsigned month=f0[j].mid(4,2).toUInt(&ok);
if((!ok)||(month>12)) { if((!ok)||(month>12)) {
fprintf(stderr,"rdimport: invalid month argument to --set-datetimes\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid month argument to --set-datetimes"));
exit(2); exit(2);
} }
unsigned day=f0[j].mid(6,2).toUInt(&ok); unsigned day=f0[j].mid(6,2).toUInt(&ok);
if((!ok)||(day>31)) { if((!ok)||(day>31)) {
fprintf(stderr,"rdimport: invalid day argument to --set-datetimes\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid day argument to --set-datetimes"));
exit(2); exit(2);
} }
unsigned hour=f0[j].mid(9,2).toUInt(&ok); unsigned hour=f0[j].mid(9,2).toUInt(&ok);
if((!ok)||(hour>23)) { if((!ok)||(hour>23)) {
fprintf(stderr,"rdimport: invalid hour argument to --set-datetimes\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid hour argument to --set-datetimes"));
exit(2); exit(2);
} }
unsigned min=f0[j].mid(11,2).toUInt(&ok); unsigned min=f0[j].mid(11,2).toUInt(&ok);
if((!ok)||(min>59)) { if((!ok)||(min>59)) {
fprintf(stderr,"rdimport: invalid minute argument to --set-datetimes\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid minute argument to --set-datetimes"));
exit(2); exit(2);
} }
unsigned sec=f0[j].right(2).toUInt(&ok); unsigned sec=f0[j].right(2).toUInt(&ok);
if((!ok)||(sec>59)) { if((!ok)||(sec>59)) {
fprintf(stderr,"rdimport: invalid seconds argument to --set-datetimes\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid seconds argument to --set-datetimes"));
exit(2); exit(2);
} }
import_datetimes[j]=QDateTime(QDate(year,month,day), import_datetimes[j]=QDateTime(QDate(year,month,day),
QTime(hour,min,sec)); QTime(hour,min,sec));
if(!import_datetimes[j].isValid()) { if(!import_datetimes[j].isValid()) {
fprintf(stderr,"rdimport: invalid argument to --set-datetimes\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid argument to --set-datetimes"));
} }
} }
if(import_datetimes[0]>=import_datetimes[1]) { if(import_datetimes[0]>=import_datetimes[1]) {
fprintf(stderr,"rdimport: datetime cannot end before it begins\n"); rda->log(RDConfig::LogErr,QString("rdimport: datetime cannot end before it begins"));
exit(2); exit(2);
} }
rda->cmdSwitch()->setProcessed(i,true); rda->cmdSwitch()->setProcessed(i,true);
@ -238,33 +249,33 @@ MainObject::MainObject(QObject *parent)
if(rda->cmdSwitch()->key(i)=="--set-daypart-times") { if(rda->cmdSwitch()->key(i)=="--set-daypart-times") {
QStringList f0=rda->cmdSwitch()->value(i).split(","); QStringList f0=rda->cmdSwitch()->value(i).split(",");
if(f0.size()!=2) { if(f0.size()!=2) {
fprintf(stderr,"rdimport: invalid argument to --set-daypart-times\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid argument to --set-daypart-times"));
exit(2); exit(2);
} }
for(unsigned j=0;j<2;j++) { for(unsigned j=0;j<2;j++) {
if(f0[j].length()!=6) { if(f0[j].length()!=6) {
fprintf(stderr,"rdimport: invalid argument to --set-daypart-times\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid argument to --set-daypart-times"));
exit(2); exit(2);
} }
unsigned hour=f0[j].left(2).toUInt(&ok); unsigned hour=f0[j].left(2).toUInt(&ok);
if((!ok)||(hour>23)) { if((!ok)||(hour>23)) {
fprintf(stderr,"rdimport: invalid hour argument to --set-daypart-times\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid hour argument to --set-daypart-times"));
exit(2); exit(2);
} }
unsigned min=f0[j].mid(2,2).toUInt(&ok); unsigned min=f0[j].mid(2,2).toUInt(&ok);
if((!ok)||(min>59)) { if((!ok)||(min>59)) {
fprintf(stderr,"rdimport: invalid minute argument to --set-daypart-times\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid minute argument to --set-daypart-times"));
exit(2); exit(2);
} }
unsigned sec=f0[j].right(2).toUInt(&ok); unsigned sec=f0[j].right(2).toUInt(&ok);
if((!ok)||(sec>59)) { if((!ok)||(sec>59)) {
fprintf(stderr,"rdimport: invalid seconds argument to --set-daypart-times\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid seconds argument to --set-daypart-times"));
exit(2); exit(2);
} }
import_dayparts[j].setHMS(hour,min,sec); import_dayparts[j].setHMS(hour,min,sec);
} }
if(import_dayparts[0]>=import_dayparts[1]) { if(import_dayparts[0]>=import_dayparts[1]) {
fprintf(stderr,"rdimport: daypart cannot end before it begins\n"); rda->log(RDConfig::LogErr,QString("rdimport: daypart cannot end before it begins"));
exit(2); exit(2);
} }
rda->cmdSwitch()->setProcessed(i,true); rda->cmdSwitch()->setProcessed(i,true);
@ -295,7 +306,7 @@ MainObject::MainObject(QObject *parent)
if(rda->cmdSwitch()->key(i)=="--metadata-pattern") { if(rda->cmdSwitch()->key(i)=="--metadata-pattern") {
import_metadata_pattern=rda->cmdSwitch()->value(i); import_metadata_pattern=rda->cmdSwitch()->value(i);
if(!VerifyPattern(import_metadata_pattern)) { if(!VerifyPattern(import_metadata_pattern)) {
fprintf(stderr,"rdimport: invalid metadata pattern\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid metadata pattern"));
exit(2); exit(2);
} }
rda->cmdSwitch()->setProcessed(i,true); rda->cmdSwitch()->setProcessed(i,true);
@ -307,7 +318,7 @@ MainObject::MainObject(QObject *parent)
if(rda->cmdSwitch()->key(i)=="--persistent-dropbox-id") { if(rda->cmdSwitch()->key(i)=="--persistent-dropbox-id") {
import_persistent_dropbox_id=rda->cmdSwitch()->value(i).toInt(&ok); import_persistent_dropbox_id=rda->cmdSwitch()->value(i).toInt(&ok);
if(!ok) { if(!ok) {
fprintf(stderr,"rdimport: invalid persistent dropbox id\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid persistent dropbox id"));
exit(2); exit(2);
} }
rda->cmdSwitch()->setProcessed(i,true); rda->cmdSwitch()->setProcessed(i,true);
@ -315,7 +326,7 @@ MainObject::MainObject(QObject *parent)
if(rda->cmdSwitch()->key(i)=="--create-startdate-offset") { if(rda->cmdSwitch()->key(i)=="--create-startdate-offset") {
import_create_startdate_offset=rda->cmdSwitch()->value(i).toInt(&ok); import_create_startdate_offset=rda->cmdSwitch()->value(i).toInt(&ok);
if(!ok) { if(!ok) {
fprintf(stderr,"rdimport: invalid create-startddate-offset\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid create-startddate-offset"));
exit(2); exit(2);
} }
import_create_dates=true; import_create_dates=true;
@ -325,7 +336,7 @@ MainObject::MainObject(QObject *parent)
import_create_enddate_offset=rda->cmdSwitch()->value(i).toInt(&ok); import_create_enddate_offset=rda->cmdSwitch()->value(i).toInt(&ok);
if((!ok) || if((!ok) ||
(import_create_startdate_offset > import_create_enddate_offset )) { (import_create_startdate_offset > import_create_enddate_offset )) {
fprintf(stderr,"rdimport: invalid create-enddate-offset\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid create-enddate-offset"));
exit(2); exit(2);
} }
import_create_dates=true; import_create_dates=true;
@ -346,7 +357,7 @@ MainObject::MainObject(QObject *parent)
if(rda->cmdSwitch()->key(i)=="--set-string-bpm") { if(rda->cmdSwitch()->key(i)=="--set-string-bpm") {
import_string_bpm=rda->cmdSwitch()->value(i).toInt(&ok); import_string_bpm=rda->cmdSwitch()->value(i).toInt(&ok);
if(!ok) { if(!ok) {
fprintf(stderr,"rdimport: invalid value for --set-string-bpm\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid value for --set-string-bpm"));
exit(255); exit(255);
} }
rda->cmdSwitch()->setProcessed(i,true); rda->cmdSwitch()->setProcessed(i,true);
@ -385,7 +396,7 @@ MainObject::MainObject(QObject *parent)
} }
if(rda->cmdSwitch()->key(i)=="--set-string-title") { if(rda->cmdSwitch()->key(i)=="--set-string-title") {
if(rda->cmdSwitch()->value(i).isEmpty()) { if(rda->cmdSwitch()->value(i).isEmpty()) {
fprintf(stderr,"title field cannot be empty\n"); rda->log(RDConfig::LogErr,QString("title field cannot be empty"));
exit(255); exit(255);
} }
import_string_title=rda->cmdSwitch()->value(i); import_string_title=rda->cmdSwitch()->value(i);
@ -398,7 +409,7 @@ MainObject::MainObject(QObject *parent)
if(rda->cmdSwitch()->key(i)=="--set-string-year") { if(rda->cmdSwitch()->key(i)=="--set-string-year") {
import_string_year=rda->cmdSwitch()->value(i).toInt(&ok); import_string_year=rda->cmdSwitch()->value(i).toInt(&ok);
if(!ok) { if(!ok) {
fprintf(stderr,"rdimport: invalid value for --set-string-year\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid value for --set-string-year"));
exit(255); exit(255);
} }
rda->cmdSwitch()->setProcessed(i,true); rda->cmdSwitch()->setProcessed(i,true);
@ -413,17 +424,41 @@ MainObject::MainObject(QObject *parent)
// Sanity Checks // Sanity Checks
// //
if(import_datetimes[0].isValid()&&import_clear_datetimes) { if(import_datetimes[0].isValid()&&import_clear_datetimes) {
fprintf(stderr,"rdimport: --set-datetimes and --clear-datetimes are mutually exclusive\n"); rda->log(RDConfig::LogErr,QString().sprintf("rdimport: --set-datetimes and --clear-datetimes are mutually exclusive"));
exit(255); exit(255);
} }
if((!import_dayparts[1].isNull())&&import_clear_dayparts) { if((!import_dayparts[1].isNull())&&import_clear_dayparts) {
fprintf(stderr,"rdimport: --set-daypart-times and --clear-daypart-times are mutually exclusive\n"); rda->log(RDConfig::LogErr,QString().sprintf("rdimport: --set-daypart-times and --clear-daypart-times are mutually exclusive"));
exit(255); exit(255);
} }
if((!import_metadata_pattern.isEmpty())&&import_xml) { if((!import_metadata_pattern.isEmpty())&&import_xml) {
fprintf(stderr,"rdimport: --metadata-pattern and --xml are mutually exclusive\n"); rda->log(RDConfig::LogErr,QString().sprintf("rdimport: --metadata-pattern and --xml are mutually exclusive"));
exit(255); exit(255);
} }
if((!import_log_directory.isEmpty())&&import_log_filename.isEmpty()) {
rda->log(RDConfig::LogErr,QString().sprintf("rdimport: --log-directory requires --log-filename"));
exit(255);
}
if((!import_log_filename.isEmpty())&&import_log_directory.isEmpty()) {
rda->log(RDConfig::LogErr,QString().sprintf("rdimport: --log-filename requires --log-directory"));
exit(255);
}
if((!import_log_filename.isEmpty())&&import_log_syslog) {
rda->log(RDConfig::LogErr,QString().sprintf("rdimport: --log-filename and --log-syslog are mutually exclusive"));
exit(255);
}
//
// Set Logging
//
if(import_log_syslog) {
rda->config()->setLogFacility(RDConfig::LogSyslog);
}
else if((!import_log_filename.isEmpty())&&!import_log_directory.isEmpty()) {
rda->config()->setLogDirectory(import_log_directory);
rda->config()->setLogPattern(import_log_filename);
rda->config()->setLogFacility(RDConfig::LogFile);
}
import_cut_markers=new MarkerSet(); import_cut_markers=new MarkerSet();
import_cut_markers->loadMarker(rda->cmdSwitch(),"cut"); import_cut_markers->loadMarker(rda->cmdSwitch(),"cut");
@ -452,7 +487,7 @@ MainObject::MainObject(QObject *parent)
if(rda->cmdSwitch()->key(i).left(2)!="--") { if(rda->cmdSwitch()->key(i).left(2)!="--") {
import_group=new RDGroup(rda->cmdSwitch()->key(i)); import_group=new RDGroup(rda->cmdSwitch()->key(i));
if(!import_group->exists()) { if(!import_group->exists()) {
fprintf(stderr,"rdimport: invalid group specified\n"); rda->log(RDConfig::LogErr,QString().sprintf("rdimport: invalid group specified"));
delete import_group; delete import_group;
exit(2); exit(2);
} }
@ -461,12 +496,12 @@ MainObject::MainObject(QObject *parent)
} }
} }
if(import_group==NULL) { if(import_group==NULL) {
fprintf(stderr,"rdimport: invalid group specified\n"); rda->log(RDConfig::LogErr,QString().sprintf("rdimport: invalid group specified"));
exit(2); exit(2);
} }
if(import_cart_number>0) { if(import_cart_number>0) {
if(!import_group->cartNumberValid(import_cart_number)) { if(!import_group->cartNumberValid(import_cart_number)) {
fprintf(stderr,"rdimport: invalid cart number for group\n"); rda->log(RDConfig::LogErr,QString().sprintf("rdimport: invalid cart number for group"));
delete import_group; delete import_group;
exit(2); exit(2);
} }
@ -477,8 +512,8 @@ MainObject::MainObject(QObject *parent)
// //
for(unsigned i=0;i<import_add_scheduler_codes.size();i++) { for(unsigned i=0;i<import_add_scheduler_codes.size();i++) {
if(!SchedulerCodeExists(import_add_scheduler_codes[i])) { if(!SchedulerCodeExists(import_add_scheduler_codes[i])) {
fprintf(stderr,"scheduler code \"%s\" does not exist\n", rda->log(RDConfig::LogErr,QString().sprintf("scheduler code \"%s\" does not exist",
(const char *)import_add_scheduler_codes[i].utf8()); (const char *)import_add_scheduler_codes[i].utf8()));
exit(2); exit(2);
} }
} }
@ -503,7 +538,7 @@ MainObject::MainObject(QObject *parent)
import_normalization_level=100*n; import_normalization_level=100*n;
} }
else { else {
fprintf(stderr,"rdimport: invalid normalization level\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid normalization level"));
exit(2); exit(2);
} }
rda->cmdSwitch()->setProcessed(i,true); rda->cmdSwitch()->setProcessed(i,true);
@ -514,7 +549,7 @@ MainObject::MainObject(QObject *parent)
import_autotrim_level=100*n; import_autotrim_level=100*n;
} }
else { else {
fprintf(stderr,"rdimport: invalid autotrim level\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid autotrim level"));
exit(2); exit(2);
} }
rda->cmdSwitch()->setProcessed(i,true); rda->cmdSwitch()->setProcessed(i,true);
@ -525,7 +560,7 @@ MainObject::MainObject(QObject *parent)
import_segue_level=n; import_segue_level=n;
} }
else { else {
fprintf(stderr,"rdimport: invalid segue level\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid segue level"));
exit(2); exit(2);
} }
rda->cmdSwitch()->setProcessed(i,true); rda->cmdSwitch()->setProcessed(i,true);
@ -536,7 +571,7 @@ MainObject::MainObject(QObject *parent)
import_segue_length=n; import_segue_length=n;
} }
else { else {
fprintf(stderr,"rdimport: invalid segue length\n"); rda->log(RDConfig::LogErr,QString("rdimport: invalid segue length"));
exit(2); exit(2);
} }
rda->cmdSwitch()->setProcessed(i,true); rda->cmdSwitch()->setProcessed(i,true);
@ -547,8 +582,8 @@ MainObject::MainObject(QObject *parent)
} }
if((!rda->cmdSwitch()->processed(i))&& if((!rda->cmdSwitch()->processed(i))&&
(rda->cmdSwitch()->key(i).left(2)=="--")) { (rda->cmdSwitch()->key(i).left(2)=="--")) {
fprintf(stderr,"rdimport: unknown command option \"%s\"\n", rda->log(RDConfig::LogErr,QString().sprintf("rdimport: unknown command option \"%s\"",
(const char *)rda->cmdSwitch()->key(i)); (const char *)rda->cmdSwitch()->key(i)));
exit(2); exit(2);
} }
} }
@ -560,178 +595,168 @@ MainObject::MainObject(QObject *parent)
// Print Status Messages // Print Status Messages
// //
if(import_verbose) { if(import_verbose) {
printf("\n"); rda->log(RDConfig::LogInfo,QString("rdimport started"));
if(import_log_mode) {
PrintLogDateTime(stdout); rda->log(RDConfig::LogInfo,QString().sprintf("RDImport v%s",VERSION));
printf("rdimport started\n");
}
printf("RDImport v%s\n",VERSION);
if(import_log_mode) {
printf(" Log mode is ON\n");
}
else {
printf(" Log mode is OFF\n");
}
if(import_to_mono) { if(import_to_mono) {
printf(" Force to Mono is ON\n"); rda->log(RDConfig::LogInfo,QString(" Force to Mono is ON"));
} }
else { else {
printf(" Force to Mono is OFF\n"); rda->log(RDConfig::LogInfo,QString(" Force to Mono is OFF"));
} }
if(import_normalization_level==0) { if(import_normalization_level==0) {
printf(" Normalization is OFF\n"); rda->log(RDConfig::LogInfo,QString(" Normalization is OFF"));
} }
else { else {
printf(" Normalization level = %d dB\n",import_normalization_level/100); rda->log(RDConfig::LogInfo,QString().sprintf(" Normalization level = %d dB",import_normalization_level/100));
} }
if(import_autotrim_level==0) { if(import_autotrim_level==0) {
printf(" AutoTrim is OFF\n"); rda->log(RDConfig::LogInfo,QString(" AutoTrim is OFF"));
} }
else { else {
printf(" AutoTrim level = %d dB\n",import_autotrim_level/100); rda->log(RDConfig::LogInfo,QString().sprintf(" AutoTrim level = %d dB",import_autotrim_level/100));
} }
if(import_cart_number==0) { if(import_cart_number==0) {
if(import_use_cartchunk_cutid) { if(import_use_cartchunk_cutid) {
printf(" Destination cart is taken from CartChunk CutID\n"); rda->log(RDConfig::LogInfo,QString(" Destination cart is taken from CartChunk CutID"));
} }
else { else {
printf(" Destination cart is AUTO\n"); rda->log(RDConfig::LogInfo,QString(" Destination cart is AUTO"));
} }
} }
else { else {
printf(" Destination cart is %06u\n",import_cart_number); rda->log(RDConfig::LogInfo,QString().sprintf(" Destination cart is %06u",import_cart_number));
} }
if(import_single_cart) { if(import_single_cart) {
printf(" Single cart mode is ON\n"); rda->log(RDConfig::LogInfo,QString(" Single cart mode is ON"));
} }
else { else {
printf(" Single cart mode is OFF\n"); rda->log(RDConfig::LogInfo,QString(" Single cart mode is OFF"));
} }
if(import_title_from_cartchunk_cutid) { if(import_title_from_cartchunk_cutid) {
printf(" Destination cart title is taken from CartChunk CutID\n"); rda->log(RDConfig::LogInfo,QString(" Destination cart title is taken from CartChunk CutID"));
} }
if(import_cart_number_offset!=0) { if(import_cart_number_offset!=0) {
printf(" Cart number offset is %d\n",import_cart_number_offset); rda->log(RDConfig::LogInfo,QString().sprintf(" Cart number offset is %d",import_cart_number_offset));
} }
if(import_delete_source) { if(import_delete_source) {
printf(" Delete source mode is ON\n"); rda->log(RDConfig::LogInfo,QString(" Delete source mode is ON"));
} }
else { else {
printf(" Delete source mode is OFF\n"); rda->log(RDConfig::LogInfo,QString(" Delete source mode is OFF"));
} }
if(import_delete_cuts) { if(import_delete_cuts) {
printf(" Delete cuts mode is ON\n"); rda->log(RDConfig::LogInfo,QString(" Delete cuts mode is ON"));
} }
else { else {
printf(" Delete cuts mode is OFF\n"); rda->log(RDConfig::LogInfo,QString(" Delete cuts mode is OFF"));
} }
if(import_drop_box) { if(import_drop_box) {
printf(" DropBox mode is ON\n"); rda->log(RDConfig::LogInfo,QString(" DropBox mode is ON"));
} }
else { else {
printf(" DropBox mode is OFF\n"); rda->log(RDConfig::LogInfo,QString(" DropBox mode is OFF"));
} }
if(import_add_scheduler_codes.size()>0) { if(import_add_scheduler_codes.size()>0) {
printf(" Adding Scheduler Code(s):"); rda->log(RDConfig::LogInfo,QString(" Adding Scheduler Code(s):"));
for(unsigned i=0;i<import_add_scheduler_codes.size();i++) { for(unsigned i=0;i<import_add_scheduler_codes.size();i++) {
printf(" %s",(const char *)import_add_scheduler_codes[i].utf8()); rda->log(RDConfig::LogInfo,QString().sprintf(" %s",(const char *)import_add_scheduler_codes[i].utf8()));
} }
printf("\n");
} }
if(!import_set_user_defined.isEmpty()) { if(!import_set_user_defined.isEmpty()) {
printf(" Setting the User Defined field to \"%s\"\n", rda->log(RDConfig::LogInfo,QString().sprintf(" Setting the User Defined field to \"%s\"",
(const char *)import_set_user_defined); (const char *)import_set_user_defined));
} }
if(!import_metadata_pattern.isEmpty()) { if(!import_metadata_pattern.isEmpty()) {
printf(" Using metadata pattern: %s\n", rda->log(RDConfig::LogInfo,QString().sprintf(" Using metadata pattern: %s",
(const char *)import_metadata_pattern); (const char *)import_metadata_pattern));
} }
printf(" Start Date Offset = %d days\n",import_startdate_offset); rda->log(RDConfig::LogInfo,QString().sprintf(" Start Date Offset = %d days",import_startdate_offset));
printf(" End Date Offset = %d days\n",import_enddate_offset); rda->log(RDConfig::LogInfo,QString().sprintf(" End Date Offset = %d days",import_enddate_offset));
if((!import_dayparts[0].isNull())||(!import_dayparts[1].isNull())) { if((!import_dayparts[0].isNull())||(!import_dayparts[1].isNull())) {
printf(" Start Daypart = %s\n", rda->log(RDConfig::LogInfo,QString().sprintf(" Start Daypart = %s",
(const char *)import_dayparts[0].toString("hh:mm:ss")); (const char *)import_dayparts[0].toString("hh:mm:ss")));
printf(" End Daypart = %s\n", rda->log(RDConfig::LogInfo,QString().sprintf(" End Daypart = %s",
(const char *)import_dayparts[1].toString("hh:mm:ss")); (const char *)import_dayparts[1].toString("hh:mm:ss")));
} }
if(import_clear_dayparts) { if(import_clear_dayparts) {
printf(" Clearing daypart times\n"); rda->log(RDConfig::LogInfo,QString(" Clearing daypart times"));
} }
if((!import_datetimes[0].isNull())||(!import_datetimes[1].isNull())) { if((!import_datetimes[0].isNull())||(!import_datetimes[1].isNull())) {
printf(" Start DateTime = %s\n", rda->log(RDConfig::LogInfo,QString().sprintf(" Start DateTime = %s",
(const char *)import_datetimes[0].toString("MM/dd/yyyy hh:mm:ss")); (const char *)import_datetimes[0].toString("MM/dd/yyyy hh:mm:ss")));
printf(" End DateTime = %s\n", rda->log(RDConfig::LogInfo,QString().sprintf(" End DateTime = %s",
(const char *)import_datetimes[1].toString("MM/dd/yyyy hh:mm:ss")); (const char *)import_datetimes[1].toString("MM/dd/yyyy hh:mm:ss")));
} }
if(import_clear_datetimes) { if(import_clear_datetimes) {
printf(" Clearing datetimes\n"); rda->log(RDConfig::LogInfo,QString(" Clearing datetimes"));
} }
if(import_fix_broken_formats) { if(import_fix_broken_formats) {
printf(" Broken format workarounds are ENABLED\n"); rda->log(RDConfig::LogInfo,QString(" Broken format workarounds are ENABLED"));
} }
else { else {
printf(" Broken format workarounds are DISABLED\n"); rda->log(RDConfig::LogInfo,QString(" Broken format workarounds are DISABLED"));
} }
if(import_create_dates) { if(import_create_dates) {
printf(" Import Create Dates mode is ON\n"); rda->log(RDConfig::LogInfo,QString(" Import Create Dates mode is ON"));
printf(" Import Create Start Date Offset = %d days\n",import_create_startdate_offset); rda->log(RDConfig::LogInfo,QString().sprintf(" Import Create Start Date Offset = %d days",import_create_startdate_offset));
printf(" Import Create End Date Offset = %d days\n",import_create_enddate_offset); rda->log(RDConfig::LogInfo,QString().sprintf(" Import Create End Date Offset = %d days",import_create_enddate_offset));
} }
else { else {
printf(" Import Create Dates mode is OFF\n"); rda->log(RDConfig::LogInfo,QString(" Import Create Dates mode is OFF"));
} }
if(import_persistent_dropbox_id>=0) { if(import_persistent_dropbox_id>=0) {
printf(" Persistent DropBox ID = %d\n",import_persistent_dropbox_id); rda->log(RDConfig::LogInfo,QString().sprintf(" Persistent DropBox ID = %d",import_persistent_dropbox_id));
} }
if(!import_string_agency.isNull()) { if(!import_string_agency.isNull()) {
printf(" Agency set to: %s\n",(const char *)import_string_agency); rda->log(RDConfig::LogInfo,QString().sprintf(" Agency set to: %s",(const char *)import_string_agency));
} }
if(!import_string_album.isNull()) { if(!import_string_album.isNull()) {
printf(" Album set to: %s\n",(const char *)import_string_album); rda->log(RDConfig::LogInfo,QString().sprintf(" Album set to: %s",(const char *)import_string_album));
} }
if(!import_string_artist.isNull()) { if(!import_string_artist.isNull()) {
printf(" Artist set to: %s\n",(const char *)import_string_artist); rda->log(RDConfig::LogInfo,QString().sprintf(" Artist set to: %s",(const char *)import_string_artist));
} }
if(import_string_bpm!=0) { if(import_string_bpm!=0) {
printf(" BPM set to: %d\n",import_string_bpm); rda->log(RDConfig::LogInfo,QString().sprintf(" BPM set to: %d",import_string_bpm));
} }
if(!import_string_client.isNull()) { if(!import_string_client.isNull()) {
printf(" Client set to: %s\n",(const char *)import_string_client); rda->log(RDConfig::LogInfo,QString().sprintf(" Client set to: %s",(const char *)import_string_client));
} }
if(!import_string_composer.isNull()) { if(!import_string_composer.isNull()) {
printf(" Composer set to: %s\n",(const char *)import_string_composer); rda->log(RDConfig::LogInfo,QString().sprintf(" Composer set to: %s",(const char *)import_string_composer));
} }
if(!import_string_conductor.isNull()) { if(!import_string_conductor.isNull()) {
printf(" Conductor set to: %s\n",(const char *)import_string_conductor); rda->log(RDConfig::LogInfo,QString().sprintf(" Conductor set to: %s",(const char *)import_string_conductor));
} }
if(!import_string_description.isNull()) { if(!import_string_description.isNull()) {
printf(" Description set to: %s\n", rda->log(RDConfig::LogInfo,QString().sprintf(" Description set to: %s",
(const char *)import_string_description); (const char *)import_string_description));
} }
if(!import_string_label.isNull()) { if(!import_string_label.isNull()) {
printf(" Label set to: %s\n",(const char *)import_string_label); rda->log(RDConfig::LogInfo,QString().sprintf(" Label set to: %s",(const char *)import_string_label));
} }
if(!import_string_outcue.isNull()) { if(!import_string_outcue.isNull()) {
printf(" Outcue set to: %s\n",(const char *)import_string_outcue); rda->log(RDConfig::LogInfo,QString().sprintf(" Outcue set to: %s",(const char *)import_string_outcue));
} }
if(!import_string_publisher.isNull()) { if(!import_string_publisher.isNull()) {
printf(" Publisher set to: %s\n",(const char *)import_string_publisher); rda->log(RDConfig::LogInfo,QString().sprintf(" Publisher set to: %s",(const char *)import_string_publisher));
} }
if(!import_string_song_id.isNull()) { if(!import_string_song_id.isNull()) {
printf(" Song ID set to: %s\n",(const char *)import_string_song_id); rda->log(RDConfig::LogInfo,QString().sprintf(" Song ID set to: %s",(const char *)import_string_song_id));
} }
if(!import_string_title.isNull()) { if(!import_string_title.isNull()) {
printf(" Title set to: %s\n",(const char *)import_string_title); rda->log(RDConfig::LogInfo,QString().sprintf(" Title set to: %s",(const char *)import_string_title));
} }
if(!import_string_user_defined.isNull()) { if(!import_string_user_defined.isNull()) {
printf(" User Defined set to: %s\n", rda->log(RDConfig::LogInfo,QString().sprintf(" User Defined set to: %s",
(const char *)import_string_user_defined); (const char *)import_string_user_defined));
} }
if(import_string_year!=0) { if(import_string_year!=0) {
printf(" Year set to: %d\n",import_string_year); rda->log(RDConfig::LogInfo,QString().sprintf(" Year set to: %d",import_string_year));
} }
if(import_xml) { if(import_xml) {
printf(" Importing RDXML metadata from external file\n"); rda->log(RDConfig::LogInfo,QString().sprintf(" Importing RDXML metadata from external file"));
} }
import_cut_markers->dump(); import_cut_markers->dump();
import_talk_markers->dump(); import_talk_markers->dump();
@ -739,12 +764,10 @@ MainObject::MainObject(QObject *parent)
import_segue_markers->dump(); import_segue_markers->dump();
import_fadedown_marker->dump(); import_fadedown_marker->dump();
import_fadeup_marker->dump(); import_fadeup_marker->dump();
printf(" Files to process:\n"); rda->log(RDConfig::LogInfo,QString(" Files to process:"));
for(unsigned i=import_file_key;i<rda->cmdSwitch()->keys();i++) { for(unsigned i=import_file_key;i<rda->cmdSwitch()->keys();i++) {
printf(" \"%s\"\n",(const char *)rda->cmdSwitch()->key(i)); rda->log(RDConfig::LogInfo,QString().sprintf(" \"%s\"",(const char *)rda->cmdSwitch()->key(i)));
} }
printf("\n");
fflush(stdout);
} }
// //
@ -767,8 +790,9 @@ void MainObject::userData()
// Verify Permissions // Verify Permissions
// //
if(!rda->user()->editAudio()) { if(!rda->user()->editAudio()) {
fprintf(stderr,"rdimport: user \"%s\" has no edit audio permission\n", rda->log(RDConfig::LogErr,
(const char *)rda->user()->name()); QString().sprintf("rdimport: user \"%s\" has no edit audio permission",
(const char *)rda->user()->name()));
exit(256); exit(256);
} }
@ -883,11 +907,7 @@ void MainObject::RunDropBox()
sleep(RDIMPORT_DROPBOX_SCAN_INTERVAL); sleep(RDIMPORT_DROPBOX_SCAN_INTERVAL);
} while(import_run); } while(import_run);
if(import_log_mode) { rda->log(RDConfig::LogInfo,QString("rdimport stopped"));
PrintLogDateTime();
printf("rdimport stopped\n");
fflush(stdout);
}
} }
@ -915,10 +935,8 @@ void MainObject::ProcessFileEntry(const QString &entry)
while((globbuf.gl_pathc==RDIMPORT_GLOB_SIZE)||(gflags==GLOB_MARK)) { while((globbuf.gl_pathc==RDIMPORT_GLOB_SIZE)||(gflags==GLOB_MARK)) {
glob(RDEscapeString(entry),gflags,NULL,&globbuf); glob(RDEscapeString(entry),gflags,NULL,&globbuf);
if((globbuf.gl_pathc==0)&&(gflags==GLOB_MARK)&&(!import_drop_box)) { if((globbuf.gl_pathc==0)&&(gflags==GLOB_MARK)&&(!import_drop_box)) {
PrintLogDateTime(stderr); rda->log(RDConfig::LogErr,QString().sprintf(" Unable to open \"%s\", skipping...",
fprintf(stderr," Unable to open \"%s\", skipping...\n", (const char *)entry));
(const char *)entry);
fflush(stderr);
globfree(&globbuf); globfree(&globbuf);
} }
for(size_t i=0;i<globbuf.gl_pathc;i++) { for(size_t i=0;i<globbuf.gl_pathc;i++) {
@ -961,21 +979,17 @@ MainObject::Result MainObject::ImportFile(const QString &filename,
else { else {
if(import_fix_broken_formats) { if(import_fix_broken_formats) {
if(import_verbose) { if(import_verbose) {
PrintLogDateTime(); rda->log(RDConfig::LogWarning,QString().sprintf(" File \"%s\" appears to be malformed, trying workaround ... ",
printf(" File \"%s\" appears to be malformed, trying workaround ... ", (const char *)RDGetBasePart(filename).utf8()));
(const char *)RDGetBasePart(filename).utf8());
fflush(stdout);
} }
delete wavefile; delete wavefile;
if((wavefile=FixFile(filename,wavedata))==NULL) { if((wavefile=FixFile(filename,wavedata))==NULL) {
if(import_verbose) { if(import_verbose) {
printf("failed.\n"); rda->log(RDConfig::LogWarning,QString().sprintf("failed."));
} }
PrintLogDateTime(stderr); rda->log(RDConfig::LogWarning,QString().sprintf(
fprintf(stderr, " File \"%s\" is not readable or not a recognized format, skipping...",
" File \"%s\" is not readable or not a recognized format, skipping...\n", (const char *)RDGetBasePart(filename).utf8()));
(const char *)RDGetBasePart(filename).utf8());
fflush(stderr);
delete wavefile; delete wavefile;
delete wavedata; delete wavedata;
delete effective_group; delete effective_group;
@ -990,17 +1004,14 @@ MainObject::Result MainObject::ImportFile(const QString &filename,
return MainObject::FileBad; return MainObject::FileBad;
} }
if(import_verbose) { if(import_verbose) {
printf("success.\n"); rda->log(RDConfig::LogWarning,QString().sprintf("success."));
fflush(stdout);
} }
effective_filename=import_temp_fix_filename; effective_filename=import_temp_fix_filename;
} }
else { else {
PrintLogDateTime(stderr); rda->log(RDConfig::LogWarning,QString().sprintf(
fprintf(stderr, " File \"%s\" is not readable or not a recognized format, skipping...",
" File \"%s\" is not readable or not a recognized format, skipping...\n", (const char *)RDGetBasePart(filename).utf8()));
(const char *)RDGetBasePart(filename).utf8());
fflush(stderr);
delete wavefile; delete wavefile;
delete wavedata; delete wavedata;
delete effective_group; delete effective_group;
@ -1019,19 +1030,16 @@ MainObject::Result MainObject::ImportFile(const QString &filename,
found_cart=RunPattern(import_metadata_pattern,RDGetBasePart(filename), found_cart=RunPattern(import_metadata_pattern,RDGetBasePart(filename),
wavedata,&groupname); wavedata,&groupname);
if(!wavedata->checkDateTimes()) { if(!wavedata->checkDateTimes()) {
PrintLogDateTime(stderr); rda->log(RDConfig::LogErr,QString().sprintf(
fprintf(stderr, " File \"%s\": End date/time cannot be prior to start date/time, ignoring...",
" File \"%s\": End date/time cannot be prior to start date/time, ignoring...\n", (const char *)filename.utf8()));
(const char *)filename.utf8());
} }
if(groupname!=effective_group->name()) { if(groupname!=effective_group->name()) {
delete effective_group; delete effective_group;
effective_group=new RDGroup(groupname); effective_group=new RDGroup(groupname);
if(!effective_group->exists()) { if(!effective_group->exists()) {
PrintLogDateTime(stderr); rda->log(RDConfig::LogErr,QString().sprintf(" Specified group \"%s\" from file \"%s\" does not exist, using default group...",
fprintf(stderr," Specified group \"%s\" from file \"%s\" does not exist, using default group...\n", (const char *)groupname,(const char *)filename.utf8()));
(const char *)groupname,(const char *)filename.utf8());
fflush(stderr);
delete effective_group; delete effective_group;
effective_group=new RDGroup(import_group->name()); effective_group=new RDGroup(import_group->name());
} }
@ -1052,11 +1060,9 @@ MainObject::Result MainObject::ImportFile(const QString &filename,
if((*cartnum==0)||(*cartnum>999999)|| if((*cartnum==0)||(*cartnum>999999)||
(effective_group->enforceCartRange()&& (effective_group->enforceCartRange()&&
(!effective_group->cartNumberValid(*cartnum)))) { (!effective_group->cartNumberValid(*cartnum)))) {
PrintLogDateTime(stderr); rda->log(RDConfig::LogErr,QString().sprintf(
fprintf(stderr, " File \"%s\" has an invalid or out of range Cart Number, skipping...",
" File \"%s\" has an invalid or out of range Cart Number, skipping...\n", (const char *)RDGetBasePart(filename).utf8()));
(const char *)RDGetBasePart(filename).utf8());
fflush(stderr);
wavefile->closeWave(); wavefile->closeWave();
delete wavefile; delete wavefile;
delete wavedata; delete wavedata;
@ -1068,9 +1074,7 @@ MainObject::Result MainObject::ImportFile(const QString &filename,
*cartnum=effective_group->nextFreeCart(); *cartnum=effective_group->nextFreeCart();
} }
if(*cartnum==0) { if(*cartnum==0) {
PrintLogDateTime(stderr); rda->log(RDConfig::LogErr,QString().sprintf("rdimport: no free carts available in specified group"));
fprintf(stderr,"rdimport: no free carts available in specified group\n");
fflush(stderr);
wavefile->closeWave(); wavefile->closeWave();
delete wavefile; delete wavefile;
delete wavedata; delete wavedata;
@ -1096,7 +1100,7 @@ MainObject::Result MainObject::ImportFile(const QString &filename,
int cutnum= int cutnum=
cart->addCut(import_format,import_bitrate,import_channels); cart->addCut(import_format,import_bitrate,import_channels);
if(cutnum<0) { if(cutnum<0) {
fprintf(stderr,"rdimport: no free cuts available in cart %06u\n",*cartnum); rda->log(RDConfig::LogErr,QString().sprintf("rdimport: no free cuts available in cart %06u",*cartnum));
delete cart; delete cart;
return MainObject::NoCut; return MainObject::NoCut;
} }
@ -1121,42 +1125,38 @@ MainObject::Result MainObject::ImportFile(const QString &filename,
conv->setDestinationSettings(settings); conv->setDestinationSettings(settings);
conv->setUseMetadata(cart_created); conv->setUseMetadata(cart_created);
if(import_verbose) { if(import_verbose) {
PrintLogDateTime();
if(wavedata->title().length()==0 || ( (wavedata->title().length()>0) && (wavedata->title()[0] == '\0')) ) { if(wavedata->title().length()==0 || ( (wavedata->title().length()>0) && (wavedata->title()[0] == '\0')) ) {
printf(" Importing file \"%s\" to cart %06u ... ", rda->log(RDConfig::LogInfo,QString().sprintf(" Importing file \"%s\" to cart %06u ... ",
(const char *)RDGetBasePart(filename).utf8(),*cartnum); (const char *)RDGetBasePart(filename).utf8(),*cartnum));
} }
else { else {
if(import_string_title.isNull()) { if(import_string_title.isNull()) {
printf(" Importing file \"%s\" [%s] to cart %06u ... ", rda->log(RDConfig::LogInfo,QString().sprintf(" Importing file \"%s\" [%s] to cart %06u ... ",
(const char *)RDGetBasePart(filename).utf8(), (const char *)RDGetBasePart(filename).utf8(),
(const char *)wavedata->title().stripWhiteSpace().utf8(), (const char *)wavedata->title().stripWhiteSpace().utf8(),
*cartnum); *cartnum));
} }
else { else {
printf(" Importing file \"%s\" [%s] to cart %06u ... ", rda->log(RDConfig::LogInfo,QString().sprintf(" Importing file \"%s\" [%s] to cart %06u ... ",
(const char *)RDGetBasePart(filename).utf8(), (const char *)RDGetBasePart(filename).utf8(),
(const char *)import_string_title.stripWhiteSpace().utf8(), (const char *)import_string_title.stripWhiteSpace().utf8(),
*cartnum); *cartnum));
} }
} }
fflush(stdout);
} }
switch(conv_err=conv->runImport(rda->user()->name(),rda->user()->password(), switch(conv_err=conv->runImport(rda->user()->name(),rda->user()->password(),
&audio_conv_err)) { &audio_conv_err)) {
case RDAudioImport::ErrorOk: case RDAudioImport::ErrorOk:
if(import_verbose) { if(import_verbose) {
printf("done.\n"); rda->log(RDConfig::LogInfo,QString().sprintf("done."));
} }
break; break;
default: default:
PrintLogDateTime(stderr); rda->log(RDConfig::LogNotice,QString().sprintf(" %s, skipping %s...",
fprintf(stderr," %s, skipping %s...\n",
(const char *)RDAudioImport::errorText(conv_err,audio_conv_err), (const char *)RDAudioImport::errorText(conv_err,audio_conv_err),
(const char *)filename.utf8()); (const char *)filename.utf8()));
fflush(stderr);
if(cart_created) { if(cart_created) {
cart->remove(rda->station(),rda->user(),rda->config()); cart->remove(rda->station(),rda->user(),rda->config());
} }
@ -1359,9 +1359,7 @@ MainObject::Result MainObject::ImportFile(const QString &filename,
if(import_delete_source) { if(import_delete_source) {
unlink(filename.utf8()); unlink(filename.utf8());
if(import_verbose) { if(import_verbose) {
PrintLogDateTime(); rda->log(RDConfig::LogInfo,QString().sprintf(" Deleted file \"%s\"",(const char *)RDGetBasePart(filename).utf8()));
printf(" Deleted file \"%s\"\n",(const char *)RDGetBasePart(filename).utf8());
fflush(stdout);
} }
} }
if(!import_run) { if(!import_run) {
@ -1885,22 +1883,10 @@ bool MainObject::VerifyPattern(const QString &pattern)
} }
void MainObject::PrintLogDateTime(FILE *f)
{
if(import_log_mode) {
fprintf(f,"%s - %s : ",
(const char *)QDate::currentDate().toString("MM-dd-yyyy"),
(const char *)QTime::currentTime().toString("hh:mm:ss"));
}
}
void MainObject::DeleteCuts(unsigned cartnum) void MainObject::DeleteCuts(unsigned cartnum)
{ {
if(import_verbose) { if(import_verbose) {
PrintLogDateTime(); rda->log(RDConfig::LogInfo,QString().sprintf(" Deleting cuts from cart %06u",cartnum));
printf(" Deleting cuts from cart %06u\n",cartnum);
fflush(stdout);
} }
unsigned dev; unsigned dev;
RDCart *cart=new RDCart(cartnum); RDCart *cart=new RDCart(cartnum);
@ -1991,7 +1977,7 @@ void MainObject::ReadXmlFile(const QString &basename,RDWaveData *wavedata) const
} }
xmlname+="xml"; xmlname+="xml";
if(import_verbose) { if(import_verbose) {
printf(" Reading xml metadata from \"%s\": ",(const char *)xmlname); rda->log(RDConfig::LogInfo,QString().sprintf(" Reading xml metadata from \"%s\": ",(const char *)xmlname));
} }
// //
@ -2000,12 +1986,12 @@ void MainObject::ReadXmlFile(const QString &basename,RDWaveData *wavedata) const
wavedata->clear(); wavedata->clear();
if((f=fopen(xmlname,"r"))==NULL) { if((f=fopen(xmlname,"r"))==NULL) {
if(import_verbose) { if(import_verbose) {
printf("failed [%s]\n",strerror(errno)); rda->log(RDConfig::LogInfo,QString().sprintf("failed [%s]",strerror(errno)));
return; return;
} }
} }
if(import_verbose) { if(import_verbose) {
printf("success\n"); rda->log(RDConfig::LogInfo,QString("success"));
} }
while(fgets(line,1024,f)!=NULL) { while(fgets(line,1024,f)!=NULL) {
xml+=line; xml+=line;

View File

@ -68,7 +68,6 @@ class MainObject : public QObject
bool RunPattern(const QString &pattern,const QString &filename, bool RunPattern(const QString &pattern,const QString &filename,
RDWaveData *wavedata,QString *groupname); RDWaveData *wavedata,QString *groupname);
bool VerifyPattern(const QString &pattern); bool VerifyPattern(const QString &pattern);
void PrintLogDateTime(FILE *f=stdout);
void DeleteCuts(unsigned cartnum); void DeleteCuts(unsigned cartnum);
QDateTime GetCachedTimestamp(const QString &filename); QDateTime GetCachedTimestamp(const QString &filename);
void WriteTimestampCache(const QString &filename,const QDateTime &dt); void WriteTimestampCache(const QString &filename,const QDateTime &dt);
@ -78,7 +77,9 @@ class MainObject : public QObject
unsigned import_file_key; unsigned import_file_key;
RDGroup *import_group; RDGroup *import_group;
bool import_verbose; bool import_verbose;
bool import_log_mode; bool import_log_syslog;
QString import_log_directory;
QString import_log_filename;
bool import_to_mono; bool import_to_mono;
bool import_use_cartchunk_cutid; bool import_use_cartchunk_cutid;
int import_cart_number_offset; int import_cart_number_offset;