]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/libudev/libudev-device-private.c
tree-wide: beautify remaining copyright statements
[thirdparty/systemd.git] / src / libudev / libudev-device-private.c
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
88a6477e 2/***
96b2fb93
LP
3 Copyright © 2008-2012 Kay Sievers <kay@vrfy.org>
4 Copyright © 2015 Tom Gundersen <teg@jklm.no>
88a6477e 5***/
8dfc8dbe 6
b4bbcaa9
TA
7#include "libudev.h"
8
f4ac4d1a 9#include "device-private.h"
07630cea
LP
10#include "libudev-device-internal.h"
11#include "libudev-private.h"
f4ac4d1a
TG
12
13int udev_device_tag_index(struct udev_device *udev_device, struct udev_device *udev_device_old, bool add) {
14 sd_device *device_old = NULL;
15 int r;
16
17 assert(udev_device);
18
19 if (udev_device_old)
20 device_old = udev_device_old->device;
21
22 r = device_tag_index(udev_device->device, device_old, add);
23 if (r < 0)
24 return r;
25
26 return 0;
27}
28
29int udev_device_update_db(struct udev_device *udev_device) {
30 int r;
31
32 assert(udev_device);
33
34 r = device_update_db(udev_device->device);
35 if (r < 0)
36 return r;
37
38 return 0;
39}
40
41int udev_device_delete_db(struct udev_device *udev_device) {
42 int r;
43
44 assert(udev_device);
45
46 r = device_delete_db(udev_device->device);
47 if (r < 0)
48 return r;
49
50 return 0;
51}
52
53int udev_device_get_ifindex(struct udev_device *udev_device) {
54 int r, ifindex;
55
56 assert(udev_device);
57
58 r = sd_device_get_ifindex(udev_device->device, &ifindex);
59 if (r < 0)
60 return r;
61
62 return ifindex;
63}
64
65const char *udev_device_get_devpath_old(struct udev_device *udev_device) {
66 const char *devpath_old = NULL;
67 int r;
2b41e68a 68
f4ac4d1a
TG
69 assert(udev_device);
70
71 r = sd_device_get_property_value(udev_device->device, "DEVPATH_OLD", &devpath_old);
72 if (r < 0 && r != -ENOENT) {
73 errno = -r;
74 return NULL;
912541b0 75 }
f4ac4d1a
TG
76
77 return devpath_old;
c1dbe11d 78}
28460195 79
f4ac4d1a
TG
80mode_t udev_device_get_devnode_mode(struct udev_device *udev_device) {
81 mode_t mode;
82 int r;
83
84 assert(udev_device);
85
86 r = device_get_devnode_mode(udev_device->device, &mode);
87 if (r < 0) {
88 errno = -r;
89 return 0;
912541b0
KS
90 }
91
f4ac4d1a
TG
92 return mode;
93}
912541b0 94
f4ac4d1a
TG
95uid_t udev_device_get_devnode_uid(struct udev_device *udev_device) {
96 uid_t uid;
97 int r;
98
99 assert(udev_device);
100
101 r = device_get_devnode_uid(udev_device->device, &uid);
102 if (r < 0) {
103 errno = -r;
104 return 0;
105 }
106
107 return uid;
28460195
KS
108}
109
f4ac4d1a
TG
110gid_t udev_device_get_devnode_gid(struct udev_device *udev_device) {
111 gid_t gid;
112 int r;
113
114 assert(udev_device);
115
116 r = device_get_devnode_gid(udev_device->device, &gid);
117 if (r < 0) {
118 errno = -r;
912541b0
KS
119 return 0;
120 }
121
f4ac4d1a
TG
122 return gid;
123}
124
125void udev_device_ensure_usec_initialized(struct udev_device *udev_device, struct udev_device *udev_device_old) {
f4ac4d1a
TG
126 assert(udev_device);
127
90b33a27
ZJS
128 device_ensure_usec_initialized(udev_device->device,
129 udev_device_old ? udev_device_old->device : NULL);
f4ac4d1a
TG
130}
131
132char **udev_device_get_properties_envp(struct udev_device *udev_device) {
133 char **envp;
134 int r;
135
136 assert(udev_device);
137
138 r = device_get_properties_strv(udev_device->device, &envp);
139 if (r < 0) {
140 errno = -r;
141 return NULL;
912541b0
KS
142 }
143
f4ac4d1a
TG
144 return envp;
145}
146
147ssize_t udev_device_get_properties_monitor_buf(struct udev_device *udev_device, const char **buf) {
148 const char *nulstr;
149 size_t len;
150 int r;
151
152 assert(udev_device);
153 assert(buf);
154
155 r = device_get_properties_nulstr(udev_device->device, (const uint8_t **)&nulstr, &len);
029f4f21 156 if (r < 0)
f4ac4d1a
TG
157 return r;
158
159 *buf = nulstr;
160
161 return len;
162}
163
164int udev_device_get_devlink_priority(struct udev_device *udev_device) {
165 int priority, r;
166
167 assert(udev_device);
168
169 r = device_get_devlink_priority(udev_device->device, &priority);
170 if (r < 0)
171 return r;
172
173 return priority;
174}
175
176int udev_device_get_watch_handle(struct udev_device *udev_device) {
177 int handle, r;
178
179 assert(udev_device);
180
181 r = device_get_watch_handle(udev_device->device, &handle);
182 if (r < 0)
183 return r;
184
185 return handle;
186}
187
188void udev_device_set_is_initialized(struct udev_device *udev_device) {
189 assert(udev_device);
190
191 device_set_is_initialized(udev_device->device);
192}
193
194int udev_device_rename(struct udev_device *udev_device, const char *name) {
195 int r;
196
197 assert(udev_device);
198
199 r = device_rename(udev_device->device, name);
200 if (r < 0)
201 return r;
202
912541b0 203 return 0;
ca999860
GKH
204}
205
f4ac4d1a
TG
206struct udev_device *udev_device_shallow_clone(struct udev_device *old_device) {
207 struct udev_device *device;
208 int r;
209
210 assert(old_device);
211
212 device = udev_device_new(old_device->udev);
213 if (!device)
214 return NULL;
215
216 r = device_shallow_clone(old_device->device, &device->device);
217 if (r < 0) {
218 udev_device_unref(device);
219 errno = -r;
220 return NULL;
221 }
222
223 return device;
224}
225
226struct udev_device *udev_device_clone_with_db(struct udev_device *udev_device_old) {
227 struct udev_device *udev_device;
228 int r;
229
230 assert(udev_device_old);
231
232 udev_device = udev_device_new(udev_device_old->udev);
233 if (!udev_device)
234 return NULL;
235
236 r = device_clone_with_db(udev_device_old->device, &udev_device->device);
237 if (r < 0) {
238 udev_device_unref(udev_device);
239 errno = -r;
240 return NULL;
241 }
242
243 return udev_device;
244}
245
246struct udev_device *udev_device_new_from_nulstr(struct udev *udev, char *nulstr, ssize_t buflen) {
247 struct udev_device *device;
248 int r;
249
250 device = udev_device_new(udev);
251 if (!device)
252 return NULL;
253
254 r = device_new_from_nulstr(&device->device, (uint8_t*)nulstr, buflen);
255 if (r < 0) {
256 udev_device_unref(device);
257 errno = -r;
258 return NULL;
259 }
260
261 return device;
262}
263
264struct udev_device *udev_device_new_from_synthetic_event(struct udev *udev, const char *syspath, const char *action) {
265 struct udev_device *device;
266 int r;
267
268 device = udev_device_new(udev);
269 if (!device)
270 return NULL;
271
272 r = device_new_from_synthetic_event(&device->device, syspath, action);
273 if (r < 0) {
274 udev_device_unref(device);
275 errno = -r;
276 return NULL;
277 }
278
279 return device;
280}
281
282int udev_device_copy_properties(struct udev_device *udev_device_dst, struct udev_device *udev_device_src) {
283 int r;
284
285 assert(udev_device_dst);
286 assert(udev_device_src);
287
288 r = device_copy_properties(udev_device_dst->device, udev_device_src->device);
289 if (r < 0)
290 return r;
291
292 return 0;
293}
294
295const char *udev_device_get_id_filename(struct udev_device *udev_device) {
296 const char *filename;
297 int r;
298
299 assert(udev_device);
300
301 r = device_get_id_filename(udev_device->device, &filename);
302 if (r < 0) {
303 errno = -r;
304 return NULL;
305 }
306
307 return filename;
308}
309
310int udev_device_set_watch_handle(struct udev_device *udev_device, int handle) {
912541b0 311
f4ac4d1a
TG
312 assert(udev_device);
313
314 device_set_watch_handle(udev_device->device, handle);
315
316 return 0;
317}
318
319void udev_device_set_db_persist(struct udev_device *udev_device) {
320 assert(udev_device);
321
322 device_set_db_persist(udev_device->device);
323}
324
325int udev_device_set_devlink_priority(struct udev_device *udev_device, int priority) {
326 assert(udev_device);
327
328 device_set_devlink_priority(udev_device->device, priority);
3c0bab4a 329
912541b0 330 return 0;
8e41d35d 331}
f4ac4d1a
TG
332
333int udev_device_add_devlink(struct udev_device *udev_device, const char *devlink) {
334 int r;
335
336 assert(udev_device);
337
338 r = device_add_devlink(udev_device->device, devlink);
339 if (r < 0)
340 return r;
341
342 return 0;
343}
344
345int udev_device_add_property(struct udev_device *udev_device, const char *property, const char *value) {
346 int r;
347
348 assert(udev_device);
349
350 r = device_add_property(udev_device->device, property, value);
351 if (r < 0)
352 return r;
353
354 return 0;
355}
356
357int udev_device_add_tag(struct udev_device *udev_device, const char *tag) {
358 int r;
359
360 assert(udev_device);
361
362 r = device_add_tag(udev_device->device, tag);
363 if (r < 0)
364 return r;
365
366 return 0;
367}
368
369void udev_device_remove_tag(struct udev_device *udev_device, const char *tag) {
370 assert(udev_device);
371
372 device_remove_tag(udev_device->device, tag);
373}
374
375void udev_device_cleanup_tags_list(struct udev_device *udev_device) {
376 assert(udev_device);
377
378 device_cleanup_tags(udev_device->device);
379}
380
381void udev_device_cleanup_devlinks_list(struct udev_device *udev_device) {
382 assert(udev_device);
383
384 device_cleanup_devlinks(udev_device->device);
385}
386
387void udev_device_set_info_loaded(struct udev_device *udev_device) {
388 assert(udev_device);
389
390 device_seal(udev_device->device);
391}
107f2e25
TG
392
393void udev_device_read_db(struct udev_device *udev_device) {
394 assert(udev_device);
395
396 device_read_db_force(udev_device->device);
397}