Giter VIP home page Giter VIP logo

idedosfs's Introduction

idedosfs: FUSE filesystem module for IDEDOS hard disk images
plus3dosfs: FUSE filesystem module for +3DOS partitions within an idedosfs

To start idedosfs just run "./start <hdf-file>"; this will start idedosfs on <hdf-file> (mounting on mnt/) and then, for each partition in the image, if the type is supported, start its fs (mounting on sub/<partition-index>).  For now the only supported type is 0x03 "+3DOS", which is handled by plus3dosfs.

To stop idedosfs just run "./stop"; this will unmount the sub/ mounts and then unmount mnt/.

Extended File Attributes:
All the FSes use xattrs to communicate out-of-band data like file/partition types.
To read these you will need getfattr(2) or the <attr/xattr.h> functions.  On Debian these are packaged in 'attr' and 'libattr1-dev'.
To copy a file preserving its xattrs use "./cpx".  It's a wrapper for cp that passes --preserve=xattr.
The xattrs are listed for each FS, below.
=idedosfs=
	user.idedos.pt	On partitions, gives the IDEDOS partition type (eg. "1" = IDEDOS System Partition, "3" = +3DOS)
	user.plus3dos.xdpb.ndirent	On +3DOS partitions, gives the number of directory entries, from the eXDPB
	user.plus3dos.xdpb.nblocks	On +3DOS partitions, gives the number of blocks, from the eXDPB
	user.plus3dos.xdpb.bsh	On +3DOS partitions, gives the Block SHift, from the eXDPB
=plus3dosfs=
	user.plus3dos.header	Indicates whether a file is headered; "1" for headered, "0" for headless.  Only empty files may be setxattr to "1", any file may be setxattr to "0".
	user.plus3dos.plus3basic.filetype	Gives the file type (0 = BASIC program, 1 = Number array, 2 = Character array, 3 = Code file or SCREEN$)
	user.plus3dos.plus3basic.line	On BASIC program files, gives the LINE value or 0x8000
	user.plus3dos.plus3basic.prog	On BASIC program files, gives the start of the variable area (which is the second tape parameter)
	user.plus3dos.plus3basic.name	On array files, gives the array's name
	user.plus3dos.plus3basic.addr	On code files, gives the code address

Known Bugs:
=idedosfs=
*	If you try to truncate() a partition, idedosfs will pretend it succeeded (because otherwise open(..., O_TRUNC) fails which is a pain)
*	There's no mechanism for notifying users if the partition is changed - and flock() doesn't save you because there's more than one hardlink to each partition.  idedosfs needs to have its own flock() method that locks all the hardlinks to the partition.
=plus3dosfs=
*	write() may silently fail to write out data in an ENOSPC condition (if disk_alloc or extent_alloc fails)
*	Trying to cpx a file with headers will fail as cp writes the data first then tries to set the xattrs.  At present you can't headerify a nonempty file with setxattr()
*	It is assumed (incorrectly) that the first extent of a file has extent number 0.  This can break with sparse files
*	Illegal characters <>.,;:=?*[] are permitted in filenames (actually, '.' is only permitted in extensions)
*	Conversely, / is legal in CP/M filenames, but not in Unix.  I may map it to ,

idedosfs's People

Contributors

ec429 avatar weareredrobot avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.