/* -*-c-*-
*
- * $Id: admin.c,v 1.6 2001/02/19 19:11:09 mdw Exp $
+ * $Id: admin.c,v 1.10 2004/04/08 01:36:17 mdw Exp $
*
* Admin interface for configuration
*
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-/*----- Revision history --------------------------------------------------*
- *
- * $Log: admin.c,v $
- * Revision 1.6 2001/02/19 19:11:09 mdw
- * Output buffering on admin connections.
- *
- * Revision 1.5 2001/02/16 21:22:51 mdw
- * Support for displaying statistics. Make client connections blocking, so
- * that things don't get dropped. (This might change again if I add
- * buffering.)
- *
- * Revision 1.4 2001/02/06 09:34:53 mdw
- * Change ERR response to FAIL for consistency with other programs.
- *
- * Revision 1.3 2001/02/04 01:17:12 mdw
- * The `DAEMON' notification to stdout is replaced by a warning. The
- * `DAEMON' and `QUIT' command send `OK' on successful completion. Put
- * assignment of sequence number in a T(...) guard.
- *
- * Revision 1.2 2001/02/03 22:40:29 mdw
- * Put timer information into the entropy pool when packets are received
- * and on similar events. Reseed the generator on the interval timer.
- *
- * Revision 1.1 2001/02/03 20:26:37 mdw
- * Initial checkin.
- *
- */
-
/*----- Header files ------------------------------------------------------*/
#include "tripe.h"
va_list ap;
dstr d = DSTR_INIT;
va_start(ap, fmt);
- dstr_vputf(&d, fmt, ap);
+ dstr_vputf(&d, fmt, &ap);
va_end(ap);
dosend(a, d.buf, d.len);
dstr_destroy(&d);
if (flags & F_INIT)
dstr_puts(&d, "WARN ");
va_start(ap, fmt);
- dstr_vputf(&d, fmt, ap);
+ dstr_vputf(&d, fmt, &ap);
va_end(ap);
if (!(flags & F_INIT))
moan("%s", d.buf);
/* --- @a_line@ --- *
*
* Arguments: @char *p@ = pointer to the line read
+ * @size_t len@ = length of the line
* @void *vp@ = pointer to my admin block
*
* Returns: ---
* Use: Handles a line of input.
*/
-static void a_line(char *p, void *vp)
+static void a_line(char *p, size_t len, void *vp)
{
admin *a = vp;
const acmd *c;
size_t sz = sizeof(sun);
if ((nfd = accept(fd, (struct sockaddr *)&sun, &sz)) < 0) {
- a_warn("accept admin connection failed: %s", strerror(errno));
+ if (errno != EINTR && errno != EAGAIN && errno != EWOULDBLOCK &&
+ errno != ECONNABORTED && errno != EPROTO)
+ a_warn("accept admin connection failed: %s", strerror(errno));
return;
}
a_create(nfd, nfd);