diff options
Diffstat (limited to 'examples/demo_copy.cpp')
-rw-r--r-- | examples/demo_copy.cpp | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/examples/demo_copy.cpp b/examples/demo_copy.cpp new file mode 100644 index 0000000..1d12944 --- /dev/null +++ b/examples/demo_copy.cpp @@ -0,0 +1,143 @@ +// $Id: demo_copy.cpp,v 1.11 2002/06/29 17:20:26 t1mpy Exp $ +// +// The authors have released ID3Lib as Public Domain (PD) and claim no +// copyright, patent or other intellectual property protection in this work. +// This means that it may be modified, redistributed and used in commercial +// and non-commercial software and hardware without restrictions. ID3Lib is +// distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either +// express or implied. +// +// The ID3Lib authors encourage improvements and optimisations to be sent to +// the ID3Lib coordinator, currently Dirk Mahoney (dirk@id3.org). Approved +// submissions may be altered, and will be included and released under these +// terms. + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <string.h> +#include "id3/id3lib_streams.h" +#include "id3/tag.h" + +#include "demo_copy_options.h" + +using std::cout; +using std::endl; +using std::cerr; + +static const char* VERSION_NUMBER = "$Revision: 1.11 $"; + +void PrintUsage(const char *sName) +{ + cout << "Usage: " << sName << " [OPTION]... SOURCE DEST" << endl; + cout << "Copy the tag(s) from SOURCE to DEST." << endl; + cout << endl; +} + +void PrintVersion(const char *sName) +{ + size_t nIndex; + cout << sName << " "; + for (nIndex = 0; nIndex < strlen(VERSION_NUMBER); nIndex++) + { + if (VERSION_NUMBER[nIndex] == ' ') + { + break; + } + } + nIndex++; + for (; nIndex < strlen (VERSION_NUMBER); nIndex++) + { + if (VERSION_NUMBER[nIndex] == ' ') + { + break; + } + cout << VERSION_NUMBER[nIndex]; + } + cout << endl; + cout << "Uses " << ID3LIB_FULL_NAME << endl << endl; + + cout << "This program copies tags from one file to another" << endl; +} + +void DisplayTags(ostream &os, luint nTags) +{ + if (!((nTags & ID3TT_ID3V1) || (nTags & ID3TT_ID3V2))) + { + os << "no tag"; + } + if (nTags & ID3TT_ID3V1) + { + os << "v1"; + } + if ((nTags & ID3TT_ID3V1) && (nTags & ID3TT_ID3V2)) + { + os << " and "; + } + if (nTags & ID3TT_ID3V2) + { + os << "v2"; + } +} + +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; +} + |