#include <vlc/vlc.h>
#include <stdio.h>
#include <stdlib.h>
-#include <locale.h>
+#include <stdbool.h>
+
+#ifdef HAVE_SETLOCALE
+# include <locale.h>
+#endif
#ifdef HAVE_GETOPT_H
# include <getopt.h>
static void usage (const char *path)
{
- printf ("Usage: %s <path>\n"
- "Generate the LibVLC plugins cache "
- "for the specified plugins directory.\n", path);
+ printf (
+"Usage: %s [-f] <path>\n"
+"Generate the LibVLC plugins cache for the specified plugins directory.\n"
+" -f, --force forcefully reset the plugin cache (if it exists)\n",
+ path);
}
/* Explicit HACK */
{
static const struct option opts[] =
{
+ { "force", no_argument, NULL, 'f' },
{ "help", no_argument, NULL, 'h' },
{ "version", no_argument, NULL, 'V' },
{ NULL, no_argument, NULL, '\0'}
};
+#ifdef HAVE_SETLOCALE
setlocale (LC_CTYPE, ""); /* needed by FromLocale() */
+#endif
int c;
- while ((c = getopt_long (argc, argv, "hV", opts, NULL)) != -1)
+ bool force = false;
+
+ while ((c = getopt_long (argc, argv, "fhV", opts, NULL)) != -1)
switch (c)
{
+ case 'f':
+ force = true;
+ break;
case 'h':
usage (argv[0]);
return 0;
if (asprintf (&arg, "--plugin-path=%s", path) == -1)
abort ();
- const char *const vlc_argv[] = {
- "--ignore-config",
- "--quiet",
- arg,
- NULL,
- };
+ const char *vlc_argv[7];
+ int vlc_argc = 0;
- libvlc_exception_t ex;
- libvlc_exception_init (&ex);
+ vlc_argv[vlc_argc++] = "--ignore-config";
+ vlc_argv[vlc_argc++] = "--quiet";
+ vlc_argv[vlc_argc++] = "--no-media-library";
+ if (force)
+ vlc_argv[vlc_argc++] = "--reset-plugins-cache";
+ vlc_argv[vlc_argc++] = arg;
+ vlc_argv[vlc_argc++] = "--"; /* end of options */
+ vlc_argv[vlc_argc] = NULL;
- libvlc_instance_t *vlc = libvlc_new (3, vlc_argv, &ex);
+ libvlc_instance_t *vlc = libvlc_new (vlc_argc, vlc_argv);
if (vlc != NULL)
libvlc_release (vlc);
free (arg);