From 7d317a0e27dc64a2f4629577a6420273f69be047 Mon Sep 17 00:00:00 2001 From: Mattias Amnefelt Date: Sat, 22 Sep 2001 00:48:56 +0000 Subject: [PATCH] dux-vfsck-check-for-mounted-filesystem-20010919 modified by shadow@dementia.org for dux 4.0a (ifndef UID_NO_CHANGE case) --- src/vfsck/setup.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/vfsck/setup.c b/src/vfsck/setup.c index 19937bad6..a9afae9b6 100644 --- a/src/vfsck/setup.c +++ b/src/vfsck/setup.c @@ -199,7 +199,6 @@ restat: dev = sname; } #endif -#ifdef AFS_HPUX_ENV hotroot = is_hotroot(dev); /* @@ -226,9 +225,15 @@ restat: mounted = swap = 0; if (!hotroot) { mounted = is_mounted(dev,&st_mounted); +#ifdef AFS_HPUX_ENV swap = is_swap(st_mounted.st_rdev); +#endif } - if (!fflag && !mflag) { + if (!fflag +#ifdef AFS_HPUX_ENV +&& !mflag +#endif +) { if (hotroot) { msgprintf("fsck: %s: root file system",dev); if (preen) @@ -256,7 +261,6 @@ restat: } } } -#endif if (rootdev == statb.st_rdev) hotroot++; if ((fsreadfd = open(dev, O_RDONLY)) < 0) { @@ -787,9 +791,10 @@ clean_byte_valid(lastfsck) } #endif -#ifdef AFS_HPUX_ENV #include +#ifdef AFS_HPUX_ENV #include +#endif #include extern int errno; @@ -826,6 +831,8 @@ is_mounted(device,dev_st) return (0); } +#ifdef AFS_HPUX_ENV + #define PS_BURST 1 #ifdef AFS_HPUX102_ENV #define PSTAT(P, N, I) pstat_getswap(P, sizeof(*P), (size_t)N, I) @@ -849,6 +856,9 @@ is_swap(devno) return (match); } +#endif AFS_HPUX_ENV + + is_pre_init(rdevnum) dev_t rdevnum; { @@ -859,8 +869,17 @@ is_pre_init(rdevnum) is_roroot() { +#ifndef UID_NO_CHANGE + struct stat stslash; + + if (stat("/",&stslash) < 0) + return (0); + if ( chown("/", stslash.st_uid, stslash.st_gid) == 0 ) + return(0); +#else if ( chown("/",UID_NO_CHANGE,GID_NO_CHANGE) == 0 ) return(0); +#endif else if (errno != EROFS ) { printf ("fsck: chown failed: %d\n",errno); return (0); @@ -954,7 +973,6 @@ freply(s) return (0); } -#endif #if defined(AFS_HPUX110_ENV) /* -- 2.39.5