Commit ff924dbc authored by Konstantin Pavlov's avatar Konstantin Pavlov
Browse files

support for creating pid files when going daemon mode.

Someone should really review it as it is my first experience in C.
parent d17c2e5f
...@@ -92,6 +92,7 @@ struct vlc_t ...@@ -92,6 +92,7 @@ struct vlc_t
char * psz_homedir; /* configuration directory */ char * psz_homedir; /* configuration directory */
char * psz_userdir; /* user's home directory */ char * psz_userdir; /* user's home directory */
char * psz_configfile; /* location of config file */ char * psz_configfile; /* location of config file */
char * psz_pidfile;
/* Fast memcpy plugin used */ /* Fast memcpy plugin used */
module_t * p_memcpy_module; module_t * p_memcpy_module;
......
...@@ -419,6 +419,32 @@ int VLC_Init( int i_object, int i_argc, char *ppsz_argv[] ) ...@@ -419,6 +419,32 @@ int VLC_Init( int i_object, int i_argc, char *ppsz_argv[] )
p_vlc->p_libvlc->b_daemon = VLC_TRUE; p_vlc->p_libvlc->b_daemon = VLC_TRUE;
/* lets check if we need to write the pidfile */
p_vlc->psz_pidfile = config_GetPsz( p_vlc, "pidfile" );
msg_Dbg( p_vlc, "p_vlc->psz_pidfile is %s", p_vlc->psz_pidfile );
if( p_vlc->psz_pidfile != NULL )
{
pid_t i_pid;
FILE *pidfile;
i_pid = getpid();
msg_Dbg( p_vlc, "our PID is %d, writing it to %s", i_pid, p_vlc->psz_pidfile );
pidfile = utf8_fopen( p_vlc->psz_pidfile,"w" );
if( pidfile != NULL )
{
utf8_fprintf( pidfile, "%d", (int)i_pid );
fclose( pidfile );
}
else
{
msg_Err( p_vlc, "Cannot open pid file for writing: %s, error: %s", p_vlc->psz_pidfile, strerror(errno) );
}
}
#else #else
pid_t i_pid; pid_t i_pid;
......
...@@ -835,6 +835,10 @@ static char *ppsz_clock_descriptions[] = ...@@ -835,6 +835,10 @@ static char *ppsz_clock_descriptions[] =
#define DAEMON_LONGTEXT N_( \ #define DAEMON_LONGTEXT N_( \
"Runs VLC as a background daemon process.") "Runs VLC as a background daemon process.")
#define PIDFILE_TEXT N_("Write process id to file")
#define PIDFILE_LONGTEXT N_( \
"Writes proccess id into specified file.")
#define FILE_LOG_TEXT N_( "Log to file" ) #define FILE_LOG_TEXT N_( "Log to file" )
#define FILE_LOG_LONGTEXT N_( \ #define FILE_LOG_LONGTEXT N_( \
"Log all VLC messages to a text file." ) "Log all VLC messages to a text file." )
...@@ -1591,6 +1595,9 @@ vlc_module_begin(); ...@@ -1591,6 +1595,9 @@ vlc_module_begin();
#if !defined(WIN32) #if !defined(WIN32)
add_bool( "daemon", 0, NULL, DAEMON_TEXT, DAEMON_LONGTEXT, VLC_TRUE ); add_bool( "daemon", 0, NULL, DAEMON_TEXT, DAEMON_LONGTEXT, VLC_TRUE );
change_short('d'); change_short('d');
add_string( "pidfile", NULL, NULL, PIDFILE_TEXT, PIDFILE_LONGTEXT,
VLC_FALSE );
#endif #endif
add_bool( "file-logging", VLC_FALSE, NULL, FILE_LOG_TEXT, FILE_LOG_LONGTEXT, add_bool( "file-logging", VLC_FALSE, NULL, FILE_LOG_TEXT, FILE_LOG_LONGTEXT,
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment