Example #1
0
STRING_LIST*
SplitStringByWhitespace (
    IN CHAR8       *String
)
/*++

Routine Description:

  Creates and returns a 'split' STRING_LIST by splitting the string
  on whitespace boundaries.

Arguments:

  String          The string to 'split'

Returns:

  EFI_STATUS

--*/
{
    CHAR8       *Pos;
    CHAR8       *EndOfSubString;
    CHAR8       *EndOfString;
    STRING_LIST *Output;
    UINTN       Item;

    String = CloneString (String);
    if (String == NULL) {
        return NULL;
    }
    EndOfString = String + strlen (String);

    Output = NewStringList ();

    for (Pos = String, Item = 0; Pos < EndOfString; Item++) {
        while (isspace ((int)*Pos)) {
            Pos++;
        }

        for (EndOfSubString=Pos;
                (*EndOfSubString != '\0') && !isspace ((int)*EndOfSubString);
                EndOfSubString++
            ) {
        }

        if (EndOfSubString == Pos) {
            break;
        }

        *EndOfSubString = '\0';

        AppendCopyOfStringToList (&Output, Pos);

        Pos = EndOfSubString + 1;
    }

    free (String);
    return Output;
}
Example #2
0
//static GTree* CreateTree()
static STRINGLISTCOMP* CreateTree()
{
	STRINGLISTCOMP *list = NULL;
	
	if ( NewStringList( &list, "", "" ) != 0 ){
		list = NULL;
		goto Err;
	}
Err:
	return list;
}
Example #3
0
static void AddKeyAndTextToTree(xmlNodePtr xmlnode, STRINGLISTCOMP* tree)
{
	char *key, *text;
	STRINGLISTCOMP *list = NULL;

	//if( !xmlnode->name || g_strcasecmp((const gchar *)xmlnode->name,"Item") != 0 )
	if( !xmlnode->name )
		return;

	key  = (char *)xmlGetProp(xmlnode,(const xmlChar *)"key");
	text = (char *)xmlNodeGetContent(xmlnode);

	if( key != NULL && text != NULL )
	{
		//g_tree_insert(tree, (gpointer)key, (gpointer)text);
		NewStringList( &list, key, text );
		AppendStringList( tree, list );
	}
}