[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[PATCH] main-menu buglets



Two bugs here:
1. printf to stdout is bad, it mucks with debconf and we die, changed to stderr.
2. If a postinst failed udpkg marks the package as half-configured.  Without
this patch main-menu will then refuse to run the postinst again, because it only
cares about installed and unpacked packages.  That's no fun b/c the module
failed, and I'd like to try again. Maybe it is udpkg's fault, but I think it's 
main-menu's.

-David


Index: main-menu.c
===================================================================
RCS file: /cvs/debian-boot/debian-installer/main-menu/main-menu.c,v
retrieving revision 1.22
diff -u -r1.22 main-menu.c
--- main-menu.c	2000/12/12 04:15:16	1.22
+++ main-menu.c	2000/12/31 13:53:26
@@ -176,12 +176,12 @@
 	struct package_t *head = NULL, *tail = NULL;
 	
 	if (p->status == installed) {
-		printf("already installed\n");
+		fprintf(stderr, "already installed\n");
 		/* The menu item is already configured, so reconfigure it. */
 		sprintf(configcommand, "dpkg-reconfigure %s", p->package);
 		return ! SYSTEM(configcommand);
 	}
-	else if (p->status == unpacked) {
+	else if (p->status == unpacked || p->status == half_configured) {
 		/*
 		 * The menu item is not yet configured. Make sure everything
 		 * it depends on is configured, then configure it.
@@ -189,7 +189,7 @@
 		order(p, &head, &tail);
 		order_done(head);
 		for (p = head; p; p = p->next) {
-			if (p->status == unpacked) {
+			if (p->status == unpacked || p->status == half_configured) {
 				sprintf(configcommand, DPKG_CONFIGURE_COMMAND " %s", p->package);
 				if (SYSTEM(configcommand) != 0)
 					return 0; /* give up on failure */
Index: main-menu.h
===================================================================
RCS file: /cvs/debian-boot/debian-installer/main-menu/main-menu.h,v
retrieving revision 1.17
diff -u -r1.17 main-menu.h
--- main-menu.h	2000/12/21 22:58:27	1.17
+++ main-menu.h	2000/12/31 13:53:26
@@ -18,7 +18,7 @@
 #define MAIN_MENU	"debian-installer/main-menu"
 #define DPKG_CONFIGURE_COMMAND "/usr/bin/udpkg --configure"
 
-typedef enum { unpacked, installed, other } package_status;
+typedef enum { unpacked, installed, half_configured, other } package_status;
 
 struct package_t {
 	char *package;
Index: status.c
===================================================================
RCS file: /cvs/debian-boot/debian-installer/main-menu/status.c,v
retrieving revision 1.14
diff -u -r1.14 status.c
--- status.c	2000/11/29 02:30:30	1.14
+++ status.c	2000/12/31 13:53:26
@@ -47,6 +47,9 @@
 			if (strstr(buf, " unpacked")) {
 				p->status = unpacked;
 			}
+			else if (strstr(buf, " half-configured")) {
+				p->status = half_configured;
+			}
 			else if (strstr(buf, " installed")) {
 				p->status = installed;
 			}



Reply to: