diff --git a/configure.ac b/configure.ac index 3151cdc8..2061a3df 100644 --- a/configure.ac +++ b/configure.ac @@ -96,6 +96,9 @@ elif test "x$enable_python_plugins" != xno; then fi fi AS_IF([test "x$PLATFORM" = xosx], [rm -f Python.framework]) + # set path to look for global python plugins + GLOBAL_PYTHON_PLUGINS_PATH='${pkgdatadir}/plugins' + AC_SUBST(GLOBAL_PYTHON_PLUGINS_PATH) else AM_CONDITIONAL([BUILD_PYTHON_API], [false]) fi @@ -119,6 +122,9 @@ else [AC_MSG_ERROR([dl library needed to run C plugins])], [AM_CONDITIONAL([BUILD_C_API], [false])]) ])]) + # set path to look for global c plugins + GLOBAL_C_PLUGINS_PATH='${pkglibdir}/plugins' + AC_SUBST(GLOBAL_C_PLUGINS_PATH) else AM_CONDITIONAL([BUILD_C_API], [false]) fi @@ -360,7 +366,7 @@ AS_IF([test "x$PLATFORM" = xosx], [AM_CFLAGS="$AM_CFLAGS -Qunused-arguments"]) AM_LDFLAGS="$AM_LDFLAGS -export-dynamic" AM_CPPFLAGS="$AM_CPPFLAGS $glib_CFLAGS $gio_CFLAGS $curl_CFLAGS $libnotify_CFLAGS $PYTHON_CPPFLAGS ${GTK_CFLAGS} ${SQLITE_CFLAGS}" -AM_CPPFLAGS="$AM_CPPFLAGS -DTHEMES_PATH=\"\\\"$THEMES_PATH\\\"\" -DICONS_PATH=\"\\\"$ICONS_PATH\\\"\"" +AM_CPPFLAGS="$AM_CPPFLAGS -DTHEMES_PATH=\"\\\"$THEMES_PATH\\\"\" -DICONS_PATH=\"\\\"$ICONS_PATH\\\"\" -DGLOBAL_PYTHON_PLUGINS_PATH=\"\\\"$GLOBAL_PYTHON_PLUGINS_PATH\\\"\" -DGLOBAL_C_PLUGINS_PATH=\"\\\"$GLOBAL_C_PLUGINS_PATH\\\"\"" LIBS="$glib_LIBS $gio_LIBS $curl_LIBS $libnotify_LIBS $PYTHON_LIBS $PYTHON_EXTRA_LIBS $PYTHON_LDFLAGS ${GTK_LIBS} ${SQLITE_LIBS} $LIBS" AC_SUBST(AM_LDFLAGS) @@ -374,14 +380,16 @@ AC_CONFIG_FILES([Makefile]) AC_OUTPUT echo "" -echo "PLATFORM : $host_os" -echo "PACKAGE_STATUS : $PACKAGE_STATUS" -echo "AM_CFLAGS : $AM_CFLAGS" -echo "AM_CPPFLAGS : $AM_CPPFLAGS" -echo "AM_LDFLAGS : $AM_LDFLAGS" -echo "LIBS : $LIBS" -echo "Install themes : $THEMES_INSTALL" -echo "Themes path : $THEMES_PATH" -echo "Icons path : $ICONS_PATH" +echo "PLATFORM : $host_os" +echo "PACKAGE_STATUS : $PACKAGE_STATUS" +echo "AM_CFLAGS : $AM_CFLAGS" +echo "AM_CPPFLAGS : $AM_CPPFLAGS" +echo "AM_LDFLAGS : $AM_LDFLAGS" +echo "LIBS : $LIBS" +echo "Install themes : $THEMES_INSTALL" +echo "Themes path : $THEMES_PATH" +echo "Icons path : $ICONS_PATH" +echo "Global Python plugins path : $GLOBAL_PYTHON_PLUGINS_PATH" +echo "Global C plugins path : $GLOBAL_C_PLUGINS_PATH" echo "" echo "Now you can run \`make' to build profanity" diff --git a/src/command/cmd_funcs.c b/src/command/cmd_funcs.c index b970c73b..302de659 100644 --- a/src/command/cmd_funcs.c +++ b/src/command/cmd_funcs.c @@ -6927,13 +6927,31 @@ cmd_receipts(ProfWin* window, const char* const command, gchar** args) gboolean cmd_plugins_install(ProfWin* window, const char* const command, gchar** args) { - char* path; + char* path = NULL; if (args[1] == NULL) { cons_show("Please provide a path to the plugin file or directory, see /help plugins"); return TRUE; - } else { + } + + // take whole path or build it in case it's just the plugin name + if (strchr(args[1], '/')) { path = get_expanded_path(args[1]); + } else { + if (g_str_has_suffix(args[1], ".py")) { + path = g_strdup_printf("%s/%s", GLOBAL_PYTHON_PLUGINS_PATH, args[1]); + } else if (g_str_has_suffix(args[1], ".so")) { + path = g_strdup_printf("%s/%s", GLOBAL_C_PLUGINS_PATH, args[1]); + } else { + cons_show("Plugins must have one of the following extensions: '.py' '.so'"); + return TRUE; + } + } + + if (access(path, R_OK) != 0) { + cons_show("Cannot access: %s", path); + free(path); + return TRUE; } if (is_regular_file(path)) {