Ticket #8329: 148-setlogfile.patch
File 148-setlogfile.patch, 8.9 KB (added by , 14 years ago) |
---|
-
mythtv/libs/libmyth/mythcommandlineparser.cpp
old new MythCommandLineParser::MythCommandLinePa 21 21 parseTypes(things_to_parse), 22 22 display(), geometry(), 23 23 logfile(), 24 newlogfile(), 24 25 pidfile(), 25 26 infile(), 26 27 outfile(), … … MythCommandLineParser::MythCommandLinePa 37 38 printsched(false), 38 39 testsched(false), 39 40 setverbose(false), 41 setlogfile(false), 40 42 resched(false), 41 43 nosched(false), 42 44 noupnp(false), … … bool MythCommandLineParser::Parse( 412 414 ++argpos; 413 415 return true; 414 416 } 417 else if ((parseTypes & kCLPSetLogFile) && 418 (!strcmp(argv[argpos],"--setlogfile"))) 419 { 420 setlogfile = true; 421 if ((argc - 1) > argpos) 422 { 423 newlogfile = argv[argpos+1]; 424 if (newlogfile.startsWith("-")) 425 { 426 cerr << "Invalid argument to --setlogfile option\n"; 427 err = true; 428 return true; 429 } 430 } 431 else 432 { 433 cerr << "Missing argument to --setlogfile option\n"; 434 err = true; 435 return true; 436 } 437 438 ++argpos; 439 return true; 440 } 415 441 else if ((parseTypes & kCLPPidFile) && 416 442 (!strcmp(argv[argpos],"-p") || 417 443 !strcmp(argv[argpos],"--pidfile"))) … … QString MythCommandLineParser::GetHelpSt 684 710 << "Writes STDERR and STDOUT messages to filename" << endl; 685 711 } 686 712 713 if (parseTypes & kCLPSetLogFile) 714 { 715 msg << "--setlogfile filename " 716 << "Change running backend to use new logfile" << endl; 717 } 718 687 719 if (parseTypes & kCLPPidFile) 688 720 { 689 721 msg << "-p or --pidfile filename " -
mythtv/libs/libmyth/mythcommandlineparser.h
old new typedef enum { 44 44 kCLPStartTime = 0x0080000000ULL, 45 45 kCLPPrintExpire = 0x0100000000ULL, 46 46 kCLPGeneratePreview = 0x0200000000ULL, 47 kCLPSetLogFile = 0x0400000000ULL, 47 48 } ParseType; 48 49 49 50 class MPUBLIC MythCommandLineParser … … class MPUBLIC MythCommandLineParser 62 63 QString GetDisplay(void) const { return display; } 63 64 QString GetGeometry(void) const { return geometry; } 64 65 QString GetLogFilename(void) const { return logfile; } 66 QString GetNewLogFilename(void) const { return newlogfile; } 65 67 QString GetPIDFilename(void) const { return pidfile; } 66 68 QString GetInputFilename(void) const { return infile; } 67 69 QString GetOutputFilename(void) const { return outfile; } … … class MPUBLIC MythCommandLineParser 86 88 bool IsAutoExpirerEnabled(void) const { return !noexpirer; } 87 89 88 90 bool SetVerbose(void) const { return setverbose; } 91 bool SetLogFile(void) const { return setlogfile; } 89 92 bool Reschedule(void) const { return resched; } 90 93 bool ClearSettingsCache(void) const { return clearsettingscache; } 91 94 bool WantUPnPRebuild(void) const { return wantupnprebuild; } … … class MPUBLIC MythCommandLineParser 101 104 return 102 105 !eventString.isEmpty() || wantupnprebuild || 103 106 setverbose || clearsettingscache || 107 setlogfile || 104 108 printsched || testsched || 105 109 resched || !printexpire.isEmpty() || 106 110 (previewFrameNumber >= -1) || (previewSeconds >= -1); … … class MPUBLIC MythCommandLineParser 118 122 QString display; 119 123 QString geometry; 120 124 QString logfile; 125 QString newlogfile; 121 126 QString pidfile; 122 127 QString infile; 123 128 QString outfile; … … class MPUBLIC MythCommandLineParser 137 142 bool printsched; 138 143 bool testsched; 139 144 bool setverbose; 145 bool setlogfile; 140 146 bool resched; 141 147 bool nosched; 142 148 bool noupnp; -
mythtv/programs/mythbackend/main.cpp
old new int main(int argc, char **argv) 105 105 kCLPChannelId | 106 106 kCLPStartTime | 107 107 kCLPPrintExpire | 108 kCLPGeneratePreview); 108 kCLPGeneratePreview | 109 kCLPSetLogFile); 109 110 110 111 for (int argpos = 0; argpos < argc; ++argpos) 111 112 { -
mythtv/programs/mythbackend/main_helpers.cpp
old new int handle_command(const MythCommandLine 536 536 } 537 537 } 538 538 539 if (cmdline.SetLogFile()) 540 { 541 if (gContext->ConnectToMasterServer()) 542 { 543 QString message = "SET_LOGFILE "; 544 message += cmdline.GetNewLogFilename(); 545 546 RemoteSendMessage(message); 547 VERBOSE(VB_IMPORTANT, QString("Sent '%1' message").arg(message)); 548 return BACKEND_EXIT_OK; 549 } 550 else 551 { 552 VERBOSE(VB_IMPORTANT, 553 "Unable to connect to backend, logfile unchanged "); 554 return BACKEND_EXIT_NO_CONNECT; 555 } 556 } 557 539 558 if (cmdline.ClearSettingsCache()) 540 559 { 541 560 if (gContext->ConnectToMasterServer()) -
mythtv/programs/mythbackend/mainserver.cpp
old new void MainServer::ProcessRequestWork(Myth 559 559 { 560 560 if ((listline.size() >= 2) && (listline[1].left(11) == "SET_VERBOSE")) 561 561 HandleSetVerbose(listline, pbs); 562 else if ((listline.size() >= 2) && (listline[1].left(11) == "SET_LOGFILE")) 563 HandleSetLogfile(listline, pbs); 562 564 else 563 565 HandleMessage(listline, pbs); 564 566 } … … void MainServer::HandleSetVerbose(QStrin 4390 4392 SendResponse(pbssock, retlist); 4391 4393 } 4392 4394 4395 void MainServer::HandleSetLogfile(QStringList &slist, PlaybackSock *pbs) 4396 { 4397 MythSocket *pbssock = pbs->getSocket(); 4398 QStringList retlist = QStringList("OK"); 4399 4400 QString newlogfile = slist[1]; 4401 int len=newlogfile.length(); 4402 if (len > 12) 4403 { 4404 newlogfile = newlogfile.right(len-12); // Chop off "SET_LOGFILE " 4405 4406 // Duplicate of log_rotate in main.cpp 4407 VERBOSE(VB_GENERAL, QString("Setting new logfile to '%1'").arg(newlogfile)); 4408 4409 int new_logfd = open(newlogfile.toLocal8Bit().constData(), 4410 O_WRONLY|O_CREAT|O_APPEND|O_SYNC, 0664); 4411 if (new_logfd < 0) 4412 { 4413 VERBOSE(VB_IMPORTANT, QString("Couldn't open new logfile '%1'").arg(newlogfile)); 4414 retlist = QStringList("Failed"); 4415 } 4416 else 4417 { 4418 while (dup2(new_logfd, 1) < 0 && errno == EINTR) ; 4419 while (dup2(new_logfd, 2) < 0 && errno == EINTR) ; 4420 while (close(new_logfd) < 0 && errno == EINTR) ; 4421 VERBOSE(VB_GENERAL, QString("New Logfile: '%1'").arg(newlogfile)); 4422 } 4423 } 4424 else 4425 { 4426 VERBOSE(VB_IMPORTANT, QString("Invalid SET_LOGFILE string: '%1'").arg(newlogfile)); 4427 retlist = QStringList("Failed"); 4428 } 4429 4430 SendResponse(pbssock, retlist); 4431 } 4432 4433 4393 4434 void MainServer::HandleIsRecording(QStringList &slist, PlaybackSock *pbs) 4394 4435 { 4395 4436 (void)slist; -
mythtv/programs/mythbackend/mainserver.h
old new class MainServer : public QObject, publi 127 127 void HandleGetRecorderFromNum(QStringList &slist, PlaybackSock *pbs); 128 128 void HandleMessage(QStringList &slist, PlaybackSock *pbs); 129 129 void HandleSetVerbose(QStringList &slist, PlaybackSock *pbs); 130 void HandleSetLogfile(QStringList &slist, PlaybackSock *pbs); 130 131 void HandleGenPreviewPixmap(QStringList &slist, PlaybackSock *pbs); 131 132 void HandlePixmapLastModified(QStringList &slist, PlaybackSock *pbs); 132 133 void HandlePixmapGetIfModified(const QStringList &slist, PlaybackSock *pbs);