[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Lost] [PATCH] Fix für EOF in cdi.fs



Am Sonntag, 19. Oktober 2008 01:19:15 schrieb Alexander Siol:
> Hier mal noch der kleine Fix für die Behandlung von EOF's in cdi.fs unter
> LostIO. Nach Anwendung werden Dateilängen == 0 sowie CDI_FS_ERROR_EOF  als
> EOF beachtet.
> Ist übrigens relativ sicher für nen gescheites funktionieren von serial
> notwendig ;)
>
> Index: src/modules/cdi/lib/fs/lostio_if.c
> ===================================================================
> --- src/modules/cdi/lib/fs/lostio_if.c  (Revision 937)
> +++ src/modules/cdi/lib/fs/lostio_if.c  (Arbeitskopie)
> @@ -394,7 +394,8 @@
>      size = dh->res->file->read(dh, fh->pos, size, buf);
>
>      fh->pos += size;
> -    if(fh->pos >= fh->node->size) {
> +    if(fh->pos >= fh->node->size  || (size == 0) ||
> +         (dh->error == CDI_FS_ERROR_EOF)) {

Das mit size == 0 ist sehr wahrscheinlich falsch. Wenn die serielle Konsole 
gerade keine neuen Daten hat, ist die Verbindung deswegen noch lang nicht 
geschlossen. Zugegeben, für solche Verbindungen war cdi.fs auch nicht 
gedacht. Ein einfacheres Beispiel: Der Aufrufer übergibt bc = 0. Dann ist die 
Datei trotzdem nicht zu Ende.

>          fh->flags |= LOSTIO_FLAG_EOF;
>      } else {
>          fh->flags &= ~LOSTIO_FLAG_EOF;
>
> _______________________________________________
> Lost mailing list
> Lost@xxxxxxxxxx
> http://list.tyndur.org/mailman/listinfo/lost