Compare commits
24 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6432dc01e2 | ||
|
|
43b305ff9c | ||
|
|
92e3355c96 | ||
|
|
b5e470b956 | ||
|
|
43b3a39d3c | ||
|
|
24924749ea | ||
|
|
90c26960fb | ||
|
|
3e4cfcfce0 | ||
|
|
57475b8536 | ||
|
|
f714968249 | ||
|
|
b2bfe88396 | ||
|
|
e4e1196b9f | ||
| c79a4d6abd | |||
|
|
b8ad91fd93 | ||
|
|
e542609413 | ||
|
|
cc9477b6ac | ||
|
|
4041a2a8e4 | ||
|
|
9165231177 | ||
|
|
f693b0743f | ||
|
|
e418dca65a | ||
|
|
164998caba | ||
|
|
cd81212d7e | ||
|
|
e8b3267692 | ||
|
|
66d65ff607 |
33 changed files with 4062 additions and 1 deletions
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
udev-151.tar.bz2
|
||||
udev-153.tar.bz2
|
||||
udev-153.tar.bz2.sign
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
From 326c5fc3ea684825629eccaf33a548759162a539 Mon Sep 17 00:00:00 2001
|
||||
From: Kay Sievers <kay.sievers@vrfy.org>
|
||||
Date: Tue, 31 Aug 2010 21:29:21 +0200
|
||||
Subject: [PATCH] set SELinux context on 'add' but not on 'change' events
|
||||
|
||||
---
|
||||
udev/udev-node.c | 9 ++++++++-
|
||||
1 files changed, 8 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/udev/udev-node.c b/udev/udev-node.c
|
||||
index 228b3eb..c8113f1 100644
|
||||
--- a/udev/udev-node.c
|
||||
+++ b/udev/udev-node.c
|
||||
@@ -56,10 +56,17 @@ int udev_node_mknod(struct udev_device *dev, const char *file, mode_t mode, uid_
|
||||
info(udev, "set permissions %s, %#o, uid=%u, gid=%u\n", file, mode, uid, gid);
|
||||
chmod(file, mode);
|
||||
chown(file, uid, gid);
|
||||
- udev_selinux_lsetfilecon(udev, file, mode);
|
||||
} else {
|
||||
info(udev, "preserve permissions %s, %#o, uid=%u, gid=%u\n", file, mode, uid, gid);
|
||||
}
|
||||
+ /*
|
||||
+ * Set initial selinux file context only on add events.
|
||||
+ * We set the proper context on bootup (triger) or for newly
|
||||
+ * added devices, but we don't change it later, in case
|
||||
+ * something else has set a custom context in the meantime.
|
||||
+ */
|
||||
+ if (strcmp(udev_device_get_action(dev), "add") == 0)
|
||||
+ udev_selinux_lsetfilecon(udev, file, mode);
|
||||
/* always update timestamp when we re-use the node, like on media change events */
|
||||
utimensat(AT_FDCWD, file, NULL, 0);
|
||||
} else {
|
||||
--
|
||||
1.7.2.3
|
||||
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
From 939cc18afc49ee8479572c14c7fa777646fd4add Mon Sep 17 00:00:00 2001
|
||||
From: Kay Sievers <kay.sievers@vrfy.org>
|
||||
Date: Tue, 3 Aug 2010 15:09:46 +0200
|
||||
Subject: [PATCH 17/18] udev-acl: properly handle CK change events for root user
|
||||
|
||||
mschmidt@redhat.com writes:
|
||||
> since root is treated specially, it does not do anything!
|
||||
> udev-acl may want to prevent removing ACLs from root, but
|
||||
> it must not stop the ACLs being granted to the user of the
|
||||
> new session.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=608712
|
||||
---
|
||||
extras/udev-acl/udev-acl.c | 7 +------
|
||||
1 files changed, 1 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/extras/udev-acl/udev-acl.c b/extras/udev-acl/udev-acl.c
|
||||
index ff04ec6..f2b5005 100644
|
||||
--- a/extras/udev-acl/udev-acl.c
|
||||
+++ b/extras/udev-acl/udev-acl.c
|
||||
@@ -224,14 +224,10 @@ static int consolekit_called(const char *ck_action, uid_t *uid, uid_t *uid2, con
|
||||
if (s == NULL)
|
||||
return -1;
|
||||
u = strtoul(s, NULL, 10);
|
||||
- if (u == 0)
|
||||
- return 0;
|
||||
s = getenv("CK_SEAT_SESSION_USER_UID");
|
||||
if (s == NULL)
|
||||
return -1;
|
||||
u2 = strtoul(s, NULL, 10);
|
||||
- if (u2 == 0)
|
||||
- return 0;
|
||||
|
||||
s = getenv("CK_SEAT_OLD_SESSION_IS_LOCAL");
|
||||
s2 = getenv("CK_SEAT_SESSION_IS_LOCAL");
|
||||
@@ -263,12 +259,11 @@ static int consolekit_called(const char *ck_action, uid_t *uid, uid_t *uid2, con
|
||||
a = ACTION_ADD;
|
||||
u = u2;
|
||||
}
|
||||
-
|
||||
break;
|
||||
case ACTION_NONE:
|
||||
break;
|
||||
default:
|
||||
- g_assert_not_reached ();
|
||||
+ g_assert_not_reached();
|
||||
break;
|
||||
}
|
||||
|
||||
--
|
||||
1.7.2
|
||||
|
||||
125
0018-udev-acl-really-fix-ACL-assignment-in-CK-events.patch
Normal file
125
0018-udev-acl-really-fix-ACL-assignment-in-CK-events.patch
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
From 9ac90ae153accdfcb56c24c5748690933ad219b2 Mon Sep 17 00:00:00 2001
|
||||
From: Michal Schmidt <mschmidt@redhat.com>
|
||||
Date: Wed, 4 Aug 2010 11:53:25 +0200
|
||||
Subject: [PATCH 18/18] udev-acl: really fix ACL assignment in CK events
|
||||
|
||||
The previous fix for udev-acl was incomplete. The ACL were not properly
|
||||
assigned to the new user when switching from root's session because of
|
||||
the test for 'uid != 0'.
|
||||
|
||||
Centralize the special handling of root to a single place (in set_facl).
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=608712
|
||||
---
|
||||
extras/udev-acl/udev-acl.c | 37 +++++++++++++++++++------------------
|
||||
1 files changed, 19 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/extras/udev-acl/udev-acl.c b/extras/udev-acl/udev-acl.c
|
||||
index f2b5005..31e9991 100644
|
||||
--- a/extras/udev-acl/udev-acl.c
|
||||
+++ b/extras/udev-acl/udev-acl.c
|
||||
@@ -12,20 +12,18 @@
|
||||
* General Public License for more details:
|
||||
*/
|
||||
|
||||
-#include <stdio.h>
|
||||
-#include <errno.h>
|
||||
-#include <string.h>
|
||||
-#include <inttypes.h>
|
||||
-#include <unistd.h>
|
||||
-#include <stdlib.h>
|
||||
-#include <stdio.h>
|
||||
-#include <string.h>
|
||||
+#include <acl/libacl.h>
|
||||
+#include <sys/stat.h>
|
||||
#include <errno.h>
|
||||
#include <getopt.h>
|
||||
-#include <sys/stat.h>
|
||||
#include <glib.h>
|
||||
-#include <acl/libacl.h>
|
||||
+#include <inttypes.h>
|
||||
#include <libudev.h>
|
||||
+#include <stdbool.h>
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
+#include <unistd.h>
|
||||
|
||||
static int debug;
|
||||
|
||||
@@ -45,6 +43,10 @@ static int set_facl(const char* filename, uid_t uid, int add)
|
||||
acl_permset_t permset;
|
||||
int ret;
|
||||
|
||||
+ /* don't touch ACLs for root */
|
||||
+ if (uid == 0)
|
||||
+ return 0;
|
||||
+
|
||||
/* read current record */
|
||||
acl = acl_get_file(filename, ACL_TYPE_ACCESS);
|
||||
if (!acl)
|
||||
@@ -190,8 +192,6 @@ static int consolekit_called(const char *ck_action, uid_t *uid, uid_t *uid2, con
|
||||
if (s == NULL)
|
||||
return -1;
|
||||
u = strtoul(s, NULL, 10);
|
||||
- if (u == 0)
|
||||
- return 0;
|
||||
|
||||
s = getenv("CK_SEAT_SESSION_IS_LOCAL");
|
||||
if (s == NULL)
|
||||
@@ -205,8 +205,6 @@ static int consolekit_called(const char *ck_action, uid_t *uid, uid_t *uid2, con
|
||||
if (s == NULL)
|
||||
return -1;
|
||||
u = strtoul(s, NULL, 10);
|
||||
- if (u == 0)
|
||||
- return 0;
|
||||
|
||||
s = getenv("CK_SEAT_OLD_SESSION_IS_LOCAL");
|
||||
if (s == NULL)
|
||||
@@ -331,6 +329,7 @@ int main (int argc, char* argv[])
|
||||
};
|
||||
int action = -1;
|
||||
const char *device = NULL;
|
||||
+ bool uid_given = false;
|
||||
uid_t uid = 0;
|
||||
uid_t uid2 = 0;
|
||||
const char* remove_session_id = NULL;
|
||||
@@ -357,6 +356,7 @@ int main (int argc, char* argv[])
|
||||
device = optarg;
|
||||
break;
|
||||
case 'u':
|
||||
+ uid_given = true;
|
||||
uid = strtoul(optarg, NULL, 10);
|
||||
break;
|
||||
case 'd':
|
||||
@@ -369,8 +369,9 @@ int main (int argc, char* argv[])
|
||||
}
|
||||
}
|
||||
|
||||
- if (action < 0 && device == NULL && uid == 0)
|
||||
- consolekit_called(argv[optind], &uid, &uid2, &remove_session_id, &action);
|
||||
+ if (action < 0 && device == NULL && !uid_given)
|
||||
+ if (!consolekit_called(argv[optind], &uid, &uid2, &remove_session_id, &action))
|
||||
+ uid_given = true;
|
||||
|
||||
if (action < 0) {
|
||||
fprintf(stderr, "missing action\n\n");
|
||||
@@ -378,13 +379,13 @@ int main (int argc, char* argv[])
|
||||
goto out;
|
||||
}
|
||||
|
||||
- if (device != NULL && uid != 0) {
|
||||
+ if (device != NULL && uid_given) {
|
||||
fprintf(stderr, "only one option, --device=DEVICEFILE or --user=UID expected\n\n");
|
||||
rc = 3;
|
||||
goto out;
|
||||
}
|
||||
|
||||
- if (uid != 0) {
|
||||
+ if (uid_given) {
|
||||
switch (action) {
|
||||
case ACTION_ADD:
|
||||
/* Add ACL for given uid to all matching devices. */
|
||||
--
|
||||
1.7.2
|
||||
|
||||
1035
0034-add-LGPL-COPYING-to-libudev-and-GUdev.patch
Normal file
1035
0034-add-LGPL-COPYING-to-libudev-and-GUdev.patch
Normal file
File diff suppressed because it is too large
Load diff
26
0110-cdrom_id-only-mark-sr-0-9-as-ID_CDROM.patch
Normal file
26
0110-cdrom_id-only-mark-sr-0-9-as-ID_CDROM.patch
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
From 155e313bfda594b3d8e2a31d48f341765bdfa75d Mon Sep 17 00:00:00 2001
|
||||
From: Harald Hoyer <harald@redhat.com>
|
||||
Date: Tue, 27 Apr 2010 12:22:42 +0200
|
||||
Subject: [PATCH 110/110] cdrom_id: only mark sr[0-9]* as ID_CDROM
|
||||
|
||||
we cannot be sure for xvd*
|
||||
---
|
||||
extras/cdrom_id/60-cdrom_id.rules | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/extras/cdrom_id/60-cdrom_id.rules b/extras/cdrom_id/60-cdrom_id.rules
|
||||
index 16b3af9..b3109f1 100644
|
||||
--- a/extras/cdrom_id/60-cdrom_id.rules
|
||||
+++ b/extras/cdrom_id/60-cdrom_id.rules
|
||||
@@ -5,7 +5,7 @@ SUBSYSTEM!="block", GOTO="cdrom_end"
|
||||
KERNEL!="sr[0-9]*|xvd*", GOTO="cdrom_end"
|
||||
ENV{DEVTYPE}!="disk", GOTO="cdrom_end"
|
||||
|
||||
-ENV{ID_CDROM}="1"
|
||||
+KERNEL=="sr[0-9]*", ENV{ID_CDROM}="1"
|
||||
IMPORT{program}="cdrom_id --export $tempnode"
|
||||
|
||||
LABEL="cdrom_end"
|
||||
--
|
||||
1.7.0.1
|
||||
|
||||
4
40-ia64.rules
Normal file
4
40-ia64.rules
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# do not edit this file, it will be overwritten on update
|
||||
|
||||
KERNEL=="sgi_*", MODE="0666"
|
||||
|
||||
4
40-isdn.rules
Normal file
4
40-isdn.rules
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# do not edit this file, it will be overwritten on update
|
||||
|
||||
SUBSYSTEM=="capi", KERNEL=="capi", NAME="capi20", GROUP="dialout"
|
||||
SUBSYSTEM=="tty", KERNEL=="capi[0-9]*", NAME="capi/%n"
|
||||
6
40-ppc.rules
Normal file
6
40-ppc.rules
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
# do not edit this file, it will be overwritten on update
|
||||
|
||||
KERNEL=="iseries/ibmsis*", GROUP="disk"
|
||||
KERNEL=="iseries/nvt*", GROUP="disk"
|
||||
KERNEL=="iseries/vt*", GROUP="disk"
|
||||
KERNEL=="iseries/vtty*, GROUP="dialout"
|
||||
4
40-s390.rules
Normal file
4
40-s390.rules
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# do not edit this file, it will be overwritten on update
|
||||
|
||||
KERNEL=="z90crypt", MODE="0666"
|
||||
|
||||
4
64-device-mapper.rules
Normal file
4
64-device-mapper.rules
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# do not edit this file, it will be overwritten on update
|
||||
|
||||
KERNEL=="device-mapper", NAME="mapper/control"
|
||||
|
||||
36
64-md-raid.rules
Normal file
36
64-md-raid.rules
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
# do not edit this file, it will be overwritten on update
|
||||
|
||||
SUBSYSTEM!="block", GOTO="md_end"
|
||||
ACTION!="add|change", GOTO="md_end"
|
||||
|
||||
# import data from a raid member and activate it
|
||||
#ENV{ID_FS_TYPE}=="linux_raid_member", IMPORT{program}="/sbin/mdadm --examine --export $tempnode", RUN+="/sbin/mdadm --incremental $env{DEVNAME}"
|
||||
# import data from a raid set
|
||||
KERNEL!="md*", GOTO="md_end"
|
||||
|
||||
# partitions have no md/{array_state,metadata_version}
|
||||
ENV{DEVTYPE}=="partition", GOTO="md_ignore_state"
|
||||
|
||||
# container devices have a metadata version of e.g. 'external:ddf' and
|
||||
# never leave state 'inactive'
|
||||
ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state"
|
||||
TEST!="md/array_state", GOTO="md_end"
|
||||
ATTR{md/array_state}=="|clear|inactive", GOTO="md_end"
|
||||
LABEL="md_ignore_state"
|
||||
|
||||
IMPORT{program}="/sbin/mdadm --detail --export $tempnode"
|
||||
ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}", OPTIONS+="string_escape=replace"
|
||||
ENV{DEVTYPE}=="disk", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}"
|
||||
ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}"
|
||||
ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n", OPTIONS+="string_escape=replace"
|
||||
ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}-part%n"
|
||||
ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[^0-9]", SYMLINK+="md/$env{MD_DEVNAME}%n"
|
||||
ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[0-9]", SYMLINK+="md/$env{MD_DEVNAME}p%n"
|
||||
|
||||
IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
|
||||
OPTIONS+="link_priority=100"
|
||||
OPTIONS+="watch"
|
||||
ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
|
||||
ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}"
|
||||
|
||||
LABEL="md_end"
|
||||
6
Makefile.git
Normal file
6
Makefile.git
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
Patch:
|
||||
@for i in 0*.patch; do n=$$[$$(echo $$i|cut -f 1 -d '-'|sed -e 's#^0*##')]; echo "Patch$$n: $$i";done
|
||||
|
||||
patch:
|
||||
@for i in 0*.patch; do n=$$[$$(echo $$i|cut -f 1 -d '-'|sed -e 's#^0*##')]; echo "%patch$$n -p1 -b .git$$n";done
|
||||
|
||||
|
|
@ -1 +0,0 @@
|
|||
obsolete udev, it is replaced by systemd
|
||||
25
fw_unit_symlinks.sh
Normal file
25
fw_unit_symlinks.sh
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#!/bin/sh
|
||||
|
||||
SYSFS=/sys
|
||||
NAME=$1
|
||||
NUM=$2
|
||||
|
||||
for i in "${SYSFS}${DEVPATH}/${NAME}.*/specifier_id"; do
|
||||
if [ ! -f "$i" ]; then
|
||||
continue
|
||||
fi
|
||||
SPECID="`cat $i`"
|
||||
if [ $((SPECID)) -eq $((0x00609e)) ]; then
|
||||
echo -n "sbp2-${NUM} "
|
||||
elif [ $((SPECID)) -eq $((0x00a02d)) ]; then
|
||||
SWVER="`cat ${i%/specifier_id}/version`"
|
||||
if [ $((SWVER)) -ge $((0x100)) -a $((SWVER)) -lt $((0x110)) ]; then
|
||||
echo -n "iidc${NUM} "
|
||||
elif [ $((SWVER)) -eq $((0x10001)) ]; then
|
||||
echo -n "avc${NUM} "
|
||||
elif [ $((SWVER)) -ge $((0x14000)) -a $((SWVER)) -le $((0x14001)) ]; then
|
||||
echo -n "vendorfw${NUM} "
|
||||
fi
|
||||
fi
|
||||
done
|
||||
echo
|
||||
1
mirrors
Normal file
1
mirrors
Normal file
|
|
@ -0,0 +1 @@
|
|||
ftp://ftp.kernel.org/pub/linux/utils/kernel/hotplug/
|
||||
2
sources
Normal file
2
sources
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
76d12a9d97c3409e9ef60a4288227e8f udev-153.tar.bz2
|
||||
962e6d9b7fcf45432b361e3116923a3a udev-153.tar.bz2.sign
|
||||
339
start_udev
Executable file
339
start_udev
Executable file
|
|
@ -0,0 +1,339 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# start_udev
|
||||
#
|
||||
# script to initialize /dev by using udev.
|
||||
#
|
||||
# Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com>
|
||||
#
|
||||
# Released under the GPL v2 only.
|
||||
#
|
||||
# This needs to be run at the earliest possible point in the boot
|
||||
# process.
|
||||
#
|
||||
# Based on the udev init.d script
|
||||
#
|
||||
# Thanks go out to the Gentoo developers for proving
|
||||
# that this is possible to do.
|
||||
#
|
||||
# Yes, it's very verbose, feel free to turn off all of the echo calls,
|
||||
# they were there to make me feel better that everything was working
|
||||
# properly during development...
|
||||
#
|
||||
# don't use udev if sysfs is not mounted.
|
||||
|
||||
sysfs_dir=/sys
|
||||
|
||||
export TZ=/etc/localtime
|
||||
|
||||
[ -d $sysfs_dir/class ] || exit 1
|
||||
[ -r /proc/mounts ] || exit 1
|
||||
[ -x /sbin/udevd ] || exit 1
|
||||
[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
|
||||
udev_root=${udev_root-/dev}
|
||||
|
||||
if [ -f /dev/.in_sysinit ]; then
|
||||
exec >/dev/console 2>/dev/console </dev/console
|
||||
fi
|
||||
|
||||
. /etc/init.d/functions
|
||||
. /etc/sysconfig/udev
|
||||
|
||||
prog=udev
|
||||
bin=/sbin/udev
|
||||
udevd=/sbin/udevd
|
||||
MAKEDEV="/sbin/MAKEDEV"
|
||||
|
||||
# Check SELinux status
|
||||
selinuxfs="$(fstab_decode_str `LC_ALL=C awk '/ selinuxfs / { print $2 }' /proc/mounts`)"
|
||||
SELINUX_STATE=
|
||||
if [ -n "$selinuxfs" ] && [ "`cat /proc/self/attr/current`" != "kernel" ]; then
|
||||
if [ -r "$selinuxfs/enforce" ] ; then
|
||||
SELINUX_STATE=`cat "$selinuxfs/enforce"`
|
||||
else
|
||||
# assume enforcing if you can't read it
|
||||
SELINUX_STATE=1
|
||||
fi
|
||||
fi
|
||||
[ -c /dev/systty ] && ln -fs tty0 /dev/systty
|
||||
|
||||
touch_recursive() {
|
||||
( cd $1;
|
||||
for i in *; do
|
||||
[[ -c "$i" || -b "$i" ]] && touch --no-create "$i"
|
||||
[ -d "$i" ] && touch_recursive "$i"
|
||||
done )
|
||||
return 0
|
||||
}
|
||||
|
||||
xargs_simple () {
|
||||
if [ "$1" = "-n" ]; then
|
||||
shift
|
||||
MAXNR="$1"
|
||||
shift
|
||||
else
|
||||
MAXNR=100
|
||||
fi
|
||||
NR=$MAXNR
|
||||
ARGS=""
|
||||
[ -z "$1" ] && set echo
|
||||
|
||||
while read line; do
|
||||
if [ $NR -gt 0 ]; then
|
||||
ARGS="$ARGS $line"
|
||||
NR=$[$NR - 1]
|
||||
else
|
||||
"$@" $ARGS
|
||||
NR=$MAXNR
|
||||
ARGS="$line"
|
||||
fi
|
||||
done
|
||||
if [ -n "$ARGS" ]; then
|
||||
"$@" $ARGS
|
||||
fi
|
||||
}
|
||||
|
||||
make_extra_nodes () {
|
||||
ln -snf /proc/self/fd $udev_root/fd
|
||||
ln -snf /proc/self/fd/0 $udev_root/stdin
|
||||
ln -snf /proc/self/fd/1 $udev_root/stdout
|
||||
ln -snf /proc/self/fd/2 $udev_root/stderr
|
||||
ln -snf /proc/kcore $udev_root/core
|
||||
|
||||
[ -d $udev_root/pts ] || mkdir -m 0755 $udev_root/pts
|
||||
[ -d $udev_root/shm ] || mkdir -m 0755 $udev_root/shm
|
||||
[ -d $udev_root/hugepages ] || mkdir -m 0755 $udev_root/hugepages
|
||||
[ -a /dev/MAKEDEV ] || ln -s $MAKEDEV /dev/MAKEDEV;
|
||||
|
||||
USE_MD5="false"
|
||||
[[ "$UDEV_USE_MAKEDEV_CACHE" == "yes" && -x /usr/bin/md5sum ]] && USE_MD5="true"
|
||||
|
||||
for i in 0 1 2 3 4 5 6 7; do
|
||||
[ -b /dev/loop$i ] || /bin/mknod -m 0640 /dev/loop$i b 7 $i
|
||||
/bin/chown root:disk /dev/loop$i
|
||||
done
|
||||
|
||||
for i in 0 1 2 3; do
|
||||
[ -c /dev/lp$i ] || /bin/mknod -m 0660 /dev/lp$i c 6 $i
|
||||
/bin/chown root:lp /dev/lp$i
|
||||
done
|
||||
|
||||
[ -d /dev/net ] || mkdir -p /dev/net
|
||||
[ -c /dev/net/tun ] || /bin/mknod -m 0666 /dev/net/tun c 10 200
|
||||
#/bin/chown root:root /dev/net/tun
|
||||
|
||||
[ -c /dev/ppp ] || /bin/mknod -m 0600 /dev/ppp c 108 0
|
||||
#/bin/chown root:root /dev/ppp
|
||||
|
||||
[ -c /dev/fuse ] || /bin/mknod -m 0666 /dev/fuse c 10 229
|
||||
#/bin/chown root:root /dev/fuse
|
||||
|
||||
if [ -x /sbin/restorecon ]; then
|
||||
/sbin/restorecon -R /dev
|
||||
fi
|
||||
|
||||
if [ -x "$MAKEDEV" ]; then
|
||||
for i in /etc/udev/makedev.d/*.nodes; do
|
||||
if [ -f "$i" ]; then
|
||||
# use a little caching to speedup things
|
||||
if [ "$USE_MD5" == "true" ]; then
|
||||
# fix for MAKEDEV shell scripts
|
||||
[ -d /dev/.udev/makedev.d ] || mkdir -p /dev/.udev/makedev.d
|
||||
md5=$(/usr/bin/md5sum "$i"|(read a b; echo $a))-se$SELINUX_STATE
|
||||
if [ -f "/var/lib/udev/makedev.d/${md5}.sh" ];then
|
||||
md5file="/var/lib/udev/makedev.d/${md5}.sh"
|
||||
else
|
||||
md5file="/dev/.udev/makedev.d/${md5}.sh"
|
||||
fi
|
||||
if [ ! -f "$md5file" ]; then
|
||||
( sed -e 's,#.*,,g' "$i" | \
|
||||
xargs_simple -n 100 $MAKEDEV -x -a -S ) \
|
||||
> "$md5file"
|
||||
fi
|
||||
. "$md5file" >$udev_root/null 2>&1
|
||||
else
|
||||
( sed -e 's,#.*,,g' "$i" | \
|
||||
xargs_simple -n 100 $MAKEDEV -x )
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
for devdir in /etc/udev/devices /lib/udev/devices; do
|
||||
[ -d "$devdir" ] || continue
|
||||
pushd $devdir &> "$udev_root/null"
|
||||
set *
|
||||
if [ "$1" != "*" ]; then
|
||||
#echo "Warning: $devdir is deprecated. Please use /etc/udev/makedev.d/."
|
||||
cp -ar "$@" $udev_root/
|
||||
if [ -x /sbin/restorecon ]; then
|
||||
pushd "$udev_root" &> "$udev_root/null"
|
||||
/sbin/restorecon "$@"
|
||||
popd &> "$udev_root/null"
|
||||
fi
|
||||
fi
|
||||
popd &> "$udev_root/null"
|
||||
done
|
||||
}
|
||||
|
||||
kill_udevd() {
|
||||
if [ -x /sbin/pidof ]; then
|
||||
pid=`/sbin/pidof -x udevd`
|
||||
[ -n "$pid" ] && kill $pid
|
||||
fi
|
||||
}
|
||||
|
||||
findalias () {
|
||||
local n
|
||||
for n in "$1"/* ; do
|
||||
[ -h "$n" ] && continue
|
||||
[ -d "$n" ] && { findalias "$n" ; continue; }
|
||||
[ "${n##*/}" == "modalias" ] && echo $(cat $n)
|
||||
done
|
||||
}
|
||||
|
||||
# returns OK if $1 contains $2
|
||||
strstr() {
|
||||
[ "${1#*$2*}" = "$1" ] && return 1
|
||||
return 0
|
||||
}
|
||||
|
||||
getval() {
|
||||
what=$1
|
||||
shift
|
||||
for arg; do
|
||||
if strstr "$arg" "$what="; then
|
||||
val=${arg#${what}=*}
|
||||
echo $val
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
wait_for_queue() {
|
||||
local timeout=${1:-0}
|
||||
local ret=0
|
||||
if [ $timeout -gt 0 ]; then
|
||||
/sbin/udevadm settle --timeout=$timeout
|
||||
else
|
||||
/sbin/udevadm settle
|
||||
fi
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]; then
|
||||
echo -n "Wait timeout. Will continue in the background."
|
||||
fi
|
||||
return $ret;
|
||||
}
|
||||
|
||||
export ACTION=add
|
||||
prog=udev
|
||||
ret=0
|
||||
STRING=$"Starting $prog: "
|
||||
# propagate $udev_root from /sys
|
||||
echo -n "$STRING"
|
||||
|
||||
# mount the tmpfs on ${udev_root%/}, if not already done
|
||||
LANG=C awk "\$2 == \"${udev_root%/}\" && ( \$3 == \"devtmpfs\" || \$3 == \"tmpfs\" ) { exit 1 }" /proc/mounts && {
|
||||
if LANG=C grep -Fq "none ${udev_root%/}/pts " /proc/mounts; then
|
||||
PTSDIR=$(mktemp -d)
|
||||
mount --move $udev_root/pts "$PTSDIR"
|
||||
fi
|
||||
if LANG=C grep -Fq "none ${udev_root%/}/shm " /proc/mounts; then
|
||||
SHMDIR=$(mktemp -d)
|
||||
mount --move $udev_root/shm "$SHMDIR"
|
||||
fi
|
||||
# First try to mount a devtmpfs on $udev_root
|
||||
mount -n -o mode=0755 -t devtmpfs none "$udev_root" 2>/dev/null \
|
||||
|| mount -n -o mode=0755 -t tmpfs none "$udev_root"
|
||||
mkdir -m 0755 $udev_root/pts
|
||||
mkdir -m 0755 $udev_root/shm
|
||||
if [ -n "$PTSDIR" ]; then
|
||||
mount --move "$PTSDIR" $udev_root/pts
|
||||
rmdir "$PTSDIR"
|
||||
fi
|
||||
if [ -n "$SHMDIR" ]; then
|
||||
mount --move "$SHMDIR" $udev_root/shm
|
||||
rmdir "$SHMDIR"
|
||||
fi
|
||||
|
||||
ret=$[$ret + $?]
|
||||
}
|
||||
|
||||
make_extra_nodes
|
||||
kill_udevd > "$udev_root/null" 2>&1
|
||||
UDEV_OPTS=""
|
||||
if [ -f "/sys/class/tty/console/uevent" ]; then
|
||||
# trigger the sorted events
|
||||
echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
|
||||
|
||||
cmdline=$(cat /proc/cmdline)
|
||||
|
||||
if strstr "$cmdline" udevtrace; then
|
||||
UDEV_OPTS="$UDEV_OPTS --debug-trace"
|
||||
fi
|
||||
|
||||
if strstr "$cmdline" udevlog; then
|
||||
UDEV_OPTS="$UDEV_OPTS --debug"
|
||||
/sbin/udevd -d $UDEV_OPTS 2>$udev_root/.udev/udev.log
|
||||
else
|
||||
/sbin/udevd -d $UDEV_OPTS
|
||||
fi
|
||||
|
||||
wait
|
||||
ret=$[$ret + $?]
|
||||
|
||||
udevtimeout=$(getval udevtimeout $cmdline)
|
||||
|
||||
if strstr "$cmdline" udevdebug; then
|
||||
/sbin/udevadm control --log-priority=debug
|
||||
fi
|
||||
if strstr "$cmdline" udevinfo; then
|
||||
/sbin/udevadm control --log-priority=info
|
||||
fi
|
||||
if strstr "$cmdline" udevchilds; then
|
||||
/sbin/udevadm control --max-childs=$(getval udevchilds $cmdline)
|
||||
fi
|
||||
if strstr "$cmdline" noiswmd; then
|
||||
/sbin/udevadm control --env=rd_NO_MDIMSM=1
|
||||
fi
|
||||
|
||||
/sbin/udevadm control --env=STARTUP=1
|
||||
|
||||
if strstr "$cmdline" modprobedebug; then
|
||||
/sbin/udevadm control --env=MODPROBE_OPTIONS="-s -v -q"
|
||||
echo
|
||||
findalias /sys | while read modules ; do
|
||||
if [ -n "$modules" ]; then
|
||||
echo "Loading modules for $modules in 5 seconds"
|
||||
sleep 5
|
||||
/sbin/modprobe -a -v -q $modules
|
||||
wait_for_queue $udevtimeout
|
||||
fi
|
||||
done
|
||||
echo "Triggering Rest"
|
||||
fi
|
||||
|
||||
/sbin/udevadm trigger --action=add
|
||||
ret=$[$ret + $?]
|
||||
wait_for_queue $udevtimeout
|
||||
ret=$[$ret + $?]
|
||||
wait
|
||||
ret=$[$ret + $?]
|
||||
/sbin/udevadm control --env=STARTUP=
|
||||
# touch all device files for timezone glitches
|
||||
# "find" is in /usr/bin and might not be available
|
||||
if [ -f /etc/sysconfig/clock ]; then
|
||||
. /etc/sysconfig/clock
|
||||
[[ "$UTC" == "false" || "$UTC" == "no" ]] \
|
||||
&& touch_recursive /dev > "$udev_root/null" 2>&1
|
||||
fi
|
||||
else
|
||||
echo -n " kernel too old for this udev version "
|
||||
/sbin/udevd -d $UDEV_OPTS
|
||||
ret=10
|
||||
fi
|
||||
|
||||
[ $ret -eq 0 ] && success $"$STRING" || failure $"$STRING"
|
||||
echo
|
||||
exit 0
|
||||
13
udev-151-gperf.patch
Normal file
13
udev-151-gperf.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
diff -up udev-151/extras/keymap/keys-from-name.gperf udev-151/extras/keymap/keys-from-name
|
||||
diff -up udev-151/Makefile.am.gperf udev-151/Makefile.am
|
||||
--- udev-151/Makefile.am.gperf 2010-03-19 14:04:36.000000000 +0100
|
||||
+++ udev-151/Makefile.am 2010-03-19 14:04:52.000000000 +0100
|
||||
@@ -550,7 +550,7 @@ extras/keymap/keys-from-name.gperf: extr
|
||||
$(AM_V_GEN)$(AWK) 'BEGIN{ print "struct key { const char* name; unsigned short id; };"; print "%null-strings"; print "%%";} { print $$1 ", " $$1 }' < $< > $@
|
||||
|
||||
extras/keymap/keys-from-name.h: extras/keymap/keys-from-name.gperf Makefile
|
||||
- $(AM_V_GEN)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_key -H hash_key_name -p -C < $< > $@
|
||||
+ $(AM_V_GEN)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_key -H hash_key_name -p -C -D < $< > $@
|
||||
|
||||
extras/keymap/keys-to-name.h: extras/keymap/keys.txt Makefile
|
||||
$(AM_V_GEN)$(AWK) 'BEGIN{ print "const char* const key_names[KEY_CNT] = { "} { print "[" $$1 "] = \"" $$1 "\"," } END{print "};"}' < $< > $@
|
||||
25
udev-151-rules.patch
Normal file
25
udev-151-rules.patch
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
diff --git a/rules/redhat/40-redhat.rules b/rules/redhat/40-redhat.rules
|
||||
index 47ce9e5..aaba82b 100644
|
||||
--- a/rules/redhat/40-redhat.rules
|
||||
+++ b/rules/redhat/40-redhat.rules
|
||||
@@ -5,11 +5,11 @@ KERNEL=="hd*[0-9]", ATTRS{media}=="floppy", ATTRS{removable}=="1", SYMLINK+="flo
|
||||
|
||||
KERNEL=="fw*", PROGRAM="fw_unit_symlinks.sh %k %n", SYMLINK+="$result"
|
||||
|
||||
-ACTION=="add", KERNEL=="sg[0-9]*", BUS=="scsi", ATTRS{type}=="3|6", SYMLINK+="scanner scanner-%k", MODE="0660"
|
||||
+ACTION=="add", KERNEL=="sg[0-9]*", SUBSYSTEM=="scsi_device", ATTRS{type}=="3|6", SYMLINK+="scanner scanner-%k", MODE="0660"
|
||||
|
||||
-ACTION=="add", KERNEL=="sg[0-9]*", BUS=="scsi", ATTRS{type}=="8", SYMLINK+="changer changer-%k", MODE="0660", GROUP="disk"
|
||||
+ACTION=="add", KERNEL=="sg[0-9]*", SUBSYSTEM=="scsi_device", ATTRS{type}=="8", SYMLINK+="changer changer-%k", MODE="0660", GROUP="disk"
|
||||
|
||||
-BUS=="usb", KERNEL=="sd*", ATTRS{bInterfaceClass}=="08", ATTRS{bInterfaceSubClass}=="04", GROUP="floppy", MODE="0660", SYMLINK+="floppy floppy-%k"
|
||||
+SUBSYSTEM=="usb", KERNEL=="sd*", ATTRS{bInterfaceClass}=="08", ATTRS{bInterfaceSubClass}=="04", GROUP="floppy", MODE="0660", SYMLINK+="floppy floppy-%k"
|
||||
|
||||
KERNEL=="fd[0-9]*", SYMLINK+="floppy floppy-%k"
|
||||
|
||||
@@ -25,3 +25,5 @@ KERNEL=="vcsa[0-9]*", OWNER="vcsa", GROUP="tty"
|
||||
KERNEL=="vcc/*", OWNER="vcsa", GROUP="tty"
|
||||
|
||||
KERNEL=="event*", ATTRS{idVendor}=="03f0", ATTRS{interface}=="Virtual Mouse", ATTRS{bInterfaceProtocol}=="02", SYMLINK+="input/hp_ilo_mouse"
|
||||
+
|
||||
+ACTION=="add", SUBSYSTEM=="cpu", KERNEL=="cpu[0-9]*", ATTR{online}="1"
|
||||
30
udev-151-virtio.patch
Normal file
30
udev-151-virtio.patch
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
From 764304885705e51ef3eb1d078eed3cf6604c4684 Mon Sep 17 00:00:00 2001
|
||||
From: Amit Shah <amit.shah@redhat.com>
|
||||
Date: Fri, 26 Feb 2010 14:02:51 +0530
|
||||
Subject: [PATCH] Fix virtio-ports rule to use $attr instead of $ATTR
|
||||
|
||||
Newer udev versions don't understand $ATTR.
|
||||
|
||||
Signed-off-by: Amit Shah <amit.shah@redhat.com>
|
||||
---
|
||||
rules/rules.d/50-udev-default.rules | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
Changed by Harald Hoyer <harald@redhat.com>
|
||||
|
||||
diff --git a/rules/rules.d/50-udev-default.rules b/rules/rules.d/50-udev-default.rules
|
||||
index f8556d1..da1535f 100644
|
||||
--- a/rules/rules.d/50-udev-default.rules
|
||||
+++ b/rules/rules.d/50-udev-default.rules
|
||||
@@ -18,7 +18,7 @@ KERNEL=="mwave", GROUP="dialout"
|
||||
KERNEL=="hvc*|hvsi*", GROUP="dialout"
|
||||
|
||||
# virtio serial / console ports
|
||||
-KERNEL=="vport*", SYMLINK+="virtio-ports/$attr{name}"
|
||||
+KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}"
|
||||
|
||||
# mem
|
||||
KERNEL=="null|zero|full|random|urandom", MODE="0666"
|
||||
--
|
||||
1.6.2.5
|
||||
|
||||
246
udev-153-cdrom_id-backport.patch
Normal file
246
udev-153-cdrom_id-backport.patch
Normal file
|
|
@ -0,0 +1,246 @@
|
|||
diff -ur udev-153-orig/extras/cdrom_id/cdrom_id.c udev-153/extras/cdrom_id/cdrom_id.c
|
||||
--- udev-153-orig/extras/cdrom_id/cdrom_id.c 2010-04-17 19:29:58.000000000 +0200
|
||||
+++ udev-153/extras/cdrom_id/cdrom_id.c 2010-08-31 10:35:41.000000000 +0200
|
||||
@@ -85,6 +85,8 @@
|
||||
static unsigned int cd_media_dvd_rom = 0;
|
||||
static unsigned int cd_media_dvd_r = 0;
|
||||
static unsigned int cd_media_dvd_rw = 0;
|
||||
+static unsigned int cd_media_dvd_rw_ro = 0; /* restricted overwrite mode */
|
||||
+static unsigned int cd_media_dvd_rw_seq = 0; /* sequential mode */
|
||||
static unsigned int cd_media_dvd_ram = 0;
|
||||
static unsigned int cd_media_dvd_plus_r = 0;
|
||||
static unsigned int cd_media_dvd_plus_rw = 0;
|
||||
@@ -348,6 +350,39 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int cd_profiles_old_mmc(struct udev *udev, int fd)
|
||||
+{
|
||||
+ struct scsi_cmd sc;
|
||||
+ int err;
|
||||
+
|
||||
+ unsigned char header[32];
|
||||
+
|
||||
+ scsi_cmd_init(udev, &sc, header, sizeof(header));
|
||||
+ scsi_cmd_set(udev, &sc, 0, 0x51);
|
||||
+ scsi_cmd_set(udev, &sc, 8, sizeof(header));
|
||||
+ scsi_cmd_set(udev, &sc, 9, 0);
|
||||
+ err = scsi_cmd_run(udev, &sc, fd, header, sizeof(header));
|
||||
+ if ((err != 0)) {
|
||||
+ info_scsi_cmd_err(udev, "READ DISC INFORMATION", err);
|
||||
+ info(udev, "no current profile, assuming no media\n");
|
||||
+ return -1;
|
||||
+ };
|
||||
+
|
||||
+ cd_media = 1;
|
||||
+
|
||||
+ if (header[2] & 16) {
|
||||
+ cd_media_cd_rw = 1;
|
||||
+ info(udev, "profile 0x0a media_cd_rw\n");
|
||||
+ } else if ((header[2] & 3) < 2 && cd_cd_r) {
|
||||
+ cd_media_cd_r = 1;
|
||||
+ info(udev, "profile 0x09 media_cd_r\n");
|
||||
+ } else {
|
||||
+ cd_media_cd_rom = 1;
|
||||
+ info(udev, "profile 0x08 media_cd_rom\n");
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static int cd_profiles(struct udev *udev, int fd)
|
||||
{
|
||||
struct scsi_cmd sc;
|
||||
@@ -365,6 +400,12 @@
|
||||
err = scsi_cmd_run(udev, &sc, fd, features, sizeof(features));
|
||||
if ((err != 0)) {
|
||||
info_scsi_cmd_err(udev, "GET CONFIGURATION", err);
|
||||
+ /* handle pre-MMC2 drives which do not support GET CONFIGURATION */
|
||||
+ if (SK(err) == 0x5 && ASC(err) == 0x20) {
|
||||
+ info(udev, "drive is pre-MMC2 and does not support 46h get configuration command\n");
|
||||
+ info(udev, "trying to work around the problem\n");
|
||||
+ return cd_profiles_old_mmc(udev, fd);
|
||||
+ }
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -440,10 +481,16 @@
|
||||
cd_media_dvd_ram = 1;
|
||||
break;
|
||||
case 0x13:
|
||||
+ info(udev, "profile 0x%02x media_dvd_rw_ro\n", cur_profile);
|
||||
+ cd_media = 1;
|
||||
+ cd_media_dvd_rw = 1;
|
||||
+ cd_media_dvd_rw_ro = 1;
|
||||
+ break;
|
||||
case 0x14:
|
||||
- info(udev, "profile 0x%02x media_dvd_rw\n", cur_profile);
|
||||
+ info(udev, "profile 0x%02x media_dvd_rw_seq\n", cur_profile);
|
||||
cd_media = 1;
|
||||
cd_media_dvd_rw = 1;
|
||||
+ cd_media_dvd_rw_seq = 1;
|
||||
break;
|
||||
case 0x1B:
|
||||
info(udev, "profile 0x%02x media_dvd_plus_r\n", cur_profile);
|
||||
@@ -527,12 +574,126 @@
|
||||
|
||||
cd_media = 1;
|
||||
info(udev, "disk type %02x\n", header[8]);
|
||||
+ info(udev, "hardware reported media status: %s\n", media_status[header[2] & 3]);
|
||||
|
||||
/* exclude plain CDROM, some fake cdroms return 0 for "blank" media here */
|
||||
if (!cd_media_cd_rom)
|
||||
cd_media_state = media_status[header[2] & 3];
|
||||
|
||||
- if ((header[2] & 3) != 2)
|
||||
+ /* fresh DVD-RW in restricted overwite mode reports itself as
|
||||
+ * "appendable"; change it to "blank" to make it consistent with what
|
||||
+ * gets reported after blanking, and what userspace expects */
|
||||
+ if (cd_media_dvd_rw_ro && (header[2] & 3) == 1)
|
||||
+ cd_media_state = media_status[0];
|
||||
+
|
||||
+ /* DVD+RW discs (and DVD-RW in restricted mode) once formatted are
|
||||
+ * always "complete", DVD-RAM are "other" or "complete" if the disc is
|
||||
+ * write protected; we need to check the contents if it is blank */
|
||||
+ if ((cd_media_dvd_rw_ro || cd_media_dvd_plus_rw || cd_media_dvd_plus_rw_dl || cd_media_dvd_ram) && (header[2] & 3) > 1) {
|
||||
+ unsigned char buffer[32 * 2048];
|
||||
+ unsigned char result, len;
|
||||
+ int block, offset;
|
||||
+
|
||||
+ if (cd_media_dvd_ram) {
|
||||
+ /* a write protected dvd-ram may report "complete" status */
|
||||
+
|
||||
+ unsigned char dvdstruct[8];
|
||||
+ unsigned char format[12];
|
||||
+
|
||||
+ scsi_cmd_init(udev, &sc, dvdstruct, sizeof(dvdstruct));
|
||||
+ scsi_cmd_set(udev, &sc, 0, 0xAD);
|
||||
+ scsi_cmd_set(udev, &sc, 7, 0xC0);
|
||||
+ scsi_cmd_set(udev, &sc, 9, sizeof(dvdstruct));
|
||||
+ scsi_cmd_set(udev, &sc, 11, 0);
|
||||
+ err = scsi_cmd_run(udev, &sc, fd, dvdstruct, sizeof(dvdstruct));
|
||||
+ if ((err != 0)) {
|
||||
+ info_scsi_cmd_err(udev, "READ DVD STRUCTURE", err);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ if (dvdstruct[4] & 0x02) {
|
||||
+ cd_media_state = media_status[2];
|
||||
+ info(udev, "write-protected DVD-RAM media inserted\n");
|
||||
+ goto determined;
|
||||
+ }
|
||||
+
|
||||
+ /* let's make sure we don't try to read unformatted media */
|
||||
+ scsi_cmd_init(udev, &sc, format, sizeof(format));
|
||||
+ scsi_cmd_set(udev, &sc, 0, 0x23);
|
||||
+ scsi_cmd_set(udev, &sc, 8, sizeof(format));
|
||||
+ scsi_cmd_set(udev, &sc, 9, 0);
|
||||
+ err = scsi_cmd_run(udev, &sc, fd, format, sizeof(format));
|
||||
+ if ((err != 0)) {
|
||||
+ info_scsi_cmd_err(udev, "READ DVD FORMAT CAPACITIES", err);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ len = format[3];
|
||||
+ if (len & 7 || len < 16) {
|
||||
+ info(udev, "invalid format capacities length\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ switch(format[8] & 3) {
|
||||
+ case 1:
|
||||
+ info(udev, "unformatted DVD-RAM media inserted\n");
|
||||
+ /* This means that last format was interrupted
|
||||
+ * or failed, blank dvd-ram discs are factory
|
||||
+ * formatted. Take no action here as it takes
|
||||
+ * quite a while to reformat a dvd-ram and it's
|
||||
+ * not automatically started */
|
||||
+ goto determined;
|
||||
+
|
||||
+ case 2:
|
||||
+ info(udev, "formatted DVD-RAM media inserted\n");
|
||||
+ break;
|
||||
+
|
||||
+ case 3:
|
||||
+ cd_media = 0; //return no media
|
||||
+ info(udev, "format capacities returned no media\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* Take a closer look at formatted media (unformatted DVD+RW
|
||||
+ * has "blank" status", DVD-RAM was examined earlier) and check
|
||||
+ * for ISO and UDF PVDs or a fs superblock presence and do it
|
||||
+ * in one ioctl (we need just sectors 0 and 16) */
|
||||
+ scsi_cmd_init(udev, &sc, buffer, sizeof(buffer));
|
||||
+ scsi_cmd_set(udev, &sc, 0, 0x28);
|
||||
+ scsi_cmd_set(udev, &sc, 5, 0);
|
||||
+ scsi_cmd_set(udev, &sc, 8, 32);
|
||||
+ scsi_cmd_set(udev, &sc, 9, 0);
|
||||
+ err = scsi_cmd_run(udev, &sc, fd, buffer, sizeof(buffer));
|
||||
+ if ((err != 0)) {
|
||||
+ info_scsi_cmd_err(udev, "READ FIRST 32 BLOCKS", err);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ /* if any non-zero data is found in sector 16 (iso and udf) or
|
||||
+ * eventually 0 (fat32 boot sector, ext2 superblock, etc), disc
|
||||
+ * is assumed non-blank */
|
||||
+ result = 0;
|
||||
+
|
||||
+ for (block = 32768; block >= 0 && !result; block -= 32768) {
|
||||
+ offset = block;
|
||||
+ while (offset < (block + 2048) && !result) {
|
||||
+ result = buffer [offset];
|
||||
+ offset++;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (!result) {
|
||||
+ cd_media_state = media_status[0];
|
||||
+ info(udev, "no data in blocks 0 or 16, assuming blank\n");
|
||||
+ } else {
|
||||
+ info(udev, "data in blocks 0 or 16, assuming complete\n");
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+determined:
|
||||
+ /* "other" is e. g. DVD-RAM, can't append sessions there; DVDs in
|
||||
+ * restricted overwrite mode can never append, only in sequential mode */
|
||||
+ if ((header[2] & 3) < 2 && !cd_media_dvd_rw_ro)
|
||||
cd_media_session_next = header[10] << 8 | header[5];
|
||||
cd_media_session_count = header[9] << 8 | header[4];
|
||||
cd_media_track_count = header[11] << 8 | header[6];
|
||||
@@ -710,13 +871,11 @@
|
||||
if (cd_profiles(udev, fd) < 0)
|
||||
goto print;
|
||||
|
||||
- /* get writable media state */
|
||||
- if (cd_media_info(udev, fd) < 0)
|
||||
- goto print;
|
||||
-
|
||||
/* get session/track info */
|
||||
- if (cd_media_toc(udev, fd) < 0)
|
||||
- goto print;
|
||||
+ cd_media_toc(udev, fd);
|
||||
+
|
||||
+ /* get writable media state */
|
||||
+ cd_media_info(udev, fd);
|
||||
|
||||
print:
|
||||
printf("ID_CDROM=1\n");
|
||||
@@ -810,14 +969,14 @@
|
||||
printf("ID_CDROM_MEDIA_SESSION_NEXT=%d\n", cd_media_session_next);
|
||||
if (cd_media_session_count > 0)
|
||||
printf("ID_CDROM_MEDIA_SESSION_COUNT=%d\n", cd_media_session_count);
|
||||
+ if (cd_media_session_count > 1 && cd_media_session_last_offset > 0)
|
||||
+ printf("ID_CDROM_MEDIA_SESSION_LAST_OFFSET=%llu\n", cd_media_session_last_offset);
|
||||
if (cd_media_track_count > 0)
|
||||
printf("ID_CDROM_MEDIA_TRACK_COUNT=%d\n", cd_media_track_count);
|
||||
if (cd_media_track_count_audio > 0)
|
||||
printf("ID_CDROM_MEDIA_TRACK_COUNT_AUDIO=%d\n", cd_media_track_count_audio);
|
||||
if (cd_media_track_count_data > 0)
|
||||
printf("ID_CDROM_MEDIA_TRACK_COUNT_DATA=%d\n", cd_media_track_count_data);
|
||||
- if (cd_media_session_last_offset > 0)
|
||||
- printf("ID_CDROM_MEDIA_SESSION_LAST_OFFSET=%llu\n", cd_media_session_last_offset);
|
||||
exit:
|
||||
if (fd >= 0)
|
||||
close(fd);
|
||||
25
udev-153-changer.patch
Normal file
25
udev-153-changer.patch
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
diff -up udev-153/rules/redhat/40-redhat.rules.changer udev-153/rules/redhat/40-redhat.rules
|
||||
--- udev-153/rules/redhat/40-redhat.rules.changer 2010-08-04 15:32:00.000000000 +0200
|
||||
+++ udev-153/rules/redhat/40-redhat.rules 2010-08-04 15:35:27.000000000 +0200
|
||||
@@ -5,17 +5,17 @@ KERNEL=="hd*[0-9]", ATTRS{media}=="flopp
|
||||
|
||||
KERNEL=="fw*", PROGRAM="fw_unit_symlinks.sh %k %n", SYMLINK+="$result"
|
||||
|
||||
-ACTION=="add", KERNEL=="sg[0-9]*", SUBSYSTEM=="scsi_device", ATTRS{type}=="3|6", SYMLINK+="scanner scanner-%k", MODE="0660"
|
||||
+ACTION=="add", KERNEL=="sg[0-9]*", SUBSYSTEM=="scsi_generic", ATTRS{type}=="3|6", SYMLINK+="scanner scanner-%k", MODE="0660"
|
||||
|
||||
-ACTION=="add", KERNEL=="sg[0-9]*", SUBSYSTEM=="scsi_device", ATTRS{type}=="8", SYMLINK+="changer changer-%k", MODE="0660", GROUP="disk"
|
||||
+ACTION=="add", KERNEL=="sg[0-9]*", SUBSYSTEM=="scsi_generic", ATTRS{type}=="8", SYMLINK+="changer changer-%k", MODE="0660", GROUP="disk"
|
||||
|
||||
SUBSYSTEM=="usb", KERNEL=="sd*", ATTRS{bInterfaceClass}=="08", ATTRS{bInterfaceSubClass}=="04", GROUP="floppy", MODE="0660", SYMLINK+="floppy floppy-%k"
|
||||
|
||||
KERNEL=="fd[0-9]*", SYMLINK+="floppy floppy-%k"
|
||||
|
||||
-ACTION=="add", SUBSYSTEM=="scsi_device", ATTRS{type}=="0|7|14", \
|
||||
+ACTION=="add", SUBSYSTEM=="scsi_generic", ATTRS{type}=="0|7|14", \
|
||||
RUN+="/sbin/modprobe sd_mod"
|
||||
-ACTION=="add", SUBSYSTEM=="scsi_device", ATTRS{type}=="[45]", \
|
||||
+ACTION=="add", SUBSYSTEM=="scsi_generic", ATTRS{type}=="[45]", \
|
||||
RUN+="/sbin/modprobe sr_mod"
|
||||
|
||||
KERNEL=="vcs", OWNER="vcsa", GROUP="tty"
|
||||
194
udev-153-keymap-backport.patch
Normal file
194
udev-153-keymap-backport.patch
Normal file
|
|
@ -0,0 +1,194 @@
|
|||
diff -urN udev-153-orig/extras/keymap/95-keyboard-force-release.rules udev-153/extras/keymap/95-keyboard-force-release.rules
|
||||
--- udev-153-orig/extras/keymap/95-keyboard-force-release.rules 2010-09-21 13:52:31.000000000 +0200
|
||||
+++ udev-153/extras/keymap/95-keyboard-force-release.rules 2010-08-04 14:23:27.000000000 +0200
|
||||
@@ -19,7 +19,7 @@
|
||||
ENV{DMI_VENDOR}="$attr{[dmi/id]sys_vendor}"
|
||||
|
||||
|
||||
-ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*N128*|*N130*|*N140*|*N210*|*SR70S/SR71S*|*Q210/P210*", RUN+="keyboard-force-release.sh $devpath samsung-other"
|
||||
+ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*E252*|*N120*|*N128*|*N130*|*N140*|*N148/N208*|*N150*|*N150/N210/N220*|*N220*|*N308*|*N310*|*N510*|*NB30*|*NC10/N110*|*ND10*|*Q210/P210*|*R410P*|*R425/R525*|*R428/P428*|*R460*|*R463*|*R468/R418*|*R480/R431/R481*|*R509*|*R518*|*R519/R719*|*R520/R522/R620*|*R528/R728*|*R530/R730*|*R530/R730/P590*|*R560*|*R580*|*R580/R590*|*R59/R60/R61*|*R59P/R60P/R61P*|*R710*|*R720*|*R780/R778*|*SR58P*|*SR700*|*SR70S/SR71S*|*SX22S*|*X118*|*X120*|*X460*", RUN+="keyboard-force-release.sh $devpath samsung-other"
|
||||
|
||||
ENV{DMI_VENDOR}=="Dell Inc.", ATTR{[dmi/id]product_name}=="Studio 1557|Studio 1558", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
|
||||
|
||||
@@ -29,4 +29,10 @@
|
||||
|
||||
ENV{DMI_VENDOR}=="MTC", ATTR{[dmi/id]product_version}=="A0", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
|
||||
|
||||
+ENV{DMI_VENDOR}=="PEGATRON CORP.", ATTR{[dmi/id]product_name}=="Spring Peak", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
|
||||
+
|
||||
+ENV{DMI_VENDOR}=="TOSHIBA", ATTR{[dmi/id]product_name}=="Satellite U300|Satellite Pro U300|Satellite U305", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
|
||||
+
|
||||
+ENV{DMI_VENDOR}=="Viooo Corporation", ATTR{[dmi/id]product_name}=="PT17", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
|
||||
+
|
||||
LABEL="force_release_end"
|
||||
diff -urN udev-153-orig/extras/keymap/95-keymap.rules udev-153/extras/keymap/95-keymap.rules
|
||||
--- udev-153-orig/extras/keymap/95-keymap.rules 2010-09-21 13:52:31.000000000 +0200
|
||||
+++ udev-153/extras/keymap/95-keymap.rules 2010-09-21 12:02:18.000000000 +0200
|
||||
@@ -21,7 +21,11 @@
|
||||
|
||||
ENV{ID_VENDOR}=="Logitech*", ATTRS{name}=="Logitech USB Multimedia Keyboard", RUN+="keymap $name logitech-wave"
|
||||
ENV{ID_VENDOR}=="Logitech*", ATTRS{name}=="Logitech USB Receiver", RUN+="keymap $name logitech-wave-cordless"
|
||||
+# Logitech Cordless Wave Pro looks slightly weird; some hotkeys are coming through the mouse interface
|
||||
+ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c529", ATTRS{name}=="Logitech USB Receiver", RUN+="keymap $name logitech-wave-pro-cordless"
|
||||
+
|
||||
ENV{ID_VENDOR}=="Lite-On_Technology_Corp*", ATTRS{name}=="Lite-On Technology Corp. ThinkPad USB Keyboard with TrackPoint", RUN+="keymap $name lenovo-thinkpad-usb-keyboard-trackpoint"
|
||||
+ENV{ID_VENDOR_ID}=="04b3", ENV{ID_MODEL_ID}=="301[89]", RUN+="keymap $name ibm-thinkpad-usb-keyboard-trackpoint"
|
||||
|
||||
GOTO="keyboard_end"
|
||||
|
||||
@@ -37,11 +41,12 @@
|
||||
|
||||
ENV{DMI_VENDOR}=="IBM*", KERNELS=="input*", ATTRS{name}=="ThinkPad Extra Buttons", RUN+="keymap $name module-ibm"
|
||||
ENV{DMI_VENDOR}=="LENOVO*", KERNELS=="input*", ATTRS{name}=="ThinkPad Extra Buttons", RUN+="keymap $name module-lenovo"
|
||||
+ENV{DMI_VENDOR}=="LENOVO*", KERNELS=="input*", ATTRS{name}=="Lenovo ThinkPad SL Series extra buttons", RUN+="keymap $name 0x0E bluetooth"
|
||||
ENV{DMI_VENDOR}=="ASUS*", KERNELS=="input*", ATTRS{name}=="Asus Extra Buttons", ATTR{[dmi/id]product_name}=="W3J", RUN+="keymap $name module-asus-w3j"
|
||||
ENV{DMI_VENDOR}=="Sony*", KERNELS=="input*", ATTRS{name}=="Sony Vaio Keys", RUN+="keymap $name module-sony"
|
||||
|
||||
# Older Vaios have some different keys
|
||||
-ENV{DMI_VENDOR}=="Sony*", ATTR{[dmi/id]product_name}=="*PCG-C1*|*PCG-K25*|*PCG-F1*|*PCG-F2*|*PCG-F3*|*PCG-F4*|*PCG-F5*|*PCG-F6*|*PCG-FX*|*PCG-FRV*|*PCG-GR*|*PCG-TR*|*PCG-NV*|*PCG-Z*|*VGN-S360*|*VGN-SZ2HP_B*", ATTRS{name}=="Sony Vaio Keys", RUN+="keymap $name module-sony-old"
|
||||
+ENV{DMI_VENDOR}=="Sony*", ATTR{[dmi/id]product_name}=="*PCG-C1*|*PCG-K25*|*PCG-F1*|*PCG-F2*|*PCG-F3*|*PCG-F4*|*PCG-F5*|*PCG-F6*|*PCG-FX*|*PCG-FRV*|*PCG-GR*|*PCG-TR*|*PCG-NV*|*PCG-Z*|*VGN-S360*", ATTRS{name}=="Sony Vaio Keys", RUN+="keymap $name module-sony-old"
|
||||
|
||||
#
|
||||
# The following rules belong to standard i8042 AT keyboard with high key codes.
|
||||
@@ -53,19 +58,22 @@
|
||||
LABEL="keyboard_vendorcheck"
|
||||
|
||||
ENV{DMI_VENDOR}=="Dell*", RUN+="keymap $name dell"
|
||||
-ENV{DMI_VENDOR}=="Dell*", ATTR{[dmi/id]product_name}=="Inspiron 1011", RUN+="keymap $name 0x84 wlan"
|
||||
+ENV{DMI_VENDOR}=="Dell*", ATTR{[dmi/id]product_name}=="Inspiron 910|Inspiron 1010|Inspiron 1011|Inspiron 1012|Inspiron 1110|Inspiron 1210", RUN+="keymap $name 0x84 wlan"
|
||||
|
||||
ENV{DMI_VENDOR}=="Compaq*", ATTR{[dmi/id]product_name}=="*E500*|*Evo N*", RUN+="keymap $name compaq-e_evo"
|
||||
|
||||
ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="*3000*", RUN+="keymap $name lenovo-3000"
|
||||
ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="ThinkPad X6*", ATTR{[dmi/id]product_version}=="* Tablet" RUN+="keymap $name lenovo-thinkpad_x6_tablet"
|
||||
ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="ThinkPad X200 Tablet*", ATTR{[dmi/id]product_version}=="* Tablet" RUN+="keymap $name lenovo-thinkpad_x200_tablet"
|
||||
+ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="*IdeaPad*", RUN+="keymap $name lenovo-ideapad"
|
||||
+ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_name}=="S10-*", RUN+="keymap $name lenovo-ideapad"
|
||||
+ENV{DMI_VENDOR}=="LENOVO", ATTR{[dmi/id]product_version}=="*IdeaPad Y550*", RUN+="keymap $name 0x95 media 0xA3 play"
|
||||
|
||||
ENV{DMI_VENDOR}=="Hewlett-Packard*", RUN+="keymap $name hewlett-packard"
|
||||
ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*[tT][aA][bB][lL][eE][tT]*", RUN+="keymap $name hewlett-packard-tablet"
|
||||
ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*[pP][aA][vV][iI][lL][iI][oO][nN]*", RUN+="keymap $name hewlett-packard-pavilion"
|
||||
ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*Compaq*|*EliteBook*|*2230s*", RUN+="keymap $name hewlett-packard-compaq_elitebook"
|
||||
-ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*2510p*|*2530p*", RUN+="keymap $name hewlett-packard-2510p_2530p"
|
||||
+ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*2510p*|*2530p*|HP G60 Notebook PC", RUN+="keymap $name hewlett-packard-2510p_2530p"
|
||||
ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*[tT][xX]2*", RUN+="keymap $name hewlett-packard-tx2"
|
||||
ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="Presario 2100*", RUN+="keymap $name hewlett-packard-presario-2100"
|
||||
# HP Pavillion dv6315ea has empty DMI_VENDOR
|
||||
@@ -77,7 +85,8 @@
|
||||
ENV{DMI_VENDOR}=="Acer*", RUN+="keymap $name acer"
|
||||
ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="Extensa*", ATTR{[dmi/id]product_name}=="*5210*|*5220*|*5610*|*5620*|*5720*", RUN+="keymap $name 0xEE screenlock"
|
||||
ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="TravelMate*C300*", RUN+="keymap $name acer-travelmate_c300"
|
||||
-ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="TravelMate*6292*|TravelMate*8471*|Aspire 1810T*|AO751h|AO531h", RUN+="keymap $name 0xD9 bluetooth"
|
||||
+ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="TravelMate*6292*|TravelMate*8471*|TravelMate*4720*|Aspire 1810T*|AO751h|AO531h", RUN+="keymap $name 0xD9 bluetooth"
|
||||
+ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="TravelMate*4720*", RUN+="keymap $name 0xB2 www 0xEE screenlock"
|
||||
ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="TravelMate 6593|Aspire 1640", RUN+="keymap $name 0xB2 www 0xEE screenlock"
|
||||
ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="Aspire 6920", RUN+="keymap $name acer-aspire_6920"
|
||||
ENV{DMI_VENDOR}=="Acer*", ATTR{[dmi/id]product_name}=="Aspire 5920G", RUN+="keymap $name acer-aspire_5920g"
|
||||
@@ -110,7 +119,7 @@
|
||||
|
||||
ENV{DMI_VENDOR}=="MAXDATA", ATTR{[dmi/id]product_name}=="Pro 7000*", RUN+="keymap $name maxdata-pro_7000"
|
||||
|
||||
-ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*NC10*|*NC20*|*N128*|*N130*|*N210*|*SP55S*|*SQ45S70S*|*SX60P*|*SX22S*|*SX30S*|*R59P/R60P/R61P*|*SR70S/SR71S*|*Q210*|*Q310*|*X05*|*P560*|*R560*", RUN+="keymap $name samsung-other"
|
||||
+ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", RUN+="keymap $name samsung-other"
|
||||
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*SX20S*", RUN+="keymap $name samsung-sx20s"
|
||||
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="SQ1US", RUN+="keymap $name samsung-sq1us"
|
||||
|
||||
@@ -120,6 +129,8 @@
|
||||
|
||||
ENV{DMI_VENDOR}=="OQO Inc.*", ATTR{[dmi/id]product_name}=="OQO Model 2*", RUN+="keymap $name oqo-model2"
|
||||
|
||||
+ENV{DMI_VENDOR}=="ONKYO CORPORATION", ATTR{[dmi/id]product_name}=="ONKYOPC", RUN+="keymap $name onkyo"
|
||||
+
|
||||
ENV{DMI_VENDOR}=="ASUS", RUN+="keymap $name asus"
|
||||
|
||||
ENV{DMI_VENDOR}=="VIA", ATTR{[dmi/id]product_name}=="K8N800", ATTR{[dmi/id]product_version}=="VT8204B", RUN+="keymap $name 0x81 prog1"
|
||||
diff -urN udev-153-orig/extras/keymap/findkeyboards udev-153/extras/keymap/findkeyboards
|
||||
--- udev-153-orig/extras/keymap/findkeyboards 2009-12-15 12:49:25.000000000 +0100
|
||||
+++ udev-153/extras/keymap/findkeyboards 2010-07-08 11:37:47.000000000 +0200
|
||||
@@ -34,6 +34,8 @@
|
||||
# modules
|
||||
module=`udevadm trigger --verbose --dry-run --subsystem-match=input --attr-match=name='*Extra Buttons'`
|
||||
module="$module
|
||||
+`udevadm trigger --verbose --dry-run --subsystem-match=input --attr-match=name='*extra buttons'`"
|
||||
+ module="$module
|
||||
`udevadm trigger --verbose --dry-run --subsystem-match=input --attr-match=name='Sony Vaio Keys'`"
|
||||
for m in $module; do
|
||||
evdev=`ls -d $m/event* 2>/dev/null`
|
||||
diff -urN udev-153-orig/extras/keymap/.gitignore udev-153/extras/keymap/.gitignore
|
||||
--- udev-153-orig/extras/keymap/.gitignore 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ udev-153/extras/keymap/.gitignore 2010-03-18 16:44:52.000000000 +0100
|
||||
@@ -0,0 +1,6 @@
|
||||
+keymap
|
||||
+keys-from-name.gperf
|
||||
+keys-from-name.h
|
||||
+keys-to-name.h
|
||||
+keys.txt
|
||||
+
|
||||
diff -urN udev-153-orig/extras/keymap/keymaps/ibm-thinkpad-usb-keyboard-trackpoint udev-153/extras/keymap/keymaps/ibm-thinkpad-usb-keyboard-trackpoint
|
||||
--- udev-153-orig/extras/keymap/keymaps/ibm-thinkpad-usb-keyboard-trackpoint 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ udev-153/extras/keymap/keymaps/ibm-thinkpad-usb-keyboard-trackpoint 2010-07-07 10:58:29.000000000 +0200
|
||||
@@ -0,0 +1,7 @@
|
||||
+0x900f0 screenlock
|
||||
+0x900f1 wlan
|
||||
+0x900f2 switchvideomode
|
||||
+0x900f3 suspend
|
||||
+0x900f4 brightnessup
|
||||
+0x900f5 brightnessdown
|
||||
+0x900f8 zoom
|
||||
diff -urN udev-153-orig/extras/keymap/keymaps/lenovo-ideapad udev-153/extras/keymap/keymaps/lenovo-ideapad
|
||||
--- udev-153-orig/extras/keymap/keymaps/lenovo-ideapad 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ udev-153/extras/keymap/keymaps/lenovo-ideapad 2010-08-17 16:31:27.000000000 +0200
|
||||
@@ -0,0 +1,7 @@
|
||||
+# Key codes observed on S10-3, assumed valid on other IdeaPad models
|
||||
+0x81 rfkill # does nothing in BIOS
|
||||
+0x83 display_off # BIOS toggles screen state
|
||||
+0xB9 brightnessup # does nothing in BIOS
|
||||
+0xBA brightnessdown # does nothing in BIOS
|
||||
+0xF1 camera # BIOS toggles camera power
|
||||
+0xf2 unknown # trackpad enable/disable (does nothing in BIOS)
|
||||
diff -urN udev-153-orig/extras/keymap/keymaps/logitech-wave-pro-cordless udev-153/extras/keymap/keymaps/logitech-wave-pro-cordless
|
||||
--- udev-153-orig/extras/keymap/keymaps/logitech-wave-pro-cordless 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ udev-153/extras/keymap/keymaps/logitech-wave-pro-cordless 2010-07-07 10:58:29.000000000 +0200
|
||||
@@ -0,0 +1,12 @@
|
||||
+0xC01B6 camera
|
||||
+0xC0183 media
|
||||
+0xC0184 wordprocessor
|
||||
+0xC0186 spreadsheet
|
||||
+0xC018E calendar
|
||||
+0xC0223 homepage
|
||||
+0xC01BC messenger
|
||||
+0xC018A mail
|
||||
+0xC0221 search
|
||||
+0xC00B8 ejectcd
|
||||
+0xC022D zoomin
|
||||
+0xC022E zoomout
|
||||
diff -urN udev-153-orig/extras/keymap/keymaps/micro-star udev-153/extras/keymap/keymaps/micro-star
|
||||
--- udev-153-orig/extras/keymap/keymaps/micro-star 2009-12-03 13:45:03.000000000 +0100
|
||||
+++ udev-153/extras/keymap/keymaps/micro-star 2010-06-11 10:52:56.000000000 +0200
|
||||
@@ -6,6 +6,7 @@
|
||||
0xE2 bluetooth # satellite dish2
|
||||
0xE4 f22 # Fn-F3 Touchpad disable
|
||||
0xEC email # envelope button
|
||||
+0xEE camera # Fn-F6 camera disable
|
||||
0xF6 wlan # satellite dish1
|
||||
0xF7 brightnessdown # Fn-F4
|
||||
0xF8 brightnessup # Fn-F5
|
||||
diff -urN udev-153-orig/extras/keymap/keymaps/onkyo udev-153/extras/keymap/keymaps/onkyo
|
||||
--- udev-153-orig/extras/keymap/keymaps/onkyo 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ udev-153/extras/keymap/keymaps/onkyo 2010-08-31 10:35:41.000000000 +0200
|
||||
@@ -0,0 +1,14 @@
|
||||
+0xA0 mute # Fn+D
|
||||
+0xAE volumedown # Fn+F
|
||||
+0xB0 volumeup # Fn+G
|
||||
+0xDF sleep # Fn+W
|
||||
+0xE0 bluetooth # Fn+H
|
||||
+0xE2 cyclewindows # Fn+Esc
|
||||
+0xEE battery # Fn+Q
|
||||
+0xF0 media # Fn+R
|
||||
+0xF5 switchvideomode # Fn+E
|
||||
+0xF6 camera # Fn+T
|
||||
+0xF7 f22 # Fn+Y (touchpad toggle)
|
||||
+0xF8 brightnessup # Fn+S
|
||||
+0xF9 brightnessdown # Fn+A
|
||||
+0xFB wlan # Fn+J
|
||||
24
udev-153-n210.patch
Normal file
24
udev-153-n210.patch
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
diff -up udev-153/extras/keymap/95-keyboard-force-release.rules.n210 udev-153/extras/keymap/95-keyboard-force-release.rules
|
||||
--- udev-153/extras/keymap/95-keyboard-force-release.rules.n210 2010-08-04 15:55:56.000000000 +0200
|
||||
+++ udev-153/extras/keymap/95-keyboard-force-release.rules 2010-08-04 15:57:54.000000000 +0200
|
||||
@@ -19,7 +19,7 @@ DRIVER!="atkbd", GOTO="force_release_end
|
||||
ENV{DMI_VENDOR}="$attr{[dmi/id]sys_vendor}"
|
||||
|
||||
|
||||
-ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*N130*|*N140*|*SR70S/SR71S*|*Q210/P210*", RUN+="keyboard-force-release.sh $devpath samsung-other"
|
||||
+ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*N128*|*N130*|*N140*|*N210*|*SR70S/SR71S*|*Q210/P210*", RUN+="keyboard-force-release.sh $devpath samsung-other"
|
||||
|
||||
ENV{DMI_VENDOR}=="Dell Inc.", ATTR{[dmi/id]product_name}=="Studio 1557|Studio 1558", RUN+="keyboard-force-release.sh $devpath common-volume-keys"
|
||||
|
||||
diff -up udev-153/extras/keymap/95-keymap.rules.n210 udev-153/extras/keymap/95-keymap.rules
|
||||
--- udev-153/extras/keymap/95-keymap.rules.n210 2010-08-04 15:57:23.000000000 +0200
|
||||
+++ udev-153/extras/keymap/95-keymap.rules 2010-08-04 15:57:52.000000000 +0200
|
||||
@@ -110,7 +110,7 @@ ENV{DMI_VENDOR}=="INVENTEC", ATTR{[dmi/i
|
||||
|
||||
ENV{DMI_VENDOR}=="MAXDATA", ATTR{[dmi/id]product_name}=="Pro 7000*", RUN+="keymap $name maxdata-pro_7000"
|
||||
|
||||
-ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*NC10*|*NC20*|*N130*|*SP55S*|*SQ45S70S*|*SX60P*|*SX22S*|*SX30S*|*R59P/R60P/R61P*|*SR70S/SR71S*|*Q210*|*Q310*|*X05*|*P560*|*R560*", RUN+="keymap $name samsung-other"
|
||||
+ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*NC10*|*NC20*|*N128*|*N130*|*N210*|*SP55S*|*SQ45S70S*|*SX60P*|*SX22S*|*SX30S*|*R59P/R60P/R61P*|*SR70S/SR71S*|*Q210*|*Q310*|*X05*|*P560*|*R560*", RUN+="keymap $name samsung-other"
|
||||
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="*SX20S*", RUN+="keymap $name samsung-sx20s"
|
||||
ENV{DMI_VENDOR}=="[sS][aA][mM][sS][uU][nN][gG]*", ATTR{[dmi/id]product_name}=="SQ1US", RUN+="keymap $name samsung-sq1us"
|
||||
|
||||
22
udev-153-trigger.patch
Normal file
22
udev-153-trigger.patch
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
diff --git a/udev/udevadm-trigger.c b/udev/udevadm-trigger.c
|
||||
index 03aa534..dbcaee3 100644
|
||||
--- a/udev/udevadm-trigger.c
|
||||
+++ b/udev/udevadm-trigger.c
|
||||
@@ -110,7 +110,7 @@ int udevadm_trigger(struct udev *udev, int argc, char *argv[])
|
||||
TYPE_SUBSYSTEMS,
|
||||
TYPE_FAILED,
|
||||
} device_type = TYPE_DEVICES;
|
||||
- const char *action = "change";
|
||||
+ const char *action = "add";
|
||||
struct udev_enumerate *udev_enumerate;
|
||||
int rc = 0;
|
||||
|
||||
@@ -184,7 +184,7 @@ int udevadm_trigger(struct udev *udev, int argc, char *argv[])
|
||||
" subsystems sys subsystems and drivers\n"
|
||||
" failed trigger only the events which have been\n"
|
||||
" marked as failed during a previous run\n"
|
||||
- " --action=<action> event action value, default is \"change\"\n"
|
||||
+ " --action=<action> event action value, default is \"add\"\n"
|
||||
" --subsystem-match=<subsystem> trigger devices from a matching subsystem\n"
|
||||
" --subsystem-nomatch=<subsystem> exclude devices from a matching subsystem\n"
|
||||
" --attr-match=<file[=<value>]> trigger devices with a matching attribute\n"
|
||||
43
udev-86a7a2f-fix-missing-firmware.patch
Normal file
43
udev-86a7a2f-fix-missing-firmware.patch
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
From 86a7a2f853fe6022c5b0c1b415918047b65533be Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Thomas=20B=C3=A4chler?= <thomas@archlinux.org>
|
||||
Date: Sun, 31 Jan 2010 13:49:02 +0100
|
||||
Subject: firmware: fix error reporting on missing firmware files
|
||||
|
||||
The new firmware loader does not report an error to the kernel if a firmware file
|
||||
is missing. This results in modprobe stalling for 60 seconds for each firmware
|
||||
a module tries to load.
|
||||
---
|
||||
extras/firmware/firmware.c | 3 ++-
|
||||
1 files changed, 2 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/extras/firmware/firmware.c b/extras/firmware/firmware.c
|
||||
index 8f70be4..16455de 100644
|
||||
--- a/extras/firmware/firmware.c
|
||||
+++ b/extras/firmware/firmware.c
|
||||
@@ -149,6 +149,7 @@ int main(int argc, char **argv)
|
||||
|
||||
util_path_encode(firmware, fwencpath, sizeof(fwencpath));
|
||||
util_strscpyl(misspath, sizeof(misspath), udev_get_dev_path(udev), "/.udev/firmware-missing/", fwencpath, NULL);
|
||||
+ util_strscpyl(loadpath, sizeof(loadpath), udev_get_sys_path(udev), devpath, "/loading", NULL);
|
||||
|
||||
if (fwfile == NULL) {
|
||||
int err;
|
||||
@@ -166,6 +167,7 @@ int main(int argc, char **argv)
|
||||
udev_selinux_resetfscreatecon(udev);
|
||||
} while (err == -ENOENT);
|
||||
rc = 2;
|
||||
+ set_loading(udev, loadpath, "-1");
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -176,7 +178,6 @@ int main(int argc, char **argv)
|
||||
if (unlink(misspath) == 0)
|
||||
util_delete_path(udev, misspath);
|
||||
|
||||
- util_strscpyl(loadpath, sizeof(loadpath), udev_get_sys_path(udev), devpath, "/loading", NULL);
|
||||
set_loading(udev, loadpath, "1");
|
||||
|
||||
util_strscpyl(datapath, sizeof(datapath), udev_get_sys_path(udev), devpath, "/data", NULL);
|
||||
--
|
||||
1.6.6
|
||||
|
||||
27
udev-git484e1b2d11b9b89418589d885a625e647881933b.patch
Normal file
27
udev-git484e1b2d11b9b89418589d885a625e647881933b.patch
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
commit 484e1b2d11b9b89418589d885a625e647881933b
|
||||
Author: Kay Sievers <kay.sievers@vrfy.org>
|
||||
Date: Tue May 25 09:54:14 2010 +0200
|
||||
|
||||
rules: optical drives - use ID_CDROM_MEDIA_TRACK_COUNT_DATA
|
||||
|
||||
We should not access non-data optical media, ans skip things
|
||||
like blkid. It will cause errors for some drives.
|
||||
|
||||
https://bugzilla.kernel.org/show_bug.cgi?id=15757
|
||||
|
||||
diff --git a/rules/rules.d/60-persistent-storage.rules b/rules/rules.d/60-persistent-storage.rules
|
||||
index d9f8003..1f46041 100644
|
||||
--- a/rules/rules.d/60-persistent-storage.rules
|
||||
+++ b/rules/rules.d/60-persistent-storage.rules
|
||||
@@ -52,9 +52,9 @@ ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PA
|
||||
ENV{DEVTYPE}=="disk", KERNEL!="sd*|sr*", ATTR{removable}=="1", GOTO="persistent_storage_end"
|
||||
|
||||
# probe filesystem metadata of optical drives which have a media inserted
|
||||
-KERNEL=="sr*", ENV{ID_CDROM_MEDIA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="?*", IMPORT{program}="/sbin/blkid -o udev -p -u noraid -O $env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET} $tempnode"
|
||||
+KERNEL=="sr*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="?*", IMPORT{program}="/sbin/blkid -o udev -p -u noraid -O $env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET} $tempnode"
|
||||
# single-session CDs do not have ID_CDROM_MEDIA_SESSION_LAST_OFFSET
|
||||
-KERNEL=="sr*", ENV{ID_CDROM_MEDIA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="", IMPORT{program}="/sbin/blkid -o udev -p -u noraid $tempnode"
|
||||
+KERNEL=="sr*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="", IMPORT{program}="/sbin/blkid -o udev -p -u noraid $tempnode"
|
||||
|
||||
# probe filesystem metadata of disks
|
||||
KERNEL!="sr*", IMPORT{program}="/sbin/blkid -o udev -p $tempnode"
|
||||
96
udev-post.init
Normal file
96
udev-post.init
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# udev-post Post script for udev, after all filesystems are mounted
|
||||
#
|
||||
# Authors: Harald Hoyer <harald@redhat.com>
|
||||
#
|
||||
# chkconfig: 12345 26 75
|
||||
# description: Moves the generated persistent udev rules to /etc/udev/rules.d
|
||||
#
|
||||
### BEGIN INIT INFO
|
||||
# Default-Start: 12345
|
||||
# Default-Stop: 0 6
|
||||
# Required-Start: $local_fs
|
||||
# Required-Stop:
|
||||
# Short-Description: Moves the generated persistent udev rules to /etc/udev/rules.d
|
||||
# Description: Moves the generated persistent udev rules to /etc/udev/rules.d
|
||||
# Provides: udev-post
|
||||
### END INIT INFO
|
||||
|
||||
. /etc/rc.d/init.d/functions
|
||||
. /etc/sysconfig/udev
|
||||
|
||||
# See how we were called.
|
||||
case "$1" in
|
||||
start|reload)
|
||||
[ -w /var/lock/subsys ] || exit 4
|
||||
STRING=$"Retrigger failed udev events"
|
||||
echo -n $STRING
|
||||
/sbin/udevadm trigger --type=failed --action=add
|
||||
success "$STRING"
|
||||
echo
|
||||
|
||||
STRING=$"Adding udev persistent rules"
|
||||
|
||||
# copy the rules generated before / was mounted read-write
|
||||
for file in /dev/.udev/tmp-rules--*; do
|
||||
dest=${file##*tmp-rules--}
|
||||
# check, if anything is todo
|
||||
[ "$dest" = '*' ] && exit 0
|
||||
echo -n $STRING
|
||||
cat $file >> /etc/udev/rules.d/$dest
|
||||
rc=$?
|
||||
rm -f $file
|
||||
if [ "$rc" -eq "0" ]; then
|
||||
success "$STRING"
|
||||
echo
|
||||
elif [ "$rc" -eq "1" ]; then
|
||||
failure "$STRING"
|
||||
echo
|
||||
fi
|
||||
done
|
||||
|
||||
touch /var/lock/subsys/udev-post
|
||||
exit 0
|
||||
;;
|
||||
stop)
|
||||
[ -w /var/lock/subsys ] || exit 4
|
||||
STRING=$"Generating udev makedev cache file"
|
||||
MAKEDEV="/sbin/MAKEDEV"
|
||||
USE_MD5="false"
|
||||
[[ "$UDEV_USE_MAKEDEV_CACHE" == "yes" && -x /usr/bin/md5sum ]] && USE_MD5="true"
|
||||
if [[ "$USE_MD5" == "true" && -x "$MAKEDEV" ]]; then
|
||||
for i in /etc/udev/makedev.d/*.nodes; do
|
||||
if [ -f "$i" ]; then
|
||||
# use a little caching to speedup things
|
||||
md5=$(/usr/bin/md5sum "$i"|(read a b; echo $a))
|
||||
md5file="/var/lib/udev/makedev.d/${md5}.sh"
|
||||
|
||||
if [ ! -f "$md5file" ]; then
|
||||
echo -n $STRING
|
||||
( sed -e 's,#.*,,g' "$i" | \
|
||||
xargs $MAKEDEV -x -a -S ) \
|
||||
> "$md5file"
|
||||
rc=$?
|
||||
if [ "$rc" -eq "0" ]; then
|
||||
success "$STRING"
|
||||
echo
|
||||
elif [ "$rc" -eq "1" ]; then
|
||||
failure "$STRING"
|
||||
echo
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
rm -f /var/lock/subsys/udev-post
|
||||
exit 0
|
||||
;;
|
||||
status)
|
||||
exit 3
|
||||
;;
|
||||
*)
|
||||
echo $"Usage: $0 {start|stop|reload}"
|
||||
exit 2
|
||||
esac
|
||||
exit 0
|
||||
4
udev.sysconfig
Normal file
4
udev.sysconfig
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# If set to "yes", generates cache shell files of what MAKEDEV would do.
|
||||
# May speedup some systems with slow disks.
|
||||
# EXPERIMENTAL - use at your own risk
|
||||
UDEV_USE_MAKEDEV_CACHE="no"
|
||||
1
upstream
Normal file
1
upstream
Normal file
|
|
@ -0,0 +1 @@
|
|||
udev-145.tar.bz2
|
||||
54
upstream-key.gpg
Normal file
54
upstream-key.gpg
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
pub 1024D/517D0F0E 2000-10-10 Linux Kernel Archives Verification Key <ftpadmin@kernel.org>
|
||||
Key fingerprint = C75D C40A 11D7 AF88 9981 ED5B C86B A06A 517D 0F0E
|
||||
sub 4096g/E50A8F2A 2000-10-10
|
||||
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1.0.3 (GNU/Linux)
|
||||
Comment: For info see http://www.gnupg.org
|
||||
|
||||
mQGiBDnirDkRBADCTL/iUTeZKb0tiAcKdZdsUP/KSnrGGjlinolUAsUC0D6/hUB1
|
||||
RdCpJOOERTIEr1yvehqDM7veRhNMoxJNQxa/sSrkywey5qc8uaskUNEqenimq/70
|
||||
bahWJeoWXjad68mQFh65lULnHQrrioeJnh9UpyGJppNb/yIjdnymH9aYEwCglgP7
|
||||
UegBzH22h8NVQEK2PWWbyUUD/jQA4lI0wRWcL9HpkYkHcH0LTKRB9zYpQYtyvzJi
|
||||
yTGwJyFMfYNXy0RT11dICeLkf3HMR84hkPERKMhALobLxVUbfc7j2AygmzGphWGy
|
||||
DH/xjptQP/zrsq87ylYRONK18w1J42cm+yZa4XThMDPJMrb9/l8qnxU1JnW7W1al
|
||||
HKTpBACbs+91KLqrnIGcF44TMwxgUj5CUrayPoEnLU+ZMBqfSjmu8RqEYmTxJCKv
|
||||
7erBFSuazBGj5X7twunrtrW3bxO63MbLbHjfXSRrMnKOb8dRULIg6eWAnoAx8VVZ
|
||||
YjrOpwAntU3WxYOpbiCHt9kLbb+N5rvNtFcmOqRRQaCIUFOOaLQ8TGludXggS2Vy
|
||||
bmVsIEFyY2hpdmVzIFZlcmlmaWNhdGlvbiBLZXkgPGZ0cGFkbWluQGtlcm5lbC5v
|
||||
cmc+iFUEExECABUFAjnirDkDCwoDAxUDAgMWAgECF4AACgkQyGugalF9Dw4MNACe
|
||||
JiQTyCmQzPGou2cl/RyOXj79kYYAnAsT6xt72hp/PFiywYM9vBsDVv9niQEVAwUQ
|
||||
OeKwNWx5eAAqlgcFAQEdZgf/Vn2dMKrn8021NhavP0uA3pHGRmdKQ2WJBdLiN2tv
|
||||
LkpAioZtho+op+xBz8j1zdIJQ/7XWko869KHge2BAFwA8rWDzjtaAWdE0Jo/NiAR
|
||||
epUwV2FdRRwSxIcNG2CCPyJnfPokRqjdl2z9k2PkwidHSq+2k6JxCWnOcIXChSKf
|
||||
kHnemtA65ixAlhuxvyN3MPuYs1jAHyDGcyMfomp1qH9tXFQhhyXRrG2eMAfslstC
|
||||
XGXLcoLN3O2BMR/fG2GlV6kOqGOvoMIW3clVeQLQ9B1yyekKiVY6Vg+CgK5qhg8z
|
||||
9tjH4f33zzNDwsx1WSCOU/1LIPzFBNbR9QtTF2XmOUfRs4hGBBARAgAGBQI54rBc
|
||||
AAoJEH2d7s4ry8YhmjsAoMUW9RxfXBSos0A6LwGd+5pXv/MRAKCYFLG2T4GSV+qf
|
||||
iRsXnrgDHQHD04hGBBARAgAGBQI54rOZAAoJEPKlddweGoeC/+sAoL5f7JF21mRe
|
||||
Z8VV4nhh7prm+idSAKCMXDWW/tBOeJDYpiEhgyGSGgJJWrkEDQQ54q+cEBAAjRmb
|
||||
txamcZ9EYsQTnQvVL2l6vY5Rnbc1JDdcyHEV1kH5OwZWqvckL4QgKKBbTQwyB9pC
|
||||
o0nGK4PkBbrwL0outfHQ5jl9DUzTKIu+asWUyf3fxfUV6j2A6BMo59KNnJzUyJ2+
|
||||
B5na6NN8nEqEtmogROtjT8LkOvYwqD4A/5re2vwtie+h5yU6A+JbyGQF6lFxThZj
|
||||
4WGctBgCcDBqRkPAG8DFFAdeN5SMAArktCYuUGXi2q88EDoOs3Ykw0kB8+ZFECz/
|
||||
4/b93so5Wt2hC15cxAJoXFfR3mXHm40EHzMdEublWV4blB2KvFocQC74/H74QPUk
|
||||
cWlc6EhPodKvcuOfTimDxXaiGNFONUPgNAmCXeVoOapdWpb3x7iOHPwSaXeJSrO9
|
||||
fc4GtVjDv90DT2ekK7cvYk8s6B3t7p7W21Xi+hRgrw63B3HElr01gdMZY5XA5ey/
|
||||
WmnyBS6LOxXlnVBE+2uSQ+aZHqrLpXcRvq2ZonOziDSE0i940ZvIwlSzn0U5BQWl
|
||||
9hBDQw78RacYqaFvlpcGiPj75bScB4eemxV6Wdo9mtK0Vrr+9bWScXHEv7did4X+
|
||||
7tBWKbA8M+g290OSzjeQBGLuPmbjxzEKH9jcUumzBzzC5x5GFh7On9TLXQ4K/oRT
|
||||
6QQpS93YrTVbR60G4MKsePWLJmg7IgYUtNdLGjsAAwUP/0aAAq8CmWtourj1XxNY
|
||||
pFmOAU45d65fPWVadKyF++B+uDyRNYN7HQCqrJ7ddn0sH7OBtlE8yaBYgR0TFly9
|
||||
9+LqQO4r4IGCw2TBgA5tKnOWoPGEzvrLeoxR3SnPrKBlDvx6Rr9h3OJ9UV5u/NLh
|
||||
mCP9iN10gWCGzsWbONc6qD6PugbTur44D6s4CRK9xfliSrtG3GBHW914UKjJeB9s
|
||||
e3oc1rkmNv39kKcu33w4XVETAj4qpXnwoJvy639dfvnQt1TWFjIt20iP7m+jkT3B
|
||||
b526uJ5GuJl6r8sm5OYYRs5cLigvUzRZVgYnjjqlRRACx0WcinKK55Li2Pq4qcRV
|
||||
vSE5Tr3kTUTGxdmy113FbscrhLhesGALv3Hb7jeeWC8jviGEaHppgUumR6v0hsI1
|
||||
rZ3K8kCjFRAYV8OKtcEeMqjouArGi5dn0ClmG4lwH4SEdqC/TRNWGG+iVpWf5yCj
|
||||
9mvtvUhLtl6QjXHLrJdSGyafvqR1EQMJadFt4URvx0M7tqZIcwPUnb+7Oc+J96po
|
||||
e/EQmnm6rFnTpWz0BbY4mbJC7vUH4JyLs0nlxiKrBjaO9C1DSAKBpjqaga8dQe1Z
|
||||
kLOI2F7IWFeKV2LaMl+ZvvfWMECNcqNW2fkCuP9Fpz5K+xg21TwovVy93aWKgFL6
|
||||
06jK51oQp3fW86xXK9ZGKYqQiEYEGBECAAYFAjnir5wACgkQyGugalF9Dw5M9QCg
|
||||
hhmHalzWf8B3AVrjPrtrRHA1vlgAn3YRlU5l0V5W1iXvHXQCUHIESpgm
|
||||
=SZZb
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
Loading…
Add table
Add a link
Reference in a new issue