~stgraber/ubuntu/trusty/systemd/logind-cgroup-controllers

« back to all changes in this revision

Viewing changes to .pc/0000-upstream-hwdb-keyboard.patch/src/udev/udev-builtin.c

  • Committer: Package Import Robot
  • Author(s): Martin Pitt
  • Date: 2013-11-07 06:13:20 UTC
  • Revision ID: package-import@ubuntu.com-20131107061320-252f6uiboatk6nu4
Tags: 204-5ubuntu2
* debian/udev.install: Drop duplicate installation of net generator, reduces
  Debian delta.
* Drop debian/extra/firmware.agent and its invocation in 80-drivers.rules;
  we do not install this anyway, firmware is loaded by the udev builtin (and
  the kernel).
* 0020-persistent-storage-rule-mmc-partname.patch: Create symlinks for MMC
  partitions with a "PARTNAME" property (Android specific patch) in
  /dev/disks/by-partlabel/ for consistency with GUID partitions, not in
  /dev/disks/by-name/.
* Add magically generated debian patches from the source package
  (v204..upstream-fixes_204-5 and debian-changes), and drop our patches
  which are contained in that:
  - 0000-upstream-CVE-2013-4327.patch
  - 0010-Add-back-support-for-Debian-specific-config-files.patch
  - 0012-Make-logind-hostnamed-localed-timedated-D-Bus-activa.patch
  - 0017-Clean-up-empty-sessions-when-not-running-under-syste.patch
  - 0024-hwdb-in-lib.patch
  - 0030-revert-removal-of-rename_netif-functionality.patch
* Drop prefix from our remaining patches, and sort quilt series into
  categories.
* Drop "Breaks: consolekit (<< 0.4.6-1)" (slipped in with the merge), we
  don't depend on consolekit providing udev-acl as we only support logind's
  ACLs.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/***
2
 
  This file is part of systemd.
3
 
 
4
 
  Copyright 2007-2012 Kay Sievers <kay@vrfy.org>
5
 
 
6
 
  systemd is free software; you can redistribute it and/or modify it
7
 
  under the terms of the GNU Lesser General Public License as published by
8
 
  the Free Software Foundation; either version 2.1 of the License, or
9
 
  (at your option) any later version.
10
 
 
11
 
  systemd is distributed in the hope that it will be useful, but
12
 
  WITHOUT ANY WARRANTY; without even the implied warranty of
13
 
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
 
  Lesser General Public License for more details.
15
 
 
16
 
  You should have received a copy of the GNU Lesser General Public License
17
 
  along with systemd; If not, see <http://www.gnu.org/licenses/>.
18
 
***/
19
 
 
20
 
#include <unistd.h>
21
 
#include <stdio.h>
22
 
#include <stdlib.h>
23
 
#include <stddef.h>
24
 
#include <string.h>
25
 
#include <errno.h>
26
 
#include <getopt.h>
27
 
 
28
 
#include "udev.h"
29
 
 
30
 
static bool initialized;
31
 
 
32
 
static const struct udev_builtin *builtins[] = {
33
 
#ifdef HAVE_BLKID
34
 
        [UDEV_BUILTIN_BLKID] = &udev_builtin_blkid,
35
 
#endif
36
 
        [UDEV_BUILTIN_BTRFS] = &udev_builtin_btrfs,
37
 
#ifdef HAVE_FIRMWARE
38
 
        [UDEV_BUILTIN_FIRMWARE] = &udev_builtin_firmware,
39
 
#endif
40
 
        [UDEV_BUILTIN_HWDB] = &udev_builtin_hwdb,
41
 
        [UDEV_BUILTIN_INPUT_ID] = &udev_builtin_input_id,
42
 
#ifdef HAVE_KMOD
43
 
        [UDEV_BUILTIN_KMOD] = &udev_builtin_kmod,
44
 
#endif
45
 
        [UDEV_BUILTIN_NET_ID] = &udev_builtin_net_id,
46
 
        [UDEV_BUILTIN_PATH_ID] = &udev_builtin_path_id,
47
 
        [UDEV_BUILTIN_USB_ID] = &udev_builtin_usb_id,
48
 
#ifdef HAVE_ACL
49
 
        [UDEV_BUILTIN_UACCESS] = &udev_builtin_uaccess,
50
 
#endif
51
 
};
52
 
 
53
 
void udev_builtin_init(struct udev *udev)
54
 
{
55
 
        unsigned int i;
56
 
 
57
 
        if (initialized)
58
 
                return;
59
 
 
60
 
        for (i = 0; i < ELEMENTSOF(builtins); i++)
61
 
                if (builtins[i]->init)
62
 
                        builtins[i]->init(udev);
63
 
 
64
 
        initialized = true;
65
 
}
66
 
 
67
 
void udev_builtin_exit(struct udev *udev)
68
 
{
69
 
        unsigned int i;
70
 
 
71
 
        if (!initialized)
72
 
                return;
73
 
 
74
 
        for (i = 0; i < ELEMENTSOF(builtins); i++)
75
 
                if (builtins[i]->exit)
76
 
                        builtins[i]->exit(udev);
77
 
 
78
 
        initialized = false;
79
 
}
80
 
 
81
 
bool udev_builtin_validate(struct udev *udev)
82
 
{
83
 
        unsigned int i;
84
 
 
85
 
        for (i = 0; i < ELEMENTSOF(builtins); i++)
86
 
                if (builtins[i]->validate && builtins[i]->validate(udev))
87
 
                        return true;
88
 
        return false;
89
 
}
90
 
 
91
 
void udev_builtin_list(struct udev *udev)
92
 
{
93
 
        unsigned int i;
94
 
 
95
 
        for (i = 0; i < ELEMENTSOF(builtins); i++)
96
 
                fprintf(stderr, "  %-12s %s\n", builtins[i]->name, builtins[i]->help);
97
 
}
98
 
 
99
 
const char *udev_builtin_name(enum udev_builtin_cmd cmd)
100
 
{
101
 
        return builtins[cmd]->name;
102
 
}
103
 
 
104
 
bool udev_builtin_run_once(enum udev_builtin_cmd cmd)
105
 
{
106
 
        return builtins[cmd]->run_once;
107
 
}
108
 
 
109
 
enum udev_builtin_cmd udev_builtin_lookup(const char *command)
110
 
{
111
 
        char name[UTIL_PATH_SIZE];
112
 
        enum udev_builtin_cmd i;
113
 
        char *pos;
114
 
 
115
 
        strscpy(name, sizeof(name), command);
116
 
        pos = strchr(name, ' ');
117
 
        if (pos)
118
 
                pos[0] = '\0';
119
 
        for (i = 0; i < ELEMENTSOF(builtins); i++)
120
 
                if (streq(builtins[i]->name, name))
121
 
                        return i;
122
 
        return UDEV_BUILTIN_MAX;
123
 
}
124
 
 
125
 
int udev_builtin_run(struct udev_device *dev, enum udev_builtin_cmd cmd, const char *command, bool test)
126
 
{
127
 
        char arg[UTIL_PATH_SIZE];
128
 
        int argc;
129
 
        char *argv[128];
130
 
 
131
 
        /* we need '0' here to reset the internal state */
132
 
        optind = 0;
133
 
        strscpy(arg, sizeof(arg), command);
134
 
        udev_build_argv(udev_device_get_udev(dev), arg, &argc, argv);
135
 
        return builtins[cmd]->cmd(dev, argc, argv, test);
136
 
}
137
 
 
138
 
int udev_builtin_add_property(struct udev_device *dev, bool test, const char *key, const char *val)
139
 
{
140
 
        struct udev_list_entry *entry;
141
 
 
142
 
        entry = udev_device_add_property(dev, key, val);
143
 
        /* store in db, skip private keys */
144
 
        if (key[0] != '.')
145
 
                udev_list_entry_set_num(entry, true);
146
 
 
147
 
        if (test)
148
 
                printf("%s=%s\n", key, val);
149
 
        return 0;
150
 
}