Added preliminary track number switch to cueprint.

This commit is contained in:
Svend Sorensen
2004-09-13 01:10:27 +00:00
parent 056448c3ff
commit 7b2e19a380

View File

@@ -46,12 +46,13 @@ char *progname;
void usage (int status) void usage (int status)
{ {
if (0 == 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("\ fputs("\
\n\ \n\
OPTIONS\n\ OPTIONS\n\
-h print usage\n\ -h print usage\n\
-i cue|toc set format of file(s)\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\ -d TEMPLATE set disc template (see TEMPLATE EXPANSION)\n\
-t TEMPLATE set track template (see TEMPLATE EXPANSION)\n\ -t TEMPLATE set track template (see TEMPLATE EXPANSION)\n\
\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; Cd *cd = NULL;
int i; /* track number */ int ntrack;
if (NULL == (cd = cf_parse(name, &format))) { if (NULL == (cd = cf_parse(name, &format))) {
fprintf(stderr, "%s: input file error\n", name); fprintf(stderr, "%s: input file error\n", name);
return -1; return -1;
} }
ntrack = cd_get_ntrack(cd);
cd_printf(d_template, cd, 0); cd_printf(d_template, cd, 0);
for (i = 1; i <= cd_get_ntrack(cd); i++) { if (0 == trackno) {
cd_printf(t_template, cd, i); 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; 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 main (int argc, char **argv)
{ {
int format = UNKNOWN; int format = UNKNOWN;
int trackno = 0; /* track number (0 = all tracks) */
char *d_template = NULL; /* disc template */ char *d_template = NULL; /* disc template */
char *t_template = NULL; /* track template */ char *t_template = NULL; /* track template */
/* getopt () variables */ /* getopt () variables */
@@ -364,7 +375,7 @@ int main (int argc, char **argv)
progname = *argv; progname = *argv;
while (-1 != (c = getopt(argc, argv, "hi:d:t:"))) { while (-1 != (c = getopt(argc, argv, "hi:n:d:t:"))) {
switch (c) { switch (c) {
case 'h': case 'h':
usage(0); usage(0);
@@ -376,6 +387,9 @@ int main (int argc, char **argv)
format = TOC; format = TOC;
break; break;
/* TODO add track selection */ /* TODO add track selection */
case 'n':
trackno = atoi(optarg);
break;
case 'd': case 'd':
d_template = optarg; d_template = optarg;
break; break;
@@ -401,10 +415,10 @@ int main (int argc, char **argv)
} }
if (optind == argc) { if (optind == argc) {
info("-", format, d_template, t_template); info("-", format, trackno, d_template, t_template);
} else { } else {
for (; optind < argc; optind++) for (; optind < argc; optind++)
info(argv[optind], format, d_template, t_template); info(argv[optind], format, trackno, d_template, t_template);
} }
return 0; return 0;