[Pkg-shadow-commits] r1496 - in upstream/trunk: . lib libmisc src

nekral-guest at alioth.debian.org nekral-guest at alioth.debian.org
Wed Dec 26 16:50:38 UTC 2007


Author: nekral-guest
Date: 2007-12-26 16:50:38 +0000 (Wed, 26 Dec 2007)
New Revision: 1496

Added:
   upstream/trunk/libmisc/yesno.c
Modified:
   upstream/trunk/ChangeLog
   upstream/trunk/lib/prototypes.h
   upstream/trunk/libmisc/Makefile.am
   upstream/trunk/libmisc/fields.c
   upstream/trunk/src/grpck.c
   upstream/trunk/src/pwck.c
Log:
Merge Debian's patch 466_fflush-prompt
	* libmisc/Makefile.am, lib/prototypes.h, libmisc/yesno.c, src/grpck.c,
	src/pwck.c: move yes_or_no() from grpck/pwck to a separate
	libmisc/yesno.c (with a read_only argument).
	* libmisc/fields.c, libmisc/yesno.c: Make sure stdout is flushed before
	reading the user's answer.


Modified: upstream/trunk/ChangeLog
===================================================================
--- upstream/trunk/ChangeLog	2007-12-26 15:10:48 UTC (rev 1495)
+++ upstream/trunk/ChangeLog	2007-12-26 16:50:38 UTC (rev 1496)
@@ -1,5 +1,14 @@
 2007-12-26  Nicolas François  <nicolas.francois at centraliens.net>
 
+	Merge Debian's patch 466_fflush-prompt
+	* libmisc/Makefile.am, lib/prototypes.h, libmisc/yesno.c, src/grpck.c,
+	src/pwck.c: move yes_or_no() from grpck/pwck to a separate
+	libmisc/yesno.c (with a read_only argument).
+	* libmisc/fields.c, libmisc/yesno.c: Make sure stdout is flushed before
+	reading the user's answer.
+
+2007-12-26  Nicolas François  <nicolas.francois at centraliens.net>
+
 	Merge Debian's patch 480_getopt_args_reorder
 	* NEWS, src/su.c: su's arguments are now reordered.
 

Modified: upstream/trunk/lib/prototypes.h
===================================================================
--- upstream/trunk/lib/prototypes.h	2007-12-26 15:10:48 UTC (rev 1495)
+++ upstream/trunk/lib/prototypes.h	2007-12-26 16:50:38 UTC (rev 1496)
@@ -194,4 +194,7 @@
 /* xgetspnam.c */
 extern struct spwd *xgetspnam(const char *);
 
+/* yesno.c */
+extern int yes_or_no (int read_only);
+
 #endif				/* _PROTOTYPES_H */

Modified: upstream/trunk/libmisc/Makefile.am
===================================================================
--- upstream/trunk/libmisc/Makefile.am	2007-12-26 15:10:48 UTC (rev 1495)
+++ upstream/trunk/libmisc/Makefile.am	2007-12-26 16:50:38 UTC (rev 1496)
@@ -55,4 +55,5 @@
 	xgetgrnam.c \
 	xgetgrgid.c \
 	xgetspnam.c \
-	xmalloc.c
+	xmalloc.c \
+	yesno.c

Modified: upstream/trunk/libmisc/fields.c
===================================================================
--- upstream/trunk/libmisc/fields.c	2007-12-26 15:10:48 UTC (rev 1495)
+++ upstream/trunk/libmisc/fields.c	2007-12-26 16:50:38 UTC (rev 1496)
@@ -71,6 +71,7 @@
 		maxsize = sizeof (newf);
 
 	printf ("\t%s [%s]: ", prompt, buf);
+	fflush (stdout);
 	if (fgets (newf, maxsize, stdin) != newf)
 		return;
 

Added: upstream/trunk/libmisc/yesno.c
===================================================================
--- upstream/trunk/libmisc/yesno.c	                        (rev 0)
+++ upstream/trunk/libmisc/yesno.c	2007-12-26 16:50:38 UTC (rev 1496)
@@ -0,0 +1,75 @@
+/*
+ * Copyright 1992 - 1994, Julianne Frances Haugh
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Julianne F. Haugh nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Common code for yes/no prompting
+ *
+ * Used by pwck.c and grpck.c
+ */
+
+#include "config.h"
+
+#ident "$Id$"
+
+#include <stdio.h>
+#include "prototypes.h"
+
+/*
+ * yes_or_no - get answer to question from the user
+ *
+ *	It returns 0 if no.
+ *
+ *	If the read_only flag is set, it will print No, and will return 0.
+ */
+int yes_or_no (int read_only)
+{
+	char buf[80];
+
+	/*
+	 * In read-only mode all questions are answered "no".
+	 */
+	if (read_only) {
+		printf (_("No\n"));
+		return 0;
+	}
+
+	/*
+	 * Typically, there's a prompt on stdout, sometimes unflushed.
+	 */
+	fflush (stdout);
+
+	/*
+	 * Get a line and see what the first character is.
+	 */
+	/* TODO: use gettext */
+	if (fgets (buf, sizeof buf, stdin))
+		return buf[0] == 'y' || buf[0] == 'Y';
+
+	return 0;
+}


Property changes on: upstream/trunk/libmisc/yesno.c
___________________________________________________________________
Name: svn:keywords
   + Id

Modified: upstream/trunk/src/grpck.c
===================================================================
--- upstream/trunk/src/grpck.c	2007-12-26 15:10:48 UTC (rev 1495)
+++ upstream/trunk/src/grpck.c	2007-12-26 16:50:38 UTC (rev 1496)
@@ -74,7 +74,6 @@
 
 /* local function prototypes */
 static void usage (void);
-static int yes_or_no (void);
 static void delete_member (char **, const char *);
 
 /*
@@ -91,30 +90,6 @@
 }
 
 /*
- * yes_or_no - get answer to question from the user
- */
-static int yes_or_no (void)
-{
-	char buf[80];
-
-	/*
-	 * In read-only mode all questions are answered "no".
-	 */
-	if (read_only) {
-		printf (_("No\n"));
-		return 0;
-	}
-
-	/*
-	 * Get a line and see what the first character is.
-	 */
-	if (fgets (buf, sizeof buf, stdin))
-		return buf[0] == 'y' || buf[0] == 'Y';
-
-	return 0;
-}
-
-/*
  * delete_member - delete an entry in a list of members
  */
 static void delete_member (char **list, const char *member)
@@ -296,7 +271,7 @@
 			/*
 			 * prompt the user to delete the entry or not
 			 */
-			if (!yes_or_no ())
+			if (!yes_or_no (read_only))
 				continue;
 
 			/*
@@ -352,7 +327,7 @@
 			/*
 			 * prompt the user to delete the entry or not
 			 */
-			if (yes_or_no ())
+			if (yes_or_no (read_only))
 				goto delete_gr;
 		}
 
@@ -389,7 +364,7 @@
 				grp->gr_name, grp->gr_mem[i]);
 			printf (_("delete member '%s'? "), grp->gr_mem[i]);
 
-			if (!yes_or_no ())
+			if (!yes_or_no (read_only))
 				continue;
 
 			SYSLOG ((LOG_INFO, "delete member '%s' group '%s'",
@@ -414,7 +389,7 @@
 				printf (_("add group '%s' in %s ?"),
 					grp->gr_name, sgr_file);
 				errors++;
-				if (yes_or_no ()) {
+				if (yes_or_no (read_only)) {
 					struct sgrp sg;
 					struct group gr;
 					static char *empty = NULL;
@@ -501,7 +476,7 @@
 			/*
 			 * prompt the user to delete the entry or not
 			 */
-			if (!yes_or_no ())
+			if (!yes_or_no (read_only))
 				continue;
 
 			/*
@@ -557,7 +532,7 @@
 			/*
 			 * prompt the user to delete the entry or not
 			 */
-			if (yes_or_no ())
+			if (yes_or_no (read_only))
 				goto delete_sg;
 		}
 
@@ -570,7 +545,7 @@
 				grp_file);
 			printf (_("delete line '%s'? "), sge->line);
 			errors++;
-			if (yes_or_no ())
+			if (yes_or_no (read_only))
 				goto delete_sg;
 		} else {
 			/**
@@ -612,7 +587,7 @@
 			printf (_("delete administrative member '%s'? "),
 				sgr->sg_adm[i]);
 
-			if (!yes_or_no ())
+			if (!yes_or_no (read_only))
 				continue;
 
 			SYSLOG ((LOG_INFO,
@@ -640,7 +615,7 @@
 				sgr->sg_name, sgr->sg_mem[i]);
 			printf (_("delete member '%s'? "), sgr->sg_mem[i]);
 
-			if (!yes_or_no ())
+			if (!yes_or_no (read_only))
 				continue;
 
 			SYSLOG ((LOG_INFO,

Modified: upstream/trunk/src/pwck.c
===================================================================
--- upstream/trunk/src/pwck.c	2007-12-26 15:10:48 UTC (rev 1495)
+++ upstream/trunk/src/pwck.c	2007-12-26 16:50:38 UTC (rev 1496)
@@ -73,7 +73,6 @@
 
 /* local function prototypes */
 static void usage (void);
-static int yes_or_no (void);
 
 /*
  * usage - print syntax message and exit
@@ -86,31 +85,6 @@
 }
 
 /*
- * yes_or_no - get answer to question from the user
- */
-static int yes_or_no (void)
-{
-	char buf[80];
-
-	/*
-	 * In read-only mode all questions are answered "no".
-	 */
-
-	if (read_only) {
-		printf (_("No\n"));
-		return 0;
-	}
-
-	/*
-	 * Get a line and see what the first character is.
-	 */
-	if (fgets (buf, sizeof buf, stdin))
-		return buf[0] == 'y' || buf[0] == 'Y';
-
-	return 0;
-}
-
-/*
  * pwck - verify password file integrity
  */
 int main (int argc, char **argv)
@@ -261,7 +235,7 @@
 			/*
 			 * prompt the user to delete the entry or not
 			 */
-			if (!yes_or_no ())
+			if (!yes_or_no (read_only))
 				continue;
 
 			/*
@@ -316,7 +290,7 @@
 			/*
 			 * prompt the user to delete the entry or not
 			 */
-			if (yes_or_no ())
+			if (yes_or_no (read_only))
 				goto delete_pw;
 		}
 
@@ -383,7 +357,7 @@
 				printf (_("add user '%s' in %s? "),
 					pwd->pw_name, spw_file);
 				errors++;
-				if (yes_or_no ()) {
+				if (yes_or_no (read_only)) {
 					struct spwd sp;
 					struct passwd pw;
 
@@ -462,7 +436,7 @@
 			/*
 			 * prompt the user to delete the entry or not
 			 */
-			if (!yes_or_no ())
+			if (!yes_or_no (read_only))
 				continue;
 
 			/*
@@ -517,7 +491,7 @@
 			/*
 			 * prompt the user to delete the entry or not
 			 */
-			if (yes_or_no ())
+			if (yes_or_no (read_only))
 				goto delete_spw;
 		}
 
@@ -538,7 +512,7 @@
 			/*
 			 * prompt the user to delete the entry or not
 			 */
-			if (yes_or_no ())
+			if (yes_or_no (read_only))
 				goto delete_spw;
 		}
 




More information about the Pkg-shadow-commits mailing list