Changeset 14723 in josm for trunk/src


Ignore:
Timestamp:
2019-01-23T22:20:29+01:00 (6 years ago)
Author:
simon04
Message:

see #16497 fix #17228 - Avoid backslashes in session files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/session/SessionWriter.java

    r14718 r14723  
    1616import java.util.Map;
    1717import java.util.Set;
     18import java.util.stream.Collectors;
    1819import java.util.zip.ZipEntry;
    1920import java.util.zip.ZipOutputStream;
     
    4546import org.openstreetmap.josm.tools.Logging;
    4647import org.openstreetmap.josm.tools.MultiMap;
     48import org.openstreetmap.josm.tools.StreamUtils;
    4749import org.openstreetmap.josm.tools.Utils;
    4850import org.openstreetmap.josm.tools.XmlUtils;
     
    214216         * @see Path#relativize(Path)
    215217         */
    216         String relativize(final Path path) {
    217             if (getOutput() == null) {
    218                 return path.toString();
     218        String relativize(Path path) {
     219            final Path output = getOutput();
     220            if (output != null && path.startsWith(output.getParent())) {
     221                path = output.getParent().relativize(path);
    219222            }
    220             final Path sessionDirectory = getOutput().getParent();
    221             if (path.startsWith(sessionDirectory)) {
    222                 return sessionDirectory.relativize(path).toString();
    223             } else {
    224                 return path.toString();
    225             }
     223            // path.toString() returns backslashes on Windows, see #17228
     224            return StreamUtils.toStream(path)
     225                    .map(Object::toString)
     226                    .collect(Collectors.joining("/"));
    226227        }
    227228    }
Note: See TracChangeset for help on using the changeset viewer.