X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=isl_stream.c;h=68f6e522495c409339dac6dbdcca2fb500436a63;hb=de51a9bc4da5dd3f1f9f57c2362da6f9752c44e0;hp=364389324a299ef310c43deadc6d8ea034d467d5;hpb=77119eba7479e6352d22a3ce991d48b6ad0884bc;p=platform%2Fupstream%2Fisl.git diff --git a/isl_stream.c b/isl_stream.c index 3643893..68f6e52 100644 --- a/isl_stream.c +++ b/isl_stream.c @@ -1,7 +1,7 @@ /* * Copyright 2008-2009 Katholieke Universiteit Leuven * - * Use of this software is governed by the GNU LGPLv2.1 license + * Use of this software is governed by the MIT license * * Written by Sven Verdoolaege, K.U.Leuven, Departement * Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium @@ -173,7 +173,10 @@ struct isl_stream* isl_stream_new_file(struct isl_ctx *ctx, FILE *file) struct isl_stream* isl_stream_new_str(struct isl_ctx *ctx, const char *str) { - struct isl_stream *s = isl_stream_new(ctx); + struct isl_stream *s; + if (!str) + return NULL; + s = isl_stream_new(ctx); if (!s) return NULL; s->str = str; @@ -354,7 +357,6 @@ static struct isl_token *next_token(struct isl_stream *s, int same_line) c == '%' || c == '?' || c == '^' || - c == '=' || c == '@' || c == '$' || c == ',' || @@ -456,6 +458,21 @@ static struct isl_token *next_token(struct isl_stream *s, int same_line) tok->u.s = strdup(s->buffer); return tok; } + if (c == '=') { + int c; + tok = isl_token_new(s->ctx, line, col, old_line != line); + if (!tok) + return NULL; + if ((c = isl_stream_getc(s)) == '=') { + tok->u.s = strdup("=="); + tok->type = ISL_TOKEN_EQ_EQ; + return tok; + } + if (c != -1) + isl_stream_ungetc(s, c); + tok->type = (enum isl_token_type) '='; + return tok; + } if (c == ':') { int c; tok = isl_token_new(s->ctx, line, col, old_line != line);