1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
/*
* den2raw.c
*
* Convert a density file to a raw file. The destination file is in the native byte ordering,
* even if the source file is not.
*
* Usage: den2raw src.den dst.raw
* Compilation: cc -o den2raw den2raw.c denfile.c
*/
#define _GNU_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
unsigned char *data, *read_den(), write_raw();
int xlen, ylen, zlen;
char *rawfilename;
size_t rawfilenamelen;
if (argc != 3) {
fprintf(stderr, "Usage: dencopy src.den dst.raw\n");
exit(1);
}
if ((data = read_den(argv[1], &xlen, &ylen, &zlen)) == NULL) {
fprintf(stderr, "den2raw: read failed\n");
exit(1);
}
rawfilenamelen=strlen(argv[2]);
if ((3 < rawfilenamelen) && !(strcasecmp(argv[2]+rawfilenamelen-4, ".XXX"))) {
asprintf(&rawfilename,"%sXXXXXXXXXXXXXXXXXXXXxXXXXXXXXXXXXXXXXXXXXxXXXXXXXXXXXXXXXXXXXX", argv[2]);
sprintf(rawfilename+rawfilenamelen-3, "%dx%dx%d", xlen, ylen, zlen);
}
else {
asprintf(&rawfilename,"%s", argv[2]);
}
if (!write_raw(rawfilename, data, xlen, ylen, zlen)) {
fprintf(stderr, "den2raw: write failed\n");
exit(1);
}
free(rawfilename);
return(0); }
|