|
- /*
- * 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;
- }
|