Plan 9 from Bell Labs’s /usr/web/sources/contrib/cnielsen/cuetools/cueconvert.c

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


/*
 * cueconvert.c -- convert between cue/toc formats
 *
 * Copyright (C) 2004 Svend Sorensen
 * For license terms, see the file COPYING in this distribution.
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "cuefile.h"

char *progname;

void usage (int status)
{
	if (0 == status) {
		fprintf(stdout, "%s: usage: cueconvert [-h] [-i cue|toc] [-o cue|toc] [infile [outfile]]\n", progname);
		fputs("\
\n\
OPTIONS\n\
-h 			print usage\n\
-i cue|toc		set format of input file\n\
-o cue|toc		set format of output file\n\
", stdout);
	} else {
		fprintf(stderr, "%s: syntax error\n", progname);
		fprintf(stderr, "run `%s -h' for usage\n", progname);
	}

	exit (status);
}

int convert (char *iname, int iformat, char *oname, int oformat)
{
	Cd *cd = NULL;

	if (NULL == (cd = cf_parse(iname, &iformat))) {
		fprintf(stderr, "input file error\n");
		return -1;
	}

	if (UNKNOWN == oformat) {
		/* first use file suffix */
		if (UNKNOWN == (oformat = cf_format_from_suffix(oname))) {
			/* then use opposite of input format */
			switch(iformat) {
			case CUE:
					oformat = TOC;
					break;
			case TOC:
					oformat = CUE;
					break;
			}
		}
	}

	return cf_print(oname, &oformat, cd);
}

int main (int argc, char **argv)
{
	int iformat = UNKNOWN;
	int oformat = UNKNOWN;
	/* option variables */
	char c;
	/* getopt() variables */
	extern char *optarg;
	extern int optind;

	progname = *argv;

	while (-1 != (c = getopt(argc, argv, "hi:o:"))) {
		switch (c) {
		case 'h':
			usage(0);
			break;
		case 'i':
			if (0 == strcmp("cue", optarg))
				iformat = CUE;
			else if (0 == strcmp("toc", optarg))
				iformat = TOC;
			break;
		case 'o':
			if (0 == strcmp("cue", optarg))
				oformat = CUE;
			else if (0 == strcmp("toc", optarg))
				oformat = TOC;
			break;
		default:
			usage(1);
			break;
		}
	}
 
	if (optind == argc) {
		convert("-", iformat, "-", oformat);
	} else if (optind == argc - 1) {
		convert(argv[optind], iformat, "-", oformat);
	} else if (optind == argc - 2) {
		convert(argv[optind], iformat, argv[optind + 1], oformat);
	} else {
		usage(1);
	}

	return 0;
}

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.