From e21677fe7dc247515554e702ddd5c048b57876cd Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 30 Jul 2009 10:44:08 +0200 Subject: [PATCH] libblkid: add samples/topology.c Signed-off-by: Karel Zak --- configure.ac | 1 + shlibs/blkid/Makefile.am | 2 +- shlibs/blkid/samples/.gitignore | 1 + shlibs/blkid/samples/Makefile.am | 7 +++ shlibs/blkid/samples/topology.c | 95 ++++++++++++++++++++++++++++++++ 5 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 shlibs/blkid/samples/.gitignore create mode 100644 shlibs/blkid/samples/Makefile.am create mode 100644 shlibs/blkid/samples/topology.c diff --git a/configure.ac b/configure.ac index 1c914d19..68099324 100644 --- a/configure.ac +++ b/configure.ac @@ -923,6 +923,7 @@ shlibs/blkid/Makefile shlibs/blkid/src/Makefile shlibs/blkid/src/superblocks/Makefile shlibs/blkid/src/topology/Makefile +shlibs/blkid/samples/Makefile shlibs/uuid/uuid.pc shlibs/uuid/Makefile shlibs/uuid/man/Makefile diff --git a/shlibs/blkid/Makefile.am b/shlibs/blkid/Makefile.am index a76b1fd8..6ad42d8c 100644 --- a/shlibs/blkid/Makefile.am +++ b/shlibs/blkid/Makefile.am @@ -1,6 +1,6 @@ include $(top_srcdir)/config/include-Makefile.am -SUBDIRS = src +SUBDIRS = src samples # pkg-config stuff pkgconfigdir = $(usrlib_execdir)/pkgconfig diff --git a/shlibs/blkid/samples/.gitignore b/shlibs/blkid/samples/.gitignore new file mode 100644 index 00000000..e27df1c9 --- /dev/null +++ b/shlibs/blkid/samples/.gitignore @@ -0,0 +1 @@ +topology diff --git a/shlibs/blkid/samples/Makefile.am b/shlibs/blkid/samples/Makefile.am new file mode 100644 index 00000000..3b7de7da --- /dev/null +++ b/shlibs/blkid/samples/Makefile.am @@ -0,0 +1,7 @@ +include $(top_srcdir)/config/include-Makefile.am + +AM_CPPFLAGS += -I$(ul_libblkid_srcdir) +AM_LDFLAGS += $(ul_libblkid_la) + +noinst_PROGRAMS = topology + diff --git a/shlibs/blkid/samples/topology.c b/shlibs/blkid/samples/topology.c new file mode 100644 index 00000000..c031b82c --- /dev/null +++ b/shlibs/blkid/samples/topology.c @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2009 Karel Zak + * + * This file may be redistributed under the terms of the + * GNU Lesser General Public License. + */ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#ifndef TRUE +# define TRUE 1 +# define FALSE 0 +#endif + +int main(int argc, char *argv[]) +{ + int fd, rc; + char *devname; + blkid_probe pr; + blkid_topology tp; + + if (argc < 2) { + fprintf(stderr, "usage: %s " + "-- prints topology details about the device\n", + program_invocation_short_name); + return EXIT_FAILURE; + } + + devname = argv[1]; + + fd = open(devname, O_RDONLY); + if (fd < 0) + err(EXIT_FAILURE, "%s: open() failed", devname); + + pr = blkid_new_probe(); + if (!pr) + err(EXIT_FAILURE, "faild to allocate a new libblkid probe"); + + if (blkid_probe_set_device(pr, fd, 0, 0) != 0) + err(EXIT_FAILURE, "failed to assign device to libblkid probe"); + + /* + * NAME=value interface + */ + + /* enable topology probing */ + blkid_probe_enable_topology(pr, TRUE); + + /* disable superblocks probing (enabled by default) */ + blkid_probe_enable_superblocks(pr, FALSE); + + rc = blkid_do_fullprobe(pr); + if (rc == -1) + errx(EXIT_FAILURE, "%s: blkid_do_fullprobe() failed", devname); + else if (rc == 1) + warnx("%s: missing topology information", devname); + else { + int i, nvals; + + printf("----- NAME=value interface (values: %d):\n", nvals); + + nvals = blkid_probe_numof_values(pr); + + for (i = 0; i < nvals; i++) { + const char *name, *data; + + blkid_probe_get_value(pr, i, &name, &data, NULL); + printf("\t%s = %s\n", name, data); + } + } + + /* + * Binary interface + */ + tp = blkid_probe_get_topology(pr); + if (tp) { + printf("----- binary interface:\n"); + printf("alignment offset : %lu\n", + blkid_topology_get_alignment_offset(tp)); + printf("minimum io size : %lu\n", + blkid_topology_get_minimum_io_size(tp)); + printf("optimal io size : %lu\n", + blkid_topology_get_optimal_io_size(tp)); + } + + return EXIT_SUCCESS; +} -- 2.39.5