37 io::ExitTrigger et(reader);
43 ID3D_NOTICE(
"id3::v1::parse: not enough bytes to parse, pos = " << end );
51 ID3D_WARNING(
"id3::v1::parse: failed to reposition " <<
ID3_V1_LEN <<
74 ID3D_NOTICE(
"id3::v1::parse: read bytes: " << reader.
getCur() - beg);
76 field = id3::v2::getTitle(tag);
77 if (title.size() > 0 && (field.size() == 0 || field ==
""))
79 id3::v2::setTitle(tag, title);
81 ID3D_NOTICE(
"id3::v1::parse: title = \"" << title <<
"\"" );
83 ID3D_NOTICE(
"id3::v1::parse: read bytes: " << reader.
getCur() - beg);
85 field = id3::v2::getArtist(tag);
86 if (artist.size() > 0 && (field.size() == 0 || field ==
""))
88 id3::v2::setArtist(tag, artist);
90 ID3D_NOTICE(
"id3::v1::parse: artist = \"" << artist <<
"\"" );
92 ID3D_NOTICE(
"id3::v1::parse: read bytes: " << reader.
getCur() - beg);
94 field = id3::v2::getAlbum(tag);
95 if (album.size() > 0 && (field.size() == 0 || field ==
""))
97 id3::v2::setAlbum(tag, album);
99 ID3D_NOTICE(
"id3::v1::parse: album = \"" << title <<
"\"" );
101 ID3D_NOTICE(
"id3::v1::parse: read bytes: " << reader.
getCur() - beg);
103 field = id3::v2::getYear(tag);
104 if (year.size() > 0 && (field.size() == 0 || field ==
""))
106 id3::v2::setYear(tag, year);
108 ID3D_NOTICE(
"id3::v1::parse: year = \"" << year <<
"\"" );
110 ID3D_NOTICE(
"id3::v1::parse: read bytes: " << reader.
getCur() - beg);
114 if (trackno[0] ==
'\0')
116 if (trackno[1] !=
'\0')
118 size_t track = trackno[1];
119 field = id3::v2::getTrack(tag);
120 if (field.size() == 0 || field ==
"00")
122 id3::v2::setTrack(tag, track, 0);
124 ID3D_NOTICE(
"id3::v1::parse: track = \"" << track <<
"\"" );
125 ID3D_NOTICE(
"id3::v1::parse: comment length = \"" << comment.length() <<
"\"" );
132 const char * padding =
" ";
134 if (trackno[1] ==
'\0' || trackno[1] == 0x20 && trackno[0] != 0x20)
137 comment.append(padding, paddingsize);
138 comment.append((
const char *)trackno.data(), 1);
140 else if (trackno[1] !=
'\0' && trackno[1] != 0x20 && trackno[0] != 0x20)
143 comment.append(padding, paddingsize);
144 comment.append((
const char *)trackno.data(), 2);
147 ID3D_NOTICE(
"id3::v1::parse: comment = \"" << comment <<
"\"" );
148 if (comment.size() > 0)
153 ID3D_NOTICE(
"id3::v1::parse: read bytes: " << reader.
getCur() - beg);
156 field = id3::v2::getGenre(tag);
157 if (genre != 0xFF && (field.size() == 0 || field ==
""))
159 id3::v2::setGenre(tag, genre);
161 ID3D_NOTICE(
"id3::v1::parse: genre = \"" << (
int) genre <<
"\"" );
163 ID3D_NOTICE(
"id3::v1::parse: read bytes: " << reader.
getCur() - beg);