/**************************************************************************** * HomebrewXML Class * for USB Loader GX ***************************************************************************/ #include #include #include #include "xml/xml.h" #include "HomebrewXML.h" #define ENTRIE_SIZE 8192 int HomebrewXML::LoadHomebrewXMLData( const char* filename ) { mxml_node_t *nodedataHB = NULL; mxml_node_t *nodetreeHB = NULL; /* Load XML file */ FILE *filexml; filexml = fopen( filename, "rb" ); if ( !filexml ) return -1; nodetreeHB = mxmlLoadFile( NULL, filexml, MXML_OPAQUE_CALLBACK ); fclose( filexml ); if ( nodetreeHB == NULL ) return -2; nodedataHB = mxmlFindElement( nodetreeHB, nodetreeHB, "app", NULL, NULL, MXML_DESCEND ); if ( nodedataHB == NULL ) return -5; char * Entrie = new char[ENTRIE_SIZE]; GetTextFromNode( nodedataHB, nodedataHB, ( char* ) "name", NULL, NULL, MXML_DESCEND, Entrie, ENTRIE_SIZE ); Name = Entrie; GetTextFromNode( nodedataHB, nodedataHB, ( char* ) "coder", NULL, NULL, MXML_DESCEND, Entrie, ENTRIE_SIZE ); Coder = Entrie; GetTextFromNode( nodedataHB, nodedataHB, ( char* ) "version", NULL, NULL, MXML_DESCEND, Entrie, ENTRIE_SIZE ); Version = Entrie; GetTextFromNode( nodedataHB, nodedataHB, ( char* ) "short_description", NULL, NULL, MXML_DESCEND, Entrie, ENTRIE_SIZE ); ShortDescription = Entrie; GetTextFromNode( nodedataHB, nodedataHB, ( char* ) "long_description", NULL, NULL, MXML_DESCEND, Entrie, ENTRIE_SIZE ); LongDescription = Entrie; GetTextFromNode( nodedataHB, nodedataHB, ( char* ) "release_date", NULL, NULL, MXML_DESCEND, Entrie, ENTRIE_SIZE ); int len = ( strlen( Entrie ) - 6 ); //length of the date string without the 200000 at the end if ( len == 8 ) snprintf( Entrie, ENTRIE_SIZE, "%c%c/%c%c/%c%c%c%c", Entrie[4], Entrie[5], Entrie[6], Entrie[7], Entrie[0], Entrie[1], Entrie[2], Entrie[3] ); else if ( len == 6 ) snprintf( Entrie, ENTRIE_SIZE, "%c%c/%c%c%c%c", Entrie[4], Entrie[5], Entrie[0], Entrie[1], Entrie[2], Entrie[3] ); else snprintf( Entrie, ENTRIE_SIZE, "%s", Entrie ); Releasedate = Entrie; free( nodedataHB ); free( nodetreeHB ); delete [] Entrie; return 1; }