libntfs

From WiiBrew
Jump to navigation Jump to search

libntfs
Libntfs.png
General
Author(s)Numerous
Maintainer(s)shareese, Dimok
Contributor(s)rodries
TypePorted Libraries
VersionJanuary 13, 2013
LicenceGNU GPL v2
Links
Download
Source

libntfs is a port of the NTFS-3G driver to the Nintendo GameCube/Wii, modeled on the libfat interface.

Features

  • Full read/write, files of any size can be created, modified, renamed, moved, or deleted.
  • Compression, read/write support for compressed files
  • Symbolic link and directory junction walking
  • Partial journaling (see below)

NTFS-3G only supports partial journaling, so unexpected crashes or power loss can leave the file system in an inconsistent state. The only way to (correctly) fix it is to boot into Windows and let NTFS replay the journal; However, in most situations (read: it is not 100% guaranteed) this is not required and the file system can be remounted without problem. In situations where there has been heavy disc activity prior to the crash or power loss it is recommended you let Windows replay the journal before remounting with libntfs in order to prevent possible data lose and/or corruption.

Unsupported

  • Encryption, read/write support for encrypted files
  • Security (will probably never be implemented, cripples library functionality)

Implementation Specific Features

The following describes some of the differences between libntfs and other implementations of NTFS-3G.

Symbolic Links

Symbolics links are supported by the NTFS filesystem and are therefore supported in libntfs; however, whenever libntfs encounters a symbolic link it will (transparently) resolve it first. The effect of this is that when you open a symbolic link you in instead open what it is linked to. Creation of symbolic links is still supported, however once created you cannot actually tell it apart from a standard hard link due to the transparent symbloic link resolution.

This was a design choice and not a defect. I may change this behaviour in the future if it turns out to be troublesome.

Getting the latest sources

To grab the latest and greatest copy of the sources just type:

svn checkout svn://svn.code.sf.net/p/libntfs-wii/code/trunk libntfs-wii

Compiling and Installing

Make sure you have devkitPPC and the latest libogc installed. Then from the sources root directory, type:

make
make install      # or 'sudo make install' if you aren't root.

Usage

NTFS related routines can be accessed by adding the following line to your source file(s).

#include <ntfs.h>

When compiling you must also link against libntfs. To do this, add -lntfs to the LIBS section of your application Makefile; for example:

LIBS := -lwiiuse -lbte -lntfs -lfat -logc -lm

For a more practical example of using NTFS in your application, see the included 'example' folder.

Changelog

January 15, 2013

  • Update/sync with NTFS-3G version 2013.1.13 see full change log on NTFS-3G.
  • Fix bug where deleting a file / directory returned always success (0)
  • Change make install to default to wii-install and seperated cube-install
  • Change wii-install to copy files to $PORTLIBS path
  • Remove change of locale on ntfsInit

February 15, 2012

  • Update/sync with NTFS-3G version 2012.1.15 see full change log on NTFS-3G.

May 14, 2011

  • Update/sync with NTFS-3G version 2011.4.12 see full change log on NTFS-3G.

January 25, 2011

  • Update/sync with NTFS-3G version 2011.1.15 see full change log on NTFS-3G.

December 28, 2010

Lot's of changes which completed the lib. For full change log see the change log of libntfs in the WiiXplorer branches.
Here is a list of the main changes:

  • Update to NTFS-3G version 2010.10.2
  • Fix of the complete write functionality
  • Fix corrupting partitions when writing
  • Fixes in some read functions
  • Fix of volume size determination
  • Additional flag to ignore case sensitivity
  • Lot's of small bug fixes

August 19, 2009

  • Initial release, based on NTFS-3G 2009.4.4AR.16

Credits

A big thanks to all the authors of NTFS-3G] of which this library makes use of. Thanks also to the following:

  • Authors of libogc for providing the libraries framework
  • Authors of libfat for laying the foundations
  • rodries for his help and contributions (cache, bug fixes, etc)