summaryrefslogtreecommitdiff
path: root/src/modules/loaders/loader_bz2.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/loaders/loader_bz2.c')
-rw-r--r--src/modules/loaders/loader_bz2.c200
1 files changed, 106 insertions, 94 deletions
diff --git a/src/modules/loaders/loader_bz2.c b/src/modules/loaders/loader_bz2.c
index 7ac225f..adda48a 100644
--- a/src/modules/loaders/loader_bz2.c
+++ b/src/modules/loaders/loader_bz2.c
@@ -8,115 +8,127 @@
#define OUTBUF_SIZE 16384
#define INBUF_SIZE 1024
-static int uncompress_file (FILE *fp, int dest)
+static int
+uncompress_file(FILE * fp, int dest)
{
- BZFILE *bf;
- DATA8 outbuf[OUTBUF_SIZE];
- int bytes, error, ret = 1;
+ BZFILE *bf;
+ DATA8 outbuf[OUTBUF_SIZE];
+ int bytes, error, ret = 1;
- bf = BZ2_bzReadOpen (&error, fp, 0, 0, NULL, 0);
+ bf = BZ2_bzReadOpen(&error, fp, 0, 0, NULL, 0);
- if (error != BZ_OK) {
- BZ2_bzReadClose (NULL, bf);
- return 0;
- }
+ if (error != BZ_OK)
+ {
+ BZ2_bzReadClose(NULL, bf);
+ return 0;
+ }
- while (1) {
- bytes = BZ2_bzRead (&error, bf, &outbuf, OUTBUF_SIZE);
+ while (1)
+ {
+ bytes = BZ2_bzRead(&error, bf, &outbuf, OUTBUF_SIZE);
- if (error == BZ_OK || error == BZ_STREAM_END)
- write (dest, outbuf, bytes);
+ if (error == BZ_OK || error == BZ_STREAM_END)
+ write(dest, outbuf, bytes);
- if (error == BZ_STREAM_END)
- break;
- else if (error != BZ_OK) {
- ret = 0;
- break;
- }
- }
+ if (error == BZ_STREAM_END)
+ break;
+ else if (error != BZ_OK)
+ {
+ ret = 0;
+ break;
+ }
+ }
- BZ2_bzReadClose (&error, bf);
+ BZ2_bzReadClose(&error, bf);
- return ret;
+ return ret;
}
-char load (ImlibImage *im, ImlibProgressFunction progress,
- char progress_granularity, char immediate_load)
+char
+load(ImlibImage * im, ImlibProgressFunction progress,
+ char progress_granularity, char immediate_load)
{
- ImlibLoader *loader;
- FILE *fp;
- int dest, res;
- char *file, tmp[] = "/tmp/imlib2_loader_bz2-XXXXXX", *p;
- char real_ext[16];
-
- assert (im);
-
- /* make sure this file ends in ".bz2" and that there's another ext
- * (e.g. "foo.png.bz2"
- */
- p = strrchr(im->real_file, '.');
- if (p && p != im->real_file) {
- if (strcasecmp(p + 1, "bz2"))
- return 0;
- } else
- return 0;
-
- strncpy (real_ext, p - sizeof (real_ext) + 1, sizeof (real_ext));
- real_ext[sizeof (real_ext) - 1] = '\0';
-
- /* abort if there's no dot in the "real" filename */
- if (!strrchr (real_ext, '.'))
- return 0;
-
- if (!(fp = fopen (im->real_file, "rb"))) {
- return 0;
- }
-
- if ((dest = mkstemp (tmp)) < 0) {
- fclose (fp);
- return 0;
- }
-
- res = uncompress_file (fp, dest);
- fclose (fp);
- close (dest);
-
- if (!res) {
- unlink (tmp);
- return 0;
- }
-
- if (!(loader = __imlib_FindBestLoaderForFile (real_ext, 0))) {
- unlink (tmp);
- return 0;
- }
-
- /* remember the original filename */
- file = strdup (im->real_file);
-
- free (im->real_file);
- im->real_file = strdup (tmp);
- loader->load (im, progress, progress_granularity, immediate_load);
-
- free (im->real_file);
- im->real_file = file;
- unlink (tmp);
-
- return 1;
+ ImlibLoader *loader;
+ FILE *fp;
+ int dest, res;
+ char *file, tmp[] = "/tmp/imlib2_loader_bz2-XXXXXX", *p;
+ char real_ext[16];
+
+ assert(im);
+
+ /* make sure this file ends in ".bz2" and that there's another ext
+ * (e.g. "foo.png.bz2"
+ */
+ p = strrchr(im->real_file, '.');
+ if (p && p != im->real_file)
+ {
+ if (strcasecmp(p + 1, "bz2"))
+ return 0;
+ }
+ else
+ return 0;
+
+ strncpy(real_ext, p - sizeof(real_ext) + 1, sizeof(real_ext));
+ real_ext[sizeof(real_ext) - 1] = '\0';
+
+ /* abort if there's no dot in the "real" filename */
+ if (!strrchr(real_ext, '.'))
+ return 0;
+
+ if (!(fp = fopen(im->real_file, "rb")))
+ {
+ return 0;
+ }
+
+ if ((dest = mkstemp(tmp)) < 0)
+ {
+ fclose(fp);
+ return 0;
+ }
+
+ res = uncompress_file(fp, dest);
+ fclose(fp);
+ close(dest);
+
+ if (!res)
+ {
+ unlink(tmp);
+ return 0;
+ }
+
+ if (!(loader = __imlib_FindBestLoaderForFile(real_ext, 0)))
+ {
+ unlink(tmp);
+ return 0;
+ }
+
+ /* remember the original filename */
+ file = strdup(im->real_file);
+
+ free(im->real_file);
+ im->real_file = strdup(tmp);
+ loader->load(im, progress, progress_granularity, immediate_load);
+
+ free(im->real_file);
+ im->real_file = file;
+ unlink(tmp);
+
+ return 1;
}
-void formats (ImlibLoader *l)
+void
+formats(ImlibLoader * l)
{
- /* this is the only bit you have to change... */
- char *list_formats[] = {"bz2"};
- int i;
+ /* this is the only bit you have to change... */
+ char *list_formats[] = { "bz2" };
+ int i;
/* don't bother changing any of this - it just reads this in
- * and sets the struct values and makes copies
- */
- l->num_formats = sizeof (list_formats) / sizeof (char *);
- l->formats = malloc (sizeof (char *) * l->num_formats);
+ * and sets the struct values and makes copies
+ */
+ l->num_formats = sizeof(list_formats) / sizeof(char *);
+ l->formats = malloc(sizeof(char *) * l->num_formats);
- for (i = 0; i < l->num_formats; i++)
- l->formats[i] = strdup (list_formats[i]);
+ for (i = 0; i < l->num_formats; i++)
+ l->formats[i] = strdup(list_formats[i]);
}