summaryrefslogtreecommitdiff
path: root/mediaxml.c
diff options
context:
space:
mode:
Diffstat (limited to 'mediaxml.c')
-rw-r--r--mediaxml.c52
1 files changed, 20 insertions, 32 deletions
diff --git a/mediaxml.c b/mediaxml.c
index a86386a..bcb2da1 100644
--- a/mediaxml.c
+++ b/mediaxml.c
@@ -66,7 +66,7 @@ int media_accounted_for(char * filepath, issdates * date)
return found;
}
-int addmediaissue(char * filepath, char * title, issdates * date, med * media, int med_no)
+int addmediaissue(char * filepath, char * title, issdates * date, med ** media, int med_no)
/* Appends data from media structures to xml file. */
{
xmlDocPtr media_file;
@@ -99,17 +99,18 @@ int addmediaissue(char * filepath, char * title, issdates * date, med * media, i
xmlNewProp(curissue, "lastmonth", tmp);
xmlNodePtr curitem;
- int i;
- for(i = 0; i <= med_no; i++)
+
+ int count;
+ for(count = 0; count <= med_no; count++)
{
- curitem = xmlNewTextChild(curissue, NULL, "item", media[i].title);
+ curitem = xmlNewTextChild(curissue, NULL, "item", media[count]->title);
- xmlNewProp(curitem, "uri", media[i].uri);
+ xmlNewProp(curitem, "uri", media[count]->uri);
- if(media[i].comment)
- xmlNewProp(curitem, "comment", media[i].comment);
- if(media[i].preview_uri)
- xmlNewProp(curitem, "preview_uri", media[i].preview_uri);
+ if(media[count]->comment)
+ xmlNewProp(curitem, "comment", media[count]->comment);
+ if(media[count]->preview_uri)
+ xmlNewProp(curitem, "preview_uri", media[count]->preview_uri);
}
xmlKeepBlanksDefault(0);
@@ -198,8 +199,6 @@ iss ** parsemedia(char * filepath, iss ** issue, int * no_of_issues)
issue[tmp]->no_of_media = -1;
- med ** tmpmed = NULL;
-
itnode = node->xmlChildrenNode;
while (itnode != NULL)
@@ -207,30 +206,17 @@ iss ** parsemedia(char * filepath, iss ** issue, int * no_of_issues)
if(!xmlStrcmp(itnode->name,(char *) "item"))
{
- /* assign memory for new media */
- if(cur_issue->no_of_media < 0)
- { /* make **section a new array of section pointers */
- if( (tmpmed = malloc(sizeof(med *))) == NULL )
- nogo_mem();
- }
- else
- { /* add a new pointer to media pointer list */
- if( (tmpmed = realloc(cur_issue->media, sizeof(med *) + ((cur_issue->no_of_media+1) * sizeof(med *)))) == NULL )
- nogo_mem();
- }
-
- cur_issue->no_of_media++;
-
- /* make new array item a pointer to issue */
- if( (tmpmed[cur_issue->no_of_media] = malloc(sizeof(med))) == NULL )
- nogo_mem();
-
- cur_issue->media = tmpmed;
- /* memory for seoction all dealt with */
+ /* assign memory for the new media */
+ cur_issue->media = assignnew_med(cur_issue->media, &(cur_issue->no_of_media));
+ /* setup media globals */
cur_media = cur_issue->media[cur_issue->no_of_media];
- clearmed(cur_media);
+ cur_media->uri[0] = '\0';
+ cur_media->title[0] = '\0';
+ cur_media->comment[0] = '\0';
+ cur_media->preview_uri[0] = '\0';
+ cur_media->size = 0;
/* add media info to cur_media */
if(xmlGetProp(itnode, "uri"))
@@ -254,5 +240,7 @@ iss ** parsemedia(char * filepath, iss ** issue, int * no_of_issues)
xmlFreeDoc(media_file);
+ issuesort(issue, no_of_issues);
+
return issue;
}