emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] trunk r118316: build-aux/msys-to-w32: simplify the initial


From: Dani Moncayo
Subject: [Emacs-diffs] trunk r118316: build-aux/msys-to-w32: simplify the initial interface.
Date: Sat, 08 Nov 2014 14:56:35 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 118316
revision-id: address@hidden
parent: address@hidden
committer: Dani Moncayo <address@hidden>
branch nick: trunk
timestamp: Sat 2014-11-08 15:55:09 +0100
message:
  build-aux/msys-to-w32: simplify the initial interface.
  
  * build-aux/msys-to-w32: simplify the initial over-engineered
  interface, and the implementation.
  * Makefile.in (epaths-force-w32): Update for the above.
modified:
  ChangeLog                      changelog-20091113204419-o5vbwnq5f7feedwu-1538
  Makefile.in                    makefile.in-20091113204419-o5vbwnq5f7feedwu-446
  build-aux/msys-to-w32          msystow32-20131120014415-6qbja8232hbv7kxz-1
=== modified file 'ChangeLog'
--- a/ChangeLog 2014-11-05 05:08:57 +0000
+++ b/ChangeLog 2014-11-08 14:55:09 +0000
@@ -1,3 +1,9 @@
+2014-11-08  Dani Moncayo  <address@hidden>
+
+       * build-aux/msys-to-w32: simplify the initial over-engineered
+       interface, and the implementation.
+       * Makefile.in (epaths-force-w32): Update for the above.
+
 2014-11-05  Glenn Morris  <address@hidden>
 
        * Makefile.in (QUIET_SUBMAKE): Remove.

=== modified file 'Makefile.in'
--- a/Makefile.in       2014-11-05 05:08:57 +0000
+++ b/Makefile.in       2014-11-08 14:55:09 +0000
@@ -343,11 +343,11 @@
 # '/foo/bar').
 epaths-force-w32:
        @(w32srcdir=`${srcdir}/build-aux/msys-to-w32 "${srcdir}"`; \
-         w32prefix=`${srcdir}/build-aux/msys-to-w32 "${prefix}" N`; \
+         w32prefix=`${srcdir}/build-aux/msys-to-w32 "${prefix}"`; \
          w32prefixpattern=`echo "$${w32prefix}" | ${msys_sed_sh_escape}` ; \
-         w32locallisppath=`${srcdir}/build-aux/msys-to-w32 "${locallisppath}" 
N ":" "\\;" | ${msys_w32prefix_subst}` ; \
+         w32locallisppath=`${srcdir}/build-aux/msys-to-w32 "${locallisppath}" 
| ${msys_w32prefix_subst}` ; \
          sed < ${srcdir}/nt/epaths.nt > epaths.h.$$$$          \
-         -e 's;\(#.*PATH_SITELOADSEARCH\).*$$;\1 "'"$${w32locallisppath}"'";' \
+         -e 's;\(#.*PATH_SITELOADSEARCH\).*$$;\1 
"'"$${w32locallisppath//;/\\;}"'";' \
          -e '/^.*#/s/@VER@/${version}/g'                       \
          -e '/^.*#/s/@CFG@/${configuration}/g'                 \
          -e "/^.*#/s|@SRC@|$${w32srcdir}|g") &&                \

=== modified file 'build-aux/msys-to-w32'
--- a/build-aux/msys-to-w32     2014-01-01 07:43:34 +0000
+++ b/build-aux/msys-to-w32     2014-11-08 14:55:09 +0000
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 # Take a list of MSYS-compatible paths and convert them to native
 # MS-Windows format.
 # Status is zero if successful, nonzero otherwise.
@@ -21,36 +21,26 @@
 # Take only the basename from the full pathname
 me=${0//*\//}
 
-usage="usage: ${me} PATHLIST [MUSTEXIST] [SEPARATOR [SEPARATOR2]]"
+usage="usage: ${me} PATHLIST"
 
 help="$usage
   or:  ${me} OPTION
 
-Convert MSYS-compatible paths to MS-Windows native format.
-
-PATHLIST should be a list of paths separated by SEPARATOR.  This list
-will be written to the standard output after performing the following
-transformations:
+Convert a MSYS path list to Windows-native format.
+
+PATHLIST should be a colon-separated list of MSYS paths, which will be
+written to the standard output after performing these transformations:
+
 1. Discard empty paths.
-2. Replace backslashes with forward slashes.
-3. Replace two consecutive slashes with single ones.
-4. Translate to Windows-native format those paths that are not in such
-   format already. The translated paths will not end with a slash,
-   except for root directories (e.g. 'c:/' or 'c:/foo').  Paths
-   starting with '%emacs_dir%' will not be translated.
-5. Escape with backslashes every occurrence of SEPARATOR2 within the paths.
-6. Concatenate the translated paths with SEPARATOR2.
-
-If MUSTEXIST is 'Y' or not supplied, then each path in PATHLIST must
-exist.  Otherwise, only some part of each path is required to exist
-(the deepest existing subpath will be translated and the remainder
-concatenated to the translation).
-
-If SEPARATOR is not supplied, PATHLIST will be regarded as a single
-path.
-
-If SEPARATOR2 is not supplied, it will take the same value as
-SEPARATOR.
+2. Replace: '\' with '/', '//' with '/' and ':' with ';'.
+3. Translate each path to Windows-native format.
+
+Relative paths or paths starting with '%emacs_dir%' will be passed
+verbatim to the standard output.
+
+Each non existing absolute paths will be translated by looking for its
+deepest existing directory, which will be translated and the remainder
+will be appended.
 
 Options:
   --help     display this help and exit
@@ -73,98 +63,55 @@
   esac
 done
 
-{ test $# -ge 1 && test $# -le 4; } ||
-{ echo "${me}: $usage" >&2; exit 1; }
-
-# Arguments
-pathlist="$1"
-mustexist="${2:-Y}"
-separator="$3"
-separator2="${4:-${separator}}"
-
-# Split pathlist into its path components
-if test -n "$separator"
-then
-    IFS=${separator} patharray=( $pathlist )
-else
-    patharray=( "$pathlist" )
-fi
+[ $# -eq 1 ] || {
+    echo "${me}: $usage" >&2
+    exit 1
+}
 
 w32pathlist=""
 
-for p in "address@hidden"
+# Put each MSYS path in one positional parameter and iterate through
+# them
+IFS=:
+set -- $1
+
+for p
 do
-    # Skip empty paths
-    test "$p" = "" && continue
-
-    # Replace '\' with '/' and '//' with '/'
-    p="${p//\\//}"
-    p="${p//\/\///}"
-
-    if test "${p:0:11}" = "%emacs_dir%"
-    then
-       # Paths starting with "%emacs_dir%" will not be translated
-       w32p=$p
-    elif test -d "$p"
-    then
-       # The path exists, so just translate it
-       w32p=`cd "$p" && pwd -W`
+    [ -z "$p" ] && continue
+
+    if [ "${p:0:11}" = "%emacs_dir%" ]
+    then
+       w32p=$p
+    elif [ "${p:0:1}" != "/" ]
+    then
+       w32p=$p
+    elif [ -d "$p" ]
+    then
+       w32p=$(cd "$p" && pwd -W)
     else
-       # The path does not exist.  So, try to guess the
-       # Windows-native translation, by looking for the deepest
-       # existing directory in this path, and then translating the
-       # existing part and concatenating the remainder.
+       # Make some cleanup in the path and look for its deepest
+       # existing directory
 
-       test "${mustexist}" = "Y" &&
-       { echo "${me}: invalid path: $p" >&2; exit 1; }
+       p=${p//\\//}
+       p=${p//\/\///}
+       p=${p%/}
 
        p1=$p
-       IFS=/ pcomponents=( $p )
-
-       for (( address@hidden ; i>=0 ; i-- ))
+       while :
        do
-
-           if test "${pcomponents[i]}" = ""
-           then
-               # The path component is empty.  This can only mean
-               # that the path starts with "/" and all components
-               # have been stripped out already.  So in this case we
-               # want to test with the MSYS root directory
-               p1="/"
-           else
-               p1="${p1%/}"
-               p1="${p1%${pcomponents[i]}}"
-           fi
-
-           if test -d "${p1}"
-           then
-
-               # Existing path found
-
-               # Translate the existing part and concatenate the
-               # remainder (ensuring that only one slash is used in
-               # the join, and no trailing slash is left)
-               w32p1=`cd "${p1}" && pwd -W`
-               remainder="${p#${p1}}"
-               remainder="${remainder#/}"
-               remainder="${remainder%/}"
-               w32p="${w32p1%/}/${remainder}"
-
-               break
-           fi
-
+           p1=${p1%/*}
+           [ -z "$p1" ] && p1="/" && break
+           [ -d "$p1" ] && break
        done
 
-       # If no existing directory was found, error out
-       test -e "${p1}" ||
-       { echo "${me}: invalid path: ${p}" >&2; exit 1; }
+       # translate the existing part and append the rest
+       w32p=$(cd "${p1}" && pwd -W)
+       remainder=${p#$p1}
+       w32p+=/${remainder#/}
     fi
 
-    # Concatenate the translated path to the translated pathlist
-    test "${w32pathlist}" = "" || w32pathlist="${w32pathlist}${separator2}"
-    w32pathlist="${w32pathlist}${w32p//${separator2}/\\${separator2}}"
+    w32pathlist="${w32pathlist};${w32p}"
 
 done
 
-# Write the translated pathlist to the standard output
-printf "%s" "${w32pathlist}"
+echo "${w32pathlist:1}"


reply via email to

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