OSX specific hack to remove "-psnXXX" from args
authorRafaël Carré <rafael.carre@gmail.com>
Thu, 26 Nov 2009 19:03:14 +0000 (20:03 +0100)
committerRafaël Carré <rafael.carre@gmail.com>
Thu, 26 Nov 2009 19:03:14 +0000 (20:03 +0100)
Move it from libvlc where it didn't work to vlc binary where it really
should be

Now VLC can be started from dock again after [13d838b64]

bin/vlc.c
src/config/cmdline.c

index 3dc0fe4..bad420b 100644 (file)
--- a/bin/vlc.c
+++ b/bin/vlc.c
 #include <stdlib.h>
 #include <locale.h>
 
+#ifdef __APPLE__
+#include <string.h>
+#endif
+
 
 /* Explicit HACK */
 extern void LocaleFree (const char *);
@@ -134,7 +138,16 @@ int main( int i_argc, const char *ppsz_argv[] )
 # endif
 #endif
 
-    for (int i = 1; i < i_argc; i++)
+    int i = 1;
+#ifdef __APPLE__
+    /* When VLC.app is run by double clicking in Mac OS X, the 2nd arg
+     * is the PSN - process serial number (a unique PID-ish thingie)
+     * still ok for real Darwin & when run from command line
+     * for example -psn_0_9306113 */
+    if(i_argc >= 2 && !strncmp( ppsz_argv[1] , "-psn" , 4 ))
+        i = 2;
+#endif
+    for (; i < i_argc; i++)
         if ((argv[argc++] = FromLocale (ppsz_argv[i])) == NULL)
             return 1; // BOOM!
     argv[argc] = NULL;
index 264f84e..5f2a6ab 100644 (file)
@@ -65,24 +65,6 @@ int __config_LoadCmdLine( vlc_object_t *p_this, int *pi_argc,
     module_config_t *pp_shortopts[256];
     char *psz_shortopts;
 
-#ifdef __APPLE__
-    /* When VLC.app is run by double clicking in Mac OS X, the 2nd arg
-     * is the PSN - process serial number (a unique PID-ish thingie)
-     * still ok for real Darwin & when run from command line */
-    if ( (*pi_argc > 1) && (strncmp( ppsz_argv[ 1 ] , "-psn" , 4 ) == 0) )
-                                        /* for example -psn_0_9306113 */
-    {
-        /* GDMF!... I can't do this or else the MacOSX window server will
-         * not pick up the PSN and not register the app and we crash...
-         * hence the following kludge otherwise we'll get confused w/ argv[1]
-         * being an input file name.
-         * As there won't be any more args to parse, just exit. */
-        assert( *pi_argc == 2 );
-        *pi_argc = 1;
-        return 0;
-    }
-#endif
-
     /* List all modules */
     module_t **list = module_list_get (NULL);