Hacker News new | ask | show | jobs
by stutonk 2029 days ago
If it is indeed a union mount mechanism, then that's truly a remarkable feature. Reading the documentation makes it sound like something akin to an symbolic link but perhaps not in the actual filesystem; I still can't tell if it's implemented in the kernel/FS or just the shell (or to what extent the two are integrated). If it's just the shell then this seems to be a shining example of where the POSIX interface is holding us back. In Linux, they've tried to implement union mounts a number of times (as UnionFS, aufs, and OverlayFS) because it's almost too complicated to get right for Unix-style filesystems and you need a bunch of kernel-level code. Do you happen to know if it was possible to create the ASSIGNs programmatically? Does deleting/renaming files in the ASSIGN work like you'd hope?
1 comments

Yes, it was indeed implemented at OS-level, you could point at the assigned name/alias from, say, a paint program and find the files/dirs you'd expect to see. Changes to files/dirs too worked as expected as far as I can recall (disclaimer: most recent Amiga experience -> 1994). It was also possible to create assigns programmatically with calls to the Amiga DOS library, see "dos.library/AssignPath" in http://amiga.nvg.org/amiga/reference/Includes_and_Autodocs_2...

    NAME
     AssignPath -- Creates an assignment to a specified path (V36)
    
       SYNOPSIS
     success = AssignPath(name,path)
     D0                    D1   D2
    
     BOOL AssignPath(STRPTR,STRPTR)
    
       FUNCTION
     Sets up a assignment that is expanded upon EACH reference to the name.
     This is implemented through a new device list type (DLT_ASSIGNPATH, or
     some such).  The path (a string) would be attached to the node.  When
     the name is referenced (Open("FOO:xyzzy"...), the string will be used
     to determine where to do the open.  No permanent lock will be part of
     it.  For example, you could AssignPath() c2: to df2:c, and references
     to c2: would go to df2:c, even if you change disks.
    
     The other major advantage is assigning things to unmounted volumes,
     which will be requested upon access (useful in startup sequences).
    
       INPUTS
     name - Name of device to be assigned (without trailing ':')
     path - Name of late assignment to be resolved at each reference
    
       RESULT
     success - Success/failure indicator of the operation
    
       SEE ALSO
     AssignAdd(), AssignLock(), AssignLate(), Open()