On Wed, Nov 19, 2008 at 5:53 AM, iDeveloper <[EMAIL PROTECTED]> wrote: > > Hi > > Thanks for the tips Ted. Was successfully able to create a read-only > file system with all the files opening and showing up properly. > Now I'm trying to make it a read-write. For starters, I'm setting a > 511 posix permission for all files and have implemented the > createDirectoryAtPath, createFileAtPath and copyItemAtPath methods.
There is no copyItemAtPath: delegate method. You should be looking in the GMUserFileSystem.h header file that is installed as part of MacFUSE.framework to see what delegate methods are supported. Many of the methods are similar to the NSFileManager methods to make it a bit easier to understand what they are supposed to do, but they don't correspond exactly. In particular, the delegate methods that you implement should return errors in the posix domain and should behave more like their BSD equivalent calls than the NSFileManager ones. If you read the GMUserFileSystem.h header file carefully it should explain things. For write support you'll need to implement setAttributes:ofItemAtPath: as well as writeFileAtPath: and probably other delegate methods that I'm forgetting. > But when I try to copy a file in another directory of the same file > system it gives a prompt for insufficient permissions and copying a > file from the FS to a local directory does a copy operation after > which the copied file just disappears! > Do I need to do anything more than setting permission as 511 and > implementing the above said methods for doing a copy? It sounds like you are testing through the Finder. Again, I recommend you get things working on the command line first. Try to get these commands working from the command-line first: touch <path_to_file_on_fs> echo "blah" > <path_to_file_on_fs> echo "blahblah" >> <path_to_file_on_fs> rm <path_to_file_on_fs> rmdir <path_to_dir_on_fs> ted > > On Nov 18, 10:22 pm, "ted bonkenburg" <[EMAIL PROTECTED]> wrote: >> On Tue, Nov 18, 2008 at 5:00 AM, iDeveloper <[EMAIL PROTECTED]> wrote: >> >> > Hi. >> >> > I was finally able to display the contents in the root. Can someone >> > please tell me if contentsOfDirectoryAtPath is/should be called >> > everytime a user clicks on an item marked as a Directory? Or rather, >> > when is it called? >> > If I have multiple directories and I want to get their contents only >> > after the user double-clicks on one of them, how should I implement >> > contentsOfDirectoryAtPath and attributesOfItemAtPath? What is the >> > order in which they are called? >> >> MacFUSE is not a Finder plugin; you are implementing a real file >> system, so you need to think beyond the Finder. Your >> contentsOfDirectoryAtPath: will be called frequently. You may see >> accesses to files in a directory when there was no >> contentsOfDirectoryAtPath: call. There is no strict order on when >> these will be called. The Finder, other applications, and even parts >> of the OS that would would not expect may be requesting directory >> contents or file attributes on your file system at any time. They will >> even do this for files and directories that don't exist. >> >> If you mount your file system with the "debug" option then the fuse >> library will spit out messages that correspond with file system >> operations as they occur. That can be somewhat useful. >> >> When writing a file system, I typically start off by avoiding the >> Finder and using the Terminal to navigate my file system until I get >> that working perfectly. Basically, you want to start off by getting >> simple commands like: >> >> ls <path_on_your_fs> >> ls -l <path_on_your_fs> >> stat <path_on_your_fs> >> cat <path_to_file_on_your_fs> >> >> If you debug and get these basic operations working well then you can >> start trying to work well with the Finder. Working well with the >> Finder is not an easy task; the Finder has all sorts of interesting >> file access patterns and is very picky that your file system is >> returning the proper errors and behaving as much like a "standard" >> file system as possible. This is much easier to do for a read-only >> file system, so that is usually the best way to start. >> >> Best of luck! >> >> ted >> >> >> >> > On Nov 18, 2:01 pm, iDeveloper <[EMAIL PROTECTED]> wrote: >> >> Hi Ted >> >> >> I added the ro option back. The ytfs example creates an empty >> >> dictionary for nodes that exist in the videos_ dictionary. Shouldn't >> >> we be returning attributes specified in the .h file (File type, size >> >> etc) >> >> Can you please point me to an example/documentation which explains the >> >> methods and their implementation in detail. >> >> The GMUserFIleSystem specifies pretty much all the documentation. But >> >> an example implementing this might be helpful. I tried running the >> >> LoopbackFS example. But as soon as I select a directory, it gives an >> >> alert saying >> >> >> Internal fuse error (rc=1) while attempting to mount the file system. >> >> For now, the best way to diagnose is to look for error messages using >> >> Console. >> >> mount_fusefs: failed to mount /Volumes/loop@/dev/fuse0: Socket is not >> >> connected >> >> >> And thats where I'm stuck! >> >> >> On Nov 18, 1:12 pm, "ted bonkenburg" <[EMAIL PROTECTED]> wrote: >> >> >> > On Mon, Nov 17, 2008 at 10:44 PM, iDeveloper <[EMAIL PROTECTED]> wrote: >> >> >> > > Hi Ted >> >> >> > > Thanks for the quick response. YTFS works fine. There is no problem >> >> > > with running that example. I've just modified it at some places, like >> >> > > removing the ro option, returning my icns file from iconDataAtPath and >> >> > > returning an array with the folder names in my directory. I've not >> >> > > made any other changes to the code. >> >> >> > It is good to hear that ytfs is working for you. >> >> >> > > Removed the ro option as I wanted it to be a read-write system. >> >> >> > If you want to create a write-able file system then you really need to >> >> > properly implement almost all of the GMUserFileSystemOperations >> >> > informal protocol methods. In addition, you'll need to be thorough and >> >> > make sure that your operations behave properly by returning proper >> >> > errors, filling in a complete set of attributes in >> >> > attributesOfItemAtPath:, etc. >> >> >> > For this reason, I suggest you get your file system working well in >> >> > read-only mode before you tackle write support. >> >> >> > ted >> >> >> > > Thanks again >> >> >> > > On Nov 18, 9:12 am, "ted bonkenburg" <[EMAIL PROTECTED]> wrote: >> >> > >> On Mon, Nov 17, 2008 at 8:13 AM, iDeveloper <[EMAIL PROTECTED]> >> >> > >> wrote: >> >> >> > >> > Hi >> >> >> > >> > I'm trying to create a file system using the ytfs example as the >> >> > >> > base. >> >> > >> > But nothing seems to be working with my code! The icns file doesn't >> >> >> > >> Did you get ytfs working? If not, did you follow the tutorial >> >> > >> exactly? >> >> > >> Specifically, did you follow the part that recommended that you check >> >> > >> out the 1.5 tag for the YTFS example? >> >> >> > >> svn >> >> > >> checkouthttp://macfuse.googlecode.com/svn/tags/macfuse-1.5/filesystems-objc/y... >> >> > >> ytfs >> >> >> > >> The head ytfs-tutorial is updated to reflect changes to the >> >> > >> Objective-C API that may be in the next MacFUSE release. >> >> >> > >> > show up, the file system doesn't dismount on stopping the project >> >> > >> > and >> >> > >> > I can't see any of the files in my directory :( >> >> >> > >> Ok, these are a lot of problems at once. I'll wait until I hear if >> >> > >> you >> >> > >> got ytfs working as it is supposed to work first. >> >> >> > >> > I am getting files from a web-service, have removed the ro option >> >> > >> > and >> >> > >> > returning attribute dictionary for both root dir and files. But I >> >> >> > >> Removing the "ro" option is not a good idea until >> >> >> > >> > still don;t see anything in the root dir! And if I try to import >> >> > >> > MacFUSE.h instead of GMUserFileSystem.h, I get an error "No such >> >> > >> > file >> >> > >> > or directory" >> >> > >> > I am using MacFUSE 1.7. I've included the MacFUSE.framework file in >> >> > >> > the project but I don't see a MacFUSE.h in the headers! >> >> >> > >> MacFUSE.h is not present in 1.7. It is new and should be present in >> >> > >> the next release of MacFUSE. >> >> >> > >> It sounds to me like maybe you have checked out the current >> >> > >> development tree rather than a 1.5 or 1.7 tag, which will work better >> >> > >> when working off one of the example Objective-C file systems. >> >> >> > >> If you want to be forward-thinking in your work, then you can develop >> >> > >> against (and help test) the developer releases. If so, then please >> >> > >> read: >> >> >> > >>http://code.google.com/p/macfuse/wiki/AUTOINSTALL >> >> >> > >> ted >> >> >> > >> > Please help! > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "MacFUSE" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/macfuse?hl=en -~----------~----~----~----~------~----~------~--~---
