From 1773bd8474b66c50bc71cc774e047d25c73e71d8 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sat, 20 Jun 2009 15:28:27 +0000 Subject: [PATCH] 2009-06-20 17:25 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * utils/hbmk2/hbmk2.prg + Added experimental filename escaping for *nix systems. Currently only space is escaped. I'd like to ask *nix users to make that complete. TODO: For speed and completeness, maybe such escaping (quoting) function would come handy in RTL. Przemek, it would be great if you could add one if you agree. TODO: It should also be enabled for linux/watcom, but I cannot test this. ! Minor addition to Windows escaping in ArrayToList(). --- harbour/ChangeLog | 12 ++++++++++++ harbour/utils/hbmk2/hbmk2.prg | 17 +++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 2bf28c21ac..a4a060ae91 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,18 @@ past entries belonging to author(s): Viktor Szakats. */ +2009-06-20 17:25 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * utils/hbmk2/hbmk2.prg + + Added experimental filename escaping for *nix systems. + Currently only space is escaped. I'd like to ask *nix + users to make that complete. + TODO: For speed and completeness, maybe such escaping (quoting) + function would come handy in RTL. Przemek, it would be + great if you could add one if you agree. + TODO: It should also be enabled for linux/watcom, but + I cannot test this. + ! Minor addition to Windows escaping in ArrayToList(). + 2009-06-20 16:39 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * utils/hbmk2/hbmk2.prg % Reworked space in filename support to be generic. Now all diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 342ebfb885..d954c9d802 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -168,6 +168,7 @@ REQUEST hbmk_KEYW #define _ESC_NONE 0 #define _ESC_DBLQUOTE 1 +#define _ESC_NIX 2 #define _LNG_MARKER "${lng}" @@ -2022,6 +2023,7 @@ FUNCTION hbmk( aArgs, /* @ */ lPause, /* @ */ lUTF8 ) ( hbmk[ _HBMK_cARCH ] == "linux" .AND. hbmk[ _HBMK_cCOMP ] == "gcc" ) .OR. ; ( hbmk[ _HBMK_cARCH ] == "linux" .AND. hbmk[ _HBMK_cCOMP ] == "gpp" ) + nOpt_Esc := _ESC_NIX IF hbmk[ _HBMK_lDEBUG ] AAdd( hbmk[ _HBMK_aOPTC ], "-g" ) ENDIF @@ -4545,6 +4547,10 @@ STATIC FUNCTION ArrayToList( array, cSeparator, nEscapeMode, cPrefix ) CASE _ESC_DBLQUOTE FOR tmp := 1 TO Len( array ) IF " " $ array[ tmp ] + /* Sloppy */ + IF Right( array[ tmp ], 1 ) == "\" + array[ tmp ] += "\" + ENDIF cString += cPrefix + '"' + array[ tmp ] + '"' ELSE cString += cPrefix + array[ tmp ] @@ -4554,6 +4560,14 @@ STATIC FUNCTION ArrayToList( array, cSeparator, nEscapeMode, cPrefix ) ENDIF NEXT EXIT + CASE _ESC_NIX + FOR tmp := 1 TO Len( array ) + cString += cPrefix + FN_Escape( array[ tmp ], nEscapeMode ) + IF tmp < Len( array ) + cString += cSeparator + ENDIF + NEXT + EXIT ENDSWITCH RETURN cString @@ -4773,6 +4787,9 @@ STATIC FUNCTION FN_Escape( cFileName, nEscapeMode ) RETURN '"' + cFileName + '"' ENDIF EXIT + CASE _ESC_NIX + cFileName := StrTran( cFileName, " ", "\ " ) + EXIT ENDSWITCH RETURN cFileName