mirror of
https://git.code.sf.net/p/ntfs-3g/ntfs-3g.git
synced 2024-11-24 10:33:33 +08:00
e0c2231543
which caused bits to not be cleared or set if the first bit in the run was not a multiple of eight. (Anton)
1129 lines
61 KiB
Plaintext
1129 lines
61 KiB
Plaintext
02/01/2006 - 1.13.0 - Lots and lots and lots of fixes and enhancements.
|
|
|
|
- Temporarily disable use of the legal ansi character checking in
|
|
libntfs/unistr.c::ntfs_names_collate() pending a proper fix at some
|
|
point. (Anton)
|
|
- Rewrite gcc version detection logic using the -dumpversion option.
|
|
Tested on various OS and architectures and gcc versions from 2.95 to
|
|
4.0.2 with some weird ones like 3.5-blah thrown in, too. (Anton)
|
|
- Fix bogus le16_to_cpu() which should be le32_to_cpu() when accessing
|
|
the attribute list entry attribute type in some places in
|
|
libntfs/attrib.c. (Anton)
|
|
- Fix silly bug introduced in 1.12.0 which breaks ntfsfix (and others
|
|
possibly) when calling ntfs_attr_lookup() with AT_UNNAMED name and
|
|
no ntfs inode in the search context. (Anton)
|
|
- Fix compilation on OSX in ntfsresize.c, ntfsclone.c, and ntfscmp.c
|
|
where stderr = stdout is not legal (but happens to work on Linux) to
|
|
do portable low-level file descriptor mangling. (Anton)
|
|
- Add test/runlist-data to EXTRA_DIST so it gets included in the
|
|
distribution otherwise make test fails on released sources. Solution
|
|
is not perfect as it also adds the test/runlist-data/CVS directory
|
|
but it will do at least for me. (Anton)
|
|
- Fix compilation and warnings in ntfsdecrypt.c on OSX/gcc4.0.1. The
|
|
compilation failure was because we use strnlen() which is gnu
|
|
specific and not present on my current version of OSX so ntfsdecrypt
|
|
now provides own version if it is not present on system. (Anton)
|
|
- Fix endianness bug (le16 instead of le32 when accessing mft record
|
|
bytes_in_use) in volume.c::ntfs_volume_write_flags() and
|
|
ntfsfix.c::OLD_ntfs_volume_set_flags(). (Anton)
|
|
- Fix endianness bugs in ntfsinfo. (Anton)
|
|
- Fix endianness bug in libntfs/index.c. (Anton)
|
|
- ntfsresize: check and report bad sectors before cluster allocation
|
|
check because chkdsk doesn't fix $Bitmap with bad sectors. (Szaka)
|
|
- $EA can be resident and non-resident. Fix libntfs/attrib.c::
|
|
ntfs_attr_can_be_resident() apropriately. (Anton)
|
|
- mkntfs: optionally create NTFS version 3.0 (W2K) or 3.1 (XP, W2K3,
|
|
Vista). (Implementation by Erik Sornes, adaption by Szaka)
|
|
- ntfsmount: Add 'streams_interface=' option to select named data
|
|
streams access interface. Currently supported interfaces are 'none',
|
|
'windows' and 'xattr'. (Yura)
|
|
- ntfscat can display named attributes, streams too. (Szaka)
|
|
- Remove Dputs(), Dprintf(), Dperror(), ntfs_debug(), ntfs_error() and
|
|
Sprintf(). Forward callers to ntfs_log_*(). (Yuval)
|
|
- Add some debugging to ntfsdecrypt.c to allow printing of the private
|
|
key after it is decrypted (this is ifdeffed out by default). (Anton)
|
|
- fflush() ntfs_log_ streams. (Christophe)
|
|
- Working with regular files no longer needs the --force option, except
|
|
for mkntfs. (Szaka)
|
|
- Fix ntfs_non_resident_attr_expand() bug, that occurred if we enlarge
|
|
sparse or compressed file, but do not need to allocate new clusters
|
|
to perform this. (Yura)
|
|
- Fix ntfsdecrypt endianness bugs thus it now works on OSX running on
|
|
a dual G5! (Anton)
|
|
- Match function parameters names between .h and .c files. (Yuval)
|
|
- Fix comment formats. (Yuval)
|
|
- ntfsinfo and ntfsls follow the convention how other utilities read
|
|
the device argument: no -d or --device option is needed. (Szaka)
|
|
- ntfsinfo: dump index attribute types and keys. (Szaka)
|
|
- mkntfs: don't fill the last $MFT cluster with empty MFT records if
|
|
the cluster size <= 16 kB. This is needed to conform to Windows'
|
|
format behavior. (Szaka)
|
|
- Add @flags field to struct ntfs_inode. Remove NIno{Sparse,Compressed,
|
|
Encrypted}, update all users to use @(ntfs_inode)->flags. (Yura)
|
|
- Make @(ntfs_inode)->data_size and @(ntfs_inode)->allocated_size to
|
|
always contain valid value. (Yura)
|
|
- Always set correct file size and attributes in ntfs_link(). (Yura)
|
|
- Add info about Interix special files (symbolic links, character and
|
|
block devices, FIFOs and sockets) to layout.h. Teach ntfsmount to
|
|
handle them. (Yura)
|
|
- Fix allocated data size for resident attributes. (Yura)
|
|
- ntfsclone: check available free space on the destination before
|
|
starting to clone, image or restore. (Szaka)
|
|
- Change @type parameter for ntfs_create() to be dev_t rather than
|
|
internal NTFS_DT_* constants. (Yura)
|
|
- New APIs (dir.[ch]):
|
|
ntfs_create_device() for Interix block and character devices
|
|
creation.
|
|
ntfs_crate_symlink() for Interix symbolic links creation. (Yura)
|
|
- Teach ntfs_create() to create Interix FIFOs and sockets. (Yura)
|
|
- Fix the -u option in ntfsundelete. Instead of a confusing optional
|
|
parameter, there's a new option -i with a required parameter. (Rich)
|
|
- Make ntfsinfo report the MFT record flags properly, this includes
|
|
the less encountered flags, and reporting the in_use flag instead of
|
|
inverting it to unused. (Yuval)
|
|
- mkntfs: fix segfault when volume had more than 2^31 clusters. (Szaka)
|
|
- Add @from_vcn parameter to ntfs_attr_update_mapping_pairs, update all
|
|
users to submit it, thus write speed to very fragmented files
|
|
dramatically increased, while write speed to low fragmented files
|
|
stayed at approximately same level. (Yura)
|
|
- Automatically update access and change time in ntfs_attr_p{read,write}
|
|
and ntfs_attr_truncate. (Yura)
|
|
- Add support of MS_NOATIME flag to ntfs_mount(). (Yura)
|
|
- ntfsclone: --metadata also wipes out the timestamps in the $I30 and
|
|
in the /$Extend/$Quota:$Q index root attributes. (Szaka)
|
|
- ntfsmount: Add FreeBSD support. (Yura)
|
|
- ntfsmount: Fix bug with moving non-empty directories. (Yura)
|
|
- ntfsinfo: dump $Secure:$SDS in verbose mode. (Szaka)
|
|
- ntfsinfo: fix off-by-one in ACL dumping, one ACE was missed. (Szaka)
|
|
- ntfsmount: Rename "succeed_chmod" -> "silent". Do not return error
|
|
on chown too. (Yura)
|
|
- Fix stupid bug in libntfs/bitmap.c::ntfs_bitmap_set_bits_in_run()
|
|
which caused bits to not be cleared or set if the first bit in the
|
|
run was not a multiple of eight. (Anton)
|
|
|
|
10/10/2005 - 1.12.1 - Minor fix to location of mount.ntfs-fuse and mkfs.ntfs.
|
|
|
|
- Fix hardcoded location for uninstalling mount.ntfs-fuse hardlink to
|
|
match the relocatable location for installing it. (Anton, Szaka)
|
|
- Move mount.ntfs-fuse and mkfs.ntfs to be symlinks instead of
|
|
hardlinks and move both to /sbin rather than prefix/sbin. Note we
|
|
still obey $destdir so building packages works as well as installing
|
|
into alternate chroot / other system still works. (Anton)
|
|
- ntfscmp: fix some corner cases and all memory leaks; handle corrupt
|
|
NTFS more gracefully. (Szaka)
|
|
- If the system does not have realpath(), supply our own dummy version
|
|
which just copies the string without any kind of checking or
|
|
expansion. (Anton)
|
|
|
|
07/10/2005 - 1.12.0 - Lots of fixes and enhancements!
|
|
|
|
- Add ./configure detection for gnutls library and make minimum version
|
|
1.2.3 which is the one that has the rsa key export fixed. (Anton)
|
|
- Put in a minimum version for libgcrypt of 1.2.0 as I do not know if
|
|
our code works with earlier versions. (Anton)
|
|
- Fix some memory leaks in ntfsdecrypt and do some cleanups. (Anton)
|
|
- Fix ntfsdecrypt to also work with passwordless files. Note this
|
|
requires a patched gnutls library or it still does not work. (Anton)
|
|
- Add new APIs for index adding/remove:
|
|
index.[ch]::ntfs_index_add_filename and index.[ch]::ntfs_index_rm.
|
|
They support only basic cases, so can fail with EOPNOTSUPP. (Yura)
|
|
- Add new API for index context reinitialization:
|
|
ntfs_index_ctx_reinit. (Yura)
|
|
- Add new high-level APIs for file and directory creation/deletion that
|
|
rely on ntfs_index_{add_filename,rm}:
|
|
dir.[ch]::ntfs_create and dir.[ch]::ntfs_delete. (Yura)
|
|
- Add @creation_time field to struct ntfs_inode and rename [acm]time
|
|
fields to @last_{data_change,mft_change,access}_time. Update them in
|
|
STANDARD_INFORMATION and FILE_NAMEs during inode sync. (Yura)
|
|
- layout.h: Add @v1_end and @v3_end markers for offsetof to struct
|
|
FILE_NAME_ATTR. Change type of @clusters_per_index_block from u8 to
|
|
s8, fix error in comment. Simplify a bit INDEX_ENTRY struct. (Yura)
|
|
- ntfstime.h: Use cpu_to_sle64 and sle64_to_cpu in utc2ntfs and
|
|
ntfs2utc respectively. Update all users. (Yura)
|
|
- Add @indx_record_size and @inx_record_size_bits to struct ntfs_volume.
|
|
Set them during mount. (Yura)
|
|
- attrib.c: Set RESIDENT_ATTR_IS_INDEXED flag for FILE_NAME attribute in
|
|
ntfs_attr_add. (Yura)
|
|
- inode.c: Do not sync STANDARD_INFORMATION and FILE_NAMEs for
|
|
freed inodes. (Yura)
|
|
- mft.c: Set *time and *size fields of struct ntfs_inode in
|
|
ntfs_mft_record_alloc. (Yura)
|
|
- Make ntfsmount use new APIs for file and directory creation/deletion.
|
|
Implement utime operation. (Yura)
|
|
- Hard link mkfs.ntfs and mkfs.ntfs.8 with mkntfs and mkntfs.8. (Szaka)
|
|
- Only include sys/ioctl.h in libntfs/device.c if ./configure detected
|
|
it to be present. (Christophe)
|
|
- ntfscluster: fix incorrect volume usage calculation. (Szaka)
|
|
- ntfscluster, utils.c::mft_next_record(): fix gigaleak. (Szaka)
|
|
- Define PATH_MAX if not defined in ntfsprogs/ntfsmount.c and
|
|
libntfs/volume.c. Needed to compile on DOS with djgpp. (Christophe)
|
|
- Switch ntfsmount to use getopt_long. (Yuval, minor fixes by Yura)
|
|
- ntfsmount: Fix 'df' output. (Yuval)
|
|
- Support journals which have been modified by chkdsk. (Anton, Szaka)
|
|
- Support journals ($LogFile) with only one restart page as well as
|
|
journals with two different restart pages. (Anton, Szaka)
|
|
- Add @val parameter to ntfs_attr_add and @val and @size parameters to
|
|
ntfs_resident_attr_record_add. (Yura)
|
|
- Fix attribute list adding for always resident attributes. (Yura)
|
|
- New API for hard link creating: dir.[ch]::ntfs_link. (Yura)
|
|
- ntfsresize: emphasize that disk partitioning must use sector as the
|
|
unit instead of cylinder to avoid shifting of the partition. (Szaka)
|
|
- Rename API: ntfs_volume_set_flags() as it is misleading. It does not
|
|
set a flag, it overwrites the flags! Rename it to
|
|
ntfs_volume_write_flags() and clean it up a lot. Update all
|
|
callers. (Anton)
|
|
- Change everything to supply an ntfs_inode and NULL for mft record
|
|
when calling ntfs_attr_get_search_ctx() except a very few cases which
|
|
genuinely need this functionality as they work on a too low level.
|
|
Make sure all those cases are ok. (Anton)
|
|
- ntfsclone: fix saving by sectors during --rescue (Scott Hansen, Szaka)
|
|
- Fix the definition of the CHKD ntfs record magic. It had an off by
|
|
two error causing it to be CHKB instead of CHKD. (Anton)
|
|
- Add new utility ntfscmp (make extra) which compares two NTFS volumes
|
|
and tell the differences. It's used for development, debugging,
|
|
testing, etc. (Szaka)
|
|
- ntfsresize, ntfsclone: accept incorrect $Bitmap size if it covers
|
|
the entire volume. (Szaka)
|
|
- mkntfs: Fix silly bug where I forgot to add the "H:S:p:" string to
|
|
the getopt() parsing string for those options. Cannot be used very
|
|
often if people only now noticed! (Anton)
|
|
- ntfsmount: Add 'locale' option. (Yura)
|
|
- ntfsmount: Change interface to 'ntfsmount device mount_point'. (Yura)
|
|
- Hardlink ntfsmount to /sbin/mount.ntfs-fuse, thus it possible mounting
|
|
from fstab by specifying ntfs-fuse filesystem type. (Yura, Szaka)
|
|
- Fix stupid bug in mkntfs which caused it to fail even though only the
|
|
backup boot sector could not be written because a 2.4 kernel is used
|
|
and the partition has an odd number of sectors. (Anton)
|
|
- Add API (actually renamed from what Rich/FlatCap did):
|
|
volume.[hc]::ntfs_libntfs_version() which returns a pointer to a
|
|
static const string of the libntfs verion, i.e. at the moment this is
|
|
"8.0.0". This required moving the version specifications from
|
|
libntfs/Makefile.am to configure.ac. This should hopefully have the
|
|
sideeffect that I will remember to increment it when incrementing the
|
|
ntfsprogs version number when making a release given the two are
|
|
right under one another. (Anton)
|
|
- Change ALL utilities to display the libntfs version they are running
|
|
on. This should make debugging easier in the case that people are
|
|
running mismatched utilities/library. (Anton)
|
|
|
|
08/08/2005 - 1.11.2 - ntfsdecrypt now works and lots of fixes and improvements.
|
|
|
|
- ntfsls: Fix display of non-system files whose name begins with the
|
|
'$' character. (Yura)
|
|
- Move ntfs2utc and utc2ntfs from utils.[ch] to ntfstime.h. (Yura,
|
|
Anton)
|
|
- Add [acm]time fields to struct ntfs_inode and set them during
|
|
ntfs_inode_open(). Update ntfsmount to use them. (Yura)
|
|
- index.c::ntfs_index_lookup(): Fix bug when index context did not
|
|
point to the index root in which the entry located. (Yura)
|
|
- ntfsresize: relocate_attributes(): Do not stop processing MFT record
|
|
attributes at AT_DATA of $BadClus and $Bitmap. In practice, there
|
|
are no non-resident attributes after them so this is a bug which was
|
|
introduced in 1.11.0 which should not have caused data loss. (Szaka)
|
|
- ntfsresize: Support relocation of $MFT with $ATTRIBUTE_LIST. (Szaka)
|
|
- ntfsresize: Support resizing into the middle of a $MFT $DATA
|
|
extent. (Szaka)
|
|
- ntfscp: Fix attribute name parsing bug introduced in 1.10.0. (Yura)
|
|
- ntfsinfo: Dump more information about indexes. (Yura)
|
|
- Fix unistr.c::ntfs_mbstoucs() on systems with utf8 locale. (Yura)
|
|
- Change errno and print more verbose message in the case of a failing
|
|
logfile check. (Yura)
|
|
- Fix random errno returned by ntfs_inode_open() if the MFT record was
|
|
not in use. (Szaka)
|
|
- Fix ntfs_attr_p{read,write}() to not return less bytes if trapped on
|
|
unmapped runlist region. (Yura)
|
|
- Make find work correctly on volumes mounted by ntfsmount. (Yura)
|
|
- Replaced all occurances of ENOTSUP with EOPNOTSUPP to be in better
|
|
harmony with the kernel driver. (Szaka)
|
|
- Fix ntfs_is_cb_compressed() for nasty runlist merging case in which
|
|
compression block was incorrectly treated as not compressed. (Yura,
|
|
Anton)
|
|
- ntfsresize: Fix for ntfs_rl_truncate() EIO: Always set the correct
|
|
size for $BadClus::$Bad, even if Windows set it incorrectly. (Szaka)
|
|
- Make ntfs_attr_open() resolve attribute name for ntfs_attr struct
|
|
in case NULL passed instead of name. (Yura)
|
|
- ntfsdecrypt (make extra) is now fully functional using libgcrypt and
|
|
gnutls 1.2.0 (not later, that is broken at present). It decrypts all
|
|
types of compressed files that ntfs creates, i.e. DesX, AES-256, and
|
|
3Des. The only thing it requires is the user's private key which
|
|
needs to be supplied via a .pfx file (a PKCS#12 file). Such a file
|
|
can be created in windows XP SP2 by running cipher with the export
|
|
key option or in older windows versions by running the certificates
|
|
snap-in to the microsoft management console (mmc). Note that due to
|
|
a bug in gnutls you have to protect the .pfx file with a password.
|
|
An empty password will not work. (Yuval, Anton)
|
|
- Add information about $EFS on-disk structures to layout.h. (Yuval,
|
|
Anton)
|
|
- Fix build so that make extra directly after ./configure works.
|
|
Thanks to Yuval for the bug report. (Anton)
|
|
- Add ./configure option --enable-crypto and if enabled detect whether
|
|
libgcrypt is present or not and only then build ntfsdecrypt. (Anton)
|
|
|
|
20/07/2005 - 1.11.1 - Fix several ntfsmount bugs.
|
|
|
|
- ntfsmount: Fix several bugs when too small buffer was allocated for
|
|
filenames on systems with utf8 locale. (Yura, many thanks to Rich
|
|
for finding bug)
|
|
|
|
19/07/2005 - 1.11.0 - Fixes and a new utility ntfsmount, a FUSE ntfs module.
|
|
|
|
- ntfscp: fix signal handling: handle both SIGTERM and SIGINT, print
|
|
correct message. (Yura)
|
|
- Update manual pages for ntfsprogs, ntfsclone, ntfsresize and
|
|
ntfsfix. (Szaka)
|
|
- ntfsclone: detect and hint users if the destination fs does not
|
|
support sparse files. (Szaka)
|
|
- Fix memory management error in ntfs_inode_close. (Yura)
|
|
- Add new utility - ntfsmount. It is a FUSE module that reles on
|
|
libntfs. (Yura)
|
|
- ntfsresize: support bad clusters list ($BadClus:$Bad), a.k.a. disks
|
|
having bad sectors if the new --bad-sectors option is used. (Szaka)
|
|
- ntfsinfo: Dump $EA_INFORMATION and $EA attributes. (Yura)
|
|
- mkntfs: Fix backup bootsector creation. Thanks to Timur Amirkhanov
|
|
for pointing these stupidities out. (We forgot to set the size
|
|
before doing it and we wrote more bytes then there were in the buffer
|
|
if sector size was above 8kiB and we only reserved one sector even
|
|
when sector size was less than 512 bytes and then we wrote 512 bytes,
|
|
i.e. beyond the end of the device.) (Anton)
|
|
- Add new utility (make extra) - ntfsdecrypt. (Yuval)
|
|
- Improve "already mounted" check. (Yura)
|
|
- Remove AC_FUNC_MALLOC and AC_FUNC_REALLOC from configure.ac as we
|
|
do not provide replacement functions for them and the checks break
|
|
cross compilation. (Christophe)
|
|
|
|
20/06/2005 - 1.10.0 - Lots of new features, enhancements, and bug fixes.
|
|
|
|
- Add start_vcn parameter to ntfs_get_size_for_mapping_pairs() and
|
|
ntfs_mapping_pairs_build() and adapt all callers.
|
|
- Bump library version due to source level API change above.
|
|
- Add ntfs_debug() and ntfs_error() to make kernel<->userspace porting
|
|
easier.
|
|
- ntfsinfo: Added dumping of index records from $INDEX_ROOT and
|
|
$INDEX_ALLOCATION. (Yura)
|
|
- ntfsinfo: Changed message for resident $INDEX_ALLOCATION to print
|
|
error, because $INDEX_ALLOCATION can't be resident. (Yura)
|
|
- ntfscp: Not longer update $FILE_NAME attributes, because Windows
|
|
doesn't update them unless a rename operation occur. (Yura)
|
|
- ntfsinfo: dump attribute list entries in verbose mode and display
|
|
attribute instance of all attributes. (Yura)
|
|
- new API: attrlist.[ch]::ntfs_attrlist_entry_add add entry to
|
|
attribute list. (Yura)
|
|
- ntfs_inode_sync: write out dirty attribute list from cache to
|
|
disk. (Yura)
|
|
- Add stop_vcn parameter to ntfs_mapping_pairs_build() and adapt
|
|
all callers. This allows filling an attribute extent with mapping
|
|
pairs and then continuing in a different extent once the first extent
|
|
is full. (Yura)
|
|
- Remove vol->nr_mft_records and update all users. (Anton)
|
|
- Add new API to mft.[hc]::ntfs_mft_record_{alloc,free}(). (Anton)
|
|
- Sync inodes before closing attributes or the umount fails. (Anton)
|
|
- Close extent inodes in ntfs_inode_close() when closing a base inode
|
|
and fix handling of ->extent_nis for base inodes. (Anton)
|
|
- Add ntfsmftalloc utility to the extra utilities to help test the mft
|
|
record allocator. (Anton)
|
|
- Fix ntfs_attr_record_resize() to cope with a newsize < 8. This means
|
|
you can call ntfs_attr_record_resize() with newsize = 0 to delete an
|
|
attribute record from its mft record but you would still need to
|
|
update the attribute list attribute if present. (Anton)
|
|
- Add the useful offsetof() macro to ntfs/support.h which returns the
|
|
offset of a structure element. (Anton)
|
|
- New API: attrib.[ch]::ntfs_make_room_for_attr (it is ported from
|
|
mkntfs). (Yura)
|
|
- New API: attrib.[ch]::ntfs_non_resident_attr_record_add() and
|
|
attrib.[ch]::ntfs_attr_record_rm(). This is low-level functions to
|
|
manipulate attribute extents. (Yura)
|
|
- Improvement to ntfs_non_resident_attr_expand: now it can expand multi
|
|
extent attributes and allocate new MFT records if mapping mapirs
|
|
doesn't fit current. (Yura)
|
|
- Implement attrlist.[ch]::ntfs_attrlist_entry_rm(). (Yura)
|
|
- Attribute handling functions always update highest_vcn, if it was
|
|
modified. (Yura)
|
|
- Add new API unistr.[hc]::ntfs_ucsndup(). (Anton)
|
|
- Make libntfs/attrib.c::ntfs_attr_open() make a copy of the attribute
|
|
name unless it is one of the internal names. (Anton)
|
|
- New API: attrib.[ch]::ntfs_resident_attr_record_add. (Yura)
|
|
- New API: inode.[ch]::ntfs_inode_add_attrlist. (Yura)
|
|
- New API: attrlist.[ch]::ntfs_attrlist_need. (Yura)
|
|
- ntfsclone: save by using our, not NTFS cluster allocation bitmap.
|
|
This gives more control in the future what to save. (Szaka)
|
|
- New helper: attrlist.h::ntfs_attrlist_mark_dirty. (Yura)
|
|
- New API: attrib.[ch]::ntfs_attr_update_mapping_pairs and made
|
|
ntfs_non_resident_attr_{shrink,expand} use it, thus attribute resize
|
|
functions is almost completed, but still very experemental and maybe
|
|
dangerous. (Yura)
|
|
- Fix stupid bug in ntfs_attr_reinit_search_ctx() introduced during
|
|
changes to ntfs_external_attr_find(). This is because
|
|
ntfs_attr_lookup() intentionally does not clear ctx->al_entry but
|
|
does clear ctx->base_ntfs_ino which in turn means that
|
|
ntfs_attr_reinit_search_ctx() does not clear ctx->al_entry. Now,
|
|
ntfs_attr_reinit_search_ctx() always clears ctx->al_entry.
|
|
- Rename scpu_to_le{16,32,64}() to cpu_to_sle{16,32,64}() to match the
|
|
kernel.
|
|
- ntfsclone: honor bad clusters list ($BadClus:$Bad), known bad sectors
|
|
aren't tried to be saved anymore. (Szaka)
|
|
- Add new API attrib.[ch]::ntfs_attr_record_move_to and make
|
|
ntfs_resident_attr_resize use it. (Yura)
|
|
- Improve ntfs_resident_attr_resize to try make attributes non-resident
|
|
when such convert is reasonable. (Yura)
|
|
- New API attrib.[ch]::ntfs_attr_record_move_away(). (Yura)
|
|
- New API inode.[ch]::ntfs_inode_attach_all_extents . (Yura)
|
|
- New API inode.[ch]::ntfs_inode_free_space. (Yura)
|
|
- Improved layout.h::ATTR_RECORD to have {non_,}resident_end and
|
|
compressed_end fields. Use offsetof(ATTR_RECORD, *_end) to get size
|
|
of accordable attribute. (Yura)
|
|
- Make ntfs_attr_update_mapping_pairs and ntfs_inode_add_attrlist use
|
|
ntfs_inode_free_space when there is no enough space for attribute
|
|
list. (Yura)
|
|
- Remove inode.h::NIno{Clear,Set,}AttrListNonResident and attr_list_rl
|
|
field from inode.h::_ntfs_inode struct. Adapt all users. (Yura)
|
|
- Add --attibute, --attr-name and --inode options to ntfscp. (Yura)
|
|
- ntfscp is moved from extra to standard program set. (Yura)
|
|
- Add new high level API inode.[ch]::ntfs_inode_add_attr and make ntfscp
|
|
use it when requested attribute isn't exist. (Yura)
|
|
- Add new high level API inode.[ch]::ntfs_inode_rm_attr. (Yura)
|
|
- Extend ntfs_attr_pwrite to cope with extending the attribute size
|
|
and with instantiating holes. (Yura)
|
|
- Add new API's ntfs_rl_sparse and ntfs_rl_get_copmressed_size. (Yura)
|
|
- ntfsinfo: Dump flags names for $STANDARD_INFORMATION and $FILE_NAME
|
|
attributes. (Yura)
|
|
- Move NAttr{Sparse,Compressed,Encrypted} to inode struct preserving
|
|
the previous interface. (Yura, with fixes from Anton)
|
|
- Rename/move inode.[hc]::ntfs_inode_{add,rm}_attr() to
|
|
attrib.[hc]::ntfs_attr_{add,rm}(), respectively. (Anton)
|
|
- Update sparse/compressed/encrypted bits in STANDARD_INFORMATION
|
|
during inode sync. (Yura)
|
|
- Rename NTFS_SECTOR_SIZE to NTFS_BLOCK_SIZE to keep in sync with
|
|
kernel driver. (Yura)
|
|
- Port logfile checking routines from the kernel to the library and
|
|
integrate them with mount process. (Yura)
|
|
- ntfscp: Added SIGINT (Ctrl+C) handler, improved error handling in
|
|
sync failed case. (Yura)
|
|
- Fix a nasty runlist merge bug when merging two holes. (Anton)
|
|
- ntfsfix: empty journal and mark volume dirty for chkdsk if ntfs_mount
|
|
failed. This makes read-write mounting of NTFS metadata images
|
|
possible by ntfsprogs and the kernel driver what were created by
|
|
versions of ntfsclone previous than 2.0.0. (Szaka)
|
|
- ntfsclone: added a new option, --ignore-fs-check. It can be used
|
|
only with the --metadata option. The clusters causing the
|
|
inconsistency are saved too. (Szaka)
|
|
- ntfsclone: added a new option, --rescue. It ignores read errors so
|
|
disks having bad sectors (dying disks) can be rescued efficiently,
|
|
with minimal stress on them. (Szaka)
|
|
- ntfsfix: fix invalid mft records in $MFTMirr. (Szaka)
|
|
- Added a trigger script to the BK repository that will send an email
|
|
to linux-ntfs-cvs@lists.sourceforge.net mailing list when someone
|
|
pushes successfully to the ntfsprogs repository on bkbits.net. This
|
|
is done on the server side and is thus independent of whether the
|
|
client doing the push has got a correct email setup. (Yura, Anton)
|
|
- ntfsclone: make --metadata work with the new $Logfile checking code.
|
|
Save at least the first 16 KiB of $Logfile (the two RSTR records
|
|
should always be included if present). Save also records used for
|
|
checking empty $Logfile. (Szaka)
|
|
- ntfscp: add ability to specify directory as destination file. (Yura)
|
|
- ntfsresize: fix segfault during filesystem check if NTFS was corrupted
|
|
in a way that clusters were referenced outside of the volume. (Szaka)
|
|
- Major rewrite of libntfs/win32_io.c and in particular seek, read, and
|
|
write related code. As part of this perform run-time detection of
|
|
presence of SetFilePointerEx() and if not present emulate it.
|
|
- ntfsclone: --rescue works at the lowest, sector and not cluster level
|
|
thus more data can be rescued. The contents of the unreadable sectors
|
|
are filled by character '?' and the beginning of such sectors are
|
|
marked by "BadSectoR\0". (Krishna Mohan Gundu, Szaka)
|
|
- ntfsclone: fixed an off-by-one error during --metadata in function
|
|
wipe_data(). (Szaka)
|
|
- Detect and refuse to mount hibernated Windows during ntfs_mount() if
|
|
the volume is tried to be opened read-write. (Szaka)
|
|
- Move back from BitKeeper to CVS on SF.net and fix executable
|
|
permissions that got lost during the move. (Anton)
|
|
- ntfsresize: fix segfault during filesystem check if NTFS $Bitmap file
|
|
size was larger than it should have been. (Szaka)
|
|
- mkntfs: Don't mark NTFS dirty if the backup boot sector could be
|
|
successfully created. (Szaka)
|
|
- mkntfs: Add new option -T which fakes the time to be 00:00:00 UTC,
|
|
Jan 1, 1970 instead of the current system time.
|
|
- Port collate.[ch] from kernel to library and implement
|
|
ntfs_collate_file_name. Thus we have new API's: ntfs_collate and
|
|
ntfs_is_collation_rule_supported. (Yura)
|
|
- Port index.[ch] from kernel to library. New API's: ntfs_index_lookup,
|
|
ntfs_index_ctx_{get,put}, ntfs_index_entry_mark_dirty. (Yura)
|
|
- Implement FILE_NAME attributes update in index during inode sync and
|
|
enable code that set/clean sparse bit. Also add new inode state bit
|
|
FileNameDirty to indicate that FILE_NAME attributes need update.
|
|
At least after attribute resize we leave absolutely consist
|
|
volume. (Yura)
|
|
- Update attribute definition handling. (Anton, Yura)
|
|
- Move utils_pathname_to_inode from to library (dir.c), adapt it
|
|
for the library, rename it to ntfs_pathname_to_inode, update all
|
|
users. (Yura)
|
|
- Set attr_name to NULL in libntfs/attrib.c::__ntfs_attr_init() and
|
|
fixup all callers apropriately. Thanks to FlatCap/Rich for pointing
|
|
this out. (Anton)
|
|
- Determine endianness in ./configure and use that in addition to
|
|
existing mechanisms for determining endianness. (Anton)
|
|
|
|
04/09/2004 - 1.9.4 - Urgent bug fixes.
|
|
|
|
- Rewrite win32_io.c to allow device level write support. (Yuval)
|
|
- Make ntfscp update file size in $FILE_NAME(0x30) attribute. (Yura)
|
|
- Fix ntfsclone crash when --restore-image was used for block device
|
|
outputs. (Masaru Kawashima, Szaka)
|
|
|
|
03/09/2004 - 1.9.3 - Lots of fixes and enhancements all over the place.
|
|
|
|
- Fix access of MFT_RECORD->bytes_in_use to use le32_to_cpu() instead
|
|
of le16_to_cpu() in libntfs/volume.c. (Pete Curran)
|
|
- Rename uchar_t to ntfschar everywhere since uchar_t is already
|
|
defined on Solaris to be an unsigned 1-byte character and it is also
|
|
defined like this in POSIX.
|
|
- Do not use the ++ operator on a variable when it is being passed as a
|
|
parameter to a macro in libntfs/unistr.c. (Pete Curran)
|
|
- Fix out of source tree build of utilities by changing $top_srcdir to
|
|
$top_builddir in the references to the build library in the makefile
|
|
template ntfsprogs/Makefile.am. (Yuval)
|
|
- Dump general info about an inode in ntfsinfo. (Yuval)
|
|
- Add detection for <sys/byteorder.h> and make endianness detection
|
|
work on Solaris 2.6 (Yuval) and Solaris 9 (Anton).
|
|
- Emulate bswap_{16,32,64}() if not available/we cannot find them.
|
|
This has the advantage that the problems on FreeBSD running on big
|
|
endian, 64-bit machine will just disappear as we will emulate the
|
|
calls even though they exist with a different name (bswap16(), etc
|
|
instead of bswap_16(), etc). (Anton)
|
|
- Undelete: add ability to recover ranges of inodes. (Holger Ohmacht)
|
|
- Lots of updates to ntfsinfo, see "bk changes". (Yuval)
|
|
- Fix crash in ntfsinfo for non-resident Security Info. (Yura)
|
|
- ntfswipe - wipe file tails and directory indexes (Yura)
|
|
- Bugfix in ntfs_rl_pread,pwrite for pos > 0. (Yura)
|
|
- Added special image format support in ntfsclone. (Per Olofsson)
|
|
- Major win32_io.c update implementing ->ioctl, ->sync, ->stat, and
|
|
->write. NOTE: This might break djgpp compatibility. (Yuval)
|
|
- Added truncate option to ntfsundelete. (mabs)
|
|
- Bugfix in ntfs_attr_size_bounds_check that caused it always fail,
|
|
if no maximum limit for attribute size. (Yura)
|
|
- Add new function attrib.c::ntfs_non_resident_attr_expand,
|
|
thus we can expand non resident attributes. (Yura)
|
|
- Add a @start_vcn parameter to
|
|
lcnalloc.[ch]::ntfs_cluster_alloc. (Yura)
|
|
- Add ntfscp utility, at present it can only overwrite files. It can
|
|
increment/decrease file size if $ATTRIBUTE_LIST not present. (Yura)
|
|
- Added new API lcnalloc.[ch]::ntfs_cluster_free_from_rl, and made
|
|
ntfs_cluster_alloc use it. (Yura)
|
|
- Bugfix in ntfs_cluster_alloc for count = 0. (Yura)
|
|
- Bugfix in ntfs_attr_map{_whole_,_}runlist: make it not fail if runlist
|
|
already mapped. (Yura)
|
|
- ntfsls: Add a -R recursive option. (Giang, Carmelo)
|
|
- Make ntfslabel pay attention to --no-action. (Yuval)
|
|
- Several bugfixes in ntfs_cluster_alloc. (Anton)
|
|
- Make all of libntfs only output anything if configured with
|
|
--enable-debug. The only exception is ntfs_boot_sector_is_ntfs()
|
|
which now uses a new function Sprintf(), provided by debug.h which
|
|
can be #ifdef-ed out if people want it to be truly silent. (Anton)
|
|
- Fix memory leaks in libntfs/attrib.c, ntfsprogs/mkntfs.c and
|
|
ntfsprogs/ntfsundelete.c. (Christophe)
|
|
- Change libntfs/attrib.c::ntfs_attr_make_non_resident() to only
|
|
allocate clusters and attempt to write out data if the attribute size
|
|
is not zero. (Anton)
|
|
- Fix libntfs/attrib.c::ntfs_non_resident_attr_expand() to use
|
|
libntfs/attrib.c::ntfs_attr_map_whole_runlist() instead of
|
|
libntfs/attrib.c::ntfs_attr_map_runlist(). (Anton)
|
|
- Change libntfs/runlist.c::ntfs_get_size_for_mapping_pairs() and
|
|
libntfs/runlist.c::ntfs_mapping_pairs_build() to treat a NULL runlist
|
|
to mean empty runlist. (Anton)
|
|
- ntfsresize: some refactoring towards being able to reuse code (Szaka)
|
|
|
|
11/05/2004 - 1.9.2 - Decompression bug fixes, ntfsinfo enhancements, updates.
|
|
- Hopefully fix the autogen.sh problems using the --force and touch
|
|
config.h.in sledge hammers. (Anton)
|
|
- Fix the incorrect ntfsclone usage example in the man page. (Szaka)
|
|
- Fix compiler warnings in win32_io.c. (Yuval)
|
|
- Move constant bswap macros out of the ifdefs in endians.h so they are
|
|
always available. (Yuval)
|
|
- Add conditional include of sys/param.h in endians.h which provides
|
|
endianness support on Cygwin. (Yuval)
|
|
- ntfsclone --metadata also saves at least the first 8 KiB of the
|
|
$LogFile. (Szaka)
|
|
- Fix incorrect getopt_long() usage: converted argv[optind-1] to optarg
|
|
so utilities won't do bogus and unexpected things. (Szaka)
|
|
- Add new API security.[hc]::ntfs_sid_is_valid(), ntfs_sid_to_mbs(),
|
|
and ntfs_sid_to_mbs_size(). (Anton)
|
|
- Big enhancement of ntfsinfo. (Yuval, Anton)
|
|
- Split mkntfs into multiple functions. (Yuval)
|
|
- Compiler warning fixes in utilities related to GEN_PRINTF() and other
|
|
things, e.g. printf() and static related. (Yuval)
|
|
- Make ntfsclone and ntfsresize endiansafe. (Anton)
|
|
- Remove global variable rl from mkntfs as it was used only in one
|
|
place. (Yuval, Anton)
|
|
- Work around mbstowcs() bug in DJGPP and update workaround for bug in
|
|
mbsrtowcs() on Cygwin. (Lode, Christophe, Anton)
|
|
- Add SetFilePointerEx() emulation to win32_io.c. (Lode)
|
|
- Add inode selection by path/filename to ntfsinfo. (Yuval)
|
|
- Fix a bug where we would not always detect that we have reached the
|
|
end of a compression block because we were ending at minus one byte
|
|
which is effectively the same as being at the end. The fix is to
|
|
check whether the uncompressed buffer has been fully filled and if so
|
|
we assume we have reached the end of the compression block. A big
|
|
thank you to Marcin Gibuła for the bug report, the assistance in
|
|
tracking down the bug and testing the fix. (Anton)
|
|
- Fix a bug where we forgot to reset the data_size and initialized_size
|
|
in two error code paths in ntfs_compressed_attr_pread(). (Anton)
|
|
- Fix a bug where an uncompressed block could be misdetected as a
|
|
compressed one if it was made up of multiple runs. (Anton)
|
|
|
|
05/04/2004 - 1.9.1 - Make mkntfs create bootable volumes and fixes/updates.
|
|
- Update with SuSE 9.1 beta 1 versions of GNU build system.
|
|
- Fix warnings on powerpc architecture where it would seem char is
|
|
unsigned so comparisons with -1 cause a warning that comparison is
|
|
always true/wrong. (Thanks to Ender for reporting.)
|
|
- Modify meaning of ntfs_volume->nr_mft_records to be the number of
|
|
initialized mft records, not total mft records. This makes far more
|
|
sense and in fact reflects how nr_mft_records is being used in both
|
|
libntfs and the utilities.
|
|
- Add new API bitmap.h::ntfs_bitmap_{set,clear}_bit().
|
|
- Fix layout.h STANDARD_INFORMATION and FILE_ATTR_FLAGS typedefs by
|
|
adding the packed attribute where it was missing causing havoc due
|
|
to 64 bit alignment. (Yuval Fledel)
|
|
- Fix validation of STANDARD_INFORMATION attribute size in ntfsinfo.c
|
|
and remove relevant FIXME comments. (Yuval Fledel)
|
|
- Add new API security.[hc]::ntfs_guid_is_zero() and ntfs_guid_to_mbs().
|
|
- Implement dumping of object id in ntfsinfo. (Yuval Fledel, me)
|
|
- Copy MFT_RECORD typedef to MFT_RECORD_OLD and modify MFT_RECORD to
|
|
contain the NTFS 3.1+ specific fields. Also, update mkntfs and
|
|
ntfsclone appropriately.
|
|
- Add new API mft.[hc]::ntfs_mft_record_{layout,format}() and make
|
|
mkntfs use it.
|
|
- Add new API device.[hc]::ntfs_device_partition_start_sector_get() and
|
|
make mkntfs use it.
|
|
- Provide a new command line option "-p" to mkntfs to allow the user to
|
|
specify the partition start sector manually.
|
|
- Fix mkntfs and ntfsclone to include sys/ioctl.h.
|
|
- Define the ioctls we use in ntfsclone if they are not defined, as it
|
|
is done in device.c.
|
|
- Do not specify maintainer mode or enable compiler warnings in
|
|
autogen.sh.
|
|
- Create new config option --enable-warnings and make that enable all
|
|
the compiler warnings (this used to be done in maintainer mode).
|
|
- Remove AM_MAINTAINER_MODE from configure.ac.
|
|
- Support the case where $Volume does not have a $VOLUME_NAME
|
|
attribute in ntfs_device_mount() and let ntfslabel create the
|
|
attribute when it is not present.
|
|
- Remove the FIXME in ntfs_attr_lookup() and complete the
|
|
implementation of ntfs_external_attr_find() so it now returns the
|
|
attribute list attribute position at which the attribute should be
|
|
inserted in @ctx->al_entry (see descritpion for ntfs_attr_lookup() in
|
|
attrib.c for details).
|
|
- Check the mount state of the output device in ntfsclone.
|
|
- Correct a too strong sanity check in ntfsclone that prevented
|
|
cloning from larger device to a smaller one but the NTFS image
|
|
could have fit fully.
|
|
- Added a few (hopefully) better explanatory messages to ntfsresize.
|
|
- Add new API device.[hc]::ntfs_device_heads_get() and make mkntfs use
|
|
it.
|
|
- Provide a new command line option "-H" to mkntfs to allow the user to
|
|
specify the number of heads manually.
|
|
- Add new API device.[hc]::ntfs_device_sectors_per_track_get() and make
|
|
mkntfs use it.
|
|
- Provide a new command line option "-S" to mkntfs to allow the user to
|
|
specify the number of sectors per track manually.
|
|
- Remove dumplog utility as it was unnecessary and duplicated the
|
|
functionality of ntfsdump_logfile.
|
|
- Cleanup ntfsdump_logfile utility to use more libntfs APIs and other
|
|
cleanups.
|
|
- Remove some compiler warnings that appeared with the latest gcc
|
|
update from SUSE 9.1 beta 3.
|
|
- Sanitize/update logfile.h somewhat and adapt ntfsdump_logfile.
|
|
- Move declaration of a variable in utils.c to beginning of block.
|
|
Thanks to Alexei Alexandrov for the bug report and patch.
|
|
- Add the ability to read the logfile from a supplied file using the
|
|
command line option -f to ntfsdump_logfile.
|
|
- Updated ntfsclone manual. (Szaka)
|
|
- Added some diagnostic and explanatory messages to ntfsclone. (Szaka)
|
|
- Mostly rewrite ntfsinfo. (Yuval Fledel and some fixes by me)
|
|
|
|
11/03/2004 - 1.9.0 - Added ntfsresize relocation support and a lot of cleanups.
|
|
- In include/ntfs/*.h Wrap all #include "config.h" by #ifdef
|
|
HAVE_CONFIG_H. (Suggested by Christophe.)
|
|
- Update doc/CodingStyle. (Suggested by Szaka.)
|
|
- Fix mkntfs for large volumes where the number of clusters would
|
|
exceed the maximum of 32 bits and mkntfs would segfault. Now we
|
|
increase the cluster size until the number of clusters no longer
|
|
exceeds 32 bits or the maximum cluster size is reached. We then
|
|
exit with an appropriate error message. (Thanks to Szaka for the
|
|
bug report.)
|
|
- Modify layout.h and logfile.h expanding/naming annonymous structs
|
|
and unions (much like I did earlier in the kernel driver) so that
|
|
the -fms-extensions switch is no longer required. Also, removed
|
|
the -fms-extensions switch and associated autodetection from
|
|
./configure.ac. (Yuval Fledel with small fixes from me)
|
|
- Update the build system: autogen.sh now uses autoreconf; run
|
|
autoupdate && autoreconf --force and fixup the fallout damage; rename
|
|
INCLUDES to AM_CPPFLAGS; add $srcdir to getgccver invocation.
|
|
- Rename private to priv_data in ntfs_device_alloc() to avoid name
|
|
space clashes with C++. (Yuval Fledel, modified fix by me)
|
|
- Rename 'opt' struct member stdout to std_out in ntfsclone.c because
|
|
stdout is a macro on Cygwin and compilation fails. (Yuval Fledel)
|
|
- Make ntfs_attrs_walk() use AT_UNUSED and CASE_SENSITIVE instead of
|
|
zero when calling ntfs_lookup() for type checking correctness. (Yuval
|
|
Fledel)
|
|
- In attribute lookup code in libntfs/attrib.c, check type against
|
|
AT_UNUSED and not zero.
|
|
- Add AC_CANONICAL_HOST([]) to configure.ac and before AC_PROG_CC add
|
|
manual provision of CC=gcc, AR=ar, and LD=ld if they are not set and
|
|
the target is *-*-*djgpp. (Requested by Christophe Grenier)
|
|
- Provide our own byteswap constant versions in endians.h so we avoid
|
|
the mess that some architectures define only some of them.
|
|
- Use head -n 1 instead of -1 in getgccver script. (From SUSE LINUX)
|
|
- Fix typo in ntfsinfo.c. (From SUSE LINUX)
|
|
- Make the device fd in unix_io.c be stored in malloc()ed space pointed
|
|
to by the d_private pointer instead of inside the d_private pointer
|
|
itself. Makes the warnings on 64 bit architectures go away.
|
|
- Fix all occurences of printf with %ll length modifiers but 64 bit
|
|
arguments to typecast the arguments to (unsigned) long long to avoid
|
|
the warnings when compiling on 64 bit architectures.
|
|
- Use AC_GNU_SOURCE in configure.ac instead of doing it manually.
|
|
- Fix lots of typos in the documentation. (David Martínez Moreno)
|
|
- Update config.sub and config.guess to latest ones. (David Martínez
|
|
Moreno)
|
|
- Change Linux-NTFS to ntfsprogs everywhere when talking about the
|
|
package rather than the project (especially man pages affected).
|
|
- Add relocation support to ntfsresize. Note, this modifies the
|
|
command line options a little as well as the returned output so
|
|
applications using ntfsresize might need modifications before they
|
|
will work with the updated ntfsresize. (Szaka)
|
|
|
|
27/02/2004 - 1.8.5 - Springclean of the build process, cleanups, bug fixes.
|
|
- Fixup ntfsinfo a little bit and give its manpage a small update to
|
|
reflect reality a little better.
|
|
- Fix BLKGETSIZE usage; parameter is unsigned long not long. (Szaka)
|
|
- Use BLKGETSIZE64 when available which allows use of devices bigger
|
|
than 2TiB.
|
|
- Enable GNU extensions if present. This means that you need to
|
|
include config.h before any other non-ntfs header files.
|
|
- Use AC_SYS_LARGEFILE in configure.ac instead of manually defining
|
|
_FILE_OFFSET_BITS=64 in CFLAGS. This means that you need to include
|
|
config.h before any other non-ntfs header files.
|
|
- Update all source to include config.h before any other non-ntfs
|
|
header files.
|
|
- Move include files from ntfsprogs/include to ntfsprogs/include/ntfs
|
|
and adapt build system. (Feature requested by Christophe Grenier.)
|
|
- Fix potential buffer overflow bug in ntfsprogs/mkntfs.c::stoucs().
|
|
Thanks to Andras Erdei.
|
|
- Small cleanup of ./configure.ac to show better formatted option help
|
|
text and other little bits.
|
|
- Add --disable-default-device-io-ops option to ./configure which makes
|
|
for a smaller libntfs but results in ntfs_mount() always returning
|
|
error with errno set to EOPNOTSUPP. You need to use
|
|
ntfs_device_mount() instead. This only makes sense with "make libs"
|
|
and when an application linking statically against libntfs provides
|
|
its own device io operations. (Feature requested by
|
|
Christophe Grenier.)
|
|
- Fix a duplicated free() in mkntfs. (Andras Erdei)
|
|
- Fix option display in mkntfs. (Andras Erdei)
|
|
|
|
23/01/2004 - 1.8.4 - Memory leak fixes.
|
|
- Fix memory leaks in libntfs/dir.c::ntfs_inode_lookup_by_name(),
|
|
libntfs/dir.c::ntfs_readdir() and libntfs/attrib.c::ntfs_attr_open().
|
|
Thanks to Christophe Grenier and valgrind for finding them.
|
|
|
|
19/01/2004 - 1.8.3 - Lots of small fixes.
|
|
- Update ntfsinfo (Matthew J. Fanto, me)
|
|
- Add new API attrib.[hc]:ntfs_compressed_attr_pread(). NOTE: You want
|
|
to use ntfs_attr_pread() instead which will transparently read the
|
|
compressed attribute and return the decompressed data.
|
|
- Improve mkntfs linux/major.h use so should work on newer glibc.
|
|
- Fix silly bug in ntfs_attr_size_bounds_check() where unbounded
|
|
attributes were handled completely wrong. (Thanks to Szaka for
|
|
spotting this.)
|
|
- Fix wrong print modified %L intead of %ll everywhere. (Szaka, me)
|
|
- More Cygwin fixes. (Lode Leroy)
|
|
- Switch build files to ones generated by current SuSE 9.0 (i.e. I ran
|
|
./autogen.sh on SuSE 9.0 as I will be using SuSE as my desktop from
|
|
now on).
|
|
|
|
07/01/2004 - 1.8.2 - Make ntfsprogs work on FreeBSD.
|
|
- Add compatibility for building on FreeBSD. (Christophe Grenier)
|
|
- Add new compile target "make libs" which only compiles libntfs.
|
|
- Compile fixes for DJGPP. (Chrisophe Grenier, me)
|
|
- Note: DJGPP only works with "make libs". not "make" due to absence
|
|
of getopt.h, getopt_long(), snprintf(), and snprintf(). getopt() does
|
|
exist (in unistd.h) so we could switch to that if we wanted.
|
|
- Enable lots of compiler warnings in maintainer mode and fix all
|
|
warnings from libntfs.
|
|
- Fix memory deallocation bug in mft.c spotted by the additional
|
|
warnings.
|
|
|
|
06/01/2004 - 1.8.1 - Important bug fix and various enhancements.
|
|
- Add new API function attrib.[hc]:ntfs_attr_map_whole_runlist().
|
|
- Add new API function runlist.[hc]:ntfs_rl_pread().
|
|
- Fix bug in run list encoding functions that hit sparse and compressed
|
|
files with holes. (Szabolcs Szakacsits)
|
|
- Add compatibility for building with DJGPP under DOS. (Christophe
|
|
Grenier, slightly modified by me)
|
|
|
|
19/11/2003 - 1.8.0 - Final fixes and tidy ups.
|
|
- Cleanup build system wrt CFLAGS handling placing it all in one place
|
|
in configure.ac and removing everything related from the Makefile.am
|
|
files.
|
|
- Fix all compiler warnings (Richard Russon, me)
|
|
- Make libntfs more portable by removing the dependency on
|
|
asm/byteorder.h and using <endian.h> and <byteswap.h> instead. Also
|
|
adapting our endians.h appropriately. (Richard Russon)
|
|
- Fix nasty buffer overflow bug in ntfs_get_attribute_value() which we
|
|
use to get the attribute list attribute. This is the same bug that
|
|
was biting us in the ntfs driver 2.1.4 and was fixed in 2.1.5.
|
|
Windows XP creates files where an attribute's data size is more than
|
|
one run list run shorter than the allocated size which causes us to
|
|
crash out as we assumed this would never happen.
|
|
- Various other small cleanups and fixes.
|
|
|
|
10/11/2003 - 1.8.0beta2 - More features!
|
|
- Merge ntfsprogs-gnomevfs written by Jan Kratochvil.
|
|
|
|
23/10/2003 - 1.8.0beta - The Long Overdue(TM) release.
|
|
- Further work on attribute resizing.
|
|
- Fix two logic inversion bugs in dir.c. Thanks to Russ Christensen for
|
|
finding the first one.
|
|
- Fix attempt to release I30 internal constant. (Russ Christensen)
|
|
- Fix off-by-one error in disk_io.c::ntfs_cluster_{read,write}(). (Ian
|
|
Jackson)
|
|
- Add -fms-extensions when compiling with gcc-3.2+.
|
|
- Update for newer autoconf/automake.
|
|
- Abstract low level device operations (include/device,h and
|
|
libntfs/device.c) and adapt utilities to changes.
|
|
- Added ntfsclone utility written by Szabolcs Szakacsits.
|
|
- Added ntfsls utility written by Lode Leroy.
|
|
- Fix bugs in dir.c::ntfs_readdir() where we try to close ia_na when
|
|
it is NULL.
|
|
- Return errno ENOTDIR from dir.c::ntfs_readdir() when called with a
|
|
file inode.
|
|
- Fix a silly bug in attrib.c::ntfs_external_attr_find() which caused
|
|
us to always return the same attribute during an enumeration as soon
|
|
as the end of the attributes to be enumerated was reached thus
|
|
causing the program doing the enumeration to hang in a tight loop.
|
|
NOTE: There is still work to do as ctx->al_entry is set to NULL
|
|
instead of to the position in the attribute list at which to insert.
|
|
- Added man pages for the new utilities (Richard Russon and me).
|
|
- Lots of extensions and cleanups to ntfsls.
|
|
- Move common bits from disk_io.c into device.c and rename the Unix io
|
|
specific code that remains to unix_io.c to complement win32_io.c.
|
|
- Integrate win32_io.c into the build process so win32_io ops are used
|
|
when compiling under Cygwin and standard Unix style io ops are used
|
|
otherwise.
|
|
- Add new utility ntfscat (Richard Russon) and a corresponding man page.
|
|
- Other assorted bugfixes and developments (see NEWS and bk changes).
|
|
|
|
13/02/2003 - 1.7.1 - Urgent bug fixes.
|
|
- Urgent bug fixes in ntfsresize (Szabolcs Szakacsits):
|
|
- compare_bitmaps(): fix another bug reporting the correct cluster
|
|
mismatch
|
|
- walk_inodes(): fix leaking ntfs_inode in certain cases
|
|
- delete redundant and unused MFT_RECORD *mrec from ntfs_resize_t
|
|
- Urgent bug fixes in libntfs (thanks to Szaka for bug reports):
|
|
- attrib.c::ntfs_external_attr_find(): broken error detection
|
|
- mft.c::ntfs_mft_records_write(): stupid buffer overflow bug (ouch!)
|
|
|
|
12/02/2003 - 1.7.0 - Small bug fixes and updates.
|
|
- Bug fixes in mapping pairs array generation in libntfs.
|
|
- Bug fixes and updates in ntfsresize. (Szabolcs Szakacsits)
|
|
- Tidyups and standardisations. (Richard Russon)
|
|
|
|
18/01/2003 - 1.7.0beta - Library rewrite and many new tools.
|
|
- Highlights of this release are the now hopefully stable API sported
|
|
by an almost completely rewritten library and the new utilities;
|
|
ntfsresize, ntfsundelete, and ntfslabel.
|
|
Note this is a beta release so it may not be free of bugs.
|
|
- New tool ntfslabel written by Matthew Fanto with a few cleanups from
|
|
me to make it fit in with e2label better.
|
|
- Add man page for ntfslabel.
|
|
- New tool, ntfsundelete, written by Richard Russon.
|
|
- New tool, ntfsresize, written by Szakacsits Szabolcs.
|
|
- Extend ntfs_mount() to also read in the volume label.
|
|
- Silence verbosity of output from ntfs_mount(). It is now only output
|
|
if ./configure was run with --enable-debug.
|
|
- Remove a LOT of dead code. Massive cleanup.
|
|
- Add full attribute search context and allocation/init/deallocation
|
|
functions (see attrib.c).
|
|
- Remove find_first_attr(). Just use ntfs_attr_get_search_ctx() +
|
|
ntfs_attr_find() which has the same effect.
|
|
- Rewrite disk_io.[ch] and mft.[ch] defining new access API:
|
|
disk_io.[ch] provide: ntfs_p{read,write}(),
|
|
ntfs_mst_p{read,write}(), and
|
|
ntfs_cluster_{read,write}().
|
|
mft.[ch] provide: ntfs_mft_record_{read,write}(),
|
|
ntfs_mft_records_{read,write}(), and
|
|
ntfs_mft_record_get_data_size().
|
|
- When writing mft records using the mft.c::ntfs_mft_record{s,}_write()
|
|
interface, the mft mirror is now updated automatically.
|
|
- Add -Wall to compiler options.
|
|
- Fix minor error code path bugs in mkntfs.c that showed up with -Wall.
|
|
- Fix all compiler warnings that showed up with -Wall.
|
|
- Add new API function, provided by mft.[ch]: ntfs_file_record_read().
|
|
- Add new API calls provided by unistr.[ch]:
|
|
ntfs_ucstombs() and ntfs_mbstoucs().
|
|
- Define API for mst.[ch] providing:
|
|
ntfs_mst_post_read_fixup(),
|
|
ntfs_mst_pre_write_fixup(), and
|
|
ntfs_mst_post_write_fixup().
|
|
- Define API for bootsect.[ch] providing:
|
|
ntfs_boot_sector_is_ntfs().
|
|
- Add beginning of new API with new files inode.[ch] providing:
|
|
ntfs_inode_{open,close)(), and
|
|
ntfs_extent_inode_open().
|
|
- Note the inode related API is subject to change.
|
|
- Start defining API provided by attrib.[ch]:
|
|
ntfs_attr_search_ctx typedef,
|
|
ntfs_attr_{get,put,reinit}_search_ctx(), and
|
|
ntfs_attr_lookup().
|
|
- Add a TODO.libntfs laying down my personal roadmap for the library.
|
|
- Remove ntfs_attr_find() from API, everyone must use ntfs_attr_lookup()
|
|
instead.
|
|
- Rename all attribute name constants from $blah to AT_blah.
|
|
- Rename all system file constants from FILE_$blah to FILE_blah.
|
|
- Port ntfs_attr_lookup() stuff from ntfs tng driver.
|
|
- Implement loading of extent inodes. They are attached on open to the
|
|
base inode and are cached there until the base inode is closed.
|
|
- Cleanup/streamline include file dependencies.
|
|
- Port attribute list merging code from ntfs tng driver. API to follow.
|
|
- Allocate an ntfs_volume in mkntfs and start initializing it instead
|
|
of using the opt global structure. Necessary so can call the
|
|
modified ntfs_mapping_pairs_decompress() from mkntfs.c.
|
|
- Add libntfs/debug.c providing:
|
|
ntfs_debug_runlist_dump().
|
|
- Add new API call ntfs_check_if_mounted() to volume.[ch]. (Matthew
|
|
Fanto, me)
|
|
- Do folding assisting cleanups. (Richard Russon, me)
|
|
- Add new API call ntfs_boot_sector_is_ntfs() provided by bootsect.[hc].
|
|
- Define and write more API calls provided by attrib.[ch]:
|
|
ntfs_attr_map_runlist(),
|
|
ntfs_attr_vcn_to_lcn(),
|
|
ntfs_attr_find_vcn(),
|
|
ntfs_attr_init(),
|
|
ntfs_attr_{open,close}(),
|
|
ntfs_attr_size_bounds_check(),
|
|
ntfs_attr_can_be_non_resident().
|
|
- Add new field mftmirr_size to ntfs_volume structure and initialize
|
|
it to the number of mft records stored in the mft mirror in
|
|
ntfs_mount().
|
|
- Add new fields mftmirr_ni and mftmirr_na to ntfs_volume structure and
|
|
initialize them in ntfs_mount to the $MFTMirr inode and $DATA
|
|
attribute. Ditto for mft_ni ($MFT inode), mft_na ($MFT/$DATA),
|
|
mftbmp_na ($MFT/$BITMAP), lcnbmp_ni ($Bitmap inode), and
|
|
lcnbmp_na ($Bitmap/$DATA). Remove previous fields replaced by these.
|
|
- Rename a few fields in ntfs_volume structure to make them shorter,
|
|
e.g. now have nr_mft_records and nr_clusters.
|
|
- Add new API for doing I/O on both normal and multi sector transfer
|
|
protected ntfs attributes described by the ntfs_attr structure,
|
|
provided by attrib.[hc] (note writing is still restricted to
|
|
overwrite only):
|
|
ntfs_attr_p{read,write}(), and
|
|
ntfs_attr_mst_p{read,write}().
|
|
- Fix detection of read-only mounts in volume.c::ntfs_mntent_check().
|
|
- Start modularising ntfs_mount():
|
|
- Split off the boot sector parsing code and move it to
|
|
bootsect.c::ntfs_boot_sector_parse().
|
|
- Move $MFT loading and parsing code to separate function
|
|
volume.c::ntfs_mft_load().
|
|
- Move $MFTMirr loading and parsing code to
|
|
volume.c::ntfs_mftmirr_load().
|
|
- Move all startup code (loading and parsing of bootsector,
|
|
$MFT, and $MFTMirr) to volume.c::ntfs_volume_startup().
|
|
- Update ntfsfix to above modularisation.
|
|
- Add detection of read-write mounted devices to ntfsfix and refuse to
|
|
operate on them.
|
|
- POSIXify libntfs/disk_io.c. All functions now return partial reads
|
|
and writes and deal with end of file properly. Affected functions:
|
|
ntfs_p{read,write}(),
|
|
ntfs_mst_p{read,write}(), and
|
|
ntfs_cluster_{read,write}().
|
|
- Change ntfsfix to take into account the automatic mft mirror updates.
|
|
- Add new API provided by new files dir.[ch]:
|
|
ntfs_inode_lookup_by_name(), and
|
|
ntfs_readdir().
|
|
- We now use u8, u16, u32, u64, s8, s16, s32, and s64 types and we
|
|
typedef them ourselves from the C99 standard uint8_t, etc types which
|
|
IMO are braindamaged.
|
|
- Better gcc detection in 'configure.in'. (Szakacsits Szabolcs)
|
|
Tested with: egcs-1.0.3 (egcs-2.90.29), egcs-1.1.2 (egcs-2.91.66),
|
|
gcc 2.95.3, 2.96 (from RH 7.1 and 7.3), and 3.0.4.
|
|
- Enable enumeration of attributes using ntfs_attr_lookup() which is
|
|
requested by passing a type of AT_UNUSED (or simply zero) to
|
|
ntfs_attr_lookup(). (Based on initial patch by Szakacsits Szabolcs.)
|
|
- Fix two minor buglets in ntfs_external_attr_find() where we would
|
|
continue the search when we detect a mismatched type and/or name
|
|
instead of aborting and returning error EIO to flag the corruption.
|
|
- Add new syntactic sugar API provided by attrib.h:
|
|
ntfs_attrs_walk(). (Szakacsits Szabolcs)
|
|
- Add new API for compressing runlists into mapping pairs arrays
|
|
provided by runlist.[hc] (some adapted from mkntfs.c):
|
|
ntfs_rl_vcn_to_lcn(),
|
|
ntfs_rl_pwrite(),
|
|
ntfs_runlists_merge(),
|
|
ntfs_mapping_pairs_decompress(),
|
|
ntfs_get_nr_significant_bytes(),
|
|
ntfs_get_size_for_mapping_pairs(),
|
|
ntfs_write_significant_bytes(),
|
|
ntfs_mapping_pairs_build(), and
|
|
ntfs_rl_truncate(). -- WIP
|
|
- Convert mkntfs.c to the above API.
|
|
- Implement attrib.[hc]::ntfs_rl_pwrite() as a low level scatter write
|
|
function analogous in functionality to mkntfs.c::ntfs_rlwrite() but
|
|
with arguments more like ntfs_attr_pwrite() to allow for more
|
|
flexible use.
|
|
- Don't use string concatenation with __FUNCTION__ as gcc-3.x don't
|
|
like it.
|
|
- Move runlist functions to runlist.[hc]. (Richard Russon)
|
|
- Add new API to volume.[hc] and use it (Szakacsits Szabolcs):
|
|
ntfs_version_is_supported(),
|
|
NTFS_V{1_[12],2_x,3_[01]}() macros,
|
|
ntfs_logfile_reset(), and
|
|
ntfs_volume_set_flags().
|
|
- Change size autodetection of non-block device files in mkntfs to use
|
|
the stat returned file size rather than the block allocation count to
|
|
cope with pre-created sparse files.
|
|
- Remove GPL message text from usage information in mkntfs.
|
|
- The word is "runlist", not "run_list", "run list", or "run-list".
|
|
- Prefix all functions with "ntfs_" and make the names of the form
|
|
"ntfs_object_action()". Keep this for all future functions!
|
|
- Change unistr.c::ntfs_names_are_equal() to return TRUE when both
|
|
names have zero length. Thanks to Leonard Norrgard for spotting this.
|
|
- Fix bug in ntfs_external_attr_find(). (Szakacsits Szabolcs)
|
|
- Fix stupid logic inversion bug in ntfs_extent_inode_open(). Same bug
|
|
was fixed in the NTFS kernel driver over six months ago but the fix
|
|
was never taken over to libntfs. (Szakacsits Szabolcs)
|
|
- Fix stupid bug in ntfs_ucsncmp(). Spotted by Leonard Norrgard.
|
|
- Fix bug where the call to ntfs_attr_{put,reinit}_search_ctx() would
|
|
free the extent inode attached to the search context but leave it
|
|
attached to the base inode, so this would lead to memory corruption
|
|
and worse problems. Thanks to Szakacsits Szabolcs for spotting this.
|
|
We now don't close extent inodes any more at all and just leave it
|
|
to the closing of the base inode to dispose of all the extent inodes.
|
|
- Add sanity check to ntfs_inode_close() to detect attempts at closing
|
|
extent inodes.
|
|
- Don't free extent inodes in attrib.c! (Szakacsits Szabolcs)
|
|
- Return the attribute list attribute when enumerating attributes, too.
|
|
Thanks to Szakacsits Szabolcs for pointing this problem out.
|
|
- New API function provided by unistr.[hc] and use it in mkntfs:
|
|
ntfs_ucsnlen().
|
|
- New API function provided by attrib.[hc] and use it in mkntfs:
|
|
ntfs_resident_attr_value_resize(),
|
|
ntfs_attr_truncate(). -- WIP
|
|
- New API functions provided by inode.[hc]:
|
|
ntfs_inode_mark_dirty(),
|
|
ntfs_inode_sync().
|
|
- Change ntfs_inode_close() to write out dirty inodes and inode extents.
|
|
- New API functions provided by lcnalloc.[hc]:
|
|
ntfs_cluster_{alloc,free}(). -- WIP
|
|
- New API function provided by bitmap.[hc]:
|
|
ntfs_bitmap_{set,clear}_run(). -- WIP
|
|
- Extend the volume.h::ntfs_volume structure with variables required by
|
|
the cluster and mft allocators and set them up in
|
|
volume.c::ntfs_volume_startup().
|
|
- ntfs_umount() now also does an fdatasync() on the device before
|
|
closing it.
|
|
- Added new utility ntfstruncate, primarily to be able to test the
|
|
new ntfs_attr_truncate() function, it is not compiled by default.
|
|
Note, the library can currently only make attributes smaller and it
|
|
only works on uncompressed, unencrypted inodes which do not contain
|
|
attribute lists, i.e. on simple files, but that was quite a lot of
|
|
new code in itself which needs a lot of testing!
|
|
- Fix library to never issue writes on volumes that have been mounted
|
|
read-only.
|
|
- New API provided by mft.[hc]:
|
|
ntfs_mft_record_{alloc,free}(). -- WIP
|
|
|
|
12/03/2002 - 1.6.0 - More mkntfs options and cleanups.
|
|
Fix typo in usage information of mkntfs. Thanks to Richard Russon for
|
|
spotting it.
|
|
Change version number in mkntfs and ntfsfix to match the linux-ntfs
|
|
release version number.
|
|
Added two new options to mkntfs; -I, which disables content indexing
|
|
on the volume and -C, which enables compression on the volume.
|
|
|
|
01/02/2002 - Attempt to fix compile warnings on powerpc.
|
|
Attempt to fix compile warnings on powerpc. It seems powerpc uses
|
|
char == unsigned char which was breaking some signed comparisons.
|
|
|
|
26/01/2002 - 1.5.1 - Fix two buglets in ntfsfix and more compilation fixes.
|
|
Fix two silly buglets in ntfsfix, where we were calling is_baad_record
|
|
instead of is_baad_recordp. Silly me... Thanks to David Martinez Moreno
|
|
for reporting the compilation warnings on ia64 which led me to find the
|
|
bug.
|
|
Fix compilation problems in logfile.h on big endian arches. Hopefully,
|
|
now will really compile on all arches.
|
|
|
|
10/01/2002 - 1.5.0 - Fix bug in $LogFile size calculation.
|
|
Fix bug in $LogFile size calculation where we would take the size to
|
|
be zero on partitions between 200 and 400MiB in size.
|
|
Add requirement for linux-ntfs to linux-ntfs-devel.
|
|
|
|
15/12/2001 - Remove atomic ops and add compiler version check.
|
|
Hopefully this will preempt "it doesn't compile for me" messages from
|
|
people with gcc < 2.96.
|
|
Change bail out error check for seek to backup boot sector to a warning
|
|
since SuSE 7.2 + loads of stuff and 2.5.1-pre11 returns EINVAL instead
|
|
of ENOSPC.
|
|
Remove atomic code as it isn't defined on non-i386 arches.
|
|
|
|
06/12/2001 - Change ntfs_mount to accept second argument for mount flags.
|
|
ntfs_mount() now supports mount flags as per "man 2 mount". Currently
|
|
only the MS_RDONLY flag is supported/implemented. This breaks
|
|
compatibility with older libntfs versions and hence the major version
|
|
number of the library has been increased.
|
|
Adapt utilities to make use of new ntfs_mount syntax.
|
|
|
|
17/11/2001 - Add description of compression algorithm.
|
|
|
|
09/11/2001 - 1.4.0 - Major fix in mkntfs, small update to ntfsfix and others.
|
|
Update ntfsfix to support Windows XP NTFS volumes (NTFS 3.1).
|
|
Update layout.h with more information.
|
|
(Re)enable shared libraries.
|
|
Changes to mkntfs:
|
|
- Correct handling of directories on volumes with cluster sizes
|
|
above 4096 bytes.
|
|
- Lower minimum size of NTFS partitions to 1MiB, scaling down the
|
|
logfile size as necessary.
|
|
- Support a wider range of input parameters. Now should have all
|
|
valid combinations covered.
|
|
- Update man page.
|
|
- Implement better determination of device size.
|
|
- Various bug fixes.
|
|
|
|
22/08/2001 - 1.2.2 - Small fix in mkntfs and minor updates.
|
|
Small fix in mkntfs for small volumes with non-standard sector sizes,
|
|
where the default values would result in a sector size smaller than the
|
|
sector size and mkntfs would refuse to run because of this. The man
|
|
page was updated accordingly.
|
|
Minor updates/clarifications to include/layout.h.
|
|
|
|
02/08/2001 - 1.2.1 - Added ntfsfix man page and minor cleanup.
|
|
David Martínez Moreno <david.martinez@rediris.es> donated a man page
|
|
for ntfsfix as well as spelling mistake fixes all over the place.
|
|
|
|
26/07/2001 - 1.2.0 - Important bug fixes to mkntfs.
|
|
Bug fixes for cluster sizes > 4kb involving corrections to mft mirror
|
|
size and contents, mft data attribute position and mft bitmap size.
|
|
Some of those were nasty so this is a major improvement. Hopefully these
|
|
were the last bugs.
|
|
|
|
25/07/2001 - 1.0.2 - Small cleanup of the distribution.
|
|
Move mkntfs to sbin (was put in bin before).
|
|
Small bugfix to mkntfs man page.
|
|
|
|
24/07/2001 - 1.0.1 - Small cleanup of the distribution.
|
|
Confirmed that at least gcc-2.96 is needed to compile linux-ntfs.
|
|
Removed ldm.c from linux-ntfs. It will reappear as ldminfo.c in a new
|
|
package, probably linux-ldm.
|
|
Taken out some file from the distribution, but they are still present
|
|
in CVS. This is because they are not really useful except if you are
|
|
a developer wanting to play about.
|
|
|
|
10/06/2001 - 1.0.0 - mkntfs release and bugfixes to ntfslib and the others.
|
|
Also, released ldm which dumps the ldm database on Win2k/XP dynamic
|
|
disks.
|
|
A man page for mkntfs is also installed by make install so man 8 mkntfs
|
|
can be used to show the recognised command line options.
|
|
Building of shared libraries is disabled by default as it breaks on
|
|
some systems.
|
|
Probably need at least gcc-2.95 or something like that from now on.
|
|
|
|
02/02/2001 - Started ChangeLog.
|
|
|