Module Name: src
Committed By: martin
Date: Tue Aug 27 14:11:00 UTC 2019
Modified Files:
src/usr.sbin/sysinst: defs.h upgrade.c util.c
Log Message:
Do not offer to upgared the "current system" if we are running off a CD
(i.e. / is mounted read-only)
To generate a diff of this commit:
cvs rdiff -u -r1.43 -r1.44 src/usr.sbin/sysinst/defs.h
cvs rdiff -u -r1.12 -r1.13 src/usr.sbin/sysinst/upgrade.c
cvs rdiff -u -r1.31 -r1.32 src/usr.sbin/sysinst/util.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.sbin/sysinst/defs.h
diff -u src/usr.sbin/sysinst/defs.h:1.43 src/usr.sbin/sysinst/defs.h:1.44
--- src/usr.sbin/sysinst/defs.h:1.43 Wed Aug 7 10:08:04 2019
+++ src/usr.sbin/sysinst/defs.h Tue Aug 27 14:11:00 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: defs.h,v 1.43 2019/08/07 10:08:04 martin Exp $ */
+/* $NetBSD: defs.h,v 1.44 2019/08/27 14:11:00 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -712,6 +712,7 @@ bool parts_use_wholedisk(struct disk_par
bool md_parts_use_wholedisk(struct disk_partitions*);
/* from util.c */
+bool root_is_read_only(void);
void get_ptn_alignment(const struct disk_partitions *parts, daddr_t *align, daddr_t *p0off);
char* str_arg_subst(const char *, size_t, const char **);
void msg_display_subst(const char *, size_t, ...);
Index: src/usr.sbin/sysinst/upgrade.c
diff -u src/usr.sbin/sysinst/upgrade.c:1.12 src/usr.sbin/sysinst/upgrade.c:1.13
--- src/usr.sbin/sysinst/upgrade.c:1.12 Tue Jul 23 18:13:40 2019
+++ src/usr.sbin/sysinst/upgrade.c Tue Aug 27 14:11:00 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: upgrade.c,v 1.12 2019/07/23 18:13:40 martin Exp $ */
+/* $NetBSD: upgrade.c,v 1.13 2019/08/27 14:11:00 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -64,7 +64,7 @@ do_upgrade(void)
get_ramsize();
- if (find_disks(msg_string(MSG_upgrade), true) < 0)
+ if (find_disks(msg_string(MSG_upgrade), !root_is_read_only()) < 0)
return;
if (pm->parts == NULL && !pm->cur_system) {
@@ -208,7 +208,7 @@ do_reinstall_sets()
if (!ask_noyes(NULL))
return;
- if (find_disks(msg_string(MSG_reinstall), true) < 0)
+ if (find_disks(msg_string(MSG_reinstall), !root_is_read_only()) < 0)
return;
if (!pm->cur_system) {
Index: src/usr.sbin/sysinst/util.c
diff -u src/usr.sbin/sysinst/util.c:1.31 src/usr.sbin/sysinst/util.c:1.32
--- src/usr.sbin/sysinst/util.c:1.31 Sat Aug 17 18:03:12 2019
+++ src/usr.sbin/sysinst/util.c Tue Aug 27 14:11:00 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: util.c,v 1.31 2019/08/17 18:03:12 martin Exp $ */
+/* $NetBSD: util.c,v 1.32 2019/08/27 14:11:00 martin Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -537,6 +537,17 @@ boot_media_still_needed(void)
return 0;
}
+bool
+root_is_read_only(void)
+{
+ struct statvfs sb;
+
+ if (statvfs("/", &sb) == 0)
+ return sb.f_flag & ST_RDONLY;
+
+ return false;
+}
+
/*
* Get from a CDROM distribution.
* Also used on "installation using bootable install media"