diff options
author | Till Kamppeter <till.kamppeter@gmail.com> | 2010-12-15 21:21:32 +0100 |
---|---|---|
committer | Till Kamppeter <till.kamppeter@gmail.com> | 2010-12-15 21:21:32 +0100 |
commit | ba49ab606cb10ae2b9b9900fd361bf264988261c (patch) | |
tree | 9e2caecdc2e7b524fdbc5ff90d7e4da128be2b2e /foomaticrip.c | |
parent | 3e6f9d2acd431cf866429e8238f70d1d7a44b386 (diff) |
foomatic-filters 4.0.6-0ubuntu1ubuntu/4.0.6-0ubuntu1
Diffstat (limited to 'foomaticrip.c')
-rw-r--r-- | foomaticrip.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/foomaticrip.c b/foomaticrip.c index aad3953..089e4ff 100644 --- a/foomaticrip.c +++ b/foomaticrip.c @@ -946,16 +946,22 @@ enum FileType { int guess_file_type(const char *begin, size_t len, int *startpos) { - const char * p; - - p = memchr(begin, '%', len); - if (!p) - return UNKNOWN_FILE; - *startpos = p - begin; - if (!memcmp(p, "%!", 2)) - return PS_FILE; - else if (!memcmp(p, "%PDF-1.", 7)) - return PDF_FILE; + const char * p, * end; + p = begin; + end = begin + len; + + while (p < end) + { + p = memchr(p, '%', end - p); + if (!p) + return UNKNOWN_FILE; + *startpos = p - begin; + if ((end - p) > 2 && !memcmp(p, "%!", 2)) + return PS_FILE; + else if ((end - p) > 7 && !memcmp(p, "%PDF-1.", 7)) + return PDF_FILE; + ++ p; + } *startpos = 0; return UNKNOWN_FILE; } |