Re: usbutils 0.82 release

From: Xiaofan Chen
Date: Fri May 08 2009 - 08:59:54 EST


On Fri, May 8, 2009 at 8:24 PM, Xiaofan Chen <xiaofanc@xxxxxxxxx> wrote:
> I still do not know the exact reason but it seems to be related to the
> generated config.h file or zlib.
>
> If I use the file config.h from 0.73, there will be no warning. It is
> longer than the one generated in 0.82 or git.
>
> And if I undefine HAVE_LIBZ in names.c, there will be no warning.
>
> The warning is not only in gcc 4.4.0, but also in gcc 4.3.3.
>

I think the problem is in zlib. I got the warning under Ubuntu 9.04
(gcc 4.3.2 and zlib 1.2.3.3) and Arch Linux (gcc 4.4.0 and zlib 1.2.3.3).

zlib 1.2.3.3 in Ubuntu 9.04 and Arch Linux

typedef voidp gzFile;

/*
ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));

Opens a gzip (.gz) file for reading or writing. The mode parameter
is as in fopen ("rb" or "wb") but can also include a compression level
("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
Huffman only compression as in "wb1h", or 'R' for run-length encoding
as in "wb1R". (See the description of deflateInit2 for more information
about the strategy parameter.)

gzopen can be used to read a file which is not in gzip format; in this
case gzread will directly read from the file without decompression.

gzopen returns NULL if the file could not be opened or if there was
insufficient memory to allocate the (de)compression state; errno
can be checked to distinguish the two cases (if errno is zero, the
zlib error is Z_MEM_ERROR). */

ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
/*
gzdopen() associates a gzFile with the file descriptor fd. File
descriptors are obtained from calls like open, dup, creat, pipe or
fileno (in the file has been previously opened with fopen).
The mode parameter is as in gzopen.
The next call of gzclose on the returned gzFile will also close the
file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
gzdopen returns NULL if there was insufficient memory to allocate
the (de)compression state.
*/

I got no warning under Fedora 10 (gcc 4.3.3 and zlib 1.2.3).

zlib 1.2.3 in Fedora 10. But this seems strange. It defines two version
of gzopen. The first one seems to be used so that no warning is caused.

typedef voidp gzFile;

ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
/*
Opens a gzip (.gz) file for reading or writing. The mode parameter
is as in fopen ("rb" or "wb") but can also include a compression level
("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
Huffman only compression as in "wb1h", or 'R' for run-length encoding
as in "wb1R". (See the description of deflateInit2 for more information
about the strategy parameter.)

gzopen can be used to read a file which is not in gzip format; in this
case gzread will directly read from the file without decompression.

gzopen returns NULL if the file could not be opened or if there was
insufficient memory to allocate the (de)compression state; errno
can be checked to distinguish the two cases (if errno is zero, the
zlib error is Z_MEM_ERROR). */

ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
/*
gzdopen() associates a gzFile with the file descriptor fd. File
descriptors are obtained from calls like open, dup, creat, pipe or
fileno (in the file has been previously opened with fopen).
The mode parameter is as in gzopen.
The next call of gzclose on the returned gzFile will also close the
file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
gzdopen returns NULL if there was insufficient memory to allocate
the (de)compression state.
*/


--
Xiaofan http://mcuee.blogspot.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/