1 --- lemon.c 2004-04-24 14:59:13.000000000 +0200
2 +++ lemon.c 2004-07-27 15:31:40.000000000 +0200
3 @@ -1272,15 +1272,15 @@
5 /* Prepare a prefix to be prepended to every output line */
7 - sprintf(prefix,"%.*s:%d: ",PREFIXLIMIT-10,filename,lineno);
8 + snprintf(prefix,sizeof prefix,"%.*s:%d: ",PREFIXLIMIT-10,filename,lineno);
10 - sprintf(prefix,"%.*s: ",PREFIXLIMIT-10,filename);
11 + snprintf(prefix,sizeof prefix,"%.*s: ",PREFIXLIMIT-10,filename);
13 prefixsize = strlen(prefix);
14 availablewidth = LINEWIDTH - prefixsize;
16 /* Generate the error message */
17 - vsprintf(errmsg,format,ap);
18 + vsnprintf(errmsg,sizeof errmsg,format,ap);
20 errmsgsize = strlen(errmsg);
21 /* Remove trailing '\n's from the error message. */
25 if( cfp->dot==cfp->rp->nrhs ){
26 - sprintf(buf,"(%d)",cfp->rp->index);
27 + snprintf(buf,sizeof buf,"(%d)",cfp->rp->index);
28 fprintf(fp," %5s ",buf);
34 path = (char *)malloc( strlen(argv0) + strlen(name) + 2 );
35 - if( path ) sprintf(path,"%s/%s",argv0,name);
36 + if( path ) snprintf(path,sizeof path,"%s/%s",argv0,name);
39 extern char *getenv();
41 if( cp==0 ) cp = &pathlist[strlen(pathlist)];
44 - sprintf(path,"%s/%s",pathlist,name);
45 + snprintf(path,sizeof path,"%s/%s",pathlist,name);
47 if( c==0 ) pathlist = "";
48 else pathlist = &cp[1];
49 @@ -2814,14 +2814,16 @@
51 cp = strrchr(lemp->filename,'.');
53 - sprintf(buf,"%.*s.lt",(int)(cp-lemp->filename),lemp->filename);
54 + snprintf(buf,sizeof buf,"%.*s.lt",(int)(cp-lemp->filename),lemp->filename);
56 - sprintf(buf,"%s.lt",lemp->filename);
57 + snprintf(buf,sizeof buf,"%s.lt",lemp->filename);
59 if( access(buf,004)==0 ){
61 }else if( access(templatename,004)==0 ){
62 tpltname = templatename;
63 + }else if( access("/usr/share/lemon/lempar.c",004)==0 ){
64 + tpltname = "/usr/share/lemon/lempar.c";
66 tpltname = pathsearch(lemp->argv0,templatename,0);
70 in = fopen(tpltname,"r");
72 - fprintf(stderr,"Can't open the template file \"%s\".\n",templatename);
73 + fprintf(stderr,"Can't open the template file \"%s\".\n",tpltname);
78 /* Generate a table containing the symbolic name of every symbol
80 for(i=0; i<lemp->nsymbol; i++){
81 - sprintf(line,"\"%s\",",lemp->symbols[i]->name);
82 + snprintf(line,sizeof line,"\"%s\",",lemp->symbols[i]->name);
83 fprintf(out," %-15s",line);
84 if( (i&3)==3 ){ fprintf(out,"\n"); lineno++; }
87 in = file_open(lemp,".h","r");
89 for(i=1; i<lemp->nterminal && fgets(line,LINESIZE,in); i++){
90 - sprintf(pattern,"#define %s%-30s %2d\n",prefix,lemp->symbols[i]->name,i);
91 + snprintf(pattern,sizeof pattern,"#define %s%-30s %2d\n",prefix,lemp->symbols[i]->name,i);
92 if( strcmp(line,pattern) ) break;