/**********************************************************************************
 * iniElement
 *
 * Use when;
 * 1. strtok is scary (also does not handle empty elements well)
 * 2. strstr is not portable
 * 3. performance is less important than simplicity and the above (feel free to improve on this)
 *
 **************************************************
 * This code was created by Peter Harvey @ CodeByDesign. 
 * Released under LGPL 28.JAN.99
 *
 * Contributions from...
 * -----------------------------------------------
 * Peter Harvey		- pharvey@codebydesign.com
 **************************************************/

#include "ini.h"

int iniElement( char *pszData, char cSeperator, char cTerminator, int nElement, char *pszElement, int nMaxElement )
{
	int nCurElement		= 0;
	int nChar			= 0;
	int nCharInElement	= 0;

	memset( pszElement, '\0', nMaxElement );
	for ( ; nCurElement <= nElement && (nCharInElement+1) < nMaxElement; nChar++ )
	{
		/* check for end of data */
        if ( cSeperator != cTerminator && pszData[nChar] == cTerminator )
			break;

		if ( cSeperator == cTerminator && pszData[nChar] == cSeperator && pszData[nChar+1] == cTerminator )
			break;

		/* check for end of element */
		if ( pszData[nChar] == cSeperator )
			nCurElement++;
		else if ( nCurElement == nElement )
		{
			pszElement[nCharInElement] = pszData[nChar];
            nCharInElement++;
		}
	}

	if ( pszElement[0] == '\0' )
		return INI_NO_DATA;

	return INI_SUCCESS;
}

