logoAnerty's Lair - News << Home
^ Software Documents

Announce: Happy new year

Happy new year for 2010, and thanks to all who mailed me their thanks, bug reports and ideas.

There hasn't been much activity here for some time, but I'm still developping the tools available here. I've had less spare time than I thought I would, which delayed the new versions of DriveSort and JSavf. I hope I'll be able to release those faster this year.

Aside from this, a satisfied user of DriveSort recently asked me if there was any way to send me a small donation to thank me for it, but until now there wasn't anything like this on the site so I added a PayPal donation link near my mail down there should you feel generous.


Info: DriveSort under Linux

Linux DriveSort

I've done some tests in Ubuntu Linux v8.04 using Wine v0.9.59 as Windows emulator, and it seems to allow DriveSort to run under Linux. I currently don't plan to make a cross platform version of DriveSort, since my code base is tightly bound to the Microsoft APIs. It would be easier to rewrite the whole thing from scratch, and I'm not even sure there are portable APIs for disk management somewhere.

Still, there are some issues involved in running DriveSort under Wine:

  • I only managed to sort something by running DriveSort using sudo wine DriveSort.exe, otherwise it complained of "Access denied" when I tried to open a mounted FAT filesystem.
    This might be due to my somewhat exotic testing conditions (I've tried to sort an USB key connected to my Windows machine by running DriveSort over Wine over Ubuntu Linux over VMWare Player over Windows). I've tried to sort a TrueCrypt volume mounted in Ubuntu to skip the virtual machine layer, but it doesn't seem to solve the problem, I can only open the FS by running Wine as root. It might also have something to do with my Ubuntu installation, which is a preinstalled image (The Ubuntu VM Image I use).

    If you find a way to open a disk in DriveSort without running Wine as root, please tell me.
  • There are some Windows functions used by DriveSort which are not supported by Wine at the moment. Some are important, the others less so:
    • Volume locking (FSCTL_LOCK_VOLUME): Enables DriveSort to prevent other programs from accidentaly modifying the filesystem which it sorts, and to prevent DriveSort from opening a filesystem while another program works on it. Without this, there is no guarantee that your FAT filesystem won't be modified by two programs at the same time, so it might lead to a corrupted filesystem. You can try to prevent this by not doing anything on that filesystem, but it's still a bit dangerous.
      Reported by Wine as fixme:ntdll:NtFsControlFile stub! return success - Unsupported fsctl 90018 (device=9 access=0 func=6 method=0)
    • Volume Unlocking (FSCTL_UNLOCK_VOLUME): Enables DriveSort to release a volume lock when you close it. Not missed much when there is no way to lock the volume, but still important if Wine implements the locking without implementing the unlocking in a beta version.
      Reported by Wine as fixme:ntdll:NtFsControlFile stub! return success - Unsupported fsctl 9001c (device=9 access=0 func=7 method=0).
    • Drive Layout (IOCTL_DISK_GET_DRIVE_LAYOUT): Gives more details on the disk partitions to DriveSort.
      Reported by Wine as fixme:mountmgr:harddisk_ioctl unsupported ioctl 7400c.
    • Internet file read (InternetReadFileExW): Enables DriveSort to read the last DriveSort version from the net asynchronously when looking for uptades. Since the Wine placeholder function does nothing, the updater will complain that it can't tell the latest version of DriveSort with "Success" as a reason, which does not tell much.
      Reported by Wine as err:wininet:InternetReadFileExW (0x3, 0x14eae0, 0x8, 0x14ead0): not implemented in native
  • There's a Windows DLL which is not packaged with Wine: mfc42u.dll. To run DriveSort under Wine you need to put it either with DriveSort.exe or in the Wine system files. You can easily find it with Google mfc42u.dll.
  • Usually, when DriveSort closes a disk it just sorted, it attempts to dismount it to force the operating system to reload its filesystem caches. Under Windows the disk is automatically remounted, so this is transparent for the user. Under Wine, the disk is not automatically remounted, so don't freak out if your disk disappears when you close it under Wine, since it was only dismounted.

Using Wine allows to run DriveSort under Linux, but it won't be as safe as running it under Windows until Wine implements the volume locking.


Update: DriveSort v1.223

There should be a small performance improvement during the disk opening with this version, since I deferred some code which was only useful to the file properties dialog and took some time when confronted to many files, or big files.

Apart from that, given the number of bugs I found last time, I realized that it's nice to fix all that stuff, but then you need to keep up to date to benefit from it. There was no way to tell if the version you were running was the latest without having a look at this website, which might be a pain. I decided to include a new background task which checks if DriveSort is up to date. If it's not the case, it informs you of the new version, and allow you to go directly to the download page. By default, this checks are activated and performed at most once a week during DriveSort startup.

If you want to disable the update checks, or change their frequency, or manually launch an update check, you can do so from a new submenu "Updates..." in the mysterious menu on the right ("?").

If you have a firewall, it might ask you whether to allow DriveSort to connect to the Net. To help you set that up, here is what DriveSort does when it check for updates:

  • DriveSort asks the IP address of the www.anerty.net server, through a DNS request.
  • Once it found out where that is, it tries to connect to it on the TCP port 80 (HTTP)
  • It then requests the following URL: /software/file/DriveSort/?style=ver&curVer=1.222&curLang=0409.You can check it out if you want, there's only the application name and a version number for now. Later I might add some other stuff, that's why I added two parameters describing the version you're running. It'll allow to distinguish between critical and minor updates, and to redirect you to the traduction you had.
    • curVer is the program version you have (1.222 in this example)
    • curLang is a Windows language code which meands "French (France)" for 040c or "English (US)" for 0409
  • If DriveSort receives something ("DriveSort v1.222"), it checks if it's up to date, otherwise it tries a second time, and if it still doesn't work it informs you about not being able to get the version, and drops the matter until the next update check.

BugFix & Update: DriveSort v1.222

I decided to do a bit of pruning in DriveSort source code, to remove some old stuff related to the I-Bead (partial analysis of the SETTINGS.DAT file, special icon for that player, ...).

During this cleanup session, I found four bugs:

  • A rounding issue in my FAT-12 handling code prevented anyone from reading a disk formated in that filesystem. Hopefully this did not trouble many of you, since FAT-12 is only useful for real small disks (usually less than 8 MB, and never more than 32 MB). So unless you tried to sort an old floppy disk, this shouldn't have affected you.
  • When you were trying to open disk which was locked by another process (for example an Explorer window), DriveSort complained about the lock, but unlocked it and dismounted it anyway, which allowed to open it if you tried once again. This is a bit more severe since it may have lead to errors if the locking process was writing at the time DriveSort forcefully removed the lock. This is now fixed, you can test it by repeatedly trying to open a disk which is open in an Explorer window. The message will appear as long as there is a lock.
  • When backing up or restoring a disk from DriveSort the disk was not correctly locked. This bug is also quite severe since it might have lead to inconsistent backups, or a corrupted restored disk if another process was writing to the disk while a backup or restore was in progress. I've fixed it so that when you launch a backup or restore on a disk, the task will wait to obtain an exclusive lock on the disk before doing its job. Its displayed status will then contain "Waiting disk lock". When the lock is released, the task will start the backup or restore in the next 15s.
  • The playlist mode did not work correctly when using any other sort mode than ascending with the folders after the files. In descending sort, the playlist numbers were still generated in ascending order, which made the files jump from one side of the list to the other. The relative order constraints between folder and file were not built in the playlist mode, which made some files or folders seem stuck in that mode.

I used this opportunity to add a confirmation message when leaving DriveSort while there's still some tasks in progress (for example a backup or restore). The default action was to abort the tasks, which you can still do using the 'Ignore' button.