static gchar* get_query (MuConfig *opts, GError **err) { gchar *query, *bookmarkval; /* params[0] is 'find', actual search params start with [1] */ if (!opts->bookmark && !opts->params[1]) { g_set_error (err, MU_ERROR_DOMAIN, MU_ERROR_IN_PARAMETERS, "error in parameters"); return NULL; } bookmarkval = NULL; if (opts->bookmark) { bookmarkval = resolve_bookmark (opts, err); if (!bookmarkval) return NULL; } query = mu_str_quoted_from_strv ((const gchar**)&opts->params[1]); if (bookmarkval) { gchar *tmp; tmp = g_strdup_printf ("%s %s", bookmarkval, query); g_free (query); query = tmp; } g_free (bookmarkval); return query; }
gboolean mu_script_guile_run (MuScriptInfo *msi, const char *muhome, const char **args, GError **err) { char *mainargs, *expr; char *argv[] = { "guile", "-l", NULL, "-c", NULL, NULL }; g_return_val_if_fail (msi, FALSE); g_return_val_if_fail (muhome, FALSE); if (access (mu_script_info_path (msi), R_OK) != 0) { mu_util_g_set_error (err, MU_ERROR_FILE_CANNOT_READ, strerror(errno)); return FALSE; } argv[2] = (char*)mu_script_info_path (msi); mainargs = mu_str_quoted_from_strv (args); expr = g_strdup_printf ( "(main '(\"%s\" \"--muhome=%s\" %s))", mu_script_info_name (msi), muhome, mainargs ? mainargs : ""); g_free (mainargs); argv[4] = expr; scm_boot_guile (5, argv, guile_shell, NULL); /* never reached but let's be correct(TM)*/ g_free (expr); return TRUE; }