src/Tools/jEdit/patches/putenv
author wenzelm
Tue, 22 Jul 2025 12:02:53 +0200
changeset 82894 a8e47bd31965
parent 81297 07f64697408e
permissions -rw-r--r--
back to more basic defaults, independently on the accidental L&F: e.g. relevant for editor_style=false, and session_graph.pdf;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
81297
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
     1
diff -ru jedit5.7.0/jEdit/org/gjt/sp/jedit/MiscUtilities.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/MiscUtilities.java
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
     2
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/MiscUtilities.java	2024-08-03 19:53:15.000000000 +0200
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
     3
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/MiscUtilities.java	2024-10-29 11:50:54.062016616 +0100
71932
65fd0f032a75 updated to jedit-5.6pre1 (repository version 25349);
wenzelm
parents: 69838
diff changeset
     4
@@ -131,6 +131,21 @@
69188
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
     5
 	static final Pattern winPattern = Pattern.compile(winPatternString);
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
     6
 
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
     7
 
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
     8
+	private static Map<String,String> environ =
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
     9
+		Collections.synchronizedMap(new HashMap(System.getenv()));
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    10
+
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    11
+	public static String getenv(String varName)
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    12
+	{
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    13
+		return environ.get(varName);
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    14
+	}
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    15
+
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    16
+	public static void putenv(String varName, String value)
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    17
+	{
69191
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    18
+		if (value == null) environ.remove(varName);
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    19
+		else environ.put(varName, value);
69188
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    20
+	}
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    21
+	
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    22
+
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    23
 	/** A helper function for expandVariables when handling Windows paths on non-windows systems.
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    24
 	*/
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    25
 	private static String win2unix(String winPath)
71932
65fd0f032a75 updated to jedit-5.6pre1 (repository version 25349);
wenzelm
parents: 69838
diff changeset
    26
@@ -140,7 +155,7 @@
69188
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    27
 		if (m.find())
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    28
 		{
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    29
 			String varName = m.group(2);
81297
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    30
-			String expansion = jEdit.systemManager.getenv(varName);
69188
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    31
+			String expansion = getenv(varName);
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    32
 			if (expansion != null)
81297
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    33
 			{
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    34
 				expansion = Matcher.quoteReplacement(expansion);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    35
@@ -182,7 +197,7 @@
69188
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    36
 				return arg;
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    37
 		}
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    38
 		String varName = m.group(2);
81297
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    39
-		String expansion = jEdit.systemManager.getenv(varName);
69188
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    40
+		String expansion = getenv(varName);
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    41
 		if (expansion == null) {
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    42
 			if (varName.equalsIgnoreCase("jedit_settings") && jEdit.getSettingsDirectory() != null) {
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    43
 				expansion = jEdit.getSettingsDirectory();
81297
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    44
@@ -192,7 +207,7 @@
69188
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    45
 				varName = varName.toUpperCase();
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    46
 				String uparg = arg.toUpperCase();
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    47
 				m = p.matcher(uparg);
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    48
-				expansion = System.getenv(varName);
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    49
+				expansion = getenv(varName);
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    50
 			}
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    51
 		}
2fd73a1a0937 updated to jedit_build-20181025 according to patches/macos (Java 11), patches/putenv;
wenzelm
parents:
diff changeset
    52
 		if (expansion != null) {
81297
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    53
@@ -1674,13 +1689,11 @@
69191
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    54
 		//{{{ VarCompressor constructor
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    55
 		VarCompressor()
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    56
 		{
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    57
-			ProcessBuilder pb = new ProcessBuilder();
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    58
-			Map<String, String> env = pb.environment();
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    59
 			if (OperatingSystem.isUnix())
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    60
 				prefixMap.put(System.getProperty("user.home"), "~");
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    61
 			if (jEdit.getSettingsDirectory() != null)
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    62
 				prefixMap.put(jEdit.getSettingsDirectory(), "JEDIT_SETTINGS");
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    63
-			for (Map.Entry<String, String> entry: env.entrySet())
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    64
+			for (Map.Entry<String, String> entry: environ.entrySet())
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    65
 			{
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    66
 				String k = entry.getKey();
96b633ac24f8 proper environment for variable folding;
wenzelm
parents: 69188
diff changeset
    67
 				if (k.equalsIgnoreCase("pwd") || k.equalsIgnoreCase("oldpwd")) continue;
81297
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    68
diff -ru jedit5.7.0/jEdit/test/org/gjt/sp/jedit/MiscUtilitiesTest.java jedit5.7.0-patched/jEdit/test/org/gjt/sp/jedit/MiscUtilitiesTest.java
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    69
--- jedit5.7.0/jEdit/test/org/gjt/sp/jedit/MiscUtilitiesTest.java	2024-08-03 19:53:29.000000000 +0200
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    70
+++ jedit5.7.0-patched/jEdit/test/org/gjt/sp/jedit/MiscUtilitiesTest.java	2024-10-29 12:21:05.284840022 +0100
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    71
@@ -167,56 +167,6 @@
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    72
 	}
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    73
 
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    74
 	@Test
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    75
-	public void expandVariablesEnvWindowsAsWindows() throws Exception
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    76
-	{
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    77
-		jEdit.systemManager = Mockito.mock(SystemManager.class);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    78
-		var captor = ArgumentCaptor.forClass(String.class);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    79
-		var value = "c:\\home\\jEdit";
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    80
-		Mockito.when(jEdit.systemManager.getenv(captor.capture())).thenReturn(value);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    81
-		updateOS(WINDOWS_NT);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    82
-		var key = "jEdit_TEST";
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    83
-		assertEquals(value, MiscUtilities.expandVariables('%' + key + '%'));
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    84
-		assertEquals(captor.getValue(), key);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    85
-	}
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    86
-	@Test
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    87
-	public void expandVariablesEnvWindowsAsUnix() throws Exception
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    88
-	{
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    89
-		jEdit.systemManager = Mockito.mock(SystemManager.class);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    90
-		var captor = ArgumentCaptor.forClass(String.class);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    91
-		var value = "c:\\home\\jEdit";
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    92
-		Mockito.when(jEdit.systemManager.getenv(captor.capture())).thenReturn(value);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    93
-		updateOS(UNIX);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    94
-		var key = "jEdit_TEST";
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    95
-		assertEquals(value, MiscUtilities.expandVariables('%' + key + '%'));
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    96
-		assertEquals(captor.getValue(), key);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    97
-	}
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    98
-
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
    99
-	@Test
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   100
-	public void expandVariablesEnvUnix() throws Exception
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   101
-	{
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   102
-		jEdit.systemManager = Mockito.mock(SystemManager.class);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   103
-		var captor = ArgumentCaptor.forClass(String.class);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   104
-		var value = "c:\\home\\jEdit";
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   105
-		Mockito.when(jEdit.systemManager.getenv(captor.capture())).thenReturn(value);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   106
-		updateOS(UNIX);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   107
-		var key = "jEdit_TEST";
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   108
-		assertEquals(value, MiscUtilities.expandVariables('$' + key));
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   109
-		assertEquals(captor.getValue(), key);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   110
-	}
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   111
-
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   112
-	@Test
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   113
-	public void expandVariablesEnvUnix2() throws Exception
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   114
-	{
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   115
-		jEdit.systemManager = Mockito.mock(SystemManager.class);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   116
-		var captor = ArgumentCaptor.forClass(String.class);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   117
-		var value = "c:\\home\\jEdit";
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   118
-		Mockito.when(jEdit.systemManager.getenv(captor.capture())).thenReturn(value);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   119
-		updateOS(UNIX);
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   120
-		var key = "jEdit_TEST";
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   121
-		assertEquals(value, MiscUtilities.expandVariables("${" + key + '}'));
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   122
-	}
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   123
-
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   124
-	@Test
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   125
 	public void expandVariablesEnvUnixNoMatch() throws Exception
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   126
 	{
07f64697408e update to jedit5.7.0;
wenzelm
parents: 73653
diff changeset
   127
 		updateOS(UNIX);