From 7b2e19a380ea194384bceee7627126ae62ebf593 Mon Sep 17 00:00:00 2001 From: Svend Sorensen Date: Mon, 13 Sep 2004 01:10:27 +0000 Subject: [PATCH] Added preliminary track number switch to cueprint. --- tools/cueprint.c | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/tools/cueprint.c b/tools/cueprint.c index a37106e..eb10010 100644 --- a/tools/cueprint.c +++ b/tools/cueprint.c @@ -46,12 +46,13 @@ char *progname; void usage (int status) { if (0 == status) { - fprintf(stdout, "%s: usage: cueprint [-h] [-i cue|toc] [-d TEMPLATE] [-t TEMPLATE] [file...]\n", progname); + fprintf(stdout, "%s: usage: cueprint [-h] [-i cue|toc] [-n TRACKNUMBER] [-d TEMPLATE] [-t TEMPLATE] [file...]\n", progname); fputs("\ \n\ OPTIONS\n\ -h print usage\n\ -i cue|toc set format of file(s)\n\ +-n TRACKNUMBER only print track information for track TRACKNUMBER\n\ -d TEMPLATE set disc template (see TEMPLATE EXPANSION)\n\ -t TEMPLATE set track template (see TEMPLATE EXPANSION)\n\ \n\ @@ -333,20 +334,29 @@ void cd_printf (char *format, Cd *cd, int trackno) } } -int info (char *name, int format, char *d_template, char *t_template) +int info (char *name, int format, int trackno, char *d_template, char *t_template) { Cd *cd = NULL; - int i; /* track number */ + int ntrack; if (NULL == (cd = cf_parse(name, &format))) { fprintf(stderr, "%s: input file error\n", name); return -1; } + ntrack = cd_get_ntrack(cd); + cd_printf(d_template, cd, 0); - for (i = 1; i <= cd_get_ntrack(cd); i++) { - cd_printf(t_template, cd, i); + if (0 == trackno) { + for (trackno = 1; trackno <= ntrack; trackno++) { + cd_printf(t_template, cd, ntrack); + } + } else if (0 < trackno || ntrack >= trackno) { + cd_printf(t_template, cd, ntrack); + } else { + fprintf(stderr, "%s: track number out of range\n", progname); + return -1; } return 0; @@ -355,6 +365,7 @@ int info (char *name, int format, char *d_template, char *t_template) int main (int argc, char **argv) { int format = UNKNOWN; + int trackno = 0; /* track number (0 = all tracks) */ char *d_template = NULL; /* disc template */ char *t_template = NULL; /* track template */ /* getopt () variables */ @@ -364,7 +375,7 @@ int main (int argc, char **argv) progname = *argv; - while (-1 != (c = getopt(argc, argv, "hi:d:t:"))) { + while (-1 != (c = getopt(argc, argv, "hi:n:d:t:"))) { switch (c) { case 'h': usage(0); @@ -376,6 +387,9 @@ int main (int argc, char **argv) format = TOC; break; /* TODO add track selection */ + case 'n': + trackno = atoi(optarg); + break; case 'd': d_template = optarg; break; @@ -401,10 +415,10 @@ int main (int argc, char **argv) } if (optind == argc) { - info("-", format, d_template, t_template); + info("-", format, trackno, d_template, t_template); } else { for (; optind < argc; optind++) - info(argv[optind], format, d_template, t_template); + info(argv[optind], format, trackno, d_template, t_template); } return 0;