]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/libudev/libudev.c
Rip out setting of the log level from udev_new and put it in a new function
[thirdparty/systemd.git] / src / libudev / libudev.c
1 /***
2 This file is part of systemd.
3
4 Copyright 2008-2014 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 <ctype.h>
21 #include <stdarg.h>
22 #include <stddef.h>
23 #include <stdio.h>
24 #include <stdlib.h>
25 #include <string.h>
26
27 #include "libudev.h"
28
29 #include "alloc-util.h"
30 #include "fd-util.h"
31 #include "libudev-private.h"
32 #include "missing.h"
33 #include "string-util.h"
34
35 /**
36 * SECTION:libudev
37 * @short_description: libudev context
38 *
39 * The context contains the default values read from the udev config file,
40 * and is passed to all library operations.
41 */
42
43 /**
44 * udev:
45 *
46 * Opaque object representing the library context.
47 */
48 struct udev {
49 int refcount;
50 void (*log_fn)(struct udev *udev,
51 int priority, const char *file, int line, const char *fn,
52 const char *format, va_list args);
53 void *userdata;
54 };
55
56 /**
57 * udev_get_userdata:
58 * @udev: udev library context
59 *
60 * Retrieve stored data pointer from library context. This might be useful
61 * to access from callbacks.
62 *
63 * Returns: stored userdata
64 **/
65 _public_ void *udev_get_userdata(struct udev *udev) {
66 if (udev == NULL)
67 return NULL;
68 return udev->userdata;
69 }
70
71 /**
72 * udev_set_userdata:
73 * @udev: udev library context
74 * @userdata: data pointer
75 *
76 * Store custom @userdata in the library context.
77 **/
78 _public_ void udev_set_userdata(struct udev *udev, void *userdata) {
79 if (udev == NULL)
80 return;
81 udev->userdata = userdata;
82 }
83
84 /**
85 * udev_new:
86 *
87 * Create udev library context. This reads the udev configuration
88 * file, and fills in the default values.
89 *
90 * The initial refcount is 1, and needs to be decremented to
91 * release the resources of the udev library context.
92 *
93 * Returns: a new udev library context
94 **/
95 _public_ struct udev *udev_new(void) {
96 struct udev *udev;
97 _cleanup_fclose_ FILE *f = NULL;
98
99 udev = new0(struct udev, 1);
100 if (!udev) {
101 errno = -ENOMEM;
102 return NULL;
103 }
104 udev->refcount = 1;
105
106 return udev;
107 }
108
109 /**
110 * udev_ref:
111 * @udev: udev library context
112 *
113 * Take a reference of the udev library context.
114 *
115 * Returns: the passed udev library context
116 **/
117 _public_ struct udev *udev_ref(struct udev *udev) {
118 if (udev == NULL)
119 return NULL;
120 udev->refcount++;
121 return udev;
122 }
123
124 /**
125 * udev_unref:
126 * @udev: udev library context
127 *
128 * Drop a reference of the udev library context. If the refcount
129 * reaches zero, the resources of the context will be released.
130 *
131 * Returns: the passed udev library context if it has still an active reference, or #NULL otherwise.
132 **/
133 _public_ struct udev *udev_unref(struct udev *udev) {
134 if (udev == NULL)
135 return NULL;
136 udev->refcount--;
137 if (udev->refcount > 0)
138 return udev;
139 free(udev);
140 return NULL;
141 }
142
143 /**
144 * udev_set_log_fn:
145 * @udev: udev library context
146 * @log_fn: function to be called for log messages
147 *
148 * This function is deprecated.
149 *
150 **/
151 _public_ void udev_set_log_fn(struct udev *udev,
152 void (*log_fn)(struct udev *udev,
153 int priority, const char *file, int line, const char *fn,
154 const char *format, va_list args)) {
155 return;
156 }
157
158 /**
159 * udev_get_log_priority:
160 * @udev: udev library context
161 *
162 * This function is deprecated.
163 *
164 **/
165 _public_ int udev_get_log_priority(struct udev *udev) {
166 return log_get_max_level();
167 }
168
169 /**
170 * udev_set_log_priority:
171 * @udev: udev library context
172 * @priority: the new log priority
173 *
174 * This function is deprecated.
175 *
176 **/
177 _public_ void udev_set_log_priority(struct udev *udev, int priority) {
178 log_set_max_level(priority);
179 }