Proposal for std.path replacement
Regan Heath
regan at netmail.co.nz
Fri Mar 4 04:42:44 PST 2011
On Fri, 04 Mar 2011 10:13:04 -0000, Nick Sabalausky <a at a.a> wrote:
> "Lars T. Kyllingstad" <public at kyllingen.NOSPAMnet> wrote in message
> news:ikqabr$796$4 at digitalmars.com...
>>
>>>
>>> - Windows *does* have a concept of a home dir, so maybe tilde should be
>>> expanded even on Windows. Only problem though is that Windows has *two*
>>> main home dirs for each user: %HOMEPATH% for user-created files and
>>> %APPDATA% for application data. (And some others, but I don't think any
>>> of the others are appropriate for "~") So maybe there should be these
>>> three:
>>>
>>> 1. expandTilde: Exactly as it is now: expands ~ on posix, no-op
>>> on
>>> windows.
>>>
>>> 2. expandHomeDir: On posix: Expands "~" and "%HOMEDIR%" to the
>>> user's home directory. On windows: Expands "~" and "%HOMEDIR%" to
>>> whatever %HOMEDIR% is set to.
>>>
>>> 3. expandAppDataDir: On posix: Expands "~" and "%APPDATA%" to
>>> the
>>> user's home directory. On windows: Expands "~" and "%APPDATA%" to
>>> whatever %APPDATA% is set to.
>>
>> On POSIX you expect to be able to use ~ anywhere you're asked to input a
>> path/filename. Is this the case on Windows? Can you write %HOMEDIR%
>> \report.doc in Word's "Open" dialog, for instance?
>>
>
> No, it's just an environment variable.
Actually, you can. I just tried Textpad and Word 2010 and both accepted
me typing:
%HOMEDRIVE%%HOMEPATH%\ (at this point they both bring up suggestions)
%APPDATA%\ (at this point they both bring up suggestions)
FYI.. my environment variables are:
APPDATA=C:\Users\rheath.<domain>\AppData\Roaming
HOMEDRIVE=C:
HOMEPATH=\Users\rheath.<domain>
I don't have HOMEDIR, .. this is on Windows 7 x64 BTW.
> In fact, it seems that % is a valid
> filename character (I wouldn't have even guessed that), so expanding any
> of
> the %BLAH% stuff in std.path is probably a bad idea after all.
Not necessarily, but it might require a bit more double-checking, for
example..
If you type the following at command prompt you get an error.
copy con test%HOMEDRIVE%.txt
"The filename, directory name, or volume label syntax is incorrect."
Because %HOMEDRIVE% is expanded to C: and testC:.txt is invalid.
But these both work:
copy con test%HOMEDRIVE.txt (missing 2nd %)
copy con test%HOMEDRIV%.txt (non-existant envvar)
In the latter case you actually get a file named "test%HOMEDRIV%.txt", it
hasn't attempted to replace the non-existant envvar with a blank string,
as that would result in "test.txt".
R
p.s. "copy con" means copy console, type something, then press ctrl+z to
mark EOF.
--
Using Opera's revolutionary email client: http://www.opera.com/mail/
More information about the Digitalmars-d
mailing list