getht-commit
[Top][All Lists]
Advanced

[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];
 



Attachment: pgpfVuF2BhEAM.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]