int main( unsigned int argc, char * const argv[]) { int ulFlag = ID3TT_ID3; ID3D_INIT_DOUT(); gengetopt_args_info args; if (cmdline_parser(argc, argv, &args) != 0) { exit(1); } #if defined ID3_ENABLE_DEBUG if (args.warning_flag) { ID3D_INIT_WARNING(); ID3D_WARNING ( "warnings turned on" ); } if (args.notice_flag) { ID3D_INIT_NOTICE(); ID3D_NOTICE ( "notices turned on" ); } #endif if (args.v1tag_flag) { ulFlag = ID3TT_ID3V1; } if (args.v2tag_flag) { ulFlag = ID3TT_ID3V2; } if (args.inputs_num != 2) { cerr << "Usage: id3cp [OPTIONS] SOURCE DEST" << endl; exit(1); } const char *source = args.inputs[0], *dest = args.inputs[1]; ID3_Tag myTag; cout << "Parsing " << source << ": "; myTag.Clear(); myTag.Link(source, ID3TT_ALL); cout << "done. Copying to " << dest << ": "; myTag.Link(dest, ID3TT_NONE); myTag.Update(ulFlag); cout << "done" << endl; return 0; }
bool ID3_Frame::Parse(ID3_Reader& reader) { try // Klenotic: Catch errors and return false instead of crashing. { return _impl->Parse(reader); } catch(...) { ID3D_WARNING( "ID3_Frame::Parse: call to _impl->Parse() failed"); return false; } }