File: den2raw.c

package info (click to toggle)
tachyon 0.99~b6%2Bdsx-10
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 18,848 kB
  • sloc: ansic: 16,987; makefile: 737; sh: 275
file content (43 lines) | stat: -rw-r--r-- 1,178 bytes parent folder | download | duplicates (4)
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); }