Ticket #43992

Update FreeCOM package

Open Date: 2022-02-28 05:29 Last Update: 2022-03-02 18:48

Reporter:
Owner:
Status:
Open [Owner assigned]
Component:
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
None

Details

Current package is from 2017 and has at least two issues.

  • Redirecting a program's output to overwrite an existing file, i.e., using > does not (always?) overwrite the existing file's content. -- This error does not occur with FreeCOM 0.84-pre7.
  • type for a non-existing file will not throw an error message. -- This error does not occur with FreeCOM 0.85a.

Ticket History (3/23 Histories)

2022-02-28 05:29 Updated by: bttr
  • New Ticket "Update FreeCOM package" created
2022-02-28 22:57 Updated by: bttr
  • Owner Update from (None) to bttr
  • Details Updated
2022-02-28 23:33 Updated by: bttr
Comment

Shall the package still be named 'command' for historical reasons or upgrade detection? Or shall we rename to 'freecom', now that SvarCOM is approaching?

How can we manage to also replace C:\COMMAND.COM installed by SYS.COM? As I mentioned somewhere some stupid software may rely on that file.

2022-02-28 23:42 Updated by: mateuszviste
Comment

renaming it to freecom makes sense, yes.

I don't know what to do with the SYS-placed command.com... it is a wild file that pkg do not know about. On a healthy SvarDOS system this file is not even used, because the installer adds a specific shell= directive to command.com. Maybe it's enough to mention at some point somewhere that such file, if it exists, may be deleted?

On the same note, the installer should probably delete it once the OS is all installed, as its presence in C:\ may be confusing.

2022-03-01 00:17 Updated by: bttr
Comment

Reply To mateuszviste

renaming it to freecom makes sense, yes.

Ok

I don't know what to do with the SYS-placed command.com... it is a wild file that pkg do not know about. On a healthy SvarDOS system this file is not even used, because the installer adds a specific shell= directive to command.com. Maybe it's enough to mention at some point somewhere that such file, if it exists, may be deleted? On the same note, the installer should probably delete it once the OS is all installed, as its presence in C:\ may be confusing.

Yes, it is a wild and unused file unless "some stupid software may rely on that file".

I'm currently writing a small DOC\FREECOM\SVARDOS.TXT to be included with the package and to describe the differences to the FreeDOS package.

There is another problem to solve: We can't have both SvarCOM and FreeCOM executables named COMMAND.COM and put to %DOSDIR%\BIN.

Because we are already leaving MS-DOS standard by deleting C:\COMMAND.COM, I recommend to name SvarCOM's executable 'SVARCOM.COM' and FreeCOM's executable 'FREECOM.COM'. Translated versions of FreeCOM accordingly FCOM-DE.COM, FCOM-PL.COM, and so on.

2022-03-01 00:55 Updated by: mateuszviste
Comment

I got another idea. pkg could actually understand what COMMAND.COM is and place it to C:\

This way:

- MS-DOS compatibility is preserved

- the C:\COMMAND.COM file is properly belonging to a package

- when users will try installing svarcom, they will get an error message about file collision at C:\COMMAND.COM, which should be enough to make them take appropriate actions

About renaming FreeCOM: why not, but as long as it sits in its own directory in progs, it doesn't harm if it's callend command.com, cmd-pl.com etc... whatever.

The "COMMAND" package should probably be kept however, and maybe updates so it contains some kind of information like "since now on, COMMAND became FREECOM, please use pkgnet & pkg magic to do the right things because COMMAND will receive no updates in the future" ?

2022-03-01 04:43 Updated by: mateuszviste
Comment

uploaded SvarCOM 2022.1 to repo right now. Only the newest pkg knows how to install it properly (ie. to C:\), older pkg will put it into %DOSDIR%, which would do no harm in itself, but would also be useless.

2022-03-01 04:58 Updated by: bttr
Comment

Reply To mateuszviste

I got another idea. pkg could actually understand what COMMAND.COM is and place it to C:\ This way: - MS-DOS compatibility is preserved - the C:\COMMAND.COM file is properly belonging to a package - when users will try installing svarcom, they will get an error message about file collision at C:\COMMAND.COM, which should be enough to make them take appropriate actions

I wanted to avoid making changes to the pkg command, but now that you have already done... ;-)

About renaming FreeCOM: why not, but as long as it sits in its own directory in progs, it doesn't harm if it's callend command.com, cmd-pl.com etc... whatever.

I see. A command-line shell is a program now, which started with my package for SvarCOM.

The "COMMAND" package should probably be kept however, and maybe updates so it contains some kind of information like "since now on, COMMAND became FREECOM, please use pkgnet & pkg magic to do the right things because COMMAND will receive no updates in the future" ?

+1 -- Updated in a way, that it just contains the new note, but all binaries will be stripped off? That could lead to an unusable system. But otherwise probably nobody reads the new note. Maybe implementing #43780 would help.

(Edited, 2022-03-01 05:02 Updated by: bttr)
2022-03-01 05:07 Updated by: bttr
Comment

Reply To mateuszviste

uploaded SvarCOM 2022.1 to repo right now. Only the newest pkg knows how to install it properly (ie. to C:\), older pkg will put it into %DOSDIR%, which would do no harm in itself, but would also be useless.

Will have a look at it.

2022-03-01 05:13 Updated by: bttr
Comment

A command-line shell is a program now, which started with my package for SvarCOM.

This seems to be wrong after looking at your SvarCOM 2022.1 package.

But how do I handle package structure with FreeCOM? It has several translated binaries.

Shall a place English COMMAND.COM in the package's root dir and put all translated binaries (+ a backup copy of English COMMAND.COM) to BIN?

(Edited, 2022-03-01 05:16 Updated by: bttr)
2022-03-01 05:21 Updated by: mateuszviste
Comment

Reply To bttr

I wanted to avoid making changes to the pkg command, but now that you have already done... ;-)

I'm also not very fond of "adding features", but this one was 2 lines of code. A fairly reasonable cost for having a clean COMMAND.COM layout. :)

I see. A command-line shell is a program now, which started with my package for SvarCOM.

IIRC it was also the case with 4DOS before that. But yes, the idea would be that one shell is included with the core system, but all alternatives are "just programs". I think it's the cleanest approach. (note that I have built the new SvarCOM package in a way like it would be the core package, which is not the case yet, so it's a little temporary inconsistency...)

Updated in a way, that it just contains the new note, but all binaries will be stripped off? That could lead to an unusable system. But otherwise probably nobody reads the new note. Maybe implementing #43780 would help.

Stripping off binaries would be very dangerous indeed, since it would sabotage the user's system, I was only thinking about adding an extra readme file on top of the already existing package. You are right of course that nobody will read it, but if someone complains at least we will be able to tell him "we told you so!". :-P

I agree that #43780 would be very nice for this.

2022-03-01 05:32 Updated by: mateuszviste
Comment

Reply To bttr

A command-line shell is a program now, which started with my package for SvarCOM.

This seems to be wrong after looking at your SvarCOM 2022.1 package.

SvarCOM is meant to become the default shell, so it has some special treatment. :)

But how do I handle package structure with FreeCOM? It has several translated binaries. Shall a place English COMMAND.COM in the package's root dir and put all translated binaries (+ a backup copy of English COMMAND.COM) to BIN?

That would probably be the sanest approach for the time being. It's messy, but probably less messy than having a wild file dangling around...

Another option would be to demote FreeCOM right now, and put it in progs already, as it is meant to be eventually. SvarCOM's not very far away after all - a matter of days probably, I think that once I have a working FOR command and ability to execute step-by-step batch files, it would be okay to throw SvarCOM as the default shell. So very close.

2022-03-01 05:34 Updated by: bttr
Comment

So it's probably better to wait updating the FreeCOM package until SvarCOM development has settled and it became the default shell core package?

2022-03-01 05:39 Updated by: mateuszviste
Comment

Reply To bttr

So it's probably better to wait updating the FreeCOM package until SvarCOM development has settled and it became the default shell core package?

I feel pressure now. :)

But yes, that is also a very valid (and reasonable) option to avoid changing the packages too much.

2022-03-01 05:45 Updated by: bttr
Comment

Okay. Until that I will test FreeCOM's command.com.

2022-03-01 05:47 Updated by: bttr
  • Details Updated
2022-03-01 06:00 Updated by: bttr
Comment
2022-03-01 06:08 Updated by: mateuszviste
Comment

Cool! Looks like you are battling on all fronts ;-)

2022-03-01 06:43 Updated by: bttr
Comment

I want the best FreeCOM package ever and just noticed this problem and found a solution. :-)

2022-03-01 18:43 Updated by: mateuszviste
Comment

I found some old notes I had about FreeCOM in Svarog86. Perhaps you will find it somehow useful/interesting (esp. the CGA patch, I do not know if it has been integrated upstream yet):

https://sourceforge.net/p/svarog86/code/HEAD/tree/freecom/

2022-03-02 03:34 Updated by: bttr
Comment

Reply To mateuszviste

I found some old notes I had about FreeCOM in Svarog86. Perhaps you will find it somehow useful/interesting (esp. the CGA patch, I do not know if it has been integrated upstream yet):

The CGA patch was integrated already.

https://sourceforge.net/p/svarog86/code/HEAD/tree/freecom/

I don't care for the rest. Maybe "best package ever" was slightly overstated. ;-)

For the record here is a long list of changes since v0.84pre3 (taken from freecom.zip\SOURCE\FREECOM\SOURCES.ZIP\docs\history.txt:

v0.85a
~~~~~
    regression fix: ensure not setting errorlevel for all internal commands, exclude commands such IF FOR etc
    documentation update - merge/remove duplicate files, add history, general updates (links, email, etc)
    correct help for 'for' command, add %% escaping to printf so for command shows %a ... do ... %a instead of ?a ... do ... ?a
    use program exit code as errorlevel when using loadfix or loadhigh (unless error invoking program)
    compatibility improvement, don't print % when missing paired % on command lines (show 'somevar' not '%somevar')
    if COMSPEC isn't set, strdup an empty "" string instead of potential NULL pointer dereference
    add beginning of more comprehensive test batch file
    prevent debug builds crashing on startup, intr and lowexec needs to retf not retn for medium memory model builds (e.g.debug build)
    fix xms-swap debug build when returning from exec'd programs, fixup return segment and do a far return from xmsexec call

v0.85
~~~~~
From Kenneth J Davis
    support CMDLINE for command lines > 126 characters when invoking COMMAND.COM
    improve compatibility when executing external programs - from RBIL and other sources, the command line should end in just \r and if greater than 126 chars, the size byte should be 127 not actual size; still keep \0 if command line is short enough but allow 126 chars without terminating \0, set size to 127 if >126
    misc batch file updates to aid in building multiple versions (languages/xmswap or not/compiler)
    support /E maxsize of 32768, FreeCOM documentation and MS/PC DOS command.com document max value as 32768, due to use of signed int FreeCOM max size was actually 32766; change argument processing to use unsigned int and support up to 32768 as argument
    git should ignore generated files
    add files to GitHub so http://www.fdos.org/freecom/ directs to GitHub hosted content
From Andrew Bird
    fix build due to language keyword in strings file got renamed
    improve fixstrs compatibility with gcc-ia16
    multiple build fixes for Linux due to case sensitive filenames
    muttiple fixes to avoid git encoding issues for translations
    slightly improved French translations from @cardpuncher
    fix so fixstrs does not segfault on incorrect input
    add the remaining translations to the CI build
    setup CI build on GitHub using GCC-ia16 and Open Watcom, multiple improvements to CI build
    remove duplicate translation the translation 'yu852' is identical to 'serbian' so remove it
    Update README - convert to Markdown, add build status badge, add links for Changes and Compile text documents
    fixstrs: Avoid sign extension of chars 128..255 - with GCC on Linux, cp850 char 0xa3 'ú' was being converted as 0xffffffa3, so be explicit about signedness and size of the parameter.
    fixstrs: fix invalid escape chars
    fixstrs: initialise version number, strupr should return the pointer passed in - fixes gcc warnings
    fixstrs: rename log variable - fix declaration mismatch
    build: Copy default file if config missing
From lpproj dbcs fork
    add nls fallback, fix for running on DOS kernels that lack the nls API used
    Add build option `upx' to build a compressed execuable
    alias watcom=wc in build script
    Fix chcp report wrong codepage on old DOS before v3.30 (and v3.30 for NEC PC-9800 series)
From p-durlej fork
    CLS: Use appropriate attribute values for common display modes.
    DIR: Fix DIR /O /W not putting newline before the summary.
    TYPE: Fix file open error handling
    TYPE: Fix partial read handling
    displayPrompt: prevent $P from being intermixed with INT 24H and phantom drive messages
    DEL: Fix printing the directory path when deleting all files
From Jason Pittman
    Fix for multi-line commands in history, properly wrap and clear lines
From Bart Oldeman
    Update French translation (corrected some grammatical errors)
    Add some more GCC options to reduce the size of command.com.
    Add comment about MinGW.
From Sampo Hippeläinen
    better GOTO help translation
    improve/add Finnish translation
From Emir Sari
    Fix typo
    Improve Turkish translations - fixes ambiguities and overall improves current translations
From Francesco Sacco
    allow internal commands set the ERRORLEVEL
    Minor fixes for pt-br.
From ghderty
    Translations: Update russian translation
From Darrin M. Gorski
    Allow non-permanent instances to exit with the last errorlevel instead of zero.

v0.84pre7
~~~~~~~~~
fix: Check for Win64 in Watcom makefile via %ProgramFiles(x86) (Bart)
chg: Build xms-swap by default (Bart)
fix: Use -fno-builtin for GCC to use libc/overridden functions everywhere (Bart)
chg: Use -mregparmcall for GCC. Needs adjustment of intr() prototype
     (still stdcall) (Bart)
chg: Add linker script command.ld so relocations can be used in NASM code
     for GCC via _TEXTSEG. (Bart)
fix: Force 8086-asm; use direct call far real_XMSexec instead of push/push/retf.
     Fixes #15 (Bart)
fix: Move termination hook into seperate file and always use independent of XMS.
     Closes #16 (Bart)
fix: Fix loadhigh failure when zero-byte free memory block is exist
     (Sava, lpproj)
fix: Allow escape of > < | via ^> ^< and ^|. Fixes #12. (Bart)
fix: Fix build break on msys2 (with *-mingw32-gcc and ia16-elf-gcc)
     (Sava,lpproj)
fix: LH/LOADFIX call execute instead of exec and skip bat files. Fixes #8.
     (Bart)
fix: LOADFIX: stop manipulating UMB link, use first fit>0x10000. Fixes #10.
     (Bart)
fix: dosGetUMBLinkState needs to return state in _AL, not _AX (see #10)
     (Bart)
fix: Avoid possible NULL dereference in dprintf. Fixes #9 (Bart)
fix: XMScopy needs to be declared noinline for GCC to work correctly. (Bart)
fix: Fix "copy con file" where file already exists. (Bart)
     We need to use devopen instead of dfnstat to check for src existence.
fix: Create and use sfn_creat() for dos_creatnew() redone.
     Also rename dos_creatnew() to sfn_creatnew().
     Using creat instead of creatnew for file creation avoids
     the need for truncation using write(), and the handle can
     be directly used without needing to reopen the file.
     However, differently from the previous try, LFNs are still reopened for
     compatibility with Windows 2000/XP. (Bart)
fix: dos_read and dos_write now call farread/write for all compilers.
     This is more consistent and fixes truncating writes for GCC. (Bart)
fix: Fix lfnmkdir to really create LFNs; easiest to separate out. (Bart)
fix: Don't use expensive open/close to check for SFN.
     Instead use the boolean, then put in extra check to see if
     int21/ax=7160 works. (Bart)
fix: Add stack checking, adapted from Tom Ehlert (Bart)
fix: Save another 520 bytes of stack by reusing buffers where safe. (Bart)
fix: myfnsplit(): use common buffer to store dir/name/ext to save stack space.
     This saves ~1250 bytes of stack and eliminates stack overflows in the
     ke2041 test in metados. (Bart)
chg: Generate 28.com and 50.com from assembly language. (Bart)

v0.84pre6
~~~~~~~~~
fix: Revert to first-fit dosalloc for copy&dir buffers for non-large model
     (Bart)
fix: Enable reporting of directory sizes up to 2TB (with Tom Ehlert)
fix: dosalloc: apply carry to flag image for intr(), not directly via stc
     The carry flag was not preserved before. (Bart)
fix: Use intr.asm with OW too, to be able to use SZAPC flags on input. (Bart)
chg: Enable cross-compilation from 64-bit Windows using Open Watcom (Bart)
fix: ia16-elf-gcc: intr( ) now loads flags before invoking interrupt (TK Chia)
fix: compilation errors when LFN is disabled. Fixes #5. (Bart)
fix: Allocate a large enough buffer for the rest of the command line.
     We need to use a full buffer for the rest to allow for alias expansion.
     Fixes #6. (Bart)
fix: GCC: make sure that XMS calls get ds:si, otherwise ds can be wrong. (Bart)
fix: OW: Use xmsfunc typedef and apply #pragma aux to that.
     This way XMScopy actually works, and passes the structure in si,
     so messages are copied correctly. Fixes issues with metados. (Bart)
fix: keep asm inputs & clobbers separate in gcc port of dup2 (TK Chia)
fix: ia16-elf-gcc code wrongly assumed XMS driver preserves %bx (TK Chia)
fix: tell OW that bx/cx can be modified, similar to ia16-elf-gcc (Bart)
fix: cmd: shift: use correct context, Fixes SF Bug #155 (Wolfram Sang)
chg: Replace XMSrequest external asm with inline asm for GCC. (Bart)

v0.84pre5
~~~~~~~~~
add: Serbian/Yugoslavian for cp852 from freedoslocal (Dejan Strbac)
add: Slovenian translations from freedoslocal (Matej Horvat)
add: Turkish translations from freedoslocal.
fix: Update French translations from freedoslocal (Mateusz Viste)
fix: [bugs:#192] FOR %i IN (*.*) do @ECHO %i does not work
fix: [bugs:#209] The shell doesn't display any error if exec fails.
     It will now say "EXE file corrupt" if the .exe file has a bogus header.
chg: Reduce ifdef's for GCC, using new ia16-elf-gcc functionality.
chg: Use cglobal and cextern macros in asm files for globals.
fix: Use last-fit dosalloc for copy&dir buffers to work well with large model
fix: Plug memory leak in and around comResFile().
fix: _dos_allocmem takes a pointer to unsigned, not unsigned long.
fix: Wrap dprintf macro into do { ... } while (0);
fix: Use only libc stdio in DEBUG build, not printf from clib.
chg: Remove no longer used tempfile/rmtmpfile.
fix: cgetchar_timed and eliminate its call to fputmc.
chg: Replace fputmc calls by more direct memset/dos_write calls.
fix: non-small (debug) model compilations for Turbo/Borland.
chg: Compile debug version in medium memory model instead of large.
fix: debug version (large model); enable for watcom.
chg: Create and use sfn_creat() and use instead of dos_creatnew()
fix: lfn_creat needs to truncate files that already exist.
fix: hang for batchfiles that do not end with an EOL character.
     This fixes a hang with Rugxulo's metados.img.

v0.84pre4
~~~~~~~~~
fix: spelling, by Anders Jonsson <anders.jonsson@norsjovallen.se>
fix: Edits to Swedish translation file, by Anders Jonsson
fix: Make echolib.bat compatible with cmd.exe (Tom Ehlert)
fix: Fix build for GCC-compiled load_icd.exe (Bart)
fix: parsefnm failures and cleanup other inline asm for OW and GCC (Bart)
fix: revert change keeping context alwyas on heap (caused out-of-memory) (Bart)
fix: replace use of inline asm lcall/call for GCC with plain C calls (Bart)

v0.84pre3
~~~~~~~~~
fix: Make sure that ds=ss in XMSexec call (Bart)
The newest ia16-elf-gcc floats ds inside functions and with the inline
asm doesn't know it's a function call (Bart)
chg: fmemcpy now compiles properly with ia16-elf-gcc (remove workaround) (Bart)
chg: Use GNU Make instead of OW wmake to compile with ia16-elf-gcc (Bart)
chg: Build strings without needing to create/remove the subdirectory (Bart)
chg: Move xmssave and some related variables to near transient data
This is possible since the resident code no longer references those
Be careful to not write to any transient data after the save to XMS (Bart)
chg: Fix "TODO make XMSsave two structures in order to drop this subroutine"
(Bart)
chg: Make XMSexec function near and move 80 resident code bytes to transient
section. (Bart)
chg: fix xms-swap TODO: first_time either 04ah or 049h --> no jumps (Bart)
chg: xms-swap: move residentCS from cs: to ds: (Bart)
fix: Stack size for OW needs to be 4K instead of default 2K.
This matches Turbo C's default, and allows for some large stack
users with LFNs. (Bart)
chg: Reduce heap memory by only keeping the necessary rest of the command line.
(Bart)
chg: Keep the context permanently on the heap via realloc, to reduce
fragmentation. (Bart)
chg: Properly patch the heap size for Open Watcom
The memory layout for OW is different from Turbo C.
For Turbo, heap is below stack, but for OW it's the reverse.
Hence OW keeps the data segment much more minimal by default.
There is however a default sbrk increment of 8096 set by
_amblksiz. If we set that to 6K instead the heap will stay
at that size, so TSRs are loaded beyond that point
(for non-XMS-SWAP that is, with XMS-SWAP it's completely
different) (Bart)
chg: getEnv: remove static pointers, caller responsible for free.
Eliminating the 3-pointer dance and free-ing the environment
variable pointer as soon as possible reduces heap fragmentation. (Bart)
fix: Fix farwrite and hence copy for Turbo/GCC (Bart)
fix: "dir" output for dates with our own printf. It supports %02u but not %.2u.
Those produce the same result though (Bart)
chg: port to ia16-elf-gcc (Bart)
fix: kswap_p is a _seg * pointer so we need MK_SEG_PTR for compilers without
_seg (Turbo C 2.01, OW). Otherwise the critical error handler is not installed
correctly for non-xms-swap builds. (Bart)
chg: Use "add si, byte 10" so old and new NASM generate the same opcodes (Bart)
fix: Use proper prototypes on enum{File}Resources callback function (Bart)
chg: allow Linux cross-compilation, port build utils to GCC-Linux (Bart)
fix: Fix ren for files without extensions (passes NULL ptr for ext) (Bart)
fix: Fix LOADHIGH for compilers without _seg pointers. Use FP_SEG
instead of casting the pointer to unsigned, as _seg is defined to far on
compilers without _seg (e.g. Watcom) (Bart)
fix: IF EXIST should auto-fail critical errors due to empty drive (Tom & Jeremy)
add: %CD% as alternative to %_CWD% (Tom)
fix: Use screen height 25 when 0 returned as current height, from Mateusz
Viste, bug #131 see http://sourceforge.net/p/freedos/bugs/131/ (Jeremy)
chg: Merged fcompl1 and fcompl2.c to filecomp.c (Bart)
chg: Untangle findfirst/next/close definitions to make them more explicit (Bart)
chg: Consistently use dos_open/dos_close/dos_read/dos_write, etc
The problem with _open, _read, etc. is that they mean different things
to Turbo than for OW: Turbo _open is like _dos_open but OW _open is an
alias for open (Bart)
chg: Eliminate open() in favor of _open/_creat/dos_creatnew (Bart)
chg: Eliminate fgets(), replacing with _read() (Bart)
chg: Use backspaces instead of gotoxy calls to clear a command line (Bart)
chg: Use _write for all printf style writes in prf.c and for putc(har).
Remove fflush and setbuf calls (Bart)
chg: Eliminate fputs everywhere except for prf.c (Bart)
chg: Eliminate read() by using _read() everywhere (Bart)
chg: Remove references to fopen / fcloseall for non-debug builds (Bart)
chg: Use open/read/close instead of fopen/fread/fclose everywhere (Bart)
fix: EnumFileResources function arguments to all use handles instead of
streams (Bart)
fix: Fix loadModule: it should use an int fd for a handle instead of a FILE *.
(Bart)
chg: replaced all text mode write()s by binary _write()s to save RTL usage
space (Bart)
chg: farread/farwrite cleanup of DOS r/w's (Bart)
chg: Use handle I/O instead of stream I/O for resources to save space (Bart)
chg: Change geninterrupt emulation to use intr() instead of int86x() for
consistency (Bart)
chg: Centralize LFN functions for mkdir/rmdir/chdir (Bart)
fix: Support precision flag and size/precision from argument list in abbreviated
printf function, to fix "dir /lfn" (Bart)
fix: Don't truncate when not necessary for LFN opens. Works around an FD kernel
bug were truncating a 0-byte file caused an error (Bart).
fix: "copy con file" (Bart)
fix: COPY: trailing /a and /b options only apply to the last (destination)
file, not globally, when concatenating, "/a" is the default. (Bart)
chg: Replace stream i/o for COPY by simpler handle i/o, so fileno doesn't need
to be used all the time.  (Bart)
chg: Use BIGcopy() for both ascii and binary copies. ASCII just means to check
for Ctrl-Z, don't mess with line endings, so do that manually using fmemchr.
When eof is detected, no more reads are needed. (Bart)
fix: COPY: The /B switch should switch devices to raw mode (see nansi.sys
documentation). Fix errors given for "copy [/a|/b] file.txt con".  (Bart)
chg: Use small printf() from the kernel source with a few modifications to do
some buffering. Saves 3.5K in RTL code for OW. (Bart)
fix: exit() needs to be overriden for OpenWatcom as well as Turbo C. (Bart)
fix: Fix direct _seg pointer casts for Open Watcom (and also Turbo C 2.01)(Bart)
fix: Fix size of LFN in struct locffblk, and make sure the ffblk structs are
packed (Bart)
fix: Fix devopen in OW using stdarg.h and proper prototypes (Bart)
fix: Fix xms-swap for Open Watcom (Bart)
fix: Set stdout to unbuffered for Watcom as it is by default for Turbo C (Bart)
fix: Use stdarg.h to avoid messing with prototypes in, and fixing Open Watcom'
use of env_replace (Bart)
fix: Update build system to support Open Watcom. Introduce config.b/config.bat
like in the kernel source to be able to configure make/wmake locations (Bart)
fix: ISR/dir.h/stpcpy/string/?etverify/parsfnm related changes for OW
compatibility (Bart)
chg: Use IREGS/intrpt instead of struct REGPACK/intr everywhere for OW
compatibility. Similarly, USEREGS simulates geninterrupt (Bart)
fix: Avoid Turbo C specific use of sizeof in preprocessor expressions (Bart)
fix: Adjust makefiles to be compatible with TC 2.01's very limited MAKE utility
(no redirection) (Bart)
fix: Fix compiler warnings (Bart)
chg: Handle .obj dependencies for suppl instead of rebuilding every time (Bart)
chg: Prune unused files from stripped-down suppl (Bart)
chg: Remove duplicate .h files from suppl source (Bart)
fix: Do not compare (signed) to ' ' but use iscntrl() - otherwise,
FIXSTRS may chop trailing non-ASCII (eg Russian) words away (Eric Auer).
fix: Fixed compilation completely with Turbo C (Blair).
fix: Got rid of all '//' comments (Blair)
fix: Support for BC (Blair)
fix: Fix for compiler oddities (Arkady).
fix: Fixed bug in Truename (Blair).
fix: Print long filename current directory (Blair).
fix: Use safer intr routine rather than directly modify registers (Blair).
fix: Moved lfnsup to a place where it will not be overwritten (Blair).
add: Add option to compile to support switch character instead of hardcoded '/'
(Blair)
add: The new SET /E feature. (Blair)
fix: Fixed long filename handling in DIR. (Blair)
fix: COPY uses static-size buffers now to prevent known problems with dynamic
allocation. (Blair)
fix: Improved PATH handling routine (Arkady).
fix: Fixed (hopefully) bug in %PATH% parsing routing and A:/B: random accessing bug (Blair).
fix: Fixed bug where a directory could be found in %PATH% parsing (Blair).
chg: Added Polish translation, updated French&Italian translation (Blair).
chg: Made RD/MD/CD more buggy-lfn-implementation friendly (Blair).
chg: Removed usage of CLIB perror function and reduced executable size by nearly
1 kb.  Since perror was only used in ren and del, and only two possible errnos
exist, the function can be minimized, and also as an added advantage, the
errors that were printed can now be translated (Blair).

2022-03-02 18:22 Updated by: mateuszviste
Comment

I noticed your commit about allowing FreeCOM to have a root-based command.com. I'm not sure it is a good idea, since then it will be impossible to install different shells because of files collision. I think it would be better that only one shell is allowed to keep its command.com file at the root (the default OS shell), and other all lie in progs, so user can choose with SHELL= in config.sys what shell to use.

2022-03-02 18:48 Updated by: bttr
Comment

Reply To mateuszviste

I noticed your commit about allowing FreeCOM to have a root-based command.com. I'm not sure it is a good idea, since then it will be impossible to install different shells because of files collision. I think it would be better that only one shell is allowed to keep its command.com file at the root (the default OS shell), and other all lie in progs, so user can choose with SHELL= in config.sys what shell to use.

Erm, didn't think about that. -- Feel free to revert my latest commit. :-)

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login