use autotools

This commit is contained in:
Kay Sievers 2008-07-30 01:45:23 +02:00
parent 726687ad48
commit 01618658fd
62 changed files with 946 additions and 332 deletions

28
.gitignore vendored
View File

@ -1,7 +1,23 @@
*.o
*.a
udevd
udevadm
udev_version.h
test-udev
*.lo
*.la
.libs/
.deps/
Makefile
Makefile.in
aclocal.m4
autom4te.cache/
config.h
config.h.in
config.log
config.status
config.guess
config.sub
libtool
ltmain.sh
install-sh
missing
configure
stamp-h1
depcomp
udev-test-install/

44
INSTALL Normal file
View File

@ -0,0 +1,44 @@
./configure
--prefix=
"/usr" - prefix for man pages, include files
--exec-prefix=
"" - the root filesystem, prefix for libs and binaries
--sysconfdir=
"/etc"
--with-libdir-name=
"lib" - directory name for libraries, not a path name
multilib 64bit systems may use "lib64" instead of "lib"
--enable-debug
compile-in verbose debug messages
--disable-logging
disable all logging and compile-out all log strings
--enable-selinux
link against SELInux libraries to set the expected context
for created files
The installation directories are controlled by $prefix, $exec_prefix
$sysconfdir and $libdir-name. Documentation, development files are
installed below $prefix, binaries are installed below $exec_prefix,
libraries below $exec_prefix/$libdir-name.
The default configuration for a RPM spec file may look like:
--prefix=%{_prefix}
--exec-prefix=""
--sysconfdir=%{_sysconfdir}
--with-libdir-name=%{_lib}
The well defined location for scripts and binaries which are called
from rules is /lib/udev/ on all systems and architectures, anything
else is broken. Other packages who use udev, may use the /lib/udev/
directory to install their rule helper and udev rule files.
It is recommended to use the /lib/udev/devices/ directory to place
device nodes, directories and symlinks, which are copied to /dev/
at every bootup. That way, nodes for devices which can not be
detected automatically, or are activated on-demand by opening the
pre-existing device node, will be available.
Default udev rules and persistent device naming rules are required
by other software that depends on the data udev collects from the
devices, and should therefore be installed by default with every udev
installation.

41
Makefile.am Normal file
View File

@ -0,0 +1,41 @@
SUBDIRS = \
udev \
rules \
extras
udevconfdir = $(sysconfdir)/udev
udevconf_DATA = \
udev.conf
EXTRA_DIST = \
udev.conf \
docs \
autogen.sh
distclean-local:
rm -f *~
rm -rf autom4te.cache
rm -f depcomp aclocal.m4 config.h.in configure install-sh
rm -f Makefile.in missing config.guess config.sub ltmain.sh
rm -rf udev-test-install
rm -f udev-$(VERSION).tar.gz udev-$(VERSION).tar.bz2
ChangeLog:
@ mv $@ $@.tmp
@ echo "Summary of changes from v$(shell echo $$(($(VERSION) - 1))) to v$(VERSION)" >> $@
@ echo "============================================" >> $@
@ echo >> $@
@ git log --pretty=short $(shell echo $$(($(VERSION) - 1)))..HEAD | git shortlog >> $@
@ echo >> $@
@ cat $@
@ cat $@.tmp >> $@
@ rm $@.tmp
test-run:
cd test && ./udev-test.pl
test-install:
rm -rf $(PWD)/udev-test-install/
make DESTDIR=$(PWD)/udev-test-install install
tree $(PWD)/udev-test-install/

24
NEWS
View File

@ -1,3 +1,27 @@
udev 126
========
We use ./configure now. See INSTALL for details. Current
options are:
--prefix=
"/usr" - prefix for man pages, include files
--exec-prefix=
"" - the root filesystem, prefix for libs and binaries
--sysconfdir=
"/etc"
--with-libdir-name=
"lib" - directory name for libraries, not a path name
multilib 64bit systems may use "lib64" instead of "lib"
--enable-debug
compile-in verbose debug messages
--disable-logging
disable all logging and compile-out all log strings
--enable-selinux
link against SELInux libraries to set the expected context
for created files
No symlinks to udevadm are installed anymore, if still neded, the
package should create them.
udev 125
========
Bugfixes.

50
README
View File

@ -17,19 +17,19 @@ Requirements:
(unix domain sockets (CONFIG_UNIX) as a loadable kernel module may work,
but it does not make any sense - don't complain if anything goes wrong.)
- The proc filesystem must be mounted on /proc, the sysfs filesystem must
be mounted at /sys. No other locations are supported by udev.
- The proc filesystem must be mounted on /proc/, the sysfs filesystem must
be mounted at /sys/. No other locations are supported by udev.
Operation:
Udev creates and removes device nodes in /dev, based on events the kernel
Udev creates and removes device nodes in /dev/, based on events the kernel
sends out on device discovery or removal.
- Very early in the boot process, the /dev directory should get a 'tmpfs'
- Very early in the boot process, the /dev/ directory should get a 'tmpfs'
filesystem mounted, which is populated from scratch by udev. Created nodes
or changed permissions will not survive a reboot, which is intentional.
- The content of /lib/udev/devices directory which contains the nodes,
- The content of /lib/udev/devices/ directory which contains the nodes,
symlinks and directories, which are always expected to be in /dev, should
be copied over to the tmpfs mounted /dev, to provide the required nodes
to initialize udev and continue booting.
@ -48,44 +48,6 @@ Operation:
device node with the default kernel name, or the one specified by a
matching udev rule.
Compile Options:
DESTDIR
Prefix of install target, used for package building.
USE_LOG
If set to 'true', udev is able to pass errors or debug information
to syslog. This is very useful to see what udev is doing or not doing.
It is enabled by default, don't expect any useful answer, if you
need to hunt a bug, but you can't enable syslog.
DEBUG
If set to 'true', very verbose debugging messages will be compiled
into the udev binaries. The actual level of debugging is specified
in the udev config file.
USE_SELINUX
If set to 'true', udev will be built with SELinux support
enabled. This is disabled by default.
EXTRAS
list of helper programs in extras/ to build.
make EXTRAS="extras/cdrom_id extras/scsi_id extras/volume_id"
Installation:
- The install target intalls the udev binaries in the default locations,
All binaries will be installed in /lib/udev or /sbin.
- The default location for scripts and binaries that are called from
rules is /lib/udev. Other packages who install udev rules, may use
that directory too.
- It is recommended to use the /lib/udev/devices/ directory to place
device nodes and symlinks in, which are copied to /dev at every boot.
That way, nodes for broken subsystems or devices which can't be
detected automatically by the kernel, will always be available.
- Default udev rules and persistent device naming rules are required by other
software that depends on the data udev collects from the devices,
and should be installed by default with every udev installation.
Please direct any comment/question/concern to the linux-hotplug-devel mailing list at:
Please direct any comment/question/concern to the linux-hotplug mailing list at:
linux-hotplug@vger.kernel.org

57
autogen.sh Executable file
View File

@ -0,0 +1,57 @@
#!/bin/sh -e
(autopoint --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have autopoint installed to generate the build system.."
echo
exit 1
}
(autoconf --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have autoconf installed to generate the build system."
echo
exit 1
}
(libtoolize --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have libtool installed to generate the build system."
echo
exit 1
}
(autoheader --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have autoheader installed to generate the build system."
echo
exit 1
}
(automake --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have automake installed to generate the build system."
echo
exit 1
}
test -f udev/udevd.c || {
echo "You must run this script in the top-level source directory"
exit 1
}
echo " aclocal: $(aclocal --version | head -1)"
aclocal
echo " autoconf: $(autoconf --version | head -1)"
autoconf
echo " libtool: $(automake --version | head -1)"
libtoolize --force
echo " autoheader: $(autoheader --version | head -1)"
autoheader
echo " automake: $(automake --version | head -1)"
automake --add-missing
if test -z "$@"; then
args="--prefix=/usr --exec-prefix= --sysconfdir=/etc"
else
args=$@
fi
echo " configure: $args"
echo
./configure $args

118
configure.ac Normal file
View File

@ -0,0 +1,118 @@
AC_INIT(udev,
126,
kay.sievers@vrfy.org)
AC_PREREQ(2.60)
AC_CONFIG_SRCDIR(udev/udevd.c)
AM_INIT_AUTOMAKE([check-news foreign -Wall 1.9 dist-bzip2])
AC_GNU_SOURCE
AC_DISABLE_STATIC
AC_SYS_LARGEFILE
AC_PROG_LIBTOOL
dnl /* libvolume_id version */
VOLID_LT_CURRENT=0
VOLID_LT_REVISION=86
VOLID_LT_AGE=0
AC_SUBST(VOLID_LT_CURRENT)
AC_SUBST(VOLID_LT_REVISION)
AC_SUBST(VOLID_LT_AGE)
AC_PATH_PROG([XSLTPROC], [xsltproc])
AC_CHECK_LIB(c, inotify_init,
[AC_DEFINE([HAVE_INOTIFY], 1, [inotify available])],
[AC_MSG_WARN([inotify support disabled])])
AC_CHECK_LIB(c, strlcpy,
[AC_DEFINE([HAVE_STRLCPY], 1, [strlcpy available])],
[])
AC_ARG_WITH(udev-prefix,
AS_HELP_STRING([--with-udev-prefix=DIR], [add prefix to internal udev path names]),
[], [with_udev_prefix='${exec_prefix}'])
udev_prefix=$with_udev_prefix
AC_SUBST(udev_prefix)
AC_ARG_WITH(libdir-name,
AS_HELP_STRING([--with-libdir-name=DIR], [name of the arch lib directory]),
[], [with_libdir_name=lib])
libdir_name=$with_libdir_name
AC_SUBST(libdir_name)
AC_ARG_WITH(selinux,
AS_HELP_STRING([--with-selinux], [compile with SELinux support]),
[], with_selinux=no)
if test "x$with_selinux" = xyes; then
LIBS_save=$LIBS
AC_CHECK_LIB(selinux, getprevcon,
[],
AC_MSG_ERROR([SELinux selected but libselinux not found]))
LIBS=$LIBS_save
AC_DEFINE(USE_SELINUX, [1] ,[compile with SELinux support])
SELINUX_LIBS="-lselinux"
fi
AC_SUBST([SELINUX_LIBS])
AM_CONDITIONAL(USE_SELINUX, [test "x$with_selinux" = xyes], [compile with SELinux support])
AC_ARG_ENABLE(debug,
AS_HELP_STRING([--enable-debug], [turn on debugging]),
[], enable_debug=no)
if test "x$enable_debug" = "xyes"; then
AC_DEFINE(DEBUG, [1] ,[Compile in debug messages])
DEBUG_CFLAGS="-DDEBUG"
fi
AC_SUBST(DEBUG_CFLAGS)
AC_ARG_ENABLE(logging,
AS_HELP_STRING([--disable-logging], [turn off logging/syslog]),
[], enable_logging=yes)
if test "x$enable_logging" != "xno"; then
AC_DEFINE(USE_LOG, [1] ,[Use logging/syslog])
fi
AC_CONFIG_HEADERS(config.h)
AC_CONFIG_FILES([
Makefile
udev/Makefile
rules/Makefile
extras/Makefile
extras/ata_id/Makefile
extras/cdrom_id/Makefile
extras/edd_id/Makefile
extras/path_id/Makefile
extras/firmware/Makefile
extras/collect/Makefile
extras/floppy/Makefile
extras/fstab_import/Makefile
extras/rule_generator/Makefile
extras/scsi_id/Makefile
extras/usb_id/Makefile
extras/volume_id/Makefile
extras/volume_id/lib/Makefile
extras/volume_id/lib/libvolume_id.pc
])
AC_OUTPUT
echo "
udev $VERSION
========
prefix: ${prefix}
exec_prefix: ${exec_prefix}
udev_prefix: ${udev_prefix}
libdir_name: ${libdir_name}
datarootdir: ${datarootdir}
mandir: ${mandir}
includedir: ${includedir}
logging: ${enable_logging}
debug: ${enable_debug}
selinux: ${with_selinux}
compiler: ${CC}
cflags: ${CFLAGS}
ldflags: ${LDFLAGS}
xsltproc: ${XSLTPROC}
"

16
extras/Makefile.am Normal file
View File

@ -0,0 +1,16 @@
SUBDIRS = \
ata_id \
cdrom_id \
edd_id \
path_id \
firmware \
collect \
floppy \
fstab_import \
rule_generator \
scsi_id \
usb_id \
volume_id
distclean-local:
rm -f Makefile.in

20
extras/ata_id/Makefile.am Normal file
View File

@ -0,0 +1,20 @@
udevhomedir = $(udev_prefix)/lib/udev
udevhome_PROGRAMS = \
ata_id
AM_CPPFLAGS = \
-DSYSCONFDIR=\""$(sysconfdir)"\" \
-DUDEV_PREFIX=\""$(udev_prefix)"\"
ata_id_SOURCES = \
ata_id.c \
../../udev/udev_sysdeps.c \
../../udev/udev_utils.c \
../../udev/udev_utils_string.c
dist_man_MANS = \
ata_id.8
distclean-local:
rm -f Makefile.in

View File

@ -26,7 +26,7 @@
#include <linux/types.h>
#include <linux/hdreg.h>
#include "../../udev.h"
#include "../../udev/udev.h"
#ifdef USE_LOG
void log_message(int priority, const char *format, ...)

View File

@ -0,0 +1,24 @@
udevhomedir = $(udev_prefix)/lib/udev
udevhome_PROGRAMS = \
cdrom_id
udevrulesdir = $(udev_prefix)/lib/udev/rules.d
dist_udevrules_DATA = \
60-cdrom_id.rules
AM_CPPFLAGS = \
-DSYSCONFDIR=\""$(sysconfdir)"\" \
-DUDEV_PREFIX=\""$(udev_prefix)"\"
cdrom_id_SOURCES = \
cdrom_id.c \
../../udev/udev_sysdeps.c \
../../udev/udev_utils.c \
../../udev/udev_utils_string.c
dist_man_MANS = \
cdrom_id.8
distclean-local:
rm -f Makefile.in

View File

@ -37,7 +37,8 @@
#include <sys/time.h>
#include <sys/ioctl.h>
#include <linux/cdrom.h>
#include "../../udev.h"
#include "../../udev/udev.h"
#ifndef ARRAY_SIZE
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))

View File

@ -0,0 +1,11 @@
udevhomedir = $(udev_prefix)/lib/udev
udevhome_PROGRAMS = \
collect
AM_CPPFLAGS = \
-DSYSCONFDIR=\""$(sysconfdir)"\" \
-DUDEV_PREFIX=\""$(udev_prefix)"\"
distclean-local:
rm -f Makefile.in

View File

@ -31,9 +31,9 @@
#include <sys/types.h>
#include <sys/stat.h>
#include "../../list.h"
#include "../../udev/list.h"
#define TMPFILE "/dev/.udev/collect"
#define TMPFILE UDEV_PREFIX "/dev/.udev/collect"
#define BUFSIZE 16
#define UDEV_ALARM_TIMEOUT 180

24
extras/edd_id/Makefile.am Normal file
View File

@ -0,0 +1,24 @@
udevhomedir = $(udev_prefix)/lib/udev
udevhome_PROGRAMS = \
edd_id
udevrulesdir = $(udev_prefix)/lib/udev/rules.d
dist_udevrules_DATA = \
61-persistent-storage-edd.rules
AM_CPPFLAGS = \
-DSYSCONFDIR=\""$(sysconfdir)"\" \
-DUDEV_PREFIX=\""$(udev_prefix)"\"
edd_id_SOURCES = \
edd_id.c \
../../udev/udev_sysdeps.c \
../../udev/udev_utils.c \
../../udev/udev_utils_string.c
dist_man_MANS = \
edd_id.8
distclean-local:
rm -f Makefile.in

View File

@ -23,7 +23,7 @@
#include <dirent.h>
#include <stdint.h>
#include "../../udev.h"
#include "../../udev/udev.h"
#ifdef USE_LOG
void log_message(int priority, const char *format, ...)

View File

@ -0,0 +1,7 @@
udevhomedir = $(udev_prefix)/lib/udev
dist_udevhome_SCRIPTS = \
firmware.sh
distclean-local:
rm -f Makefile.in

29
extras/floppy/Makefile.am Normal file
View File

@ -0,0 +1,29 @@
udevhomedir = $(udev_prefix)/lib/udev
udevhome_PROGRAMS = \
create_floppy_devices
AM_CPPFLAGS = \
-DSYSCONFDIR=\""$(sysconfdir)"\" \
-DUDEV_PREFIX=\""$(udev_prefix)"\"
create_floppy_devices_SOURCES = \
create_floppy_devices.c \
../../udev/udev_config.c \
../../udev/udev_sysdeps.c \
../../udev/udev_utils.c \
../../udev/udev_utils_string.c \
../../udev/udev_utils_file.c
if USE_SELINUX
create_floppy_devices_SOURCES += \
../../udev/udev_selinux.c
create_floppy_devices_LDADD = \
$(SELINUX_LIBS)
endif
dist_man_MANS = \
create_floppy_devices.8
distclean-local:
rm -f Makefile.in

View File

@ -24,8 +24,8 @@
#include <pwd.h>
#include <grp.h>
#include "../../udev.h"
#include "../../udev_selinux.h"
#include "../../udev/udev.h"
#include "../../udev/udev_selinux.h"
static char *table[] = {
"", "d360", "h1200", "u360", "u720", "h360", "h720",

View File

@ -0,0 +1,21 @@
udevhomedir = $(udev_prefix)/lib/udev
udevhome_PROGRAMS = \
fstab_import
udevrulesdir = $(udev_prefix)/lib/udev/rules.d
dist_udevrules_DATA = \
79-fstab_import.rules
AM_CPPFLAGS = \
-DSYSCONFDIR=\""$(sysconfdir)"\" \
-DUDEV_PREFIX=\""$(udev_prefix)"\"
fstab_import_SOURCES = \
fstab_import.c \
../../udev/udev_sysdeps.c \
../../udev/udev_utils.c \
../../udev/udev_utils_string.c
distclean-local:
rm -f Makefile.in

View File

@ -24,7 +24,7 @@
#include <mntent.h>
#include <sys/stat.h>
#include "../../udev.h"
#include "../../udev/udev.h"
static int debug;
static char root[PATH_SIZE] = "/dev";

View File

@ -0,0 +1,10 @@
udevhomedir = $(udev_prefix)/lib/udev
dist_udevhome_SCRIPTS = \
path_id
dist_man_MANS = \
path_id.8
distclean-local:
rm -f Makefile.in

View File

@ -0,0 +1,16 @@
udevhomedir = $(udev_prefix)/lib/udev
dist_udevhome_SCRIPTS = \
write_cd_rules \
write_net_rules
dist_udevhome_DATA = \
rule_generator.functions
udevrulesdir = $(udev_prefix)/lib/udev/rules.d
dist_udevrules_DATA = \
75-cd-aliases-generator.rules \
75-persistent-net-generator.rules
distclean-local:
rm -f Makefile.in

View File

@ -0,0 +1,27 @@
udevhomedir = $(udev_prefix)/lib/udev
udevhome_PROGRAMS = \
scsi_id
AM_CPPFLAGS = \
-DSYSCONFDIR=\""$(sysconfdir)"\" \
-DUDEV_PREFIX=\""$(udev_prefix)"\"
scsi_id_SOURCES = \
scsi_id.c \
scsi_serial.c \
scsi.h \
scsi_id.h \
bsg.h \
../../udev/udev_sysdeps.c \
../../udev/udev_utils.c \
../../udev/udev_utils_string.c
dist_sysconf_DATA = \
scsi_id.config
dist_man_MANS = \
scsi_id.8
distclean-local:
rm -f Makefile.in

View File

@ -14,6 +14,8 @@
* Free Software Foundation version 2 of the License.
*/
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@ -27,9 +29,8 @@
#include <getopt.h>
#include <sys/stat.h>
#include "../../udev.h"
#include "../../udev/udev.h"
#include "scsi_id.h"
#include "scsi_id_version.h"
static const struct option options[] = {
{ "device", 1, NULL, 'd' },
@ -51,7 +52,7 @@ static const char dev_short_options[] = "bgp:";
static int all_good;
static int dev_specified;
static char config_file[MAX_PATH_LEN] = SCSI_ID_CONFIG_FILE;
static char config_file[MAX_PATH_LEN] = SYSCONFDIR "/scsi_id.config";
static enum page_code default_page_code;
static int sg_version = 4;
static int use_stderr;
@ -468,7 +469,7 @@ static int set_options(int argc, char **argv, const char *short_opts,
break;
case 'V':
printf("%s\n", SCSI_ID_VERSION);
printf("%s\n", VERSION);
exit(0);
break;

View File

@ -30,10 +30,9 @@
/* #include <linux/bsg.h> */
#include "bsg.h"
#include "../../udev.h"
#include "../../udev/udev.h"
#include "scsi.h"
#include "scsi_id.h"
#include "scsi_id_version.h"
/*
* A priority based list of id, naa, and binary/ascii for the identifier

18
extras/usb_id/Makefile.am Normal file
View File

@ -0,0 +1,18 @@
udevhomedir = $(udev_prefix)/lib/udev
udevhome_PROGRAMS = \
usb_id
AM_CPPFLAGS = \
-DSYSCONFDIR=\""$(sysconfdir)"\" \
-DUDEV_PREFIX=\""$(udev_prefix)"\"
usb_id_SOURCES = \
usb_id.c \
../../udev/udev_sysfs.c \
../../udev/udev_sysdeps.c \
../../udev/udev_utils.c \
../../udev/udev_utils_string.c
distclean-local:
rm -f Makefile.in

View File

@ -20,7 +20,7 @@
#include <errno.h>
#include <getopt.h>
#include "../../udev.h"
#include "../../udev/udev.h"
#define MAX_PATH_LEN 512
#define MAX_SERIAL_LEN 256

View File

@ -0,0 +1,33 @@
SUBDIRS = \
lib
udevhomedir = $(udev_prefix)/lib/udev
udevhome_PROGRAMS = \
vol_id
AM_CPPFLAGS = \
-DSYSCONFDIR=\""$(sysconfdir)"\" \
-DUDEV_PREFIX=\""$(udev_prefix)"\"
vol_id_SOURCES = \
vol_id.c \
../../udev/udev_sysdeps.c \
../../udev/udev_utils.c \
../../udev/udev_utils_string.c
vol_id_LDADD = \
lib/libvolume_id.la
dist_man_MANS = \
vol_id.8
EXTRA_DIST = \
vol_id.xml
%.7 %.8 : %.xml
$(XSLTPROC) -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
distclean-local:
rm -f Makefile.in
rm -f $(dist_man_MANS)

View File

@ -0,0 +1,69 @@
rootlibdir = $(exec_prefix)/$(libdir_name)
rootlib_LTLIBRARIES = \
libvolume_id.la
include_HEADERS =\
libvolume_id.h
libvolume_id_la_SOURCES =\
ext.c \
fat.c \
hfs.c \
highpoint.c \
isw_raid.c \
lsi_raid.c \
via_raid.c \
silicon_raid.c \
nvidia_raid.c \
promise_raid.c \
adaptec_raid.c \
jmicron_raid.c \
ddf_raid.c \
iso9660.c \
jfs.c \
linux_raid.c \
linux_swap.c \
lvm.c \
ntfs.c \
reiserfs.c \
udf.c \
ufs.c \
xfs.c \
cramfs.c \
hpfs.c \
romfs.c \
sysv.c \
minix.c \
gfs.c \
luks.c \
ocfs.c \
vxfs.c \
squashfs.c \
netware.c \
oracleasm.c \
volume_id.c \
util.h \
util.c
libvolume_id_la_LDFLAGS = \
-version-info $(VOLID_LT_CURRENT):$(VOLID_LT_REVISION):$(VOLID_LT_AGE) \
-export-symbols $(top_srcdir)/extras/volume_id/lib/exported_symbols
# move devel files to $(prefix)$(libdir_name) if needed
install-data-hook:
rm $(DESTDIR)$(rootlibdir)/libvolume_id.la
if test "$(prefix)" != "$(exec_prefix)"; then \
rm $(DESTDIR)$(rootlibdir)/libvolume_id.so; \
mkdir -p $(DESTDIR)$(prefix)/$(libdir_name); \
ln -sf $(rootlibdir)/libvolume_id.so.$(VOLID_LT_CURRENT).$(VOLID_LT_AGE).$(VOLID_LT_REVISION) \
$(DESTDIR)$(prefix)/$(libdir_name)/libvolume_id.so; \
fi
EXTRA_DIST = \
exported_symbols
pkgconfigdir = $(prefix)/$(libdir_name)/pkgconfig
pkgconfig_DATA = libvolume_id.pc
distclean-local:
rm -f Makefile.in

View File

@ -1,64 +1,55 @@
{ global:
volume_id_log_fn;
volume_id_get_label;
volume_id_get_label_raw;
volume_id_get_uuid;
volume_id_get_uuid_raw;
volume_id_get_usage;
volume_id_get_type;
volume_id_get_type_version;
volume_id_open_fd;
volume_id_close;
volume_id_probe_all;
volume_id_probe_filesystem;
volume_id_probe_raid;
volume_id_all_probers;
volume_id_get_prober_by_type;
volume_id_encode_string;
volume_id_open_node;
volume_id_probe_linux_swap;
volume_id_probe_luks;
volume_id_probe_cramfs;
volume_id_probe_ext;
volume_id_probe_vfat;
volume_id_probe_hfs_hfsplus;
volume_id_probe_hpfs;
volume_id_probe_iso9660;
volume_id_probe_jfs;
volume_id_probe_minix;
volume_id_probe_ntfs;
volume_id_probe_ocfs1;
volume_id_probe_ocfs2;
volume_id_probe_reiserfs;
volume_id_probe_romfs;
volume_id_probe_sysv;
volume_id_probe_udf;
volume_id_probe_ufs;
volume_id_probe_vxfs;
volume_id_probe_xfs;
volume_id_probe_squashfs;
volume_id_probe_netware;
volume_id_probe_gfs;
volume_id_probe_gfs2;
volume_id_probe_linux_raid;
volume_id_probe_lvm1;
volume_id_probe_lvm2;
volume_id_probe_ddf_raid;
volume_id_probe_intel_software_raid;
volume_id_probe_highpoint_37x_raid;
volume_id_probe_highpoint_45x_raid;
volume_id_probe_lsi_mega_raid;
volume_id_probe_nvidia_raid;
volume_id_probe_promise_fasttrack_raid;
volume_id_probe_silicon_medley_raid;
volume_id_probe_via_raid;
volume_id_probe_adaptec_raid;
volume_id_probe_jmicron_raid;
local:
*;
};
volume_id_log_fn
volume_id_get_label
volume_id_get_label_raw
volume_id_get_uuid
volume_id_get_uuid_raw
volume_id_get_usage
volume_id_get_type
volume_id_get_type_version
volume_id_open_fd
volume_id_close
volume_id_probe_all
volume_id_probe_filesystem
volume_id_probe_raid
volume_id_all_probers
volume_id_get_prober_by_type
volume_id_encode_string
volume_id_open_node
volume_id_probe_linux_swap
volume_id_probe_luks
volume_id_probe_cramfs
volume_id_probe_ext
volume_id_probe_vfat
volume_id_probe_hfs_hfsplus
volume_id_probe_hpfs
volume_id_probe_iso9660
volume_id_probe_jfs
volume_id_probe_minix
volume_id_probe_ntfs
volume_id_probe_ocfs1
volume_id_probe_ocfs2
volume_id_probe_reiserfs
volume_id_probe_romfs
volume_id_probe_sysv
volume_id_probe_udf
volume_id_probe_ufs
volume_id_probe_vxfs
volume_id_probe_xfs
volume_id_probe_squashfs
volume_id_probe_netware
volume_id_probe_gfs
volume_id_probe_gfs2
volume_id_probe_linux_raid
volume_id_probe_lvm1
volume_id_probe_lvm2
volume_id_probe_ddf_raid
volume_id_probe_intel_software_raid
volume_id_probe_highpoint_37x_raid
volume_id_probe_highpoint_45x_raid
volume_id_probe_lsi_mega_raid
volume_id_probe_nvidia_raid
volume_id_probe_promise_fasttrack_raid
volume_id_probe_silicon_medley_raid
volume_id_probe_via_raid
volume_id_probe_adaptec_raid
volume_id_probe_jmicron_raid

View File

@ -0,0 +1,10 @@
prefix=@prefix@
exec_prefix=@prefix@
libdir=@prefix@/@libdir_name@
includedir=@prefix@/include
Name: libvolume_id
Description: Library for reading metadata, label, uuid from various filesystems
Version: @VERSION@
Libs: -L${libdir} -lvolume_id
Cflags: -I${includedir}

View File

@ -34,7 +34,7 @@
#include <fcntl.h>
#include <sys/ioctl.h>
#include "../../udev.h"
#include "../../udev/udev.h"
#include "lib/libvolume_id.h"
#define BLKGETSIZE64 _IOR(0x12,114,size_t)

25
rules/Makefile.am Normal file
View File

@ -0,0 +1,25 @@
udevrulesdir = $(udev_prefix)/lib/udev/rules.d
dist_udevrules_DATA = \
rules.d/50-udev-default.rules \
rules.d/60-persistent-storage.rules \
rules.d/60-persistent-storage-tape.rules \
rules.d/60-persistent-input.rules \
rules.d/60-persistent-v4l.rules \
rules.d/80-drivers.rules \
rules.d/95-udev-late.rules
install-data-local:
-mkdir -p $(DESTDIR)$(sysconfdir)/udev/rules.d
EXTRA_DIST = \
packages \
debian \
redhat \
suse \
gentoo \
slackware \
frugalware
distclean-local:
rm -f Makefile.in

View File

@ -22,7 +22,7 @@ use strict;
my $PWD = $ENV{PWD};
my $sysfs = "sys/";
my $udev_bin = "../test-udev";
my $udev_bin = "../udev/test-udev";
my $udev_root = "udev-root/";
my $udev_conf = "udev-test.conf";
my $udev_rules = "udev-test.rules";

6
udev/.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
*.o
*.a
udevd
udevadm
test-udev
.deps/

115
udev/Makefile.am Normal file
View File

@ -0,0 +1,115 @@
sbin_PROGRAMS = \
udevd \
udevadm
noinst_PROGRAMS = \
test-udev
AM_CPPFLAGS = \
-DSYSCONFDIR=\""$(sysconfdir)"\" \
-DUDEV_PREFIX=\""$(udev_prefix)"\"
udevd_SOURCES = \
list.h \
logging.h \
udev.h \
udev_rules.h \
udev_selinux.h \
udev_sysdeps.h \
udevd.h \
udevd.c \
udev_config.c \
udev_db.c \
udev_device.c \
udev_node.c \
udev_rules.c \
udev_rules_parse.c \
udev_sysdeps.c \
udev_sysfs.c \
udev_utils.c \
udev_utils_file.c \
udev_utils_string.c
if USE_SELINUX
udevd_SOURCES += \
udev_selinux.c
udevd_LDADD = \
$(SELINUX_LIBS)
endif
udevadm_SOURCES = \
list.h \
logging.h \
udev.h \
udev_rules.h \
udev_selinux.h \
udev_sysdeps.h \
udevadm.c \
udevinfo.c \
udevcontrol.c \
udevtest.c \
udevmonitor.c \
udevsettle.c \
udevtrigger.c \
udev_config.c \
udev_db.c \
udev_device.c \
udev_node.c \
udev_rules.c \
udev_rules_parse.c \
udev_sysdeps.c \
udev_sysfs.c \
udev_utils.c \
udev_utils_file.c \
udev_utils_string.c
if USE_SELINUX
udevadm_SOURCES += \
udev_selinux.c
udevadm_LDADD = \
$(SELINUX_LIBS)
endif
test_udev_SOURCES = \
list.h \
logging.h \
udev.h \
udev_rules.h \
udev_selinux.h \
udev_sysdeps.h \
test-udev.c \
udev_config.c \
udev_db.c \
udev_device.c \
udev_node.c \
udev_rules.c \
udev_rules_parse.c \
udev_sysdeps.c \
udev_sysfs.c \
udev_utils.c \
udev_utils_file.c \
udev_utils_string.c
if USE_SELINUX
test_udev_SOURCES += \
udev_selinux.c
test_udev_LDADD = \
$(SELINUX_LIBS)
endif
dist_man_MANS = \
udev.7 \
udevadm.8 \
udevd.8
EXTRA_DIST = \
udev.xml \
udevadm.xml \
udevd.xml
%.7 %.8 : %.xml
$(XSLTPROC) -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
distclean-local:
rm -f Makefile.in
rm -f $(dist_man_MANS)

View File

@ -22,6 +22,8 @@
#ifndef LOGGING_H
#define LOGGING_H
#include "config.h"
#define err(format, arg...) do { } while (0)
#define info(format, arg...) do { } while (0)
#define dbg(format, arg...) do { } while (0)

View File

@ -17,6 +17,8 @@
*
*/
#include "config.h"
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
@ -71,7 +73,7 @@ int main(int argc, char *argv[], char *envp[])
int retval = -EINVAL;
if (argc == 2 && strcmp(argv[1], "-V") == 0) {
printf("%s\n", UDEV_VERSION);
printf("%s\n", VERSION);
exit(0);
}
@ -93,7 +95,7 @@ int main(int argc, char *argv[], char *envp[])
err("open /dev/null failed: %s\n", strerror(errno));
udev_config_init();
selinux_init();
dbg("version %s\n", UDEV_VERSION);
dbg("version %s\n", VERSION);
/* set signal handlers */
memset(&act, 0x00, sizeof(act));

View File

@ -26,7 +26,6 @@
#include "list.h"
#include "logging.h"
#include "udev_sysdeps.h"
#include "udev_version.h"
#define COMMENT_CHARACTER '#'
#define LINE_SIZE 512
@ -47,13 +46,6 @@
#define READ_END 0
#define WRITE_END 1
#define UDEV_ROOT "/dev"
#define DB_DIR ".udev/db"
#define DB_NAME_INDEX_DIR ".udev/names"
#define RULES_LIB_DIR "/lib/udev/rules.d"
#define RULES_DYN_DIR ".udev/rules.d"
#define RULES_ETC_DIR "/etc/udev/rules.d"
struct udev_rules;
struct sysfs_device {

View File

@ -164,8 +164,8 @@ void udev_config_init(void)
{
const char *env;
strcpy(udev_config_filename, UDEV_CONFIG_FILE);
strcpy(udev_root, UDEV_ROOT);
strcpy(udev_config_filename, SYSCONFDIR "/udev/udev.conf");
strcpy(udev_root, UDEV_PREFIX "/dev");
udev_rules_dir[0] = '\0';
udev_log_priority = LOG_ERR;
udev_run = 1;

View File

@ -40,7 +40,7 @@ static size_t devpath_to_db_path(const char *devpath, char *filename, size_t len
/* translate to location of db file */
strlcpy(filename, udev_root, len);
start = strlcat(filename, "/"DB_DIR"/", len);
start = strlcat(filename, "/.udev/db/", len);
strlcat(filename, devpath, len);
return path_encode(&filename[start], len - start);
}
@ -55,7 +55,7 @@ static int name_index(const char *devpath, const char *name, int add)
/* directory with device name */
strlcpy(filename, udev_root, sizeof(filename));
start = strlcat(filename, "/"DB_NAME_INDEX_DIR"/", sizeof(filename));
start = strlcat(filename, "/.udev/names/", sizeof(filename));
strlcat(filename, name, sizeof(filename));
path_encode(&filename[start], sizeof(filename) - start);
/* entry with the devpath */
@ -86,7 +86,7 @@ int udev_db_get_devices_by_name(const char *name, struct list_head *name_list)
int rc = 0;
strlcpy(dirname, udev_root, sizeof(dirname));
start = strlcat(dirname, "/"DB_NAME_INDEX_DIR"/", sizeof(dirname));
start = strlcat(dirname, "/.udev/names/", sizeof(dirname));
strlcat(dirname, name, sizeof(dirname));
path_encode(&dirname[start], sizeof(dirname) - start);
@ -303,7 +303,7 @@ int udev_db_get_all_entries(struct list_head *name_list)
DIR *dir;
strlcpy(dbpath, udev_root, sizeof(dbpath));
strlcat(dbpath, "/"DB_DIR, sizeof(dbpath));
strlcat(dbpath, "/.udev/db", sizeof(dbpath));
dir = opendir(dbpath);
if (dir == NULL) {
info("no udev_db available '%s': %s\n", dbpath, strerror(errno));

View File

@ -24,6 +24,7 @@
#include <fcntl.h>
#include <errno.h>
#include <ctype.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <net/if.h>

View File

@ -174,7 +174,7 @@ static int run_program(const char *command, const char *subsystem,
/* allow programs in /lib/udev called without the path */
if (strchr(argv[0], '/') == NULL) {
strlcpy(program, "/lib/udev/", sizeof(program));
strlcpy(program, UDEV_PREFIX "/lib/udev/", sizeof(program));
strlcat(program, argv[0], sizeof(program));
argv[0] = program;
}

View File

@ -24,7 +24,6 @@
#include "list.h"
#define PAIRS_MAX 5
#define RULESFILE_SUFFIX ".rules"
enum key_operation {
KEY_OP_UNSET,

View File

@ -451,7 +451,7 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena
/* allow programs in /lib/udev called without the path */
if (strchr(file, '/') == NULL) {
strlcpy(file, "/lib/udev/", sizeof(file));
strlcpy(file, UDEV_PREFIX "/lib/udev/", sizeof(file));
strlcat(file, value, sizeof(file));
pos = strchr(file, ' ');
if (pos)
@ -739,24 +739,24 @@ int udev_rules_init(struct udev_rules *rules, int resolve_names)
if (udev_rules_dir[0] != '\0') {
/* custom rules location for testing */
add_matching_files(&name_list, udev_rules_dir, RULESFILE_SUFFIX);
add_matching_files(&name_list, udev_rules_dir, ".rules");
} else {
/* read default rules */
add_matching_files(&name_list, RULES_LIB_DIR, RULESFILE_SUFFIX);
add_matching_files(&name_list, UDEV_PREFIX "/lib/udev/rules.d", ".rules");
/* read user/custom rules */
add_matching_files(&sort_list, RULES_ETC_DIR, RULESFILE_SUFFIX);
add_matching_files(&sort_list, SYSCONFDIR "/udev/rules.d", ".rules");
/* read dynamic/temporary rules */
strlcpy(filename, udev_root, sizeof(filename));
strlcat(filename, "/"RULES_DYN_DIR, sizeof(filename));
strlcat(filename, "/.udev/rules.d", sizeof(filename));
if (stat(filename, &statbuf) != 0) {
create_path(filename);
selinux_setfscreatecon(filename, NULL, S_IFDIR|0755);
mkdir(filename, 0755);
selinux_resetfscreatecon();
}
add_matching_files(&sort_list, filename, RULESFILE_SUFFIX);
add_matching_files(&sort_list, filename, ".rules");
/* sort all rules files by basename into list of files */
list_for_each_entry_safe(sort_loop, sort_tmp, &sort_list, node) {

View File

@ -16,6 +16,8 @@
*
*/
#include "config.h"
#include <stdlib.h>
#include <stdio.h>
#include <stddef.h>

View File

@ -19,20 +19,17 @@
#define _UDEV_SELINUX_H
#ifdef USE_SELINUX
extern void selinux_setfilecon(const char *file, const char *devname, unsigned int mode);
extern void selinux_setfscreatecon(const char *file, const char *devname, unsigned int mode);
extern void selinux_resetfscreatecon(void);
extern void selinux_init(void);
extern void selinux_exit(void);
#else
static inline void selinux_setfilecon(const char *file, const char *devname, unsigned int mode) {}
static inline void selinux_setfscreatecon(const char *file, const char *devname, unsigned int mode) {}
static inline void selinux_resetfscreatecon(void) {}
static inline void selinux_init(void) {}
static inline void selinux_exit(void) {}
#endif
#endif /* USE_SELINUX */
#endif /* _UDEV_USE_SELINUX */
#endif

View File

@ -1,6 +1,5 @@
/*
* Copyright (C) 2003 Greg Kroah-Hartman <greg@kroah.com>
* Copyright (C) 2005-2006 Kay Sievers <kay.sievers@vrfy.org>
* Copyright (C) 2005-2008 Kay Sievers <kay.sievers@vrfy.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@ -20,14 +19,9 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/types.h>
#include "udev.h"
#ifdef __GLIBC__
#ifndef HAVE_STRLCPY
size_t strlcpy(char *dst, const char *src, size_t size)
{
size_t bytes = 0;
@ -70,4 +64,4 @@ size_t strlcat(char *dst, const char *src, size_t size)
*q = '\0';
return bytes;
}
#endif /* __GLIBC__ */
#endif /* HAVE_STRLCPY */

View File

@ -1,7 +1,7 @@
/*
* wrapping of libc features and kernel interfaces
*
* Copyright (C) 2005-2006 Kay Sievers <kay.sievers@vrfy.org>
* Copyright (C) 2005-2008 Kay Sievers <kay.sievers@vrfy.org>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
@ -21,117 +21,8 @@
#ifndef _UDEV_SYSDEPS_H_
#define _UDEV_SYSDEPS_H_
#include <string.h>
#include <unistd.h>
#include <stdint.h>
/* needed until Inotify! syscalls reach glibc */
#include <sys/syscall.h>
#ifndef __NR_inotify_init
#if defined(__i386__)
# define __NR_inotify_init 291
# define __NR_inotify_add_watch 292
# define __NR_inotify_rm_watch 293
#elif defined(__x86_64__)
# define __NR_inotify_init 253
# define __NR_inotify_add_watch 254
# define __NR_inotify_rm_watch 255
#elif defined(__powerpc__) || defined(__powerpc64__)
# define __NR_inotify_init 275
# define __NR_inotify_add_watch 276
# define __NR_inotify_rm_watch 277
#elif defined (__ia64__)
# define __NR_inotify_init 1277
# define __NR_inotify_add_watch 1278
# define __NR_inotify_rm_watch 1279
#elif defined (__s390__)
# define __NR_inotify_init 284
# define __NR_inotify_add_watch 285
# define __NR_inotify_rm_watch 286
#elif defined (__alpha__)
# define __NR_inotify_init 444
# define __NR_inotify_add_watch 445
# define __NR_inotify_rm_watch 446
#elif defined (__sparc__) || defined (__sparc64__)
# define __NR_inotify_init 151
# define __NR_inotify_add_watch 152
# define __NR_inotify_rm_watch 156
#elif defined (__arm__)
# define __NR_inotify_init __NR_SYSCALL_BASE+316
# define __NR_inotify_add_watch __NR_SYSCALL_BASE+317
# define __NR_inotify_rm_watch __NR_SYSCALL_BASE+318
#elif defined (__sh__)
# define __NR_inotify_init 290
# define __NR_inotify_add_watch 291
# define __NR_inotify_rm_watch 292
#elif defined (__m32r__)
# define __NR_inotify_init 290
# define __NR_inotify_add_watch 291
# define __NR_inotify_rm_watch 292
#elif defined (__hppa__)
# define __NR_inotify_init 269
# define __NR_inotify_add_watch 270
# define __NR_inotify_rm_watch 271
#elif defined (__mips__)
# include <sgidefs.h>
# if _MIPS_SIM == _MIPS_SIM_ABI32
# define __NR_Linux 4000
# define __NR_inotify_init (__NR_Linux + 284)
# define __NR_inotify_add_watch (__NR_Linux + 285)
# define __NR_inotify_rm_watch (__NR_Linux + 286)
# elif _MIPS_SIM == _MIPS_SIM_ABI64
# define __NR_Linux 5000
# define __NR_inotify_init (__NR_Linux + 243)
# define __NR_inotify_add_watch (__NR_Linux + 244)
# define __NR_inotify_rm_watch (__NR_Linux + 245)
# elif _MIPS_SIM == _MIPS_SIM_NABI32
# define __NR_Linux 6000
# define __NR_inotify_init (__NR_Linux + 247)
# define __NR_inotify_add_watch (__NR_Linux + 248)
# define __NR_inotify_rm_watch (__NR_Linux + 249)
# endif
#else
#warning "inotify unsupported on this architecture!"
#endif
#endif /* __NR_inotify_init */
/* dummy if we don't have the syscalls defined */
#ifndef __NR_inotify_init
static inline int inotify_init(void)
{
return -1;
}
static inline int inotify_add_watch(int fd, const char *name, uint32_t mask)
{
return -1;
}
#else
/* needed until /usr/include/sys/inotify.h is working */
#ifndef __GLIBC__
#include <sys/inotify.h>
#else
static inline int inotify_init(void)
{
return syscall(__NR_inotify_init);
}
static inline int inotify_add_watch(int fd, const char *name, uint32_t mask)
{
return syscall(__NR_inotify_add_watch, fd, name, mask);
}
#endif /* __GLIBC__ */
#endif /* __NR_inotify_init */
#ifndef IN_CREATE
#define IN_CREATE 0x00000100 /* Subfile was created */
#define IN_MOVED_FROM 0x00000040 /* File was moved from X */
#define IN_MOVED_TO 0x00000080 /* File was moved to Y */
#define IN_DELETE 0x00000200 /* Subfile was deleted */
#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed */
#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* moves */
#endif /* IN_CREATE */
/* needed for our signal handlers to work */
#undef asmlinkage
#ifdef __i386__
@ -140,33 +31,21 @@ static inline int inotify_add_watch(int fd, const char *name, uint32_t mask)
#define asmlinkage
#endif /* __i386__ */
/* headers are broken on some architectures */
#ifndef __FD_SET
#define __FD_SET(d, set) ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
#endif
#ifndef __FD_CLR
#define __FD_CLR(d, set) ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
#endif
#ifndef __FD_ISSET
#define __FD_ISSET(d, set) (((set)->fds_bits[__FDELT(d)] & __FDMASK(d)) != 0)
#endif
#ifndef __FD_ZERO
#define __FD_ZERO(set) ((void) memset ((void*) (set), 0, sizeof (fd_set)))
#endif
#ifndef NETLINK_KOBJECT_UEVENT
#define NETLINK_KOBJECT_UEVENT 15
#endif
#ifndef SO_RCVBUFFORCE
#if defined(__alpha__) || defined(__hppa__) || defined(__sparc__) || defined(__sparc_v9__)
#define SO_RCVBUFFORCE 0x100b
#else
#define SO_RCVBUFFORCE 33
#endif
#ifndef HAVE_INOTIFY
static inline int inotify_init(void)
{
return -1;
}
static inline int inotify_add_watch(int fd, const char *name, uint32_t mask)
{
return -1;
}
#endif
#ifndef HAVE_STRLCPY
extern size_t strlcpy(char *dst, const char *src, size_t size);
extern size_t strlcat(char *dst, const char *src, size_t size);
#endif
#endif

View File

@ -21,6 +21,7 @@
#include <stdio.h>
#include <stddef.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <ctype.h>
#include <errno.h>

View File

@ -21,6 +21,7 @@
#include <stdio.h>
#include <stddef.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <ctype.h>

View File

@ -21,6 +21,7 @@
#include <stdio.h>
#include <stddef.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <ctype.h>

View File

@ -21,6 +21,7 @@
#include <stdio.h>
#include <stddef.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include <ctype.h>

View File

@ -16,6 +16,8 @@
*
*/
#include "config.h"
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
@ -37,9 +39,9 @@ void log_message(int priority, const char *format, ...)
return;
va_start(args, format);
if (debug) {
if (debug)
vprintf(format, args);
} else
else
vsyslog(priority, format, args);
va_end(args);
}
@ -56,7 +58,7 @@ static const struct command cmds[];
static int version(int argc, char *argv[], char *envp[])
{
printf("%s\n", UDEV_VERSION);
printf("%s\n", VERSION);
return 0;
}

View File

@ -16,6 +16,8 @@
*
*/
#include "config.h"
#include <time.h>
#include <errno.h>
#include <stdio.h>
@ -50,7 +52,7 @@ int udevcontrol(int argc, char *argv[], char *envp[])
udev_log = log_priority(env);
logging_init("udevcontrol");
dbg("version %s\n", UDEV_VERSION);
dbg("version %s\n", VERSION);
if (argc < 2) {
fprintf(stderr, "missing command\n\n");

View File

@ -17,6 +17,8 @@
*
*/
#include "config.h"
#include <stddef.h>
#include <signal.h>
#include <unistd.h>
@ -39,6 +41,9 @@
#include <sys/ioctl.h>
#include <linux/types.h>
#include <linux/netlink.h>
#ifdef HAVE_INOTIFY
#include <sys/inotify.h>
#endif
#include "udev.h"
#include "udev_rules.h"
@ -156,12 +161,12 @@ static void export_event_state(struct udevd_uevent_msg *msg, enum event_state st
size_t start;
/* location of queue file */
snprintf(filename, sizeof(filename), "%s/"EVENT_QUEUE_DIR"/%llu", udev_root, msg->seqnum);
snprintf(filename, sizeof(filename), "%s/.udev/queue/%llu", udev_root, msg->seqnum);
/* location of failed file */
strlcpy(filename_failed, udev_root, sizeof(filename_failed));
strlcat(filename_failed, "/", sizeof(filename_failed));
start = strlcat(filename_failed, EVENT_FAILED_DIR"/", sizeof(filename_failed));
start = strlcat(filename_failed, ".udev/failed/", sizeof(filename_failed));
strlcat(filename_failed, msg->devpath, sizeof(filename_failed));
path_encode(&filename_failed[start], sizeof(filename_failed) - start);
@ -182,7 +187,7 @@ static void export_event_state(struct udevd_uevent_msg *msg, enum event_state st
strlcpy(filename_failed_old, udev_root, sizeof(filename_failed_old));
strlcat(filename_failed_old, "/", sizeof(filename_failed_old));
start = strlcat(filename_failed_old, EVENT_FAILED_DIR"/", sizeof(filename_failed_old));
start = strlcat(filename_failed_old, ".udev/failed/", sizeof(filename_failed_old));
strlcat(filename_failed_old, msg->devpath_old, sizeof(filename_failed_old));
path_encode(&filename_failed_old[start], sizeof(filename) - start);
@ -273,7 +278,7 @@ static void msg_queue_insert(struct udevd_uevent_msg *msg)
info("seq %llu queued, '%s' '%s'\n", msg->seqnum, msg->action, msg->subsystem);
strlcpy(filename, udev_root, sizeof(filename));
strlcat(filename, "/" EVENT_SEQNUM, sizeof(filename));
strlcat(filename, "/.udev/uevent_seqnum", sizeof(filename));
fd = open(filename, O_WRONLY|O_TRUNC|O_CREAT, 0644);
if (fd >= 0) {
char str[32];
@ -939,7 +944,7 @@ static void export_initial_seqnum(void)
len = 3;
}
strlcpy(filename, udev_root, sizeof(filename));
strlcat(filename, "/" EVENT_SEQNUM, sizeof(filename));
strlcat(filename, "/.udev/uevent_seqnum", sizeof(filename));
create_path(filename);
fd = open(filename, O_WRONLY|O_TRUNC|O_CREAT, 0644);
if (fd >= 0) {
@ -971,7 +976,7 @@ int main(int argc, char *argv[], char *envp[])
logging_init("udevd");
udev_config_init();
selinux_init();
dbg("version %s\n", UDEV_VERSION);
dbg("version %s\n", VERSION);
while (1) {
option = getopt_long(argc, argv, "dDthV", options, NULL);
@ -994,7 +999,7 @@ int main(int argc, char *argv[], char *envp[])
printf("Usage: udevd [--help] [--daemon] [--debug-trace] [--debug] [--version]\n");
goto exit;
case 'V':
printf("%s\n", UDEV_VERSION);
printf("%s\n", VERSION);
goto exit;
default:
goto exit;
@ -1123,7 +1128,7 @@ int main(int argc, char *argv[], char *envp[])
fd = open("/dev/kmsg", O_WRONLY);
if (fd > 0) {
const char *str = "<6>udevd version " UDEV_VERSION " started\n";
const char *str = "<6>udevd version " VERSION " started\n";
write(fd, str, strlen(str));
close(fd);
@ -1148,14 +1153,14 @@ int main(int argc, char *argv[], char *envp[])
} else {
char filename[PATH_MAX];
inotify_add_watch(inotify_fd, RULES_LIB_DIR,
inotify_add_watch(inotify_fd, UDEV_PREFIX "/lib/udev/rules.d",
IN_CREATE | IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
inotify_add_watch(inotify_fd, RULES_ETC_DIR,
inotify_add_watch(inotify_fd, SYSCONFDIR "/udev/rules.d",
IN_CREATE | IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
/* watch dynamic rules directory */
strlcpy(filename, udev_root, sizeof(filename));
strlcat(filename, "/"RULES_DYN_DIR, sizeof(filename));
strlcat(filename, "/.udev/rules.d", sizeof(filename));
inotify_add_watch(inotify_fd, filename,
IN_CREATE | IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
}

View File

@ -22,10 +22,6 @@
#define UDEVD_PRIORITY -4
#define UDEV_PRIORITY -2
#define EVENT_QUEUE_DIR ".udev/queue"
#define EVENT_FAILED_DIR ".udev/failed"
#define EVENT_SEQNUM ".udev/uevent_seqnum"
/* maximum limit of forked childs */
#define UDEVD_MAX_CHILDS 256
/* start to throttle forking if maximum number of running childs in our session is reached */
@ -35,8 +31,8 @@
#define UEVENT_BUFFER_SIZE 2048
#define UEVENT_NUM_ENVP 32
#define UDEVD_CTRL_SOCK_PATH "/org/kernel/udev/udevd"
#define UDEVD_CTRL_MAGIC "udevd_" UDEV_VERSION
#define UDEVD_CTRL_SOCK_PATH UDEV_PREFIX "/org/kernel/udev/udevd"
#define UDEVD_CTRL_MAGIC "udevd_" VERSION
enum udevd_ctrl_msg_type {
UDEVD_CTRL_UNKNOWN,

View File

@ -16,6 +16,8 @@
*
*/
#include "config.h"
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
@ -373,10 +375,10 @@ int udevinfo(int argc, char *argv[], char *envp[])
export_prefix = optarg;
break;
case 1:
printf("%s\n", UDEV_VERSION);
printf("%s\n", VERSION);
goto exit;
case 'V':
printf("udevinfo, version %s\n", UDEV_VERSION);
printf("udevinfo, version %s\n", VERSION);
goto exit;
case 'h':
printf("Usage: udevadm info OPTIONS\n"

View File

@ -89,7 +89,7 @@ int udevsettle(int argc, char *argv[], char *envp[])
logging_init("udevsettle");
udev_config_init();
dbg("version %s\n", UDEV_VERSION);
dbg("version %s\n", VERSION);
sysfs_init();
while (1) {
@ -113,7 +113,7 @@ int udevsettle(int argc, char *argv[], char *envp[])
}
strlcpy(queuename, udev_root, sizeof(queuename));
strlcat(queuename, "/" EVENT_QUEUE_DIR, sizeof(queuename));
strlcat(queuename, "/.udev/queue", sizeof(queuename));
loop = timeout * LOOP_PER_SECOND;
while (loop--) {
@ -135,7 +135,7 @@ int udevsettle(int argc, char *argv[], char *envp[])
/* read current udev seqnum */
strlcpy(filename, udev_root, sizeof(filename));
strlcat(filename, "/" EVENT_SEQNUM, sizeof(filename));
strlcat(filename, "/.udev/uevent_seqnum", sizeof(filename));
fd = open(filename, O_RDONLY);
if (fd < 0)
goto exit;

View File

@ -91,7 +91,7 @@ int udevtest(int argc, char *argv[], char *envp[])
{}
};
info("version %s\n", UDEV_VERSION);
info("version %s\n", VERSION);
udev_config_init();
if (udev_log_priority < LOG_INFO) {
char priority[32];

View File

@ -536,7 +536,7 @@ static void scan_failed(void)
struct dirent *dent;
strlcpy(base, udev_root, sizeof(base));
strlcat(base, "/" EVENT_FAILED_DIR, sizeof(base));
strlcat(base, "/.udev/failed", sizeof(base));
dir = opendir(base);
if (dir != NULL) {
@ -582,7 +582,7 @@ int udevtrigger(int argc, char *argv[], char *envp[])
logging_init("udevtrigger");
udev_config_init();
dbg("version %s\n", UDEV_VERSION);
dbg("version %s\n", VERSION);
sysfs_init();
while (1) {