Date: Sun, 23 Jul 2000 17:49:57 -0500 (CDT) From: Tim Zingelman <zingelman@fnal.gov> To: John Baldwin <jhb@pike.osd.bsdi.com> Cc: Kris Kennaway <kris@FreeBSD.ORG>, stable@FreeBSD.ORG Subject: Re: sysinstall resetting USA_RESIDENT=NO Message-ID: <Pine.GSO.4.21.0007231742520.28714-200000@nova.fnal.gov> In-Reply-To: <200007232232.PAA25039@pike.osd.bsdi.com>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
On Sun, 23 Jul 2000, John Baldwin wrote:
> No, he's right. sysinstall is definitely broken in this respect, and
> I'm definitely interested in your patches to fix it. :)
The patches are attached...
In either the case that no make.conf exists, or one exists without a
USA_RESIDENT line in it, the line is added, regardless of if I have
confirmed that the default NO is correct or not.
In the case that make.conf has a USA_RESIDENT line, I only overwrite that
line if the user has answered the question 'are you really a us resident'.
Let me know if you have any questions. Thanks.
- Tim
[-- Attachment #2 --]
Index: config.c
===================================================================
RCS file: /usr/CVS/src/release/sysinstall/config.c,v
retrieving revision 1.156.2.3
diff -c -r1.156.2.3 config.c
*** config.c 2000/07/16 17:29:58 1.156.2.3
--- config.c 2000/07/23 22:38:29
***************
*** 371,378 ****
char *lines[MAX_LINES];
int i, nlines;
FILE *fp;
! if (!file_readable(config)) {
char *line = malloc(21);
sprintf(line, "USA_RESIDENT=%s\n", USAResident ? "YES" : "NO");
lines[0] = line;
--- 371,379 ----
char *lines[MAX_LINES];
int i, nlines;
FILE *fp;
+ bool needResLine=TRUE;
! if (!file_readable(config)) { /* create initial file */
char *line = malloc(21);
sprintf(line, "USA_RESIDENT=%s\n", USAResident ? "YES" : "NO");
lines[0] = line;
***************
*** 384,393 ****
return;
for (i = 0; i < nlines; i++) {
if (!strncmp(lines[i], "USA_RESIDENT", 12)) {
! free(lines[i]);
! lines[i] = malloc(21); /* big enough */
! sprintf(lines[i], "USA_RESIDENT=%s\n", USAResident ? "YES" : "NO");
}
}
}
if ((fp = fopen(config, "w")) != NULL) {
--- 385,402 ----
return;
for (i = 0; i < nlines; i++) {
if (!strncmp(lines[i], "USA_RESIDENT", 12)) {
! if (USAResValid) { /* we have asked, so lets overwrite */
! free(lines[i]);
! lines[i] = malloc(21); /* big enough */
! sprintf(lines[i], "USA_RESIDENT=%s\n", USAResident ? "YES" : "NO");
! }
! needResLine=FALSE;
}
+ }
+ if (needResLine) { /* add USA_RESIDENT line to existing file */
+ char *line = malloc(21);
+ sprintf(line, "USA_RESIDENT=%s\n", USAResident ? "YES" : "NO");
+ lines[nlines++] = line;
}
}
if ((fp = fopen(config, "w")) != NULL) {
Index: dist.c
===================================================================
RCS file: /usr/CVS/src/release/sysinstall/dist.c,v
retrieving revision 1.175.2.2
diff -c -r1.175.2.2 dist.c
*** dist.c 2000/07/20 01:53:39 1.175.2.2
--- dist.c 2000/07/23 06:21:01
***************
*** 405,410 ****
--- 405,411 ----
dialog_clear_norefresh();
USAResident = !msgYesNo("Are you actually resident in the United States?");
+ USAResValid = TRUE;
distVerifyFlags();
return i | DITEM_REDRAW | DITEM_RESTORE;
Index: globals.c
===================================================================
RCS file: /usr/CVS/src/release/sysinstall/globals.c,v
retrieving revision 1.24
diff -c -r1.24 globals.c
*** globals.c 2000/03/12 03:57:25 1.24
--- globals.c 2000/07/23 06:20:24
***************
*** 48,53 ****
--- 48,54 ----
Boolean ColorDisplay; /* Are we on a color display? */
Boolean OnVTY; /* Are we on a VTY? */
Boolean USAResident; /* Are we cryptographically challenged? */
+ Boolean USAResValid; /* Have we asked yet? */
Variable *VarHead; /* The head of the variable chain */
Device *mediaDevice; /* Where we're installing from */
int BootMgr; /* Which boot manager we're using */
***************
*** 70,73 ****
--- 71,75 ----
mediaDevice = NULL;
RunningAsInit = FALSE;
USAResident = FALSE;
+ USAResValid = FALSE;
}
Index: sysinstall.h
===================================================================
RCS file: /usr/CVS/src/release/sysinstall/sysinstall.h,v
retrieving revision 1.186.2.6
diff -c -r1.186.2.6 sysinstall.h
*** sysinstall.h 2000/07/21 20:43:48 1.186.2.6
--- sysinstall.h 2000/07/23 06:24:46
***************
*** 347,352 ****
--- 347,353 ----
extern Boolean ColorDisplay; /* Are we on a color display? */
extern Boolean OnVTY; /* On a syscons VTY? */
Boolean USAResident; /* Are we cryptographically challenged? */
+ Boolean USAResValid; /* Have we asked yet? */
extern Variable *VarHead; /* The head of the variable chain */
extern Device *mediaDevice; /* Where we're getting our distribution from */
extern unsigned int Dists; /* Which distributions we want */
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.GSO.4.21.0007231742520.28714-200000>
