* util.c: Eliminate get_small_endian_long() and CHECK macro.

This commit is contained in:
Pavel Roskin 2002-07-02 21:25:49 +00:00
parent 7f6c3c3bb6
commit 2752379086
2 changed files with 25 additions and 30 deletions

View File

@ -1,5 +1,7 @@
2002-07-02 Pavel Roskin <proski@gnu.org> 2002-07-02 Pavel Roskin <proski@gnu.org>
* util.c: Eliminate get_small_endian_long() and CHECK macro.
* util.h: Rename compression types, add a type for uncompressed * util.h: Rename compression types, add a type for uncompressed
files. files.
* util.c (is_gunzipable): Rename to ... * util.c (is_gunzipable): Rename to ...

View File

@ -844,62 +844,55 @@ char *get_current_wd (char *buffer, int size)
} }
#endif /* !USE_VFS */ #endif /* !USE_VFS */
#define CHECK(x) if (x == -1) return 0;
static long
get_small_endian_long (int fd)
{
unsigned char buffer [4];
CHECK (mc_read (fd, buffer, 4));
return (buffer [3] << 24) | (buffer [2] << 16) | (buffer [1] << 8) | buffer [0];
}
/* This function returns 0 if the file is not in not compressed by /* This function returns 0 if the file is not in not compressed by
* one of the supported compressors (gzip, bzip, bzip2). Otherwise, * one of the supported compressors (gzip, bzip, bzip2). Otherwise,
* the compression type is returned, as defined in util.h * the compression type is returned, as defined in util.h
* Warning: this function moves the current file pointer */ * Warning: this function moves the current file pointer */
int get_compression_type (int fd) int get_compression_type (int fd)
{ {
unsigned char magic [4]; unsigned char magic[4];
/* Read the magic signature */ /* Read the magic signature */
CHECK (mc_read (fd, &magic [0], 4)); if (mc_read (fd, &magic[0], 4) != 4)
return COMPRESSION_NONE;
/* GZIP_MAGIC and OLD_GZIP_MAGIC */ /* GZIP_MAGIC and OLD_GZIP_MAGIC */
if (magic [0] == 037 && (magic [1] == 0213 || magic [1] == 0236)){ if (magic[0] == 037 && (magic[1] == 0213 || magic[1] == 0236)) {
return COMPRESSION_GZIP; return COMPRESSION_GZIP;
} }
/* PKZIP_MAGIC */ /* PKZIP_MAGIC */
if (magic [0] == 0120 && magic [1] == 0113 && magic [2] == 003 && magic [3] == 004){ if (magic[0] == 0120 && magic[1] == 0113 && magic[2] == 003
&& magic[3] == 004) {
/* Read compression type */ /* Read compression type */
mc_lseek (fd, 8, SEEK_SET); mc_lseek (fd, 8, SEEK_SET);
CHECK (mc_read (fd, &magic [0], 2)); if (mc_read (fd, &magic[0], 2) != 2)
return COMPRESSION_NONE;
/* Gzip can handle only deflated (8) or stored (0) files */ /* Gzip can handle only deflated (8) or stored (0) files */
if ((magic [0] != 8 && magic [0] != 0) || magic [1] != 0) if ((magic[0] != 8 && magic[0] != 0) || magic[1] != 0)
return COMPRESSION_NONE; return COMPRESSION_NONE;
/* Compatible with gzip */ /* Compatible with gzip */
return COMPRESSION_GZIP; return COMPRESSION_GZIP;
} }
/* PACK_MAGIC and LZH_MAGIC and compress magic */ /* PACK_MAGIC and LZH_MAGIC and compress magic */
if (magic [0] == 037 && (magic [1] == 036 || magic [1] == 0240 || magic [1] == 0235)){ if (magic[0] == 037
/* Compatible with gzip */ && (magic[1] == 036 || magic[1] == 0240 || magic[1] == 0235)) {
/* Compatible with gzip */
return COMPRESSION_GZIP; return COMPRESSION_GZIP;
} }
/* BZIP and BZIP2 files */ /* BZIP and BZIP2 files */
if ((magic[0] == 'B') && (magic[1] == 'Z') && if ((magic[0] == 'B') && (magic[1] == 'Z') &&
(magic [3] >= '1') && (magic [3] <= '9')){ (magic[3] >= '1') && (magic[3] <= '9')) {
switch (magic[2]) { switch (magic[2]) {
case '0': case '0':
return COMPRESSION_BZIP; return COMPRESSION_BZIP;
case 'h': case 'h':
return COMPRESSION_BZIP2; return COMPRESSION_BZIP2;
} }
} }
return 0; return 0;
} }