Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Feb 1997 07:20:02 -0800 (PST)
From:      John-Mark Gurney <jmg@nike.efn.org>
To:        freebsd-bugs
Subject:   Re: bin/777 patch had problems with closed tty... 
Message-ID:  <199702111520.HAA26019@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/777; it has been noted by GNATS.

From: John-Mark Gurney <jmg@nike.efn.org>
To: Giles Lean <giles@nemeton.com.au>
Cc: freebsd-gnats-submit@freefall.freebsd.org,
        FreeBSD Current <freebsd-current@freebsd.org>
Subject: Re: bin/777 patch had problems with closed tty... 
Date: Tue, 11 Feb 1997 07:12:27 -0800 (PST)

 On Tue, 11 Feb 1997, Giles Lean wrote:
 
 > 
 > On Tue, 11 Feb 1997 00:30:02 -0800 (PST)  John-Mark Gurney wrote:
 > 
 > > comments?  is it ok if we change the default??  
 > > 
 > 
 > I don't like changing the default.  I'd rather see no fix than do
 > this.
 > 
 > I sent in an alternative patch that is ugly but does solve the problem
 > without much code change.
 
 heh...  I see what you mean...
 
 well... I think I have a patch that will please every one :)...
 
 basicly what this does is adds a return value to ask which you can
 check...  ask will now return 0 if there was an "error" when reading... 
 then you can check this return value and if it's 0 know that you should do
 something that will continue processesing... else it will return 1 meaning
 success... 
 
 I've also modified the 'default' fall back case to return 0 for an error
 also.. that way it actually fixes the problem else it would still exist...
 
 anybody have problems with this patch?
 
 here's the patch:
 Index: pch.c
 ===================================================================
 RCS file: /usr/cvs/src/gnu/usr.bin/patch/pch.c,v
 retrieving revision 1.8
 diff -c -r1.8 pch.c
 *** pch.c	1996/04/12 11:37:32	1.8
 --- pch.c	1997/02/11 15:00:09
 ***************
 *** 231,239 ****
   	    filearg[0] = fetchname(buf, 0, FALSE);
   	}
   	if (filearg[0] == Nullch) {
 ! 	    ask1("No file found--skip this patch? [n] ");
 ! 	    if (*buf != 'y') {
 ! 		continue;
   	    }
   	    if (verbose)
   		say1("Skipping patch...\n");
 --- 231,240 ----
   	    filearg[0] = fetchname(buf, 0, FALSE);
   	}
   	if (filearg[0] == Nullch) {
 ! 	    if (ask1("No file found--skip this patch? [n] ")) {
 ! 	    	if (*buf != 'y') {
 ! 		    continue;
 ! 	    	}
   	    }
   	    if (verbose)
   		say1("Skipping patch...\n");
 Index: util.c
 ===================================================================
 RCS file: /usr/cvs/src/gnu/usr.bin/patch/util.c,v
 retrieving revision 1.2
 diff -c -r1.2 util.c
 *** util.c	1995/05/30 05:02:37	1.2
 --- util.c	1997/02/11 15:08:12
 ***************
 *** 227,233 ****
   
   /* Get a response from the user, somehow or other. */
   
 ! void
   ask(pat,arg1,arg2,arg3)
   char *pat;
   long arg1,arg2,arg3;
 --- 227,233 ----
   
   /* Get a response from the user, somehow or other. */
   
 ! int
   ask(pat,arg1,arg2,arg3)
   char *pat;
   long arg1,arg2,arg3;
 ***************
 *** 260,266 ****
       }
       else {				/* no terminal at all--default it */
   	buf[0] = '\n';
 ! 	r = 1;
       }
       if (r <= 0)
   	buf[0] = 0;
 --- 260,268 ----
       }
       else {				/* no terminal at all--default it */
   	buf[0] = '\n';
 ! 	buf[1] = 0;
 ! 	say1(buf);
 ! 	return 0;			/* signal possible error */
       }
       if (r <= 0)
   	buf[0] = 0;
 ***************
 *** 268,273 ****
 --- 270,280 ----
   	buf[r] = '\0';
       if (!tty2)
   	say1(buf);
 + 
 +     if (r <= 0)
 + 	return 0;			/* if there was an error, return it */
 +     else
 + 	return 1;
   }
   #endif /* lint */
   
 Index: util.h
 ===================================================================
 RCS file: /usr/cvs/src/gnu/usr.bin/patch/util.h,v
 retrieving revision 1.2
 diff -c -r1.2 util.h
 *** util.h	1995/05/30 05:02:38	1.2
 --- util.h	1997/02/11 14:49:19
 ***************
 *** 86,92 ****
   void say();
   void fatal();
   void pfatal();
 ! void ask();
   char *savestr();
   void set_signals();
   void ignore_signals();
 --- 86,92 ----
   void say();
   void fatal();
   void pfatal();
 ! int ask();
   char *savestr();
   void set_signals();
   void ignore_signals();
 
 
 John-Mark
 
 gurney_j@efn.org
 http://resnet.uoregon.edu/~gurney_j/
 Modem/FAX: (541) 683-6954   (FreeBSD Box)
 
 Live in Peace, destroy Micro$oft, support free software, run FreeBSD (unix)
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199702111520.HAA26019>