[gcab/wip/hughsie/meson] Replace all the custom typedefd unsigned types with working versions
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gcab/wip/hughsie/meson] Replace all the custom typedefd unsigned types with working versions
- Date: Fri, 17 Nov 2017 13:04:18 +0000 (UTC)
commit ee04ac9e2f21a6242a088af3a6ad222019ed5cc1
Author: Richard Hughes <richard hughsie com>
Date: Fri Nov 17 13:03:04 2017 +0000
Replace all the custom typedefd unsigned types with working versions
On some architectures, sizeof(unsigned long int) is not 4 bytes, which makes
various assumptions in the code fail.
libgcab/cabinet.c | 36 +++++++++++++---------------
libgcab/cabinet.h | 62 +++++++++++++++++++++++--------------------------
libgcab/decomp.h | 2 +-
libgcab/gcab-file.c | 2 +-
libgcab/gcab-folder.c | 8 +++---
libgcab/gcab-priv.h | 4 +-
6 files changed, 54 insertions(+), 60 deletions(-)
---
diff --git a/libgcab/cabinet.c b/libgcab/cabinet.c
index 46e534e..caf695e 100644
--- a/libgcab/cabinet.c
+++ b/libgcab/cabinet.c
@@ -303,7 +303,7 @@ cfolder_write (cfolder_t *cf, GDataOutputStream *out,
}
G_GNUC_INTERNAL gboolean
-cfolder_read (cfolder_t *cf, u1 res_size, GDataInputStream *in,
+cfolder_read (cfolder_t *cf, guint8 res_size, GDataInputStream *in,
GCancellable *cancellable, GError **error)
{
gboolean success = FALSE;
@@ -377,34 +377,32 @@ end:
return success;
}
-typedef guint32 CHECKSUM;
-
-static CHECKSUM
-compute_checksum (guint8 *in, u2 ncbytes, CHECKSUM seed)
+static guint32
+compute_checksum (guint8 *in, guint16 ncbytes, guint32 seed)
{
int no_ulongs;
- CHECKSUM csum=0;
- CHECKSUM temp;
+ guint32 csum=0;
+ guint32 temp;
no_ulongs = ncbytes / 4;
csum = seed;
while (no_ulongs-- > 0) {
- temp = ((CHECKSUM) (*in++));
- temp |= (((CHECKSUM) (*in++)) << 8);
- temp |= (((CHECKSUM) (*in++)) << 16);
- temp |= (((CHECKSUM) (*in++)) << 24);
+ temp = ((guint32) (*in++));
+ temp |= (((guint32) (*in++)) << 8);
+ temp |= (((guint32) (*in++)) << 16);
+ temp |= (((guint32) (*in++)) << 24);
csum ^= temp;
}
temp = 0;
switch (ncbytes % 4) {
- case 3: temp |= (((CHECKSUM) (*in++)) << 16);
+ case 3: temp |= (((guint32) (*in++)) << 16);
/* fall-thru */
- case 2: temp |= (((CHECKSUM) (*in++)) << 8);
+ case 2: temp |= (((guint32) (*in++)) << 8);
/* fall-thru */
- case 1: temp |= ((CHECKSUM) (*in++));
+ case 1: temp |= ((guint32) (*in++));
/* fall-thru */
default: break;
}
@@ -422,8 +420,8 @@ cdata_write (cdata_t *cd, GDataOutputStream *out, int type,
if (!cdata_set(cd, type, data, size))
return FALSE;
- CHECKSUM datacsum = compute_checksum(cd->in, cd->ncbytes, 0);
- CHECKSUM sizecsum = GUINT32_TO_LE(cd->ncbytes << 16 | cd->nubytes);
+ guint32 datacsum = compute_checksum(cd->in, cd->ncbytes, 0);
+ guint32 sizecsum = GUINT32_TO_LE(cd->ncbytes << 16 | cd->nubytes);
cd->checksum = compute_checksum ((guint8*)&sizecsum, 4, datacsum);
GOutputStream *stream = g_filter_output_stream_get_base_stream (G_FILTER_OUTPUT_STREAM (out));
@@ -458,7 +456,7 @@ cdata_finish (cdata_t *cd, GError **error)
}
G_GNUC_INTERNAL gboolean
-cdata_read (cdata_t *cd, u1 res_data, gint comptype,
+cdata_read (cdata_t *cd, guint8 res_data, gint comptype,
GDataInputStream *in, GCancellable *cancellable, GError **error)
{
@@ -466,8 +464,8 @@ cdata_read (cdata_t *cd, u1 res_data, gint comptype,
int ret, zret = Z_OK;
gint compression = comptype & GCAB_COMPRESSION_MASK;
guint8 *buf = compression == GCAB_COMPRESSION_NONE ? cd->out : cd->in;
- CHECKSUM datacsum;
- CHECKSUM sizecsum;
+ guint32 datacsum;
+ guint32 sizecsum;
if (compression > GCAB_COMPRESSION_MSZIP &&
compression != GCAB_COMPRESSION_LZX) {
diff --git a/libgcab/cabinet.h b/libgcab/cabinet.h
index 299eb68..b50088b 100644
--- a/libgcab/cabinet.h
+++ b/libgcab/cabinet.h
@@ -20,10 +20,6 @@
/* based on the spec
http://msdn.microsoft.com/en-us/library/bb417343.aspx */
-typedef unsigned char u1;
-typedef unsigned short int u2;
-typedef unsigned long int u4;
-
typedef struct cheader cheader_t;
typedef struct cfolder cfolder_t;
typedef struct cfile cfile_t;
@@ -36,21 +32,21 @@ typedef struct cdata cdata_t;
struct cheader
{
- u4 res1;
- u4 size;
- u4 res2;
- u4 offsetfiles;
- u4 res3;
- u1 versionMIN;
- u1 versionMAJ;
- u2 nfolders;
- u2 nfiles;
- u2 flags;
- u2 setID;
- u2 cabID;
- u2 res_header;
- u1 res_folder;
- u1 res_data;
+ guint32 res1;
+ guint32 size;
+ guint32 res2;
+ guint32 offsetfiles;
+ guint32 res3;
+ guint8 versionMIN;
+ guint8 versionMAJ;
+ guint16 nfolders;
+ guint16 nfiles;
+ guint16 flags;
+ guint16 setID;
+ guint16 cabID;
+ guint16 res_header;
+ guint8 res_folder;
+ guint8 res_data;
guint8 *reserved;
gchar *cab_prev;
gchar *disk_prev;
@@ -66,28 +62,28 @@ typedef enum {
struct cfolder
{
- u4 offsetdata;
- u2 ndatab;
- u2 typecomp;
+ guint32 offsetdata;
+ guint16 ndatab;
+ guint16 typecomp;
guint8 *reserved;
};
struct cfile
{
- u4 usize;
- u4 uoffset;
- u2 index;
- u2 date;
- u2 time;
- u2 fattr;
+ guint32 usize;
+ guint32 uoffset;
+ guint16 index;
+ guint16 date;
+ guint16 time;
+ guint16 fattr;
gchar *name;
};
struct cdata
{
- u4 checksum;
- u2 ncbytes;
- u2 nubytes;
+ guint32 checksum;
+ guint16 ncbytes;
+ guint16 nubytes;
guint8 *reserved;
guint8 in[CAB_INPUTMAX+2];
guint8 out[CAB_BLOCKMAX];
@@ -111,7 +107,7 @@ gboolean cfolder_write (cfolder_t *cf,
GCancellable *cancellable,
GError **error);
gboolean cfolder_read (cfolder_t *cf,
- u1 res_folder,
+ guint8 res_folder,
GDataInputStream *in,
GCancellable *cancellable,
GError **error);
@@ -132,7 +128,7 @@ gboolean cdata_write (cdata_t *cd,
GCancellable *cancellable,
GError **error);
gboolean cdata_read (cdata_t *cd,
- u1 res_data,
+ guint8 res_data,
gint comptype,
GDataInputStream *in,
GCancellable *cancellable,
diff --git a/libgcab/decomp.h b/libgcab/decomp.h
index 14a9e8d..78b1b76 100644
--- a/libgcab/decomp.h
+++ b/libgcab/decomp.h
@@ -125,7 +125,7 @@
#define CAB_BLOCKMAX (32768)
#define CAB_INPUTMAX (CAB_BLOCKMAX+6144)
-typedef unsigned char cab_UBYTE; /* 8 bits */
+typedef guint8 cab_UBYTE; /* 8 bits */
typedef guint16 cab_UWORD; /* 16 bits */
typedef guint32 cab_ULONG; /* 32 bits */
typedef gint32 cab_LONG; /* 32 bits */
diff --git a/libgcab/gcab-file.c b/libgcab/gcab-file.c
index fbc3504..f014fd6 100644
--- a/libgcab/gcab-file.c
+++ b/libgcab/gcab-file.c
@@ -151,7 +151,7 @@ gcab_file_update_info (GCabFile *self, GFileInfo *info)
}
G_GNUC_INTERNAL gboolean
-gcab_file_set_uoffset (GCabFile *self, u4 uoffset)
+gcab_file_set_uoffset (GCabFile *self, guint32 uoffset)
{
g_return_val_if_fail (GCAB_IS_FILE (self), FALSE);
diff --git a/libgcab/gcab-folder.c b/libgcab/gcab-folder.c
index 8c3c0be..2df51fd 100644
--- a/libgcab/gcab-folder.c
+++ b/libgcab/gcab-folder.c
@@ -332,7 +332,7 @@ sort_by_offset (GCabFile *a, GCabFile *b)
G_GNUC_INTERNAL gboolean
gcab_folder_extract (GCabFolder *self,
GFile *path,
- u1 res_data,
+ guint8 res_data,
GCabFileCallback file_callback,
GFileProgressCallback progress_callback,
gpointer callback_data,
@@ -345,7 +345,7 @@ gcab_folder_extract (GCabFolder *self,
GFileOutputStream *out = NULL;
GSList *f, *files = NULL;
cdata_t cdata = { 0, };
- u4 nubytes = 0;
+ guint32 nubytes = 0;
data = g_data_input_stream_new (self->stream);
g_data_input_stream_set_byte_order (data, G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN);
@@ -406,8 +406,8 @@ gcab_folder_extract (GCabFolder *self,
if (!out)
goto end;
- u4 usize = file->cfile.usize;
- u4 uoffset = file->cfile.uoffset;
+ guint32 usize = file->cfile.usize;
+ guint32 uoffset = file->cfile.uoffset;
/* let's rewind if need be */
if (uoffset < nubytes) {
diff --git a/libgcab/gcab-priv.h b/libgcab/gcab-priv.h
index 1893cb7..4b8ad24 100644
--- a/libgcab/gcab-priv.h
+++ b/libgcab/gcab-priv.h
@@ -48,12 +48,12 @@ GCabFolder * gcab_folder_new_with_cfolder (const cfolder_t *folder, G
GCabFile * gcab_file_new_with_cfile (const cfile_t *file);
gboolean gcab_file_update_info (GCabFile *file, GFileInfo *info);
-gboolean gcab_file_set_uoffset (GCabFile *file, u4 uoffset);
+gboolean gcab_file_set_uoffset (GCabFile *file, guint32 uoffset);
gsize gcab_folder_get_ndatablocks (GCabFolder *folder);
gboolean gcab_folder_extract (GCabFolder *self,
GFile *path,
- u1 res_data,
+ guint8 res_data,
GCabFileCallback file_callback,
GFileProgressCallback progress_callback,
gpointer callback_data,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]