mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Switched to PES recording
This commit is contained in:
		
							
								
								
									
										9
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								HISTORY
									
									
									
									
									
								
							| @@ -312,8 +312,15 @@ Video Disk Recorder Revision History | ||||
|   an early state and may still cause some problems, but it appears to work nice | ||||
|   already. | ||||
|  | ||||
| 2000-12-01: Version 0.69 | ||||
| 2000-12-08: Version 0.70 | ||||
|  | ||||
| - VDR now requires driver version 0.80 or higher. | ||||
| - Recordings are now saved in PES mode. Note that you now need to install the | ||||
|   driver *WITHOUT* 'outstream=0'! This is the default when you 'make insmod' in | ||||
|   the DVB/driver directory. | ||||
|   Old recordings (in AV_PES mode) can still be replayed (as long as the driver | ||||
|   still supports replaying AV_PES files). The only limitation with this is that | ||||
|   in fast forward/back mode the picture may be slightly distorted. | ||||
| - The EPG data is now dumped into the file /video/epg.data every ten minutes. | ||||
|   Use the Perl script 'epg2html.pl' to convert the raw EPG data into a simple | ||||
|   HTML programme listing. | ||||
|   | ||||
							
								
								
									
										12
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								INSTALL
									
									
									
									
									
								
							| @@ -15,13 +15,11 @@ If you have the DVB driver source in a different location | ||||
| you will have to change the definition of DVBDIR in the | ||||
| Makefile. | ||||
|  | ||||
| This program requires the card driver version 0.71 or higher | ||||
| to work properly. Currently you need to load the dvb.o module with | ||||
| option outstream=0, so your insmod statement should read | ||||
| 'insmod dvb.o outstream=0'. This is necessary because 'vdr' works | ||||
| with AV_PES data and will change once it has been modified to work | ||||
| directly with MPEG2. You also need to apply the patch 'dvb.c.071.diff' | ||||
| for the On Screen Display to work properly. | ||||
| This program requires the card driver version 0.80 or higher | ||||
| to work properly. You need to load the dvb.o module *without* option | ||||
| 'outstream=0' (previous versions of VDR required this option to have | ||||
| the driver supply the data in AV_PES format; as of version 0.70 VDR | ||||
| works with PES format). | ||||
|  | ||||
| After extracting the package, change into the VDR directory | ||||
| and type 'make'. This should produce an executable file | ||||
|   | ||||
							
								
								
									
										6
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								Makefile
									
									
									
									
									
								
							| @@ -4,7 +4,7 @@ | ||||
| # See the main source file 'vdr.c' for copyright information and | ||||
| # how to reach the author. | ||||
| # | ||||
| # $Id: Makefile 1.16 2000/11/18 14:58:10 kls Exp $ | ||||
| # $Id: Makefile 1.17 2000/12/03 15:24:20 kls Exp $ | ||||
|  | ||||
| DVBDIR   = ../DVB | ||||
|  | ||||
| @@ -39,7 +39,7 @@ font: genfontfile fontfix.c fontosd.c | ||||
| config.o   : config.c config.h dvbapi.h dvbosd.h eit.h font.h i18n.h interface.h remote.h svdrp.h thread.h tools.h | ||||
| dvbapi.o   : dvbapi.c config.h dvbapi.h dvbosd.h eit.h font.h interface.h remote.h svdrp.h thread.h tools.h videodir.h | ||||
| dvbosd.o   : dvbosd.c dvbosd.h font.h tools.h | ||||
| eit.o      : eit.c eit.h thread.h tools.h | ||||
| eit.o      : eit.c config.h dvbapi.h dvbosd.h eit.h font.h thread.h tools.h videodir.h | ||||
| font.o     : font.c font.h fontfix.c fontosd.c tools.h | ||||
| i18n.o     : i18n.c config.h dvbapi.h dvbosd.h eit.h font.h i18n.h thread.h tools.h | ||||
| interface.o: interface.c config.h dvbapi.h dvbosd.h eit.h font.h i18n.h interface.h remote.h svdrp.h thread.h tools.h | ||||
| @@ -48,7 +48,7 @@ osd.o      : osd.c config.h dvbapi.h dvbosd.h eit.h font.h i18n.h interface.h os | ||||
| recording.o: recording.c config.h dvbapi.h dvbosd.h eit.h font.h interface.h recording.h remote.h svdrp.h thread.h tools.h videodir.h | ||||
| remote.o   : remote.c config.h dvbapi.h dvbosd.h eit.h font.h remote.h thread.h tools.h | ||||
| svdrp.o    : svdrp.c config.h dvbapi.h dvbosd.h eit.h font.h interface.h remote.h svdrp.h thread.h tools.h | ||||
| thread.o   : thread.c thread.h | ||||
| thread.o   : thread.c thread.h tools.h | ||||
| tools.o    : tools.c tools.h | ||||
| vdr.o      : vdr.c config.h dvbapi.h dvbosd.h eit.h font.h i18n.h interface.h menu.h osd.h recording.h remote.h svdrp.h thread.h tools.h videodir.h | ||||
| videodir.o : videodir.c tools.h videodir.h | ||||
|   | ||||
							
								
								
									
										4
									
								
								config.h
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								config.h
									
									
									
									
									
								
							| @@ -4,7 +4,7 @@ | ||||
|  * See the main source file 'vdr.c' for copyright information and | ||||
|  * how to reach the author. | ||||
|  * | ||||
|  * $Id: config.h 1.34 2000/11/18 13:25:53 kls Exp $ | ||||
|  * $Id: config.h 1.35 2000/12/08 13:57:23 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #ifndef __CONFIG_H | ||||
| @@ -18,7 +18,7 @@ | ||||
| #include "eit.h" | ||||
| #include "tools.h" | ||||
|  | ||||
| #define VDRVERSION "0.68" | ||||
| #define VDRVERSION "0.70" | ||||
|  | ||||
| #define MaxBuffer 10000 | ||||
|  | ||||
|   | ||||
							
								
								
									
										22
									
								
								dvbapi.h
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								dvbapi.h
									
									
									
									
									
								
							| @@ -4,7 +4,7 @@ | ||||
|  * See the main source file 'vdr.c' for copyright information and | ||||
|  * how to reach the author. | ||||
|  * | ||||
|  * $Id: dvbapi.h 1.26 2000/11/19 14:09:41 kls Exp $ | ||||
|  * $Id: dvbapi.h 1.27 2000/12/03 13:44:28 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #ifndef __DVBAPI_H | ||||
| @@ -42,6 +42,8 @@ public: | ||||
|   bool Save(int Index); | ||||
|   }; | ||||
|  | ||||
| class cRecordBuffer; | ||||
| class cReplayBuffer; | ||||
| class cTransferBuffer; | ||||
|  | ||||
| class cDvbApi { | ||||
| @@ -171,20 +173,10 @@ private: | ||||
|   // Record/Replay facilities | ||||
|  | ||||
| private: | ||||
|   enum { dvbStop = 1, // let's not have 0 as a command | ||||
|          dvbPause, | ||||
|          dvbPlay, | ||||
|          dvbForward, | ||||
|          dvbBackward, | ||||
|          dvbSkip, | ||||
|          dvbGetIndex, | ||||
|        }; | ||||
|   pid_t pidRecord, pidReplay; | ||||
|   int fromRecord, toRecord; | ||||
|   int fromReplay, toReplay; | ||||
|   cRecordBuffer *recordBuffer; | ||||
|   cReplayBuffer *replayBuffer; | ||||
|   int ca; | ||||
|   int priority; | ||||
|   void SetReplayMode(int Mode); | ||||
| protected: | ||||
|   int  Ca(void) { return ca; } | ||||
|        // Returns the ca of the current recording session (0..MAXDVBAPI). | ||||
| @@ -214,7 +206,7 @@ public: | ||||
|        // If there is already a replay session active, it will be stopped | ||||
|        // and the new file will be played back. | ||||
|        // If provided Title will be used in the progress display. | ||||
|   void Stop(void); | ||||
|   void StopReplay(void); | ||||
|        // Stops the current replay session (if any). | ||||
|   void Pause(void); | ||||
|        // Pauses the current replay session, or resumes a paused session. | ||||
| @@ -229,7 +221,7 @@ public: | ||||
|        // The sign of 'Seconds' determines the direction in which to skip. | ||||
|        // Use a very large negative value to go all the way back to the | ||||
|        // beginning of the recording. | ||||
|   bool GetIndex(int *Current, int *Total = NULL); | ||||
|   bool GetIndex(int &Current, int &Total); | ||||
|   }; | ||||
|  | ||||
| class cEITScanner { | ||||
|   | ||||
							
								
								
									
										6
									
								
								eit.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								eit.c
									
									
									
									
									
								
							| @@ -13,7 +13,7 @@ | ||||
|  *   the Free Software Foundation; either version 2 of the License, or     * | ||||
|  *   (at your option) any later version.                                   * | ||||
|  *                                                                         * | ||||
|  * $Id: eit.c 1.10 2000/11/25 12:51:06 kls Exp $ | ||||
|  * $Id: eit.c 1.11 2000/12/03 15:33:37 kls Exp $ | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| #include "eit.h" | ||||
| @@ -131,7 +131,7 @@ bool cMJD::SetSystemTime() | ||||
| 		isyslog(LOG_INFO, "System Time = %s (%ld)\n", ctime(&loctim), loctim); | ||||
| 		isyslog(LOG_INFO, "Local Time  = %s (%ld)\n", ctime(&mjdtime), mjdtime); | ||||
| 		if (stime(&mjdtime) < 0) | ||||
|          esyslog(LOG_ERR, "ERROR while setting system time: %s", strerror(errno)); | ||||
|          esyslog(LOG_ERR, "ERROR while setting system time: %m"); | ||||
| 		return true; | ||||
| 	} | ||||
| 	 | ||||
| @@ -1117,7 +1117,7 @@ cSIProcessor::~cSIProcessor() | ||||
| { | ||||
|    if (fsvbi >= 0) | ||||
|    { | ||||
|       Stop(); | ||||
|       Cancel(); | ||||
|    	ShutDownFilters(); | ||||
|       delete filters; | ||||
|       if (!--numSIProcessors) // the last one deletes it | ||||
|   | ||||
							
								
								
									
										6
									
								
								menu.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								menu.c
									
									
									
									
									
								
							| @@ -4,7 +4,7 @@ | ||||
|  * See the main source file 'vdr.c' for copyright information and | ||||
|  * how to reach the author. | ||||
|  * | ||||
|  * $Id: menu.c 1.53 2000/11/26 16:15:30 kls Exp $ | ||||
|  * $Id: menu.c 1.54 2000/12/03 11:43:35 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #include "menu.h" | ||||
| @@ -2009,7 +2009,7 @@ cReplayControl::cReplayControl(void) | ||||
| cReplayControl::~cReplayControl() | ||||
| { | ||||
|   Hide(); | ||||
|   dvbApi->Stop(); | ||||
|   dvbApi->StopReplay(); | ||||
| } | ||||
|  | ||||
| void cReplayControl::SetRecording(const char *FileName, const char *Title) | ||||
| @@ -2060,7 +2060,7 @@ eOSState cReplayControl::ProcessKey(eKeys Key) | ||||
|     case kUp:      dvbApi->Play(); break; | ||||
|     case kDown:    dvbApi->Pause(); break; | ||||
|     case kBlue:    Hide(); | ||||
|                    dvbApi->Stop(); | ||||
|                    dvbApi->StopReplay(); | ||||
|                    return osEnd; | ||||
|     case kLeft:    dvbApi->Backward(); break; | ||||
|     case kRight:   dvbApi->Forward(); break; | ||||
|   | ||||
							
								
								
									
										6
									
								
								remote.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								remote.c
									
									
									
									
									
								
							| @@ -6,7 +6,7 @@ | ||||
|  * | ||||
|  * Ported to LIRC by Carsten Koch <Carsten.Koch@icem.de>  2000-06-16. | ||||
|  * | ||||
|  * $Id: remote.c 1.19 2000/11/11 11:22:22 kls Exp $ | ||||
|  * $Id: remote.c 1.20 2000/12/03 11:55:06 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #include "remote.h" | ||||
| @@ -115,7 +115,7 @@ cRcIoRCU::cRcIoRCU(char *DeviceName) | ||||
|  | ||||
| cRcIoRCU::~cRcIoRCU() | ||||
| { | ||||
|   Stop(); | ||||
|   Cancel(); | ||||
| } | ||||
|  | ||||
| void cRcIoRCU::Action(void) | ||||
| @@ -420,7 +420,7 @@ cRcIoLIRC::cRcIoLIRC(char *DeviceName) | ||||
|  | ||||
| cRcIoLIRC::~cRcIoLIRC() | ||||
| { | ||||
|   Stop(); | ||||
|   Cancel(); | ||||
| } | ||||
|  | ||||
| void cRcIoLIRC::Action(void) | ||||
|   | ||||
							
								
								
									
										3
									
								
								svdrp.c
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								svdrp.c
									
									
									
									
									
								
							| @@ -10,7 +10,7 @@ | ||||
|  * and interact with the Video Disk Recorder - or write a full featured | ||||
|  * graphical interface that sits on top of an SVDRP connection. | ||||
|  * | ||||
|  * $Id: svdrp.c 1.12 2000/11/05 13:44:42 kls Exp $ | ||||
|  * $Id: svdrp.c 1.13 2000/12/03 15:34:35 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #define _GNU_SOURCE | ||||
| @@ -18,6 +18,7 @@ | ||||
| #include "svdrp.h" | ||||
| #include <arpa/inet.h> | ||||
| #include <ctype.h> | ||||
| #include <errno.h> | ||||
| #include <fcntl.h> | ||||
| #include <netinet/in.h> | ||||
| #include <stdarg.h> | ||||
|   | ||||
							
								
								
									
										33
									
								
								thread.c
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								thread.c
									
									
									
									
									
								
							| @@ -4,12 +4,15 @@ | ||||
|  * See the main source file 'vdr.c' for copyright information and | ||||
|  * how to reach the author. | ||||
|  * | ||||
|  * $Id: thread.c 1.5 2000/11/22 17:11:04 kls Exp $ | ||||
|  * $Id: thread.c 1.6 2000/12/03 15:35:02 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #include "thread.h" | ||||
| #include <errno.h> | ||||
| #include <signal.h> | ||||
| #include <sys/wait.h> | ||||
| #include <unistd.h> | ||||
| #include "tools.h" | ||||
|  | ||||
| // --- cThread --------------------------------------------------------------- | ||||
|  | ||||
| @@ -25,7 +28,7 @@ cThread::cThread(void) | ||||
|      signalHandlerInstalled = true; | ||||
|      } | ||||
|   running = false; | ||||
|   parentPid = lockingPid = 0; | ||||
|   parentPid = threadPid = lockingPid = 0; | ||||
|   locked = 0; | ||||
| } | ||||
|  | ||||
| @@ -40,6 +43,7 @@ void cThread::SignalHandler(int signum) | ||||
|  | ||||
| void *cThread::StartThread(cThread *Thread) | ||||
| { | ||||
|   Thread->threadPid = getpid(); | ||||
|   Thread->Action(); | ||||
|   return NULL; | ||||
| } | ||||
| @@ -54,8 +58,31 @@ bool cThread::Start(void) | ||||
|   return true; //XXX return value of pthread_create()??? | ||||
| } | ||||
|  | ||||
| void cThread::Stop(void) | ||||
| bool cThread::Active(void) | ||||
| { | ||||
|   if (threadPid) { | ||||
|      if (kill(threadPid, SIGIO) < 0) { // couldn't find another way of checking whether the thread is still running - any ideas? | ||||
|         if (errno == ESRCH) | ||||
|            threadPid = 0; | ||||
|         else | ||||
|            LOG_ERROR; | ||||
|         } | ||||
|      else | ||||
|         return true; | ||||
|      } | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| void cThread::Cancel(int WaitSeconds) | ||||
| { | ||||
|   if (WaitSeconds > 0) { | ||||
|      for (time_t t0 = time(NULL) + WaitSeconds; time(NULL) < t0; ) { | ||||
|          if (!Active()) | ||||
|             return; | ||||
|          usleep(10000); | ||||
|          } | ||||
|      esyslog(LOG_ERR, "ERROR: thread %d won't end (waited %d seconds) - cancelling it...", threadPid, WaitSeconds); | ||||
|      } | ||||
|   pthread_cancel(thread); | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										7
									
								
								thread.h
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								thread.h
									
									
									
									
									
								
							| @@ -4,7 +4,7 @@ | ||||
|  * See the main source file 'vdr.c' for copyright information and | ||||
|  * how to reach the author. | ||||
|  * | ||||
|  * $Id: thread.h 1.3 2000/11/14 18:38:11 kls Exp $ | ||||
|  * $Id: thread.h 1.4 2000/12/03 11:18:37 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #ifndef __THREAD_H | ||||
| @@ -28,7 +28,7 @@ class cThread { | ||||
| private: | ||||
|   pthread_t thread; | ||||
|   cMutex Mutex; | ||||
|   pid_t parentPid, lockingPid; | ||||
|   pid_t parentPid, threadPid, lockingPid; | ||||
|   int locked; | ||||
|   bool running; | ||||
|   static bool signalHandlerInstalled; | ||||
| @@ -39,11 +39,12 @@ private: | ||||
| protected: | ||||
|   void WakeUp(void); | ||||
|   virtual void Action(void) = 0; | ||||
|   void Stop(void); | ||||
|   void Cancel(int WaitSeconds = 0); | ||||
| public: | ||||
|   cThread(void); | ||||
|   virtual ~cThread(); | ||||
|   bool Start(void); | ||||
|   bool Active(void); | ||||
|   }; | ||||
|  | ||||
| // cThreadLock can be used to easily set a lock in a thread and make absolutely | ||||
|   | ||||
							
								
								
									
										65
									
								
								tools.c
									
									
									
									
									
								
							
							
						
						
									
										65
									
								
								tools.c
									
									
									
									
									
								
							| @@ -4,7 +4,7 @@ | ||||
|  * See the main source file 'vdr.c' for copyright information and | ||||
|  * how to reach the author. | ||||
|  * | ||||
|  * $Id: tools.c 1.23 2000/11/11 15:17:12 kls Exp $ | ||||
|  * $Id: tools.c 1.24 2000/12/03 15:39:11 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #define _GNU_SOURCE | ||||
| @@ -15,10 +15,7 @@ | ||||
| #if defined(DEBUG_OSD) | ||||
| #include <ncurses.h> | ||||
| #endif | ||||
| #include <signal.h> | ||||
| #include <stdlib.h> | ||||
| #include <sys/time.h> | ||||
| #include <sys/wait.h> | ||||
| #include <unistd.h> | ||||
|  | ||||
| #define MaxBuffer 1000 | ||||
| @@ -30,29 +27,6 @@ void writechar(int filedes, char c) | ||||
|   write(filedes, &c, sizeof(c)); | ||||
| } | ||||
|  | ||||
| void writeint(int filedes, int n) | ||||
| { | ||||
|   write(filedes, &n, sizeof(n)); | ||||
| } | ||||
|  | ||||
| char readchar(int filedes) | ||||
| { | ||||
|   char c; | ||||
|   read(filedes, &c, 1); | ||||
|   return c; | ||||
| } | ||||
|  | ||||
| bool readint(int filedes, int &n) | ||||
| { | ||||
|   return cFile::AnyFileReady(filedes, 0) && read(filedes, &n, sizeof(n)) == sizeof(n); | ||||
| } | ||||
|  | ||||
| void purge(int filedes) | ||||
| { | ||||
|   while (cFile::AnyFileReady(filedes, 0)) | ||||
|         readchar(filedes); | ||||
| } | ||||
|  | ||||
| char *readline(FILE *f) | ||||
| { | ||||
|   static char buffer[MaxBuffer]; | ||||
| @@ -205,7 +179,7 @@ bool MakeDirs(const char *FileName, bool IsDirectory) | ||||
|         if (stat(s, &fs) != 0 || !S_ISDIR(fs.st_mode)) { | ||||
|            dsyslog(LOG_INFO, "creating directory %s", s); | ||||
|            if (mkdir(s, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) == -1) { | ||||
|               esyslog(LOG_ERR, "ERROR: %s: %s", s, strerror(errno)); | ||||
|               LOG_ERROR_STR(s); | ||||
|               result = false; | ||||
|               break; | ||||
|               } | ||||
| @@ -271,41 +245,6 @@ bool RemoveFileOrDir(const char *FileName, bool FollowSymlinks) | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| bool CheckProcess(pid_t pid) | ||||
| { | ||||
|   pid_t Pid2Check = pid; | ||||
|   int status; | ||||
|   pid = waitpid(Pid2Check, &status, WNOHANG); | ||||
|   if (pid < 0) { | ||||
|      if (errno != ECHILD) | ||||
|         LOG_ERROR; | ||||
|      return false; | ||||
|      } | ||||
|   return true; | ||||
| } | ||||
|  | ||||
| void KillProcess(pid_t pid, int Timeout) | ||||
| { | ||||
|   pid_t Pid2Wait4 = pid; | ||||
|   for (time_t t0 = time(NULL); time(NULL) - t0 < Timeout; ) { | ||||
|       int status; | ||||
|       pid_t pid = waitpid(Pid2Wait4, &status, WNOHANG); | ||||
|       if (pid < 0) { | ||||
|          if (errno != ECHILD) | ||||
|             LOG_ERROR; | ||||
|          return; | ||||
|          } | ||||
|       if (pid == Pid2Wait4) | ||||
|          return; | ||||
|       } | ||||
|   esyslog(LOG_ERR, "ERROR: process %d won't end (waited %d seconds) - terminating it...", Pid2Wait4, Timeout); | ||||
|   if (kill(Pid2Wait4, SIGTERM) < 0) { | ||||
|      esyslog(LOG_ERR, "ERROR: process %d won't terminate (%s) - killing it...", Pid2Wait4, strerror(errno)); | ||||
|      if (kill(Pid2Wait4, SIGKILL) < 0) | ||||
|         esyslog(LOG_ERR, "ERROR: process %d won't die (%s) - giving up", Pid2Wait4, strerror(errno)); | ||||
|      } | ||||
| } | ||||
|  | ||||
| // --- cFile ----------------------------------------------------------------- | ||||
|  | ||||
| bool cFile::files[FD_SETSIZE] = { false }; | ||||
|   | ||||
							
								
								
									
										15
									
								
								tools.h
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								tools.h
									
									
									
									
									
								
							| @@ -4,13 +4,13 @@ | ||||
|  * See the main source file 'vdr.c' for copyright information and | ||||
|  * how to reach the author. | ||||
|  * | ||||
|  * $Id: tools.h 1.20 2000/11/12 15:27:06 kls Exp $ | ||||
|  * $Id: tools.h 1.21 2000/12/03 15:32:54 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #ifndef __TOOLS_H | ||||
| #define __TOOLS_H | ||||
|  | ||||
| #include <errno.h> | ||||
| //#include <errno.h> | ||||
| #include <fcntl.h> | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| @@ -24,19 +24,14 @@ extern int SysLogLevel; | ||||
| #define isyslog if (SysLogLevel > 1) syslog | ||||
| #define dsyslog if (SysLogLevel > 2) syslog | ||||
|  | ||||
| #define LOG_ERROR         esyslog(LOG_ERR, "ERROR (%s,%d): %s", __FILE__, __LINE__, strerror(errno)) | ||||
| #define LOG_ERROR_STR(s)  esyslog(LOG_ERR, "ERROR: %s: %s", s, strerror(errno)); | ||||
| #define LOG_ERROR         esyslog(LOG_ERR, "ERROR (%s,%d): %m", __FILE__, __LINE__) | ||||
| #define LOG_ERROR_STR(s)  esyslog(LOG_ERR, "ERROR: %s: %m", s) | ||||
|  | ||||
| #define SECSINDAY  86400 | ||||
| #define MAXPROCESSTIMEOUT   3 // seconds | ||||
|  | ||||
| #define DELETENULL(p) (delete (p), p = NULL) | ||||
|  | ||||
| void writechar(int filedes, char c); | ||||
| void writeint(int filedes, int n); | ||||
| char readchar(int filedes); | ||||
| bool readint(int filedes, int &n); | ||||
| void purge(int filedes); | ||||
| char *readline(FILE *f); | ||||
| char *strn0cpy(char *dest, const char *src, size_t n); | ||||
| char *strreplace(char *s, char c1, char c2); | ||||
| @@ -51,8 +46,6 @@ uint FreeDiskSpaceMB(const char *Directory); | ||||
| bool DirectoryOk(const char *DirName, bool LogErrors = false); | ||||
| bool MakeDirs(const char *FileName, bool IsDirectory = false); | ||||
| bool RemoveFileOrDir(const char *FileName, bool FollowSymlinks = false); | ||||
| bool CheckProcess(pid_t pid); | ||||
| void KillProcess(pid_t pid, int Timeout = MAXPROCESSTIMEOUT); | ||||
|  | ||||
| class cFile { | ||||
| private: | ||||
|   | ||||
							
								
								
									
										6
									
								
								vdr.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								vdr.c
									
									
									
									
									
								
							| @@ -22,7 +22,7 @@ | ||||
|  * | ||||
|  * The project's page is at http://www.cadsoft.de/people/kls/vdr | ||||
|  * | ||||
|  * $Id: vdr.c 1.46 2000/11/18 13:46:56 kls Exp $ | ||||
|  * $Id: vdr.c 1.47 2000/12/03 15:36:46 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #include <getopt.h> | ||||
| @@ -141,8 +141,8 @@ int main(int argc, char *argv[]) | ||||
| #if !defined(DEBUG_OSD) && !defined(REMOTE_KBD) | ||||
|      pid_t pid = fork(); | ||||
|      if (pid < 0) { | ||||
|         fprintf(stderr, "%s\n", strerror(errno)); | ||||
|         esyslog(LOG_ERR, "ERROR: %s", strerror(errno)); | ||||
|         fprintf(stderr, "%m\n"); | ||||
|         esyslog(LOG_ERR, "ERROR: %m"); | ||||
|         abort(); | ||||
|         } | ||||
|      if (pid != 0) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user