00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include "config.h"
00029
00030 #include <stdio.h>
00031 #include <stdlib.h>
00032 #ifdef HAVE_SIGNAL_H
00033 # include <signal.h>
00034 #endif
00035 #ifdef HAVE_TIME_H
00036 # include <time.h>
00037 #endif
00038
00039 #include <vlc/vlc.h>
00040
00041
00042
00043
00044 #if !defined(WIN32) && !defined(UNDER_CE)
00045 static void SigHandler ( int i_signal );
00046 #endif
00047
00048
00049
00050
00051 int main( int i_argc, char *ppsz_argv[] )
00052 {
00053 int i_ret;
00054
00055 #ifndef SYS_DARWIN
00056
00057 fprintf( stderr, "VLC media player %s\n", VLC_Version() );
00058 #endif
00059
00060 #ifdef HAVE_PUTENV
00061 # ifdef DEBUG
00062
00063 putenv( "MALLOC_CHECK_=2" );
00064
00065
00066 putenv( "GNOME_DISABLE_CRASH_DIALOG=1" );
00067 # endif
00068
00069
00070 if( getenv( "VLC_VERBOSE" ) == NULL )
00071 {
00072 putenv( "VLC_VERBOSE=0" );
00073 }
00074 #endif
00075
00076
00077 i_ret = VLC_Create();
00078 if( i_ret < 0 )
00079 {
00080 return i_ret;
00081 }
00082
00083 #if !defined(WIN32) && !defined(UNDER_CE)
00084
00085
00086
00087
00088 signal( SIGINT, SigHandler );
00089 signal( SIGHUP, SigHandler );
00090 signal( SIGQUIT, SigHandler );
00091
00092
00093 signal( SIGALRM, SIG_IGN );
00094 signal( SIGPIPE, SIG_IGN );
00095 #endif
00096
00097
00098 i_ret = VLC_Init( 0, i_argc, ppsz_argv );
00099 if( i_ret < 0 )
00100 {
00101 VLC_Destroy( 0 );
00102 return i_ret;
00103 }
00104
00105 i_ret = VLC_AddIntf( 0, NULL, VLC_TRUE, VLC_TRUE );
00106
00107
00108 VLC_CleanUp( 0 );
00109
00110
00111 VLC_Destroy( 0 );
00112
00113 return i_ret;
00114 }
00115
00116 #if !defined(WIN32) && !defined(UNDER_CE)
00117
00118
00119
00120
00121
00122
00123 static void SigHandler( int i_signal )
00124 {
00125 static time_t abort_time = 0;
00126 static volatile vlc_bool_t b_die = VLC_FALSE;
00127
00128
00129
00130
00131
00132 if( !b_die )
00133 {
00134 b_die = VLC_TRUE;
00135 abort_time = time( NULL );
00136
00137 fprintf( stderr, "signal %d received, terminating vlc - do it "
00138 "again in case it gets stuck\n", i_signal );
00139
00140
00141 VLC_Die( 0 );
00142 }
00143 else if( time( NULL ) > abort_time + 2 )
00144 {
00145
00146 signal( SIGINT, SIG_DFL );
00147 signal( SIGHUP, SIG_DFL );
00148 signal( SIGQUIT, SIG_DFL );
00149 signal( SIGALRM, SIG_DFL );
00150 signal( SIGPIPE, SIG_DFL );
00151
00152 fprintf( stderr, "user insisted too much, dying badly\n" );
00153
00154 abort();
00155 }
00156 }
00157 #endif
00158
00159 #if defined(UNDER_CE)
00160 # if defined( _MSC_VER ) && defined( UNDER_CE )
00161 # include "vlc_common.h"
00162 # endif
00163
00164
00165
00166 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
00167 LPTSTR lpCmdLine, int nCmdShow )
00168 {
00169 char **argv, psz_cmdline[MAX_PATH];
00170 int argc, i_ret;
00171
00172 WideCharToMultiByte( CP_ACP, 0, lpCmdLine, -1,
00173 psz_cmdline, MAX_PATH, NULL, NULL );
00174
00175 argv = vlc_parse_cmdline( psz_cmdline, &argc );
00176 argv = realloc( argv, (argc + 1) * sizeof(char *) );
00177 if( !argv ) return -1;
00178
00179 if( argc ) memmove( argv + 1, argv, argc * sizeof(char *) );
00180 argv[0] = "";
00181
00182 i_ret = main( argc + 1, argv );
00183
00184
00185 return i_ret;
00186 }
00187 #endif