Suppose it's time for a bit of an update, now I've had a chance to look at the code again:
Of the main file server function codes
now only 1 (Save File) and 11 (Put Bytes) have not had any work done on them. I've also not implemented the user database yet, and so the login accepts any username, and consequently things like managing user details (password, URD, boot flags, privs, quotas, access control etc.) are also untouched code wise. But I can log in and open files on the Risc OS desktop, BBC B and Master, which means I'm most of the way there. Directory creation, traversal and object deletion is also working (other than access control), and I can create and write files - albeit one byte at a time with function 9.
Despite the long conversation above about what to do with attributes and load/exec addresses, I've come to the conclusion that ALL possible methods of storing them suck for different reasons! If you have file extensions (like NFS) then you have to be really careful you don't create test,fff test,aff and a folder called test at once, which would be legal on the Fat filesystem but causes major confusion for the client. Having the info in a separate file means you not only have to keep it in sync, but then hide that file from the client and put protection in place to stop it being accessed or overwritten by the client. Ideally I'd keep them with the file somehow, but I've not managed to scavenge enough bits in the FAT directory structure just yet - but I'm still working on it. At the moment the code quietly discards changes to object attributes, and generates a set using a data filetype and the last modified date when they are requested.
I'm probably not going to get much opportunity to touch the code again before Christmas, but during the Christmas break I'm hoping to get the fileserver code to a 'functionally complete' stage when it can be released, and then start work on some slightly more exciting things - like a HTTP gateway.