Hi Ted

I got the read to work along with copying files from the FS to the
local file system, both through Finder and the command line.
I have implemented the setAttributes:ofItemAtPath method, but I
noticed it is only called once or twice and that too for files created
by finder.
What should I have in setAttributes? Aren't we setting the attributes
for files in attributesOfItemAtPath. At present I'm just returning a
YES in setAttributes

What should be my next step for implementing the write function?

Thanks.

On Nov 19, 10:48 pm, "ted bonkenburg" <[EMAIL PROTECTED]> wrote:
> 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 implementsetAttributes: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
-~----------~----~----~----~------~----~------~--~---

Reply via email to