don't work consistant; BLI_makestringcode() This one works correct for paths that go up; it then makes a relative path like : //../lib/file.blend BLI_convertstringcode() This one delivers different paths when it expands, the previous case will just append the relative path, like /work/project/../lib/file.blend. That string cannot be compared with the original... which happened to find out if a library was read already. Solution for now is that only the relative paths are compared, but it won't work if multiple relative levels are used... like for libraries that link recursive. To solve that, the entire 'relative' concept has to be redesigned.