remove gudev and gtk-doc
The library moved to: https://git.gnome.org/browse/libgudev/
This commit is contained in:
parent
7e518afab9
commit
2375607039
|
@ -38,7 +38,6 @@
|
||||||
/defined
|
/defined
|
||||||
/exported
|
/exported
|
||||||
/exported-*
|
/exported-*
|
||||||
/gtk-doc.make
|
|
||||||
/hostnamectl
|
/hostnamectl
|
||||||
/install-tree
|
/install-tree
|
||||||
/journalctl
|
/journalctl
|
||||||
|
|
|
@ -3,8 +3,8 @@ compiler:
|
||||||
- gcc
|
- gcc
|
||||||
before_install:
|
before_install:
|
||||||
- sudo apt-get update -qq
|
- sudo apt-get update -qq
|
||||||
- sudo apt-get install autotools-dev automake autoconf libtool libdbus-1-dev libcap-dev libblkid-dev libmount-dev libpam-dev libcryptsetup-dev libaudit-dev libacl1-dev libattr1-dev libselinux-dev liblzma-dev libgcrypt-dev libqrencode-dev libmicrohttpd-dev gtk-doc-tools gperf python2.7-dev
|
- sudo apt-get install autotools-dev automake autoconf libtool libdbus-1-dev libcap-dev libblkid-dev libmount-dev libpam-dev libcryptsetup-dev libaudit-dev libacl1-dev libattr1-dev libselinux-dev liblzma-dev libgcrypt-dev libqrencode-dev libmicrohttpd-dev gperf python2.7-dev
|
||||||
script: ./autogen.sh && ./configure --enable-gtk-doc --enable-gtk-doc-pdf && make V=1 && sudo ./systemd-machine-id-setup && make check && make distcheck
|
script: ./autogen.sh && ./configure && make V=1 && sudo ./systemd-machine-id-setup && make check && make distcheck
|
||||||
after_failure: cat test-suite.log
|
after_failure: cat test-suite.log
|
||||||
notifications:
|
notifications:
|
||||||
irc:
|
irc:
|
||||||
|
|
174
Makefile.am
174
Makefile.am
|
@ -42,10 +42,6 @@ LIBUDEV_CURRENT=7
|
||||||
LIBUDEV_REVISION=3
|
LIBUDEV_REVISION=3
|
||||||
LIBUDEV_AGE=6
|
LIBUDEV_AGE=6
|
||||||
|
|
||||||
LIBGUDEV_CURRENT=2
|
|
||||||
LIBGUDEV_REVISION=0
|
|
||||||
LIBGUDEV_AGE=2
|
|
||||||
|
|
||||||
LIBSYSTEMD_CURRENT=7
|
LIBSYSTEMD_CURRENT=7
|
||||||
LIBSYSTEMD_REVISION=0
|
LIBSYSTEMD_REVISION=0
|
||||||
LIBSYSTEMD_AGE=7
|
LIBSYSTEMD_AGE=7
|
||||||
|
@ -3667,15 +3663,6 @@ src/libsystemd-terminal/unifont-glyph-array.bin: tools/compile-unifont.py $(UNIF
|
||||||
$(AM_V_GEN)$(PYTHON) $< <$(UNIFONT) >$@
|
$(AM_V_GEN)$(PYTHON) $< <$(UNIFONT) >$@
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
if ENABLE_GTK_DOC
|
|
||||||
SUBDIRS += \
|
|
||||||
docs/libudev
|
|
||||||
|
|
||||||
noinst_DATA += \
|
|
||||||
docs/html/libudev \
|
|
||||||
docs/html/gudev
|
|
||||||
endif
|
|
||||||
|
|
||||||
include_HEADERS += \
|
include_HEADERS += \
|
||||||
src/libudev/libudev.h
|
src/libudev/libudev.h
|
||||||
|
|
||||||
|
@ -3716,17 +3703,12 @@ EXTRA_DIST += \
|
||||||
src/libudev/libudev.pc.in
|
src/libudev/libudev.pc.in
|
||||||
|
|
||||||
CLEANFILES += \
|
CLEANFILES += \
|
||||||
docs/html/libudev \
|
docs/html/libudev
|
||||||
docs/html/gudev
|
|
||||||
|
|
||||||
docs/html/libudev:
|
docs/html/libudev:
|
||||||
$(AM_V_at)$(MKDIR_P) $(dir $@)
|
$(AM_V_at)$(MKDIR_P) $(dir $@)
|
||||||
$(AM_V_LN)$(LN_S) -f ../libudev/html $@
|
$(AM_V_LN)$(LN_S) -f ../libudev/html $@
|
||||||
|
|
||||||
docs/html/gudev:
|
|
||||||
$(AM_V_at)$(MKDIR_P) $(dir $@)
|
|
||||||
$(AM_V_LN)$(LN_S) -f ../gudev/html $@
|
|
||||||
|
|
||||||
# move lib from $(libdir) to $(rootlibdir) and update devel link, if needed
|
# move lib from $(libdir) to $(rootlibdir) and update devel link, if needed
|
||||||
libudev-install-hook:
|
libudev-install-hook:
|
||||||
libname=libudev.so && $(move-to-rootlibdir)
|
libname=libudev.so && $(move-to-rootlibdir)
|
||||||
|
@ -4122,151 +4104,6 @@ udevlibexec_PROGRAMS += \
|
||||||
dist_udevrules_DATA += \
|
dist_udevrules_DATA += \
|
||||||
rules/61-accelerometer.rules
|
rules/61-accelerometer.rules
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
if ENABLE_GUDEV
|
|
||||||
if ENABLE_GTK_DOC
|
|
||||||
SUBDIRS += \
|
|
||||||
docs/gudev
|
|
||||||
endif
|
|
||||||
|
|
||||||
libgudev_includedir = \
|
|
||||||
$(includedir)/gudev-1.0/gudev
|
|
||||||
|
|
||||||
libgudev_include_HEADERS = \
|
|
||||||
src/gudev/gudev.h \
|
|
||||||
src/gudev/gudevenums.h \
|
|
||||||
src/gudev/gudevenumtypes.h \
|
|
||||||
src/gudev/gudevtypes.h \
|
|
||||||
src/gudev/gudevclient.h \
|
|
||||||
src/gudev/gudevdevice.h \
|
|
||||||
src/gudev/gudevenumerator.h
|
|
||||||
|
|
||||||
lib_LTLIBRARIES += libgudev-1.0.la
|
|
||||||
|
|
||||||
pkgconfiglib_DATA += \
|
|
||||||
src/gudev/gudev-1.0.pc
|
|
||||||
|
|
||||||
libgudev_1_0_la_SOURCES = \
|
|
||||||
src/gudev/libgudev-1.0.sym \
|
|
||||||
src/gudev/gudevenums.h \
|
|
||||||
src/gudev/gudevenumtypes.h \
|
|
||||||
src/gudev/gudevenumtypes.h\
|
|
||||||
src/gudev/gudevtypes.h \
|
|
||||||
src/gudev/gudevclient.h \
|
|
||||||
src/gudev/gudevclient.c \
|
|
||||||
src/gudev/gudevdevice.h \
|
|
||||||
src/gudev/gudevdevice.c \
|
|
||||||
src/gudev/gudevenumerator.h \
|
|
||||||
src/gudev/gudevenumerator.c \
|
|
||||||
src/gudev/gudevprivate.h
|
|
||||||
|
|
||||||
nodist_libgudev_1_0_la_SOURCES = \
|
|
||||||
src/gudev/gudevmarshal.h \
|
|
||||||
src/gudev/gudevmarshal.c \
|
|
||||||
src/gudev/gudevenumtypes.h \
|
|
||||||
src/gudev/gudevenumtypes.c
|
|
||||||
|
|
||||||
BUILT_SOURCES += \
|
|
||||||
$(nodist_libgudev_1_0_la_SOURCES)
|
|
||||||
|
|
||||||
libgudev_1_0_la_CPPFLAGS = \
|
|
||||||
$(AM_CPPFLAGS) \
|
|
||||||
-I$(top_builddir)/src\
|
|
||||||
-I$(top_srcdir)/src\
|
|
||||||
-I$(top_builddir)/src/gudev \
|
|
||||||
-I$(top_srcdir)/src/gudev \
|
|
||||||
-D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT \
|
|
||||||
-D_GUDEV_COMPILATION \
|
|
||||||
-DG_LOG_DOMAIN=\"GUdev\"
|
|
||||||
|
|
||||||
libgudev_1_0_la_CFLAGS = \
|
|
||||||
$(AM_CFLAGS) \
|
|
||||||
-fvisibility=default \
|
|
||||||
$(GLIB_CFLAGS)
|
|
||||||
|
|
||||||
libgudev_1_0_la_LIBADD = \
|
|
||||||
libudev.la \
|
|
||||||
$(GLIB_LIBS)
|
|
||||||
|
|
||||||
libgudev_1_0_la_LDFLAGS = \
|
|
||||||
$(AM_LDFLAGS) \
|
|
||||||
-version-info $(LIBGUDEV_CURRENT):$(LIBGUDEV_REVISION):$(LIBGUDEV_AGE) \
|
|
||||||
-export-dynamic \
|
|
||||||
-no-undefined \
|
|
||||||
-Wl,--version-script=$(top_srcdir)/src/gudev/libgudev-1.0.sym
|
|
||||||
|
|
||||||
src/gudev/gudevmarshal.h: src/gudev/gudevmarshal.list
|
|
||||||
$(AM_V_at)$(MKDIR_P) $(dir $@)
|
|
||||||
$(AM_V_GEN)glib-genmarshal $< --prefix=g_udev_marshal --header > $@
|
|
||||||
|
|
||||||
src/gudev/gudevmarshal.c: src/gudev/gudevmarshal.list
|
|
||||||
$(AM_V_at)$(MKDIR_P) $(dir $@)
|
|
||||||
$(AM_V_GEN)echo '#include "gudevmarshal.h"' > $@ && \
|
|
||||||
glib-genmarshal $< --prefix=g_udev_marshal --body >> $@
|
|
||||||
|
|
||||||
src/gudev/gudevenumtypes.%: src/gudev/gudevenumtypes.%.template src/gudev/gudevenums.h
|
|
||||||
$(AM_V_at)$(MKDIR_P) $(dir $@)
|
|
||||||
$(AM_V_GEN)glib-mkenums --template $^ > $@
|
|
||||||
|
|
||||||
if HAVE_INTROSPECTION
|
|
||||||
-include $(INTROSPECTION_MAKEFILE)
|
|
||||||
|
|
||||||
src/gudev/GUdev-1.0.gir: libgudev-1.0.la
|
|
||||||
|
|
||||||
src_gudev_GUdev_1_0_gir_INCLUDES = GObject-2.0
|
|
||||||
|
|
||||||
src_gudev_GUdev_1_0_gir_CFLAGS = \
|
|
||||||
$(AM_CFLAGS) \
|
|
||||||
$(INCLUDES) \
|
|
||||||
-D_GUDEV_COMPILATION \
|
|
||||||
-D_GUDEV_WORK_AROUND_DEV_T_BUG \
|
|
||||||
-I$(top_srcdir)/src \
|
|
||||||
-I$(top_builddir)/src \
|
|
||||||
-I$(top_srcdir)/src/gudev \
|
|
||||||
-I$(top_builddir)/src/gudev
|
|
||||||
|
|
||||||
src_gudev_GUdev_1_0_gir_LIBS = libgudev-1.0.la
|
|
||||||
|
|
||||||
src_gudev_GUdev_1_0_gir_SCANNERFLAGS = \
|
|
||||||
--pkg-export=gudev-1.0 \
|
|
||||||
--warn-all
|
|
||||||
|
|
||||||
src_gudev_GUdev_1_0_gir_FILES = \
|
|
||||||
src/gudev/gudev.h \
|
|
||||||
src/gudev/gudevtypes.h \
|
|
||||||
src/gudev/gudevenums.h \
|
|
||||||
src/gudev/gudevenumtypes.h \
|
|
||||||
src/gudev/gudevclient.h \
|
|
||||||
src/gudev/gudevdevice.h \
|
|
||||||
src/gudev/gudevenumerator.h \
|
|
||||||
src/gudev/gudevclient.c \
|
|
||||||
src/gudev/gudevdevice.c \
|
|
||||||
src/gudev/gudevenumerator.c
|
|
||||||
|
|
||||||
INTROSPECTION_GIRS = src/gudev/GUdev-1.0.gir
|
|
||||||
INTROSPECTION_SCANNER_ARGS = --c-include=gudev/gudev.h
|
|
||||||
|
|
||||||
girdir = $(datadir)/gir-1.0
|
|
||||||
gir_DATA = \
|
|
||||||
src/gudev/GUdev-1.0.gir
|
|
||||||
|
|
||||||
typelibsdir = $(libdir)/girepository-1.0
|
|
||||||
typelibs_DATA = \
|
|
||||||
src/gudev/GUdev-1.0.typelib
|
|
||||||
|
|
||||||
CLEANFILES += $(gir_DATA) $(typelibs_DATA)
|
|
||||||
endif # HAVE_INTROSPECTION
|
|
||||||
endif
|
|
||||||
|
|
||||||
EXTRA_DIST += \
|
|
||||||
src/gudev/gudev-1.0.pc.in \
|
|
||||||
src/gudev/gudevmarshal.list \
|
|
||||||
src/gudev/gudevenumtypes.h.template \
|
|
||||||
src/gudev/gudevenumtypes.c.template \
|
|
||||||
src/gudev/gjs-example.js \
|
|
||||||
src/gudev/seed-example-enum.js \
|
|
||||||
src/gudev/seed-example.js
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
mtd_probe_SOURCES = \
|
mtd_probe_SOURCES = \
|
||||||
src/udev/mtd_probe/mtd_probe.c \
|
src/udev/mtd_probe/mtd_probe.c \
|
||||||
|
@ -6826,11 +6663,6 @@ DISTCHECK_CONFIGURE_FLAGS += \
|
||||||
--with-python
|
--with-python
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if ENABLE_GTK_DOC
|
|
||||||
DISTCHECK_CONFIGURE_FLAGS += \
|
|
||||||
--enable-gtk-doc
|
|
||||||
endif
|
|
||||||
|
|
||||||
if ENABLE_SPLIT_USR
|
if ENABLE_SPLIT_USR
|
||||||
DISTCHECK_CONFIGURE_FLAGS += \
|
DISTCHECK_CONFIGURE_FLAGS += \
|
||||||
--enable-split-usr
|
--enable-split-usr
|
||||||
|
@ -6895,10 +6727,6 @@ upload: all check dist
|
||||||
|
|
||||||
.PHONY: doc-sync
|
.PHONY: doc-sync
|
||||||
doc-sync: all destdir-sphinx
|
doc-sync: all destdir-sphinx
|
||||||
gtkdoc-rebase --html-dir=docs/libudev/html --online
|
|
||||||
rsync -rlv --delete docs/libudev/html/ --omit-dir-times $(www_target)/libudev/
|
|
||||||
gtkdoc-rebase --html-dir=docs/gudev/html --online
|
|
||||||
rsync -rlv --delete docs/gudev/html/ --omit-dir-times $(www_target)/gudev/
|
|
||||||
rsync -rlv --delete-excluded --include="*.html" --exclude="*" --omit-dir-times man/ $(www_target)/man/
|
rsync -rlv --delete-excluded --include="*.html" --exclude="*" --omit-dir-times man/ $(www_target)/man/
|
||||||
rsync -rlv --delete --omit-dir-times docs/html/python-systemd/ $(www_target)/python-systemd/
|
rsync -rlv --delete --omit-dir-times docs/html/python-systemd/ $(www_target)/python-systemd/
|
||||||
|
|
||||||
|
|
1
README
1
README
|
@ -152,7 +152,6 @@ REQUIREMENTS:
|
||||||
libtool
|
libtool
|
||||||
intltool
|
intltool
|
||||||
gperf
|
gperf
|
||||||
gtkdocize (optional)
|
|
||||||
python (optional)
|
python (optional)
|
||||||
python-lxml (optional, but required to build the indices)
|
python-lxml (optional, but required to build the indices)
|
||||||
sphinx (optional)
|
sphinx (optional)
|
||||||
|
|
2
TODO
2
TODO
|
@ -537,8 +537,6 @@ Features:
|
||||||
|
|
||||||
* maybe do not install getty@tty1.service symlink in /etc but in /usr?
|
* maybe do not install getty@tty1.service symlink in /etc but in /usr?
|
||||||
|
|
||||||
* re-enable "make check" for gtk-doc (broken for unknown reason)
|
|
||||||
|
|
||||||
* fstab: add new mount option x-systemd-after=/foobar/waldo to allow manual dependencies to other mount points
|
* fstab: add new mount option x-systemd-after=/foobar/waldo to allow manual dependencies to other mount points
|
||||||
https://bugzilla.redhat.com/show_bug.cgi?id=812826
|
https://bugzilla.redhat.com/show_bug.cgi?id=812826
|
||||||
|
|
||||||
|
|
11
autogen.sh
11
autogen.sh
|
@ -28,15 +28,6 @@ if [ -f .git/hooks/pre-commit.sample ] && [ ! -f .git/hooks/pre-commit ]; then
|
||||||
echo "Activated pre-commit hook." || :
|
echo "Activated pre-commit hook." || :
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if which gtkdocize >/dev/null 2>/dev/null; then
|
|
||||||
gtkdocize --docdir docs/ --flavour no-tmpl
|
|
||||||
gtkdocargs=--enable-gtk-doc
|
|
||||||
else
|
|
||||||
echo "You don't have gtk-doc installed, and thus won't be able to generate the documentation."
|
|
||||||
rm -f docs/gtk-doc.make
|
|
||||||
echo 'EXTRA_DIST =' > docs/gtk-doc.make
|
|
||||||
fi
|
|
||||||
|
|
||||||
intltoolize --force --automake
|
intltoolize --force --automake
|
||||||
autoreconf --force --install --symlink
|
autoreconf --force --install --symlink
|
||||||
|
|
||||||
|
@ -48,7 +39,7 @@ args="\
|
||||||
--sysconfdir=/etc \
|
--sysconfdir=/etc \
|
||||||
--localstatedir=/var \
|
--localstatedir=/var \
|
||||||
--libdir=$(libdir /usr/lib) \
|
--libdir=$(libdir /usr/lib) \
|
||||||
$gtkdocargs"
|
"
|
||||||
|
|
||||||
if [ -f "$topdir/.config.args" ]; then
|
if [ -f "$topdir/.config.args" ]; then
|
||||||
args="$args $(cat $topdir/.config.args)"
|
args="$args $(cat $topdir/.config.args)"
|
||||||
|
|
40
configure.ac
40
configure.ac
|
@ -107,22 +107,6 @@ AS_IF([! ln --relative --help > /dev/null 2>&1], [AC_MSG_ERROR([*** ln doesn't s
|
||||||
|
|
||||||
M4_DEFINES=
|
M4_DEFINES=
|
||||||
|
|
||||||
# gtkdocize greps for '^GTK_DOC_CHECK', so it needs to be on its own line
|
|
||||||
m4_ifdef([GTK_DOC_CHECK], [
|
|
||||||
GTK_DOC_CHECK([1.18],[--flavour no-tmpl])],
|
|
||||||
[AM_CONDITIONAL([ENABLE_GTK_DOC], [false])
|
|
||||||
enable_gtk_doc=no])
|
|
||||||
|
|
||||||
AS_IF([test "x$enable_gtk_doc" = "xyes" -a "x$XSLTPROC" = x], [
|
|
||||||
AC_MSG_ERROR([*** GTK doc requested but xsltproc not found])
|
|
||||||
])
|
|
||||||
|
|
||||||
m4_ifdef([GOBJECT_INTROSPECTION_CHECK], [
|
|
||||||
GOBJECT_INTROSPECTION_CHECK([1.31.1])
|
|
||||||
], [
|
|
||||||
AM_CONDITIONAL([HAVE_INTROSPECTION], [false])
|
|
||||||
enable_introspection=no])
|
|
||||||
|
|
||||||
AC_CHECK_TOOL(OBJCOPY, objcopy)
|
AC_CHECK_TOOL(OBJCOPY, objcopy)
|
||||||
AC_CHECK_TOOL(STRINGS, strings)
|
AC_CHECK_TOOL(STRINGS, strings)
|
||||||
AC_CHECK_TOOL(GPERF, gperf)
|
AC_CHECK_TOOL(GPERF, gperf)
|
||||||
|
@ -1293,14 +1277,6 @@ if test "x$enable_myhostname" != "xno"; then
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL(HAVE_MYHOSTNAME, [test "$have_myhostname" = "yes"])
|
AM_CONDITIONAL(HAVE_MYHOSTNAME, [test "$have_myhostname" = "yes"])
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
AC_ARG_ENABLE([gudev],
|
|
||||||
AS_HELP_STRING([--disable-gudev], [disable Gobject libudev support @<:@default=enabled@:>@]),
|
|
||||||
[], [enable_gudev=yes])
|
|
||||||
AS_IF([test "x$enable_gudev" = "xyes"], [ PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.22.0 gobject-2.0 >= 2.22.0 gio-2.0]) ])
|
|
||||||
AM_CONDITIONAL([ENABLE_GUDEV], [test "x$enable_gudev" = "xyes"])
|
|
||||||
AS_IF([test "x$enable_gudev" = "xyes"], [ AC_DEFINE(HAVE_GLIB, 1, [Define if glib is available]) ])
|
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
AC_ARG_ENABLE(hwdb, [AC_HELP_STRING([--disable-hwdb], [disable hardware database support])],
|
AC_ARG_ENABLE(hwdb, [AC_HELP_STRING([--disable-hwdb], [disable hardware database support])],
|
||||||
enable_hwdb=$enableval, enable_hwdb=yes)
|
enable_hwdb=$enableval, enable_hwdb=yes)
|
||||||
|
@ -1444,13 +1420,6 @@ AS_IF([test "x${enable_split_usr}" = "xyes"], [
|
||||||
])
|
])
|
||||||
AM_CONDITIONAL(ENABLE_SPLIT_USR, [test "x${enable_split_usr}" = "xyes"])
|
AM_CONDITIONAL(ENABLE_SPLIT_USR, [test "x${enable_split_usr}" = "xyes"])
|
||||||
|
|
||||||
# Work around intltoolize and gtk-doc problems in VPATH builds
|
|
||||||
AM_CONDITIONAL([ENABLE_GTK_DOC_TESTS], [test "x$0" = "x./configure"],
|
|
||||||
[Define to do gtk-doc tests])
|
|
||||||
AS_IF([test "x$0" != "x./configure"], [
|
|
||||||
AC_SUBST([INTLTOOL_UPDATE], [/bin/true])
|
|
||||||
])
|
|
||||||
|
|
||||||
# QEMU and OVMF UEFI firmware
|
# QEMU and OVMF UEFI firmware
|
||||||
AS_IF([test x"$cross_compiling" = "xyes"], [], [
|
AS_IF([test x"$cross_compiling" = "xyes"], [], [
|
||||||
AC_PATH_PROG([QEMU], [qemu-system-x86_64])
|
AC_PATH_PROG([QEMU], [qemu-system-x86_64])
|
||||||
|
@ -1505,11 +1474,8 @@ AC_SUBST([rootprefix], [$with_rootprefix])
|
||||||
AC_SUBST([rootlibdir], [$with_rootlibdir])
|
AC_SUBST([rootlibdir], [$with_rootlibdir])
|
||||||
|
|
||||||
AC_CONFIG_FILES([
|
AC_CONFIG_FILES([
|
||||||
Makefile po/Makefile.in
|
Makefile
|
||||||
docs/libudev/Makefile
|
po/Makefile.in
|
||||||
docs/libudev/version.xml
|
|
||||||
docs/gudev/Makefile
|
|
||||||
docs/gudev/version.xml
|
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
@ -1575,7 +1541,6 @@ AC_MSG_RESULT([
|
||||||
libmount: ${have_libmount}
|
libmount: ${have_libmount}
|
||||||
dbus: ${have_dbus}
|
dbus: ${have_dbus}
|
||||||
nss-myhostname: ${have_myhostname}
|
nss-myhostname: ${have_myhostname}
|
||||||
gudev: ${enable_gudev}
|
|
||||||
hwdb: ${enable_hwdb}
|
hwdb: ${enable_hwdb}
|
||||||
gintrospection: ${enable_introspection}
|
gintrospection: ${enable_introspection}
|
||||||
terminal: ${have_terminal}
|
terminal: ${have_terminal}
|
||||||
|
@ -1583,7 +1548,6 @@ AC_MSG_RESULT([
|
||||||
Python: ${have_python}
|
Python: ${have_python}
|
||||||
Python Headers: ${have_python_devel}
|
Python Headers: ${have_python_devel}
|
||||||
man pages: ${have_manpages}
|
man pages: ${have_manpages}
|
||||||
gtk-doc: ${enable_gtk_doc}
|
|
||||||
test coverage: ${have_coverage}
|
test coverage: ${have_coverage}
|
||||||
Split /usr: ${enable_split_usr}
|
Split /usr: ${enable_split_usr}
|
||||||
SysV compatibility: ${SYSTEM_SYSV_COMPAT}
|
SysV compatibility: ${SYSTEM_SYSV_COMPAT}
|
||||||
|
|
|
@ -1,2 +1 @@
|
||||||
/gtk-doc.make
|
|
||||||
/html/
|
/html/
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
/*.bak
|
|
||||||
/gtk-doc.make
|
|
||||||
/version.xml
|
|
||||||
/Makefile
|
|
||||||
/gudev-overrides.txt
|
|
||||||
/gudev-decl-list.txt
|
|
||||||
/gudev-decl.txt
|
|
||||||
/gudev-undeclared.txt
|
|
||||||
/gudev-undocumented.txt
|
|
||||||
/gudev-unused.txt
|
|
||||||
/gudev.args
|
|
||||||
/gudev.hierarchy
|
|
||||||
/gudev.interfaces
|
|
||||||
/gudev.prerequisites
|
|
||||||
/gudev.signals
|
|
||||||
/html/
|
|
||||||
/xml/
|
|
||||||
/*.stamp
|
|
||||||
/tmpl/
|
|
|
@ -1,115 +0,0 @@
|
||||||
## Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
# We require automake 1.10 at least.
|
|
||||||
AUTOMAKE_OPTIONS = 1.10 color-tests
|
|
||||||
|
|
||||||
# This is a blank Makefile.am for using gtk-doc.
|
|
||||||
# Copy this to your project's API docs directory and modify the variables to
|
|
||||||
# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
|
|
||||||
# of using the various options.
|
|
||||||
|
|
||||||
# The name of the module, e.g. 'glib'.
|
|
||||||
DOC_MODULE=gudev
|
|
||||||
|
|
||||||
# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
|
|
||||||
#DOC_MODULE_VERSION=2
|
|
||||||
|
|
||||||
# The top-level SGML file. You can change this if you want to.
|
|
||||||
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml
|
|
||||||
|
|
||||||
# The directory containing the source code. Relative to $(srcdir).
|
|
||||||
# gtk-doc will search all .c & .h files beneath here for inline comments
|
|
||||||
# documenting the functions and macros.
|
|
||||||
# e.g. DOC_SOURCE_DIR=../../../gtk
|
|
||||||
DOC_SOURCE_DIR=$(top_srcdir)/src/gudev $(top_builddir)/src/gudev
|
|
||||||
|
|
||||||
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
|
|
||||||
SCANGOBJ_OPTIONS=
|
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-scan.
|
|
||||||
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
|
|
||||||
SCAN_OPTIONS=
|
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-mkdb.
|
|
||||||
# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
|
|
||||||
MKDB_OPTIONS=--xml-mode --output-format=xml --name-space=g_udev
|
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-mktmpl
|
|
||||||
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
|
|
||||||
MKTMPL_OPTIONS=
|
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-mkhtml
|
|
||||||
MKHTML_OPTIONS=--path=$(abs_srcdir) --path=$(abs_builddir)
|
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-fixref. Not normally needed.
|
|
||||||
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
|
|
||||||
FIXXREF_OPTIONS=>/dev/null 2>&1
|
|
||||||
|
|
||||||
# Used for dependencies. The docs will be rebuilt if any of these change.
|
|
||||||
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
|
|
||||||
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
|
|
||||||
HFILE_GLOB=$(top_srcdir)/src/gudev/*.h
|
|
||||||
CFILE_GLOB=$(top_srcdir)/src/gudev/*.c
|
|
||||||
|
|
||||||
# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
|
|
||||||
# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
|
|
||||||
EXTRA_HFILES=
|
|
||||||
|
|
||||||
# Header files to ignore when scanning. Use base file name, no paths
|
|
||||||
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
|
|
||||||
IGNORE_HFILES=gudevenumtypes.h gudevmarshal.h
|
|
||||||
|
|
||||||
# Images to copy into HTML directory.
|
|
||||||
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
|
|
||||||
HTML_IMAGES=
|
|
||||||
|
|
||||||
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
|
|
||||||
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
|
|
||||||
content_files = version.xml
|
|
||||||
|
|
||||||
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
|
|
||||||
# These files must be listed here *and* in content_files
|
|
||||||
# e.g. expand_content_files=running.sgml
|
|
||||||
expand_content_files=
|
|
||||||
|
|
||||||
# Hack, hack. You silly gtk-doc, you must not add CFLAGS multiple
|
|
||||||
# times when calling gcc; it surely can not work with options that must
|
|
||||||
# be listed only once.
|
|
||||||
# Kill CFLAGS here because gtk-doc thinks adding CFLAGS to CC _and_ also
|
|
||||||
# adding CFLAGS itself again would work.
|
|
||||||
override CFLAGS=
|
|
||||||
override LDFLAGS=
|
|
||||||
|
|
||||||
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
|
|
||||||
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
|
|
||||||
# signals and properties.
|
|
||||||
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
|
||||||
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
|
|
||||||
GTKDOC_CFLAGS = \
|
|
||||||
$(GLIB_CFLAGS) \
|
|
||||||
-I$(top_srcdir)/src/gudev \
|
|
||||||
-I$(top_builddir)/src/gudev
|
|
||||||
|
|
||||||
GTKDOC_LIBS = \
|
|
||||||
$(GLIB_LIBS) \
|
|
||||||
$(top_builddir)/libgudev-1.0.la
|
|
||||||
|
|
||||||
# This includes the standard gtk-doc make rules, copied by gtkdocize.
|
|
||||||
include $(top_srcdir)/docs/gtk-doc.make
|
|
||||||
|
|
||||||
# Other files to distribute
|
|
||||||
# e.g. EXTRA_DIST += version.xml.in
|
|
||||||
EXTRA_DIST += version.xml.in
|
|
||||||
|
|
||||||
# Files not to distribute
|
|
||||||
# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
|
|
||||||
# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
|
|
||||||
#DISTCLEANFILES +=
|
|
||||||
|
|
||||||
# Comment this out if you want your docs-status tested during 'make check'
|
|
||||||
if ENABLE_GTK_DOC
|
|
||||||
if ENABLE_GTK_DOC_TESTS
|
|
||||||
#TESTS_ENVIRONMENT = cd $(top_srcdir)
|
|
||||||
#TESTS = $(GTKDOC_CHECK)
|
|
||||||
endif
|
|
||||||
endif
|
|
|
@ -1,52 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
||||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
|
|
||||||
[
|
|
||||||
<!ENTITY version SYSTEM "version.xml">
|
|
||||||
]>
|
|
||||||
<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
|
|
||||||
<bookinfo>
|
|
||||||
<title>GUdev Reference Manual</title>
|
|
||||||
<releaseinfo>
|
|
||||||
For version &version; — the latest version of this
|
|
||||||
documentation can be found at
|
|
||||||
<ulink role="online-location" url="http://www.freedesktop.org/software/systemd/gudev/">
|
|
||||||
http://www.freedesktop.org/software/systemd/gudev/
|
|
||||||
</ulink>.
|
|
||||||
</releaseinfo>
|
|
||||||
<copyright>
|
|
||||||
<year>2009-2012</year>
|
|
||||||
<holder>David Zeuthen <davidz@redhat.com></holder>
|
|
||||||
<holder>Bastien Nocera <hadess@hadess.net></holder>
|
|
||||||
</copyright>
|
|
||||||
</bookinfo>
|
|
||||||
|
|
||||||
<chapter id="ref-API">
|
|
||||||
<title>API Reference</title>
|
|
||||||
<xi:include href="xml/gudevclient.xml"/>
|
|
||||||
<xi:include href="xml/gudevdevice.xml"/>
|
|
||||||
<xi:include href="xml/gudevenumerator.xml"/>
|
|
||||||
</chapter>
|
|
||||||
|
|
||||||
<chapter id="gudev-hierarchy">
|
|
||||||
<title>Object Hierarchy</title>
|
|
||||||
<xi:include href="xml/tree_index.sgml"/>
|
|
||||||
</chapter>
|
|
||||||
|
|
||||||
<index id="api-index-full">
|
|
||||||
<title>API Index</title>
|
|
||||||
<xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
|
|
||||||
</index>
|
|
||||||
|
|
||||||
<index role="165">
|
|
||||||
<title>Index of new symbols in 165</title>
|
|
||||||
<xi:include href="xml/api-index-165.xml"><xi:fallback /></xi:include>
|
|
||||||
</index>
|
|
||||||
|
|
||||||
<index id="api-index-deprecated" role="deprecated">
|
|
||||||
<title>Index of deprecated API</title>
|
|
||||||
<xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
|
|
||||||
</index>
|
|
||||||
|
|
||||||
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
|
|
||||||
</book>
|
|
|
@ -1,102 +0,0 @@
|
||||||
<SECTION>
|
|
||||||
<FILE>gudevclient</FILE>
|
|
||||||
<TITLE>GUdevClient</TITLE>
|
|
||||||
GUdevClient
|
|
||||||
GUdevClientClass
|
|
||||||
GUdevDeviceType
|
|
||||||
GUdevDeviceNumber
|
|
||||||
g_udev_client_new
|
|
||||||
g_udev_client_query_by_subsystem
|
|
||||||
g_udev_client_query_by_device_number
|
|
||||||
g_udev_client_query_by_device_file
|
|
||||||
g_udev_client_query_by_sysfs_path
|
|
||||||
g_udev_client_query_by_subsystem_and_name
|
|
||||||
<SUBSECTION Standard>
|
|
||||||
G_UDEV_CLIENT
|
|
||||||
G_UDEV_IS_CLIENT
|
|
||||||
G_UDEV_TYPE_CLIENT
|
|
||||||
g_udev_client_get_type
|
|
||||||
G_UDEV_CLIENT_CLASS
|
|
||||||
G_UDEV_IS_CLIENT_CLASS
|
|
||||||
G_UDEV_CLIENT_GET_CLASS
|
|
||||||
<SUBSECTION Private>
|
|
||||||
GUdevClientPrivate
|
|
||||||
</SECTION>
|
|
||||||
|
|
||||||
<SECTION>
|
|
||||||
<FILE>gudevdevice</FILE>
|
|
||||||
<TITLE>GUdevDevice</TITLE>
|
|
||||||
GUdevDevice
|
|
||||||
GUdevDeviceClass
|
|
||||||
g_udev_device_get_subsystem
|
|
||||||
g_udev_device_get_devtype
|
|
||||||
g_udev_device_get_name
|
|
||||||
g_udev_device_get_number
|
|
||||||
g_udev_device_get_sysfs_path
|
|
||||||
g_udev_device_get_driver
|
|
||||||
g_udev_device_get_action
|
|
||||||
g_udev_device_get_seqnum
|
|
||||||
g_udev_device_get_device_type
|
|
||||||
g_udev_device_get_device_number
|
|
||||||
g_udev_device_get_device_file
|
|
||||||
g_udev_device_get_device_file_symlinks
|
|
||||||
g_udev_device_get_parent
|
|
||||||
g_udev_device_get_parent_with_subsystem
|
|
||||||
g_udev_device_get_tags
|
|
||||||
g_udev_device_get_is_initialized
|
|
||||||
g_udev_device_get_usec_since_initialized
|
|
||||||
g_udev_device_get_property_keys
|
|
||||||
g_udev_device_has_property
|
|
||||||
g_udev_device_get_property
|
|
||||||
g_udev_device_get_property_as_int
|
|
||||||
g_udev_device_get_property_as_uint64
|
|
||||||
g_udev_device_get_property_as_double
|
|
||||||
g_udev_device_get_property_as_boolean
|
|
||||||
g_udev_device_get_property_as_strv
|
|
||||||
g_udev_device_get_sysfs_attr_keys
|
|
||||||
g_udev_device_has_sysfs_attr
|
|
||||||
g_udev_device_get_sysfs_attr
|
|
||||||
g_udev_device_get_sysfs_attr_as_int
|
|
||||||
g_udev_device_get_sysfs_attr_as_uint64
|
|
||||||
g_udev_device_get_sysfs_attr_as_double
|
|
||||||
g_udev_device_get_sysfs_attr_as_boolean
|
|
||||||
g_udev_device_get_sysfs_attr_as_strv
|
|
||||||
<SUBSECTION Standard>
|
|
||||||
G_UDEV_DEVICE
|
|
||||||
G_UDEV_IS_DEVICE
|
|
||||||
G_UDEV_TYPE_DEVICE
|
|
||||||
g_udev_device_get_type
|
|
||||||
G_UDEV_DEVICE_CLASS
|
|
||||||
G_UDEV_IS_DEVICE_CLASS
|
|
||||||
G_UDEV_DEVICE_GET_CLASS
|
|
||||||
<SUBSECTION Private>
|
|
||||||
GUdevDevicePrivate
|
|
||||||
</SECTION>
|
|
||||||
|
|
||||||
<SECTION>
|
|
||||||
<FILE>gudevenumerator</FILE>
|
|
||||||
<TITLE>GUdevEnumerator</TITLE>
|
|
||||||
GUdevEnumerator
|
|
||||||
GUdevEnumeratorClass
|
|
||||||
g_udev_enumerator_new
|
|
||||||
g_udev_enumerator_add_match_subsystem
|
|
||||||
g_udev_enumerator_add_nomatch_subsystem
|
|
||||||
g_udev_enumerator_add_match_sysfs_attr
|
|
||||||
g_udev_enumerator_add_nomatch_sysfs_attr
|
|
||||||
g_udev_enumerator_add_match_property
|
|
||||||
g_udev_enumerator_add_match_name
|
|
||||||
g_udev_enumerator_add_match_tag
|
|
||||||
g_udev_enumerator_add_match_is_initialized
|
|
||||||
g_udev_enumerator_add_sysfs_path
|
|
||||||
g_udev_enumerator_execute
|
|
||||||
<SUBSECTION Standard>
|
|
||||||
G_UDEV_ENUMERATOR
|
|
||||||
G_UDEV_IS_ENUMERATOR
|
|
||||||
G_UDEV_TYPE_ENUMERATOR
|
|
||||||
g_udev_enumerator_get_type
|
|
||||||
G_UDEV_ENUMERATOR_CLASS
|
|
||||||
G_UDEV_IS_ENUMERATOR_CLASS
|
|
||||||
G_UDEV_ENUMERATOR_GET_CLASS
|
|
||||||
<SUBSECTION Private>
|
|
||||||
GUdevEnumeratorPrivate
|
|
||||||
</SECTION>
|
|
|
@ -1,4 +0,0 @@
|
||||||
g_udev_device_type_get_type
|
|
||||||
g_udev_device_get_type
|
|
||||||
g_udev_client_get_type
|
|
||||||
g_udev_enumerator_get_type
|
|
|
@ -1 +0,0 @@
|
||||||
@VERSION@
|
|
|
@ -1,19 +0,0 @@
|
||||||
/gtk-doc.make
|
|
||||||
/version.xml
|
|
||||||
/Makefile
|
|
||||||
/libudev-overrides.txt
|
|
||||||
/libudev-decl-list.txt
|
|
||||||
/libudev-decl.txt
|
|
||||||
/libudev-undeclared.txt
|
|
||||||
/libudev-undocumented.txt
|
|
||||||
/libudev-unused.txt
|
|
||||||
/libudev.args
|
|
||||||
/libudev.hierarchy
|
|
||||||
/libudev.interfaces
|
|
||||||
/libudev.prerequisites
|
|
||||||
/libudev.signals
|
|
||||||
/html/
|
|
||||||
/xml/
|
|
||||||
/*.stamp
|
|
||||||
/*.bak
|
|
||||||
/tmpl/
|
|
|
@ -1,109 +0,0 @@
|
||||||
## Process this file with automake to produce Makefile.in
|
|
||||||
|
|
||||||
# We require automake 1.10 at least.
|
|
||||||
AUTOMAKE_OPTIONS = 1.10 color-tests
|
|
||||||
|
|
||||||
# This is a blank Makefile.am for using gtk-doc.
|
|
||||||
# Copy this to your project's API docs directory and modify the variables to
|
|
||||||
# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
|
|
||||||
# of using the various options.
|
|
||||||
|
|
||||||
# The name of the module, e.g. 'glib'.
|
|
||||||
DOC_MODULE=libudev
|
|
||||||
|
|
||||||
# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
|
|
||||||
#DOC_MODULE_VERSION=2
|
|
||||||
|
|
||||||
# The top-level SGML file. You can change this if you want to.
|
|
||||||
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml
|
|
||||||
|
|
||||||
# The directory containing the source code. Relative to $(srcdir).
|
|
||||||
# gtk-doc will search all .c & .h files beneath here for inline comments
|
|
||||||
# documenting the functions and macros.
|
|
||||||
# e.g. DOC_SOURCE_DIR=../../../gtk
|
|
||||||
DOC_SOURCE_DIR=$(top_srcdir)/src/libudev
|
|
||||||
|
|
||||||
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
|
|
||||||
SCANGOBJ_OPTIONS=
|
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-scan.
|
|
||||||
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
|
|
||||||
SCAN_OPTIONS=
|
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-mkdb.
|
|
||||||
# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
|
|
||||||
MKDB_OPTIONS=--xml-mode --output-format=xml --name-space=udev
|
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-mktmpl
|
|
||||||
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
|
|
||||||
MKTMPL_OPTIONS=
|
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-mkhtml
|
|
||||||
MKHTML_OPTIONS=--path=$(abs_srcdir) --path=$(abs_builddir)
|
|
||||||
|
|
||||||
# Extra options to supply to gtkdoc-fixref. Not normally needed.
|
|
||||||
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
|
|
||||||
FIXXREF_OPTIONS=>/dev/null 2>&1
|
|
||||||
|
|
||||||
# Used for dependencies. The docs will be rebuilt if any of these change.
|
|
||||||
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
|
|
||||||
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
|
|
||||||
HFILE_GLOB=$(top_srcdir)/src/libudev/libudev*.h
|
|
||||||
CFILE_GLOB=$(top_srcdir)/src/libudev/libudev*.c
|
|
||||||
|
|
||||||
# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
|
|
||||||
# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
|
|
||||||
EXTRA_HFILES=
|
|
||||||
|
|
||||||
# Header files to ignore when scanning. Use base file name, no paths
|
|
||||||
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
|
|
||||||
IGNORE_HFILES = libudev-private.h
|
|
||||||
|
|
||||||
# Images to copy into HTML directory.
|
|
||||||
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
|
|
||||||
HTML_IMAGES=
|
|
||||||
|
|
||||||
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
|
|
||||||
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
|
|
||||||
content_files = version.xml
|
|
||||||
|
|
||||||
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
|
|
||||||
# These files must be listed here *and* in content_files
|
|
||||||
# e.g. expand_content_files=running.sgml
|
|
||||||
expand_content_files=
|
|
||||||
|
|
||||||
# Hack, hack. You silly gtk-doc, you must not add CFLAGS multiple
|
|
||||||
# times when calling gcc; it surely can not work with options that must
|
|
||||||
# be listed only once.
|
|
||||||
# Kill CFLAGS here because gtk-doc thinks adding CFLAGS to CC _and_ also
|
|
||||||
# adding CFLAGS itself again would work.
|
|
||||||
override CFLAGS=
|
|
||||||
override LDFLAGS=
|
|
||||||
|
|
||||||
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
|
|
||||||
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
|
|
||||||
# signals and properties.
|
|
||||||
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
|
|
||||||
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
|
|
||||||
GTKDOC_CFLAGS=
|
|
||||||
GTKDOC_LIBS=
|
|
||||||
|
|
||||||
# This includes the standard gtk-doc make rules, copied by gtkdocize.
|
|
||||||
include $(top_srcdir)/docs/gtk-doc.make
|
|
||||||
|
|
||||||
# Other files to distribute
|
|
||||||
# e.g. EXTRA_DIST += version.xml.in
|
|
||||||
EXTRA_DIST += version.xml.in
|
|
||||||
|
|
||||||
# Files not to distribute
|
|
||||||
# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
|
|
||||||
# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
|
|
||||||
#DISTCLEANFILES +=
|
|
||||||
|
|
||||||
# Comment this out if you want your docs-status tested during 'make check'
|
|
||||||
if ENABLE_GTK_DOC
|
|
||||||
if ENABLE_GTK_DOC_TESTS
|
|
||||||
#TESTS_ENVIRONMENT = cd $(top_srcdir)
|
|
||||||
#TESTS = $(GTKDOC_CHECK)
|
|
||||||
endif
|
|
||||||
endif
|
|
|
@ -1,40 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
|
||||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
|
|
||||||
[
|
|
||||||
<!ENTITY version SYSTEM "version.xml">
|
|
||||||
]>
|
|
||||||
<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
|
|
||||||
<bookinfo>
|
|
||||||
<title>libudev Reference Manual</title>
|
|
||||||
<releaseinfo>
|
|
||||||
For version &version; — the latest version of this
|
|
||||||
documentation can be found at
|
|
||||||
<ulink role="online-location" url="http://www.freedesktop.org/software/systemd/libudev/">
|
|
||||||
http://www.freedesktop.org/software/systemd/libudev/
|
|
||||||
</ulink>.
|
|
||||||
</releaseinfo>
|
|
||||||
<copyright>
|
|
||||||
<year>2009-2012</year>
|
|
||||||
<holder>Kay Sievers <kay@vrfy.org></holder>
|
|
||||||
</copyright>
|
|
||||||
</bookinfo>
|
|
||||||
|
|
||||||
<chapter>
|
|
||||||
<title>API Reference</title>
|
|
||||||
<xi:include href="xml/libudev.xml"/>
|
|
||||||
<xi:include href="xml/libudev-list.xml"/>
|
|
||||||
<xi:include href="xml/libudev-device.xml"/>
|
|
||||||
<xi:include href="xml/libudev-monitor.xml"/>
|
|
||||||
<xi:include href="xml/libudev-enumerate.xml"/>
|
|
||||||
<xi:include href="xml/libudev-queue.xml"/>
|
|
||||||
<xi:include href="xml/libudev-hwdb.xml"/>
|
|
||||||
<xi:include href="xml/libudev-util.xml"/>
|
|
||||||
<xi:include href="xml/api-index-deprecated.xml"/>
|
|
||||||
</chapter>
|
|
||||||
|
|
||||||
<index id="api-index-full">
|
|
||||||
<title>Index</title>
|
|
||||||
<xi:include href="xml/api-index-full.xml"/>
|
|
||||||
</index>
|
|
||||||
</book>
|
|
|
@ -1,137 +0,0 @@
|
||||||
<SECTION>
|
|
||||||
<FILE>libudev</FILE>
|
|
||||||
<TITLE>udev</TITLE>
|
|
||||||
udev
|
|
||||||
udev_ref
|
|
||||||
udev_unref
|
|
||||||
udev_new
|
|
||||||
udev_set_log_fn
|
|
||||||
udev_get_log_priority
|
|
||||||
udev_set_log_priority
|
|
||||||
udev_get_userdata
|
|
||||||
udev_set_userdata
|
|
||||||
</SECTION>
|
|
||||||
|
|
||||||
<SECTION>
|
|
||||||
<FILE>libudev-list</FILE>
|
|
||||||
<TITLE>udev_list</TITLE>
|
|
||||||
udev_list_entry
|
|
||||||
udev_list_entry_get_next
|
|
||||||
udev_list_entry_get_by_name
|
|
||||||
udev_list_entry_get_name
|
|
||||||
udev_list_entry_get_value
|
|
||||||
udev_list_entry_foreach
|
|
||||||
</SECTION>
|
|
||||||
|
|
||||||
<SECTION>
|
|
||||||
<FILE>libudev-device</FILE>
|
|
||||||
<TITLE>udev_device</TITLE>
|
|
||||||
udev_device
|
|
||||||
udev_device_ref
|
|
||||||
udev_device_unref
|
|
||||||
udev_device_get_udev
|
|
||||||
udev_device_new_from_syspath
|
|
||||||
udev_device_new_from_devnum
|
|
||||||
udev_device_new_from_subsystem_sysname
|
|
||||||
udev_device_new_from_device_id
|
|
||||||
udev_device_new_from_environment
|
|
||||||
udev_device_get_parent
|
|
||||||
udev_device_get_parent_with_subsystem_devtype
|
|
||||||
udev_device_get_devpath
|
|
||||||
udev_device_get_subsystem
|
|
||||||
udev_device_get_devtype
|
|
||||||
udev_device_get_syspath
|
|
||||||
udev_device_get_sysname
|
|
||||||
udev_device_get_sysnum
|
|
||||||
udev_device_get_devnode
|
|
||||||
udev_device_get_is_initialized
|
|
||||||
udev_device_get_devlinks_list_entry
|
|
||||||
udev_device_get_properties_list_entry
|
|
||||||
udev_device_get_tags_list_entry
|
|
||||||
udev_device_get_property_value
|
|
||||||
udev_device_get_driver
|
|
||||||
udev_device_get_devnum
|
|
||||||
udev_device_get_action
|
|
||||||
udev_device_get_sysattr_value
|
|
||||||
udev_device_set_sysattr_value
|
|
||||||
udev_device_get_sysattr_list_entry
|
|
||||||
udev_device_get_seqnum
|
|
||||||
udev_device_get_usec_since_initialized
|
|
||||||
udev_device_has_tag
|
|
||||||
</SECTION>
|
|
||||||
|
|
||||||
<SECTION>
|
|
||||||
<FILE>libudev-monitor</FILE>
|
|
||||||
<TITLE>udev_monitor</TITLE>
|
|
||||||
udev_monitor
|
|
||||||
udev_monitor_ref
|
|
||||||
udev_monitor_unref
|
|
||||||
udev_monitor_get_udev
|
|
||||||
udev_monitor_new_from_netlink
|
|
||||||
udev_monitor_enable_receiving
|
|
||||||
udev_monitor_set_receive_buffer_size
|
|
||||||
udev_monitor_get_fd
|
|
||||||
udev_monitor_receive_device
|
|
||||||
udev_monitor_filter_add_match_subsystem_devtype
|
|
||||||
udev_monitor_filter_add_match_tag
|
|
||||||
udev_monitor_filter_update
|
|
||||||
udev_monitor_filter_remove
|
|
||||||
</SECTION>
|
|
||||||
|
|
||||||
<SECTION>
|
|
||||||
<FILE>libudev-enumerate</FILE>
|
|
||||||
<TITLE>udev_enumerate</TITLE>
|
|
||||||
udev_enumerate
|
|
||||||
udev_enumerate_ref
|
|
||||||
udev_enumerate_unref
|
|
||||||
udev_enumerate_get_udev
|
|
||||||
udev_enumerate_new
|
|
||||||
udev_enumerate_add_match_subsystem
|
|
||||||
udev_enumerate_add_nomatch_subsystem
|
|
||||||
udev_enumerate_add_match_sysattr
|
|
||||||
udev_enumerate_add_nomatch_sysattr
|
|
||||||
udev_enumerate_add_match_property
|
|
||||||
udev_enumerate_add_match_tag
|
|
||||||
udev_enumerate_add_match_parent
|
|
||||||
udev_enumerate_add_match_is_initialized
|
|
||||||
udev_enumerate_add_match_sysname
|
|
||||||
udev_enumerate_add_syspath
|
|
||||||
udev_enumerate_scan_devices
|
|
||||||
udev_enumerate_scan_subsystems
|
|
||||||
udev_enumerate_get_list_entry
|
|
||||||
</SECTION>
|
|
||||||
|
|
||||||
<SECTION>
|
|
||||||
<FILE>libudev-queue</FILE>
|
|
||||||
<TITLE>udev_queue</TITLE>
|
|
||||||
udev_queue
|
|
||||||
udev_queue_ref
|
|
||||||
udev_queue_unref
|
|
||||||
udev_queue_get_udev
|
|
||||||
udev_queue_new
|
|
||||||
udev_queue_get_udev_is_active
|
|
||||||
udev_queue_get_queue_is_empty
|
|
||||||
udev_queue_get_seqnum_is_finished
|
|
||||||
udev_queue_get_seqnum_sequence_is_finished
|
|
||||||
udev_queue_get_queued_list_entry
|
|
||||||
udev_queue_get_kernel_seqnum
|
|
||||||
udev_queue_get_udev_seqnum
|
|
||||||
udev_queue_get_fd
|
|
||||||
udev_queue_flush
|
|
||||||
</SECTION>
|
|
||||||
|
|
||||||
<SECTION>
|
|
||||||
<FILE>libudev-hwdb</FILE>
|
|
||||||
<TITLE>udev_hwdb</TITLE>
|
|
||||||
udev_hwdb
|
|
||||||
udev_hwdb_ref
|
|
||||||
udev_hwdb_unref
|
|
||||||
udev_hwdb_new
|
|
||||||
udev_hwdb_get_properties_list_entry
|
|
||||||
</SECTION>
|
|
||||||
|
|
||||||
<SECTION>
|
|
||||||
<FILE>libudev-util</FILE>
|
|
||||||
<TITLE>udev_util</TITLE>
|
|
||||||
udev_util_encode_string
|
|
||||||
</SECTION>
|
|
|
@ -1 +0,0 @@
|
||||||
@VERSION@
|
|
|
@ -4,4 +4,3 @@ ltoptions.m4
|
||||||
ltsugar.m4
|
ltsugar.m4
|
||||||
ltversion.m4
|
ltversion.m4
|
||||||
lt~obsolete.m4
|
lt~obsolete.m4
|
||||||
gtk-doc.m4
|
|
||||||
|
|
|
@ -232,18 +232,6 @@
|
||||||
</xsl:attribute>
|
</xsl:attribute>
|
||||||
<xsl:text>Python </xsl:text>
|
<xsl:text>Python </xsl:text>
|
||||||
</a>·
|
</a>·
|
||||||
<a>
|
|
||||||
<xsl:attribute name="href">
|
|
||||||
<xsl:text>../libudev/index.html</xsl:text>
|
|
||||||
</xsl:attribute>
|
|
||||||
<xsl:text>libudev </xsl:text>
|
|
||||||
</a>·
|
|
||||||
<a>
|
|
||||||
<xsl:attribute name="href">
|
|
||||||
<xsl:text>../libudev/index.html</xsl:text>
|
|
||||||
</xsl:attribute>
|
|
||||||
<xsl:text>gudev </xsl:text>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<span style="float:right">
|
<span style="float:right">
|
||||||
<xsl:text>systemd </xsl:text>
|
<xsl:text>systemd </xsl:text>
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
gudev-1.0.pc
|
|
||||||
gudevenumtypes.c
|
|
||||||
gudevenumtypes.h
|
|
||||||
gudevmarshal.c
|
|
||||||
gudevmarshal.h
|
|
||||||
GUdev-1.0.gir
|
|
||||||
GUdev-1.0.typelib
|
|
|
@ -1 +0,0 @@
|
||||||
../Makefile
|
|
|
@ -1,75 +0,0 @@
|
||||||
#!/usr/bin/env gjs-console
|
|
||||||
|
|
||||||
// This currently depends on the following patches to gjs
|
|
||||||
//
|
|
||||||
// http://bugzilla.gnome.org/show_bug.cgi?id=584558
|
|
||||||
// http://bugzilla.gnome.org/show_bug.cgi?id=584560
|
|
||||||
// http://bugzilla.gnome.org/show_bug.cgi?id=584568
|
|
||||||
|
|
||||||
const GUdev = imports.gi.GUdev;
|
|
||||||
const Mainloop = imports.mainloop;
|
|
||||||
|
|
||||||
function print_device (device) {
|
|
||||||
print (" subsystem: " + device.get_subsystem ());
|
|
||||||
print (" devtype: " + device.get_devtype ());
|
|
||||||
print (" name: " + device.get_name ());
|
|
||||||
print (" number: " + device.get_number ());
|
|
||||||
print (" sysfs_path: " + device.get_sysfs_path ());
|
|
||||||
print (" driver: " + device.get_driver ());
|
|
||||||
print (" action: " + device.get_action ());
|
|
||||||
print (" seqnum: " + device.get_seqnum ());
|
|
||||||
print (" device type: " + device.get_device_type ());
|
|
||||||
print (" device number: " + device.get_device_number ());
|
|
||||||
print (" device file: " + device.get_device_file ());
|
|
||||||
print (" device file symlinks: " + device.get_device_file_symlinks ());
|
|
||||||
print (" foo: " + device.get_sysfs_attr_as_strv ("stat"));
|
|
||||||
var keys = device.get_property_keys ();
|
|
||||||
for (var n = 0; n < keys.length; n++) {
|
|
||||||
print (" " + keys[n] + "=" + device.get_property (keys[n]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function on_uevent (client, action, device) {
|
|
||||||
print ("action " + action + " on device " + device.get_sysfs_path());
|
|
||||||
print_device (device);
|
|
||||||
print ("");
|
|
||||||
}
|
|
||||||
|
|
||||||
var client = new GUdev.Client ({subsystems: ["block", "usb/usb_interface"]});
|
|
||||||
client.connect ("uevent", on_uevent);
|
|
||||||
|
|
||||||
var block_devices = client.query_by_subsystem ("block");
|
|
||||||
for (var n = 0; n < block_devices.length; n++) {
|
|
||||||
print ("block device: " + block_devices[n].get_device_file ());
|
|
||||||
}
|
|
||||||
|
|
||||||
var d;
|
|
||||||
|
|
||||||
d = client.query_by_device_number (GUdev.DeviceType.BLOCK, 0x0810);
|
|
||||||
if (d == null) {
|
|
||||||
print ("query_by_device_number 0x810 -> null");
|
|
||||||
} else {
|
|
||||||
print ("query_by_device_number 0x810 -> " + d.get_device_file ());
|
|
||||||
var dd = d.get_parent_with_subsystem ("usb", null);
|
|
||||||
print_device (dd);
|
|
||||||
print ("--------------------------------------------------------------------------");
|
|
||||||
while (d != null) {
|
|
||||||
print_device (d);
|
|
||||||
print ("");
|
|
||||||
d = d.get_parent ();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
d = client.query_by_sysfs_path ("/sys/block/sda/sda1");
|
|
||||||
print ("query_by_sysfs_path (\"/sys/block/sda1\") -> " + d.get_device_file ());
|
|
||||||
|
|
||||||
d = client.query_by_subsystem_and_name ("block", "sda2");
|
|
||||||
print ("query_by_subsystem_and_name (\"block\", \"sda2\") -> " + d.get_device_file ());
|
|
||||||
|
|
||||||
d = client.query_by_device_file ("/dev/sda");
|
|
||||||
print ("query_by_device_file (\"/dev/sda\") -> " + d.get_device_file ());
|
|
||||||
|
|
||||||
d = client.query_by_device_file ("/dev/block/8:0");
|
|
||||||
print ("query_by_device_file (\"/dev/block/8:0\") -> " + d.get_device_file ());
|
|
||||||
|
|
||||||
Mainloop.run('udev-example');
|
|
|
@ -1,11 +0,0 @@
|
||||||
prefix=@prefix@
|
|
||||||
exec_prefix=@exec_prefix@
|
|
||||||
libdir=@libdir@
|
|
||||||
includedir=@includedir@
|
|
||||||
|
|
||||||
Name: gudev-1.0
|
|
||||||
Description: GObject bindings for libudev
|
|
||||||
Version: @VERSION@
|
|
||||||
Requires: glib-2.0, gobject-2.0
|
|
||||||
Libs: -L${libdir} -lgudev-1.0
|
|
||||||
Cflags: -I${includedir}/gudev-1.0
|
|
|
@ -1,32 +0,0 @@
|
||||||
/* -*- Mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 David Zeuthen <davidz@redhat.com>
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __G_UDEV_H__
|
|
||||||
#define __G_UDEV_H__
|
|
||||||
|
|
||||||
#define _GUDEV_INSIDE_GUDEV_H
|
|
||||||
#include <gudev/gudevenums.h>
|
|
||||||
#include <gudev/gudevenumtypes.h>
|
|
||||||
#include <gudev/gudevtypes.h>
|
|
||||||
#include <gudev/gudevclient.h>
|
|
||||||
#include <gudev/gudevdevice.h>
|
|
||||||
#include <gudev/gudevenumerator.h>
|
|
||||||
#undef _GUDEV_INSIDE_GUDEV_H
|
|
||||||
|
|
||||||
#endif /* __G_UDEV_H__ */
|
|
|
@ -1,533 +0,0 @@
|
||||||
/* -*- Mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008-2010 David Zeuthen <davidz@redhat.com>
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "config.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
|
|
||||||
#include "gudevclient.h"
|
|
||||||
#include "gudevdevice.h"
|
|
||||||
#include "gudevmarshal.h"
|
|
||||||
#include "gudevprivate.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SECTION:gudevclient
|
|
||||||
* @short_description: Query devices and listen to uevents
|
|
||||||
*
|
|
||||||
* #GUdevClient is used to query information about devices on a Linux
|
|
||||||
* system from the Linux kernel and the udev device
|
|
||||||
* manager.
|
|
||||||
*
|
|
||||||
* Device information is retrieved from the kernel (through the
|
|
||||||
* <literal>sysfs</literal> filesystem) and the udev daemon (through a
|
|
||||||
* <literal>tmpfs</literal> filesystem) and presented through
|
|
||||||
* #GUdevDevice objects. This means that no blocking IO ever happens
|
|
||||||
* (in both cases, we are essentially just reading data from kernel
|
|
||||||
* memory) and as such there are no asynchronous versions of the
|
|
||||||
* provided methods.
|
|
||||||
*
|
|
||||||
* To get #GUdevDevice objects, use
|
|
||||||
* g_udev_client_query_by_subsystem(),
|
|
||||||
* g_udev_client_query_by_device_number(),
|
|
||||||
* g_udev_client_query_by_device_file(),
|
|
||||||
* g_udev_client_query_by_sysfs_path(),
|
|
||||||
* g_udev_client_query_by_subsystem_and_name()
|
|
||||||
* or the #GUdevEnumerator type.
|
|
||||||
*
|
|
||||||
* To listen to uevents, connect to the #GUdevClient::uevent signal.
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct _GUdevClientPrivate
|
|
||||||
{
|
|
||||||
GSource *watch_source;
|
|
||||||
struct udev *udev;
|
|
||||||
struct udev_monitor *monitor;
|
|
||||||
|
|
||||||
gchar **subsystems;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
PROP_0,
|
|
||||||
PROP_SUBSYSTEMS,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
UEVENT_SIGNAL,
|
|
||||||
LAST_SIGNAL,
|
|
||||||
};
|
|
||||||
|
|
||||||
static guint signals[LAST_SIGNAL] = { 0 };
|
|
||||||
|
|
||||||
G_DEFINE_TYPE (GUdevClient, g_udev_client, G_TYPE_OBJECT)
|
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
static gboolean
|
|
||||||
monitor_event (GIOChannel *source,
|
|
||||||
GIOCondition condition,
|
|
||||||
gpointer data)
|
|
||||||
{
|
|
||||||
GUdevClient *client = (GUdevClient *) data;
|
|
||||||
GUdevDevice *device;
|
|
||||||
struct udev_device *udevice;
|
|
||||||
|
|
||||||
if (client->priv->monitor == NULL)
|
|
||||||
goto out;
|
|
||||||
udevice = udev_monitor_receive_device (client->priv->monitor);
|
|
||||||
if (udevice == NULL)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
device = _g_udev_device_new (udevice);
|
|
||||||
udev_device_unref (udevice);
|
|
||||||
g_signal_emit (client,
|
|
||||||
signals[UEVENT_SIGNAL],
|
|
||||||
0,
|
|
||||||
g_udev_device_get_action (device),
|
|
||||||
device);
|
|
||||||
g_object_unref (device);
|
|
||||||
|
|
||||||
out:
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
g_udev_client_finalize (GObject *object)
|
|
||||||
{
|
|
||||||
GUdevClient *client = G_UDEV_CLIENT (object);
|
|
||||||
|
|
||||||
if (client->priv->watch_source != NULL)
|
|
||||||
{
|
|
||||||
g_source_destroy (client->priv->watch_source);
|
|
||||||
client->priv->watch_source = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (client->priv->monitor != NULL)
|
|
||||||
{
|
|
||||||
udev_monitor_unref (client->priv->monitor);
|
|
||||||
client->priv->monitor = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (client->priv->udev != NULL)
|
|
||||||
{
|
|
||||||
udev_unref (client->priv->udev);
|
|
||||||
client->priv->udev = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
g_strfreev (client->priv->subsystems);
|
|
||||||
|
|
||||||
if (G_OBJECT_CLASS (g_udev_client_parent_class)->finalize != NULL)
|
|
||||||
G_OBJECT_CLASS (g_udev_client_parent_class)->finalize (object);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
g_udev_client_set_property (GObject *object,
|
|
||||||
guint prop_id,
|
|
||||||
const GValue *value,
|
|
||||||
GParamSpec *pspec)
|
|
||||||
{
|
|
||||||
GUdevClient *client = G_UDEV_CLIENT (object);
|
|
||||||
|
|
||||||
switch (prop_id)
|
|
||||||
{
|
|
||||||
case PROP_SUBSYSTEMS:
|
|
||||||
if (client->priv->subsystems != NULL)
|
|
||||||
g_strfreev (client->priv->subsystems);
|
|
||||||
client->priv->subsystems = g_strdupv (g_value_get_boxed (value));
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
g_udev_client_get_property (GObject *object,
|
|
||||||
guint prop_id,
|
|
||||||
GValue *value,
|
|
||||||
GParamSpec *pspec)
|
|
||||||
{
|
|
||||||
GUdevClient *client = G_UDEV_CLIENT (object);
|
|
||||||
|
|
||||||
switch (prop_id)
|
|
||||||
{
|
|
||||||
case PROP_SUBSYSTEMS:
|
|
||||||
g_value_set_boxed (value, client->priv->subsystems);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
g_udev_client_constructed (GObject *object)
|
|
||||||
{
|
|
||||||
GUdevClient *client = G_UDEV_CLIENT (object);
|
|
||||||
GIOChannel *channel;
|
|
||||||
guint n;
|
|
||||||
|
|
||||||
client->priv->udev = udev_new ();
|
|
||||||
|
|
||||||
/* connect to event source */
|
|
||||||
client->priv->monitor = udev_monitor_new_from_netlink (client->priv->udev, "udev");
|
|
||||||
|
|
||||||
//g_debug ("ss = %p", client->priv->subsystems);
|
|
||||||
|
|
||||||
if (client->priv->subsystems != NULL)
|
|
||||||
{
|
|
||||||
/* install subsystem filters to only wake up for certain events */
|
|
||||||
for (n = 0; client->priv->subsystems[n] != NULL; n++)
|
|
||||||
{
|
|
||||||
gchar *subsystem;
|
|
||||||
gchar *devtype;
|
|
||||||
gchar *s;
|
|
||||||
|
|
||||||
subsystem = g_strdup (client->priv->subsystems[n]);
|
|
||||||
devtype = NULL;
|
|
||||||
|
|
||||||
//g_debug ("s = '%s'", subsystem);
|
|
||||||
|
|
||||||
s = strstr (subsystem, "/");
|
|
||||||
if (s != NULL)
|
|
||||||
{
|
|
||||||
devtype = s + 1;
|
|
||||||
*s = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (client->priv->monitor != NULL)
|
|
||||||
udev_monitor_filter_add_match_subsystem_devtype (client->priv->monitor, subsystem, devtype);
|
|
||||||
|
|
||||||
g_free (subsystem);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* listen to events, and buffer them */
|
|
||||||
if (client->priv->monitor != NULL)
|
|
||||||
{
|
|
||||||
udev_monitor_enable_receiving (client->priv->monitor);
|
|
||||||
channel = g_io_channel_unix_new (udev_monitor_get_fd (client->priv->monitor));
|
|
||||||
client->priv->watch_source = g_io_create_watch (channel, G_IO_IN);
|
|
||||||
g_io_channel_unref (channel);
|
|
||||||
g_source_set_callback (client->priv->watch_source, (GSourceFunc) monitor_event, client, NULL);
|
|
||||||
g_source_attach (client->priv->watch_source, g_main_context_get_thread_default ());
|
|
||||||
g_source_unref (client->priv->watch_source);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
client->priv->watch_source = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (G_OBJECT_CLASS (g_udev_client_parent_class)->constructed != NULL)
|
|
||||||
G_OBJECT_CLASS (g_udev_client_parent_class)->constructed (object);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
g_udev_client_class_init (GUdevClientClass *klass)
|
|
||||||
{
|
|
||||||
GObjectClass *gobject_class = (GObjectClass *) klass;
|
|
||||||
|
|
||||||
gobject_class->constructed = g_udev_client_constructed;
|
|
||||||
gobject_class->set_property = g_udev_client_set_property;
|
|
||||||
gobject_class->get_property = g_udev_client_get_property;
|
|
||||||
gobject_class->finalize = g_udev_client_finalize;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GUdevClient:subsystems:
|
|
||||||
*
|
|
||||||
* The subsystems to listen for uevents on.
|
|
||||||
*
|
|
||||||
* To listen for only a specific DEVTYPE for a given SUBSYSTEM, use
|
|
||||||
* "subsystem/devtype". For example, to only listen for uevents
|
|
||||||
* where SUBSYSTEM is usb and DEVTYPE is usb_interface, use
|
|
||||||
* "usb/usb_interface".
|
|
||||||
*
|
|
||||||
* If this property is %NULL, then no events will be reported. If
|
|
||||||
* it's the empty array, events from all subsystems will be
|
|
||||||
* reported.
|
|
||||||
*/
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_SUBSYSTEMS,
|
|
||||||
g_param_spec_boxed ("subsystems",
|
|
||||||
"The subsystems to listen for changes on",
|
|
||||||
"The subsystems to listen for changes on",
|
|
||||||
G_TYPE_STRV,
|
|
||||||
G_PARAM_CONSTRUCT_ONLY |
|
|
||||||
G_PARAM_READWRITE));
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GUdevClient::uevent:
|
|
||||||
* @client: The #GUdevClient receiving the event.
|
|
||||||
* @action: The action for the uevent e.g. "add", "remove", "change", "move", etc.
|
|
||||||
* @device: Details about the #GUdevDevice the event is for.
|
|
||||||
*
|
|
||||||
* Emitted when @client receives an uevent.
|
|
||||||
*
|
|
||||||
* This signal is emitted in the
|
|
||||||
* <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
|
|
||||||
* of the thread that @client was created in.
|
|
||||||
*/
|
|
||||||
signals[UEVENT_SIGNAL] = g_signal_new ("uevent",
|
|
||||||
G_TYPE_FROM_CLASS (klass),
|
|
||||||
G_SIGNAL_RUN_LAST,
|
|
||||||
G_STRUCT_OFFSET (GUdevClientClass, uevent),
|
|
||||||
NULL,
|
|
||||||
NULL,
|
|
||||||
g_udev_marshal_VOID__STRING_OBJECT,
|
|
||||||
G_TYPE_NONE,
|
|
||||||
2,
|
|
||||||
G_TYPE_STRING,
|
|
||||||
G_UDEV_TYPE_DEVICE);
|
|
||||||
|
|
||||||
g_type_class_add_private (klass, sizeof (GUdevClientPrivate));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
g_udev_client_init (GUdevClient *client)
|
|
||||||
{
|
|
||||||
client->priv = G_TYPE_INSTANCE_GET_PRIVATE (client,
|
|
||||||
G_UDEV_TYPE_CLIENT,
|
|
||||||
GUdevClientPrivate);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_client_new:
|
|
||||||
* @subsystems: (array zero-terminated=1) (element-type utf8) (transfer none) (allow-none): A %NULL terminated string array of subsystems to listen for uevents on, %NULL to not listen on uevents at all, or an empty array to listen to uevents on all subsystems. See the documentation for the #GUdevClient:subsystems property for details on this parameter.
|
|
||||||
*
|
|
||||||
* Constructs a #GUdevClient object that can be used to query
|
|
||||||
* information about devices. Connect to the #GUdevClient::uevent
|
|
||||||
* signal to listen for uevents. Note that signals are emitted in the
|
|
||||||
* <link linkend="g-main-context-push-thread-default">thread-default main loop</link>
|
|
||||||
* of the thread that you call this constructor from.
|
|
||||||
*
|
|
||||||
* Returns: A new #GUdevClient object. Free with g_object_unref().
|
|
||||||
*/
|
|
||||||
GUdevClient *
|
|
||||||
g_udev_client_new (const gchar * const *subsystems)
|
|
||||||
{
|
|
||||||
return G_UDEV_CLIENT (g_object_new (G_UDEV_TYPE_CLIENT, "subsystems", subsystems, NULL));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_client_query_by_subsystem:
|
|
||||||
* @client: A #GUdevClient.
|
|
||||||
* @subsystem: (allow-none): The subsystem to get devices for or %NULL to get all devices.
|
|
||||||
*
|
|
||||||
* Gets all devices belonging to @subsystem.
|
|
||||||
*
|
|
||||||
* Returns: (nullable) (element-type GUdevDevice) (transfer full): A
|
|
||||||
* list of #GUdevDevice objects. The caller should free the result by
|
|
||||||
* using g_object_unref() on each element in the list and then
|
|
||||||
* g_list_free() on the list.
|
|
||||||
*/
|
|
||||||
GList *
|
|
||||||
g_udev_client_query_by_subsystem (GUdevClient *client,
|
|
||||||
const gchar *subsystem)
|
|
||||||
{
|
|
||||||
struct udev_enumerate *enumerate;
|
|
||||||
struct udev_list_entry *l, *devices;
|
|
||||||
GList *ret;
|
|
||||||
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_CLIENT (client), NULL);
|
|
||||||
|
|
||||||
ret = NULL;
|
|
||||||
|
|
||||||
/* prepare a device scan */
|
|
||||||
enumerate = udev_enumerate_new (client->priv->udev);
|
|
||||||
|
|
||||||
/* filter for subsystem */
|
|
||||||
if (subsystem != NULL)
|
|
||||||
udev_enumerate_add_match_subsystem (enumerate, subsystem);
|
|
||||||
/* retrieve the list */
|
|
||||||
udev_enumerate_scan_devices (enumerate);
|
|
||||||
|
|
||||||
/* add devices to the list */
|
|
||||||
devices = udev_enumerate_get_list_entry (enumerate);
|
|
||||||
for (l = devices; l != NULL; l = udev_list_entry_get_next (l))
|
|
||||||
{
|
|
||||||
struct udev_device *udevice;
|
|
||||||
GUdevDevice *device;
|
|
||||||
|
|
||||||
udevice = udev_device_new_from_syspath (udev_enumerate_get_udev (enumerate),
|
|
||||||
udev_list_entry_get_name (l));
|
|
||||||
if (udevice == NULL)
|
|
||||||
continue;
|
|
||||||
device = _g_udev_device_new (udevice);
|
|
||||||
udev_device_unref (udevice);
|
|
||||||
ret = g_list_prepend (ret, device);
|
|
||||||
}
|
|
||||||
udev_enumerate_unref (enumerate);
|
|
||||||
|
|
||||||
ret = g_list_reverse (ret);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_client_query_by_device_number:
|
|
||||||
* @client: A #GUdevClient.
|
|
||||||
* @type: A value from the #GUdevDeviceType enumeration.
|
|
||||||
* @number: A device number.
|
|
||||||
*
|
|
||||||
* Looks up a device for a type and device number.
|
|
||||||
*
|
|
||||||
* Returns: (nullable) (transfer full): A #GUdevDevice object or %NULL
|
|
||||||
* if the device was not found. Free with g_object_unref().
|
|
||||||
*/
|
|
||||||
GUdevDevice *
|
|
||||||
g_udev_client_query_by_device_number (GUdevClient *client,
|
|
||||||
GUdevDeviceType type,
|
|
||||||
GUdevDeviceNumber number)
|
|
||||||
{
|
|
||||||
struct udev_device *udevice;
|
|
||||||
GUdevDevice *device;
|
|
||||||
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_CLIENT (client), NULL);
|
|
||||||
|
|
||||||
device = NULL;
|
|
||||||
udevice = udev_device_new_from_devnum (client->priv->udev, type, number);
|
|
||||||
|
|
||||||
if (udevice == NULL)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
device = _g_udev_device_new (udevice);
|
|
||||||
udev_device_unref (udevice);
|
|
||||||
|
|
||||||
out:
|
|
||||||
return device;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_client_query_by_device_file:
|
|
||||||
* @client: A #GUdevClient.
|
|
||||||
* @device_file: A device file.
|
|
||||||
*
|
|
||||||
* Looks up a device for a device file.
|
|
||||||
*
|
|
||||||
* Returns: (nullable) (transfer full): A #GUdevDevice object or %NULL
|
|
||||||
* if the device was not found. Free with g_object_unref().
|
|
||||||
*/
|
|
||||||
GUdevDevice *
|
|
||||||
g_udev_client_query_by_device_file (GUdevClient *client,
|
|
||||||
const gchar *device_file)
|
|
||||||
{
|
|
||||||
struct stat stat_buf;
|
|
||||||
GUdevDevice *device;
|
|
||||||
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_CLIENT (client), NULL);
|
|
||||||
g_return_val_if_fail (device_file != NULL, NULL);
|
|
||||||
|
|
||||||
device = NULL;
|
|
||||||
|
|
||||||
if (stat (device_file, &stat_buf) != 0)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
if (stat_buf.st_rdev == 0)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
if (S_ISBLK (stat_buf.st_mode))
|
|
||||||
device = g_udev_client_query_by_device_number (client, G_UDEV_DEVICE_TYPE_BLOCK, stat_buf.st_rdev);
|
|
||||||
else if (S_ISCHR (stat_buf.st_mode))
|
|
||||||
device = g_udev_client_query_by_device_number (client, G_UDEV_DEVICE_TYPE_CHAR, stat_buf.st_rdev);
|
|
||||||
|
|
||||||
out:
|
|
||||||
return device;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_client_query_by_sysfs_path:
|
|
||||||
* @client: A #GUdevClient.
|
|
||||||
* @sysfs_path: A sysfs path.
|
|
||||||
*
|
|
||||||
* Looks up a device for a sysfs path.
|
|
||||||
*
|
|
||||||
* Returns: (nullable) (transfer full): A #GUdevDevice object or %NULL
|
|
||||||
* if the device was not found. Free with g_object_unref().
|
|
||||||
*/
|
|
||||||
GUdevDevice *
|
|
||||||
g_udev_client_query_by_sysfs_path (GUdevClient *client,
|
|
||||||
const gchar *sysfs_path)
|
|
||||||
{
|
|
||||||
struct udev_device *udevice;
|
|
||||||
GUdevDevice *device;
|
|
||||||
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_CLIENT (client), NULL);
|
|
||||||
g_return_val_if_fail (sysfs_path != NULL, NULL);
|
|
||||||
|
|
||||||
device = NULL;
|
|
||||||
udevice = udev_device_new_from_syspath (client->priv->udev, sysfs_path);
|
|
||||||
if (udevice == NULL)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
device = _g_udev_device_new (udevice);
|
|
||||||
udev_device_unref (udevice);
|
|
||||||
|
|
||||||
out:
|
|
||||||
return device;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_client_query_by_subsystem_and_name:
|
|
||||||
* @client: A #GUdevClient.
|
|
||||||
* @subsystem: A subsystem name.
|
|
||||||
* @name: The name of the device.
|
|
||||||
*
|
|
||||||
* Looks up a device for a subsystem and name.
|
|
||||||
*
|
|
||||||
* Returns: (nullable) (transfer full): A #GUdevDevice object or %NULL
|
|
||||||
* if the device was not found. Free with g_object_unref().
|
|
||||||
*/
|
|
||||||
GUdevDevice *
|
|
||||||
g_udev_client_query_by_subsystem_and_name (GUdevClient *client,
|
|
||||||
const gchar *subsystem,
|
|
||||||
const gchar *name)
|
|
||||||
{
|
|
||||||
struct udev_device *udevice;
|
|
||||||
GUdevDevice *device;
|
|
||||||
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_CLIENT (client), NULL);
|
|
||||||
g_return_val_if_fail (subsystem != NULL, NULL);
|
|
||||||
g_return_val_if_fail (name != NULL, NULL);
|
|
||||||
|
|
||||||
device = NULL;
|
|
||||||
udevice = udev_device_new_from_subsystem_sysname (client->priv->udev, subsystem, name);
|
|
||||||
if (udevice == NULL)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
device = _g_udev_device_new (udevice);
|
|
||||||
udev_device_unref (udevice);
|
|
||||||
|
|
||||||
out:
|
|
||||||
return device;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct udev *
|
|
||||||
_g_udev_client_get_udev (GUdevClient *client)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_CLIENT (client), NULL);
|
|
||||||
return client->priv->udev;
|
|
||||||
}
|
|
|
@ -1,99 +0,0 @@
|
||||||
/* -*- Mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 David Zeuthen <davidz@redhat.com>
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined (_GUDEV_COMPILATION) && !defined(_GUDEV_INSIDE_GUDEV_H)
|
|
||||||
#error "Only <gudev/gudev.h> can be included directly, this file may disappear or change contents."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __G_UDEV_CLIENT_H__
|
|
||||||
#define __G_UDEV_CLIENT_H__
|
|
||||||
|
|
||||||
#include <gudev/gudevtypes.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
|
||||||
|
|
||||||
#define G_UDEV_TYPE_CLIENT (g_udev_client_get_type ())
|
|
||||||
#define G_UDEV_CLIENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_UDEV_TYPE_CLIENT, GUdevClient))
|
|
||||||
#define G_UDEV_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_UDEV_TYPE_CLIENT, GUdevClientClass))
|
|
||||||
#define G_UDEV_IS_CLIENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_UDEV_TYPE_CLIENT))
|
|
||||||
#define G_UDEV_IS_CLIENT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_UDEV_TYPE_CLIENT))
|
|
||||||
#define G_UDEV_CLIENT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_UDEV_TYPE_CLIENT, GUdevClientClass))
|
|
||||||
|
|
||||||
typedef struct _GUdevClientClass GUdevClientClass;
|
|
||||||
typedef struct _GUdevClientPrivate GUdevClientPrivate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GUdevClient:
|
|
||||||
*
|
|
||||||
* The #GUdevClient struct is opaque and should not be accessed directly.
|
|
||||||
*/
|
|
||||||
struct _GUdevClient
|
|
||||||
{
|
|
||||||
GObject parent;
|
|
||||||
|
|
||||||
/*< private >*/
|
|
||||||
GUdevClientPrivate *priv;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GUdevClientClass:
|
|
||||||
* @parent_class: Parent class.
|
|
||||||
* @uevent: Signal class handler for the #GUdevClient::uevent signal.
|
|
||||||
*
|
|
||||||
* Class structure for #GUdevClient.
|
|
||||||
*/
|
|
||||||
struct _GUdevClientClass
|
|
||||||
{
|
|
||||||
GObjectClass parent_class;
|
|
||||||
|
|
||||||
/* signals */
|
|
||||||
void (*uevent) (GUdevClient *client,
|
|
||||||
const gchar *action,
|
|
||||||
GUdevDevice *device);
|
|
||||||
|
|
||||||
/*< private >*/
|
|
||||||
/* Padding for future expansion */
|
|
||||||
void (*reserved1) (void);
|
|
||||||
void (*reserved2) (void);
|
|
||||||
void (*reserved3) (void);
|
|
||||||
void (*reserved4) (void);
|
|
||||||
void (*reserved5) (void);
|
|
||||||
void (*reserved6) (void);
|
|
||||||
void (*reserved7) (void);
|
|
||||||
void (*reserved8) (void);
|
|
||||||
};
|
|
||||||
|
|
||||||
GType g_udev_client_get_type (void) G_GNUC_CONST;
|
|
||||||
GUdevClient *g_udev_client_new (const gchar* const *subsystems);
|
|
||||||
GList *g_udev_client_query_by_subsystem (GUdevClient *client,
|
|
||||||
const gchar *subsystem);
|
|
||||||
GUdevDevice *g_udev_client_query_by_device_number (GUdevClient *client,
|
|
||||||
GUdevDeviceType type,
|
|
||||||
GUdevDeviceNumber number);
|
|
||||||
GUdevDevice *g_udev_client_query_by_device_file (GUdevClient *client,
|
|
||||||
const gchar *device_file);
|
|
||||||
GUdevDevice *g_udev_client_query_by_sysfs_path (GUdevClient *client,
|
|
||||||
const gchar *sysfs_path);
|
|
||||||
GUdevDevice *g_udev_client_query_by_subsystem_and_name (GUdevClient *client,
|
|
||||||
const gchar *subsystem,
|
|
||||||
const gchar *name);
|
|
||||||
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
#endif /* __G_UDEV_CLIENT_H__ */
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,130 +0,0 @@
|
||||||
/* -*- Mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 David Zeuthen <davidz@redhat.com>
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined (_GUDEV_COMPILATION) && !defined(_GUDEV_INSIDE_GUDEV_H)
|
|
||||||
#error "Only <gudev/gudev.h> can be included directly, this file may disappear or change contents."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __G_UDEV_DEVICE_H__
|
|
||||||
#define __G_UDEV_DEVICE_H__
|
|
||||||
|
|
||||||
#include <gudev/gudevtypes.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
|
||||||
|
|
||||||
#define G_UDEV_TYPE_DEVICE (g_udev_device_get_type ())
|
|
||||||
#define G_UDEV_DEVICE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_UDEV_TYPE_DEVICE, GUdevDevice))
|
|
||||||
#define G_UDEV_DEVICE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_UDEV_TYPE_DEVICE, GUdevDeviceClass))
|
|
||||||
#define G_UDEV_IS_DEVICE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_UDEV_TYPE_DEVICE))
|
|
||||||
#define G_UDEV_IS_DEVICE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_UDEV_TYPE_DEVICE))
|
|
||||||
#define G_UDEV_DEVICE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_UDEV_TYPE_DEVICE, GUdevDeviceClass))
|
|
||||||
|
|
||||||
typedef struct _GUdevDeviceClass GUdevDeviceClass;
|
|
||||||
typedef struct _GUdevDevicePrivate GUdevDevicePrivate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GUdevDevice:
|
|
||||||
*
|
|
||||||
* The #GUdevDevice struct is opaque and should not be accessed directly.
|
|
||||||
*/
|
|
||||||
struct _GUdevDevice
|
|
||||||
{
|
|
||||||
GObject parent;
|
|
||||||
|
|
||||||
/*< private >*/
|
|
||||||
GUdevDevicePrivate *priv;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GUdevDeviceClass:
|
|
||||||
* @parent_class: Parent class.
|
|
||||||
*
|
|
||||||
* Class structure for #GUdevDevice.
|
|
||||||
*/
|
|
||||||
struct _GUdevDeviceClass
|
|
||||||
{
|
|
||||||
GObjectClass parent_class;
|
|
||||||
|
|
||||||
/*< private >*/
|
|
||||||
/* Padding for future expansion */
|
|
||||||
void (*reserved1) (void);
|
|
||||||
void (*reserved2) (void);
|
|
||||||
void (*reserved3) (void);
|
|
||||||
void (*reserved4) (void);
|
|
||||||
void (*reserved5) (void);
|
|
||||||
void (*reserved6) (void);
|
|
||||||
void (*reserved7) (void);
|
|
||||||
void (*reserved8) (void);
|
|
||||||
};
|
|
||||||
|
|
||||||
GType g_udev_device_get_type (void) G_GNUC_CONST;
|
|
||||||
gboolean g_udev_device_get_is_initialized (GUdevDevice *device);
|
|
||||||
guint64 g_udev_device_get_usec_since_initialized (GUdevDevice *device);
|
|
||||||
const gchar *g_udev_device_get_subsystem (GUdevDevice *device);
|
|
||||||
const gchar *g_udev_device_get_devtype (GUdevDevice *device);
|
|
||||||
const gchar *g_udev_device_get_name (GUdevDevice *device);
|
|
||||||
const gchar *g_udev_device_get_number (GUdevDevice *device);
|
|
||||||
const gchar *g_udev_device_get_sysfs_path (GUdevDevice *device);
|
|
||||||
const gchar *g_udev_device_get_driver (GUdevDevice *device);
|
|
||||||
const gchar *g_udev_device_get_action (GUdevDevice *device);
|
|
||||||
guint64 g_udev_device_get_seqnum (GUdevDevice *device);
|
|
||||||
GUdevDeviceType g_udev_device_get_device_type (GUdevDevice *device);
|
|
||||||
GUdevDeviceNumber g_udev_device_get_device_number (GUdevDevice *device);
|
|
||||||
const gchar *g_udev_device_get_device_file (GUdevDevice *device);
|
|
||||||
const gchar* const *g_udev_device_get_device_file_symlinks (GUdevDevice *device);
|
|
||||||
GUdevDevice *g_udev_device_get_parent (GUdevDevice *device);
|
|
||||||
GUdevDevice *g_udev_device_get_parent_with_subsystem (GUdevDevice *device,
|
|
||||||
const gchar *subsystem,
|
|
||||||
const gchar *devtype);
|
|
||||||
const gchar* const *g_udev_device_get_property_keys (GUdevDevice *device);
|
|
||||||
gboolean g_udev_device_has_property (GUdevDevice *device,
|
|
||||||
const gchar *key);
|
|
||||||
const gchar *g_udev_device_get_property (GUdevDevice *device,
|
|
||||||
const gchar *key);
|
|
||||||
gint g_udev_device_get_property_as_int (GUdevDevice *device,
|
|
||||||
const gchar *key);
|
|
||||||
guint64 g_udev_device_get_property_as_uint64 (GUdevDevice *device,
|
|
||||||
const gchar *key);
|
|
||||||
gdouble g_udev_device_get_property_as_double (GUdevDevice *device,
|
|
||||||
const gchar *key);
|
|
||||||
gboolean g_udev_device_get_property_as_boolean (GUdevDevice *device,
|
|
||||||
const gchar *key);
|
|
||||||
const gchar* const *g_udev_device_get_property_as_strv (GUdevDevice *device,
|
|
||||||
const gchar *key);
|
|
||||||
|
|
||||||
const gchar* const *g_udev_device_get_sysfs_attr_keys (GUdevDevice *device);
|
|
||||||
gboolean g_udev_device_has_sysfs_attr (GUdevDevice *device,
|
|
||||||
const gchar *key);
|
|
||||||
const gchar *g_udev_device_get_sysfs_attr (GUdevDevice *device,
|
|
||||||
const gchar *name);
|
|
||||||
gint g_udev_device_get_sysfs_attr_as_int (GUdevDevice *device,
|
|
||||||
const gchar *name);
|
|
||||||
guint64 g_udev_device_get_sysfs_attr_as_uint64 (GUdevDevice *device,
|
|
||||||
const gchar *name);
|
|
||||||
gdouble g_udev_device_get_sysfs_attr_as_double (GUdevDevice *device,
|
|
||||||
const gchar *name);
|
|
||||||
gboolean g_udev_device_get_sysfs_attr_as_boolean (GUdevDevice *device,
|
|
||||||
const gchar *name);
|
|
||||||
const gchar* const *g_udev_device_get_sysfs_attr_as_strv (GUdevDevice *device,
|
|
||||||
const gchar *name);
|
|
||||||
const gchar* const *g_udev_device_get_tags (GUdevDevice *device);
|
|
||||||
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
#endif /* __G_UDEV_DEVICE_H__ */
|
|
|
@ -1,429 +0,0 @@
|
||||||
/* -*- Mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008-2010 David Zeuthen <davidz@redhat.com>
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
# include "config.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "gudevclient.h"
|
|
||||||
#include "gudevenumerator.h"
|
|
||||||
#include "gudevdevice.h"
|
|
||||||
#include "gudevmarshal.h"
|
|
||||||
#include "gudevprivate.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SECTION:gudevenumerator
|
|
||||||
* @short_description: Lookup and sort devices
|
|
||||||
*
|
|
||||||
* #GUdevEnumerator is used to lookup and sort devices.
|
|
||||||
*
|
|
||||||
* Since: 165
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct _GUdevEnumeratorPrivate
|
|
||||||
{
|
|
||||||
GUdevClient *client;
|
|
||||||
struct udev_enumerate *e;
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
PROP_0,
|
|
||||||
PROP_CLIENT,
|
|
||||||
};
|
|
||||||
|
|
||||||
G_DEFINE_TYPE (GUdevEnumerator, g_udev_enumerator, G_TYPE_OBJECT)
|
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------------------------------------- */
|
|
||||||
|
|
||||||
static void
|
|
||||||
g_udev_enumerator_finalize (GObject *object)
|
|
||||||
{
|
|
||||||
GUdevEnumerator *enumerator = G_UDEV_ENUMERATOR (object);
|
|
||||||
|
|
||||||
if (enumerator->priv->client != NULL)
|
|
||||||
{
|
|
||||||
g_object_unref (enumerator->priv->client);
|
|
||||||
enumerator->priv->client = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (enumerator->priv->e != NULL)
|
|
||||||
{
|
|
||||||
udev_enumerate_unref (enumerator->priv->e);
|
|
||||||
enumerator->priv->e = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (G_OBJECT_CLASS (g_udev_enumerator_parent_class)->finalize != NULL)
|
|
||||||
G_OBJECT_CLASS (g_udev_enumerator_parent_class)->finalize (object);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
g_udev_enumerator_set_property (GObject *object,
|
|
||||||
guint prop_id,
|
|
||||||
const GValue *value,
|
|
||||||
GParamSpec *pspec)
|
|
||||||
{
|
|
||||||
GUdevEnumerator *enumerator = G_UDEV_ENUMERATOR (object);
|
|
||||||
|
|
||||||
switch (prop_id)
|
|
||||||
{
|
|
||||||
case PROP_CLIENT:
|
|
||||||
if (enumerator->priv->client != NULL)
|
|
||||||
g_object_unref (enumerator->priv->client);
|
|
||||||
enumerator->priv->client = g_value_dup_object (value);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
g_udev_enumerator_get_property (GObject *object,
|
|
||||||
guint prop_id,
|
|
||||||
GValue *value,
|
|
||||||
GParamSpec *pspec)
|
|
||||||
{
|
|
||||||
GUdevEnumerator *enumerator = G_UDEV_ENUMERATOR (object);
|
|
||||||
|
|
||||||
switch (prop_id)
|
|
||||||
{
|
|
||||||
case PROP_CLIENT:
|
|
||||||
g_value_set_object (value, enumerator->priv->client);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
g_udev_enumerator_constructed (GObject *object)
|
|
||||||
{
|
|
||||||
GUdevEnumerator *enumerator = G_UDEV_ENUMERATOR (object);
|
|
||||||
|
|
||||||
g_assert (G_UDEV_IS_CLIENT (enumerator->priv->client));
|
|
||||||
|
|
||||||
enumerator->priv->e = udev_enumerate_new (_g_udev_client_get_udev (enumerator->priv->client));
|
|
||||||
|
|
||||||
if (G_OBJECT_CLASS (g_udev_enumerator_parent_class)->constructed != NULL)
|
|
||||||
G_OBJECT_CLASS (g_udev_enumerator_parent_class)->constructed (object);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
g_udev_enumerator_class_init (GUdevEnumeratorClass *klass)
|
|
||||||
{
|
|
||||||
GObjectClass *gobject_class = (GObjectClass *) klass;
|
|
||||||
|
|
||||||
gobject_class->finalize = g_udev_enumerator_finalize;
|
|
||||||
gobject_class->set_property = g_udev_enumerator_set_property;
|
|
||||||
gobject_class->get_property = g_udev_enumerator_get_property;
|
|
||||||
gobject_class->constructed = g_udev_enumerator_constructed;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GUdevEnumerator:client:
|
|
||||||
*
|
|
||||||
* The #GUdevClient to enumerate devices from.
|
|
||||||
*
|
|
||||||
* Since: 165
|
|
||||||
*/
|
|
||||||
g_object_class_install_property (gobject_class,
|
|
||||||
PROP_CLIENT,
|
|
||||||
g_param_spec_object ("client",
|
|
||||||
"The client to enumerate devices from",
|
|
||||||
"The client to enumerate devices from",
|
|
||||||
G_UDEV_TYPE_CLIENT,
|
|
||||||
G_PARAM_CONSTRUCT_ONLY |
|
|
||||||
G_PARAM_READWRITE));
|
|
||||||
|
|
||||||
g_type_class_add_private (klass, sizeof (GUdevEnumeratorPrivate));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
g_udev_enumerator_init (GUdevEnumerator *enumerator)
|
|
||||||
{
|
|
||||||
enumerator->priv = G_TYPE_INSTANCE_GET_PRIVATE (enumerator,
|
|
||||||
G_UDEV_TYPE_ENUMERATOR,
|
|
||||||
GUdevEnumeratorPrivate);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_enumerator_new:
|
|
||||||
* @client: A #GUdevClient to enumerate devices from.
|
|
||||||
*
|
|
||||||
* Constructs a #GUdevEnumerator object that can be used to enumerate
|
|
||||||
* and sort devices. Use the add_match_*() and add_nomatch_*() methods
|
|
||||||
* and execute the query to get a list of devices with
|
|
||||||
* g_udev_enumerator_execute().
|
|
||||||
*
|
|
||||||
* Returns: A new #GUdevEnumerator object. Free with g_object_unref().
|
|
||||||
*
|
|
||||||
* Since: 165
|
|
||||||
*/
|
|
||||||
GUdevEnumerator *
|
|
||||||
g_udev_enumerator_new (GUdevClient *client)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_CLIENT (client), NULL);
|
|
||||||
return G_UDEV_ENUMERATOR (g_object_new (G_UDEV_TYPE_ENUMERATOR, "client", client, NULL));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_enumerator_add_match_subsystem:
|
|
||||||
* @enumerator: A #GUdevEnumerator.
|
|
||||||
* @subsystem: Wildcard for subsystem name e.g. 'scsi' or 'a*'.
|
|
||||||
*
|
|
||||||
* All returned devices will match the given @subsystem.
|
|
||||||
*
|
|
||||||
* Returns: (transfer none): The passed in @enumerator.
|
|
||||||
*
|
|
||||||
* Since: 165
|
|
||||||
*/
|
|
||||||
GUdevEnumerator *
|
|
||||||
g_udev_enumerator_add_match_subsystem (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *subsystem)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_ENUMERATOR (enumerator), NULL);
|
|
||||||
g_return_val_if_fail (subsystem != NULL, NULL);
|
|
||||||
udev_enumerate_add_match_subsystem (enumerator->priv->e, subsystem);
|
|
||||||
return enumerator;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_enumerator_add_nomatch_subsystem:
|
|
||||||
* @enumerator: A #GUdevEnumerator.
|
|
||||||
* @subsystem: Wildcard for subsystem name e.g. 'scsi' or 'a*'.
|
|
||||||
*
|
|
||||||
* All returned devices will not match the given @subsystem.
|
|
||||||
*
|
|
||||||
* Returns: (transfer none): The passed in @enumerator.
|
|
||||||
*
|
|
||||||
* Since: 165
|
|
||||||
*/
|
|
||||||
GUdevEnumerator *
|
|
||||||
g_udev_enumerator_add_nomatch_subsystem (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *subsystem)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_ENUMERATOR (enumerator), NULL);
|
|
||||||
g_return_val_if_fail (subsystem != NULL, NULL);
|
|
||||||
udev_enumerate_add_nomatch_subsystem (enumerator->priv->e, subsystem);
|
|
||||||
return enumerator;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_enumerator_add_match_sysfs_attr:
|
|
||||||
* @enumerator: A #GUdevEnumerator.
|
|
||||||
* @name: Wildcard filter for sysfs attribute key.
|
|
||||||
* @value: Wildcard filter for sysfs attribute value.
|
|
||||||
*
|
|
||||||
* All returned devices will have a sysfs attribute matching the given @name and @value.
|
|
||||||
*
|
|
||||||
* Returns: (transfer none): The passed in @enumerator.
|
|
||||||
*
|
|
||||||
* Since: 165
|
|
||||||
*/
|
|
||||||
GUdevEnumerator *
|
|
||||||
g_udev_enumerator_add_match_sysfs_attr (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *name,
|
|
||||||
const gchar *value)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_ENUMERATOR (enumerator), NULL);
|
|
||||||
g_return_val_if_fail (name != NULL, NULL);
|
|
||||||
g_return_val_if_fail (value != NULL, NULL);
|
|
||||||
udev_enumerate_add_match_sysattr (enumerator->priv->e, name, value);
|
|
||||||
return enumerator;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_enumerator_add_nomatch_sysfs_attr:
|
|
||||||
* @enumerator: A #GUdevEnumerator.
|
|
||||||
* @name: Wildcard filter for sysfs attribute key.
|
|
||||||
* @value: Wildcard filter for sysfs attribute value.
|
|
||||||
*
|
|
||||||
* All returned devices will not have a sysfs attribute matching the given @name and @value.
|
|
||||||
*
|
|
||||||
* Returns: (transfer none): The passed in @enumerator.
|
|
||||||
*
|
|
||||||
* Since: 165
|
|
||||||
*/
|
|
||||||
GUdevEnumerator *
|
|
||||||
g_udev_enumerator_add_nomatch_sysfs_attr (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *name,
|
|
||||||
const gchar *value)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_ENUMERATOR (enumerator), NULL);
|
|
||||||
g_return_val_if_fail (name != NULL, NULL);
|
|
||||||
g_return_val_if_fail (value != NULL, NULL);
|
|
||||||
udev_enumerate_add_nomatch_sysattr (enumerator->priv->e, name, value);
|
|
||||||
return enumerator;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_enumerator_add_match_property:
|
|
||||||
* @enumerator: A #GUdevEnumerator.
|
|
||||||
* @name: Wildcard filter for property name.
|
|
||||||
* @value: Wildcard filter for property value.
|
|
||||||
*
|
|
||||||
* All returned devices will have a property matching the given @name and @value.
|
|
||||||
*
|
|
||||||
* Returns: (transfer none): The passed in @enumerator.
|
|
||||||
*
|
|
||||||
* Since: 165
|
|
||||||
*/
|
|
||||||
GUdevEnumerator *
|
|
||||||
g_udev_enumerator_add_match_property (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *name,
|
|
||||||
const gchar *value)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_ENUMERATOR (enumerator), NULL);
|
|
||||||
g_return_val_if_fail (name != NULL, NULL);
|
|
||||||
g_return_val_if_fail (value != NULL, NULL);
|
|
||||||
udev_enumerate_add_match_property (enumerator->priv->e, name, value);
|
|
||||||
return enumerator;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_enumerator_add_match_name:
|
|
||||||
* @enumerator: A #GUdevEnumerator.
|
|
||||||
* @name: Wildcard filter for kernel name e.g. "sda*".
|
|
||||||
*
|
|
||||||
* All returned devices will match the given @name.
|
|
||||||
*
|
|
||||||
* Returns: (transfer none): The passed in @enumerator.
|
|
||||||
*
|
|
||||||
* Since: 165
|
|
||||||
*/
|
|
||||||
GUdevEnumerator *
|
|
||||||
g_udev_enumerator_add_match_name (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *name)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_ENUMERATOR (enumerator), NULL);
|
|
||||||
g_return_val_if_fail (name != NULL, NULL);
|
|
||||||
udev_enumerate_add_match_sysname (enumerator->priv->e, name);
|
|
||||||
return enumerator;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_enumerator_add_sysfs_path:
|
|
||||||
* @enumerator: A #GUdevEnumerator.
|
|
||||||
* @sysfs_path: A sysfs path, e.g. "/sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/block/sda"
|
|
||||||
*
|
|
||||||
* Add a device to the list of devices, to retrieve it back sorted in dependency order.
|
|
||||||
*
|
|
||||||
* Returns: (transfer none): The passed in @enumerator.
|
|
||||||
*
|
|
||||||
* Since: 165
|
|
||||||
*/
|
|
||||||
GUdevEnumerator *
|
|
||||||
g_udev_enumerator_add_sysfs_path (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *sysfs_path)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_ENUMERATOR (enumerator), NULL);
|
|
||||||
g_return_val_if_fail (sysfs_path != NULL, NULL);
|
|
||||||
udev_enumerate_add_syspath (enumerator->priv->e, sysfs_path);
|
|
||||||
return enumerator;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_enumerator_add_match_tag:
|
|
||||||
* @enumerator: A #GUdevEnumerator.
|
|
||||||
* @tag: A udev tag e.g. "udev-acl".
|
|
||||||
*
|
|
||||||
* All returned devices will match the given @tag.
|
|
||||||
*
|
|
||||||
* Returns: (transfer none): The passed in @enumerator.
|
|
||||||
*
|
|
||||||
* Since: 165
|
|
||||||
*/
|
|
||||||
GUdevEnumerator *
|
|
||||||
g_udev_enumerator_add_match_tag (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *tag)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_ENUMERATOR (enumerator), NULL);
|
|
||||||
g_return_val_if_fail (tag != NULL, NULL);
|
|
||||||
udev_enumerate_add_match_tag (enumerator->priv->e, tag);
|
|
||||||
return enumerator;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_enumerator_add_match_is_initialized:
|
|
||||||
* @enumerator: A #GUdevEnumerator.
|
|
||||||
*
|
|
||||||
* All returned devices will be initialized.
|
|
||||||
*
|
|
||||||
* Returns: (transfer none): The passed in @enumerator.
|
|
||||||
*
|
|
||||||
* Since: 165
|
|
||||||
*/
|
|
||||||
GUdevEnumerator *
|
|
||||||
g_udev_enumerator_add_match_is_initialized (GUdevEnumerator *enumerator)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_ENUMERATOR (enumerator), NULL);
|
|
||||||
udev_enumerate_add_match_is_initialized (enumerator->priv->e);
|
|
||||||
return enumerator;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* g_udev_enumerator_execute:
|
|
||||||
* @enumerator: A #GUdevEnumerator.
|
|
||||||
*
|
|
||||||
* Executes the query in @enumerator.
|
|
||||||
*
|
|
||||||
* Returns: (element-type GUdevDevice) (transfer full): A list of #GUdevDevice objects. The caller should free the result by using g_object_unref() on each element in the list and then g_list_free() on the list.
|
|
||||||
*
|
|
||||||
* Since: 165
|
|
||||||
*/
|
|
||||||
GList *
|
|
||||||
g_udev_enumerator_execute (GUdevEnumerator *enumerator)
|
|
||||||
{
|
|
||||||
GList *ret;
|
|
||||||
struct udev_list_entry *l, *devices;
|
|
||||||
|
|
||||||
g_return_val_if_fail (G_UDEV_IS_ENUMERATOR (enumerator), NULL);
|
|
||||||
|
|
||||||
ret = NULL;
|
|
||||||
|
|
||||||
/* retrieve the list */
|
|
||||||
udev_enumerate_scan_devices (enumerator->priv->e);
|
|
||||||
|
|
||||||
devices = udev_enumerate_get_list_entry (enumerator->priv->e);
|
|
||||||
for (l = devices; l != NULL; l = udev_list_entry_get_next (l))
|
|
||||||
{
|
|
||||||
struct udev_device *udevice;
|
|
||||||
GUdevDevice *device;
|
|
||||||
|
|
||||||
udevice = udev_device_new_from_syspath (udev_enumerate_get_udev (enumerator->priv->e),
|
|
||||||
udev_list_entry_get_name (l));
|
|
||||||
if (udevice == NULL)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
device = _g_udev_device_new (udevice);
|
|
||||||
udev_device_unref (udevice);
|
|
||||||
ret = g_list_prepend (ret, device);
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = g_list_reverse (ret);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
|
@ -1,106 +0,0 @@
|
||||||
/* -*- Mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008-2010 David Zeuthen <davidz@redhat.com>
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined (_GUDEV_COMPILATION) && !defined(_GUDEV_INSIDE_GUDEV_H)
|
|
||||||
#error "Only <gudev/gudev.h> can be included directly, this file may disappear or change contents."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __G_UDEV_ENUMERATOR_H__
|
|
||||||
#define __G_UDEV_ENUMERATOR_H__
|
|
||||||
|
|
||||||
#include <gudev/gudevtypes.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
|
||||||
|
|
||||||
#define G_UDEV_TYPE_ENUMERATOR (g_udev_enumerator_get_type ())
|
|
||||||
#define G_UDEV_ENUMERATOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), G_UDEV_TYPE_ENUMERATOR, GUdevEnumerator))
|
|
||||||
#define G_UDEV_ENUMERATOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), G_UDEV_TYPE_ENUMERATOR, GUdevEnumeratorClass))
|
|
||||||
#define G_UDEV_IS_ENUMERATOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_UDEV_TYPE_ENUMERATOR))
|
|
||||||
#define G_UDEV_IS_ENUMERATOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), G_UDEV_TYPE_ENUMERATOR))
|
|
||||||
#define G_UDEV_ENUMERATOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), G_UDEV_TYPE_ENUMERATOR, GUdevEnumeratorClass))
|
|
||||||
|
|
||||||
typedef struct _GUdevEnumeratorClass GUdevEnumeratorClass;
|
|
||||||
typedef struct _GUdevEnumeratorPrivate GUdevEnumeratorPrivate;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GUdevEnumerator:
|
|
||||||
*
|
|
||||||
* The #GUdevEnumerator struct is opaque and should not be accessed directly.
|
|
||||||
*
|
|
||||||
* Since: 165
|
|
||||||
*/
|
|
||||||
struct _GUdevEnumerator
|
|
||||||
{
|
|
||||||
GObject parent;
|
|
||||||
|
|
||||||
/*< private >*/
|
|
||||||
GUdevEnumeratorPrivate *priv;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GUdevEnumeratorClass:
|
|
||||||
* @parent_class: Parent class.
|
|
||||||
*
|
|
||||||
* Class structure for #GUdevEnumerator.
|
|
||||||
*
|
|
||||||
* Since: 165
|
|
||||||
*/
|
|
||||||
struct _GUdevEnumeratorClass
|
|
||||||
{
|
|
||||||
GObjectClass parent_class;
|
|
||||||
|
|
||||||
/*< private >*/
|
|
||||||
/* Padding for future expansion */
|
|
||||||
void (*reserved1) (void);
|
|
||||||
void (*reserved2) (void);
|
|
||||||
void (*reserved3) (void);
|
|
||||||
void (*reserved4) (void);
|
|
||||||
void (*reserved5) (void);
|
|
||||||
void (*reserved6) (void);
|
|
||||||
void (*reserved7) (void);
|
|
||||||
void (*reserved8) (void);
|
|
||||||
};
|
|
||||||
|
|
||||||
GType g_udev_enumerator_get_type (void) G_GNUC_CONST;
|
|
||||||
GUdevEnumerator *g_udev_enumerator_new (GUdevClient *client);
|
|
||||||
GUdevEnumerator *g_udev_enumerator_add_match_subsystem (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *subsystem);
|
|
||||||
GUdevEnumerator *g_udev_enumerator_add_nomatch_subsystem (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *subsystem);
|
|
||||||
GUdevEnumerator *g_udev_enumerator_add_match_sysfs_attr (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *name,
|
|
||||||
const gchar *value);
|
|
||||||
GUdevEnumerator *g_udev_enumerator_add_nomatch_sysfs_attr (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *name,
|
|
||||||
const gchar *value);
|
|
||||||
GUdevEnumerator *g_udev_enumerator_add_match_property (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *name,
|
|
||||||
const gchar *value);
|
|
||||||
GUdevEnumerator *g_udev_enumerator_add_match_name (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *name);
|
|
||||||
GUdevEnumerator *g_udev_enumerator_add_match_tag (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *tag);
|
|
||||||
GUdevEnumerator *g_udev_enumerator_add_match_is_initialized (GUdevEnumerator *enumerator);
|
|
||||||
GUdevEnumerator *g_udev_enumerator_add_sysfs_path (GUdevEnumerator *enumerator,
|
|
||||||
const gchar *sysfs_path);
|
|
||||||
GList *g_udev_enumerator_execute (GUdevEnumerator *enumerator);
|
|
||||||
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
#endif /* __G_UDEV_ENUMERATOR_H__ */
|
|
|
@ -1,48 +0,0 @@
|
||||||
/* -*- Mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 David Zeuthen <davidz@redhat.com>
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined (_GUDEV_COMPILATION) && !defined(_GUDEV_INSIDE_GUDEV_H)
|
|
||||||
#error "Only <gudev/gudev.h> can be included directly, this file may disappear or change contents."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __G_UDEV_ENUMS_H__
|
|
||||||
#define __G_UDEV_ENUMS_H__
|
|
||||||
|
|
||||||
#include <glib-object.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GUdevDeviceType:
|
|
||||||
* @G_UDEV_DEVICE_TYPE_NONE: Device does not have a device file.
|
|
||||||
* @G_UDEV_DEVICE_TYPE_BLOCK: Device is a block device.
|
|
||||||
* @G_UDEV_DEVICE_TYPE_CHAR: Device is a character device.
|
|
||||||
*
|
|
||||||
* Enumeration used to specify a the type of a device.
|
|
||||||
*/
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
G_UDEV_DEVICE_TYPE_NONE = 0,
|
|
||||||
G_UDEV_DEVICE_TYPE_BLOCK = 'b',
|
|
||||||
G_UDEV_DEVICE_TYPE_CHAR = 'c',
|
|
||||||
} GUdevDeviceType;
|
|
||||||
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
#endif /* __G_UDEV_ENUMS_H__ */
|
|
|
@ -1,39 +0,0 @@
|
||||||
/*** BEGIN file-header ***/
|
|
||||||
#include <gudev.h>
|
|
||||||
|
|
||||||
/*** END file-header ***/
|
|
||||||
|
|
||||||
/*** BEGIN file-production ***/
|
|
||||||
/* enumerations from "@filename@" */
|
|
||||||
/*** END file-production ***/
|
|
||||||
|
|
||||||
/*** BEGIN value-header ***/
|
|
||||||
GType
|
|
||||||
@enum_name@_get_type (void)
|
|
||||||
{
|
|
||||||
static volatile gsize g_define_type_id__volatile = 0;
|
|
||||||
|
|
||||||
if (g_once_init_enter (&g_define_type_id__volatile))
|
|
||||||
{
|
|
||||||
static const G@Type@Value values[] = {
|
|
||||||
/*** END value-header ***/
|
|
||||||
|
|
||||||
/*** BEGIN value-production ***/
|
|
||||||
{ @VALUENAME@, "@VALUENAME@", "@valuenick@" },
|
|
||||||
/*** END value-production ***/
|
|
||||||
|
|
||||||
/*** BEGIN value-tail ***/
|
|
||||||
{ 0, NULL, NULL }
|
|
||||||
};
|
|
||||||
GType g_define_type_id =
|
|
||||||
g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
|
|
||||||
g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
return g_define_type_id__volatile;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*** END value-tail ***/
|
|
||||||
|
|
||||||
/*** BEGIN file-tail ***/
|
|
||||||
/*** END file-tail ***/
|
|
|
@ -1,24 +0,0 @@
|
||||||
/*** BEGIN file-header ***/
|
|
||||||
#ifndef __GUDEV_ENUM_TYPES_H__
|
|
||||||
#define __GUDEV_ENUM_TYPES_H__
|
|
||||||
|
|
||||||
#include <glib-object.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
|
||||||
/*** END file-header ***/
|
|
||||||
|
|
||||||
/*** BEGIN file-production ***/
|
|
||||||
|
|
||||||
/* enumerations from "@filename@" */
|
|
||||||
/*** END file-production ***/
|
|
||||||
|
|
||||||
/*** BEGIN value-header ***/
|
|
||||||
GType @enum_name@_get_type (void) G_GNUC_CONST;
|
|
||||||
#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type ())
|
|
||||||
/*** END value-header ***/
|
|
||||||
|
|
||||||
/*** BEGIN file-tail ***/
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
#endif /* __GUDEV_ENUM_TYPES_H__ */
|
|
||||||
/*** END file-tail ***/
|
|
|
@ -1 +0,0 @@
|
||||||
VOID:STRING,OBJECT
|
|
|
@ -1,40 +0,0 @@
|
||||||
/* -*- Mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 David Zeuthen <davidz@redhat.com>
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined (_GUDEV_COMPILATION) && !defined(_GUDEV_INSIDE_GUDEV_H)
|
|
||||||
#error "Only <gudev/gudev.h> can be included directly, this file may disappear or change contents."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __G_UDEV_PRIVATE_H__
|
|
||||||
#define __G_UDEV_PRIVATE_H__
|
|
||||||
|
|
||||||
#include <gudev/gudevtypes.h>
|
|
||||||
|
|
||||||
#include <libudev.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
|
||||||
|
|
||||||
GUdevDevice *
|
|
||||||
_g_udev_device_new (struct udev_device *udevice);
|
|
||||||
|
|
||||||
struct udev *_g_udev_client_get_udev (GUdevClient *client);
|
|
||||||
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
#endif /* __G_UDEV_PRIVATE_H__ */
|
|
|
@ -1,50 +0,0 @@
|
||||||
/* -*- Mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 David Zeuthen <davidz@redhat.com>
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Library General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Library General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Library General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined (_GUDEV_COMPILATION) && !defined(_GUDEV_INSIDE_GUDEV_H)
|
|
||||||
#error "Only <gudev/gudev.h> can be included directly, this file may disappear or change contents."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef __G_UDEV_TYPES_H__
|
|
||||||
#define __G_UDEV_TYPES_H__
|
|
||||||
|
|
||||||
#include <gudev/gudevenums.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
|
||||||
|
|
||||||
typedef struct _GUdevClient GUdevClient;
|
|
||||||
typedef struct _GUdevDevice GUdevDevice;
|
|
||||||
typedef struct _GUdevEnumerator GUdevEnumerator;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GUdevDeviceNumber:
|
|
||||||
*
|
|
||||||
* Corresponds to the standard #dev_t type as defined by POSIX (Until
|
|
||||||
* bug 584517 is resolved this work-around is needed).
|
|
||||||
*/
|
|
||||||
#ifdef _GUDEV_WORK_AROUND_DEV_T_BUG
|
|
||||||
typedef guint64 GUdevDeviceNumber; /* __UQUAD_TYPE */
|
|
||||||
#else
|
|
||||||
typedef dev_t GUdevDeviceNumber;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
G_END_DECLS
|
|
||||||
|
|
||||||
#endif /* __G_UDEV_TYPES_H__ */
|
|
|
@ -1,68 +0,0 @@
|
||||||
/***
|
|
||||||
This file is part of systemd.
|
|
||||||
|
|
||||||
systemd is free software; you can redistribute it and/or modify it
|
|
||||||
under the terms of the GNU Lesser General Public License as published by
|
|
||||||
the Free Software Foundation; either version 2.1 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
***/
|
|
||||||
|
|
||||||
{
|
|
||||||
global:
|
|
||||||
g_udev_client_get_type;
|
|
||||||
g_udev_client_new;
|
|
||||||
g_udev_client_query_by_device_file;
|
|
||||||
g_udev_client_query_by_device_number;
|
|
||||||
g_udev_client_query_by_subsystem;
|
|
||||||
g_udev_client_query_by_subsystem_and_name;
|
|
||||||
g_udev_client_query_by_sysfs_path;
|
|
||||||
g_udev_device_get_action;
|
|
||||||
g_udev_device_get_device_file;
|
|
||||||
g_udev_device_get_device_file_symlinks;
|
|
||||||
g_udev_device_get_device_number;
|
|
||||||
g_udev_device_get_device_type;
|
|
||||||
g_udev_device_get_devtype;
|
|
||||||
g_udev_device_get_driver;
|
|
||||||
g_udev_device_get_is_initialized;
|
|
||||||
g_udev_device_get_name;
|
|
||||||
g_udev_device_get_number;
|
|
||||||
g_udev_device_get_parent;
|
|
||||||
g_udev_device_get_parent_with_subsystem;
|
|
||||||
g_udev_device_get_property;
|
|
||||||
g_udev_device_get_property_as_boolean;
|
|
||||||
g_udev_device_get_property_as_double;
|
|
||||||
g_udev_device_get_property_as_int;
|
|
||||||
g_udev_device_get_property_as_strv;
|
|
||||||
g_udev_device_get_property_as_uint64;
|
|
||||||
g_udev_device_get_property_keys;
|
|
||||||
g_udev_device_get_seqnum;
|
|
||||||
g_udev_device_get_subsystem;
|
|
||||||
g_udev_device_get_sysfs_attr;
|
|
||||||
g_udev_device_get_sysfs_attr_as_boolean;
|
|
||||||
g_udev_device_get_sysfs_attr_as_double;
|
|
||||||
g_udev_device_get_sysfs_attr_as_int;
|
|
||||||
g_udev_device_get_sysfs_attr_as_strv;
|
|
||||||
g_udev_device_get_sysfs_attr_as_uint64;
|
|
||||||
g_udev_device_get_sysfs_attr_keys;
|
|
||||||
g_udev_device_get_sysfs_path;
|
|
||||||
g_udev_device_get_tags;
|
|
||||||
g_udev_device_get_type;
|
|
||||||
g_udev_device_get_usec_since_initialized;
|
|
||||||
g_udev_device_has_property;
|
|
||||||
g_udev_device_has_sysfs_attr;
|
|
||||||
g_udev_device_type_get_type;
|
|
||||||
g_udev_enumerator_add_match_is_initialized;
|
|
||||||
g_udev_enumerator_add_match_name;
|
|
||||||
g_udev_enumerator_add_match_property;
|
|
||||||
g_udev_enumerator_add_match_subsystem;
|
|
||||||
g_udev_enumerator_add_match_sysfs_attr;
|
|
||||||
g_udev_enumerator_add_match_tag;
|
|
||||||
g_udev_enumerator_add_nomatch_subsystem;
|
|
||||||
g_udev_enumerator_add_nomatch_sysfs_attr;
|
|
||||||
g_udev_enumerator_add_sysfs_path;
|
|
||||||
g_udev_enumerator_execute;
|
|
||||||
g_udev_enumerator_get_type;
|
|
||||||
g_udev_enumerator_new;
|
|
||||||
local:
|
|
||||||
*;
|
|
||||||
};
|
|
|
@ -1,38 +0,0 @@
|
||||||
#!/usr/bin/env seed
|
|
||||||
|
|
||||||
const GLib = imports.gi.GLib;
|
|
||||||
const GUdev = imports.gi.GUdev;
|
|
||||||
|
|
||||||
function print_device(device) {
|
|
||||||
print(" initialized: " + device.get_is_initialized());
|
|
||||||
print(" usec since initialized: " + device.get_usec_since_initialized());
|
|
||||||
print(" subsystem: " + device.get_subsystem());
|
|
||||||
print(" devtype: " + device.get_devtype());
|
|
||||||
print(" name: " + device.get_name());
|
|
||||||
print(" number: " + device.get_number());
|
|
||||||
print(" sysfs_path: " + device.get_sysfs_path());
|
|
||||||
print(" driver: " + device.get_driver());
|
|
||||||
print(" action: " + device.get_action());
|
|
||||||
print(" seqnum: " + device.get_seqnum());
|
|
||||||
print(" device type: " + device.get_device_type());
|
|
||||||
print(" device number: " + device.get_device_number());
|
|
||||||
print(" device file: " + device.get_device_file());
|
|
||||||
print(" device file symlinks: " + device.get_device_file_symlinks());
|
|
||||||
print(" tags: " + device.get_tags());
|
|
||||||
var keys = device.get_property_keys();
|
|
||||||
for (var n = 0; n < keys.length; n++) {
|
|
||||||
print(" " + keys[n] + "=" + device.get_property(keys[n]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var client = new GUdev.Client({subsystems: []});
|
|
||||||
var enumerator = new GUdev.Enumerator({client: client});
|
|
||||||
enumerator.add_match_subsystem('b*')
|
|
||||||
|
|
||||||
var devices = enumerator.execute();
|
|
||||||
|
|
||||||
for (var n=0; n < devices.length; n++) {
|
|
||||||
var device = devices[n];
|
|
||||||
print_device(device);
|
|
||||||
print("");
|
|
||||||
}
|
|
|
@ -1,72 +0,0 @@
|
||||||
#!/usr/bin/env seed
|
|
||||||
|
|
||||||
// seed example
|
|
||||||
|
|
||||||
const GLib = imports.gi.GLib;
|
|
||||||
const GUdev = imports.gi.GUdev;
|
|
||||||
|
|
||||||
function print_device (device) {
|
|
||||||
print (" subsystem: " + device.get_subsystem ());
|
|
||||||
print (" devtype: " + device.get_devtype ());
|
|
||||||
print (" name: " + device.get_name ());
|
|
||||||
print (" number: " + device.get_number ());
|
|
||||||
print (" sysfs_path: " + device.get_sysfs_path ());
|
|
||||||
print (" driver: " + device.get_driver ());
|
|
||||||
print (" action: " + device.get_action ());
|
|
||||||
print (" seqnum: " + device.get_seqnum ());
|
|
||||||
print (" device type: " + device.get_device_type ());
|
|
||||||
print (" device number: " + device.get_device_number ());
|
|
||||||
print (" device file: " + device.get_device_file ());
|
|
||||||
print (" device file symlinks: " + device.get_device_file_symlinks ());
|
|
||||||
print (" foo: " + device.get_sysfs_attr_as_strv ("stat"));
|
|
||||||
var keys = device.get_property_keys ();
|
|
||||||
for (var n = 0; n < keys.length; n++) {
|
|
||||||
print (" " + keys[n] + "=" + device.get_property (keys[n]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function on_uevent (client, action, device) {
|
|
||||||
print ("action " + action + " on device " + device.get_sysfs_path());
|
|
||||||
print_device (device);
|
|
||||||
print ("");
|
|
||||||
}
|
|
||||||
|
|
||||||
var client = new GUdev.Client ({subsystems: ["block", "usb/usb_interface"]});
|
|
||||||
client.signal.connect ("uevent", on_uevent);
|
|
||||||
|
|
||||||
var block_devices = client.query_by_subsystem ("block");
|
|
||||||
for (var n = 0; n < block_devices.length; n++) {
|
|
||||||
print ("block device: " + block_devices[n].get_device_file ());
|
|
||||||
}
|
|
||||||
|
|
||||||
var d;
|
|
||||||
|
|
||||||
d = client.query_by_device_number (GUdev.DeviceType.BLOCK, 0x0810);
|
|
||||||
if (d == null) {
|
|
||||||
print ("query_by_device_number 0x810 -> null");
|
|
||||||
} else {
|
|
||||||
print ("query_by_device_number 0x810 -> " + d.get_device_file ());
|
|
||||||
dd = d.get_parent_with_subsystem ("usb", null);
|
|
||||||
print_device (dd);
|
|
||||||
print ("--------------------------------------------------------------------------");
|
|
||||||
while (d != null) {
|
|
||||||
print_device (d);
|
|
||||||
print ("");
|
|
||||||
d = d.get_parent ();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
d = client.query_by_sysfs_path ("/sys/block/sda/sda1");
|
|
||||||
print ("query_by_sysfs_path (\"/sys/block/sda1\") -> " + d.get_device_file ());
|
|
||||||
|
|
||||||
d = client.query_by_subsystem_and_name ("block", "sda2");
|
|
||||||
print ("query_by_subsystem_and_name (\"block\", \"sda2\") -> " + d.get_device_file ());
|
|
||||||
|
|
||||||
d = client.query_by_device_file ("/dev/sda");
|
|
||||||
print ("query_by_device_file (\"/dev/sda\") -> " + d.get_device_file ());
|
|
||||||
|
|
||||||
d = client.query_by_device_file ("/dev/block/8:0");
|
|
||||||
print ("query_by_device_file (\"/dev/block/8:0\") -> " + d.get_device_file ());
|
|
||||||
|
|
||||||
var mainloop = GLib.main_loop_new ();
|
|
||||||
GLib.main_loop_run (mainloop);
|
|
|
@ -4,8 +4,6 @@
|
||||||
<a href="../man/systemd.index.html">Index </a>·
|
<a href="../man/systemd.index.html">Index </a>·
|
||||||
<a href="../man/systemd.directives.html">Directives </a>·
|
<a href="../man/systemd.directives.html">Directives </a>·
|
||||||
<a href="index.html">Python </a>·
|
<a href="index.html">Python </a>·
|
||||||
<a href="../libudev/index.html">libudev </a>·
|
|
||||||
<a href="../libudev/index.html">gudev </a>
|
|
||||||
<span style="float:right">systemd {{release}}</span>
|
<span style="float:right">systemd {{release}}</span>
|
||||||
<hr />
|
<hr />
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -10,8 +10,6 @@ $ sudo make clean check
|
||||||
make[1]: Entering directory `/mnt/data/harald/git/systemd/test/TEST-01-BASIC'
|
make[1]: Entering directory `/mnt/data/harald/git/systemd/test/TEST-01-BASIC'
|
||||||
Making all in .
|
Making all in .
|
||||||
Making all in po
|
Making all in po
|
||||||
Making all in docs/libudev
|
|
||||||
Making all in docs/gudev
|
|
||||||
TEST: Basic systemd setup [OK]
|
TEST: Basic systemd setup [OK]
|
||||||
make[1]: Leaving directory `/mnt/data/harald/git/systemd/test/TEST-01-BASIC'
|
make[1]: Leaving directory `/mnt/data/harald/git/systemd/test/TEST-01-BASIC'
|
||||||
...
|
...
|
||||||
|
|
|
@ -125,7 +125,7 @@ install_systemd() {
|
||||||
# install compiled files
|
# install compiled files
|
||||||
(cd $TEST_BASE_DIR/..; set -x; make DESTDIR=$initdir install)
|
(cd $TEST_BASE_DIR/..; set -x; make DESTDIR=$initdir install)
|
||||||
# remove unneeded documentation
|
# remove unneeded documentation
|
||||||
rm -fr $initdir/usr/share/{man,doc,gtk-doc}
|
rm -fr $initdir/usr/share/{man,doc}
|
||||||
# we strip binaries since debug symbols increase binaries size a lot
|
# we strip binaries since debug symbols increase binaries size a lot
|
||||||
# and it could fill the available space
|
# and it could fill the available space
|
||||||
strip_binaries
|
strip_binaries
|
||||||
|
|
Loading…
Reference in New Issue