1
mirror of https://code.videolan.org/videolan/vlc synced 2024-10-03 01:31:53 +02:00

vlc: do not clobber argv, argc

Later patch wants to use argv[0].
This commit is contained in:
Rémi Denis-Courmont 2018-03-10 22:12:33 +02:00
parent c63628e169
commit d112b475eb

View File

@ -112,7 +112,7 @@ static void exit_timeout (int signum)
/*****************************************************************************
* main: parse command line, start interface and spawn threads.
*****************************************************************************/
int main( int i_argc, const char *ppsz_argv[] )
int main(int argc, const char *argv[])
{
/* The so-called POSIX-compliant MacOS X reportedly processes SIGPIPE even
* if it is blocked in all thread.
@ -147,7 +147,7 @@ int main( int i_argc, const char *ppsz_argv[] )
fprintf (stderr, "VLC is not supposed to be run as root. Sorry.\n"
"If you need to use real-time priorities and/or privileged TCP ports\n"
"you can use %s-wrapper (make sure it is Set-UID root and\n"
"cannot be run by non-trusted users first).\n", ppsz_argv[0]);
"cannot be run by non-trusted users first).\n", argv[0]);
return 1;
}
#endif
@ -202,34 +202,32 @@ int main( int i_argc, const char *ppsz_argv[] )
pthread_t self = pthread_self ();
pthread_sigmask (SIG_SETMASK, &set, NULL);
const char *argv[i_argc + 3];
int argc = 0;
const char *args[argc + 3];
int count = 0;
argv[argc++] = "--no-ignore-config";
argv[argc++] = "--media-library";
args[count++] = "--no-ignore-config";
args[count++] = "--media-library";
#ifdef HAVE_DBUS
argv[argc++] = "--dbus";
args[count++] = "--dbus";
#endif
ppsz_argv++; i_argc--; /* skip executable path */
#ifdef __OS2__
for (int i = 0; i < i_argc; i++)
if ((argv[argc++] = FromSystem (ppsz_argv[i])) == NULL)
for (int i = 1; i < argc; i++)
if ((args[count++] = FromSystem(argv[i])) == NULL)
{
fprintf (stderr, "Converting '%s' to UTF-8 failed.\n",
ppsz_argv[i]);
fprintf (stderr, "Converting '%s' to UTF-8 failed.\n", argv[i]);
return 1;
}
#else
memcpy (argv + argc, ppsz_argv, i_argc * sizeof (*argv));
argc += i_argc;
memcpy(args + count, argv + 1, (argc - 1) * sizeof (*argv));
count += (argc - 1);
#endif
argv[argc] = NULL;
args[count] = NULL;
vlc_enable_override ();
/* Initialize libvlc */
libvlc_instance_t *vlc = libvlc_new (argc, argv);
libvlc_instance_t *vlc = libvlc_new(count, args);
if (vlc == NULL)
return 1;
@ -275,8 +273,8 @@ int main( int i_argc, const char *ppsz_argv[] )
out:
libvlc_release (vlc);
#ifdef __OS2__
for (int i = argc - i_argc; i < argc; i++)
free (argv[i]);
for (int i = count - argc; i < argc; i++)
free(args[i]);
#endif
return ret;
}