Commit b8928141 authored by Max Kellermann's avatar Max Kellermann

cue_tag: added function cue_tag()

Merge code from cue_tag_file() and cue_tag_string().
parent 67c41033
...@@ -172,20 +172,15 @@ cue_tag_merge(struct tag *a, struct tag *b) ...@@ -172,20 +172,15 @@ cue_tag_merge(struct tag *a, struct tag *b)
} }
struct tag * 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; struct tag *cd_tag, *track_tag;
assert(fp != NULL); assert(cd != NULL);
if (tnum > 256) if (tnum > 256)
return NULL; return NULL;
cd = cue_parse_file(fp);
if (cd == NULL)
return NULL;
/* tag from CDtext info */ /* tag from CDtext info */
cd_tag = cue_tag_cd(cd_get_cdtext(cd), cd_get_rem(cd)); cd_tag = cue_tag_cd(cd_get_cdtext(cd), cd_get_rem(cd));
...@@ -193,16 +188,35 @@ cue_tag_file(FILE *fp, unsigned tnum) ...@@ -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_tag = cue_tag_track(track_get_cdtext(cd_get_track(cd, tnum)),
track_get_rem(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); cd_delete(cd);
return cue_tag_merge(cd_tag, track_tag); return tag;
} }
struct tag * struct tag *
cue_tag_string(const char *str, unsigned tnum) cue_tag_string(const char *str, unsigned tnum)
{ {
struct Cd *cd; struct Cd *cd;
struct tag *cd_tag, *track_tag; struct tag *tag;
assert(str != NULL); assert(str != NULL);
...@@ -213,14 +227,8 @@ cue_tag_string(const char *str, unsigned tnum) ...@@ -213,14 +227,8 @@ cue_tag_string(const char *str, unsigned tnum)
if (cd == NULL) if (cd == NULL)
return NULL; return NULL;
/* tag from CDtext info */ tag = cue_tag(cd, tnum);
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)));
cd_delete(cd); cd_delete(cd);
return cue_tag_merge(cd_tag, track_tag); return tag;
} }
...@@ -8,6 +8,10 @@ ...@@ -8,6 +8,10 @@
#include <stdio.h> #include <stdio.h>
struct tag; struct tag;
struct Cd;
struct tag *
cue_tag(struct Cd *cd, unsigned tnum);
struct tag * struct tag *
cue_tag_file(FILE *file, unsigned tnum); cue_tag_file(FILE *file, unsigned tnum);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment