#DOCUMENTATION by cg
class: Win32OperatingSystem class
comment/format in:
#expandEnvironmentStrings:
#pathNameOf:
--- a/Win32OperatingSystem.st Fri Dec 06 09:38:38 2019 +0100
+++ b/Win32OperatingSystem.st Fri Dec 06 11:11:45 2019 +0100
@@ -6853,20 +6853,20 @@
path := self primPathNameOf:pathName.
path isNil ifTrue:[
- (self isValidPath:pathName) ifFalse:[
- p := pathName.
- [(p size > 1)
- and:[p endsWith:(self fileSeparator)]
- ] whileTrue:[
- p := p copyButLast:1.
- ].
- ^ p
- ].
-
- "/
- "/ return the original - there is nothing else can we do
- "/
- path := self compressPath:pathName
+ (self isValidPath:pathName) ifFalse:[
+ p := pathName.
+ [(p size > 1)
+ and:[p endsWith:(self fileSeparator)]
+ ] whileTrue:[
+ p := p copyButLast:1.
+ ].
+ ^ p
+ ].
+
+ "/
+ "/ return the original - there is nothing else can we do
+ "/
+ path := self compressPath:pathName
].
^ path.
@@ -6879,6 +6879,8 @@
OperatingSystem pathNameOf:'/foo/bar'
OperatingSystem pathNameOf:'/foo/bar/'
OperatingSystem pathNameOf:'/foo/bar//'
+ OperatingSystem pathNameOf:'%ProgramFiles%'
+ OperatingSystem pathNameOf:'%programfiles%'
"
"Modified: 29.11.1996 / 18:02:12 / stefan"
@@ -8823,33 +8825,36 @@
!
expandEnvironmentStrings:aString
- "expand the environmentStrings (e.g. %ProgramFiles%) in aString"
+ "expand the environmentStrings (e.g. %ProgramFiles%) in aString.
+ Typical are:
+ HOMEDRIVE, HOMEPATH, JAVA_HOME, ProgramFiles, ProgramFiles(x86), TMP and TEMP"
|count resultString resultCount|
count := aString size + 128.
[
- aString isWideString ifTrue:[
- resultString := Unicode16String new:count.
- resultCount := self primExpandEnvironmentStringsW:aString into:resultString size:count.
- ] ifFalse:[
- resultString := String new:count.
- resultCount := self primExpandEnvironmentStringsA:aString into:resultString size:count.
- ].
- resultCount <= count ifTrue:[
- true
- ] ifFalse:[
- "resultString was too small. resultCount is the required buffer size"
- count := resultCount.
- false
- ].
+ aString isWideString ifTrue:[
+ resultString := Unicode16String new:count.
+ resultCount := self primExpandEnvironmentStringsW:aString into:resultString size:count.
+ ] ifFalse:[
+ resultString := String new:count.
+ resultCount := self primExpandEnvironmentStringsA:aString into:resultString size:count.
+ ].
+ resultCount <= count ifTrue:[
+ true
+ ] ifFalse:[
+ "resultString was too small. resultCount is the required buffer size"
+ count := resultCount.
+ false
+ ].
] whileFalse.
^ resultString copyTo:resultCount-1.
"
- self expandEnvironmentStrings:'%ProgramFiles%\test\x'
- self expandEnvironmentStrings:'%ProgramFiles%\test\x' asUnicode16String
+ self expandEnvironmentStrings:'%ProgramFiles%\test\x'
+ self expandEnvironmentStrings:'%ProgramFiles%\test\x' asUnicode16String
+ self expandEnvironmentStrings:'%HOMEDRIVE%%HOMEPATH%\test\x'
"
!