static unsigned iv_nreasons = 0;
static struct timeval iv_next = { 0, 0 };
+static int lpdone = 0;
/*----- The interval timer ------------------------------------------------*/
sig_init(&sel);
}
+/* --- @lp_end@ --- *
+ *
+ * Arguments: ---
+ *
+ * Returns: ---
+ *
+ * Use: Requests an exit from the main loop.
+ */
+
+void lp_end(void) { lpdone = 1; }
+
/* --- @lp_run@ --- *
*
* Arguments: ---
for (;;) {
a_preselect();
+ if (lpdone) break;
if (!sel_select(&sel)) nerr = 0;
else if (errno != EINTR && errno != EAGAIN) {
a_warn("SERVER", "select-error", "?ERRNO", A_END);
}
}
}
+ lpdone = 0;
return (0);
}
}
lp_run();
+
+ p_destroyall();
+ p_unbind();
+ a_unlisten();
+ ps_quit();
return (0);
}