22#define __DCL_TRACE1_N __DCL_TRACE1
23#define __DCL_TRACE2_N __DCL_TRACE2
24#define __DCL_TRACE3_N __DCL_TRACE3
26#define __DCL_TRACE1_N(fmt, arg)
27#define __DCL_TRACE2_N(fmt, arg1, arg2)
28#define __DCL_TRACE3_N(fmt, arg1, arg2, arg3)
51 if (memcmp(
buf,
"ID3", 3) == 0) {
54 else if (memcmp(
buf,
"APETAGEX", 8) == 0) {
55 ape = APEv2::word(&
buf[8]) / 1000;
64 if (memcmp(
buf,
"APETAGEX", 8) == 0) {
65 ape = APEv2::word(&
buf[8]) / 1000;
67 else if (memcmp(&
buf[128],
"APETAGEX", 8) == 0) {
68 ape = APEv2::word(&
buf[128 + 8]) / 1000;
72 if (memcmp(&
buf[32],
"TAG", 3) == 0) {
107 while (dir.read(entry)) {
108 String name = entry.name();
110 if (name.compare(L
"..", name.length()) != 0) {
111 String path = dir.path() + name;
116 _args.output() << L
"[" << path << L
"] " << counter.
toString() <<
endl;
121 if (name.toLowerCase().endsWith(L
".mp3")) {
127 _args.output() << L
"[ " << name << L
"] " << counter.
toString() <<
endl;
void CharsetConvertException *size_t n
String toStringAll() const
off_t seek(off_t _offset, int _whence) __DCL_THROWS1(IOException *)
virtual size_t read(void *_buf, size_t _n) __DCL_THROWS1(IOException *)
static void read(const String &_filename, TagCounter &_counter)
static void readDir(const String &_path, TagCounter &_counter, const MainArguments &_args)