[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Getht-commit] arch commit: getht--mainline--0.1--patch-22
From: |
Nick |
Subject: |
[Getht-commit] arch commit: getht--mainline--0.1--patch-22 |
Date: |
Mon, 30 Apr 2007 09:35:23 +0100 |
User-agent: |
Mutt/1.5.13 (2006-08-11) |
Revision: getht--mainline--0.1--patch-22
Archive: address@hidden
Creator: Nick White <address@hidden>
Date: Mon Apr 30 09:34:43 BST 2007
Standard-date: 2007-04-30 08:34:43 GMT
Modified-files: getht.c issue.h issuemem.c mediarev.c
mediaxml.c tocxml.c
New-patches: address@hidden/getht--mainline--0.1--patch-22
Summary: Removed last of static issue array code, added sorting
Keywords:
Removed defined constants from issue.h previously used to
determine size of static arrays
Removed unused separate show media structure function
Remove clean media & clean issue functions
Added issue sorting code
M issuemem.c
M getht.c
M issue.h
M mediarev.c
M mediaxml.c
M tocxml.c
* modified files
--- orig/getht.c
+++ mod/getht.c
@@ -36,10 +36,6 @@
med * findnewestmed(iss ** issue, int no_of_issues);
void show_iss_struct(iss ** issue, int no_of_issues);
-void show_med_struct(med * issue);
-
-void clearmed(med * cur_media);
-void cleariss(iss * cur_issue);
void showusage();
@@ -297,20 +293,10 @@
if(save_file(NULL, MEDIA_TOC_URL, media_rev))
return 1;
- med temp_med[MED_NO];
-
- clearmed(temp_med);
- /* BUG: for no good reason, this resets title[] too...
- * Until we can find why, just get the title again */
-
- cur_identifiers(issue_xml, isstitle, &date);
-
+ med ** temp_med;
int med_no = -1;
- if(parsemediagz(media_rev, temp_med, &med_no))
- return 1;
- /* BUG: this blanks title too... strange
- * Until we can find why, just get the title again */
- cur_identifiers(issue_xml, isstitle, &date);
+
+ temp_med = parsemediagz(media_rev, &med_no);
unlink(media_rev);
@@ -325,7 +311,7 @@
{
int iss_no, sec_no, med_no, it_no;
printf("%i Issues\n",no_of_issues);
- for(iss_no=0;iss_no<no_of_issues;iss_no++)
+ for(iss_no=0;iss_no<=no_of_issues;iss_no++)
{
printf("-Issue %i-\n", (iss_no+1));
printf("Title:\t'%s'\n", issue[iss_no]->title);
@@ -366,65 +352,6 @@
}
}
-void show_med_struct(med * cur_media)
-/* Prints media information */
-{
- int tmp;
- for(tmp=0;tmp<MED_NO;cur_media++,tmp++)
- {
- printf("--Media item--\n");
-
- printf("uri: '%s'\n", cur_media->uri);
- printf("title: '%s'\n", cur_media->title);
- printf("comment: '%s'\n", cur_media->comment);
- printf("preview_uri: '%s'\n", cur_media->preview_uri);
- printf("size: '%i'\n", cur_media->size);
-
- printf("\n");
- }
-}
-
-void cleariss(iss * cur_issue)
-/* turns off exist flags for all issue structures */
-{
- int tmp;
- for(tmp=0; tmp<MAX_ISS; cur_issue++,tmp++)
- {
- cur_issue->preview_uri[0] = '\0';
- cur_issue->title[0] = '\0';
- cur_issue->size = 0;
- cur_issue->no_of_sections = -1;
- cur_issue->section = NULL;
- cur_issue->no_of_media = -1;
- cur_issue->media = NULL;
- //clearmed(cur_issue->media);
- }
-}
-
-void clearmed(med * cur_media)
-/* clears the members of a media array */
-{
- 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;
-}
-
-void clearsec(sec * cur_section)
-/* clears all members of section arrays */
-{
- int tmp;
- for(tmp=0; tmp<=SEC_NO; cur_section++,tmp++)
- {
- cur_section->uri[0] = '\0';
- cur_section->title[0] = '\0';
- cur_section->size = 0;
- cur_section->number = 0;
- cur_section->no_of_items = 0;
- }
-}
-
int findnewestiss(iss ** issue, int no_of_issues)
/* returns newest issue indice */
{
--- orig/issue.h
+++ mod/issue.h
@@ -19,10 +19,6 @@
*
*/
-#define SEC_NO 5
-#define ITEM_NO 30
-#define MED_NO 2
-
/* all sizes are in bytes and are child-inclusive */
typedef struct
@@ -73,6 +69,9 @@
iss ** parsetoc(char *filepath, int * iss_no, int * latest);
iss ** parsemedia(char * filepath, iss ** issue, int * no_of_issues);
-iss ** assignnew_iss(int *no_of_issues, iss ** issue);
-sec ** assignnew_sec(int *no_of_sections, sec ** section);
-it ** assignnew_it(int * no_of_items, it ** item);
+med ** parsemediagz(char * media_path, int * no_of_media);
+
+iss ** assignnew_iss(iss ** issue, int *no_of_issues);
+sec ** assignnew_sec(sec ** section, int * no_of_sections);
+it ** assignnew_it(it ** item, int * no_of_items);
+med ** assignnew_med(med ** media, int * no_of_media);
--- orig/issuemem.c
+++ mod/issuemem.c
@@ -21,6 +21,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include "issue.h"
@@ -32,7 +33,7 @@
exit(1);
}
-iss ** assignnew_iss(int *no_of_issues, iss ** issue)
+iss ** assignnew_iss(iss ** issue, int *no_of_issues)
/* assign memory for new issue */
{
iss ** tmp = NULL;
@@ -57,7 +58,7 @@
return tmp;
}
-sec ** assignnew_sec(int *no_of_sections, sec ** section)
+sec ** assignnew_sec(sec ** section, int *no_of_sections)
/* assign memory for new section */
{
sec ** tmp = NULL;
@@ -82,7 +83,7 @@
return tmp;
}
-it ** assignnew_it(int * no_of_items, it ** item)
+it ** assignnew_it(it ** item, int * no_of_items)
{
it ** tmp = NULL;
@@ -105,3 +106,69 @@
return tmp;
}
+
+med ** assignnew_med(med ** media, int * no_of_media)
+{
+ med ** tmp = NULL;
+
+ if(*no_of_media < 0)
+ { /* make **section a new array of section pointers */
+ if( (tmp = malloc(sizeof(med *))) == NULL )
+ nogo_mem();
+ }
+ else
+ { /* add a new pointer to media pointer list */
+ if( (tmp = realloc(media, sizeof(med *) + (((*no_of_media)+1) *
sizeof(med *)))) == NULL )
+ nogo_mem();
+ }
+
+ (*no_of_media)++;
+
+ /* make new array item a pointer to issue */
+ if( (tmp[*no_of_media] = malloc(sizeof(med))) == NULL )
+ nogo_mem();
+
+ return tmp;
+}
+
+int issuesort(iss ** issue, int no_of_issues)
+/* does a basic bubble sort, by date, returning sorted issue */
+{
+ int sortindex[no_of_issues];
+
+ int count1, count2, temp;
+
+ for(count1 = 0; count1 <= no_of_issues; count1++)
+ sortindex[count1] = count1;
+
+ /* find correct order of issues using a bubble sort */
+ for(count1 = 0; count1 <=no_of_issues; count1++)
+ {
+ for(count2 = 0; count2 < no_of_issues; count2++)
+ {
+ if(issue[sortindex[count2]]->date.year <
issue[sortindex[count2+1]]->date.year)
+ {
+ temp = sortindex[count2];
+ sortindex[count2] = sortindex[count2+1];
+ sortindex[count2+1] = temp;
+ }
+ else if((issue[sortindex[count2]]->date.year ==
issue[sortindex[count2+1]]->date.year) &&
+ (issue[sortindex[count2]]->date.firstmonth <
issue[sortindex[count2+1]]->date.firstmonth))
+ {
+ temp = sortindex[count2];
+ sortindex[count2] = sortindex[count2+1];
+ sortindex[count2+1] = temp;
+ }
+ }
+ }
+
+ iss * sortedissue[no_of_issues];
+
+ for(count1 = 0; count1 <= no_of_issues; count1++)
+ sortedissue[count1] = issue[sortindex[count1]];
+
+ for(count1 = 0; count1 <= no_of_issues; count1++)
+ issue[count1] = sortedissue[count1];
+
+ return 0;
+}
--- orig/mediarev.c
+++ mod/mediarev.c
@@ -30,17 +30,21 @@
void getquote(char * input, char * label);
void removeleadingspace(char * cur_line);
-int parsemediagz(char * media_path, med * cur_media, int * no_of_media)
+med ** parsemediagz(char * media_path, int * no_of_media)
/* Parses gzipped adobe pagemaker files for media urls and metadata,
- * filling cur_media with the information. */
+ * filling media with the information. */
{
char cur_line[STR_MAX];
gzFile mediagz;
+ med ** media = NULL;
+
strcpy(cur_line,""); /* reset cur_line */
mediagz = gzopen(media_path, "r");
+ med * cur_media;
+
while(gzeof(mediagz)==0)
{
gzgets(mediagz, cur_line, STR_MAX);
@@ -49,6 +53,20 @@
if(!strcmp(cur_line,"on mouseUp"))
{
strcpy(cur_line,""); /* reset cur_line */
+
+ /* assign memory for the new media */
+ media = assignnew_med(media, no_of_media);
+
+ cur_media = media[*no_of_media];
+
+ /* setup media globals */
+ 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;
+
+ /* process rev file */
while(strcmp(cur_line,"end mouseUp") &&
gzeof(mediagz)==0)
{
strcpy(cur_line,""); /* reset cur_line */
@@ -72,16 +90,11 @@
getquote(cur_line,cur_media->comment);
}
}
- *cur_media++;
- (*no_of_media)++;
}
strcpy(cur_line,""); /* reset cur_line */
}
- if(*no_of_media == -1)
- return 1;
-
- return 0;
+ return media;
}
int smilurl(char * smilurl, med * cur_media)
--- orig/mediaxml.c
+++ mod/mediaxml.c
@@ -66,7 +66,7 @@
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 @@
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 @@
issue[tmp]->no_of_media = -1;
- med ** tmpmed = NULL;
-
itnode = node->xmlChildrenNode;
while (itnode != NULL)
@@ -207,30 +206,17 @@
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 @@
xmlFreeDoc(media_file);
+ issuesort(issue, no_of_issues);
+
return issue;
}
--- orig/tocxml.c
+++ mod/tocxml.c
@@ -50,7 +50,6 @@
no_of_issues = -1;
iss ** issue = NULL;
- //iss ** tmp = NULL;
int year;
@@ -66,7 +65,7 @@
if(!xmlStrncmp(cnode->name,(char *) "issue",5))
{
/* assign memory for the new issue */
- issue = assignnew_iss(&no_of_issues,
issue);
+ issue = assignnew_iss(issue,
&no_of_issues);
/* setup issue globals */
issue[no_of_issues]->no_of_media = -1;
@@ -91,6 +90,8 @@
*iss_no = no_of_issues;
+ issuesort(issue, no_of_issues);
+
return issue;
}
@@ -111,7 +112,7 @@
{
/* assign memory for new section */
cur_issue->section =
- assignnew_sec(&(cur_issue->no_of_sections),
cur_issue->section);
+ assignnew_sec(cur_issue->section,
&(cur_issue->no_of_sections));
/* setup section globals */
cur_issue->section[cur_issue->no_of_sections]->no_of_items = -1;
@@ -153,7 +154,7 @@
{
/* assign memory for new item */
cur_section->item =
- assignnew_it(
&(cur_section->no_of_items), cur_section->item);
+ assignnew_it( cur_section->item,
&(cur_section->no_of_items));
cur_item =
cur_section->item[cur_section->no_of_items];
pgpfVuF2BhEAM.pgp
Description: PGP signature
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Getht-commit] arch commit: getht--mainline--0.1--patch-22,
Nick <=