SEND-PR: -*- send-pr -*-
SEND-PR: Lines starting with `SEND-PR' will be removed automatically, as
SEND-PR: will all comments (text enclosed in `<' and `>').
SEND-PR:
SEND-PR: Choose from the following categories:
SEND-PR:
SEND-PR: contrib cvs doc pcl-cvs portability
SEND-PR:
SEND-PR:
To: [EMAIL PROTECTED]
Subject: cvs-1.10.8/lib/yesno.c
From: [EMAIL PROTECTED]
Reply-To: [EMAIL PROTECTED]
X-send-pr-version: 3.2
>Submitter-Id: net
>Originator: [EMAIL PROTECTED]
>Organization: Stellacore Corporation
net
>Confidential: no
>Synopsis: yesno() always and instantly returns 'no' (e.g. after 'cvs release'
>command)
>Severity: <[ non-critical | serious | critical ] (one line)> serious
>Priority: <[ low | medium | high ] (one line)> high
>Category: cvs <name of the product (one line)>
>Class: <[ sw-bug | doc-bug | change-request | support ] (one line)> sw-bug
>Release: cvs-1.10.8
>Environment:
<machine, os, target, libraries (multiple lines)>
Pentium-III
Linux 2.2.14-15mdksmp #1 SMP Tue Jan 4 21:36:33 CET 2000 i686 unknown
(Mandrake 7.0)
gcc --version ==> 2.95.2
ldd /usr/bin/cvs
libcrypt.so.1 => /lib/libcrypt.so.1 (0x4001b000)
libc.so.6 => /lib/libc.so.6 (0x40048000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
System: Linux 2.2.14-15mdksmp #1 SMP Tue Jan 4 21:36:33 CET 2000 i686 unknown
Architecture: i686
>Description:
<precise description of the problem (multiple lines)>
Symptom: First detected after issue of 'cvs release ...' command. This produced
(for test case at hand)
cvs release -d proglib/
? myNewFile
M proglib.txt
You have [1] altered files in this repository.
Are you sure you want to release (and delete) directory `proglib/': ** `release'
aborted by user choice.
The issues is that the 'aborted' message occurs spontaneously - withOUT the
opportunity to type anything.
This is related to the behavior of 'getchar()' within the '..../lib/yesno.c'
module as follows (Bug in getchar()?). The distributed code for yesno.c
includes:
---
c = getchar ();
rv = (c == 'y') || (c == 'Y');
while (c != EOF && c != '\n')
c = getchar ();
---
On this system, the first getchar() returns EOF - e.g. it is NON-BLOCKING.
Therefore, 'rv' is set immediately to zero (an 'answer' of NO) and the
while loop is never executed. As a result, yes/no immediately and always
returns a 'NO' (zero) value.
On this system, I hacked around this by replacing the above lines of code
with: (note EOFs are therefore always ignored)
---
rv = 0; /* assume 'no' */
while (1)
{
c = getchar ();
/* skip initial EOF (bug in getchar()?) */
if (c == EOF)
continue;
/* terminate answer entry at new line */
if (c == '\n')
break;
/* accept string if first character is a 'y' or 'Y' */
if ( (nchar == 0) && ((c == 'y') || (c == 'Y')) )
rv = 1;
/* increment character count - (no longer possible to get yes condition) */
nchar++;
}
---
>How-To-Repeat:
<code/input/activities to reproduce the problem (multiple lines)>
Apparently, by running CVS (1.10.7 or 1.10.8) on a fresh Mandrake 7.0 linux
release.
>Fix:
<how to correct or work around the problem, if known (multiple lines)>
Ref code above - or "fix" the getchar() behavior somehow.