From: claudio.bley@gmail.com (Claudio Bley)
To: emacs-devel@gnu.org
Subject: [PATCH 4/5] Fix parsing of NetPBM file comments
Date: Fri, 25 Oct 2013 17:36:56 +0200 [thread overview]
Message-ID: <87vc0le50n.wl%claudio.bley@gmail.com> (raw)
In-Reply-To: <cover.1382714399.git.claudio.bley@gmail.com>
Comments in NetPBM headers can occur in the middle of a token.
(see http://netpbm.sourceforge.net/doc/pbm.html)
---
src/image.c | 51 ++++++++++++++++++++++++++++++---------------------
1 file changed, 30 insertions(+), 21 deletions(-)
diff --git a/src/image.c b/src/image.c
index 2245615..798fc43 100644
--- a/src/image.c
+++ b/src/image.c
@@ -5111,6 +5111,27 @@ pbm_image_p (Lisp_Object object)
}
+/* Get next char skipping comments in Netpbm header. Returns -1 at
+ end of input. */
+
+static int
+pbm_next_char (unsigned char **s, unsigned char *end)
+{
+ int c = -1;
+
+ while (*s < end && (c = *(*s)++, c == '#'))
+ {
+ /* Skip to the next line break */
+ while (*s < end && (c = *(*s)++, c != '\n' && c != '\r'))
+ ;
+
+ c = -1;
+ }
+
+ return c;
+}
+
+
/* Scan a decimal number from *S and return it. Advance *S while
reading the number. END is the end of the string. Value is -1 at
end of input. */
@@ -5120,28 +5141,16 @@ pbm_scan_number (unsigned char **s, unsigned char *end)
{
int c = 0, val = -1;
- while (*s < end)
- {
- /* Skip white-space. */
- while (*s < end && (c = *(*s)++, c_isspace (c)))
- ;
+ /* Skip white-space. */
+ while ((c = pbm_next_char (s, end)) != -1 && c_isspace (c))
+ ;
- if (c == '#')
- {
- /* Skip comment to end of line. */
- while (*s < end && (c = *(*s)++, c != '\n'))
- ;
- }
- else if (c_isdigit (c))
- {
- /* Read decimal number. */
- val = c - '0';
- while (*s < end && (c = *(*s)++, c_isdigit (c)))
- val = 10 * val + c - '0';
- break;
- }
- else
- break;
+ if (c_isdigit (c))
+ {
+ /* Read decimal number. */
+ val = c - '0';
+ while ((c = pbm_next_char (s, end)) != -1 && c_isdigit (c))
+ val = 10 * val + c - '0';
}
return val;
--
1.8.4.msysgit.0
--
Claudio--
Claudio
next prev parent reply other threads:[~2013-10-25 15:36 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1382714399.git.claudio.bley@gmail.com>
2013-10-25 15:35 ` [PATCH 1/5] w32: define new jpeglib-version var in order to load the correct DLL at runtime Claudio Bley
2013-10-27 16:25 ` Eli Zaretskii
2013-10-25 15:36 ` [PATCH 2/5] w32: add support for recent PNG library version >= 1.5 Claudio Bley
2013-10-27 16:28 ` Eli Zaretskii
2013-10-29 8:44 ` Claudio Bley
2013-10-29 16:50 ` Eli Zaretskii
2013-10-30 12:50 ` Claudio Bley
2013-11-01 9:21 ` Eli Zaretskii
2013-10-25 15:36 ` [PATCH 3/5] w32: add support for default library names for libtiff Claudio Bley
2013-10-27 16:30 ` Eli Zaretskii
2013-10-25 15:36 ` Claudio Bley [this message]
2013-10-25 15:37 ` [PATCH 2/5] w32: add support for recent PNG library version >= 1.5 Claudio Bley
2013-10-29 8:10 ` [PATCH 5/5] Fix file magic for pbm files with comments Claudio Bley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87vc0le50n.wl%claudio.bley@gmail.com \
--to=claudio.bley@gmail.com \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.