As on update: I had already refrenced LoopbackFS heavily, but to be sure I ended up copying the entire file and making changes from there. Creating a new file now works from the command line and persists the data correctly back to the server. However I can't seem to get modifying data on the server to work correctly.
>From the command line I open a file on the filesystem using Vi. The file contents are correctly displayed. The log shows that a /.file.txt.swp is created. I then edit the file and save back the changes. I get a warning telling me that the file has changed since reading it. I choose to write anyway and the the program goes into an infinite loop. The log file shows that its continualy getting the attributes of increasing numbered files, such as /4913, /5036, ect. If I try echoing text into a file already on the filesystem I get a permission denied message. Any ideas? On Oct 30, 4:37 pm, "ted bonkenburg" <[EMAIL PROTECTED]> wrote: > On Thu, Oct 30, 2008 at 2:17 PM, Alex <[EMAIL PROTECTED]> wrote: > > > Thanks for the quick reply Ted. Sorry about the ambiguous post, it > > kind of feels like I'm coding in the dark a little bit. > > > Here are a few more specifics: > > 1. Mac OS X version: 10.5.5 > > 2. arch (x86, ppc, x86_64, ppc64): x86 > > 3. MacFUSE version: Latest (1.7) > > > I have implemented most of the delegate methods, except for the > > extended attributes ones, mostly just to see if they were being > > called. I don't set the fileDelegate in the createfile function, and > > openfile is never called. > > > I tried using the command line operations and am getting the same > > output in the log. I haven't messed around with it too much yet, I > > will continue working on it tomorrow, I just wanted to get this > > posted. Here is a list of delegates that I have implemented (and at > > least compiling without errors). > > Thanks for the quick update. Compiling without errors is a start, but > of course you'll need to have a proper implementation that returns the > right error codes when appropriate, etc. It is not easy to help with > something like this via email, so I'll let you spend a bit more time > on it tomorrow before I hazard any guesses. > > You might want to look at the LoopbackFS file system. That has full > write support, so at least you can see that it should work and maybe > get an idea what it is doing. > > See LoopbackFS.m here: > > http://macfuse.googlecode.com/svn/trunk/filesystems-objc/LoopbackFS/ > > ted > > > attributesOfFileSystemForPath > > attributesOfItemAtPath > > contentsOfDirectoryAtPath > > setAttributes > > contentsAtPath > > createDirectoryAtPath > > createSymbolicLinkAtPath > > linkPath > > createFileAtPath > > writeFileAtPath > > truncateFileAtPath > > movePath > > removeFileAtPath > > openFileAtPath > > readFileAtPath > > exchangeDataOfItemAtPath > > moveItemAtPath > > removeDirectoryAtPath > > removeItemAtPath > > > Thanks for the help. > > > -Alex > > > On Oct 30, 4:42 pm, "ted bonkenburg" <[EMAIL PROTECTED]> wrote: > >> See comments inline. Also, in the future, it might be useful to indicate: > > >> 1. Mac OS X version > >> 2. arch (x86, ppc, x86_64, ppc64) > >> 3. MacFUSE version > > >> On Thu, Oct 30, 2008 at 12:58 PM, Alex <[EMAIL PROTECTED]> wrote: > > >> > I've been having a lot of trouble creating a writable filesystem using > >> > the objective-c framework. The filesystem is remote, the contents are > >> > stored on a website. I have gotten reading to work fine, but getting > >> > files to be written back has not been working, and I'm not entirely > >> > sure where to go from here. I'm not sure if I'm not implementing a > >> > function I need to be, or if I'm implementing one of the core > >> > functions incorrectly. > > >> That is most likely the explanation. I'm being vague on purpose here > >> because it is not easy to tell what the problem is without seeing the > >> code. > > >> If you are doing a read-only file system you can often get away with > >> leaving out implementations of some of the delegate methods; the > >> GMUserFileSystem code will try to do something reasonable to fill in > >> for you. > > >> When adding write support, you typically need to implement almost all > >> of the delegate methods and have them return proper error codes, etc. > >> Write support is almost all-or-nothing and not very forgiving, > >> especially when it comes to operations done through the Finder. > > >> > What I want to be able to do is write that file over the server online > >> > and have the file appear in the mounted filesystem. I'm assuming I > >> > should put this logic in the writeFileAtPath function, but I haven't > >> > been able to get this function to be called yet. > > >> writeFileAtPath will be called when data is being written to your > >> file. However, other required delegate methods may be called by > >> whatever is doing the file copy before this, and if they fail it may > >> not even get to the point of writing the file. > > >> > Right now, I mount the filesystem and then try to copy and paste a new > >> > file into the root directory of the filesystem. I put logging to know > >> > what functions are being called. This is the output that I get: > > >> > In atts of item: /textDoc.txt > >> > Item not found...: /textDoc.txt > >> > In atts of item: / > >> > In atts of item: /textDoc.txt > >> > Item not found...: /textDoc.txt > >> > In create file at path2 > >> > In atts of item: /textDoc.txt > >> > In atts of item: /._textDoc.txt > >> > In atts of item: /textDoc.txt > >> > In atts of item: /textDoc.txt > >> > In atts of item: /._textDoc.txt > >> > In create file at path2 > >> > In atts of item: /._textDoc.txt > >> > In atts of FS: / > >> > In atts of FS: / > >> > In atts of FS: / > >> > In atts of FS: / > >> > In contents of dir: / > >> > In atts of FS: / > >> > In atts of FS: / > >> > In atts of FS: / > >> > In atts of item: /Test.txt > >> > In atts of item: / > >> > In atts of FS: / > >> > In atts of FS: / > >> > In atts of item: /._Test.txt > >> > In contents of dir: / > >> > In atts of item: / > >> > In atts of item: /._Test.txt > >> > In atts of item: /aaaa.txt > >> > In atts of FS: / > >> > In atts of FS: / > >> > In contents of dir: / > >> > In atts of item: / > >> > In atts of FS: / > >> > In contents of dir: / > >> > In atts of FS: / > >> > In atts of item: /._Test.txt > >> > In atts of item: /._Test.txt > >> > In atts of item: /._aaaa.txt > >> > In atts of item: /._Test.txt > >> > In atts of item: /._Test.txt > >> > In atts of item: /._Test.txt > >> > In atts of item: /._aaaa.txt > >> > In atts of item: /._aaaa.txt > >> > In atts of item: /._Test.txt > >> > In atts of item: / > >> > In atts of FS: / > >> > In atts of item: /._aaaa.txt > >> > In atts of item: /._textDoc.txt > >> > In atts of item: /._aaaa.txt > >> > In atts of item: /._aaaa.txt > >> > In atts of item: /._aaaa.txt > >> > In atts of FS: / > >> > In atts of item: /._textDoc.txt > >> > In atts of item: /._aaaa.txt > >> > In atts of item: /Test > >> > In atts of item: /._textDoc.txt > >> > In atts of item: /._textDoc.txt > >> > In atts of item: /._Test > >> > In atts of item: /Test2.txt > >> > In atts of item: /._textDoc.txt > >> > In atts of item: /._textDoc.txt > >> > In atts of item: /._textDoc.txt > >> > In atts of item: /._Test2.txt > >> > In atts of item: /._Test > >> > In atts of item: /._textDoc.txt > >> > In atts of item: /._Test > >> > In atts of item: /._Test2.txt > >> > In atts of item: /._Test > >> > In atts of item: /._Test2.txt > >> > In atts of item: /._Test2.txt > >> > In atts of item: /.hidden > >> > In atts of item: /._Test2.txt > >> > In atts of item: /._Test2.txt > >> > In atts of item: /._Test2.txt > >> > In atts of item: /.DS_Store > >> > In atts of item: /.hidden > >> > In atts of item: /.hidden > >> > In atts of item: /._Test2.txt > >> > In atts of item: /.DS_Store > >> > In atts of item: /.DS_Store > >> > In atts of item: /.hidden > >> > In atts of item: /.DS_Store > >> > In atts of FS: / > >> > In atts of FS: / > >> > In atts of FS: / > >> > In atts of FS: / > >> > In contents of dir: / > >> > In atts of item: /._Test.txt > >> > In atts of item: /._Test.txt > >> > In atts of item: /._aaaa.txt > >> > In atts of item: /._aaaa.txt > >> > In atts of item: /._textDoc.txt > >> > In atts of item: /._textDoc.txt > >> > In atts of item: /._Test > >> > In atts of item: / > >> > In atts of item: /._Test2.txt > >> > In atts of item: /._Test2.txt > >> > In atts of item: /.DS_Store > >> > In atts of item: /._aaaa.txt > >> > In atts of FS: / > >> > In atts of FS: / > >> > In atts of item: /._textDoc.txt > >> > In atts of FS: / > >> > In atts of item: /._textDoc.txt > >> > In atts of item: /._textDoc.txt > >> > In atts of item: /._textDoc.txt > >> > In contents at path /aaaa.txt > >> > In atts of item: /._aaaa.txt > >> > In atts of item: /._aaaa.txt > >> > In contents at path /aaaa.txt > >> > In atts of item: /._aaaa.txt > >> > In atts of item: /._Test2.txt > >> > In contents at path /Test2.txt > >> > In atts of item: /._Test2.txt > >> > In atts of item: /._Test.txt > >> > In contents at path /Test.txt > >> > In atts of item: /._Test.txt > > >> > At this point I get a message that says: "You cannot copy some of > >> > these items to the destination because their names are too long or > >> > contain invalid characters for the destination. Do you skip copying > >> > these items and continue copying the other items?" > > >> This indicates to me that you are doing your test using the Finder. > >> The Finder is extremely picky and performs a lot of write-like > >> operations (chown, chmod, etc) for any given task. If any of these > >> fails it will throw up an error message. In my experience, the error > >> message it throws up is often misleading. It may complain about "names > >> are too long" but probably in this case there is some other underlying > >> error that it is seeing. > > >> My suggestion when implementing a write-able file system is to get > >> things working with typical command-line operations first. Try things > >> to test basic create, write, chmod, truncate, etc. like: > > >> touch /Volumes/myfs/foo.txt > >> echo "blah" > /Volumes/myfs/foo.txt > >> chmod 777 /Volumes/myfs/foo.txt > >> echo -n > /Volumes/myfs/foo.txt > >> cp /tmp/bar /Volumes/myfs/foo.txt > > >> Get these basics working first and then try to experiment with the > >> Finder. You may still be missing something, but it might save you some > >> headache and puzzling when you jump directly to attempting a > >> Finder-compatible file system. > > >> > If I click skip I get the following: > >> > In atts of item: / > >> > In atts of FS: / > >> > In contents of dir: / > >> > In atts of item: /Test.txt > >> > In atts of item: /._Test.txt > >> > In atts of item: /._Test.txt > >> > In atts of FS: / > >> > In atts of item: /aaaa.txt > >> > In atts of item: /._aaaa.txt > >> > In atts of item: /._aaaa.txt > >> > In atts of item: /textDoc.txt > >> > In atts of item: /._textDoc.txt > >> > In atts of item: /._textDoc.txt > >> > In atts of item: /Test > >> > In atts of item: /._Test > >> > In atts of item: /Test2.txt > >> > In atts of item: /._Test2.txt > >> > In atts of item: /._Test2.txt > >> > In atts of item: /.DS_Store > >> > In atts of item: / > >> > In atts of FS: / > >> > In atts of item: /._aaaa.txt > >> > In atts of FS: / > >> > In atts of FS: / > >> > In atts of FS: / > > ... > > read more » --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
