diff options
author | Brian Paul <[email protected]> | 2003-02-23 05:23:53 +0000 |
---|---|---|
committer | Brian Paul <[email protected]> | 2003-02-23 05:23:53 +0000 |
commit | 25fea6be0a210199478da48dc7cb65a0f0f8a103 (patch) | |
tree | ea5626119f92e105063e033503e58e5a502b169e /src/mesa/main/nvprogram.c | |
parent | 736d10c2741397ca43ff9c41295a81be1d358d23 (diff) |
added _mesa_find_line_column()
Diffstat (limited to 'src/mesa/main/nvprogram.c')
-rw-r--r-- | src/mesa/main/nvprogram.c | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/src/mesa/main/nvprogram.c b/src/mesa/main/nvprogram.c index b6960c0df8a..207d705a184 100644 --- a/src/mesa/main/nvprogram.c +++ b/src/mesa/main/nvprogram.c @@ -1,4 +1,4 @@ -/* $Id: nvprogram.c,v 1.3 2003/02/16 23:07:36 brianp Exp $ */ +/* $Id: nvprogram.c,v 1.4 2003/02/23 05:23:53 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -141,6 +141,41 @@ _mesa_set_program_error(GLcontext *ctx, GLint pos, const char *string) } +const char * +_mesa_find_line_column(const char *string, const char *pos, + GLint *line, GLint *col) +{ + const char *lineStart = string; + const char *p = string; + char *s; + int len; + + *line = 1; + + while (p != pos) { + if (*p == '\n') { + (*line)++; + lineStart = p + 1; + } + p++; + } + + *col = (pos - lineStart) + 1; + + /* return copy of this line */ + while (*p != 0 && *p != '\n') + p++; + len = p - lineStart; + s = (char *) _mesa_malloc(len + 1); + _mesa_memcpy(s, lineStart, len); + s[len] = 0; + + return s; +} + + + + /** * Delete a program and remove it from the hash table, ignoring the * reference count. |