1/* 2 * Copyright (c) 1989 Regents of the University of California. 3 * All rights reserved. The Berkeley software License Agreement 4 * specifies the terms and conditions for redistribution. 5 */ 6 7#include <popper.h> 8RCSID("$Id$"); 9 10/* 11 * parse: Parse a raw input line from a POP client 12 * into null-delimited tokens 13 */ 14 15int 16pop_parse(POP *p, char *buf) 17{ 18 char * mp; 19 int i; 20 21 /* Loop through the POP command array */ 22 for (mp = buf, i = 0; ; i++) { 23 24 /* Skip leading spaces and tabs in the message */ 25 while (isspace((unsigned char)*mp))mp++; 26 27 /* Are we at the end of the message? */ 28 if (*mp == 0) break; 29 30 /* Have we already obtained the maximum allowable parameters? */ 31 if (i >= MAXPARMCOUNT) { 32 pop_msg(p,POP_FAILURE,"Too many arguments supplied."); 33 return(-1); 34 } 35 36 /* Point to the start of the token */ 37 p->pop_parm[i] = mp; 38 39 /* Search for the first space character (end of the token) */ 40 while (!isspace((unsigned char)*mp) && *mp) mp++; 41 42 /* Delimit the token with a null */ 43 if (*mp) *mp++ = 0; 44 } 45 46 /* Were any parameters passed at all? */ 47 if (i == 0) return (-1); 48 49 /* Convert the first token (POP command) to lower case */ 50 strlwr(p->pop_command); 51 52 /* Return the number of tokens extracted minus the command itself */ 53 return (i-1); 54 55} 56