diff options
Diffstat (limited to 'src/mediarev.c')
-rw-r--r-- | src/mediarev.c | 178 |
1 files changed, 0 insertions, 178 deletions
diff --git a/src/mediarev.c b/src/mediarev.c deleted file mode 100644 index 975c971..0000000 --- a/src/mediarev.c +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright 2006 Nick White - * - * This mediagz is part of GetHT - * - * GetHT is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * GetHT is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GetHT; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -#include <stdio.h> -#include <string.h> -#include <zlib.h> - -#include "getht.h" -#include "issue.h" - -int gzgetstr(char * newstr, gzFile * gzfile); -int getquote(char * input, char * quote, int number); -int strcontains(char * source, char * comparison); - -med ** parsemediagz(char * media_path, int * no_of_media) -/* Parses gzipped adobe pagemaker files for media urls and metadata, - * filling media with the information. */ -{ - char c; - char cur_line[STR_MAX]; - gzFile mediagz; - - *no_of_media = -1; - - med ** media = NULL; - - strcpy(cur_line,""); /* reset cur_line */ - - mediagz = gzopen(media_path, "r"); - - med * cur_media; - - while(gzeof(mediagz)==0) - { - gzgetstr(cur_line, mediagz); - - if(strcontains(cur_line,"on mouseUp") == 0) - { - /* 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(strcontains(cur_line,"end mouseUp") && gzeof(mediagz)==0) - { - strcpy(cur_line,""); /* reset cur_line */ - gzgetstr(cur_line, mediagz); - - if(!strcontains(cur_line,"set the filename of player \"") && strcontains(cur_line,"empty")) - getquote(cur_line, cur_media->uri, 2); - else if(!strcontains(cur_line,"set the label of this stack to")) - getquote(cur_line, cur_media->title, 1); - else if(!strcontains(cur_line,"statusMsg\(\"") || !strcontains(cur_line,"StatusMsg \(\"")) - getquote(cur_line, cur_media->comment, 1); - } - - /* if it turns out that there was nothing useful there, remove the new media */ - if(cur_media->uri[0] == '\0') - (*no_of_media)--; - } - strcpy(cur_line,""); /* reset cur_line */ - } - - return media; -} - -int getquote(char * input, char * quote, int number) -/* assigns quote string from a line of the format: - * 'something "quote" something' */ -{ - int curnum; - - /* advance past earlier quotes */ - for(curnum=0; curnum < ((number*2)-2); curnum++) - { - /* advance until " character is reached */ - while(*input != '"' && *input) - input++; - input++; - } - - /* advance until " character is reached */ - while(*input != '"' && *input) - input++; - - input++; - - /* copy characters in until next '"' */ - while(*input != '"') - { - /* if end is found without closing bracket, - * exit with error */ - if(! *input) - return 1; - *quote = *input; - quote++; - input++; - } - - *quote = '\0'; - - return 0; -} - -int strcontains(char * source, char * comparison) -{ - int srcpos = 0; /* position in source string */ - int compos = 0; /* position in comparison string */ - - while(srcpos < strlen(source) && srcpos < STR_MAX) - { - /* if the chars match, move to the next in comparison, - * otherwise only advance the source */ - if(source[srcpos] == comparison[compos]) - compos++; - else - compos = 0; - - /* if we got to the end of comparison, there's a match */ - if(compos == strlen(comparison)) - return 0; - - srcpos++; - } - - /* if we got all the way through the source, there's no match */ - return 1; -} - -int gzgetstr(char * newstr, gzFile * gzfile) -/* a reimplementation of gzgetstr, which doesn't choke at odd characters - */ -{ - strcpy(newstr,""); /* reset cur_line */ - char c; - - while((c = gzgetc(gzfile)) != -1) - { - if(c == '\n') - break; - - /* append the char if there's room in the str */ - if(strlen(newstr)+1 < STR_MAX) - strncat(newstr,&c,1); - /* if the line is too long just break to pick up the 2nd half on next pass, - * not perfect (will miss strs cut into 2 sections), but good enough for now */ - else - break; - } - - return 0; -} |