From a795457252de83a34d8802f0e37d440ba9505198 Mon Sep 17 00:00:00 2001 From: Thomas Bushnell Date: Mon, 30 Jun 1997 21:58:05 +0000 Subject: Mon Jun 30 17:26:38 1997 Thomas Bushnell, n/BSG * diskfs.h (diskfs_hard_readonly): New variable. (diskfs_readonly): Doc change. * readonly.c (diskfs_readonly): Provide initialized declaration. (diskfs_check_readonly): If we cannot write the media and so we switch to readonly, set diskfs_hard_readonly too. (diskfs_set_readonly): If diskfs_hard_readonly is set, then inhibit any attempt to clear readonly status. --- libdiskfs/readonly.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'libdiskfs/readonly.c') diff --git a/libdiskfs/readonly.c b/libdiskfs/readonly.c index 5d5d9ba0..e4ba4401 100644 --- a/libdiskfs/readonly.c +++ b/libdiskfs/readonly.c @@ -1,6 +1,6 @@ /* Change to/from read-only - Copyright (C) 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. Written by Miles Bader @@ -26,6 +26,8 @@ #include "priv.h" int _diskfs_diskdirty; +int diskfs_readonly = 0; +int diskfs_hard_readonly = 0; int diskfs_check_readonly () @@ -44,7 +46,7 @@ diskfs_check_readonly () error (0, 0, "%s: MEDIA NOT WRITABLE; switching to READ-ONLY", diskfs_disk_name ?: "-"); - diskfs_readonly = 1; + diskfs_hard_readonly = diskfs_readonly = 1; return 1; } _diskfs_diskdirty = 1; @@ -62,6 +64,9 @@ diskfs_set_readonly (int readonly) { error_t err = 0; + if (diskfs_hard_readonly) + return readonly ? 0 : EROFS; + if (readonly != diskfs_readonly) { err = ports_inhibit_class_rpcs (diskfs_protid_class); -- cgit v1.2.3