* static prototypes
*/
-static int command(const char *, ...);
+static int command(const char *, ...) CHECK_PRINTF(1, 2);
static int multiline(void);
-static int traverse (int (*)(void *, char *), void *closure, const char *, ...);
-static int vcommand(const char *, va_list);
+static int traverse(int (*)(void *, char *), void *closure,
+ const char *, ...) CHECK_PRINTF(3, 4);
+static int vcommand(const char *, va_list) CHECK_PRINTF(1, 0);
static int pop_getline (char *, int, netsec_context *);
static int pop_sasl_callback(enum sasl_message_type, unsigned const char *,
unsigned int, unsigned char **, unsigned int *,
if ((snoopstate = netsec_get_snoop(nsc)))
netsec_set_snoop(nsc, 0);
- for (;;)
- switch (multiline ()) {
- case NOTOK:
- netsec_set_snoop(nsc, snoopstate);
- return NOTOK;
-
- case DONE:
- strncpy (response, buffer, sizeof(response));
- netsec_set_snoop(nsc, snoopstate);
- return OK;
+ for (;;) {
+ result = multiline();
+ if (result == OK) {
+ result = (*action)(closure, response);
+ if (result == OK)
+ continue;
+ } else if (result == DONE) {
+ strncpy(response, buffer, sizeof(response));
+ result = OK;
+ }
+ break;
+ }
- case OK:
- (*action)(closure, response);
- break;
- }
+ netsec_set_snoop(nsc, snoopstate);
+ return result;
}