-
Notifications
You must be signed in to change notification settings - Fork 3
/
CHANGES.txt
172 lines (149 loc) · 8.15 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
TODO:
=====
<1.0:
! The 'check' action, -r, -i and -d are not implemented yet!
? Make "notify Windows" the default behavior (I myself regularly forget to
do it explicitly, not understanding then why regenv "does not work"...)
! Update option names according to the /? spec.
! Merge -d into -s!
! Implement the 'check' action.
! Implement the 'show' action. (Is it actually different from a "get"?)
! Add a 'get' action, too, for completeness. (Even if doesn't make too much sense,
it's easier for those who see regenv -? for the first time. And it does make
sense for seeing how the variables actually look like in the registry.)
! Factor out all the Win dependencies into a separate module.
! Rething the -l -a -p options and SET/DEL/CHECK logic for more explicit
behavior (and the implied extra flexibility).
! Add & refine examples.
Later:
- Check out the old stuff in "_in"!
- Multi-byte string support! Conversions etc.:
http://stackoverflow.com/a/27296/1479945
http://msdn.microsoft.com/en-us/library/wt3s3k55.aspx
- Add automatic version tag to the executable.
- Add a proper manifest resource (as in SetEnv).
- Devenv: add command "set_compiler" for VC/GCC switching.
1. This command should just instruct setting the tool name in the custom
section of PROJECT.ini.
2. The other commands (build, run, test etc.) should use this env. var
accordingly.
3. Standardize the compiler name tags?...
- Del needs an option to delete plain substring, like SET has adding
plain substring... This whole substring crap is crying for regexp!
- Although there is -x to force REG_EXPAND_SZ, there is no option for
the reverse change (from REG_EXPAND_SZ to REG_SZ).
(The variable must be deleted first, and then setting it again without
-x will (re()create it as REG_SZ (by default).)
- Add GPL2 to WinEnv-LICENSE.txt.
- Revamp the ANSI/UNICODE crap (wcout, TCHAR, _T, LPSTR, LPBYTE etc.).
(I messed it all up for my initial version just to quickly get rid of the
original Xfc (output) module.)
Could the tool be completely orthogonal to this whole encoding problem?
- Itertion support for -l.
DONE:
=====
2014-03-09 - 0.97
* Lots of minor (mostly docs and devenv) changes.
* [path-crash] - It has nothing to do with the PATH, actually.
FIX a crash when doing `winenv -nUV set CRAP poo%CRAP%` and/or then winenv -s CRAP
- When %SZ_SYS_TOOLS_DIR%\winenv -nUV set PATH C:\sz\core\sw\live\_HOST_\Windows\XP;%PATH%
was commented out in user-init.cmd, the each subsequent winenv -s PATH calls crashed.
- When NOT commented out, only this call crashed, but not the -s ones.
- Doing `winenv -nUV set CRAP poo%NOT_CRAP%` also didn't crash.
? PATH growing off some fixed buffer? Seems to be an overflow, as the new
value is 519 bytes...
-> The problem was a cool typo in the Registry handling:
`new TCHAR[size] + 1` instead of `new TCHAR[size + 1]`...
2014-02-19:
. Renamed local ref to the remote Github repo from "origin" to "github".
! But something is wrong: local repo is "ahead of github by 1 commit",
yet i cannot push or merge upstream (everything is up to date!).
. Turned off local manual version labelling (just using GIT for now).
. Some care for the remains of the old SetEnv sources (in src/.old).
2014-02-19: 0.95
. Local builds succeed with the new (regenv) file names.
. Git repo pushed up to Github.
! [path-crash] still not fixed yet.
2014-02-19: 0.94+2
. Gitified locally, and created regenv-win32 on Github.
Started moving to git, but currently the new local GIT repo and the old
manual fs tree still co-exist. Not synced with Github yet.
! Still all this is just preparations for continuing to investigate the
PATH buffer overflow crash [path-crash].
2014-02-19:
. Uploaded to GitHub, as regenv-win32.
. [github-doc-update]
Some refreshing of the docs (reconciled change history, licenses and readme).
. Renaming from winenv to regenv. (I can't remember now why I aborted this
rename earlier, if at all attempted; we'll se... :) )
2013-04-9 - 0.94:
. Changed the prj dir name from setenv to winenv.
. Added .prj-tools (0.11) to the dev. env.
. Added dbg.h, changed old cerr<< output to DBG (also remved leftover,
forgotten debug prints from DoDel()...).
. Replace "options.find('x') != options.end()" with OPTION('x'), and
"options.find('x') == options.end()" with NO_OPTION('x').
. Added ListPart.h with the common decls. for the XxxListPart modules;
also renamed PATH_SEPARATOR (';') to ELEMENT_SEPARATOR (as PATH_SEPARATOR
could be confused with the '/' separators in paths...).
. [path-crash] Fix the MAX_PATH(?) overrun. To reproduce it (NOT ALWAYS POSSIBLE!):
1.) Open the Startup folder in Explor and punch Enter on the init.cmd icon 5 times.
3.) DBG showed "regkey.CheckValue_STR() --> status = 0", just before
"UPDATING EXISTING LIST VAR..." and then the crash.
4.) Should test if it is possible to add a subvalue to a list var when the
subvalue is itself a compound string (a list value)...
5.) Can (4) cause errors? (NOTE: while the first crash seems to follow such a case
(of (4)), the second doesn't (it just tries adding a plain path component).
6.) After the crash (3) happens, just a mere "winenv -s PATH x" would also crash.
Can see the the PATH variable with Regedit, at: HKEY_CURRENT_USER\\Volatile Environment.
. According to a successfully cought crash debug run, the problem seems
to be in FindListPart. This is where it crashes in AddListPart:
if (FindListPart(sample_in, newpart_in, list_type, 0) != string::npos)
. NOTE: as I'm just using std::strings, the issue may be in Microsoft's STL.
It also did not crash when compiled with GCC. (But not really tested either...)
. The crash is actually not solved, but blocked now, by amending FindListPart so
it no longer allows duplicate-setting the same elements (like paths).
However, to call it "solved", I should have investigated and understood it
fully instead of working it around.
0.93:
. Use my StupidRegKey stuff.
. Added the del action.
0.92:
. Started adding my own lightwieght RegKey class.
. Extracted the help text out to a separate file.
0.91:
. NULL-termination is NOT guarenteed by RegQueryValue - use GetValue!!!
RegGetValue is not available on XP.
Just added the manual \0 treatment instead.
. Disambiguate "winenv xxxx" to mean "winenv show xxxx" instead of
"ERROR: unknown command 'xxxx'"?
CAUTION:
The whole idea of the implicit 'show' command is probably
flawed!
If a script does FOR %VAR in (vars) do winenv %VAR,
it will break as soon as %VAR is equal to any of the
Winenv commands (show, check, notify)!
Just make 'show' explicit and keep smiling!
2012-Jun-26: ("1.1-luna") - Major & incompatible changes to SetEnv
- Added support for session variables.
(HKCU/VolatileEnviornent, with a UNIX shell-like semantics).
- Normalized the command-line switches (to be orthogonal & extendable)
- Removed the '%value' feature (can do most of it from the shell with
more flexibility, and escaping % (^%) also allows delayed expansion).
- Updated outdated & replaced confusing text here and there.
- Removed the installer.
- Renamed the executable to winenv.exe (to remind of the env command
on UNIX, although the two are still vastly different).
- Removed Win9x AUTOEXEX.BAT support. (I cannot test it anyway.)
The old SetEnv change history (mostly irrelevant for the current codebase):
1.09 [Fix] - (Feb 9, 2008) - Fixed a problem on Windows 98 where it sometimes failed to open the Autoexec.bat file.
1.08 [New] - (May 31, 2007) - Added how to delete a USER environment variable to the usage information.
1.07 [Fix] - (Jan 25, 2007) - Fixed a bug found by depaolim.
1.06 [New] - (Jan 14, 2007) - Added dynamic expansion support (same as using ~ with setx)
- Originally requested by Andre Amaral, further Request by Synetech
1.05 [New] - (Sep 06, 2006) - Added support to prepend (rather than append) a value to an expanded string
- Requested by Masuia
1.04 [New] - (May 30, 2006) - Added support for User environment variables.
1.03 [Fix] - (Apr 20, 2006) - Bug fix in ProcessWinXP() discovered by attiasr
1.01 [Fix] - (Nov 15, 2005) - Bug fix in IsWinME() discovered by frankd
1.00 [New] - (Oct 29, 2005) - Initial Public Release.