[vlc-devel] commit: OSX specific hack to remove "-psnXXX" from args ( Rafaël Carré )

git version control git at videolan.org
Thu Nov 26 20:07:21 CET 2009


vlc | branch: master | Rafaël Carré <rafael.carre at gmail.com> | Thu Nov 26 20:03:14 2009 +0100| [fcc9a34048474173cbfa17b7106044cbdc31cfbe] | committer: Rafaël Carré 

OSX specific hack to remove "-psnXXX" from args

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]

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fcc9a34048474173cbfa17b7106044cbdc31cfbe
---

 bin/vlc.c            |   15 ++++++++++++++-
 src/config/cmdline.c |   18 ------------------
 2 files changed, 14 insertions(+), 19 deletions(-)

diff --git a/bin/vlc.c b/bin/vlc.c
index 3dc0fe4..bad420b 100644
--- a/bin/vlc.c
+++ b/bin/vlc.c
@@ -34,6 +34,10 @@
 #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;
diff --git a/src/config/cmdline.c b/src/config/cmdline.c
index 264f84e..5f2a6ab 100644
--- a/src/config/cmdline.c
+++ b/src/config/cmdline.c
@@ -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);
 




More information about the vlc-devel mailing list