From: Karel Zak Date: Thu, 30 Jul 2009 08:44:08 +0000 (+0200) Subject: libblkid: add samples/topology.c X-Git-Tag: v2.17-rc1~208 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e21677fe7dc247515554e702ddd5c048b57876cd;p=thirdparty%2Futil-linux.git libblkid: add samples/topology.c Signed-off-by: Karel Zak --- diff --git a/configure.ac b/configure.ac index 1c914d1935..6809932414 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 a76b1fd853..6ad42d8c32 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 0000000000..e27df1c911 --- /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 0000000000..3b7de7da62 --- /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 0000000000..c031b82c39 --- /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; +}