dosfstools (3.0.1-1) unstable; urgency=low

  * Replacing obsolete dh_clean -k with dh_prep.
  * Merging upstream version 3.0.1:
    - Changing some wording to make the indended meaning of "full-disk device"
      more obvious (Closes: #500623).

 -- Daniel Baumann <daniel@debian.org>  Sun, 23 Nov 2008 22:51:46 +0100

dosfstools (3.0.0-1) unstable; urgency=low

  * Merging upstream version 3.0.0.
  * Updating homepage field in control.
  * Updating upstream information in copyright file.
  * Removing now useless lintian override.
  * Removing now useless manpage.
  * Removing now useless patches.
  * Removing now useless docs.
  * Updating rules to for new upstream.

 -- Daniel Baumann <daniel@debian.org>  Sun, 28 Sep 2008 11:56:00 +0200

dosfstools (2.11-8) unstable; urgency=low

  * Adding debug package.

 -- Daniel Baumann <daniel@debian.org>  Sat, 20 Sep 2008 21:52:00 +0200

dosfstools (2.11-7) unstable; urgency=low

  * Adding manpage for dosfslabel, thanks to Francois Wendling
    <frwendling@free.fr> (Closes: #496760).
  * Updating vcs fields in control file.
  * Using patch-stamp rather than patch in rules file.

 -- Daniel Baumann <daniel@debian.org>  Sat, 20 Sep 2008 21:48:00 +0200

dosfstools (2.11-6) unstable; urgency=high

  * Temporarily disabling bootcode.dpatch since it breaks syslinux,
    thanks to Joey Hess <joeyh@debian.org> (Closes: #489292).

 -- Daniel Baumann <daniel@debian.org>  Fri,  4 Jul 2008 20:28:00 +0200

dosfstools (2.11-5) unstable; urgency=medium

  * Adding patch to mention fsckNNNN.rec files in dosfsck manpage
    (Closes: #444596).
  * Adding patch from Sam Bingner <sam@bingner.com> to add option for using a
    bootcode template (Closes: #303442).
  * Adding patch from Adonikam Virgo <adonikam@virgonet.org> to fix backup
    sector getopt (Closes: #232387, #479794).
  * Adding patch from Karl Tomlinson <karlt@karlt.net> to fix segfaults with
    zero slots in lfn (Closes: #152550, #353198, #356377, #401798).
  * Rediffing 99-conglomeration.dpatch.
  * Adding patch from Eero Tamminen <eero.tamminen@nokia.com> to improve memory
    efficiencey when checking filesystems.
  * Adding patch to list alternative binary names in manpage synopsis
    (Closes: #284983).
  * Adding patch to not deny FAT32 auto-selection in mkdosfs manpage
    (Closes: #414183).
  * Adding patch to not use confusing 'drop' in dosfsck manpage where 'delete'
    in dosfsck manpage where 'delete' is meant (Closes: #134100).
  * Listing alternative binary names in long-description (Closes: #434381).
  * Updating manpage spelling patch to also cover wrong acknowledge header
    (Closes: #306659).
  * Breaking out manpage typos patch.

 -- Daniel Baumann <daniel@debian.org>  Fri, 27 Jun 2008 09:03:00 +0200

dosfstools (2.11-4) unstable; urgency=low

  * Redone debian packaging from scratch.
  * Both stop avoiding -O2 and stop adding -fno-strict-aliasing to OPTFLAGS on
    alpha; seems not to be required anymore.
  * Added patch from Jakub Jelinek <jakub@redhat.com> to support
    -D_FORTIFY_SOURCE=2 (for future use).
  * Added patch from Jeremy Katz <katzj@redhat.com> to add dosfslabel
    (originally by Peter Jones).
  * Added patch from Pavol Rusnak <prusnak@suse.cz> to use O_EXCL in mkdosfs.
  * Added patch from Petr Gajdos <pgajdos@suse.cz> to automatically determine
    sector size of the device.

 -- Daniel Baumann <daniel@debian.org>  Thu, 26 Jun 2008 13:13:00 +0200

dosfstools (2.11-3) unstable; urgency=low

  * New maintainer (Closes: #488018).

 -- Daniel Baumann <daniel@debian.org>  Thu, 26 Jun 2008 12:31:00 +0200

dosfstools (2.11-2.3) unstable; urgency=low

  * NMU
  * dpkg --print-gnu-build-architecture is gone, use dpkg-architecture
    instead. Closes: #407192
  * Fixed errors in the mkdosfs manpage that could cause confusion to
    readers, Thanks to Onno Benschop. Closes: #433561 (LP: #126121)

 -- Joey Hess <joeyh@debian.org>  Mon, 10 Sep 2007 15:57:36 -0400

dosfstools (2.11-2.2) unstable; urgency=low

  * Non-maintainer upload.
  * Apply Ubuntu patches. Closes: #417673

 -- Andreas Barth <aba@not.so.argh.org>  Sat,  9 Jun 2007 21:18:21 +0000

dosfstools (2.11-2.1) unstable; urgency=low

  * Non-maintainer upload.
  * Fix unaligned memory accesses which cause warnings to appear everytime
    the elilo bootloader script runs.  This has led a number of users to
    believe their install has failed.  Thanks to Khalid Aziz for the patch.
    Closes: #258839.

 -- dann frazier <dannf@debian.org>  Thu,  9 Jun 2005 18:14:45 -0600

dosfstools (2.11-2) unstable; urgency=low

  * Oops, debian/rules overrides OPTFLAGS and therefore the
    -D_FILE_OFFSET_BITS=64 in the toplevel Makefile had no effect; added
    $(shell getconf LFS_CFLAGS) to OPTFLAGS as suggested by Lars Wirzenius in
    #300126. Sorry, I tested a version compiled by the upstream Makefile...
    Closes: #300126, #301254.
  * #302517 was indeed the same as #294177, and fix is the same (use __u8) as
    in 2.11-1. Closes: #302517.

 -- Roman Hodek <roman@hodek.net>  Sun,  3 Apr 2005 13:56:55 +0200

dosfstools (2.11-1) unstable; urgency=low

  * New upstream version (Closes: #293394, #295181, #294177, #270023, #258402,
    #232482, #214656, #286219, #276834, #266254, #128800)

 -- Roman Hodek <roman@hodek.net>  Sat, 12 Mar 2005 17:19:27 +0100

dosfstools (2.10-1) unstable; urgency=low

  * New upstream version:
     - dosfsck: various 64-bit fixes and removed some warnings by Michal
       Cihar <mcihar@suse.cz>
     - mkdosfs: better error message if called without parameters (also
       suggested by Michal)
  * recompilation removed errno@GLIBC_2.0 symbol; Closes: #168540
    (probably already 2.9-1 did)

 -- Roman Hodek <roman@hodek.net>  Mon, 22 Sep 2003 22:15:32 +0200

dosfstools (2.9-1) unstable; urgency=low

  * New upstream version:
   (Closes: #156266, #139198, #152769, #152868, #181196)
    - dosfsck: if EOF from stdin, exit with error code
   	- dosfsck: Fix potential for "Internal error: next_cluster on bad cluster".
   	- dosfsck: When clearing long file names, don't overwrite the dir
   	  entries with all zeros, but put 0xe5 into the first byte.
   	  Otherwise, some OSes stop reading the directory at that point...
   	- dosfsck: in statistics printed by -v, fix 32bit overflow in number
   	  of data bytes.
   	- dosfsck: fix an potential overflow in "too many clusters" check
   	- dosfsck: fix 64bit problem in fat.c (Debian bug #152769)
   	- dosfsck: allow FAT size > 32MB.
   	- dosfsck: allow for only one FAT
   	- dosfsck: with -v, also check that last sector of the filesystem can
   	  be read (in case a partition is smaller than the fs thinks)
   	- mkdosfs: add note in manpage that creating bootable filesystems is
   	  not supported.
   	- mkdosfs: better error message with pointer to -I if target is a
   	  full-disk device.
  * debian/control: Added build dependency on debhelper (Closes: #168388)
  * debian/control: spelling fix (Closes: #124564)
  * debian/control: metion names of tools in description (Closes: #186047)

 -- Roman Hodek <roman@hodek.net>  Thu, 15 May 2003 20:54:04 +0200

dosfstools (2.8-1) unstable; urgency=low

  * New upstream version fixing an endless loop.
    (Closes: #87205, #86373, #87590)

 -- Roman Hodek <roman@hodek.net>  Wed, 28 Feb 2001 17:23:16 +0100

dosfstools (2.7-1) unstable; urgency=low

  * New upstream version with various bug fixes. (Closes: #83883)
  * Changed maintainer e-mail addr.

 -- Roman Hodek <roman@hodek.net>  Wed, 14 Feb 2001 12:49:00 +0100

dosfstools (2.6-1) unstable; urgency=low

  * New upstream version with various bug fixes.

 -- Roman Hodek <roman@hodek.net>  Tue, 28 Nov 2000 17:27:35 +0100

dosfstools (2.5-1) unstable; urgency=low

  * New upstream version fixing llseek() on alpha (Closes: #54145)

 -- Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>  Fri, 7 Jan 2000 09:26:51 +0100

dosfstools (2.4-1) unstable; urgency=low

  * New upstream version fixing compilation problem on alpha (Closes: #48331)

 -- Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>  Tue, 26 Oct 1999 09:38:39 +0200

dosfstools (2.3-1) unstable; urgency=low

  * New upstream version:
     - Manpage fixes.
     - Fixed usage message of mkdosfs.
     - Fixed compilation on alpha (llseek).
     - Fixed unaligned accesses on alpha (Closes: #47714)
     - Fixed renaming of files in dosfsck (extension wasn't really
       written). Closes: #45774
  * Remove bashisms from debian/rules.
  * FHS transition.
  * On alpha, omit -O2 and add -fno-strict-aliasing to OPTFLAGS, as
    otherwise the programs fail with unaligned traps.
  * FHS transition (Standards-Version 3.0.1).

 -- Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>  Fri, 22 Oct 1999 13:30:59 +0200

dosfstools (2.2-1) unstable; urgency=low

  * New upstream version. Closes: #40533
  * Updated copyright file for new location /usr/share/common-licenses/GPL.
  * Updated Standards-Version to 3.0.0.

 -- Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>  Tue, 6 Jul 1999 16:07:22 +0200

dosfstools (2.1-1) unstable; urgency=low

  * New upstream version.
  * Also installs symlinks mkfs.vfat and fsck.vfat,so that also
    filesystems listed with type "vfat" in /etc/fstab can be automatically
    checked.

 -- Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>  Fri, 28 May 1999 11:25:17 +0200

dosfstools (2.0-1) unstable; urgency=low

  * I'm now upstream maintainer, too.
  * Adapted debian/rules for new central Makefile and rewritten to
    debhelper.
  * Fixed harmless warnings in mkdosfs.c and fat.c.
  * mkdosfs.c: Return type of getopt() must be stored in an int, not in a
    char. (Showed up on powerpc, where chars are default unsigned.)

 -- Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>  Fri, 30 Apr 1999 14:37:37 +0200

dosfstools (1.0-16) unstable; urgency=low

  * Both tools are not maintained upstreams anymore, so I take over
    general maintainership now...
  * Both mkdosfs and dosfsck now support the FAT32 format. dosfsck
    automatically detects it. For mkdosfs, 32 is now a valid argument to
    -F, but FAT32 format isn't selected automatically (yet). With FAT32,
    you can also set the number of reserved sectors (-R) and location of
    the boot sector backup (-b) if you like (defaults are reasonable).
  * dosfsck can handle and check VFAT-style long filenames now. It uses
    the long names in listing etc. when available. There are also some
    checks on the structures of LFNs and some fixes for possible problems.
  * Implemented Atari format in both, dosfsck and mkdosfs. Under Atari TOS
    basically the same FAT format is used as under DOS, however, there are
    some little differences. Both tools now automatically select Atari
    format if they run on an Atari. You can switch between standard MS-DOS
    and Atari format with the -A option.
  * Applied patch by Giuliano Procida <gpp10@cus.cam.ac.uk> to add loop
    device support to mkdosfs: Usual floppy sizes are detected and
    parameters (media byte,...) are set up accordingly.
    My own additions to this: Don't die on loop devices that don't have
    such a floppy size, but use some default hd params. Added endianess
    conversions to Giulianos patch.
  * More/better data in boot sector dump of dosfsck -v.
  * Fixed lots of gcc warnings in the source. Removed -Wno-parentheses flag.
  * Made dosfsck -v a bit more verbose.
  * Extended README's for FAT32/LFN.
  * Written a README for Atari format differences.
  * Some minor cleanups in debian/rules.
  * Install README files as README.{mkdosfs,dosfsck,Atari}.gz.
  * AFAIK the tools still have alignment problems on Alpha machines.
    Someone wanted to send me a patch, but I haven't heard from him for
    months...
  * Set Standards-Version to 2.5.0.0 (no changes).

 -- Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>  Wed, 28 Apr 1999 11:06:15 +0200

dosfstools (1.0-15) frozen unstable; urgency=low

  * Applied patch by Juan Cespedes <cespedes@debian.org> to make mkdosfs
    work with newer 2.1 kernels again. (Fixes: #20320)
  * Remove CC=gcc in debian/rules to make cross-compiling possible.

 -- Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>  Thu, 30 Apr 1998 17:09:08 +0200

dosfstools (1.0-14) frozen unstable; urgency=medium

  * New maintainer
  * Ignore long name directory slots of VFAT, instead of trying to correct
    that "file names". Fixes: #20711
  * Don't consider file names with chars >= 128 to be bad, they're allowed.

 -- Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>  Thu, 30 Apr 1998 10:00:16 +0200

dosfstools (1.0-13) stable; urgency=low

  * Fixed nasty bug that caused every file with a name like xxxxxxxx.xxx
    to be treated as bad name that needed to be fixed. (closes: Bug#17389)

 -- Martin Schulze <joey@finlandia.infodrom.north.de>  Thu, 26 Feb 1998 01:14:40 +0100

dosfstools (1.0-12) stable; urgency=low

  * Moved executables and their links into /sbin (Bug#15037)
  * Corrected Standards-Version to 2.3.0.1

 -- Martin Schulze <joey@finlandia.infodrom.north.de>  Fri, 9 Jan 1998 21:49:48 +0100

dosfstools (1.0-11) stable; urgency=low

  * Applied patches to source files from Juan Cespedes which got lost in
    the last upload (Bug#16493, Bug#16494, Bug#16490)
  * build-stamp is now removed first in clean target (Bug#16491)

 -- Martin Schulze <joey@finlandia.infodrom.north.de>  Sat, 3 Jan 1998 15:06:27 +0100

dosfstools (1.0-10) stable; urgency=low

  * Added links for mkfs.msdos and fsck.msdos (Bug#15037)
  * Added links for mkfs.msdos.8 and fsck.msdos.8
  * Corrected source location
  * Rewrote bad_name() (Bug#9871, part 2)
  * s/int/time_t in check.c to omit a compiler warning (Bug#9871, part 3.1)
  * Modified defaults, interactive is the default now
  * Fixed renaming of files, they are saved now (Bug#9871, part 1)
  * Fixed return type of date_dos2unix (Bug#9871, part 3.2)

 -- Martin Schulze <joey@finlandia.infodrom.north.de>  Wed, 31 Dec 1997 18:59:53 +0100

dosfstools (1.0-9.1) unstable; urgency=low

  * Non-maintainer release
  * .diff file was wrong in 1.0-9; fixed (Bug#13102)
  * Fixed endianess patches (fixes Bug#11648)
  * Built with libc6

 -- Juan Cespedes <cespedes@etsit.upm.es>  Thu, 23 Oct 1997 23:19:34 +0200

dosfstools (1.0-9) stable; urgency=low

  * Added endianess patches from Frank Neumann
    <Frank.Neumann@Informatik.Uni-Oldenburg.DE> (Bug#9959)
  * Updated Werner Almesbergers address
  * Added -I switch to mkdosfs to allow full disk devices (Bug#10789)

 -- Martin Schulze <joey@finlandia.infodrom.north.de>  Sun, 20 Jul 1997 14:51:33 +0200

dosfstools (1.0-8) stable; urgency=low

  * Fixed typo in mkdosfs.c (Bug#7396)

  * New maintainer address

 -- Martin Schulze <joey@infodrom.north.de>  Mon, 28 Apr 1997 12:51:13 +0200

dosfstools (1.0-7) stable; urgency=low

  * Minor fixes

  * Converted to Standards-Version 2.1.1.2

 -- Martin Schulze <joey@debian.org>  Sat, 8 Feb 1997 15:03:52 +0100

Mon Jan 20 22:45:23 1997  Martin Schulze  <joey@finlandia.infodrom.north.de>

	* debian.control: Corrected otherfs to otherosfs :-)

Sun Jan 19 23:57:09 1997  Martin Schulze  <joey@finlandia.infodrom.north.de>

	* mkdosfs.c: Removed one line printing out debug information.

Wed Jan 15 00:25:02 1997  Martin Schulze  <joey@finlandia.infodrom.north.de>

	* mkdosfs.c: Modified code to work properly under AXP. Thanks to
	Matt Gundry <mjgundry@primenet.com> for contacting me and
	providing patched sources.
	
Mon Jan 13 13:00:14 1997  Martin Schulze  <joey@finlandia.infodrom.north.de>

	* mkdosfs.c: Added patch from Sven Rudolph <sr1@inf.tu-dresden.de>
 	to support creation on disk images as well.

Tue Jan  7 12:04:21 1997  Martin Schulze  <joey@finlandia.infodrom.north.de>

	* Moved into section 'otherfs'

-- Released 1.0-4
	
Sun Dec 22 11:28:03 1996  Martin Schulze  <joey@finlandia.infodrom.north.de>

	* debian.rules: Installed ChangeLog

Wed Aug  7 19:07:15 1996  Martin Schulze  <joey@finlandia.infodrom.north.de>

	* Corrected debian.rules to provide $(package)_$(revision).diff.gz

Mon Aug  5 11:13:34 1996  Martin Schulze  <joey@finlandia.infodrom.north.de>

	* Added Conflicts: and Provides: entries in control file to really
	replace mkdosfs.  Thanks to Michael Meskes for reporting this bug.

Thu Jul 18 22:01:34 1996  Martin Schulze  <joey@finlandia.infodrom.north.de>

	* added dosfscheck to the package

Wed Jul  3 00:57:23 1996  Martin Schulze  <joey@finlandia.infodrom.north.de>

	* Added debian specific files

	* mkdosfs.c: inserted some brackets to stop gcc from moaning

	* mkdosfs.8: corrected some bold/inverse text phrases

	* mkdosfs.c: initialized a variable to stop gcc from moaning
