From 1f0a1fd57bd1dbddab4ad189a721fbe67f59ca3a Mon Sep 17 00:00:00 2001 From: Nick White Date: Sun, 29 Apr 2007 13:07:45 +0000 Subject: Completed issue malloc, fixed build warnings Used malloc to dynamically assign enough memory for sections, items, and media, using the functionality of issuemem.c Included some function definitions in issue.h to remove various build warnings git-archimport-id: getht@sv.gnu.org/getht--mainline--0.1--patch-21 --- getht.c | 70 +++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 36 insertions(+), 34 deletions(-) (limited to 'getht.c') diff --git a/getht.c b/getht.c index 5c81e83..8eb9445 100644 --- a/getht.c +++ b/getht.c @@ -208,9 +208,6 @@ int main(int argc, char *argv[]) } } - if(showstr) - show_iss_struct(issue, no_of_issues); - if(latest_index == -1) { fprintf(stderr, "Error: Cannot ascertain latest issue. "); @@ -228,9 +225,8 @@ int main(int argc, char *argv[]) downloadissue(NULL, save_path, issue[latest_index], force); } - if(downmedia) + if(downmedia || showstr) { - med * cur_media; int newest; issue = parsemedia(media_xml, issue, &no_of_issues); @@ -255,7 +251,7 @@ int main(int argc, char *argv[]) { newest = findnewestiss(issue, no_of_issues); for(i = 0; i <= issue[newest]->no_of_media; i++) - downloadmedia(NULL, save_path, &(issue[newest]->media[i]), force); + downloadmedia(NULL, save_path, issue[newest]->media[i], force); } if(downallmedia) @@ -263,17 +259,13 @@ int main(int argc, char *argv[]) for(i = 0; i <= no_of_issues; i++) { for(newest = 0; newest <= issue[i]->no_of_media; newest++) - downloadmedia(NULL, save_path, &(issue[i]->media[newest]), force); + downloadmedia(NULL, save_path, issue[i]->media[newest], force); } } } - if(no_of_issues > -1) - { - for(i = 0; i < no_of_issues; i++) - free(issue[i]); - free(issue); - } + if(showstr) + show_iss_struct(issue, no_of_issues); /* Ensure curl cleans itself up */ curl_easy_cleanup(main_curl_handle); @@ -331,7 +323,7 @@ int update_contents_files() void show_iss_struct(iss ** issue, int no_of_issues) /* Prints issue information */ { - int iss_no, sec_no, it_no; + int iss_no, sec_no, med_no, it_no; printf("%i Issues\n",no_of_issues); for(iss_no=0;iss_nono_of_sections); sec_no++) { printf("\t-Section %i-\n", (sec_no)); - printf("\tTitle:\t'%s'\n", issue[iss_no]->section[sec_no].title); - printf("\tURI:\t'%s'\n", issue[iss_no]->section[sec_no].uri); - printf("\tNo. of Items:\t'%i'\n", issue[iss_no]->section[sec_no].no_of_items); + printf("\tTitle:\t'%s'\n", issue[iss_no]->section[sec_no]->title); + printf("\tURI:\t'%s'\n", issue[iss_no]->section[sec_no]->uri); + printf("\tNo. of Items:\t'%i'\n", issue[iss_no]->section[sec_no]->no_of_items); - for(it_no=0; it_no < issue[iss_no]->section[sec_no].no_of_items; it_no++) + for(it_no=0; it_no <= issue[iss_no]->section[sec_no]->no_of_items; it_no++) { printf("\t\t-Item-\n"); - printf("\t\tTitle:\t'%s'\n",issue[iss_no]->section[sec_no].item[it_no].title); - printf("\t\tFirst page:\t'%i'",issue[iss_no]->section[sec_no].item[it_no].firstpage); - printf("\tLast page:\t'%i'\n",issue[iss_no]->section[sec_no].item[it_no].lastpage); + printf("\t\tTitle:\t'%s'\n",issue[iss_no]->section[sec_no]->item[it_no]->title); + printf("\t\tFirst page:\t'%i'",issue[iss_no]->section[sec_no]->item[it_no]->firstpage); + printf("\tLast page:\t'%i'\n",issue[iss_no]->section[sec_no]->item[it_no]->lastpage); } it_no = 0; } sec_no = 0; + + printf("Number of Media:\t'%i'\n",issue[iss_no]->no_of_media); + + for(med_no=0; med_no <= (issue[iss_no]->no_of_media); med_no++) + { + printf("\t-Media %i-\n", (med_no)); + printf("\tTitle:\t'%s'\n", issue[iss_no]->media[med_no]->title); + printf("\tURI:\t'%s'\n", issue[iss_no]->media[med_no]->uri); + printf("\tComment:\t'%s'\n", issue[iss_no]->media[med_no]->comment); + printf("\tPreview URI:\t'%s'\n", issue[iss_no]->media[med_no]->preview_uri); + } + med_no = 0; } } @@ -389,24 +393,22 @@ void cleariss(iss * cur_issue) cur_issue->preview_uri[0] = '\0'; cur_issue->title[0] = '\0'; cur_issue->size = 0; - cur_issue->no_of_sections = 0; - cur_issue->no_of_media = 0; - clearmed(cur_issue->media); + 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 all members of media arrays */ +/* clears the members of a media array */ { - int tmp; - for(tmp=0; tmp<=MED_NO; cur_media++,tmp++) - { - 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; - } + 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) -- cgit v1.2.3