lwresutil.c revision 499b34cea04a46823d003d4c0520c8b03e8513cb
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * Copyright (C) 2000, 2001 Internet Software Consortium.
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * Permission to use, copy, modify, and distribute this software for any
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * purpose with or without fee is hereby granted, provided that the above
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * copyright notice and this permission notice appear in all copies.
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews/* $Id: lwresutil.c,v 1.26 2001/01/09 21:59:34 bwelling Exp $ */
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * The "current" pointer in "b" points to encoded raw data.
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * The address of the first byte of the data is returned via "p",
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * and the length is returned via "len". If NULL, they are not
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * On return, the current pointer of "b" will point to the character
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * following the data length and the data.
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrewslwres_data_parse(lwres_buffer_t *b, unsigned char **p, lwres_uint16_t *len)
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews unsigned char *data;
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * Pull off the length (2 bytes)
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * Set the pointer to this string to the right place, then
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * advance the buffer pointer.
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * The "current" pointer in "b" point to an encoded string.
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * The address of the first byte of the string is returned via "c",
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * and the length is returned via "len". If NULL, they are not
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * On return, the current pointer of "b" will point to the character
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * following the string length, the string, and the trailing NULL.
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrewslwres_string_parse(lwres_buffer_t *b, char **c, lwres_uint16_t *len)
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews * Pull off the length (2 bytes)
return (LWRES_R_UNEXPECTEDEND);
return (LWRES_R_UNEXPECTEDEND);
if (0 != lwres_buffer_getuint8(b))
return (LWRES_R_FAILURE);
if (c != NULL)
*c = string;
return (LWRES_R_SUCCESS);
return (LWRES_R_UNEXPECTEDEND);
return (LWRES_R_UNEXPECTEDEND);
return (LWRES_R_FAILURE);
return (LWRES_R_SUCCESS);
int ret;
int recvlen;
char *buffer;
unsigned int target_length;
goto out;
return (LWRES_R_FAILURE);
goto out;
goto out;
goto out;
goto again;
goto again;
goto out;
goto out;
return (LWRES_R_SUCCESS);
out:
return (ret);
int ret;
int recvlen;
char *buffer;
goto out;
goto out;
goto out;
goto out;
goto again;
goto again;
goto out;
goto out;
return (LWRES_R_SUCCESS);
out:
return (ret);
int ret;
int recvlen;
char *buffer;
unsigned int target_length;
goto out;
return (LWRES_R_FAILURE);
goto out;
goto out;
goto out;
goto again;
goto again;
goto out;
goto out;
return (LWRES_R_SUCCESS);
out:
return (ret);