diff --git a/Fltk/Message.cpp b/Fltk/Message.cpp index a785a5d328c5e2bce6c9921e8c89b5bd8377cfe5..3d0257afe81656ffa88de4eac8106790f38f8669 100644 --- a/Fltk/Message.cpp +++ b/Fltk/Message.cpp @@ -1,4 +1,4 @@ -// $Id: Message.cpp,v 1.38 2003-03-21 00:52:37 geuzaine Exp $ +// $Id: Message.cpp,v 1.39 2003-05-22 19:25:58 geuzaine Exp $ // // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle // @@ -120,7 +120,9 @@ void Msg(int level, char *fmt, ...) } // *INDENT-ON* - static char buff1[1024], buff2[1024], buff[4][1024]; +#define BUFFSIZE 1024 + + static char buff1[BUFFSIZE], buff2[BUFFSIZE], buff[4][BUFFSIZE]; if(CTX.verbosity >= verb) { @@ -136,7 +138,7 @@ void Msg(int level, char *fmt, ...) va_start(args, fmt); if(window >= 0) { - vsprintf(buff[window], fmt, args); + vsnprintf(buff[window], BUFFSIZE, fmt, args); if(window <= 2) WID->set_status(buff[window], window); if(log && strlen(buff[window])) @@ -145,9 +147,9 @@ void Msg(int level, char *fmt, ...) else { strcpy(buff1, "@C1"); if(str) - strcat(buff1, str); - vsprintf(buff2, fmt, args); - strcat(buff1, buff2); + strncat(buff1, str, BUFFSIZE-4); + vsnprintf(buff2, BUFFSIZE, fmt, args); + strncat(buff1, buff2, BUFFSIZE-strlen(buff1)); if(CTX.terminal) fprintf(stderr, "%s\n", &buff1[3]); if(WID) { diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp index ac97528f8a36d32621b02582b6dbcfebedfc4fba..dfcff7b6dc843c311e0b611016888bcdb96211b5 100644 --- a/Geo/Geo.cpp +++ b/Geo/Geo.cpp @@ -1,4 +1,4 @@ -// $Id: Geo.cpp,v 1.32 2003-03-21 00:52:38 geuzaine Exp $ +// $Id: Geo.cpp,v 1.33 2003-05-22 19:25:58 geuzaine Exp $ // // Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle // @@ -29,7 +29,7 @@ extern Context_T CTX; -#define BUFFSIZE 32000 +#define BUFFSIZE 128000 // This is truly horrible :-) @@ -107,7 +107,7 @@ void delet(int p1, char *fich, char *what) { char text[BUFFSIZE]; - sprintf(text, "Delete {\n %s{%d};\n}", what, p1); + snprintf(text, BUFFSIZE, "Delete {\n %s{%d};\n}", what, p1); add_infile(text, fich); } @@ -116,16 +116,16 @@ void add_trsfsurf(int N, int *l, char *fich) char text[BUFFSIZE]; char text2[BUFFSIZE]; int i; - sprintf(text, "Transfinite Surface {%d} = {", l[0]); + snprintf(text, BUFFSIZE, "Transfinite Surface {%d} = {", l[0]); for(i = 1; i < N; i++) { if(i == 1) - sprintf(text2, "%d", l[i]); + snprintf(text2, BUFFSIZE, "%d", l[i]); else - sprintf(text2, ",%d", l[i]); - strcat(text, text2); + snprintf(text2, BUFFSIZE, ",%d", l[i]); + strncat(text, text2, BUFFSIZE-strlen(text)); } - sprintf(text2, "};"); - strcat(text, text2); + snprintf(text2, BUFFSIZE, "};"); + strncat(text, text2, BUFFSIZE-strlen(text)); add_infile(text, fich); } @@ -134,16 +134,16 @@ void add_ellipticsurf(int N, int *l, char *fich) char text[BUFFSIZE]; char text2[BUFFSIZE]; int i; - sprintf(text, "Elliptic Surface {%d} = {", l[0]); + snprintf(text, BUFFSIZE, "Elliptic Surface {%d} = {", l[0]); for(i = 1; i < N; i++) { if(i == 1) - sprintf(text2, "%d", l[i]); + snprintf(text2, BUFFSIZE, "%d", l[i]); else - sprintf(text2, ",%d", l[i]); - strcat(text, text2); + snprintf(text2, BUFFSIZE, ",%d", l[i]); + strncat(text, text2, BUFFSIZE-strlen(text)); } - sprintf(text2, "};"); - strcat(text, text2); + snprintf(text2, BUFFSIZE, "};"); + strncat(text, text2, BUFFSIZE-strlen(text)); add_infile(text, fich); } @@ -152,16 +152,16 @@ void add_charlength(int N, int *l, char *fich) char text[BUFFSIZE]; char text2[BUFFSIZE]; int i; - sprintf(text, "Characteristic Length {"); + snprintf(text, BUFFSIZE, "Characteristic Length {"); for(i = 0; i < N; i++) { if(i == 0) - sprintf(text2, "%d", l[i]); + snprintf(text2, BUFFSIZE, "%d", l[i]); else - sprintf(text2, ",%d", l[i]); - strcat(text, text2); + snprintf(text2, BUFFSIZE, ",%d", l[i]); + strncat(text, text2, BUFFSIZE-strlen(text)); } - sprintf(text2, "} = %s;", char_length_text); - strcat(text, text2); + snprintf(text2, BUFFSIZE, "} = %s;", char_length_text); + strncat(text, text2, BUFFSIZE-strlen(text)); add_infile(text, fich); } @@ -170,16 +170,16 @@ void add_recosurf(int N, int *l, char *fich) char text[BUFFSIZE]; char text2[BUFFSIZE]; int i; - sprintf(text, "Recombine Surface {"); + snprintf(text, BUFFSIZE, "Recombine Surface {"); for(i = 0; i < N; i++) { if(i == 0) - sprintf(text2, "%d", l[i]); + snprintf(text2, BUFFSIZE, "%d", l[i]); else - sprintf(text2, ",%d", l[i]); - strcat(text, text2); + snprintf(text2, BUFFSIZE, ",%d", l[i]); + strncat(text, text2, BUFFSIZE-strlen(text)); } - sprintf(text2, "};"); - strcat(text, text2); + snprintf(text2, BUFFSIZE, "};"); + strncat(text, text2, BUFFSIZE-strlen(text)); add_infile(text, fich); } @@ -189,20 +189,20 @@ void add_trsfline(int N, int *l, char *fich) char text[BUFFSIZE]; char text2[BUFFSIZE]; int i; - sprintf(text, "Transfinite Line {"); + snprintf(text, BUFFSIZE, "Transfinite Line {"); for(i = 0; i < N; i++) { if(!i) - sprintf(text2, "%d", l[i]); + snprintf(text2, BUFFSIZE, "%d", l[i]); else - sprintf(text2, ",%d", l[i]); - strcat(text, text2); + snprintf(text2, BUFFSIZE, ",%d", l[i]); + strncat(text, text2, BUFFSIZE-strlen(text)); } if(strlen(trsf_typearg_text)) - sprintf(text2, "} = %s Using %s %s;", trsf_pts_text, trsf_type_text, - trsf_typearg_text); + snprintf(text2, BUFFSIZE, "} = %s Using %s %s;", trsf_pts_text, + trsf_type_text, trsf_typearg_text); else - sprintf(text2, "} = %s;", trsf_pts_text); - strcat(text, text2); + snprintf(text2, BUFFSIZE, "} = %s;", trsf_pts_text); + strncat(text, text2, BUFFSIZE-strlen(text)); add_infile(text, fich); } @@ -210,7 +210,7 @@ void add_trsfline(int N, int *l, char *fich) void add_param(char *par, char *value, char *fich) { char text[BUFFSIZE]; - sprintf(text, "%s = %s;", par, value); + snprintf(text, BUFFSIZE, "%s = %s;", par, value); add_infile(text, fich); } @@ -220,8 +220,8 @@ void add_point(char *fich) int ip; ip = NEWPOINT(); - sprintf(text, "Point(%d) = {%s,%s,%s,%s};", ip, x_text, y_text, z_text, - l_text); + snprintf(text, BUFFSIZE, "Point(%d) = {%s,%s,%s,%s};", ip, x_text, y_text, + z_text, l_text); add_infile(text, fich); } @@ -229,16 +229,16 @@ void add_attractor(char *fich, int ip, int typ) { char text[BUFFSIZE]; if(typ == 0) { - sprintf(text, "Attractor Point {%d} = {%s,%s,%s} = ;", - ip, attrx_text, attry_text, attrdec_text); + snprintf(text, BUFFSIZE, "Attractor Point {%d} = {%s,%s,%s} = ;", + ip, attrx_text, attry_text, attrdec_text); } else if(typ == 1) { - sprintf(text, "Attractor Line {%d} = {%s,%s,%s};", - ip, attrx_text, attry_text, attrdec_text); + snprintf(text, BUFFSIZE, "Attractor Line {%d} = {%s,%s,%s};", + ip, attrx_text, attry_text, attrdec_text); } else if(typ == 2) { - sprintf(text, "Attractor Surface {%d} = {%s,%s,%s};", - ip, attrx_text, attry_text, attrdec_text); + snprintf(text, BUFFSIZE, "Attractor Surface {%d} = {%s,%s,%s};", + ip, attrx_text, attry_text, attrdec_text); } add_infile(text, fich); } @@ -257,7 +257,7 @@ void add_line(int p1, int p2, char *fich) } List_Delete(list); - sprintf(text, "Line(%d) = {%d,%d};", NEWLINE(), p1, p2); + snprintf(text, BUFFSIZE, "Line(%d) = {%d,%d};", NEWLINE(), p1, p2); add_infile(text, fich); } @@ -265,7 +265,7 @@ void add_circ(int p1, int p2, int p3, char *fich) { char text[BUFFSIZE]; - sprintf(text, "Circle(%d) = {%d,%d,%d};", NEWLINE(), p1, p2, p3); + snprintf(text, BUFFSIZE, "Circle(%d) = {%d,%d,%d};", NEWLINE(), p1, p2, p3); add_infile(text, fich); } @@ -273,7 +273,8 @@ void add_ell(int p1, int p2, int p3, int p4, char *fich) { char text[BUFFSIZE]; - sprintf(text, "Ellipse(%d) = {%d,%d,%d,%d};", NEWLINE(), p1, p2, p3, p4); + snprintf(text, BUFFSIZE, "Ellipse(%d) = {%d,%d,%d,%d};", NEWLINE(), p1, p2, + p3, p4); add_infile(text, fich); } @@ -283,13 +284,13 @@ void add_spline(int N, int *p, char *fich) char text2[BUFFSIZE]; int i; - sprintf(text, "CatmullRom(%d) = {", NEWLINE()); + snprintf(text, BUFFSIZE, "CatmullRom(%d) = {", NEWLINE()); for(i = 0; i < N; i++) { if(i != N - 1) - sprintf(text2, "%d,", p[i]); + snprintf(text2, BUFFSIZE, "%d,", p[i]); else - sprintf(text2, "%d};", p[i]); - strcat(text, text2); + snprintf(text2, BUFFSIZE, "%d};", p[i]); + strncat(text, text2, BUFFSIZE-strlen(text)); } add_infile(text, fich); } @@ -300,13 +301,13 @@ void add_bezier(int N, int *p, char *fich) char text2[BUFFSIZE]; int i; - sprintf(text, "Bezier(%d) = {", NEWLINE()); + snprintf(text, BUFFSIZE, "Bezier(%d) = {", NEWLINE()); for(i = 0; i < N; i++) { if(i != N - 1) - sprintf(text2, "%d,", p[i]); + snprintf(text2, BUFFSIZE, "%d,", p[i]); else - sprintf(text2, "%d};", p[i]); - strcat(text, text2); + snprintf(text2, BUFFSIZE, "%d};", p[i]); + strncat(text, text2, BUFFSIZE-strlen(text)); } add_infile(text, fich); } @@ -318,13 +319,13 @@ void add_bspline(int N, int *p, char *fich) char text2[BUFFSIZE]; int i; - sprintf(text, "BSpline(%d) = {", NEWLINE()); + snprintf(text, BUFFSIZE, "BSpline(%d) = {", NEWLINE()); for(i = 0; i < N; i++) { if(i != N - 1) - sprintf(text2, "%d,", p[i]); + snprintf(text2, BUFFSIZE, "%d,", p[i]); else - sprintf(text2, "%d};", p[i]); - strcat(text, text2); + snprintf(text2, BUFFSIZE, "%d};", p[i]); + strncat(text, text2, BUFFSIZE-strlen(text)); } add_infile(text, fich); } @@ -345,13 +346,13 @@ void add_multline(int N, int *p, char *fich) } List_Delete(list); - sprintf(text, "Line(%d) = {", NEWLINE()); + snprintf(text, BUFFSIZE, "Line(%d) = {", NEWLINE()); for(i = 0; i < N; i++) { if(i != N - 1) - sprintf(text2, "%d,", p[i]); + snprintf(text2, BUFFSIZE, "%d,", p[i]); else - sprintf(text2, "%d};", p[i]); - strcat(text, text2); + snprintf(text2, BUFFSIZE, "%d};", p[i]); + strncat(text, text2, BUFFSIZE-strlen(text)); } add_infile(text, fich); } @@ -366,14 +367,14 @@ void add_loop(List_T * list, char *fich, int *numloop) return; *numloop = NEWLINELOOP(); - sprintf(text, "Line Loop(%d) = {", *numloop); + snprintf(text, BUFFSIZE, "Line Loop(%d) = {", *numloop); for(i = 0; i < List_Nbr(list); i++) { List_Read(list, i, &seg); if(i != List_Nbr(list) - 1) - sprintf(text2, "%d,", seg); + snprintf(text2, BUFFSIZE, "%d,", seg); else - sprintf(text2, "%d};", seg); - strcat(text, text2); + snprintf(text2, BUFFSIZE, "%d};", seg); + strncat(text, text2, BUFFSIZE-strlen(text)); } add_infile(text, fich); } @@ -386,21 +387,22 @@ void add_surf(List_T * list, char *fich, int support, int typ) int i, seg; if(typ == 1) { - sprintf(text, "Ruled Surface(%d) = {", NEWSURFACE()); + snprintf(text, BUFFSIZE, "Ruled Surface(%d) = {", NEWSURFACE()); } else if(typ == 2) { - sprintf(text, "Plane Surface(%d) = {", NEWSURFACE()); + snprintf(text, BUFFSIZE, "Plane Surface(%d) = {", NEWSURFACE()); } else { - sprintf(text, "Trimmed Surface(%d) = %d {", NEWSURFACE(), support); + snprintf(text, BUFFSIZE, "Trimmed Surface(%d) = %d {", NEWSURFACE(), + support); } for(i = 0; i < List_Nbr(list); i++) { List_Read(list, i, &seg); if(i != List_Nbr(list) - 1) - sprintf(text2, "%d,", seg); + snprintf(text2, BUFFSIZE, "%d,", seg); else - sprintf(text2, "%d};", seg); - strcat(text, text2); + snprintf(text2, BUFFSIZE, "%d};", seg); + strncat(text, text2, BUFFSIZE-strlen(text)); } add_infile(text, fich); } @@ -415,14 +417,14 @@ void add_vol(List_T * list, char *fich, int *numvol) return; *numvol = NEWSURFACELOOP(); - sprintf(text, "Surface Loop(%d) = {", *numvol); + snprintf(text, BUFFSIZE, "Surface Loop(%d) = {", *numvol); for(i = 0; i < List_Nbr(list); i++) { List_Read(list, i, &seg); if(i != List_Nbr(list) - 1) - sprintf(text2, "%d,", seg); + snprintf(text2, BUFFSIZE, "%d,", seg); else - sprintf(text2, "%d};", seg); - strcat(text, text2); + snprintf(text2, BUFFSIZE, "%d};", seg); + strncat(text, text2, BUFFSIZE-strlen(text)); } add_infile(text, fich); } @@ -433,14 +435,14 @@ void add_multvol(List_T * list, char *fich) char text2[BUFFSIZE]; int i, seg; - sprintf(text, "Volume(%d) = {", NEWVOLUME()); + snprintf(text, BUFFSIZE, "Volume(%d) = {", NEWVOLUME()); for(i = 0; i < List_Nbr(list); i++) { List_Read(list, i, &seg); if(i != List_Nbr(list) - 1) - sprintf(text2, "%d,", seg); + snprintf(text2, BUFFSIZE, "%d,", seg); else - sprintf(text2, "%d};", seg); - strcat(text, text2); + snprintf(text2, BUFFSIZE, "%d};", seg); + strncat(text, text2, BUFFSIZE-strlen(text)); } add_infile(text, fich); } @@ -450,16 +452,16 @@ void add_trsfvol(int N, int *l, char *fich) char text[BUFFSIZE], text2[BUFFSIZE]; int i; - sprintf(text, "Transfinite Volume{%s} = {", trsf_vol_text); + snprintf(text, BUFFSIZE, "Transfinite Volume{%s} = {", trsf_vol_text); for(i = 0; i < N; i++) { if(i == 0) - sprintf(text2, "%d", l[i]); + snprintf(text2, BUFFSIZE, "%d", l[i]); else - sprintf(text2, ",%d", l[i]); - strcat(text, text2); + snprintf(text2, BUFFSIZE, ",%d", l[i]); + strncat(text, text2, BUFFSIZE-strlen(text)); } - sprintf(text2, "};"); - strcat(text, text2); + snprintf(text2, BUFFSIZE, "};"); + strncat(text, text2, BUFFSIZE-strlen(text)); add_infile(text, fich); } @@ -472,26 +474,26 @@ void add_physical(List_T * list, char *fich, int type, int *num) *num = NEWPHYSICAL(); switch (type) { case ENT_POINT: - sprintf(text, "Physical Point(%d) = {", *num); + snprintf(text, BUFFSIZE, "Physical Point(%d) = {", *num); break; case ENT_LINE: - sprintf(text, "Physical Line(%d) = {", *num); + snprintf(text, BUFFSIZE, "Physical Line(%d) = {", *num); break; case ENT_SURFACE: - sprintf(text, "Physical Surface(%d) = {", *num); + snprintf(text, BUFFSIZE, "Physical Surface(%d) = {", *num); break; case ENT_VOLUME: - sprintf(text, "Physical Volume(%d) = {", *num); + snprintf(text, BUFFSIZE, "Physical Volume(%d) = {", *num); break; } for(i = 0; i < List_Nbr(list); i++) { List_Read(list, i, &elementary_entity); if(i != List_Nbr(list) - 1) - sprintf(text2, "%d,", elementary_entity); + snprintf(text2, BUFFSIZE, "%d,", elementary_entity); else - sprintf(text2, "%d};", elementary_entity); - strcat(text, text2); + snprintf(text2, BUFFSIZE, "%d};", elementary_entity); + strncat(text, text2, BUFFSIZE-strlen(text)); } add_infile(text, fich); } @@ -501,11 +503,12 @@ void translate(int add, int s, char *fich, char *what) char text[BUFFSIZE]; if(add) - sprintf(text, "Translate {%s,%s,%s} {\n Duplicata { %s{%d}; }\n}", - tx_text, ty_text, tz_text, what, s); + snprintf(text, BUFFSIZE, + "Translate {%s,%s,%s} {\n Duplicata { %s{%d}; }\n}", tx_text, + ty_text, tz_text, what, s); else - sprintf(text, "Translate {%s,%s,%s} {\n %s{%d};\n}", - tx_text, ty_text, tz_text, what, s); + snprintf(text, BUFFSIZE, "Translate {%s,%s,%s} {\n %s{%d};\n}", + tx_text, ty_text, tz_text, what, s); add_infile(text, fich); } @@ -514,14 +517,15 @@ void rotate(int add, int s, char *fich, char *quoi) char text[BUFFSIZE]; if(add) - sprintf(text, - "Rotate { {%s,%s,%s},{%s,%s,%s},%s } {\n Duplicata { %s{%d}; }\n}", - ax_text, ay_text, az_text, px_text, py_text, pz_text, angle_text, - quoi, s); + snprintf(text, BUFFSIZE, + "Rotate { {%s,%s,%s},{%s,%s,%s},%s } {\n Duplicata { %s{%d}; }\n}", + ax_text, ay_text, az_text, px_text, py_text, pz_text, angle_text, + quoi, s); else - sprintf(text, "Rotate { {%s,%s,%s},{%s,%s,%s},%s } {\n %s{%d};\n }", - ax_text, ay_text, az_text, px_text, py_text, pz_text, angle_text, - quoi, s); + snprintf(text, BUFFSIZE, + "Rotate { {%s,%s,%s},{%s,%s,%s},%s } {\n %s{%d};\n }", + ax_text, ay_text, az_text, px_text, py_text, pz_text, angle_text, + quoi, s); add_infile(text, fich); } @@ -530,11 +534,12 @@ void dilate(int add, int s, char *fich, char *quoi) char text[BUFFSIZE]; if(add) - sprintf(text, "Dilate { {%s,%s,%s},%s } {\n Duplicata { %s{%d}; }\n}", - dx_text, dy_text, dz_text, df_text, quoi, s); + snprintf(text, BUFFSIZE, + "Dilate { {%s,%s,%s},%s } {\n Duplicata { %s{%d}; }\n}", + dx_text, dy_text, dz_text, df_text, quoi, s); else - sprintf(text, "Dilate { {%s,%s,%s},%s } {\n %s{%d};\n }", - dx_text, dy_text, dz_text, df_text, quoi, s); + snprintf(text, BUFFSIZE, "Dilate { {%s,%s,%s},%s } {\n %s{%d};\n }", + dx_text, dy_text, dz_text, df_text, quoi, s); add_infile(text, fich); } @@ -543,11 +548,12 @@ void symmetry(int add, int s, char *fich, char *quoi) char text[BUFFSIZE]; if(add) - sprintf(text, "Symmetry { %s,%s,%s,%s } {\n Duplicata { %s{%d}; }\n}", - sa_text, sb_text, sc_text, sd_text, quoi, s); + snprintf(text, BUFFSIZE, + "Symmetry { %s,%s,%s,%s } {\n Duplicata { %s{%d}; }\n}", + sa_text, sb_text, sc_text, sd_text, quoi, s); else - sprintf(text, "Symmetry { %s,%s,%s,%s } {\n %s{%d};\n }", - sa_text, sb_text, sc_text, sd_text, quoi, s); + snprintf(text, BUFFSIZE, "Symmetry { %s,%s,%s,%s } {\n %s{%d};\n }", + sa_text, sb_text, sc_text, sd_text, quoi, s); add_infile(text, fich); } @@ -556,8 +562,8 @@ void extrude(int s, char *fich, char *what) { char text[BUFFSIZE]; - sprintf(text, "Extrude %s {%d, {%s,%s,%s}};", what, s, tx_text, ty_text, - tz_text); + snprintf(text, BUFFSIZE, "Extrude %s {%d, {%s,%s,%s}};", what, s, tx_text, + ty_text, tz_text); add_infile(text, fich); } @@ -565,7 +571,8 @@ void protude(int s, char *fich, char *what) { char text[BUFFSIZE]; - sprintf(text, "Extrude %s {%d, {%s,%s,%s}, {%s,%s,%s}, %s};", what, s, - ax_text, ay_text, az_text, px_text, py_text, pz_text, angle_text); + snprintf(text, BUFFSIZE, "Extrude %s {%d, {%s,%s,%s}, {%s,%s,%s}, %s};", + what, s, ax_text, ay_text, az_text, px_text, py_text, pz_text, + angle_text); add_infile(text, fich); } diff --git a/Makefile b/Makefile index 63f4e9688ef9dad3028a89c9f60a8b22d4096e4f..962a55a3e0bc17fabb5761fbc774d9d0babbf1a7 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.287 2003-05-16 02:54:31 geuzaine Exp $ +# $Id: Makefile,v 1.288 2003-05-22 19:25:58 geuzaine Exp $ # # Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle # @@ -40,7 +40,7 @@ compile: variables initialtag @for i in ${GMSH_DIRS}; do (cd $$i && ${MAKE}); done link: variables - ${LINKER} -o bin/gmsh ${GMSH_LIBS} + ${LINKER} ${OPTIM} -o bin/gmsh ${GMSH_LIBS} ${POSTBUILD} install: variables