Пример #1
0
/* Prepend the whitespace-separated options in OPTIONS to the argument
   vector of a main program with argument count *PARGC and argument
   vector *PARGV.  */
void
prepend_default_options (char const *options, int *pargc, char ***pargv)
{
  if (options)
    {
      char *buf = xmalloc (strlen (options) + 1);
      int prepended = prepend_args (options, buf, (char **) 0);
      int argc = *pargc;
      char * const *argv = *pargv;
      char **pp = (char **) xmalloc ((prepended + argc + 1) * sizeof *pp);
      *pargc = prepended + argc;
      *pargv = pp;
      *pp++ = *argv++;
      pp += prepend_args (options, buf, pp);
      while ((*pp++ = *argv++))
	continue;
    }
}
Пример #2
0
gboolean
tracker_compatible (int           argc,
                    const char  **argv,
                    int          *new_argc,
                    char       ***new_argv)
{
	*new_argc = 0;
	*new_argv = NULL;

	/*
	 * Conversions:
	 * $ tracker-control
	 *   --list-processes | -p    --> 'tracker daemon $same_args'
	 *   --kill | -k              --> 'tracker daemon $same_args'
	 *   --terminate | -t         --> 'tracker daemon $same_args'
	 *   --hard-reset | -r        --> 'tracker reset --hard | -r'
	 *   --soft-reset | -e        --> 'tracker reset --soft | -e'
	 *   --remove-config | -c     --> 'tracker reset --config | -c'
	 *   --start | -s             --> 'tracker daemon $same_args'
	 *   --backup | -b            --> 'tracker index $same_args'
	 *   --restore | -o           --> 'tracker index $same_args'
	 *   --set-log-verbosity      --> 'tracker daemon $same_args'
	 *   --get-log-verbosity      --> 'tracker daemon $same_args'
	 *   --collect-debug-info     --> 'tracker status $same_args'
	 *   --watch | -w             --> 'tracker daemon --watch | -w'
	 *   --follow | -F            --> 'tracker daemon --follow | -f'
	 *   --list-common-statuses   --> 'tracker daemon $same_args'
	 *   --list-miners-running    --> 'tracker daemon $same_args'
	 *   --list-miners-available  --> 'tracker daemon $same_args'
	 *   --miner                  --> 'tracker daemon $same_args'
	 *   --pause-details          --> 'tracker daemon $same_args'
	 *   --pause                  --> 'tracker daemon $same_args'
	 *   --pause-for-process      --> 'tracker daemon $same_args'
	 *   --resume                 --> 'tracker daemon $same_args'
	 *   --status | -S            --> 'tracker daemon' (no args)
	 *   --reindex-mime-type | -m --> 'tracker index $same_args'
	 *   --index-file | -f        --> 'tracker index --file | -f'
	 *
	 * $ tracker-stats            --> 'tracker status --stat $same_args'
	 *
	 * $ tracker-import           --> 'tracker index --import | -i'
	 * 
	 */
	if (strcmp (argv[0], "stats") == 0) {
		prepend_args ("status --stat", 1, 1, argc, argv, new_argc, new_argv);
		return TRUE;
	} else if (strcmp (argv[0], "import") == 0) {
		prepend_args ("index --import", 1, 1, argc, argv, new_argc, new_argv);
		return TRUE;
	} else if (strcmp (argv[0], "control") == 0) {
		if (find_arg ("--list-processes", "-p", argc, argv) ||
		    find_arg ("--kill", "-k", argc, argv) ||
		    find_arg ("--terminate", "-t", argc, argv) ||
		    find_arg ("--start", "-s", argc, argv) ||
		    find_arg ("--set-log-verbosity", NULL, argc, argv) ||
		    find_arg ("--get-log-verbosity", NULL, argc, argv) ||
		    find_arg ("--watch", "-w", argc, argv) ||
		    find_arg ("--list-common-statuses", NULL, argc, argv) ||
		    find_arg ("--list-miners-running", NULL, argc, argv) ||
		    find_arg ("--list-miners-available", NULL, argc, argv) ||
		    find_arg ("--miner", NULL, argc, argv) ||
		    find_arg ("--pause-details", NULL, argc, argv) ||
		    find_arg ("--pause", NULL, argc, argv) ||
		    find_arg ("--pause-for-process", NULL, argc, argv) ||
		    find_arg ("--resume", NULL, argc, argv)) {
			argv[0] = "daemon";
			return FALSE;
		} else if (find_arg ("--follow", "-F", argc, argv)) {
			/* Previously, we had -F, now we support -f */
			*new_argv = g_strsplit ("daemon --follow", " ", -1);
			*new_argc = 2;
			return TRUE;
		} else if (find_arg ("--collect-debug-info", NULL, argc, argv)) {
			argv[0] = "status";
			return FALSE;
		} else if (find_arg ("--hard-reset", "-r", argc, argv)) {
			*new_argv = g_strsplit ("reset --hard", " ", -1);
			*new_argc = 2;
			return TRUE;
		} else if (find_arg ("--soft-reset", "-e", argc, argv)) {
			*new_argv = g_strsplit ("reset --soft", " ", -1);
			*new_argc = 2;
			return TRUE;
		} else if (find_arg ("--remove-config", "-c", argc, argv)) {
			*new_argv = g_strsplit ("reset --config", " ", -1);
			*new_argc = 2;
			return TRUE;
		} else if (find_arg ("--backup", "-b", argc, argv)) {
			prepend_args ("index --backup", 1, 1, argc, argv, new_argc, new_argv);
			return TRUE;
		} else if (find_arg ("--restore", "-o", argc, argv)) {
			prepend_args ("index --restore", 1, 1, argc, argv, new_argc, new_argv);
			return TRUE;
		} else if (find_arg ("--reindex-mime-type", "-m", argc, argv)) {
			prepend_args ("index --reindex-mime-type", 1, 1, argc, argv, new_argc, new_argv);
			return TRUE;
		} else if (find_arg ("--index-file", "-f", argc, argv)) {
			prepend_args ("index --file", 1, 1, argc, argv, new_argc, new_argv);
			return TRUE;
		} else if (find_arg ("--help", "-h", argc, argv)) {
			g_printerr ("%s\n\n",
			            _("The 'tracker-control' command is no longer available"));
			*new_argv = g_strsplit ("daemon -h", " ", -1);
			*new_argc = 2;
			return TRUE;
		} else {
			/* This includes --status and -S */
			*new_argv = g_strsplit ("daemon", " ", -1);
			*new_argc = 1;
			return TRUE;
		}
	}

	/* Return TRUE if we have new argv/argc, otherwise FALSE */
	return FALSE;
}