Subversion Repositories Kolibri OS

Compare Revisions

Ignore whitespace Rev 5728 → Rev 5809

/contrib/other/kpm/collection.cpp
1,75 → 1,62
#include "tinyxml/tinyxml.h"
#include "package.h"
 
// *INDENT-OFF*
const char *key_collection = "collection";
const char *key_package = "package";
const char *key_name = "name";
const char *key_version = "version";
const char *key_group = "group";
const char *key_description = "description";
const char *key_title = "title";
const char *key_release = "release";
const char *key_file = "file";
// *INDENT-ON*
 
int package_id;
 
void parse_group(pkg_group_t* gr, TiXmlElement *xmlgroup)
collection_t *
load_collection_file(const char *name)
{
TiXmlElement *xmlpkg;
TiXmlElement *xmle;
TiXmlDocument doc;
TiXmlElement *col;
collection_t *collection = NULL;
 
xmlpkg = xmlgroup->FirstChildElement(key_package);
while (xmlpkg)
doc.LoadFile(name);
col = doc.FirstChildElement(key_collection);
if (col)
{
package_t *pkg;
TiXmlElement *xmlpkg;
TiXmlElement *xmle;
 
pkg = (package_t*)malloc(sizeof(package_t));
collection = (collection_t *) malloc(sizeof(collection_t));
INIT_LIST_HEAD(&collection->packages);
 
INIT_LIST_HEAD(&pkg->file_list);
pkg->id = package_id++;
pkg->name = strdup(xmlpkg->Attribute(key_name));
pkg->version = strdup(xmlpkg->Attribute(key_version));
xmlpkg = col->FirstChildElement(key_package);
 
xmle = xmlpkg->FirstChildElement(key_description);
pkg->description = strdup(xmle->Attribute(key_title));
while (xmlpkg)
{
package_t *pkg;
 
xmle = xmlpkg->FirstChildElement(key_release);
pkg->filename = strdup(xmle->Attribute(key_file));
pkg = (package_t *) malloc(sizeof(package_t));
 
list_add_tail(&pkg->list, &gr->packages);
xmlpkg = xmlpkg->NextSiblingElement();
};
};
INIT_LIST_HEAD(&pkg->file_list);
 
pkg->id = package_id++;
pkg->name = strdup(xmlpkg->Attribute(key_name));
pkg->version = strdup(xmlpkg->Attribute(key_version));
pkg->group = strdup(xmlpkg->Attribute(key_group));
 
collection_t* load_collection_file(const char *name)
{
TiXmlDocument doc;
TiXmlElement *col;
collection_t *collection = NULL;
xmle = xmlpkg->FirstChildElement(key_description);
pkg->description = strdup(xmle->Attribute(key_title));
 
doc.LoadFile(name);
col = doc.FirstChildElement(key_collection);
if (col)
{
collection = (collection_t*)malloc(sizeof(collection_t));
INIT_LIST_HEAD(&collection->groups);
xmle = xmlpkg->FirstChildElement(key_release);
pkg->filename = strdup(xmle->Attribute(key_file));
 
TiXmlElement* xmlgroup = col->FirstChildElement();
if (xmlgroup)
{
pkg_group_t *gr;
 
gr = (pkg_group_t*)malloc(sizeof(pkg_group_t));
INIT_LIST_HEAD(&gr->list);
INIT_LIST_HEAD(&gr->packages);
 
gr->name = strdup(xmlgroup->Value());
list_add_tail(&gr->list, &collection->groups);
parse_group(gr, xmlgroup);
list_add_tail(&pkg->list, &collection->packages);
xmlpkg = xmlpkg->NextSiblingElement();
};
};
};
 
return collection;
}
 
 
return collection;
};