]> granicus.if.org Git - taglib/log
taglib
9 years agoFix saving MP4 files.
Tsuda Kageyu [Tue, 24 Nov 2015 14:41:10 +0000 (23:41 +0900)]
Fix saving MP4 files.

This fixes the issue reported at #619.

9 years agoFix instance references to a static member function.
Tsuda Kageyu [Tue, 24 Nov 2015 07:36:50 +0000 (16:36 +0900)]
Fix instance references to a static member function.

9 years agoSmall cosmetic fix.
Tsuda Kageyu [Tue, 24 Nov 2015 06:45:38 +0000 (15:45 +0900)]
Small cosmetic fix.

9 years agoMerge pull request #676 from TsudaKageyu/string-hide-private
Tsuda Kageyu [Mon, 23 Nov 2015 08:48:06 +0000 (17:48 +0900)]
Merge pull request #676 from TsudaKageyu/string-hide-private

Hide private things from a public header.

9 years agoHide some private functions from a public header.
Tsuda Kageyu [Sun, 22 Nov 2015 18:26:38 +0000 (03:26 +0900)]
Hide some private functions from a public header.

9 years agoHide a private static variable.
Tsuda Kageyu [Sun, 22 Nov 2015 16:32:12 +0000 (01:32 +0900)]
Hide a private static variable.

This is so-called Scott Mayers' singleton pattern.

9 years agoRemove duplicate tags when saving AIFF files.
Tsuda Kageyu [Sun, 22 Nov 2015 12:03:33 +0000 (21:03 +0900)]
Remove duplicate tags when saving AIFF files.

Just the same way as WAV already does.

9 years agoReduce redundant ref()/deref() operations.
Tsuda Kageyu [Sun, 22 Nov 2015 11:11:08 +0000 (20:11 +0900)]
Reduce redundant ref()/deref() operations.

9 years agoFix an instance reference to a static data member.
Tsuda Kageyu [Sun, 22 Nov 2015 10:43:17 +0000 (19:43 +0900)]
Fix an instance reference to a static data member.

9 years agoSilence some GCC warnings about no return statement.
Tsuda Kageyu [Sun, 22 Nov 2015 09:42:49 +0000 (18:42 +0900)]
Silence some GCC warnings about no return statement.

9 years agoAvoid using obsolete XiphComment::removeField().
Tsuda Kageyu [Sun, 22 Nov 2015 09:30:56 +0000 (18:30 +0900)]
Avoid using obsolete XiphComment::removeField().

9 years agoUpdate NEWS.
Tsuda Kageyu [Sun, 22 Nov 2015 07:23:53 +0000 (16:23 +0900)]
Update NEWS.

9 years agoMerge pull request #681 from TsudaKageyu/xiph-remove-fields
Tsuda Kageyu [Sun, 22 Nov 2015 07:19:15 +0000 (16:19 +0900)]
Merge pull request #681 from TsudaKageyu/xiph-remove-fields

Add alternative methods to XiphComment::removeField() that may cause …

9 years agoMerge branch 'genversion' of https://github.com/ufleisch/taglib into ufleisch-genversion
Tsuda Kageyu [Sun, 22 Nov 2015 01:38:35 +0000 (10:38 +0900)]
Merge branch 'genversion' of https://github.com/ufleisch/taglib into ufleisch-genversion

# Conflicts:
# CMakeLists.txt

9 years agoMake FileRef::FileTypeResolver work properly.
Tsuda Kageyu [Sat, 21 Nov 2015 09:29:41 +0000 (18:29 +0900)]
Make FileRef::FileTypeResolver work properly.

9 years agoStyle fixes in fileref.cpp.
Tsuda Kageyu [Sat, 21 Nov 2015 08:06:26 +0000 (17:06 +0900)]
Style fixes in fileref.cpp.

9 years agoFix a typo in a comment.
Tsuda Kageyu [Sat, 21 Nov 2015 01:32:32 +0000 (10:32 +0900)]
Fix a typo in a comment.

9 years agoUpdate NEWS.
Tsuda Kageyu [Sat, 21 Nov 2015 01:30:48 +0000 (10:30 +0900)]
Update NEWS.

9 years agoStyle fixes in fileref.cpp.
Tsuda Kageyu [Sat, 21 Nov 2015 01:29:37 +0000 (10:29 +0900)]
Style fixes in fileref.cpp.

9 years agoMerge pull request #528 from chouquette/master
Tsuda Kageyu [Sat, 21 Nov 2015 00:51:03 +0000 (09:51 +0900)]
Merge pull request #528 from chouquette/master

FileRef: Allow an IOStream to be used

9 years agoUnify common functions for finding tags.
Tsuda Kageyu [Sat, 21 Nov 2015 00:30:04 +0000 (09:30 +0900)]
Unify common functions for finding tags.

Several classes have exactly identical functions for finding tags.
This also hides the functions from public headers.

9 years agoAdd alternative methods to XiphComment::removeField().
Tsuda Kageyu [Wed, 18 Nov 2015 02:45:27 +0000 (11:45 +0900)]
Add alternative methods to XiphComment::removeField().

Using XiphComment::removeField() may lead to a linkage error, however we can't fix the method itself without breaking the ABI or changing its behavior.
So we added some alternative method and marked the old one deprecated.

9 years agoUpdate NEWS.
Tsuda Kageyu [Fri, 20 Nov 2015 14:08:43 +0000 (23:08 +0900)]
Update NEWS.

9 years agoMerge pull request #654 from TsudaKageyu/xiph-setcomment
Tsuda Kageyu [Fri, 20 Nov 2015 14:02:51 +0000 (23:02 +0900)]
Merge pull request #654 from TsudaKageyu/xiph-setcomment

Fix XiphComment::setComment() for the case that a Vorbis comment has …

9 years agoAvoid using String::null where an empty string is required.
Tsuda Kageyu [Fri, 20 Nov 2015 13:21:47 +0000 (22:21 +0900)]
Avoid using String::null where an empty string is required.

String::null is not necessarily be empty or remains the same instance.
Using it in a public header may lead to a linkage error.

9 years agoAvoid using String::isNull() where it is considered to be confused with isEmpty().
Tsuda Kageyu [Fri, 20 Nov 2015 11:59:13 +0000 (20:59 +0900)]
Avoid using String::isNull() where it is considered to be confused with isEmpty().

9 years agoRevert "Add a test about handing "COMMENT" and "DESCIPRION" fields in XiphComment."
Tsuda Kageyu [Fri, 20 Nov 2015 05:18:40 +0000 (14:18 +0900)]
Revert "Add a test about handing "COMMENT" and "DESCIPRION" fields in XiphComment."

This reverts commit 8f147034d6af7a4c2830b3113d4b257c1836fabe.

9 years agoRevert "Use always "COMMENT" field when updating XiphComment."
Tsuda Kageyu [Fri, 20 Nov 2015 05:18:23 +0000 (14:18 +0900)]
Revert "Use always "COMMENT" field when updating XiphComment."

This reverts commit ba5137bf2d3b1bcca9269e3a7f5f194243c87d23.

9 years agoMerge pull request #643 from TsudaKageyu/save-asf
Tsuda Kageyu [Fri, 20 Nov 2015 04:52:33 +0000 (13:52 +0900)]
Merge pull request #643 from TsudaKageyu/save-asf

Avoid writing duplicate tags when saving ASF files.

9 years agoRemove a warning from a comment and update NEWS.
Tsuda Kageyu [Fri, 20 Nov 2015 02:12:37 +0000 (11:12 +0900)]
Remove a warning from a comment and update NEWS.

9 years agoAvoid writing duplicate tags when saving ASF files.
Tsuda Kageyu [Tue, 4 Aug 2015 04:50:09 +0000 (13:50 +0900)]
Avoid writing duplicate tags when saving ASF files.
Reduce memory reallocations and copies when saving ASF files.

9 years agoUpdate NEWS.
Tsuda Kageyu [Fri, 20 Nov 2015 04:35:07 +0000 (13:35 +0900)]
Update NEWS.

9 years agoUpdate NEWS.
Tsuda Kageyu [Fri, 20 Nov 2015 04:25:28 +0000 (13:25 +0900)]
Update NEWS.

9 years agoMerge pull request #642 from TsudaKageyu/strip-and-properties
Tsuda Kageyu [Fri, 20 Nov 2015 04:24:01 +0000 (13:24 +0900)]
Merge pull request #642 from TsudaKageyu/strip-and-properties

Fix segfaults when calling File::properties() after strip().

9 years agoUpdate NEWS.
Tsuda Kageyu [Fri, 20 Nov 2015 01:50:21 +0000 (10:50 +0900)]
Update NEWS.

9 years agoMerge pull request #623 from TsudaKageyu/erase-duplicate-id3v2
Tsuda Kageyu [Fri, 20 Nov 2015 01:49:11 +0000 (10:49 +0900)]
Merge pull request #623 from TsudaKageyu/erase-duplicate-id3v2

Skip duplicate ID3v2 tags and treat them as an extra blank of the first one.

9 years agoConsistent rounding when calculating the MP4 audio length.
Tsuda Kageyu [Thu, 19 Nov 2015 09:24:20 +0000 (18:24 +0900)]
Consistent rounding when calculating the MP4 audio length.

9 years agoUpdate NEWS.
Tsuda Kageyu [Thu, 19 Nov 2015 08:55:18 +0000 (17:55 +0900)]
Update NEWS.

9 years agoEfficient lookup for an ID3v2 tag in a MPEG file.
Tsuda Kageyu [Thu, 19 Nov 2015 08:29:25 +0000 (17:29 +0900)]
Efficient lookup for an ID3v2 tag in a MPEG file.

An ID3v2 tag or MPEG frame is most likely be at the beginning of the file.

9 years agoEfficient lookup for the MP4/ASF field name and ID3v1 genre tables.
Tsuda Kageyu [Thu, 19 Nov 2015 07:35:55 +0000 (16:35 +0900)]
Efficient lookup for the MP4/ASF field name and ID3v1 genre tables.

Linear lookup is much faster and memory efficient when an array is very small.

9 years agoAdd some tests for String::toInt() with too large values.
Tsuda Kageyu [Thu, 19 Nov 2015 05:52:02 +0000 (14:52 +0900)]
Add some tests for String::toInt() with too large values.

9 years agoBackport shorter versions of some functions from taglib2.
Tsuda Kageyu [Thu, 19 Nov 2015 05:42:36 +0000 (14:42 +0900)]
Backport shorter versions of some functions from taglib2.

9 years agoFix a string conversion bug in tag_c.cpp.
Tsuda Kageyu [Thu, 19 Nov 2015 02:50:39 +0000 (11:50 +0900)]
Fix a string conversion bug in tag_c.cpp.

9 years agoAvoid using ByteVector::null where an empty vector is required.
Tsuda Kageyu [Thu, 19 Nov 2015 01:52:46 +0000 (10:52 +0900)]
Avoid using ByteVector::null where an empty vector is required.

ByteVector::null is not necessarily be empty or remains the same instance.
Using it in a public header may lead to a linkage error.

9 years agoEfficient lookup for the ID3v2 frame ID table.
Tsuda Kageyu [Thu, 19 Nov 2015 01:07:10 +0000 (10:07 +0900)]
Efficient lookup for the ID3v2 frame ID table.

Linear lookup is much faster and memory efficient when an array is very small.

9 years agoMerge pull request #493 from TsudaKageyu/nested-refcounter
Tsuda Kageyu [Thu, 19 Nov 2015 00:37:40 +0000 (09:37 +0900)]
Merge pull request #493 from TsudaKageyu/nested-refcounter

Simplify overly complicated ByteVector::mid() implementation.

9 years agoResolve some conflicts before merging.
Tsuda Kageyu [Thu, 19 Nov 2015 00:27:15 +0000 (09:27 +0900)]
Resolve some conflicts before merging.

9 years agoConsistent notations between ByteVector::data() and at().
Tsuda Kageyu [Wed, 26 Aug 2015 07:38:06 +0000 (16:38 +0900)]
Consistent notations between ByteVector::data() and at().

9 years agoUse linear search instead of the Knuth-Morris-Pratt algorithm in ByteVector::find().
Tsuda Kageyu [Mon, 22 Jun 2015 01:37:20 +0000 (10:37 +0900)]
Use linear search instead of the Knuth-Morris-Pratt algorithm in ByteVector::find().
In almost all cases, it handles too small data for KMP to work effectively.

9 years agoReplace DATA macro with more straightforward notations.
Tsuda Kageyu [Sun, 17 May 2015 16:12:21 +0000 (01:12 +0900)]
Replace DATA macro with more straightforward notations.

9 years agoSimplify overly complicated ByteVector::mid() implementation.
Tsuda Kageyu [Tue, 6 Jan 2015 02:32:31 +0000 (11:32 +0900)]
Simplify overly complicated ByteVector::mid() implementation.
Especially remove the useless nested RefCounters.

9 years agoUse the same type name between a List and its iterator.
Tsuda Kageyu [Wed, 18 Nov 2015 08:58:13 +0000 (17:58 +0900)]
Use the same type name between a List and its iterator.

9 years agoMerge pull request #661 from ufleisch/podcast-frames
Tsuda Kageyu [Wed, 18 Nov 2015 08:48:14 +0000 (17:48 +0900)]
Merge pull request #661 from ufleisch/podcast-frames

Support for Apple podcast frames

9 years agoMerge pull request #628 from RyanLucchese/rl-ConstReverseIterator-solaris-bug
Tsuda Kageyu [Wed, 18 Nov 2015 08:23:16 +0000 (17:23 +0900)]
Merge pull request #628 from RyanLucchese/rl-ConstReverseIterator-solaris-bug

return const correct reverse iterator for newer Sun compiler

9 years agoMerge pull request #629 from RyanLucchese/rl-fix-class-instantiation-solstudio
Tsuda Kageyu [Wed, 18 Nov 2015 08:22:25 +0000 (17:22 +0900)]
Merge pull request #629 from RyanLucchese/rl-fix-class-instantiation-solstudio

check SUNPRO_CC version before using Map workaround

9 years agoMerge pull request #608 from TsudaKageyu/mp4-has-tags
Tsuda Kageyu [Wed, 18 Nov 2015 08:14:26 +0000 (17:14 +0900)]
Merge pull request #608 from TsudaKageyu/mp4-has-tags

Add a method to check if an MP4 file on disk actually has a tag.

9 years agoMake use of List iterators.
Tsuda Kageyu [Wed, 18 Nov 2015 08:06:49 +0000 (17:06 +0900)]
Make use of List iterators.

9 years agoUse List::isEmpty() rather than size() to check if the list is empty.
Tsuda Kageyu [Wed, 18 Nov 2015 07:57:41 +0000 (16:57 +0900)]
Use List::isEmpty() rather than size() to check if the list is empty.

std::list::empty() is guaranteed to be an O(1) operation.

9 years agoMake use of List iterators.
Tsuda Kageyu [Wed, 18 Nov 2015 07:33:28 +0000 (16:33 +0900)]
Make use of List iterators.

9 years agoMake use of List iterators and setAutoDelete().
Tsuda Kageyu [Wed, 18 Nov 2015 06:29:04 +0000 (15:29 +0900)]
Make use of List iterators and setAutoDelete().

9 years agoAdd a comment to List::isEmpty().
Tsuda Kageyu [Wed, 18 Nov 2015 06:14:50 +0000 (15:14 +0900)]
Add a comment to List::isEmpty().

9 years agoSeparate some tests for MP4::File::hasMP4Tag().
Tsuda Kageyu [Wed, 18 Nov 2015 05:25:22 +0000 (14:25 +0900)]
Separate some tests for MP4::File::hasMP4Tag().

9 years agoAmend the comment on MP4::File::hasMP4Tag().
Tsuda Kageyu [Wed, 18 Nov 2015 05:17:29 +0000 (14:17 +0900)]
Amend the comment on MP4::File::hasMP4Tag().

9 years agoReduce duplicate code between String::ctor() and operator=().
Tsuda Kageyu [Wed, 18 Nov 2015 05:03:45 +0000 (14:03 +0900)]
Reduce duplicate code between String::ctor() and operator=().

It's safer to have only one pair of ref()/deref() than to have a several pairs.

9 years agoMark some variables and functions deprecated.
Tsuda Kageyu [Wed, 18 Nov 2015 01:29:25 +0000 (10:29 +0900)]
Mark some variables and functions deprecated.

ByteVector::null, ByteVector::isNull(), String::null, String::isNull() have got marked deprecated.
It's dangerous to use them, and they will be removed in taglib2.

9 years agoAdd a test for the CRC checksum of Ogg pages.
Tsuda Kageyu [Tue, 17 Nov 2015 06:05:43 +0000 (15:05 +0900)]
Add a test for the CRC checksum of Ogg pages.

9 years agoAdd some notes about ByteVector::isNull() and ByteVector::null.
Tsuda Kageyu [Tue, 17 Nov 2015 04:06:03 +0000 (13:06 +0900)]
Add some notes about ByteVector::isNull() and ByteVector::null.

9 years agoAdd some notes about String::isNull() and String::null.
Tsuda Kageyu [Tue, 17 Nov 2015 02:41:13 +0000 (11:41 +0900)]
Add some notes about String::isNull() and String::null.

9 years agoAdd String::clear() method to clear the string.
Tsuda Kageyu [Tue, 17 Nov 2015 02:29:52 +0000 (11:29 +0900)]
Add String::clear() method to clear the string.

9 years agovsnprintf()/vsprintf() does not necessarily return -1 when failed.
Tsuda Kageyu [Tue, 17 Nov 2015 02:06:19 +0000 (11:06 +0900)]
vsnprintf()/vsprintf() does not necessarily return -1 when failed.

9 years agoUse std::wstring::empty() rather than size() == 0.
Tsuda Kageyu [Tue, 17 Nov 2015 01:49:30 +0000 (10:49 +0900)]
Use std::wstring::empty() rather than size() == 0.

Depending on the implementation, empty() can be more efficient than size().

9 years agoFix the usage of boost::endian::endian_reverse().
Tsuda Kageyu [Sat, 14 Nov 2015 05:49:59 +0000 (14:49 +0900)]
Fix the usage of boost::endian::endian_reverse().

9 years agoSkip duplicate ID3v2 tags and treat them as an extra blank of the first one.
Tsuda Kageyu [Fri, 13 Nov 2015 02:55:56 +0000 (11:55 +0900)]
Skip duplicate ID3v2 tags and treat them as an extra blank of the first one.

This enables all the file formats to handle duplicate ID3v2 tags properly and erase them automatically.

9 years agoCorrect the ID3v2 padding size calculation.
Tsuda Kageyu [Fri, 13 Nov 2015 02:44:12 +0000 (11:44 +0900)]
Correct the ID3v2 padding size calculation.

9 years agoReduce memory reallocation when rendering an ID3v2 tag.
Tsuda Kageyu [Fri, 13 Nov 2015 02:35:37 +0000 (11:35 +0900)]
Reduce memory reallocation when rendering an ID3v2 tag.
Prevent an ID3v2 padding from being ridiculously large.

9 years agoRemove an unused private data member.
Tsuda Kageyu [Fri, 13 Nov 2015 02:23:27 +0000 (11:23 +0900)]
Remove an unused private data member.

9 years agoAdd a method to check if an MP4 file on disk actually has a tag.
Tsuda Kageyu [Fri, 12 Jun 2015 06:12:58 +0000 (15:12 +0900)]
Add a method to check if an MP4 file on disk actually has a tag.

9 years agoAdd a test about handing "COMMENT" and "DESCIPRION" fields in XiphComment.
Tsuda Kageyu [Fri, 13 Nov 2015 02:07:50 +0000 (11:07 +0900)]
Add a test about handing "COMMENT" and "DESCIPRION" fields in XiphComment.

9 years agoMake use of the Boost Endian library for byte swapping.
Tsuda Kageyu [Fri, 13 Nov 2015 01:58:23 +0000 (10:58 +0900)]
Make use of the Boost Endian library for byte swapping.

It's likely to be better at choosing the most efficient method than our CMake tests.

9 years agoSilence some MSVC security warnings by replacing strdup() with _strdup().
Tsuda Kageyu [Fri, 13 Nov 2015 01:06:01 +0000 (10:06 +0900)]
Silence some MSVC security warnings by replacing strdup() with _strdup().

Backported from taglib2.

9 years agoUse always "COMMENT" field when updating XiphComment.
Tsuda Kageyu [Thu, 12 Nov 2015 08:37:22 +0000 (17:37 +0900)]
Use always "COMMENT" field when updating XiphComment.

The recommended field name for additional comments is "COMMENT".
It's the same behavior as "DATE" or "TRACKNUMBER" field.

9 years agoFix XiphComment::setComment() for the case that a Vorbis comment has the "COMMENT...
Tsuda Kageyu [Thu, 3 Sep 2015 00:12:05 +0000 (09:12 +0900)]
Fix XiphComment::setComment() for the case that a Vorbis comment has the "COMMENT" field.

9 years agoHide private things from a public header.
Tsuda Kageyu [Thu, 12 Nov 2015 06:36:02 +0000 (15:36 +0900)]
Hide private things from a public header.

Some functions and a variable in tstring.h are not needed to be exposed in a public header.

9 years agoFix an instance reference to a static data member.
Tsuda Kageyu [Thu, 12 Nov 2015 05:48:24 +0000 (14:48 +0900)]
Fix an instance reference to a static data member.

9 years agoSmall cleanups in CMakeLists.txt.
Tsuda Kageyu [Thu, 12 Nov 2015 05:41:15 +0000 (14:41 +0900)]
Small cleanups in CMakeLists.txt.

9 years agoSmall cleanups in audioproperties.cpp.
Tsuda Kageyu [Thu, 12 Nov 2015 05:24:04 +0000 (14:24 +0900)]
Small cleanups in audioproperties.cpp.

9 years agoA bit more accurate calculation of the AIFF audio length.
Tsuda Kageyu [Thu, 12 Nov 2015 05:10:09 +0000 (14:10 +0900)]
A bit more accurate calculation of the AIFF audio length.

Actually, it's unlikely to improve the accuracy, but prevents a useless round-trip conversion between double and int.

9 years agoSkip both ID3v1 and APE tags when seeking the last MPEG frame.
Tsuda Kageyu [Thu, 12 Nov 2015 04:52:46 +0000 (13:52 +0900)]
Skip both ID3v1 and APE tags when seeking the last MPEG frame.

9 years ago1.10 v1.10
Lukáš Lalinský [Wed, 11 Nov 2015 21:41:59 +0000 (22:41 +0100)]
1.10

9 years agoUse List::isEmpty() than size() > 0.
Tsuda Kageyu [Fri, 6 Nov 2015 07:12:36 +0000 (16:12 +0900)]
Use List::isEmpty() than size() > 0.

Small revision of pokowaka's fix. isEmpty() is a little better than size() > 0, since std::list::empty() is guaranteed to be an O(1) operation.

9 years agoMerge pull request #675 from garima-g/patch-1
Tsuda Kageyu [Thu, 5 Nov 2015 06:43:03 +0000 (15:43 +0900)]
Merge pull request #675 from garima-g/patch-1

Add self-assignment check in operator=

9 years agoAdd self-assignment check in operator=
garima-g [Thu, 5 Nov 2015 05:49:44 +0000 (11:19 +0530)]
Add self-assignment check in operator=

Method 'operator=' should check its argument with 'this' pointer.

9 years agoAdd self-assignment check in operator=
garima-g [Thu, 5 Nov 2015 05:46:34 +0000 (11:16 +0530)]
Add self-assignment check in operator=

Method 'operator=' should check its argument with 'this' pointer.

9 years agoAdd self-assignment check in operator=
garima-g [Thu, 5 Nov 2015 05:42:24 +0000 (11:12 +0530)]
Add self-assignment check in operator=

Method 'operator=' should check its argument with 'this' pointer.

9 years agoAdd self-assignment check in operator=
garima-g [Thu, 5 Nov 2015 05:39:20 +0000 (11:09 +0530)]
Add self-assignment check in operator=

Method 'operator=' should check its argument with 'this' pointer.

9 years agoMerge pull request #669 from pokowaka/bad_access
Lukáš Lalinský [Mon, 12 Oct 2015 12:30:00 +0000 (14:30 +0200)]
Merge pull request #669 from pokowaka/bad_access

Fixes access violation

9 years agoFixes access violation
Erwin Jansen [Sat, 10 Oct 2015 05:11:27 +0000 (22:11 -0700)]
Fixes access violation

- Fixes access violation when setting empty stringlist on integer
  properties in mp4 tag
- Add a unit test that validates the fix.

9 years agoMerge pull request #664 from pbhd/master
Stephen F. Booth [Thu, 24 Sep 2015 03:09:55 +0000 (23:09 -0400)]
Merge pull request #664 from pbhd/master

add options R, I, D for replace/insert/delete of arbitrary tags

9 years agoadd options R, I, D for replace/insert/delete of arbitrary tags
Peter Bauer [Wed, 23 Sep 2015 09:35:58 +0000 (11:35 +0200)]
add options R, I, D for replace/insert/delete of arbitrary tags

9 years agoFileRef: Allow an IOStream to be used
Hugo Beauzée-Luyssen [Tue, 28 Apr 2015 09:56:07 +0000 (11:56 +0200)]
FileRef: Allow an IOStream to be used