[comp.binaries.ibm.pc.d] RCS for DOS

tom@ssd.csd.harris.com (Tom Horsley) (08/21/90)

I have been playing with the recently posted RCS for DOS programs and they
seem to work pretty well (using the also recently posted GNU diff). I
suspect I am going to find them very useful. I did notice one pretty
minor glitch last night. I tried out the $Header$ feature, using it
to initialize a character string, and it generated a string containing
a file name that looked like:

    C:\PROGS\TESTING\RCS\fred.c

needless to say, the back slash characters in the file name did not
make it through to the actual string generated in the compiled program...

It would also be nice to have the man page that describes RCS file format,
not just the section 1 man pages for the commands.

Thanks for posting RCS, I suspect I will find it one of the most useful
utilities that ever showed up in this group.
--
======================================================================
domain: tahorsley@csd.harris.com       USMail: Tom Horsley
  uucp: ...!uunet!hcx1!tahorsley               511 Kingbird Circle
                                               Delray Beach, FL  33444
+==== Censorship is the only form of Obscenity ======================+
|     (Wait, I forgot government tobacco subsidies...)               |
+====================================================================+

weisen@eniac.seas.upenn.edu (Neil Weisenfeld) (08/22/90)

In article <TOM.90Aug21073135@hcx2.ssd.csd.harris.com>, tom@ssd (Tom Horsley) writes:
[stuff deleted]
>minor glitch last night. I tried out the $Header$ feature, using it
>to initialize a character string, and it generated a string containing
>a file name that looked like:
>
>    C:\PROGS\TESTING\RCS\fred.c
>
>needless to say, the back slash characters in the file name did not
>make it through to the actual string generated in the compiled program...
>

I've been using the $Id$ function instead to help overcome that problem.
It seems the same only without the leading components of the path
name.  

Another problem that I've had is that 'ident' doesn't seem to find any
i.d. strings in a binary file.  I've used a hex editor to ensure that
the data is there.  Any ideas?


Neil

P.S. -- Great thanks to the poster.

lfk@athena.mit.edu (Lee F Kolakowski) (08/22/90)

There have been a number of comments about DOS RCS in this newsgroup 
and in my mailbox. Here are the responses. This may be a bit long
so if you are not interested in RCS for DOS, press ``n'' now.

First a few bug problems.


BUG #1:
On 21 Aug 90 11:31:35 GMT,
tom@ssd.csd.harris.com (Tom Horsley) said:
> I tried out the $Header$ feature, using it
> to initialize a character string, and it generated a string containing
> a file name that looked like:

>     C:\PROGS\TESTING\RCS\fred.c

> needless to say, the back slash characters in the file name did not
> make it through to the actual string generated in the compiled program...

As I posted in an earlier cpib.d message. There were two sets of
executables in the RCS posting. The first set was from the sources I
got second hand from a fj.binaries group. These executables have been
hacked so the the path separator is '\\'. As a result a small number
of features break, most notable the one mentioned above.

The second set of executables posted as MKSRCSe.zoo, have been reverse
hacked so that the path sep is '/'. These do not require that the user
own the MKS toolkit, or even use the MKS shell (except for the shell
scripts and rcsmerge).

BUG #2:
On 20 Aug 90 16:21:00 -0700,
jbthiel@cse.ogi.edu (John B. Thiel) said:
>    I much appreciated your recent post of the DOS version of RCS. In
> beginning to use it I have uncovered the following potentially serious
> bug:
> 
>    The handling of the DOS ctrl-Z file terminator character is inconsistent.
>    If ctrl-Z is the last character of the file, on a line by itself,
>    it is not included in the rcs-file, but it IS counted as a line
>    in the generation of edit scripts.
> 
>    The effect of this inconsistency is to produce an "EOF on edit"
>    error from "co" when attempting to retrieve revisions that are
>    not tip revisions. The problem manifests when the last delete
>    command in an edit script contains eg. dxxx nnn (counting the
>    original ctrl-Z line), but the current copy of the text within
>    the rcs-file has only nnn-1 lines remaining (since the ctrl-Z
>    line was not stored).
> 
>    The net result is that previous revisions CANNOT BE RETRIEVED!

This is a result of broken tools, still putting ^Z at the end of 
files, and is also related to a small problem in moving around the
actual RCS files. 

1) RCS is for "text" files.

2) On Unix a file is a file. And "Text" files are no different
   as most of us know unix files have lines therminated by a single 
   '\n'. MSDOS (enlightend as it may be) differntiates between
   text files and binary files. Text files get mucked with
   by stdio, and in text files ^Z still represents an absolute EOF.

Quick && NOW fix:
   Use one on the many Unix<==>DOS file filters. It will fix the ^Z
   problem, and the '\r\n' vs '\n' problems. I like flip written by
   the previous cpib moderator (R. Dhesi). RCS/*,v files from a unix
   RCS, will be find on DOS once the ,v in the name is truncated. DOS
   RCS files must have their lines fixed and ,v appended. I use flip
   on a Unix box and the Unix version of mmv that was just posted to
   do this.

Long Term FIX:
   recompile the tools to use binary file IO. and throw away '\r' and
   ^Z. This should be easy, but I dont have the time for about 1 month
   to do this. If some one needs this faster (John?), the sources
   should be in you news shortly.

BUG #3:
On 20 Aug 90 10:24:58 BST,
I.Sparry@gdt.bath.ac.uk (Icarus Sparry) said:
> I seem to have found a bug.
> 1) Check in a file, say fred
> 2) Enable stricy locking 'rcs -L fred'
> 3) Checkout fred, without locking 'co fred'
> 4) Checkout fred with lock. 'co -l fred'
> The last fail, as it can't unlink the readonly copy.
> The fix would be to chmod the file first, and then unlink, or else blame MS
> for a faulty 'unlink' routine.

I have not had a chance to investigate this. But I put it here FYI.

BUG #4:

I found a number of small problems with RCS merge operations.  None of
the diff3s I have support the required 5 args. There has been a
discussion of this in gnu.utils.bugs. Is there a stable version of
gnudiff3 for DOS to which we can make these patches? Also, on simtel
and grape.ecs.clarkson.edu, maybe there should a GNU directory with
sources and binaries for MS-DOS. I would do it, but I don't have
nearly enough disk space for work.

That is it on BUGS, Now on to Features:

On 20 Aug 90 16:21:00 -0700,
jbthiel@cse.ogi.edu (John B. Thiel) said:
>    A few unrelated notes on DosRCS:
>       1. The USR environment variable is undocmented. (any others?)
> 
>       2. Non-strict locking might be a more suitable default 
>             (DOS is usually a single user platform)
> 
>       3. A RCSFlags or RCSOptions environment variable would be useful
>          to specify things like strict/nonstrict locking, user name, etc.
>          ie. some of the constant options that can be given on the command
>          lines to the RCS commands.

John must be using the DOSRCS versions of the programs.  Those
versions use USR as a username string. This is nonstandard.  The MKS
versions look for LOGNAME Under the MKS shell usernames are specified
in the environment variable LOGNAME. So instead of a relatively
useless username for everone like MS_USER, the routine checks LOGNAME.

The locking issue.... I agree with John, but, we have 35 people
working on 3 machines hooked up to a server, so locking makes sense,
even though it does not really work that same as Unix. It sort of
reminds you to be careful. If it bothers people, there are two
possible solutions. 1) recompile the code, 2) some sort of environment
variable. I vote for RCSLOCK={-U|-L}. I would tend not to muck with
the username in the same mechanism. NOTE: Ian Stewartson's shell will
work well with the MKS version of the tools, and uses LOGNAME.

On 21 Aug 90 11:31:35 GMT,
tom@ssd.csd.harris.com (Tom Horsley) said:
> It would also be nice to have the man page that describes RCS file format,
> not just the section 1 man pages for the commands.

Bill and I (mostly *me*) had a number of problems is getting this
stuff out.  A munged src.zoo got to Bill, and he posted what manpages
he could unpack.  What is supposed to happen when he gets to it, is
post all the sources, and docs, and manpages. In this set of stuff
there is a rcsfiles.5l manpage. This is what you want. In the mean
time, go to your nearest unix box, and type man -k rcs (or something
like that on sysV).

On 20 Aug 90 9:47:13 BST,
D.R.Allum@gdt.bath.ac.uk (Dave Allum) said:
>
> I, and I am sure many others, would gratly appreciate PostScript versions
> of the documentation.

I will format all the docs and manpages, and put then somewhere for
ftp. I am quite busy right now, so I may take 1-2 weeks.


Lastly, there have been two makes mention, and one posted, the other
in the queue. Dennis Vadura's Dmake supports RSC under MSDOS. This is
the make I use. The is a version of GNU-Make which also supports RCS
in the queue. These have very different flavors, they are both coverd
by the GPL. Dmake is the actual starting point for MKS's make.


--

Frank Kolakowski 

======================================================================
|lfk@athena.mit.edu                     ||      Lee F. Kolakowski    |
|lfk@eastman2.mit.edu                   ||	M.I.T.		     |
|kolakowski@wccf.mit.edu                ||	Dept of Chemistry    |
|lfk@mbio.med.upenn.edu		        ||	Room 18-506	     |
|lfk@hx.lcs.mit.edu                     ||	77 Massachusetts Ave.|
|AT&T:  1-617-253-1866                  ||	Cambridge, MA 02139  |
|--------------------------------------------------------------------|
|                         #include <woes.h>         		     |
|		           One-Liner Here!                           |
======================================================================

michael@wicat.UUCP (Mike Weeks) (08/23/90)

lfk@athena.mit.edu (Lee F Kolakowski) writes:
>There have been a number of comments about DOS RCS in this newsgroup 
>and in my mailbox. Here are the responses. This may be a bit long
>so if you are not interested in RCS for DOS, press ``n'' now.

>BUG #3:
>On 20 Aug 90 10:24:58 BST,
>I.Sparry@gdt.bath.ac.uk (Icarus Sparry) said:
>> I seem to have found a bug.
>> 1) Check in a file, say fred
>> 2) Enable stricy locking 'rcs -L fred'
>> 3) Checkout fred, without locking 'co fred'
>> 4) Checkout fred with lock. 'co -l fred'
>> The last fail, as it can't unlink the readonly copy.
>> The fix would be to chmod the file first, and then unlink, or else blame MS
>> for a faulty 'unlink' routine.

>I have not had a chance to investigate this. But I put it here FYI.

I have found a similar problem on Novell Netware.  With strict locking
enable, if I co a file, it is created with read-only access and I cannot
edit it unless I chmod it.  The RCS/xxx file is also created with read-only
access and I cannot do a co -l xxx because co is unable to write to the
file.  I am waiting for the sources so I can check this out but is anyone
else using rcs with Netware successfully?  I can do all the same functions
on a local drive just fine but when I go to a networked disk, I'm out of
it.

Thanks,
Mike Weeks
Wicat Systems, Inc.

strobl@gmdzi.UUCP (Wolfgang Strobl) (08/23/90)

lfk@athena.mit.edu (Lee F Kolakowski) writes:

>2) On Unix a file is a file. And "Text" files are no different
>   as most of us know unix files have lines therminated by a single 
>   '\n'. MSDOS (enlightend as it may be) differntiates between
>   text files and binary files. ...

This is a misleading description. MSDOS doesn't differentiate here
between text and binary files, either. MSDOS inherited the standard
conforming ASCII newline sequence Carriage Return / Line Feed
from CP/M. Unix used the simpler, but nonstandard interpretation of
Line Feed as a single character newline indicator. 

The MSDOS open call does not have a text/binary flag. This flag
and the translation CR/LF <-> LF are a feature of the libraries
which come with the current MSDOS C compilers and are there to
make the C programmers interface to the file system Unix
compatible.

Of course, this is a minor point. But I am a bit tired to see 
features where Unix is actually compatible to most versions
of itself ;-) presented as inherent Good Things, when they
are in fact arbitrary implementation decisions.

Wolfgang Strobl
#include <std.disclaimer.hpp>

davidsen@sixhub.UUCP (Wm E. Davidsen Jr) (08/23/90)

In article <3235@gmdzi.UUCP> strobl@gmdzi.UUCP (Wolfgang Strobl) writes:

|This is a misleading description. MSDOS doesn't differentiate here
|between text and binary files, either. MSDOS inherited the standard
|conforming ASCII newline sequence Carriage Return / Line Feed
|from CP/M. Unix used the simpler, but nonstandard interpretation of
|Line Feed as a single character newline indicator. 
|
|The MSDOS open call does not have a text/binary flag. This flag
|and the translation CR/LF <-> LF are a feature of the libraries
|which come with the current MSDOS C compilers and are there to
|make the C programmers interface to the file system Unix
|compatible.

  Actually this is the way the C language is supposed to work, and has
little to do with DOS. For text files whatever separates records shows
up on input as a \n character. In binary mode the data read is what's in
the file. Other operating systems like VMS or GCOS use other
conventions, such as counts of characters in a record, or various
characters separating lines.


| 
|Of course, this is a minor point. But I am a bit tired to see  
|features where Unix is actually compatible to most versions 
|of itself ;-) presented as inherent Good Things, when they 
|are in fact arbitrary implementation decisions. 
|

  There is an ANSI standard X3J11 which defines this. Followup to
comp.lang.c. 
-- 
bill davidsen - davidsen@sixhub.uucp (uunet!crdgw1!sixhub!davidsen)
    sysop *IX BBS and Public Access UNIX
    moderator of comp.binaries.ibm.pc and 80386 mailing list
"Stupidity, like virtue, is its own reward" -me

lance@hermix.UUCP (Lance Ellinghouse) (03/05/91)

Can someone tell me where I can FTP the sources/binaries to
RCS for DOS? the sources would be best as I have to add some 
custom things to it.

Thanks,
Lance

 -----------------------------
|Lance Ellinghouse            |
|Mark V Systems, Ltd.         |
|hermix!lance@anes.ucla.edu   |
 -----------------------------