Category : C Source Code
Archive   : PATCH12.ZIP
Filename : TCPATCH5.DIF

 
Output of file : TCPATCH5.DIF contained in archive : PATCH12.ZIP
TurboC2.0 Patches to fix pipe bugs
Prereq: 4
*** tcpatlev.h Wed Jul 18 15:48:16 1990
--- tcpatlev.new Tue Aug 07 08:31:10 1990
***************
*** 1,1 ****
! #define TCPATCHLEVEL 4
--- 1,1 ----
! #define TCPATCHLEVEL 5
*** readme Wed Jul 18 15:39:48 1990
--- readme.new Tue Aug 07 08:31:10 1990
***************
*** 182,184 ****
--- 182,201 ----
in the current implementation.

(this bug is now fixed)
+
+
+ *** OFFICIAL PATCHLEVEL 12, TurboC2.0 PATCHLEVEL 5
+
+ From: [email protected] (Alex Sergejew)
+ Date: Fri, 20 Jul 90 23:56:13 EST
+
+ The problem is that whatever ed is doing it's not accepting the
+ redirected stdin from the shelled COMMAND.COM and so it stalls. When you
+ hit q it unstalls and also returns normally but hasn't read the ed script.
+
+ Appended find *more* patches, this time to a pipe package that *does* work
+ the way it ought to, along with appropriate mods to pch.c and makefile
+ (ie patches to my patches to your patches to etc). The pipe package here
+ was snarfed from an old edition of lharc and is more limited than the fancy
+ one I posted but it works just fine with patch (it does stdin redirection
+ from the invocation of the spawned COMMAND.COM - quite foolproof).
*** makefile.bak Sun Jul 15 15:59:34 1990
--- makefile Fri Jul 20 21:54:12 1990
***************
*** 1,14 ****
CC = tcc
CFLAGS = -N -ml -DTURBOC20

! c = patch.c pch.c inp.c version.c util.c popen.c getswitc.c
! obj = patch.obj pch.obj inp.obj version.obj util.obj popen.obj getswitc.obj

.c.obj:
$(CC) -c $(CFLAGS) $(LARGE) $*.c

patch.exe: $(obj)
! $(CC) -epatch $(CFLAGS) $(obj)

patch.obj: config.h common.h patch.c inp.h pch.h util.h version.h

--- 1,17 ----
CC = tcc
CFLAGS = -N -ml -DTURBOC20
+ LFLAGS = -ml

! #c = patch.c pch.c inp.c version.c util.c popen.c getswitc.c
! #obj = patch.obj pch.obj inp.obj version.obj util.obj popen.obj getswitc.obj
! c = patch.c pch.c inp.c version.c util.c pipes.c
! obj = patch.obj pch.obj inp.obj version.obj util.obj pipes.obj

.c.obj:
$(CC) -c $(CFLAGS) $(LARGE) $*.c

patch.exe: $(obj)
! $(CC) -epatch $(LFLAGS) $(obj)

patch.obj: config.h common.h patch.c inp.h pch.h util.h version.h

*** pch.bak Sun Jul 15 18:54:58 1990
--- pch.c Fri Jul 20 22:17:22 1990
***************
*** 41,49 ****
#include "util.h"
#include "INTERN.h"
#include "pch.h"
- #ifdef TURBOC20
- #include "popen.h"
- #endif

/* Patch (diff listing) abstract type. */

--- 41,46 ----
*** /dev/null
--- pipes.c Fri Jul 20 21:52:54 1990
***************
*** 0 ****
--- 1,84 ----
+ /* a simulation for the Unix popen() and pclose() calls on MS-DOS */
+ /* only one pipe can be open at a time */
+
+ #include
+ #include
+ #include
+ #include
+
+ static char pipename[128], command[128];
+ static int wrpipe;
+
+ static void Mktemp(char *);
+
+ FILE *popen(char *cmd, char *flags)
+ {
+ wrpipe = (strchr(flags, 'w') != NULL);
+
+ if ( wrpipe )
+ {
+ strcpy(command, cmd);
+ strcpy(pipename, "~WXXXXXX");
+ Mktemp(pipename);
+ return fopen(pipename, flags); /* ordinary file */
+ }
+ else
+ {
+ strcpy(pipename, "~RXXXXXX");
+ Mktemp(pipename);
+ strcpy(command, cmd);
+ strcat(command, ">");
+ strcat(command, pipename);
+ system(command);
+ return fopen(pipename, flags); /* ordinary file */
+ }
+ }
+
+ int pclose(FILE *pipe)
+ {
+ int rc;
+
+ if ( fclose(pipe) == EOF )
+ return EOF;
+
+ if ( wrpipe )
+ {
+ if ( command[strlen(command) - 1] == '!' )
+ command[strlen(command) - 1] = 0;
+ else
+ strcat(command, "<");
+
+ strcat(command, pipename);
+ rc = system(command);
+ unlink(pipename);
+ return rc;
+ }
+ else
+ {
+ unlink(pipename);
+ return 0;
+ }
+ }
+
+ static
+ void Mktemp(char *file)
+ {
+ char fname[32], *tmp, *bsp;
+
+ tmp = getenv("TMP");
+
+ if ( tmp != NULL )
+ {
+ strcpy(fname, file);
+ bsp = strcpy(file, tmp);
+ while ((bsp=strchr(bsp, '/')) != NULL)
+ *bsp = '\\';
+
+ if ( file[strlen(file) - 1] != '\\' )
+ strcat(file, "\\");
+
+ strcat(file, fname);
+ }
+
+ mktemp(file);
+ }



  3 Responses to “Category : C Source Code
Archive   : PATCH12.ZIP
Filename : TCPATCH5.DIF

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/