It's been awhile, but I'm still strugling to get the writing done correctly. Here is where I stand now:
I've gotten all of the commands you listed above to work from the command line. So now I've moved on to tackling Finder problems. Creating a new file in vi and saving it to the mount works as expected. A new file is created in /tmp and is uploaded to the server. Creating a new file with TextEdit however fails. After saving to the mount I get the following dialog message: "The document “Unititled” could not be saved as “test.rtf”. ". The file does get saved to /tmp and is uploaded to the server. I can't figure out why this message is popping up. I have debugging enabled and I have a lot of debugging text, but I can't pinpoint exactly where the problem is. Creating a new file with TextMate works as well. Opening files from within the mount then trying to save them back does not work either.. but I'm figuring this is a seprate issue and that I should get creating new files working correctly first. Copying (by dragging) a new file over to the mount gives me several errors. First I get a warning message telling me I may need to enter a password to change the file. After hitting continue I get another box informing me that the file has one or more items I do not have permission to read. Clicking continue again, I'm finally warned that the operation could not be completed because the file already exists. The file is created in both /tmp and on the server but is never written to. I should mention that I create the file both in the createFile and writeFile methods. Any guidence on these issues would be appreciated. Thank you, -Alex On Nov 5, 1:33 pm, "ted bonkenburg" <[EMAIL PROTECTED]> wrote: > On Tue, Nov 4, 2008 at 6:48 AM, Alex <[EMAIL PROTECTED]> wrote: > > > 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. > > You should focus on fixing the latter issue first. Get these > fundamental things working before you even try using vi: > > 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 > > If echo'ing text into a file system like "echo "blah" > > /Volumes/myfs/foo.txt" is failing, then: > > 1) Do you implement truncate and support it properly? > 2) Are you returning proper write permissions in attributesOfItem: for > that file? > 3) Are you implementing openFileAtPath: properly? > 4) Are you implementing writeFileAtPath: properly? > > Have you tried adding the "debug" option at mount time? You can use > Console.app to view log messages or if you are running in xcode you > can show the Console there while your FS is "running". Look for failed > operations in the debug output. Somehow your file system is returning > EPERM. This is returned by default in some cases within > GMUserFileSystem if a delegate method is not implemented, so it could > be related to that as well. > > ted > > > > > 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: > > ... > > 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 -~----------~----~----~----~------~----~------~--~---
