Dnia 2012-06-13, śro o godzinie 14:40 +0200, Libgadu commit list pisze:
>               for (i = 0; i < 9; i++) {
>                       unsigned int left = 1048576;
> +                     off_t current_pos = (len - 1048576) / 9 * i;
>  
> -                     if (lseek(fd, (len - 1048576) / 9 * i, SEEK_SET) == 
> (off_t) - 1)
> -                             return -1;
> +                     if (lseek(fd, current_pos, SEEK_SET) == (off_t) - 1) {
> +                             res = -1;
> +                             break;
> +                     }
>  
>  #define MIN(a, b) (((a) < (b)) ? (a) : (b))
>                       while ((res = read(fd, buf, MIN(sizeof(buf), left))) > 
> 0 || (res == -1 && errno == EINTR)) {
>                               if (res != -1) {
>                                       SHA1_Update(&ctx, buf, res);
>  
> +                                     current_pos += res;
>                                       left -= res;
>                                       if (left == 0)
>                                               break;
> +                             } else {
> +                                     /* Dokumentacja read(2) mówi, że nie 
> wiadomo, co się dzieje z pozycją po błędzie. */
> +                                     if (lseek(fd, current_pos, SEEK_SET) == 
> (off_t) -1) {
> +                                             res = -1;
> +                                             break;
> +                                     }
>                               }
>                       }
>  #undef MIN

Nie lepiej by tutaj było zrobić pętlę do/while z lseek() na początku? Po
pierwsze, kod dotyczący lseek() występowałby tylko raz. Po drugie, nie
byłoby potrzebne makro MIN(), które na jakichś platformach i/lub
środowiskach może być już zdefiniowane, wystarczyłoby normalne
porównanie.

Pozdr,
Wojtek

_______________________________________________
libgadu-devel mailing list
libgadu-devel@lists.ziew.org
http://lists.ziew.org/mailman/listinfo/libgadu-devel

Reply via email to