Skip to content

Fix directory creation on destination

When a file not exists on destination directory, Kompare needs to create it. However, Kompare creates a directory instead.

Before the fix:

libkomparediff: KompareModelList::saveDestination: 
libkomparediff: Tempfilename (save) :  "/tmp/kompare.BjhJsO"
libkomparediff: Model->path+file    :  "/home/demitrius/Downloads/compare/1/" "problem.txt"
libkomparediff: info->localdest     :  "/home/demitrius/Downloads/compare/1"
libkomparediff: DestinationURL      :  QUrl("file:///home/demitrius/Downloads/compare/1")
libkomparediff: tmp                 :  "/problem.txt"
libkomparediff: fullDestinationPath :  QUrl("file:///home/demitrius/Downloads/compare/1//problem.txt")
kf.kio.slaves.file: copy() QUrl("file:///tmp/kompare.BjhJsO") to QUrl("file:///home/demitrius/Downloads/compare/1//problem.txt") mode= -1

After the fix:

libkomparediff: KompareModelList::saveDestination: 
libkomparediff: Tempfilename (save) :  "/tmp/kompare.BcyxWY"
libkomparediff: Model->path+file    :  "/home/demitrius/Downloads/compare/1/" "problem.txt"
libkomparediff: info->localdest     :  "/home/demitrius/Downloads/compare/1"
libkomparediff: DestinationURL      :  QUrl("file:///home/demitrius/Downloads/compare/1")
libkomparediff: tmp                 :  "/"
libkomparediff: fullDestinationPath :  QUrl("file:///home/demitrius/Downloads/compare/1/")
kf.kio.slaves.file: copy() QUrl("file:///tmp/kompare.BcyxWY") to QUrl("file:///home/demitrius/Downloads/compare/1/problem.txt") mode= -1
kf.kio.slaves.file: the file doesn't have any xattr

When there is a subdirectory that also not exists on destination, Kompare creates nothing.

Before the fix:

libkomparediff: KompareModelList::saveDestination: 
libkomparediff: Tempfilename (save) :  "/tmp/kompare.FvyVpn"
libkomparediff: Model->path+file    :  "/home/demitrius/work/project_b/subdir/" "test.txt"
libkomparediff: info->localdest     :  "/home/demitrius/work/project_b/"
libkomparediff: DestinationURL      :  QUrl("file:///home/demitrius/work/project_b/")
libkomparediff: tmp                 :  "subdir/test.txt"
libkomparediff: fullDestinationPath :  QUrl("file:///home/demitrius/work/project_b//subdir/test.txt")

After the fixes:

libkomparediff: KompareModelList::saveDestination: 
libkomparediff: Tempfilename (save) :  "/tmp/kompare.bYakdZ"
libkomparediff: Model->path+file    :  "/home/demitrius/work/project_b/subdir/" "test.txt"
libkomparediff: info->localdest     :  "/home/demitrius/work/project_b/"
libkomparediff: DestinationURL      :  QUrl("file:///home/demitrius/work/project_b/")
libkomparediff: tmp                 :  "subdir/"
libkomparediff: fullDestinationPath :  QUrl("file:///home/demitrius/work/project_b/subdir/")
kf.kio.slaves.file: copy() QUrl("file:///tmp/kompare.bYakdZ") to QUrl("file:///home/demitrius/work/project_b/subdir/test.txt") mode= -1
kf.kio.slaves.file: the file doesn't have any xattr

I remove the double slash, but I am not sure if it will cause trouble.

Related: https://bugs.kde.org/show_bug.cgi?id=441131 https://bugs.kde.org/show_bug.cgi?id=126870

Merge request reports