mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-29 20:38:25 +02:00
61 lines
1.1 KiB
C
61 lines
1.1 KiB
C
|
|
#include "test-common.h"
|
||
|
|
|
||
|
|
SignalData *
|
||
|
|
add_signal_full (const char *name, GCallback callback, int ifindex)
|
||
|
|
{
|
||
|
|
SignalData *data = g_new0 (SignalData, 1);
|
||
|
|
|
||
|
|
data->name = name;
|
||
|
|
data->received = FALSE;
|
||
|
|
data->handler_id = g_signal_connect (nm_platform_get (), name, callback, data);
|
||
|
|
data->ifindex = ifindex;
|
||
|
|
|
||
|
|
g_assert (data->handler_id >= 0);
|
||
|
|
|
||
|
|
return data;
|
||
|
|
}
|
||
|
|
|
||
|
|
void
|
||
|
|
accept_signal (SignalData *data)
|
||
|
|
{
|
||
|
|
if (!data->received)
|
||
|
|
g_error ("Attemted to accept a non-received signal '%s'.", data->name);
|
||
|
|
|
||
|
|
data->received = FALSE;
|
||
|
|
}
|
||
|
|
|
||
|
|
void
|
||
|
|
wait_signal (SignalData *data)
|
||
|
|
{
|
||
|
|
data->loop = g_main_loop_new (NULL, FALSE);
|
||
|
|
g_main_loop_run (data->loop);
|
||
|
|
g_main_loop_unref (data->loop);
|
||
|
|
data->loop = NULL;
|
||
|
|
|
||
|
|
accept_signal (data);
|
||
|
|
}
|
||
|
|
|
||
|
|
void
|
||
|
|
free_signal (SignalData *data)
|
||
|
|
{
|
||
|
|
if (data->received)
|
||
|
|
g_error ("Attempted to free received but not accepted signal '%s'.", data->name);
|
||
|
|
|
||
|
|
g_signal_handler_disconnect (nm_platform_get (), data->handler_id);
|
||
|
|
g_free (data);
|
||
|
|
}
|
||
|
|
|
||
|
|
void
|
||
|
|
run_command (const char *format, ...)
|
||
|
|
{
|
||
|
|
char *command;
|
||
|
|
va_list ap;
|
||
|
|
|
||
|
|
va_start (ap, format);
|
||
|
|
|
||
|
|
command = g_strdup_vprintf (format, ap);
|
||
|
|
g_assert (!system (command));
|
||
|
|
g_free (command);
|
||
|
|
}
|
||
|
|
|