arx-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Arx-users] Segfault accessing the publix ArX archive


From: Walter Landry
Subject: Re: [Arx-users] Segfault accessing the publix ArX archive
Date: Thu, 23 Dec 2004 22:50:00 -0500 (EST)

Marc Recht <address@hidden> wrote:
> > I have a better idea.  How about you change the destructor in
> > src/arx/include/Temp_Directory.hpp to read
> [...]
> >     gvfs::remove_all(path.native_file_string());
> [...]
> 
> > near the top.  Does that solve the problem?
> >
> Yes.
> 
> I've an other (unrelated?) problem now, though.

I have tracked down this problem to a difference in semantics between
Linux and OS X.  If you hard link a symlink in Linux, you get a
symlink.  If you do that in OS X, you get a hard linked file.  ArX
does this when copying trees around.  The solution is to change the
definition of copy_link in
src/boost/libs/filesystem/src/operations_posix_windows.cpp line 569
from


    BOOST_FILESYSTEM_DECL void copy_link( const path &from_ph,
                                          const path &to_ph,
                                          bool hard_link)
    {
      if(hard_link)
        {
          link(from_ph,to_ph);
        }
      else
        {          
          symlink(readlink(from_ph),to_ph);
        }
    }

to

    BOOST_FILESYSTEM_DECL void copy_link( const path &from_ph,
                                          const path &to_ph,
                                          bool hard_link)
    {
      symlink(readlink(from_ph),to_ph);
    }

When I do that, I get new problems with being unable to delete a
non-empty directory.  My guess is that the switch to using gnome-vfs
to do the delete didn't really solve the problem.  However, I am going
on vacation, so I won't be able to debug this more until next year.

Cheers,
Walter




reply via email to

[Prev in Thread] Current Thread [Next in Thread]