[TiLUG] problemi con gcc 4.0.0.1
__vroby__@libero.it
vroby.mail@gmail.com
Gio 10 Maggio 2007 18:54:57 CEST
Marco Cabizza ha scritto:
> Il giorno gio, 10/05/2007 alle 17.47 +0200, vroby ha scritto:
>
>> risono qui a rompere :-)
>>
>
> Qualunque problema sia, l'hai testato solo su una versione di gcc 4.0 ?
> A quanto ho notato la 4.0 in sé ha molte "varietà" che sputano fuori
> warning molto imprevedibili a volte. Non so poi.
>
> In ogni caso che intendi con "comandi avanzati di string" ?
>
> Ciao
> ~marco
>
>
appendo il sorgente:
il problema sembra essere in memset
ho appena provato a compilare (sempre su feisty) con il gcc 3.3 ma il
problema persiste
il vecchio binario compilato in mdk funge bene e il codice compila anche
su windows con mingw
dopo cena provero anche con la slax
//________________________________________________________________________________________________________________________________________
/*
this was my very old rutines for input used in 1995 on borland tc
turbovision replacement project adapted
on SDLengine
*/
void _input(char *instring,int x, int y,int displen)
{
#define k_delete 127
#define k_up 273
#define k_down 274
#define k_right 275
#define k_left 276
#define k_insert 277
#define k_home 278
#define k_end 279
#define k_pageup 280
#define k_pagedown 281
int i,n;
int p,p1,pdisp;
char provstring[255];
char dispstring[255];
int px;
p=0;
pdisp=0;
strcpy(provstring,instring);
p=strlen(provstring);
printf("p=%d \n",p);//debug!!!
if ((p-pdisp)>displen)pdisp=p-displen;
if ((p-pdisp)<0)pdisp=p;
strncpy(dispstring,provstring+pdisp,displen);
memset(dispstring+displen,0,1);
locate(x,y);fprints(dispstring);
do{
while (inkey()!=0);
n=0;
while(n==0){
px=(p-pdisp);//*xdf;
locate(x+px,y);
n=inkey();
if (key(k_left)){
n=0;
if(p>0){
p--;
break;
}
while(key(k_left));
} //cleft
if (key(k_right)){
n=0;
if(p<strlen(provstring)){
p++;
}
break;
while(key(k_right));
} //crigth
if (key(k_delete)){
n=0;
if(p<strlen(provstring))memcpy(provstring+p,provstring+p+1,strlen(provstring)-p);
while(key(k_delete));
break;
} //cancel
if (key(k_home)){p=0;n=0;break;}//inizio
if (key(k_end)){p=strlen(provstring);n=0;break;}//fine
}
if (n==13)break;
if (n==8){
n=0;
if (p>0){
memcpy(provstring+p-1,provstring+p,strlen(provstring)-p+1);
p--;
}
}//backdel
if (n==127){
if(p<strlen(provstring))memcpy(provstring+p,provstring+p+1,strlen(provstring)-p);
n=0;
}//delete
if (n!=0 && strlen(provstring)<254){
for(p1=strlen(provstring);p1>=p;p1--){memcpy(provstring+p1+1,provstring+p1,1);}
memset(&provstring+p,(char)n,1);//??
printf("n=%c \n",n);//debug!!!
memset(provstring+p+1,0,1);//???
p++;
printf("p=%d - len=%d \n",p,strlen(provstring));//debug!!!
}
if ((p-pdisp)>displen)pdisp=p-displen;
if ((p-pdisp)<0)pdisp=p;
printf("provstring=%s\n",provstring);//debug!!!
strncpy(dispstring,provstring+pdisp,displen);
memset(dispstring+displen,0,1);
locate(x+strlen(dispstring),y);
if(n==0)fprints(" ");
if (n!=0 && stx[c_screen]==0 &&
sty[c_screen]+2>(screenheight()/(PRINT_SIZE)))y--;
i=0;
locate(x,y);
//printf("dispstring=%s\n",dispstring);//debug!!!
fprints(dispstring);
//screenswap();
}
while (n !=13);
strcpy (instring,provstring);
}
//_______________________________________________________________________________________________________________________
grazie
__vroby__
Maggiori informazioni sulla lista
TiLUG