Commit b1aebb75 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Gather all checks for the command line help options

parent 545ad065
...@@ -235,7 +235,6 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, ...@@ -235,7 +235,6 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
char * psz_parser = NULL; char * psz_parser = NULL;
char * psz_control = NULL; char * psz_control = NULL;
bool b_exit = false; bool b_exit = false;
int i_ret = VLC_EEXIT;
playlist_t *p_playlist = NULL; playlist_t *p_playlist = NULL;
char *psz_val; char *psz_val;
...@@ -319,94 +318,19 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, ...@@ -319,94 +318,19 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
{ {
Help( p_libvlc, "help" ); Help( p_libvlc, "help" );
b_exit = true; b_exit = true;
i_ret = VLC_EEXITSUCCESS;
} }
/* Check for version option */ /* Check for version option */
else if( var_InheritBool( p_libvlc, "version" ) ) else if( var_InheritBool( p_libvlc, "version" ) )
{ {
Version(); Version();
b_exit = true; b_exit = true;
i_ret = VLC_EEXITSUCCESS;
} }
/* Check for daemon mode */
#if !defined( WIN32 ) && !defined( __SYMBIAN32__ )
if( var_InheritBool( p_libvlc, "daemon" ) )
{
#ifdef HAVE_DAEMON
char *psz_pidfile = NULL;
if( daemon( 1, 0) != 0 )
{
msg_Err( p_libvlc, "Unable to fork vlc to daemon mode" );
b_exit = true;
}
b_daemon = true;
/* lets check if we need to write the pidfile */
psz_pidfile = var_CreateGetNonEmptyString( p_libvlc, "pidfile" );
if( psz_pidfile != NULL )
{
FILE *pidfile;
pid_t i_pid = getpid ();
msg_Dbg( p_libvlc, "PID is %d, writing it to %s",
i_pid, psz_pidfile );
pidfile = vlc_fopen( psz_pidfile,"w" );
if( pidfile != NULL )
{
utf8_fprintf( pidfile, "%d", (int)i_pid );
fclose( pidfile );
}
else
{
msg_Err( p_libvlc, "cannot open pid file for writing: %s (%m)",
psz_pidfile );
}
}
free( psz_pidfile );
#else
pid_t i_pid;
if( ( i_pid = fork() ) < 0 )
{
msg_Err( p_libvlc, "unable to fork vlc to daemon mode" );
b_exit = true;
}
else if( i_pid )
{
/* This is the parent, exit right now */
msg_Dbg( p_libvlc, "closing parent process" );
b_exit = true;
i_ret = VLC_EEXITSUCCESS;
}
else
{
/* We are the child */
msg_Dbg( p_libvlc, "daemon spawned" );
close( STDIN_FILENO );
close( STDOUT_FILENO );
close( STDERR_FILENO );
b_daemon = true;
}
#endif
}
#endif
if( b_exit )
{
module_EndBank (true);
return i_ret;
}
/* Check for help on modules */ /* Check for help on modules */
if( (p_tmp = var_InheritString( p_libvlc, "module" )) ) else if( (p_tmp = var_InheritString( p_libvlc, "module" )) )
{ {
Help( p_libvlc, p_tmp ); Help( p_libvlc, p_tmp );
free( p_tmp ); free( p_tmp );
b_exit = true; b_exit = true;
i_ret = VLC_EEXITSUCCESS;
} }
/* Check for full help option */ /* Check for full help option */
else if( var_InheritBool( p_libvlc, "full-help" ) ) else if( var_InheritBool( p_libvlc, "full-help" ) )
...@@ -417,41 +341,75 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc, ...@@ -417,41 +341,75 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
var_SetBool( p_libvlc, "help-verbose", true ); var_SetBool( p_libvlc, "help-verbose", true );
Help( p_libvlc, "full-help" ); Help( p_libvlc, "full-help" );
b_exit = true; b_exit = true;
i_ret = VLC_EEXITSUCCESS;
} }
/* Check for long help option */ /* Check for long help option */
else if( var_InheritBool( p_libvlc, "longhelp" ) ) else if( var_InheritBool( p_libvlc, "longhelp" ) )
{ {
Help( p_libvlc, "longhelp" ); Help( p_libvlc, "longhelp" );
b_exit = true; b_exit = true;
i_ret = VLC_EEXITSUCCESS;
} }
/* Check for module list option */ /* Check for module list option */
else if( var_InheritBool( p_libvlc, "list" ) ) else if( var_InheritBool( p_libvlc, "list" ) )
{ {
ListModules( p_libvlc, false ); ListModules( p_libvlc, false );
b_exit = true; b_exit = true;
i_ret = VLC_EEXITSUCCESS;
} }
else if( var_InheritBool( p_libvlc, "list-verbose" ) ) else if( var_InheritBool( p_libvlc, "list-verbose" ) )
{ {
ListModules( p_libvlc, true ); ListModules( p_libvlc, true );
b_exit = true; b_exit = true;
i_ret = VLC_EEXITSUCCESS; }
if( b_exit )
{
module_EndBank (true);
return VLC_EEXITSUCCESS;
} }
if( module_count <= 1 ) if( module_count <= 1 )
{ {
msg_Err( p_libvlc, "No plugins found! Check your VLC installation."); msg_Err( p_libvlc, "No plugins found! Check your VLC installation.");
b_exit = true; module_EndBank (true);
i_ret = VLC_ENOITEM; return VLC_ENOITEM;
} }
if( b_exit ) #ifdef HAVE_DAEMON
/* Check for daemon mode */
if( var_InheritBool( p_libvlc, "daemon" ) )
{ {
module_EndBank (true); char *psz_pidfile = NULL;
return i_ret;
if( daemon( 1, 0) != 0 )
{
msg_Err( p_libvlc, "Unable to fork vlc to daemon mode" );
module_EndBank (true);
return VLC_EEXIT;
}
b_daemon = true;
/* lets check if we need to write the pidfile */
psz_pidfile = var_CreateGetNonEmptyString( p_libvlc, "pidfile" );
if( psz_pidfile != NULL )
{
FILE *pidfile;
pid_t i_pid = getpid ();
msg_Dbg( p_libvlc, "PID is %d, writing it to %s",
i_pid, psz_pidfile );
pidfile = vlc_fopen( psz_pidfile,"w" );
if( pidfile != NULL )
{
utf8_fprintf( pidfile, "%d", (int)i_pid );
fclose( pidfile );
}
else
{
msg_Err( p_libvlc, "cannot open pid file for writing: %s (%m)",
psz_pidfile );
}
}
free( psz_pidfile );
} }
#endif
/* FIXME: could be replaced by using Unix sockets */ /* FIXME: could be replaced by using Unix sockets */
#ifdef HAVE_DBUS #ifdef HAVE_DBUS
......
Markdown is supported
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