
#include "v.h"
#include<stdio.h>

char *rindex();

static void v_parse_pkt_data (char *data, char **record, 
			      int numfields)
	{
	while (numfields--) 
		{
		*record++ = data;
		data = rindex(data,0) + 1;
		}
	}

v_parse_pkt (struct v_pkt *pkt,
	     struct v_info *info)
	{
	v_parse_pkt_data(pkt->data, (char **) info, sizeof(struct v_info)/sizeof(char *));
	}

static void v_assemble_pkt_data (char *target, char *end, char **fields, int numfields)
	{
	while (numfields--)
		{
		if (*fields == NULL)		/* If no string is supplied... */
			*target++ = 0;		/* ...then put in a string of length 0 */
		else
			strncpy(target, *fields, end - target);
		target = rindex(target, 0) + 1;
		fields++;
		}
	}

v_assemble_pkt (struct v_pkt *pkt,
		struct v_info *info)
	{
	int numfields = sizeof(struct v_info)/sizeof(char *);
	v_assemble_pkt_data (pkt->data, pkt->data + V_MAXDATA - numfields, (char **) info, numfields);
	}
