Bug 149641
| Summary: | Saving fails when target is a symlink | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Marco Colombo <marco> | ||||||
| Component: | openoffice.org | Assignee: | Caolan McNamara <caolanm> | ||||||
| Status: | CLOSED RAWHIDE | QA Contact: | |||||||
| Severity: | medium | Docs Contact: | |||||||
| Priority: | medium | ||||||||
| Version: | 3 | ||||||||
| Target Milestone: | --- | ||||||||
| Target Release: | --- | ||||||||
| Hardware: | i386 | ||||||||
| OS: | Linux | ||||||||
| Whiteboard: | |||||||||
| Fixed In Version: | 1.9.84-1 | Doc Type: | Bug Fix | ||||||
| Doc Text: | Story Points: | --- | |||||||
| Clone Of: | Environment: | ||||||||
| Last Closed: | 2005-03-16 14:17:27 UTC | Type: | --- | ||||||
| Regression: | --- | Mount Type: | --- | ||||||
| Documentation: | --- | CRM: | |||||||
| Verified Versions: | Category: | --- | |||||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||||
| Embargoed: | |||||||||
| Attachments: |
|
||||||||
|
Description
Marco Colombo
2005-02-24 19:54:48 UTC
Yeah, there is quite a bit of C++ foo going on (classes on classes on classes), but what you're looking for is probably in sal/osl/unx/file*.c. I think almost all the byte stream APIs come down to the stuff in those files. "sal" stands for System Abstraction Layer BTW, so most non-GUI platform dependent stuff is in that module. Created attachment 111411 [details]
partial strace
This is a partial strace for normal case:
strace -o /tmp/oocalc.strace oocalc abc.sxc
fgrep .sxc /tmp/oocalc.strace
I just changed the sheet and saved it. Please note, no mkdir.
Created attachment 111412 [details]
partial trace (symlink)
strace -o /tmp/oocacl.strace2 oocalc cde.sxc
fgrep .sxc /tmp/oocacl.strace2
cde.sxc is a symlink to abc.sxc. Please note the weird mkdirs. Again I just
changed the sheet and hit save. Now got the warning "Could not create backup
copy". I haven't included full strace output because it's quite big of course.
I wasn't able to make much sense out of the sal/osl/unx/file*.c at first glance. I'll try harder tomorrow. What really puzzles me is the mkdir. The O_DIRECTORY is weird, too, but I haven't seen it in the sources, I'll accept it as a glibc thing. But I'm not believing that glibc packs a mkdir() call on top of an open(). In the OOO source, mkdir() is wrapped by osl_psz_createDirectory(), and I see no reason why one would call it to open a file, even in presence of symlinks. This nested classes stuff is quite confusing to me (or are those meta-meta-classes?) and I may be missing the obvious. I'd really be glad if someone else could confirm the bug... Fixed in the 2.0 series http://qa.openoffice.org/issues/show_bug.cgi?id=21034 Available in rawhide with 1.9.84-1 upwards |