WINBRASH RELEASES
Release winbrash-1.2.16.zip
30-Apr-20
bug Fixes:
case statements were having trouble in this situation
case "$file" in
\\*) echo root path
;;
because the call in lib\file.cxx to fnmatch() was not
passing FNM_NOESCAPE, and thus \ was treated not as a
path separator but as an escape character
25-Apr-2018
Improvements:
Improved the error messages coming from .diff when the
input files are too large.
I will eventually find a mechanism to make the size of
the input file less important, but such an improvement
is not included here. Only the error message handling
is affected.
Note that the problem with large files, even on 64 bit
machines, comes from the cxx/lib/LongestCommonSubsequence.h
file. An array is allocated whose size is proportional to
the product of the lengths of the two files being compared.
When you have more than about 10,000 lines in each file,
the product exceeds 2 billion which is he maximum allocatable
heap pack in visual studio. (More or less). Thus an
out of memory exception is thrown.
Finding a strategy to diff in chunks and then merge the
chunks seems to make the most sense.
Even though you can theoretically use hundreds of gigabytes
of address space, thus solving the problem, most machines
would simply store the application in swap space which would
drasticaly slow the process down -- to the point that the
user would control-C out it. So, a better fix is needed.
Note that while gnu diff is much better than my .diff, it
still has this problem. Use "man bdiff" to find info on
how gnu solves the size problem.
13-Apr-2018
Bug Fixes:
Hopefully this fixes crashes anyone might have been having
uses the cd command. The problem did not seem that noticable
on Windows 7, but seems pretty painful on Windows 10. not
sure why, it was the same code in both places.
The cd command, indeed any command that uses pathnames, had
problems with "..\\.." and "/.." formed strings. Hopefully
this problem is fixed -- at least in the main.
The biggest symptom of this problem is that "cd ..\\..\\.."
might crash instead of working.
27-Jan-2018
Bug Fixes: The >>$filename syntax had a bug in it which is now fixed.
Thanks to Scott C for reporting the problem and working
with me to confirm the fix.
The .wc command had a bug in it that caused it to fail to
close its input file upon completion. This resulted in
a lost file handle and also made it impossible to delete the
input file until brash terminated.
Reminder: the brash read command works outside the while and for loops
to read 1 line from stdin and populate variable names. So in
brash (unlike bourne or brash) you can do this:
.wc filename | read wordCount lineCount charCount
In bourne/brash, the variables wordCount, etc, would not be
populated in the current shell. In brash, they are.
Release winbrash-1.2.15.zip
29-Sep-2016
Bug Fixes: The ^C key now terminates the input of if-statements, while-statements,
for-statements and strings.
The makes it possible now to just press ^C to clean up any command line
mess you might have made.
Why I didn't do this sooner, I don't know. Geez!
Release winbrash-1.2.14.zip
08-Aug-2016
Bug Fixes: brash.exe -c used to crash if you forgot the command option.
Now it is just an error message.
Enhancemnts: The & operator which launches background commands now populates
the variable, BRASH_BG_JOB with the id of the job just created.
The 'jobs' command can tell you if it is still running.
Release winbrash-1.2.13.zip
07-Aug-2016
Bug fixes: popd bug fixed.
current directory bug associated with background jobs is now fixed.
I'm surprised no one reported this one.
Release winbrash-1.2.12.zip
03-Aug-2016
New Features: .ls now has the following new options:
--sep=string (defines the field separator string. space is the default)
--seconds (print the date time in utc seconds)
And the .date command has the new opton, -p <date. which lets you choose
the date to be printed from a normal date-time string instead of the
current time, or a utc date time as specified with the -s option.
Release winbrash-1.2.11.zip
31-Jul-2016
Fixes bugs that prevent the use of dot (.), underscore (_), and colon (:)
characters in function names.
Enables the deleting of functions using the "unset -f funcname" command
Releae winbrash-1.2.10.zip
This release fixes a bug in the handling of return values from
functions which are defined to run in subshells. For example:
function f
(
return 4 # value would be lost when the function is called
)
Alternatively, you could have written;
f()
(
return 4 # value would be lost when the function is called
)
Note that the return value is lost in either case. But if you had
used {} instead of (), it would not have been lost.
Release winbrash-1.2.9.zip
22-Jul-2016: Updated.
This release is basic ally the savme as 1.2.7 but with bug fixes.
The new commands, .tail works on both winddows 7 and windows 10.
Additional help, and builtins command outputs have been added.
The read -F command has been added, if you haven't seen it before.
Look at read --help for more details.
Release winbrash-1.2.7.zip
22-Jul-2016: Updated.
This release fixes a bug in .tail which seemed to occur only on Windows 7.
.tail is known to work on Windows 10 and Windows 7 at this point.
Release winbrash-1.2.6.zip
21-Jul-2016: Updated.
this release adds .copypaste, .tail, and some help message cleanup.
Release winbrash-1.2.5.zip
02-Jul-2016: Updated.
this release adds the .printf command.
Relese winbrash-1.2.2a.zip
09-Jun-2016: Updated
This release adds the .uniq command.
Release winbrash-1.2.1.zip
20-May-2016: Updated
This release adds support arrays and associative arrays as
string variables types.
It also includes the .regex -1 option which lets you replace
text that spans more than 1 line. \r\n is the end of line
sequence on windows. It gets very confusing if you only
replace the \n because the \r moves the cursor to the beginning
of the line and it makes it look like the replace is totally
wrong, but in fact it is doing what you told it to do. (sigh).
Use the declare -a command to create array variables. Use -A for
associative arrays. See the GNU BASH documentation for details on
using the associative arrays.