/* * Phdc Manager requests to be removed from the existing list of managers. */ static DBusMessage *dbus_unregister_phdc_agent(DBusConnection *conn, DBusMessage *msg, void *data) { struct near_phdc_data *mgr; DBusMessageIter iter; const char *path, *role, *sender; DBG("conn %p", conn); if (!dbus_message_iter_init(msg, &iter)) return error_invalid_arguments(msg); if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_OBJECT_PATH) return error_invalid_arguments(msg); sender = dbus_message_get_sender(msg); dbus_message_iter_get_basic(&iter, &path); dbus_message_iter_next(&iter); if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING) return error_invalid_arguments(msg); dbus_message_iter_get_basic(&iter, &role); /* look for specific path */ mgr = search_mgr_list_by_path(path); if (!mgr) return error_not_found(msg); DBG("%s", mgr->sender); if (strncmp(sender, mgr->sender, strlen(mgr->sender))) return error_permission_denied(msg); /* remove it */ near_p2p_unregister(mgr->p2p_driver); g_hash_table_remove(mgr_list, mgr->p2p_driver->service_name); return g_dbus_create_reply(msg, DBUS_TYPE_INVALID); }
void ast_simple_command_execve(t_lst *cmd_tokens, t_lst *je_all_tokens) { char *path; char *cmd_name; cmd_name = twl_lst_first(cmd_tokens); path = shenv_find_binary_path(shenv_singleton(), cmd_name); if (file_exists(path)) { if (file_isexecutable(path)) jobexec_fork_exec_wrapper(je_all_tokens, cmd_tokens); else error_permission_denied(path); } else { shenv_singl_error(EXIT_COMMAND_NOT_FOUND, "%s: %s", cmd_name, SHENV_ERROR_COMMAND_NOT_FOUND); LOG_INFO("%s: %s", cmd_name, SHENV_ERROR_COMMAND_NOT_FOUND); } }