From b89281411f237c6644e666cb439bde68ea901a52 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 16 Dec 2009 20:49:03 +0100 Subject: [PATCH] cue_tag: added function cue_tag() Merge code from cue_tag_file() and cue_tag_string(). --- src/cue/cue_tag.c | 44 ++++++++++++++++++++++++++------------------ src/cue/cue_tag.h | 4 ++++ 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/cue/cue_tag.c b/src/cue/cue_tag.c index 70f7fc767..94797bd46 100644 --- a/src/cue/cue_tag.c +++ b/src/cue/cue_tag.c @@ -171,11 +171,31 @@ cue_tag_merge(struct tag *a, struct tag *b) return NULL; } +struct tag * +cue_tag(struct Cd *cd, unsigned tnum) +{ + struct tag *cd_tag, *track_tag; + + assert(cd != NULL); + + if (tnum > 256) + return NULL; + + /* tag from CDtext info */ + cd_tag = cue_tag_cd(cd_get_cdtext(cd), cd_get_rem(cd)); + + /* tag from TRACKtext info */ + track_tag = cue_tag_track(track_get_cdtext(cd_get_track(cd, tnum)), + track_get_rem(cd_get_track(cd, tnum))); + + return cue_tag_merge(cd_tag, track_tag); +} + struct tag * cue_tag_file(FILE *fp, unsigned tnum) { struct Cd *cd; - struct tag *cd_tag, *track_tag; + struct tag *tag; assert(fp != NULL); @@ -186,23 +206,17 @@ cue_tag_file(FILE *fp, unsigned tnum) if (cd == NULL) return NULL; - /* tag from CDtext info */ - cd_tag = cue_tag_cd(cd_get_cdtext(cd), cd_get_rem(cd)); - - /* tag from TRACKtext info */ - track_tag = cue_tag_track(track_get_cdtext(cd_get_track(cd, tnum)), - track_get_rem(cd_get_track(cd, tnum))); - + tag = cue_tag(cd, tnum); cd_delete(cd); - return cue_tag_merge(cd_tag, track_tag); + return tag; } struct tag * cue_tag_string(const char *str, unsigned tnum) { struct Cd *cd; - struct tag *cd_tag, *track_tag; + struct tag *tag; assert(str != NULL); @@ -213,14 +227,8 @@ cue_tag_string(const char *str, unsigned tnum) if (cd == NULL) return NULL; - /* tag from CDtext info */ - cd_tag = cue_tag_cd(cd_get_cdtext(cd), cd_get_rem(cd)); - - /* tag from TRACKtext info */ - track_tag = cue_tag_track(track_get_cdtext(cd_get_track(cd, tnum)), - track_get_rem(cd_get_track(cd, tnum))); - + tag = cue_tag(cd, tnum); cd_delete(cd); - return cue_tag_merge(cd_tag, track_tag); + return tag; } diff --git a/src/cue/cue_tag.h b/src/cue/cue_tag.h index e5dc24fb9..1ddaa59c8 100644 --- a/src/cue/cue_tag.h +++ b/src/cue/cue_tag.h @@ -8,6 +8,10 @@ #include struct tag; +struct Cd; + +struct tag * +cue_tag(struct Cd *cd, unsigned tnum); struct tag * cue_tag_file(FILE *file, unsigned tnum);