63 lines
1.6 KiB
Diff
63 lines
1.6 KiB
Diff
|
--- util-linux-2.13-pre6/disk-utils/mkswap.c.kzak 2006-10-12 11:33:50.000000000 +0200
|
||
|
+++ util-linux-2.13-pre6/disk-utils/mkswap.c 2006-10-12 11:36:08.000000000 +0200
|
||
|
@@ -36,6 +36,7 @@
|
||
|
#include <string.h>
|
||
|
#include <fcntl.h>
|
||
|
#include <stdlib.h>
|
||
|
+#include <mntent.h>
|
||
|
#include <sys/ioctl.h> /* for _IO */
|
||
|
#include <sys/utsname.h>
|
||
|
#include <sys/stat.h>
|
||
|
@@ -485,6 +486,29 @@
|
||
|
return (c >= '1' && c <= '9');
|
||
|
}
|
||
|
|
||
|
+
|
||
|
+/*
|
||
|
+ * Check to make certain that our new filesystem won't be created on
|
||
|
+ * an already mounted partition. Code adapted from mke2fs, Copyright
|
||
|
+ * (C) 1994 Theodore Ts'o. Also licensed under GPL.
|
||
|
+ * (C) 2006 Karel Zak -- port to mkswap
|
||
|
+ */
|
||
|
+static int
|
||
|
+check_mount(void) {
|
||
|
+ FILE * f;
|
||
|
+ struct mntent * mnt;
|
||
|
+
|
||
|
+ if ((f = setmntent (MOUNTED, "r")) == NULL)
|
||
|
+ return 0;
|
||
|
+ while ((mnt = getmntent (f)) != NULL)
|
||
|
+ if (strcmp (device_name, mnt->mnt_fsname) == 0)
|
||
|
+ break;
|
||
|
+ endmntent (f);
|
||
|
+ if (!mnt)
|
||
|
+ return 0;
|
||
|
+ return 1;
|
||
|
+}
|
||
|
+
|
||
|
int
|
||
|
main(int argc, char ** argv) {
|
||
|
struct stat statbuf;
|
||
|
@@ -648,8 +672,19 @@
|
||
|
/* Want a block device. Probably not /dev/hda or /dev/hdb. */
|
||
|
if (!S_ISBLK(statbuf.st_mode))
|
||
|
check=0;
|
||
|
- else if (statbuf.st_rdev == 0x0300 || statbuf.st_rdev == 0x0340)
|
||
|
- die(_("Will not try to make swapdevice on '%s'"));
|
||
|
+ else if (statbuf.st_rdev == 0x0300 || statbuf.st_rdev == 0x0340) {
|
||
|
+ fprintf(stderr,
|
||
|
+ _("%s: error: "
|
||
|
+ "will not try to make swapdevice on '%s'\n"),
|
||
|
+ program_name, device_name);
|
||
|
+ exit(1);
|
||
|
+ } else if (check_mount()) {
|
||
|
+ fprintf(stderr,
|
||
|
+ _("%s: error: "
|
||
|
+ "%s is mounted; will not make swapspace.\n"),
|
||
|
+ program_name, device_name);
|
||
|
+ exit(1);
|
||
|
+ }
|
||
|
|
||
|
#ifdef __sparc__
|
||
|
if (!force && version == 0) {
|