if (online != ison || carrier != iscarrier) {
online = ison;
+ carrier = iscarrier;
if (ani_timer != 0) {
g_source_remove(ani_timer);
ani_timer = 0;
}
static void
-dhcpcd_status_cb(DHCPCD_CONNECTION *con, const char *status, _unused void *data)
+dhcpcd_status_cb(DHCPCD_CONNECTION *con, const char *status,
+ _unused void *data)
{
static char *last = NULL;
const char *msg;
ani_timer = 0;
ani_counter = 0;
}
+ online = carrier = false;
gtk_status_icon_set_from_icon_name(status_icon,
"network-offline");
gtk_status_icon_set_tooltip_text(status_icon, msg);
- notify(_("No network"), msg, "network-offline");
dhcpcd_prefs_abort();
while (wi_scans) {
w = wi_scans->next;
static int last_error;
con = (DHCPCD_CONNECTION *)data;
- fd = dhcpcd_open(con);
+ fd = dhcpcd_open(con, true);
if (fd == -1) {
+ if (errno == EACCES || errno == EPERM) {
+ if ((fd = dhcpcd_open(con, false)) != -1)
+ goto unprived;
+ }
if (errno != last_error) {
g_critical("dhcpcd_open: %s", strerror(errno));
last_error = errno;
return TRUE;
}
+unprived:
if (!dhcpcd_watch(fd, dhcpcd_cb, con)) {
dhcpcd_close(con);
return TRUE;
const char *icon;
bool new_msg;
- /* Update the tooltip with connection information */
- con = dhcpcd_if_connection(i);
- update_online(con, false);
-
/* We should ignore renew and stop so we don't annoy the user */
- if (g_strcmp0(i->reason, "RENEW") == 0 ||
- g_strcmp0(i->reason, "STOP") == 0 ||
- g_strcmp0(i->reason, "STOPPED") == 0)
- return;
-
- msg = dhcpcd_if_message(i, &new_msg);
- if (msg) {
- g_message("%s", msg);
- if (new_msg) {
- if (i->up)
- icon = "network-transmit-receive";
- //else
- // icon = "network-transmit";
- if (!i->up)
- icon = "network-offline";
- notify(_("Network event"), msg, icon);
+ if (g_strcmp0(i->reason, "RENEW") &&
+ g_strcmp0(i->reason, "STOP") &&
+ g_strcmp0(i->reason, "STOPPED"))
+ {
+ msg = dhcpcd_if_message(i, &new_msg);
+ if (msg) {
+ g_message("%s", msg);
+ if (new_msg) {
+ if (i->up)
+ icon = "network-transmit-receive";
+ //else
+ // icon = "network-transmit";
+ if (!i->up)
+ icon = "network-offline";
+ notify(_("Network event"), msg, icon);
+ }
+ g_free(msg);
}
- g_free(msg);
}
+
+ /* Update the tooltip with connection information */
+ con = dhcpcd_if_connection(i);
+ update_online(con, false);
}
static gboolean
g_critical("libdhcpcd: %s", strerror(errno));
exit(EXIT_FAILURE);
}
+ dhcpcd_set_progname(con, "dhcpcd-gtk");
dhcpcd_set_status_callback(con, dhcpcd_status_cb, NULL);
dhcpcd_set_if_callback(con, dhcpcd_if_cb, NULL);
dhcpcd_wpa_set_scan_callback(con, dhcpcd_wpa_scan_cb, NULL);