🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.os.os2.programmer
13 messages
13 total messages Started by Ulrich Seifert Tue, 04 Sep 1990 13:09
OS/2 2.0 APIs
#1484
Author: Ulrich Seifert
Date: Tue, 04 Sep 1990 13:09
35 lines
2347 bytes
Why not talking a little bit about OS/2 vs. 2.0 ?

Slowly but surely some magazines start writing on the upcoming version 2.0.
Anyway, the informations that I could get up to now are a little bit confusing.
So I thought that this might be a good place to post a few questions and
maybe start a small discussion:

One of the features that are completely unclear to me concern the new APIs.
As far as I read there will be the "old" 16-bit API and a new 32-bit API.
Some Kbd, Mou,...  will be discontinued.
Well, what I don't see in the moment is how software development is supposed
to work in future. My line of reasoning is that there are quite a few systems
around running on a 286. As far as I understand there will be no way to have
the new 32-bit API on these machines (?).
Assuming this I would really like to know if anybody plans to use these new
features since I guess that the market will get completely crazy dealing with
two kinds of OS/2 software for different versions.
Or maybe my assumptions are wrong:
A better alternative might be if the new APIs would be provided for 286-
machines, too. However, these functions would have to be mapped onto the
capabilities of this hardware (what will probably be a complete mess).
From the user's point of view this would be very nice since he doesn't have
to worry about upgrading his software if he gets a new motherboard. On the
other side software developement would be a lot easier since there would be
only one kind of OS/2 version and not a few. I just try to imagine a software
company developing two OS/2 versions (286 and 386+...) for a market that isn't
that huge anyway...

Is there anybody who would like to comment on this? I guess there are quite
a lot of people (at least outside the U.S. where information is coming bitwise)
who would like to know a little bit more.

Thanks !

Uli
Re: OS/2 2.0 APIs
#1495
Author: Kai-Uwe Rommel
Date: Tue, 04 Sep 1990 16:19
32 lines
2295 bytes
In article <1990Sep4.130929.16442@sun1.ruf.uni-freiburg.de> seifert@sun1.ruf.uni-freiburg.de (Ulrich Seifert) writes:
>Well, what I don't see in the moment is how software development is supposed
>to work in future. My line of reasoning is that there are quite a few systems
>around running on a 286. As far as I understand there will be no way to have
>the new 32-bit API on these machines (?).

Anybody who already works with OS/2 1.x knows, that for serious work, a
386 is required for 1.x too, because of the speed. I would not recommend
using OS/2 on a 286 with up to 12MHz. A 386 with 25MHz and no cache is
just fine. It's the same with memory (at least 8MB). For the 286's even
Windows 3.0 becomes very slow when used on a machine with less than
3-4MB. And because of the new capabilities of 2.0 with a 386 (or 486) I
don't think that the 286 machines will play a big role for the OS/2
market. Most *existing* 286 machines can rarely be used for OS/2 because
hardware upgrade costs are too high (many don't even have sockets for
enough 1MBit chips and require expensive RAM cards).

>Assuming this I would really like to know if anybody plans to use these new
>features since I guess that the market will get completely crazy dealing with
>two kinds of OS/2 software for different versions.

I was so often angry about the 16bit architecture (when using programs using
very much data, ported from 32bit Unix systems, GNU diff, for example)
that I *will* use the new features even in such small utility programs,
as soon as I get an upgrade to 2.0 ...

>Uli


Kai Uwe Rommel
Munich
rommel@lan.informatik.tu-muenchen.dbp.de
Re: OS/2 2.0 APIs
#1496
Author: Ulrich Seifert
Date: Wed, 05 Sep 1990 12:08
32 lines
2385 bytes
rommel@lan.informatik.tu-muenchen.dbp.de (Kai-Uwe Rommel) writes:

>Anybody who already works with OS/2 1.x knows, that for serious work, a
>386 is required for 1.x too, because of the speed. I would not recommend
>using OS/2 on a 286 with up to 12MHz. A 386 with 25MHz and no cache is
>just fine. It's the same with memory (at least 8MB). For the 286's even
>Windows 3.0 becomes very slow when used on a machine with less than
>3-4MB. And because of the new capabilities of 2.0 with a 386 (or 486) I
>don't think that the 286 machines will play a big role for the OS/2
>market. Most *existing* 286 machines can rarely be used for OS/2 because
>hardware upgrade costs are too high (many don't even have sockets for
>enough 1MBit chips and require expensive RAM cards).

I think Kai Uwe is absolutely right. It is really a pain in the neck to do
some serious work on a 286 machine. In any case it is a good idea to have
a fast machine for OS/2. It is an old rule that usually you want to use
the advantages of a powerful operating system after some time.
But anyway, the strategic decision of IBM and Microsoft has been to develop
OS/2 already for 286 machines. And I guess that this will be o.k. for some
applications in companies, for instance. So we can't help it, OS/2 is an 
operating system for 286 processors and higher. Maybe we can start a new
discussion on the Windows 3 vs. OS/2 topic seperately.

So, for now we know Kai Uwe's position and mine is very similar. But what about
the rest of the community? It would be really great if somebody else could 
tell us what he thinks. Maybe there is also somebody from a big software 
company who could give us an idea what they want to do concerning software
development for 16-bit and 32-bit versions of OS/2.

Greetings,

    Ulf
Re: OS/2 2.0 APIs
#1497
Author: Alistair BANKS
Date: Wed, 05 Sep 1990 21:31
34 lines
2309 bytes
In article <1990Sep4.130929.16442@sun1.ruf.uni-freiburg.de> seifert@sun1.ruf.uni-freiburg.de (Ulrich Seifert) writes:
>One of the features that are completely unclear to me concern the new APIs.
>As far as I read there will be the "old" 16-bit API and a new 32-bit API.
>Some Kbd, Mou,...  will be discontinued.
>Well, what I don't see in the moment is how software development is supposed
>to work in future.

As has been stated in these comp.os.os2.... areas before, OS/2 2.0
has all the APIs that are in OS/2 1.X including the KBD, MOU & VIO
subsystems - these are all 16-bit APIs.

OS/2 2.0 add 32-bit APIs - these are an addition, they do not
preclude use of the 16-bit APIs, nor do they preclude use of 16-bit
applications - OS/2 2.0 is a true superset of OS/2 1.X.

Some of the duplicated functionality will not be brought into the
32-bit APIs. VIO, MOU & KBD all fall into that arena.  Successful
OS/2 applications will be graphical, and there are very rich facilities
for aquiring mouse & keyboard events using either the PM APIs or the
Windoes APIs with the Software Migration Kit (SMK) on OS/2.  The VIO
subsystem does not mix well with either the Win or PM APIs, and was
only useful when porting 16-bit character applications quickly from the DOS
world. Also, one of Microsoft's duties is to provide direction to
the industry - we have said that Microsoft's Operating System family
will be ported to run on non x86 machines over time - that means
non-PCs. You will quickly realise that KBD, MOU & VIO are simply
extensions of DOS-based, BIOS & x86 concepts, and that they are
not very portable - so Microsoft is giving direction that the 32-bit
API should be for either 'detached' style server apps, stdin/stdout
filter-type apps or full GUI apps.

Alistair Banks
OS/2 Group
Microsoft
Re: OS/2 2.0 APIs
#1501
Author: David Alan Feustel
Date: Fri, 07 Sep 1990 00:14
14 lines
1206 bytes
I suspect that there may be some interest in writing OS/2 applications
using the 1.2 APIs but running on OS/2 version 2.0 since the memory
management and debugging is (IMHO) better with the 1.2 API. This is
only true for small applications or applications that can be
decomposed into small programs where the 64k segments don't cause too
much aggravation.

Unfortunately, the 1.2 emulation of version 2.0 is not yet perfect;
Smalltalk V/PM runs fine on IBM OS/2 v1.2 but dies immediately when
run on the MS OS/2 v2.0.
-- 
Phone:	 (work) 219-482-9631; MCI mail: DFEUSTEL
E-mail:	feustel@well.sf.ca.us	{ucbvax,apple,hplabs,pacbell}!well!feustel	
USMAIL: Dave Feustel, 1930 Curdes Ave, Fort Wayne, IN 46805-2710
Re: OS/2 2.0 APIs
#1502
Author: David Alan Feustel
Date: Fri, 07 Sep 1990 00:16
6 lines
765 bytes
So how far away is an OS/2 version 2.0-specific device driver
development kit?
-- 
Phone:	 (work) 219-482-9631; MCI mail: DFEUSTEL
E-mail:	feustel@well.sf.ca.us	{ucbvax,apple,hplabs,pacbell}!well!feustel	
USMAIL: Dave Feustel, 1930 Curdes Ave, Fort Wayne, IN 46805-2710
Re: OS/2 2.0 APIsDOWN
#1489
Author: klimas
Date: Fri, 07 Sep 1990 19:11
14 lines
1301 bytes
In article <20157@well.sf.ca.us>, feustel@well.sf.ca.us (David Alan Feustel) writes:
> I suspect that there may be some interest in writing OS/2 applications
> using the 1.2 APIs but running on OS/2 version 2.0 since the memory
> management and debugging is (IMHO) better with the 1.2 API. This is
> only true for small applications or applications that can be
> decomposed into small programs where the 64k segments don't cause too
> much aggravation.
> 
> Unfortunately, the 1.2 emulation of version 2.0 is not yet perfect;
> Smalltalk V/PM runs fine on IBM OS/2 v1.2 but dies immediately when
> run on the MS OS/2 v2.0.
	I believe the folks at Digitalk are aware of the incompatibility
	and are preparing an OS/2 2.0 compliant version of Smalltalk/V-PM
	for release (shortly?).
Re: OS/2 2.0 APIs
#1488
Author: David Alan Feustel
Date: Sat, 08 Sep 1990 00:07
7 lines
837 bytes
Also, the more I play with the DOS box the more I think I would like
each dos box to be started with an optional CONFIG.SYS file that would
work just like on a stand-alone pc.
-- 
Phone:	 (work) 219-482-9631; MCI mail: DFEUSTEL
E-mail:	feustel@well.sf.ca.us	{ucbvax,apple,hplabs,pacbell}!well!feustel	
USMAIL: Dave Feustel, 1930 Curdes Ave, Fort Wayne, IN 46805-2710
Re: OS/2 2.0 APIsDOWN
#1490
Author: David Alan Feustel
Date: Sat, 08 Sep 1990 21:57
9 lines
1074 bytes
iMy reason for mentioning the Smalltalk problem was not to fault
Smalltalk but rather to point out that the 1.2 emulation mode in OS/2
v 2.0 is not yet complete. No doubt other programs that work with OS/2
v 1.2 but fail when run with 2.0 will come to light if the emulation
is not improved.
-- 
Phone:	 (work) 219-482-9631  MCI mail: DFEUSTEL  BIX: FEUSTEL 
E-mail:	feustel@well.sf.ca.us	{ucbvax,apple,hplabs,pacbell}!well!feustel	
USMAIL: Dave Feustel, 1930 Curdes Ave, Fort Wayne, IN 46805-2710
Re: OS/2 2.0 APIs
#1493
Author: Jeff Graber
Date: Tue, 11 Sep 1990 21:30
12 lines
1015 bytes
I have been trying to get DosExecPgm to work.  But it doesn't seem to be 
passing the parameter I specify.  I have to go to a different computer on 
a different floor so this example may not be accurate.  I have tried
specifying the full path to the parameter file, added a \0, and not done
either of those two.  

Anybody have any success with starting a .exe with a parameter??


Thank s

Jeff Graber
Re: OS/2 2.0 APIs
#1506
Author: David STECKLER
Date: Wed, 12 Sep 1990 21:47
25 lines
1371 bytes
In article <119809@linus.mitre.org> jeff@cornea.mitre.org.UUCP (Jeff Graber) writes:
>I have been trying to get DosExecPgm to work.  But it doesn't seem to be 
>passing the parameter I specify.  I have to go to a different computer on 
>a different floor so this example may not be accurate.  I have tried
>specifying the full path to the parameter file, added a \0, and not done
>either of those two.  
>
>Anybody have any success with starting a .exe with a parameter??
>
>
>Thank s
>
>Jeff Graber

To quote the docs about the pszArgs parameter, "...the program name, a null
character, the program parameters (separated by spaces), and two null 
characters." Thus, if your program is Pickle and your arguments are arg1,
arg2 and arg3, your argument string should be:

"Pickle\0arg1 arg2 arg3\0"

C (hopefully :) put the 2nd \0 at the end when it zero-terminated the string.


	...Dave
RCS for OS/2
#1494
Author: Kai-Uwe Rommel
Date: Thu, 13 Sep 1990 07:50
1206 lines
40186 bytes
A port of RCS 4.2 (revision control system, source code control system)
to MS-DOS appeared with sources a few days ago in the comp.binaries.ibm.pc
newsgroup. It can be recompiled for OS/2 using the patches below.

To recompile, MS C 6.00 is required, 5.10 does not work (lib functions).
To use it, you need GNU diff.

The following changes were made:
- Restrictions of file name length were removed, it should now work
  with HPFS names. Be shure to use the .DEF files because of the flag.
- The author of the DOS port changed the interpretation of path names
  to recognize \ instead of / as separator *only*. I have tried to make
  it recognize *both* separators. I hope that I found all places.
- On output, RCS converts path names now to lowercase and / separators.
  I think that's better because it is (originally) a Unix program.
- Under Unix it is semantically correct to delete an open file but not
  under DOS and OS/2. This is used by RCS and was not corrected by the
  DOS port. DOS does not refuse deletetion of open files (DOS = dumb
  operating system) while OS/2 of course does so. Some changes were
  needed to correct this.
- The USER environment variable is also recognized (besides USR).
- A bug in the spawning routine caused redirected stdio files to
  remain open after the spawn and thus made them unremovable.

Note:
RCSMERGE does not (yet) work. In addition to GNU diff, it also requires
diff3, sh and ed. I have all of them for OS/2 (sh should appear in comp.
binaries.os2 real soon) but the ed clone seems to have problems handling
output from GNU diff3. The shell script merge.sh was adapted to OS/2
and is included as merge.cmd in the following shar.

I decided to post the diffs here because they are intended to OS/2
programmers and the original sources were not posted to comp.sources.??
so posting in comp.sources.bugs does not make much sense.

Kai Uwe Rommel
rommel@lan.informatik.tu-muenchen.dbp.de


#!/bin/sh
# This is a shell archive (shar 3.32)
# made 09/10/1990 01:02 UTC by unknown@OS/2
# Source directory E:\
#
# existing files will NOT be overwritten
#
# This shar contains:
# length  mode       name
# ------ ---------- ------------------------------------------
#   1773 -rw-rw-rw- readme
#  22335 -rw-rw-rw- patches.os2
#    253 -rw-rw-rw- ci.cs
#    244 -rw-rw-rw- co.cs
#    143 -rw-rw-rw- ident.cs
#    214 -rw-rw-rw- rcs.cs
#    190 -rw-rw-rw- rcsclean.cs
#    186 -rw-rw-rw- rcsdiff.cs
#    211 -rw-rw-rw- rcsmerge.cs
#    200 -rw-rw-rw- rlog.cs
#     76 -rw-rw-rw- ci.def
#     76 -rw-rw-rw- co.def
#     79 -rw-rw-rw- ident.def
#     77 -rw-rw-rw- rcs.def
#     82 -rw-rw-rw- rcsclean.def
#     81 -rw-rw-rw- rcsdiff.def
#     82 -rw-rw-rw- rcsmerge.def
#     78 -rw-rw-rw- rlog.def
#    751 -rw-rw-rw- merge.cmd
#
if touch 2>&1 | fgrep 'amc' > /dev/null
 then TOUCH=touch
 else TOUCH=true
fi
# ============= readme ==============
if test X"$1" != X"-c" -a -f 'readme'; then
	echo "File already exists: skipping 'readme'"
else
echo "x - extracting readme (Text)"
sed 's/^X//' << 'SHAR_EOF' > readme &&
XA port of RCS 4.2 (revision control system, source code control system)
Xto MS-DOS appeared with sources a few days ago in the comp.binaries.ibm.pc
Xnewsgroup. It can be recompiled for OS/2 using the patches below.
X
XTo recompile, MS C 6.00 is required, 5.10 does not work (lib functions).
XTo use it, you need GNU diff.
X
XThe following changes were made:
X- Restrictions of file name length were removed, it should now work
X  with HPFS names. Be shure to use the .DEF files because of the flag.
X- The author of the DOS port changed the interpretation of path names
X  to recognize \ instead of / as separator *only*. I have tried to make
X  it recognize *both* separators. I hope that I found all places.
X- On output, RCS converts path names now to lowercase and / separators.
X  I think that's better because it is (originally) a Unix program.
X- Under Unix it is semantically correct to delete an open file but not
X  under DOS and OS/2. This is used by RCS and was not corrected by the
X  DOS port. DOS does not refuse deletetion of open files (DOS = dumb
X  operating system) while OS/2 of course does so. Some changes were
X  needed to correct this.
X- The USER environment variable is also recognized (besides USR).
X- A bug in the spawning routine caused redirected stdio files to
X  remain open after the spawn and thus made them unremovable.
X
XNote:
XRCSMERGE does not (yet) work. In addition to GNU diff, it also requires
Xdiff3, sh and ed. I have all of them for OS/2 (sh should appear in comp.
Xbinaries.os2 real soon) but the ed clone seems to have problems handling
Xoutput from GNU diff3. The shell script merge.sh was adapted to OS/2
Xand is included as merge.cmd in the following shar.
X
X
XKai Uwe Rommel
Xrommel@lan.informatik.tu-muenchen.dbp.de
SHAR_EOF
$TOUCH -am 0909180190 readme &&
chmod 0666 readme ||
echo "restore of readme failed"
set `wc -c readme`;Wc_c=$1
if test "$Wc_c" != "1739"; then
	echo original size 1739, current size $Wc_c
fi
fi
# ============= patches.os2 ==============
if test X"$1" != X"-c" -a -f 'patches.os2'; then
	echo "File already exists: skipping 'patches.os2'"
else
echo "x - extracting patches.os2 (Text)"
sed 's/^X//' << 'SHAR_EOF' > patches.os2 &&
Xdiff -cbBwr rcsdos/src/ci.c rcsos2/src/ci.c
X*** rcsdos/src/ci.c	Fri Sep 07 14:54:02 1990
X--- rcsos2/src/ci.c	Sun Sep 09 13:15:32 1990
X***************
X*** 647,652 ****
X--- 647,653 ----
X                  /* rewrite rest of RCS file */
X                  fastcopy(finptr,frewrite);
X                  ffclose(frewrite); frewrite=NULL;
X+                 ffclose(finptr);   finptr=NULL;
X          }
X  	ignoreints();
X  #ifdef MSDOS
Xdiff -cbBwr rcsdos/src/co.c rcsos2/src/co.c
X*** rcsdos/src/co.c	Fri Sep 07 14:54:02 1990
X--- rcsos2/src/co.c	Sun Sep 09 14:18:08 1990
X***************
X*** 144,150 ****
X  #endif
X  #ifdef MSDOS
X  static char co[] = CO;
X! static char merge[] = "\genurcs\src\merge.bat";
X  #else
X  static char co[] = CO;
X  static char merge[] = MERGE;
X--- 144,150 ----
X  #endif
X  #ifdef MSDOS
X  static char co[] = CO;
X! static char merge[] = MERGE;
X  #else
X  static char co[] = CO;
X  static char merge[] = MERGE;
X***************
X*** 436,441 ****
X--- 436,442 ----
X                          /* rewrite the rest of the RCSfile */
X                          fastcopy(finptr,frewrite);
X                          ffclose(frewrite); frewrite=NULL;
X+                         ffclose(finptr);   finptr=NULL;
X  			ignoreints();
X  #ifdef MSDOS
X                          if (Rename(newRCSfilename,RCSfilename) != 0 ) {
Xdiff -cbBwr rcsdos/src/partime.c rcsos2/src/partime.c
X*** rcsdos/src/partime.c	Fri Sep 07 14:54:04 1990
X--- rcsos2/src/partime.c	Sat Sep 08 23:11:58 1990
X***************
X*** 479,485 ****
X  {	register char *cp, *mp;
X  	register int c;
X  	struct tmwent *lastptr;
X! 	struct integ { int word; };   /* For getting at array ptr */
X  	int i;
X  
X  	lastptr = 0;
X--- 479,485 ----
X  {	register char *cp, *mp;
X  	register int c;
X  	struct tmwent *lastptr;
X! 	struct integ { long word; };   /* For getting at array ptr */
X  	int i;
X  
X  	lastptr = 0;
Xdiff -cbBwr rcsdos/src/rcs.c rcsos2/src/rcs.c
X*** rcsdos/src/rcs.c	Fri Sep 07 14:54:04 1990
X--- rcsos2/src/rcs.c	Sun Sep 09 13:14:04 1990
X***************
X*** 641,646 ****
X--- 641,647 ----
X              }
X          }
X          ffclose(frewrite);   frewrite = NULL;
X+         ffclose(finptr);     finptr=NULL;
X          if ( ! nerror ) {  /*  move temporary file to RCS file if no error */
X  	    ignoreints();		/* ignore interrupts */
X  #ifdef MSDOS
Xdiff -cbBwr rcsdos/src/rcsbase.h rcsos2/src/rcsbase.h
X*** rcsdos/src/rcsbase.h	Fri Sep 07 14:54:04 1990
X--- rcsos2/src/rcsbase.h	Sun Sep 09 16:27:32 1990
X***************
X*** 191,205 ****
X  #define revlength          30 /* max. length of revision numbers            */
X  #define datelength         20 /* length of a date in RCS format             */
X  #define joinlength         20 /* number of joined revisions permitted       */
X- #ifdef MSDOS		/* Added by $Author: lfk $ */
X- #	ifdef MKS
X- #		define RCSDIR         "rcs/" /* subdirectory for RCS files                 */
X- #	else
X- #		define RCSDIR         "RCS\\" /* subdirectory for RCS files                 */
X- #	endif /* MKS */
X- #else
X  #define RCSDIR         "RCS/" /* subdirectory for RCS files                 */
X- #endif /* MSDOS */
X  #ifdef MSDOS		/* Added by $Author: lfk $ */
X  #define RCSSUF            '\0' /* suffix for RCS files                       */
X  #define RCSSEP            '\0' /* separator for RCSSUF                       */
X--- 191,197 ----
X***************
X*** 215,222 ****
X  #  define NCPPN          1024 /* number of characters per pathname          */
X  #else
X  #ifdef MSDOS		/* Added by $Author: lfk $ */
X! #  define NCPFN            13 /* number of characters per filename          */
X! #  define NCPPN       	   66 /* number of characters per pathname          */
X  #else
X  #  define NCPFN            14 /* number of characters per filename          */
X  #  define NCPPN       6*NCPFN /* number of characters per pathname          */
X--- 207,214 ----
X  #  define NCPPN          1024 /* number of characters per pathname          */
X  #else
X  #ifdef MSDOS		/* Added by $Author: lfk $ */
X! #  define NCPFN           256 /* number of characters per filename          */
X! #  define NCPPN       	  256 /* number of characters per pathname          */
X  #else
X  #  define NCPFN            14 /* number of characters per filename          */
X  #  define NCPPN       6*NCPFN /* number of characters per pathname          */
Xdiff -cbBwr rcsdos/src/rcsclean.c rcsos2/src/rcsclean.c
X*** rcsdos/src/rcsclean.c	Fri Sep 07 14:54:04 1990
X--- rcsos2/src/rcsclean.c	Sun Sep 09 12:38:44 1990
X***************
X*** 72,77 ****
X--- 72,79 ----
X   *
X   */
X  #include "rcsbase.h"
X+ #include <sys/types.h>
X+ #include <sys/stat.h>
X  #define ERRCODE 2                   /*error code for exit status            */
X  static char rcsbaseid[] = RCSBASE;
X  
X***************
X*** 241,246 ****
X--- 243,250 ----
X  				/* identical files; can remove working file */
X  				result=0;
X  				diagnose("files identical; %s removed",workfilename);
X+                                 fclose(file2);
X+                                 chmod(workfilename, S_IREAD | S_IWRITE);
X  				if (unlink(workfilename)!=0) {
X  					error("Can't unlink %s",workfilename);
X  				}
Xdiff -cbBwr rcsdos/src/rcsedit.c rcsos2/src/rcsedit.c
X*** rcsdos/src/rcsedit.c	Fri Sep 07 14:54:04 1990
X--- rcsos2/src/rcsedit.c	Sun Sep 09 16:20:28 1990
X***************
X*** 493,504 ****
X  		VOID putc(VDELIM,out); VOID putc(' ',out);
X  		if (marker==Id)
X  #ifdef MSDOS
X- #	ifdef MKS
X  			 VOID fputs(bindex(RCSfilename,'/'),out);
X  #	else
X- 			 VOID fputs(bindex(RCSfilename,'\\'),out);
X- #	endif
X- #else
X  			 VOID fputs(bindex(RCSfilename,'/'),out);
X  #endif /* MSDOS */
X  		else     VOID fputs(getfullRCSname(),out);
X--- 493,500 ----
X***************
X*** 515,529 ****
X                  break;
X          case Log:
X                  VOID fprintf(out, "%c\t%s %c\n%sRevision %s  ",
X- #ifdef MSDOS
X- #	ifdef MKS
X- 						VDELIM, bindex(RCSfilename,'/'), KDELIM, Comment, delta->num);
X- #	else
X- 						VDELIM, bindex(RCSfilename,'\\'), KDELIM, Comment, delta->num);
X- #	endif
X- #else
X                          VDELIM, bindex(RCSfilename,'/'), KDELIM, Comment, delta->num);
X! #endif /* MSDOS */
X                  VOID PRINTDATE(out,date);VOID fputs("  ",out);VOID PRINTTIME(out,date);
X                  VOID fprintf(out, "  %s\n%s",delta->author,Comment);
X                  /* do not include state here because it may change and is not updated*/
X--- 511,518 ----
X                  break;
X          case Log:
X                  VOID fprintf(out, "%c\t%s %c\n%sRevision %s  ",
X                  VDELIM, bindex(RCSfilename,'/'), KDELIM, Comment, delta->num);
X!              /* VDELIM, bindex(RCSfilename,'\\'), KDELIM, Comment, delta->num); */
X                  VOID PRINTDATE(out,date);VOID fputs("  ",out);VOID PRINTTIME(out,date);
X                  VOID fprintf(out, "  %s\n%s",delta->author,Comment);
X                  /* do not include state here because it may change and is not updated*/
X***************
X*** 532,546 ****
X                  /* Comment is the comment leader */
X                  break;
X          case RCSfile:
X! #ifdef MSDOS
X! #	ifdef MKS
X!                 VOID fprintf(out,"%c %s %c",VDELIM,bindex(RCSfilename,'/'),KDELIM);
X! #	else
X!                 VOID fprintf(out,"%c %s %c",VDELIM,bindex(RCSfilename,'\\'),KDELIM);
X! #	endif
X! #else
X                  VOID fprintf(out,"%c %s %c",VDELIM,bindex(RCSfilename,'/'),KDELIM);
X- #endif /* MSDOS */
X                  break;
X          case Revision:
X                  VOID fprintf(out,"%c %s %c",VDELIM,delta->num,KDELIM);
X--- 521,528 ----
X                  /* Comment is the comment leader */
X                  break;
X          case RCSfile:
X!              /* VOID fprintf(out,"%c %s %c",VDELIM,bindex(RCSfilename,'\\'),KDELIM); */
X                  VOID fprintf(out,"%c %s %c",VDELIM,bindex(RCSfilename,'/'),KDELIM);
X                  break;
X          case Revision:
X                  VOID fprintf(out,"%c %s %c",VDELIM,delta->num,KDELIM);
X***************
X*** 555,560 ****
X                  VOID putc(KDELIM,out);
X                  break;
X          }
X- }
X- 
X  
X--- 537,540 ----
Xdiff -cbBwr rcsdos/src/rcsfnms.c rcsos2/src/rcsfnms.c
X*** rcsdos/src/rcsfnms.c	Fri Sep 07 14:54:04 1990
X--- rcsos2/src/rcsfnms.c	Sun Sep 09 16:27:02 1990
X***************
X*** 142,147 ****
X--- 142,148 ----
X  #include <sys/types.h>
X  #include <sys/stat.h>
X  #ifdef MSDOS
X+ #include <stdlib.h>
X  #include <direct.h>
X  #else
X  #include <sys/dir.h>
X***************
X*** 360,376 ****
X          if ((tp=tfnames[freefilename])==nil)
X                tp=tfnames[freefilename] = talloc(NCPPN);
X  #ifdef MSDOS
X! #	ifdef MKS
X! 		if (fullpath!=nil && (lastslash=rindex(fullpath,'/'))!=0) {
X! #	else
X! 		if (fullpath!=nil && (lastslash=rindex(fullpath,'\\'))!=0) {
X! #	endif
X  #else
X          if (fullpath!=nil && (lastslash=rindex(fullpath,'/'))!=0) {
X- #endif /* MSDOS */
X                  /* copy path */
X                  while (fullpath<=lastslash) *tp++ = *fullpath++;
X          }
X          while (*tp++ = *filename++);
X          return (mktemp(tfnames[freefilename++]));
X  }
X--- 361,378 ----
X          if ((tp=tfnames[freefilename])==nil)
X                tp=tfnames[freefilename] = talloc(NCPPN);
X  #ifdef MSDOS
X! 	if (fullpath!=nil)
X!           if ( (lastslash=rindex(fullpath,'/'))!=0 ||
X!                (lastslash=rindex(fullpath,'\\'))!=0) {
X!                 /* copy path */
X!                 while (fullpath<=lastslash) *tp++ = *fullpath++;
X!           }
X  #else
X          if (fullpath!=nil && (lastslash=rindex(fullpath,'/'))!=0) {
X                  /* copy path */
X                  while (fullpath<=lastslash) *tp++ = *fullpath++;
X          }
X+ #endif /* MSDOS */
X          while (*tp++ = *filename++);
X          return (mktemp(tfnames[freefilename++]));
X  }
X***************
X*** 423,428 ****
X--- 425,442 ----
X  }
X  
X  
X+ #ifdef MSDOS
X+ void _unixpath(char *pathbuf)
X+ {
X+   int i;
X+ 
X+   strlwr(pathbuf);
X+ 
X+   for ( i = 0; i <= strlen(pathbuf); i++)
X+     if(pathbuf[i] == '\\')
X+       pathbuf[i] = '/';
X+ }
X+ #endif
X  
X  char * findpairfile(argc, argv, fname)
X  int argc; char * argv[], *fname;
X***************
X*** 437,448 ****
X  
X          for (next = argv, count = argc; count>0; next++,count--) {
X  #ifdef MSDOS
X! #	ifdef MKS
X! 				if ((*next != nil) && strcmp(bindex(*next,'/'),fname)==0) {
X  #	else
X- 				if ((*next != nil) && strcmp(bindex(*next,'\\'),fname)==0) {
X- #	endif
X- #else
X                  if ((*next != nil) && strcmp(bindex(*next,'/'),fname)==0) {
X  #endif /* MSDOS */
X                          /* bindex finds the beginning of the file name stem */
X--- 451,460 ----
X  
X          for (next = argv, count = argc; count>0; next++,count--) {
X  #ifdef MSDOS
X! 		if ((*next != nil) &&
X!                     (strcmp(bindex(*next,'/'),fname)==0 ||
X! 		     strcmp(bindex(*next,'\\'),fname)==0)) {
X  #else
X                  if ((*next != nil) && strcmp(bindex(*next,'/'),fname)==0) {
X  #endif /* MSDOS */
X                          /* bindex finds the beginning of the file name stem */
X***************
X*** 484,489 ****
X--- 496,502 ----
X          char * lastsep, * purefname, * pureRCSname;
X          int opened, returncode;
X  #ifdef MSDOS
X+         char *help;
X  	struct stat dirstat;
X  #endif /* MSDOS */
X          char * RCS1;
X***************
X*** 500,519 ****
X  
X          /* first check suffix to see whether it is an RCS file or not */
X  #ifdef MSDOS
X- #	ifdef MKS
X  		purefname=bindex(*argv, '/'); /* skip path */
X! #	else
X! 		purefname=bindex(*argv, '\\'); /* skip path */
X! #	endif
X  #else
X          purefname=bindex(*argv, '/'); /* skip path */
X  #endif /* MSDOS */
X  #ifdef MSDOS
X! #	ifdef MKS
X! 	if( ( pureRCSname = strstr( *argv, "rcs/" ) ) != NULL){
X! #else
X! 	if( ( pureRCSname = strstr( *argv, "RCS\\" ) ) != NULL){
X! #endif
X                  /* RCS file name given*/
X  		RCS1 = (*argv);
X                  /* derive workfilename*/
X--- 513,528 ----
X  
X          /* first check suffix to see whether it is an RCS file or not */
X  #ifdef MSDOS
X  	purefname=bindex(*argv, '/'); /* skip path */
X! 	if ( (help=bindex(*argv, '\\')) > purefname )
X!           purefname = help;
X  #else
X          purefname=bindex(*argv, '/'); /* skip path */
X  #endif /* MSDOS */
X  #ifdef MSDOS
X! 	if ( (pureRCSname = strstr(*argv, "rcs/")) != NULL ||
X! 	     (pureRCSname = strstr(*argv, "rcs\\")) != NULL ||
X! 	     (pureRCSname = strstr(*argv, "RCS\\")) != NULL ) {
X                  /* RCS file name given*/
X  		RCS1 = (*argv);
X                  /* derive workfilename*/
X***************
X*** 533,560 ****
X                  /* working file given; now try to find RCS file */
X  		workfilename=*argv;
X  		/* derive RCS file name*/
X- #	ifdef MKS
X  		strcpy( tempfilename, "rcs/" );
X- #	else
X- 		strcpy( tempfilename, "RCS\\" );
X- #	endif
X  		strcat( tempfilename, purefname );
X                  RCS1=findpairfile(argc-1,argv+1,tempfilename);
X! #	ifdef MKS
X! 		pureRCSname = strstr( RCS1, "rcs/" );
X! #	else
X  		pureRCSname = strstr( RCS1, "RCS\\" );
X- #	endif
X  				if (strlen(pureRCSname)>NCPFN+4) {
X                          error("working file name %s too long",workfilename);
X                          return 0;
X                  }
X          }
X! #	ifdef MKS
X! 	if( strchr( workfilename, '/' ) != NULL ){
X! #	else
X! 	if( strchr( workfilename, '\\' ) != NULL ){
X! #	endif
X  		error("Sorry, file name %s confuse RCS", workfilename );
X  		return 0;
X  	}
X--- 542,560 ----
X                  /* working file given; now try to find RCS file */
X  		workfilename=*argv;
X  		/* derive RCS file name*/
X  		strcpy( tempfilename, "rcs/" );
X  		strcat( tempfilename, purefname );
X                  RCS1=findpairfile(argc-1,argv+1,tempfilename);
X! 		if ( (pureRCSname = strstr(RCS1, "rcs/")) == NULL )
X! 		  if ( (pureRCSname = strstr(RCS1, "rcs\\")) == NULL )
X  		    pureRCSname = strstr(RCS1, "RCS\\");
X  		if (strlen(pureRCSname)>NCPFN+4) {
X                          error("working file name %s too long",workfilename);
X                          return 0;
X                  }
X          }
X! 	if( strchr( workfilename, '/' ) != NULL ||
X! 	    strchr( workfilename, '\\' ) != NULL ){
X  		error("Sorry, file name %s confuse RCS", workfilename );
X  		return 0;
X  	}
X***************
X*** 700,705 ****
X--- 700,709 ----
X                  /* file names was given in the argument list        */
X                  warn("Option -p is set; ignoring output file %s",workfilename);
X  
X+ #ifdef MSDOS
X+         _unixpath(RCSfilename);
X+         _unixpath(workfilename);
X+ #endif
X          return returncode;
X  }
X  
X***************
X*** 709,715 ****
X   * Calls getwd(), but only once.
X   * removes leading "../" and "./".
X   */
X! {       static char pathbuf[NCPPN];
X          static char namebuf[NCPPN];
X          static int  pathlength;
X  
X--- 713,727 ----
X   * Calls getwd(), but only once.
X   * removes leading "../" and "./".
X   */
X! {
X! #ifdef MSDOS
X!         static char pathbuf[NCPPN];
X! 
X!         _fullpath(pathbuf, RCSfilename, sizeof(pathbuf));
X!         _unixpath(pathbuf);
X!         return pathbuf;
X! #else
X!         static char pathbuf[NCPPN];
X          static char namebuf[NCPPN];
X          static int  pathlength;
X  
X***************
X*** 716,732 ****
X          register char * realname, * lastpathchar;
X          register int  dotdotcounter, realpathlength;
X  
X- #ifdef MSDOS
X- 	/* Treat a full path name containing the drive name */
X- 	/* Added by $Author: lfk $ */
X- #	ifdef MKS
X- 		if (RCSfilename[1] == ':' && RCSfilename[2] == '/') {
X- #	else
X- 		if (RCSfilename[1] == ':' && RCSfilename[2] == '\\') {
X- #	endif
X- #else
X          if (*RCSfilename=='/') {
X- #endif /* MSDOS */
X                  return(RCSfilename);
X          } else {
X                  if (pathlength==0) { /*call curdir for the first time*/
X--- 728,734 ----
X***************
X*** 733,781 ****
X                      if (getwd(pathbuf)==NULL)
X                          faterror("Can't build current directory path");
X                      pathlength=strlen(pathbuf);
X- #ifdef MSDOS
X- 		/* Generally, a MSDOS path name seems to be like "A:\" */
X- 		/* Added by $Author: lfk $ */
X- #	ifdef MKS
X- 					if (!((pathlength==3) && (pathbuf[2]=='/'))) {
X-                         pathbuf[pathlength++]='/';
X- #	else
X- 					if (!((pathlength==3) && (pathbuf[2]=='\\'))) {
X-                         pathbuf[pathlength++]='\\';
X- #	endif
X- 						/* Check needed because some getwd implementations */
X-                         /* generate "/" for the root.                      */
X-                     }
X- #else
X                      if (!((pathlength==1) && (pathbuf[0]=='/'))) {
X                          pathbuf[pathlength++]='/';
X                          /* Check needed because some getwd implementations */
X                          /* generate "/" for the root.                      */
X                      }
X- #endif /* MSDOS */
X                  }
X                  /*the following must be redone since RCSfilename may change*/
X                  /* find how many ../ to remvove from RCSfilename */
X                  dotdotcounter =0;
X                  realname = RCSfilename;
X- #ifdef MSDOS	/* Chaged '/' to '\\' : By $Author: lfk $ */
X-                 while( realname[0]=='.' &&
X- #	ifdef MKS
X- 					  (realname[1]=='/'||(realname[1]=='.'&&realname[2]=='/'))){
X-                         if (realname[1]=='/') {
X- #	else
X- 					  (realname[1]=='\\'||(realname[1]=='.'&&realname[2]=='\\'))){
X-                         if (realname[1]=='\\') {
X- #	endif
X- 							/* drop leading ./ */
X-                             realname += 2;
X-                         } else {
X-                             /* drop leading ../ and remember */
X-                             dotdotcounter++;
X-                             realname += 3;
X-                         }
X-                 }
X- #else
X                  while( realname[0]=='.' &&
X                        (realname[1]=='/'||(realname[1]=='.'&&realname[2]=='/'))){
X                          if (realname[1]=='/') {
X--- 735,750 ----
X***************
X*** 787,807 ****
X                              realname += 3;
X                          }
X                  }
X- #endif /* MSDOS */
X                  /* now remove dotdotcounter trailing directories from pathbuf*/
X                  lastpathchar=pathbuf + pathlength-1;
X                  while (dotdotcounter>0 && lastpathchar>pathbuf) {
X                      /* move pointer backwards over trailing directory */
X                      lastpathchar--;
X- #ifdef MSDOS
X- #	ifdef MKS
X  					if (*lastpathchar=='/') {
X- #	else
X- 					if (*lastpathchar=='\\') {
X- #	endif
X- #else
X-                     if (*lastpathchar=='/') {
X- #endif /* MSDOS */
X                          dotdotcounter--;
X                      }
X                  }
X--- 756,767 ----
X***************
X*** 816,821 ****
X--- 776,782 ----
X                      return(namebuf);
X                  }
X          }
X+ #endif
X  }
X  
X  /* In MSDOS and (perhaps) OS/2, any directries are writable. 	*/
X***************
X*** 954,966 ****
X  {
X  	int a,i;
X  	(void)getcwd(name, NCPPN);
X- #ifdef MKS
X  	strlwr(name);
X  	a = strlen(name);
X  	for ( i = 0; i <= a; i++)
X  		if(name[i] == '\\')
X  			name[i] = '/';
X- #endif
X  	return name;
X  }
X  #endif /* MSODS */
X--- 915,925 ----
Xdiff -cbBwr rcsdos/src/rcsmerge.c rcsos2/src/rcsmerge.c
X*** rcsdos/src/rcsmerge.c	Fri Sep 07 14:54:06 1990
X--- rcsos2/src/rcsmerge.c	Sun Sep 09 14:12:18 1990
X***************
X*** 270,276 ****
X  
X                  if (
X  		      tostdout
X! #if defined(MSDOS) && defined(MKS)
X  			? run((char*)nil,(char*)nil,"sh",merge,"-p",workfilename,temp1file,temp2file,workfilename,rev2,(char*)nil)
X  		    : run((char*)nil,(char*)nil,"sh",merge,     workfilename,temp1file,temp2file,workfilename,rev2,(char*)nil)) {
X  #else
X--- 270,276 ----
X  
X                  if (
X  		      tostdout
X! #ifdef MSDOS
X  			? run((char*)nil,(char*)nil,"sh",merge,"-p",workfilename,temp1file,temp2file,workfilename,rev2,(char*)nil)
X  		    : run((char*)nil,(char*)nil,"sh",merge,     workfilename,temp1file,temp2file,workfilename,rev2,(char*)nil)) {
X  #else
Xdiff -cbBwr rcsdos/src/rcsutil.c rcsos2/src/rcsutil.c
X*** rcsdos/src/rcsutil.c	Fri Sep 07 14:54:06 1990
X--- rcsos2/src/rcsutil.c	Sun Sep 09 14:35:36 1990
X***************
X*** 167,181 ****
X   * If the uid is root, tries to get the true login with getlogin().
X   */
X  {
X! 	char *name = "ROOT_DOS";
X  	char *tmpname;
X  #ifdef MSDOS
X  #	ifndef MKS
X! 	if ((tmpname = getenv("USR")) != NULL);
X  #	else
X! 	if ((tmpname = getenv("LOGNAME")) != NULL);
X  #	endif
X  		name = tmpname;
X  	return name;
X  #else
X  	int uid;
X--- 167,183 ----
X   * If the uid is root, tries to get the true login with getlogin().
X   */
X  {
X! 	char *name = "Unknown";
X  	char *tmpname;
X  #ifdef MSDOS
X  #	ifndef MKS
X! 	if ((tmpname = getenv("USR")) != NULL)
X  #	else
X! 	if ((tmpname = getenv("LOGNAME")) != NULL)
X  #	endif
X  		name = tmpname;
X+ 	else if ((tmpname = getenv("USER")) != NULL)
X+ 		name = tmpname;
X  	return name;
X  #else
X  	int uid;
X***************
X*** 516,528 ****
X  	register char **inoutargs;
X  {
X  #ifdef MSDOS
X! 	int result;
X  
X  	if (fflush(stdout) == EOF  ||  fflush(stderr) == EOF)
X  		return -1;
X  	tryopen(fileno(stdin), inoutargs[0], 0);
X  	tryopen(fileno(stdout), inoutargs[1], -1);
X  	result = spawnvp( 0, inoutargs[2], &inoutargs[2] );
X  	return result;
X  #else
X  	int pid;
X--- 518,536 ----
X  	register char **inoutargs;
X  {
X  #ifdef MSDOS
X! 	int result, si, so;
X  
X  	if (fflush(stdout) == EOF  ||  fflush(stderr) == EOF)
X  		return -1;
X+         si = dup(0);
X+         so = dup(1);
X  	tryopen(fileno(stdin), inoutargs[0], 0);
X  	tryopen(fileno(stdout), inoutargs[1], -1);
X  	result = spawnvp( 0, inoutargs[2], &inoutargs[2] );
X+ 	dup2(si, 0);
X+ 	dup2(so, 1);
X+         close(si);
X+         close(so);
X  	return result;
X  #else
X  	int pid;
SHAR_EOF
$TOUCH -am 0909165090 patches.os2 &&
chmod 0666 patches.os2 ||
echo "restore of patches.os2 failed"
set `wc -c patches.os2`;Wc_c=$1
if test "$Wc_c" != "21666"; then
	echo original size 21666, current size $Wc_c
fi
fi
# ============= ci.cs ==============
if test X"$1" != X"-c" -a -f 'ci.cs'; then
	echo "File already exists: skipping 'ci.cs'"
else
echo "x - extracting ci.cs (Text)"
sed 's/^X//' << 'SHAR_EOF' > ci.cs &&
X(-W1 -DUSG -DSTRICT_LOCKING=1 -DGNUDIFF
X-DCO=\"co.exe\" -DDIFF=\"diff.exe\"
Xci.c rcslex.c rcssyn.c rcsgen.c rcsedit.c
Xrcskeys.c rcsrev.c rcsutil.c rcsfnms.c partime.c
Xmaketime.c rcskeep.c rcsfcmp.c
X)
Xsetargv.obj
Xci.exe
Xci.def
X-AS -LB -S0x2000
SHAR_EOF
$TOUCH -am 0908231590 ci.cs &&
chmod 0666 ci.cs ||
echo "restore of ci.cs failed"
set `wc -c ci.cs`;Wc_c=$1
if test "$Wc_c" != "243"; then
	echo original size 243, current size $Wc_c
fi
fi
# ============= co.cs ==============
if test X"$1" != X"-c" -a -f 'co.cs'; then
	echo "File already exists: skipping 'co.cs'"
else
echo "x - extracting co.cs (Text)"
sed 's/^X//' << 'SHAR_EOF' > co.cs &&
X(-W1 -DUSG -DSTRICT_LOCKING=1
X-DCO=\"co.exe\" -DDIFF=\"diff.exe\" -DMERGE=\"merge.cmd\"
Xco.c rcslex.c rcssyn.c rcsgen.c rcsedit.c rcskeys.c
Xrcsrev.c rcsutil.c rcsfnms.c partime.c maketime.c
X)
Xsetargv.obj
Xco.exe
Xco.def
X-AS -LB -S0x2000
SHAR_EOF
$TOUCH -am 0909141790 co.cs &&
chmod 0666 co.cs ||
echo "restore of co.cs failed"
set `wc -c co.cs`;Wc_c=$1
if test "$Wc_c" != "235"; then
	echo original size 235, current size $Wc_c
fi
fi
# ============= ident.cs ==============
if test X"$1" != X"-c" -a -f 'ident.cs'; then
	echo "File already exists: skipping 'ident.cs'"
else
echo "x - extracting ident.cs (Text)"
sed 's/^X//' << 'SHAR_EOF' > ident.cs &&
X(-W1 -DUSG -DSTRICT_LOCKING=1
X-DCO=\"co.exe\" -DDIFF=\"diff.exe\"
Xident.c rcskeys.c
X)
Xsetargv.obj
Xrcsid.exe
Xident.def
X-AS -LB -S0x2000
SHAR_EOF
$TOUCH -am 0909134190 ident.cs &&
chmod 0666 ident.cs ||
echo "restore of ident.cs failed"
set `wc -c ident.cs`;Wc_c=$1
if test "$Wc_c" != "135"; then
	echo original size 135, current size $Wc_c
fi
fi
# ============= rcs.cs ==============
if test X"$1" != X"-c" -a -f 'rcs.cs'; then
	echo "File already exists: skipping 'rcs.cs'"
else
echo "x - extracting rcs.cs (Text)"
sed 's/^X//' << 'SHAR_EOF' > rcs.cs &&
X(-W1 -DUSG -DSTRICT_LOCKING=1 -DGNUDIFF
X-DCO=\"co.exe\" -DDIFF=\"diff.exe\"
Xrcs.c rcslex.c rcssyn.c rcsrev.c rcsutil.c
Xrcsgen.c rcsedit.c rcskeys.c rcsfnms.c
X)
Xsetargv.obj
Xrcs.exe
Xrcs.def
X-AS -LB -S0x2000
SHAR_EOF
$TOUCH -am 0908232090 rcs.cs &&
chmod 0666 rcs.cs ||
echo "restore of rcs.cs failed"
set `wc -c rcs.cs`;Wc_c=$1
if test "$Wc_c" != "205"; then
	echo original size 205, current size $Wc_c
fi
fi
# ============= rcsclean.cs ==============
if test X"$1" != X"-c" -a -f 'rcsclean.cs'; then
	echo "File already exists: skipping 'rcsclean.cs'"
else
echo "x - extracting rcsclean.cs (Text)"
sed 's/^X//' << 'SHAR_EOF' > rcsclean.cs &&
X(-W1 -DUSG -DSTRICT_LOCKING=1
X-DCO=\"co.exe\" -DDIFF=\"diff.exe\"
Xrcsclean.c rcsfnms.c rcssyn.c rcslex.c
Xrcsrev.c rcsutil.c
X)
Xsetargv.obj
Xrcsclean.exe
Xrcsclean.def
X-AS -LB -S0x2000
SHAR_EOF
$TOUCH -am 0908233090 rcsclean.cs &&
chmod 0666 rcsclean.cs ||
echo "restore of rcsclean.cs failed"
set `wc -c rcsclean.cs`;Wc_c=$1
if test "$Wc_c" != "181"; then
	echo original size 181, current size $Wc_c
fi
fi
# ============= rcsdiff.cs ==============
if test X"$1" != X"-c" -a -f 'rcsdiff.cs'; then
	echo "File already exists: skipping 'rcsdiff.cs'"
else
echo "x - extracting rcsdiff.cs (Text)"
sed 's/^X//' << 'SHAR_EOF' > rcsdiff.cs &&
X(-W1 -DUSG -DSTRICT_LOCKING=1
X-DCO=\"co.exe\" -DDIFF=\"diff.exe\"
Xrcsdiff.c rcsutil.c rcsfnms.c rcsrev.c rcssyn.c rcslex.c
X)
Xsetargv.obj
Xrcsdiff.exe
Xrcsdiff.def
X-AS -LB -S0x2000
SHAR_EOF
$TOUCH -am 0908231190 rcsdiff.cs &&
chmod 0666 rcsdiff.cs ||
echo "restore of rcsdiff.cs failed"
set `wc -c rcsdiff.cs`;Wc_c=$1
if test "$Wc_c" != "178"; then
	echo original size 178, current size $Wc_c
fi
fi
# ============= rcsmerge.cs ==============
if test X"$1" != X"-c" -a -f 'rcsmerge.cs'; then
	echo "File already exists: skipping 'rcsmerge.cs'"
else
echo "x - extracting rcsmerge.cs (Text)"
sed 's/^X//' << 'SHAR_EOF' > rcsmerge.cs &&
X(-W1 -DUSG -DSTRICT_LOCKING=1
X-DCO=\"co.exe\" -DDIFF=\"diff.exe\" -DMERGE=\"merge.cmd\"
Xrcsmerge.c rcsutil.c rcsfnms.c rcsrev.c rcssyn.c rcslex.c
X)
Xsetargv.obj
Xrcsmerge.exe
Xrcsmerge.def
X-AS -LB -S0x2000
SHAR_EOF
$TOUCH -am 0909154790 rcsmerge.cs &&
chmod 0666 rcsmerge.cs ||
echo "restore of rcsmerge.cs failed"
set `wc -c rcsmerge.cs`;Wc_c=$1
if test "$Wc_c" != "203"; then
	echo original size 203, current size $Wc_c
fi
fi
# ============= rlog.cs ==============
if test X"$1" != X"-c" -a -f 'rlog.cs'; then
	echo "File already exists: skipping 'rlog.cs'"
else
echo "x - extracting rlog.cs (Text)"
sed 's/^X//' << 'SHAR_EOF' > rlog.cs &&
X(-W1 -DUSG -DSTRICT_LOCKING=1
X-DCO=\"co.exe\" -DDIFF=\"diff.exe\"
Xrlog.c rcslex.c rcssyn.c rcsrev.c rcsutil.c partime.c maketime.c rcsfnms.c
X)
Xsetargv.obj
Xrcslog.exe
Xrlog.def
X-AC -LB -S0x2000
SHAR_EOF
$TOUCH -am 0909141790 rlog.cs &&
chmod 0666 rlog.cs ||
echo "restore of rlog.cs failed"
set `wc -c rlog.cs`;Wc_c=$1
if test "$Wc_c" != "192"; then
	echo original size 192, current size $Wc_c
fi
fi
# ============= ci.def ==============
if test X"$1" != X"-c" -a -f 'ci.def'; then
	echo "File already exists: skipping 'ci.def'"
else
echo "x - extracting ci.def (Text)"
sed 's/^X//' << 'SHAR_EOF' > ci.def &&
XNAME CI WINDOWCOMPAT NEWFILES
XDESCRIPTION 'RCS 4.2 - for MS-DOS and OS/2'
SHAR_EOF
$TOUCH -am 0909130790 ci.def &&
chmod 0666 ci.def ||
echo "restore of ci.def failed"
set `wc -c ci.def`;Wc_c=$1
if test "$Wc_c" != "74"; then
	echo original size 74, current size $Wc_c
fi
fi
# ============= co.def ==============
if test X"$1" != X"-c" -a -f 'co.def'; then
	echo "File already exists: skipping 'co.def'"
else
echo "x - extracting co.def (Text)"
sed 's/^X//' << 'SHAR_EOF' > co.def &&
XNAME CO WINDOWCOMPAT NEWFILES
XDESCRIPTION 'RCS 4.2 - for MS-DOS and OS/2'
SHAR_EOF
$TOUCH -am 0909130790 co.def &&
chmod 0666 co.def ||
echo "restore of co.def failed"
set `wc -c co.def`;Wc_c=$1
if test "$Wc_c" != "74"; then
	echo original size 74, current size $Wc_c
fi
fi
# ============= ident.def ==============
if test X"$1" != X"-c" -a -f 'ident.def'; then
	echo "File already exists: skipping 'ident.def'"
else
echo "x - extracting ident.def (Text)"
sed 's/^X//' << 'SHAR_EOF' > ident.def &&
XNAME IDENT WINDOWCOMPAT NEWFILES
XDESCRIPTION 'RCS 4.2 - for MS-DOS and OS/2'
SHAR_EOF
$TOUCH -am 0909130790 ident.def &&
chmod 0666 ident.def ||
echo "restore of ident.def failed"
set `wc -c ident.def`;Wc_c=$1
if test "$Wc_c" != "77"; then
	echo original size 77, current size $Wc_c
fi
fi
# ============= rcs.def ==============
if test X"$1" != X"-c" -a -f 'rcs.def'; then
	echo "File already exists: skipping 'rcs.def'"
else
echo "x - extracting rcs.def (Text)"
sed 's/^X//' << 'SHAR_EOF' > rcs.def &&
XNAME RCS WINDOWCOMPAT NEWFILES
XDESCRIPTION 'RCS 4.2 - for MS-DOS and OS/2'
SHAR_EOF
$TOUCH -am 0909130790 rcs.def &&
chmod 0666 rcs.def ||
echo "restore of rcs.def failed"
set `wc -c rcs.def`;Wc_c=$1
if test "$Wc_c" != "75"; then
	echo original size 75, current size $Wc_c
fi
fi
# ============= rcsclean.def ==============
if test X"$1" != X"-c" -a -f 'rcsclean.def'; then
	echo "File already exists: skipping 'rcsclean.def'"
else
echo "x - extracting rcsclean.def (Text)"
sed 's/^X//' << 'SHAR_EOF' > rcsclean.def &&
XNAME RCSCLEAN WINDOWCOMPAT NEWFILES
XDESCRIPTION 'RCS 4.2 - for MS-DOS and OS/2'
SHAR_EOF
$TOUCH -am 0909130790 rcsclean.def &&
chmod 0666 rcsclean.def ||
echo "restore of rcsclean.def failed"
set `wc -c rcsclean.def`;Wc_c=$1
if test "$Wc_c" != "80"; then
	echo original size 80, current size $Wc_c
fi
fi
# ============= rcsdiff.def ==============
if test X"$1" != X"-c" -a -f 'rcsdiff.def'; then
	echo "File already exists: skipping 'rcsdiff.def'"
else
echo "x - extracting rcsdiff.def (Text)"
sed 's/^X//' << 'SHAR_EOF' > rcsdiff.def &&
XNAME RCSDIFF WINDOWCOMPAT NEWFILES
XDESCRIPTION 'RCS 4.2 - for MS-DOS and OS/2'
SHAR_EOF
$TOUCH -am 0909130790 rcsdiff.def &&
chmod 0666 rcsdiff.def ||
echo "restore of rcsdiff.def failed"
set `wc -c rcsdiff.def`;Wc_c=$1
if test "$Wc_c" != "79"; then
	echo original size 79, current size $Wc_c
fi
fi
# ============= rcsmerge.def ==============
if test X"$1" != X"-c" -a -f 'rcsmerge.def'; then
	echo "File already exists: skipping 'rcsmerge.def'"
else
echo "x - extracting rcsmerge.def (Text)"
sed 's/^X//' << 'SHAR_EOF' > rcsmerge.def &&
XNAME RCSMERGE WINDOWCOMPAT NEWFILES
XDESCRIPTION 'RCS 4.2 - for MS-DOS and OS/2'
SHAR_EOF
$TOUCH -am 0909130790 rcsmerge.def &&
chmod 0666 rcsmerge.def ||
echo "restore of rcsmerge.def failed"
set `wc -c rcsmerge.def`;Wc_c=$1
if test "$Wc_c" != "80"; then
	echo original size 80, current size $Wc_c
fi
fi
# ============= rlog.def ==============
if test X"$1" != X"-c" -a -f 'rlog.def'; then
	echo "File already exists: skipping 'rlog.def'"
else
echo "x - extracting rlog.def (Text)"
sed 's/^X//' << 'SHAR_EOF' > rlog.def &&
XNAME RLOG WINDOWCOMPAT NEWFILES
XDESCRIPTION 'RCS 4.2 - for MS-DOS and OS/2'
SHAR_EOF
$TOUCH -am 0909130890 rlog.def &&
chmod 0666 rlog.def ||
echo "restore of rlog.def failed"
set `wc -c rlog.def`;Wc_c=$1
if test "$Wc_c" != "76"; then
	echo original size 76, current size $Wc_c
fi
fi
# ============= merge.cmd ==============
if test X"$1" != X"-c" -a -f 'merge.cmd'; then
	echo "File already exists: skipping 'merge.cmd'"
else
echo "x - extracting merge.cmd (Text)"
sed 's/^X//' << 'SHAR_EOF' > merge.cmd &&
Xextproc sh
X
X#	$Id: merge.sh,v 5.2 90/07/15 11:32:01 ROOT_DOS Release $
X
XDIFF=diff
XDIFF3=diff3
Xp=w
Xcase $1 in
X-p)
X	p='1,$p'
X	shift
Xesac
X
Xcase $# in
X0|1|2)
X        echo >&2 ""
X	echo >&2 "Usage: merge [-p] file1 file2 file3"
X	exit 1
Xesac
X
Xcase $p in
Xw)
X	if test ! -w $1
X	then
X		echo >&2 "$1 not writeable"
X		exit 1
X	fi
Xesac
X
Xtrap 's=$?; rm -f d3a$$ d3b$$; exit $s' 0
Xtrap exit 1 2 3 13 15
Xumask 077
X
X$DIFF $1 $3 >d3a$$
Xcase $? in
X0|1) ;;
X*) exit
Xesac
X
X$DIFF $2 $3 >d3b$$
Xcase $? in
X0|1) ;;
X*) exit
Xesac
X
X{
X	$DIFF3 -E d3a$$ d3b$$ $1 $2 $3 $4 $5
X	case $? in
X	0) ;;
X	1) echo >&2 merge: warning: 1 overlap during merge.;;
X	*) echo >&2 merge: warning: $? overlaps during merge.
X	esac
X	echo $p
X} | ed - $1
SHAR_EOF
$TOUCH -am 0909141190 merge.cmd &&
chmod 0666 merge.cmd ||
echo "restore of merge.cmd failed"
set `wc -c merge.cmd`;Wc_c=$1
if test "$Wc_c" != "697"; then
	echo original size 697, current size $Wc_c
fi
fi
exit 0
--
/* Kai Uwe Rommel
 * Munich
 * rommel@lan.informatik.tu-muenchen.dbp.de
 */
Re: OS/2 2.0 APIsDOWNDOWN
#1517
Author: klimas
Date: Wed, 19 Sep 1990 13:52
10 lines
1100 bytes
In article <20180@well.sf.ca.us>, feustel@well.sf.ca.us (David Alan Feustel) writes:
> iMy reason for mentioning the Smalltalk problem was not to fault
> Smalltalk but rather to point out that the 1.2 emulation mode in OS/2
> v 2.0 is not yet complete. No doubt other programs that work with OS/2
> v 1.2 but fail when run with 2.0 will come to light if the emulation
> is not improved.
	My understanding of the problem was that the rules for OS/2
	development and interface into the OS had some ambiguities in 
	them and that they only manifested themselves when the applications
	had to also run under 2.0.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads