]> granicus.if.org Git - python/commitdiff
This fixes bug #1527397: PythonLauncher runs scripts with the wrong working
authorRonald Oussoren <ronaldoussoren@mac.com>
Tue, 1 Aug 2006 21:00:57 +0000 (21:00 +0000)
committerRonald Oussoren <ronaldoussoren@mac.com>
Tue, 1 Aug 2006 21:00:57 +0000 (21:00 +0000)
directory. It also fixes a bug where PythonLauncher failed to launch scripts
when the scriptname (or the path to the script) contains quotes.

Mac/PythonLauncher/FileSettings.m
Misc/NEWS

index fc3937b3dcbd7a7b33fdde6f425a9d654a38b078..ba375ba7b096c81f50ea4fa71ab88e4314c40894 100755 (executable)
     if (value) with_terminal = [value boolValue];
 }
 
+- (NSString*)_replaceSingleQuotes: (NSString*)string
+{
+       /* Replace all single-quotes by '"'"', that way shellquoting will
+        * be correct when the result value is delimited  using single quotes.
+        */
+       NSArray* components = [string componentsSeparatedByString:@"'"];
+
+       return [components componentsJoinedByString:@"'\"'\"'"];
+}
+
 - (NSString *)commandLineForScript: (NSString *)script
 {
     NSString *cur_interp = NULL;
+    NSString* script_dir = NULL;
     char hashbangbuf[1024];
     FILE *fp;
     char *p;
+
+    script_dir = [script substringToIndex:
+           [script length]-[[script lastPathComponent] length]];
     
     if (honourhashbang &&
        (fp=fopen([script cString], "r")) &&
         cur_interp = interpreter;
         
     return [NSString stringWithFormat:
-        @"\"%@\"%s%s%s%s%s%s %@ \"%@\" %@ %s",
-        cur_interp,
+        @"cd '%@' && '%@'%s%s%s%s%s%s %@ '%@' %@ %s",
+       [self _replaceSingleQuotes:script_dir],
+        [self _replaceSingleQuotes:cur_interp],
         debug?" -d":"",
         verbose?" -v":"",
         inspect?" -i":"",
         nosite?" -S":"",
         tabs?" -t":"",
         others,
-        script,
+        [self _replaceSingleQuotes:script],
         scriptargs,
         with_terminal? "&& echo Exit status: $? && exit 1" : " &"];
 }
index b498cc31c39730340869cd992475320cef34dec4..f2a318ec08d4377029f4075b6e5a4e7baf6c50a1 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -185,6 +185,17 @@ Build
 
 - Bug #1439538: Drop usage of test -e in configure as it is not portable.
 
+Mac
+---
+
+- PythonLauncher now works correctly when the path to the script contains
+  characters that are treated specially by the shell (such as quotes).
+
+- Bug #1527397: PythonLauncher now launches scripts with the working directory
+  set to the directory that contains the script instead of the user home
+  directory. That latter was an implementation accident and not what users 
+  expect.
+
 
 What's New in Python 2.5 beta 2?
 ================================