diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/id3v2/id3_field_binary.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/id3v2/id3_field_binary.cpp')
-rw-r--r-- | Src/id3v2/id3_field_binary.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/Src/id3v2/id3_field_binary.cpp b/Src/id3v2/id3_field_binary.cpp new file mode 100644 index 00000000..47c51be6 --- /dev/null +++ b/Src/id3v2/id3_field_binary.cpp @@ -0,0 +1,83 @@ +// 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. +// +// Mon Nov 23 18:34:01 1998 +// improved/optimized/whatever 10/30/00 JF + +#include <windows.h> +#include <stdio.h> +#include <memory.h> +#include "id3_field.h" + +void ID3_Field::Set(uchar *newData, luint newSize) +{ + Clear(); + + if (newSize) + { + if (newSize == 4294967295/*-1*/) + { + ID3_THROW(ID3E_NoMemory); + return; + } + + if (!(data = (unsigned char *)calloc(newSize, sizeof(unsigned char)))) + { + ID3_THROW(ID3E_NoMemory); + } + else + { + memcpy (data, newData, newSize); + size = newSize; + + type = ID3FTY_BINARY; + hasChanged = true; + } + } + + return; +} + +void ID3_Field::Get(uchar *buffer, luint buffLength) +{ + if (data && size && buffLength && buffer) + { + luint actualBytes = MIN(buffLength, size); + memcpy(buffer, data, actualBytes); + } +} + +luint ID3_Field::ParseBinary (uchar *buffer, luint posn, luint buffSize) +{ + luint bytesUsed = 0; + + bytesUsed = buffSize - posn; + + if (fixedLength != -1) + bytesUsed = MIN (fixedLength, bytesUsed); + + Set(&buffer[ posn ], bytesUsed); + + hasChanged = false; + + return bytesUsed; +} + +luint ID3_Field::RenderBinary (uchar *buffer) +{ + luint bytesUsed = 0; + + bytesUsed = BinSize(); + memcpy(buffer, data, bytesUsed); + + hasChanged = false; + + return bytesUsed; +}
\ No newline at end of file |