468 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			468 lines
		
	
	
		
			23 KiB
		
	
	
	
		
			Plaintext
		
	
	
| xx/xx/2004 - 1.8.6-WIP
 | ||
| 	- 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 after 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)
 | ||
| 
 | ||
| 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 ENOTSUP.  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 a 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<72>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.
 | ||
| 
 |