public static String fixRelativeRefs()

in src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFormatUtils.java [253:289]


    public static String fixRelativeRefs(String src) {
        String value = src;

        String[] separators = {"/", "\\"};

        String finalSep = null;
        for (String sep : separators) {
            if (value.endsWith(sep)) {
                finalSep = sep;
            }

            if (value.contains("." + sep)) {
                List<String> parts = new ArrayList<>(Arrays.asList(value.split(sep.replace("\\", "\\\\"))));

                for (ListIterator<String> it = parts.listIterator(); it.hasNext(); ) {
                    String part = it.next();
                    if (".".equals(part)) {
                        it.remove();
                    } else if ("..".equals(part)) {
                        it.remove();
                        if (it.hasPrevious()) {
                            it.previous();
                            it.remove();
                        }
                    }
                }

                value = StringUtils.join(parts.iterator(), sep);
            }
        }

        if (finalSep != null && value.length() > 0 && !value.endsWith(finalSep)) {
            value += finalSep;
        }

        return value;
    }