diff --git a/disk-utils/Makemodule.am b/disk-utils/Makemodule.am index 04118c73b..3c4f8d78b 100644 --- a/disk-utils/Makemodule.am +++ b/disk-utils/Makemodule.am @@ -65,10 +65,13 @@ endif # BUILD_MKSWAP if BUILD_SWAPLABEL sbin_PROGRAMS += swaplabel dist_man_MANS += disk-utils/swaplabel.8 -swaplabel_SOURCES = disk-utils/swaplabel.c sys-utils/swapon-common.c +swaplabel_SOURCES = \ + disk-utils/swaplabel.c \ + lib/swapprober.c \ + include/swapprober.h -swaplabel_CFLAGS = $(AM_CFLAGS) -I$(ul_libblkid_incdir) -I$(ul_libmount_incdir) -swaplabel_LDADD = $(LDADD) libblkid.la libmount.la libcommon.la +swaplabel_CFLAGS = $(AM_CFLAGS) -I$(ul_libblkid_incdir) +swaplabel_LDADD = $(LDADD) libblkid.la libcommon.la if BUILD_LIBUUID swaplabel_LDADD += libuuid.la diff --git a/disk-utils/swaplabel.c b/disk-utils/swaplabel.c index a7cccc4f8..a7498a4f1 100644 --- a/disk-utils/swaplabel.c +++ b/disk-utils/swaplabel.c @@ -18,7 +18,6 @@ #include #include #include -#include #include #ifdef HAVE_LIBUUID @@ -26,12 +25,13 @@ #endif #include "c.h" -#include "closestream.h" -#include "all-io.h" -#include "swapheader.h" -#include "swapon-common.h" -#include "strutils.h" #include "nls.h" +#include "all-io.h" +#include "strutils.h" +#include "closestream.h" + +#include "swapheader.h" +#include "swapprober.h" #define SWAP_UUID_OFFSET (offsetof(struct swap_header_v1_2, uuid)) #define SWAP_LABEL_OFFSET (offsetof(struct swap_header_v1_2, volume_name)) diff --git a/include/Makemodule.am b/include/Makemodule.am index dd5c3f58c..bb8aac58b 100644 --- a/include/Makemodule.am +++ b/include/Makemodule.am @@ -41,7 +41,7 @@ dist_noinst_HEADERS += \ include/rpmatch.h \ include/setproctitle.h \ include/strutils.h \ - include/swapon-common.h \ + include/swapprober.h \ include/swapheader.h \ include/sysfs.h \ include/timer.h \ diff --git a/include/swapprober.h b/include/swapprober.h new file mode 100644 index 000000000..510770045 --- /dev/null +++ b/include/swapprober.h @@ -0,0 +1,9 @@ +#ifndef UTIL_LINUX_SWAP_PROBER_H +#define UTIL_LINUX_SWAP_PROBER_H + +#include + +blkid_probe get_swap_prober(const char *devname); + +#endif /* UTIL_LINUX_SWAP_PROBER_H */ + diff --git a/lib/swapprober.c b/lib/swapprober.c new file mode 100644 index 000000000..deb754b8a --- /dev/null +++ b/lib/swapprober.c @@ -0,0 +1,48 @@ + +#include "c.h" +#include "nls.h" + +#include "swapprober.h" + +blkid_probe get_swap_prober(const char *devname) +{ + blkid_probe pr; + int rc; + const char *version = NULL; + char *swap_filter[] = { "swap", NULL }; + + pr = blkid_new_probe_from_filename(devname); + if (!pr) { + warn(_("%s: unable to probe device"), devname); + return NULL; + } + + blkid_probe_enable_superblocks(pr, TRUE); + blkid_probe_set_superblocks_flags(pr, + BLKID_SUBLKS_LABEL | BLKID_SUBLKS_UUID | + BLKID_SUBLKS_VERSION); + + blkid_probe_filter_superblocks_type(pr, BLKID_FLTR_ONLYIN, swap_filter); + + rc = blkid_do_safeprobe(pr); + if (rc == -1) + warn(_("%s: unable to probe device"), devname); + else if (rc == -2) + warnx(_("%s: ambivalent probing result, use wipefs(8)"), devname); + else if (rc == 1) + warnx(_("%s: not a valid swap partition"), devname); + + if (rc == 0) { + /* Only the SWAPSPACE2 is supported. */ + if (blkid_probe_lookup_value(pr, "VERSION", &version, NULL) == 0 + && version + && strcmp(version, stringify_value(SWAP_VERSION))) + warnx(_("%s: unsupported swap version '%s'"), + devname, version); + else + return pr; + } + + blkid_free_probe(pr); + return NULL; +} diff --git a/sys-utils/Makemodule.am b/sys-utils/Makemodule.am index 058bb62d4..b75d5e005 100644 --- a/sys-utils/Makemodule.am +++ b/sys-utils/Makemodule.am @@ -262,7 +262,10 @@ dist_man_MANS += \ swapon_SOURCES = \ sys-utils/swapon.c \ - sys-utils/swapon-common.c + sys-utils/swapon-common.c \ + sys-utils/swapon-common.h \ + lib/swapprober.c \ + include/swapprober.h swapon_CFLAGS = $(AM_CFLAGS) \ -I$(ul_libblkid_incdir) \ -I$(ul_libmount_incdir) \ @@ -273,8 +276,11 @@ swapon_LDADD = $(LDADD) \ libmount.la \ libsmartcols.la -swapoff_SOURCES = sys-utils/swapoff.c sys-utils/swapon-common.c -swapoff_CFLAGS = $(AM_CFLAGS) -I$(ul_libmount_incdir) -I$(ul_libblkid_incdir) +swapoff_SOURCES = \ + sys-utils/swapoff.c \ + sys-utils/swapon-common.c \ + sys-utils/swapon-common.h +swapoff_CFLAGS = $(AM_CFLAGS) -I$(ul_libmount_incdir) swapoff_LDADD = $(LDADD) libmount.la endif diff --git a/sys-utils/swapon-common.c b/sys-utils/swapon-common.c index 203d5c4d0..8f7788cb0 100644 --- a/sys-utils/swapon-common.c +++ b/sys-utils/swapon-common.c @@ -1,11 +1,10 @@ -#include #include "c.h" #include "nls.h" -#include "swapheader.h" -#include "swapon-common.h" #include "xalloc.h" +#include "swapon-common.h" + /* * content of /proc/swaps and /etc/fstab */ @@ -106,45 +105,3 @@ size_t numof_uuids(void) return ulct; } -blkid_probe get_swap_prober(const char *devname) -{ - blkid_probe pr; - int rc; - const char *version = NULL; - char *swap_filter[] = { "swap", NULL }; - - pr = blkid_new_probe_from_filename(devname); - if (!pr) { - warn(_("%s: unable to probe device"), devname); - return NULL; - } - - blkid_probe_enable_superblocks(pr, TRUE); - blkid_probe_set_superblocks_flags(pr, - BLKID_SUBLKS_LABEL | BLKID_SUBLKS_UUID | - BLKID_SUBLKS_VERSION); - - blkid_probe_filter_superblocks_type(pr, BLKID_FLTR_ONLYIN, swap_filter); - - rc = blkid_do_safeprobe(pr); - if (rc == -1) - warn(_("%s: unable to probe device"), devname); - else if (rc == -2) - warnx(_("%s: ambivalent probing result, use wipefs(8)"), devname); - else if (rc == 1) - warnx(_("%s: not a valid swap partition"), devname); - - if (rc == 0) { - /* Only the SWAPSPACE2 is supported. */ - if (blkid_probe_lookup_value(pr, "VERSION", &version, NULL) == 0 - && version - && strcmp(version, stringify_value(SWAP_VERSION))) - warnx(_("%s: unsupported swap version '%s'"), - devname, version); - else - return pr; - } - - blkid_free_probe(pr); - return NULL; -} diff --git a/include/swapon-common.h b/sys-utils/swapon-common.h similarity index 90% rename from include/swapon-common.h rename to sys-utils/swapon-common.h index da58e199d..d1b679f2c 100644 --- a/include/swapon-common.h +++ b/sys-utils/swapon-common.h @@ -1,7 +1,6 @@ #ifndef UTIL_LINUX_SWAPON_COMMON_H #define UTIL_LINUX_SWAPON_COMMON_H -#include #include extern struct libmnt_cache *mntcache; @@ -23,6 +22,4 @@ extern void add_uuid(const char *uuid); extern const char *get_uuid(size_t i); extern size_t numof_uuids(void); -blkid_probe get_swap_prober(const char *devname); - #endif /* UTIL_LINUX_SWAPON_COMMON_H */ diff --git a/sys-utils/swapon.c b/sys-utils/swapon.c index ea5fdb28a..976f87e40 100644 --- a/sys-utils/swapon.c +++ b/sys-utils/swapon.c @@ -12,9 +12,6 @@ #include #include -#include - -#include #include #include "c.h" @@ -23,11 +20,12 @@ #include "blkdev.h" #include "pathnames.h" #include "xalloc.h" +#include "strutils.h" #include "closestream.h" #include "swapheader.h" +#include "swapprober.h" #include "swapon-common.h" -#include "strutils.h" #define PATH_MKSWAP "/sbin/mkswap"