1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| int litligne(c,ligne)
int c;
t_buffer *ligne;
t_buffer monbuf; //ou t_buffer monbuf = NULL; ou t_buffer monbuf = NULL_BUFFER;
{
ligne->lg = 0;
for (;;)
{
int i;
while (connexion[c].nbbuf)
{
/* Recherche l'eventuel saut de ligne */
for (i = 0; i < ((t_buffer*)connexion[c].buf)->lg; i++)
{
if (((t_buffer*)connexion[c].buf)->buf[i] == 0x0A)
{
i++;
break;
}
}
/* Copier un bloc complet ou partiel ? */
if (i == ((t_buffer*)connexion[c].buf)->lg)
{
Add(&ligne->buf,&ligne->lg,((t_buffer*)connexion[c].buf)->buf,i);
free(((t_buffer*)connexion[c].buf)->buf);
Remove(&connexion[c].buf,&connexion[c].nbbuf,sizeof(t_buffer));
TRACE0("Copie Bloc complet \n");
}
else
{
TRACE0("Copie Bloc partiel \n");
monbuf.buf = Strcat(monbuf.buf,ligne->buf);
Add(&ligne->buf,&ligne->lg,((t_buffer*)connexion[c].buf)->buf,i);
Remove(&((t_buffer*)connexion[c].buf)->buf,&((t_buffer*)connexion[c].buf)->lg,i);
}
/* Sort si ligne trouvee */
if (ligne && ligne->buf[ligne->lg-1] == 0x0A)
{
char tmp = 0;
tmp = 0;
Add(&ligne->buf,&ligne->lg,&tmp,1);
ligne->lg--; /* On ne comptabilise pas le 0 terminateur */
if ( strstr (ligne->buf,"Argument --") != NULL )
{
ligne->buf[ligne->lg-2] = ' ';
ligne->buf[ligne->lg-3] = ' ';
ligne->lg = 0;
TRACE2("litligne test -- (%d) => %s.... \n",c,ligne->buf);
return 1;
}
else
{
TRACE2("litligne(%d) => %s.... \n",c,ligne->buf);/**/
TRACE1("MON BUF %c", monbuf.buf);
return 1;
}
}
}
/* Attend la suite */
if (!sendrcv())
{
ligne->lg = 0;
return 0;
}
}
} |
Partager