packagekit/backends/apt/pk-debconf-helper.c
2024-03-23 17:53:33 +01:00

59 lines
1.3 KiB
C

#include "config.h"
#include <stdio.h>
#include <packagekit-glib2/pk-client.h>
#include <packagekit-glib2/pk-client-helper.h>
#include <systemd/sd-daemon.h>
static GMainLoop *main_loop = NULL;
static PkClientHelper *helper = NULL;
static gboolean exit_loop(gpointer user_data)
{
g_debug("Checking for active connections");
if (!pk_client_helper_is_active(helper)) {
g_message("No active connections, exiting");
g_main_loop_quit(main_loop);
}
return TRUE;
}
int main(void)
{
g_auto(GStrv) argv = NULL;
g_auto(GStrv) envp = NULL;
g_autoptr(GSocket) socket = NULL;
g_autoptr(GError) error = NULL;
int fd = -1;
main_loop = g_main_loop_new (NULL, FALSE);
pk_client_create_helper_argv_envp (&argv, &envp);
if (sd_listen_fds (0) != 1) {
g_error("No or too many file descriptors received.\n");
exit(1);
}
fd = SD_LISTEN_FDS_START + 0;
socket = g_socket_new_from_fd (fd, &error);
if (error != NULL) {
g_error ("%s\n", error->message);
return 1;
}
helper = pk_client_helper_new ();
if (!pk_client_helper_start_with_socket (helper, socket, argv, envp, &error)) {
g_error ("%s\n", error->message);
return 1;
}
g_timeout_add_seconds (60, exit_loop, NULL);
g_main_loop_run (main_loop);
g_object_unref (helper);
g_object_unref (main_loop);
return 0;
}