diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cue/cue_tag.c | 42 | ||||
-rw-r--r-- | src/cue/cue_tag.h | 4 |
2 files changed, 29 insertions, 17 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 @@ -172,20 +172,15 @@ cue_tag_merge(struct tag *a, struct tag *b) } struct tag * -cue_tag_file(FILE *fp, unsigned tnum) +cue_tag(struct Cd *cd, unsigned tnum) { - struct Cd *cd; struct tag *cd_tag, *track_tag; - assert(fp != NULL); + assert(cd != NULL); if (tnum > 256) return NULL; - cd = cue_parse_file(fp); - if (cd == NULL) - return NULL; - /* tag from CDtext info */ cd_tag = cue_tag_cd(cd_get_cdtext(cd), cd_get_rem(cd)); @@ -193,16 +188,35 @@ cue_tag_file(FILE *fp, unsigned tnum) 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 *tag; + + assert(fp != NULL); + + if (tnum > 256) + return NULL; + + cd = cue_parse_file(fp); + if (cd == NULL) + return NULL; + + 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 <stdio.h> struct tag; +struct Cd; + +struct tag * +cue_tag(struct Cd *cd, unsigned tnum); struct tag * cue_tag_file(FILE *file, unsigned tnum); |