diff --git a/includes/misc.h b/includes/misc.h index 7efb3f14d..4094b3931 100644 --- a/includes/misc.h +++ b/includes/misc.h @@ -59,6 +59,8 @@ void load_presets(void); void save_string(FILE *f, char *str); +int sregexp(const char *str, char *pattern); + int load_string(FILE *f, char *str, int max); void strcaturl(char *dst, char *src); diff --git a/src/graphics.c b/src/graphics.c index b18a65929..786bdca2b 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -2885,10 +2885,10 @@ void draw_parts(pixel *vid) void render_signs(pixel *vid_buf) { int i, j, x, y, w, h, dx, dy,mx,my,b=1,bq; - char buff[30]; //Buffer for (i=0; i=signx && x<=signx+signw && y>=signy && y<=signy+signh) + { + char buff[256]; + int sldr; + + memset(buff, 0, sizeof(buff)); + + for(sldr=3; signs[signi].text[sldr] != '|'; sldr++) + buff[sldr-3] = signs[signi].text[sldr]; + + char buff2[sldr-2]; //TODO: Fix this for Visual Studio + memset(buff2, 0, sizeof(buff2)); + memcpy(&buff2, &buff, sldr-3); + open_ui(vid_buf, buff2, 0); + } + } + } + if (c==WL_SIGN+100) { if (!bq) diff --git a/src/misc.c b/src/misc.c index d5b57c560..702ff0378 100644 --- a/src/misc.c +++ b/src/misc.c @@ -1,6 +1,8 @@ #include #include #include +#include +#include #include "misc.h" #include "defines.h" #include "interface.h" @@ -116,6 +118,17 @@ void save_presets(int do_update) fclose(f); } +int sregexp(const char *str, char *pattern) +{ + int result; + regex_t patternc; + if(regcomp(&patternc, pattern, 0)!=0) + return 1; + result = regexec(&patternc, str, 0, NULL, 0); + regfree(&patternc); + return result; +} + void load_presets(void) { FILE *f=fopen("powder.def", "rb");