LCOV - code coverage report
Current view: top level - libudev - libudev-device-private.c (source / functions) Hit Total Coverage
Test: systemd test coverage Lines: 5 206 2.4 %
Date: 2015-07-29 18:47:03 Functions: 1 32 3.1 %

          Line data    Source code
       1             : /***
       2             :   This file is part of systemd.
       3             : 
       4             :   Copyright 2008-2012 Kay Sievers <kay@vrfy.org>
       5             :   Copyright 2015 Tom Gundersen <teg@jklm.no>
       6             : 
       7             :   systemd is free software; you can redistribute it and/or modify it
       8             :   under the terms of the GNU Lesser General Public License as published by
       9             :   the Free Software Foundation; either version 2.1 of the License, or
      10             :   (at your option) any later version.
      11             : 
      12             :   systemd is distributed in the hope that it will be useful, but
      13             :   WITHOUT ANY WARRANTY; without even the implied warranty of
      14             :   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
      15             :   Lesser General Public License for more details.
      16             : 
      17             :   You should have received a copy of the GNU Lesser General Public License
      18             :   along with systemd; If not, see <http://www.gnu.org/licenses/>.
      19             : ***/
      20             : 
      21             : #include "libudev.h"
      22             : #include "libudev-private.h"
      23             : #include "libudev-device-internal.h"
      24             : 
      25             : #include "device-private.h"
      26             : 
      27           0 : int udev_device_tag_index(struct udev_device *udev_device, struct udev_device *udev_device_old, bool add) {
      28           0 :         sd_device *device_old = NULL;
      29             :         int r;
      30             : 
      31           0 :         assert(udev_device);
      32             : 
      33           0 :         if (udev_device_old)
      34           0 :                 device_old = udev_device_old->device;
      35             : 
      36           0 :         r = device_tag_index(udev_device->device, device_old, add);
      37           0 :         if (r < 0)
      38           0 :                 return r;
      39             : 
      40           0 :         return 0;
      41             : }
      42             : 
      43           0 : int udev_device_update_db(struct udev_device *udev_device) {
      44             :         int r;
      45             : 
      46           0 :         assert(udev_device);
      47             : 
      48           0 :         r = device_update_db(udev_device->device);
      49           0 :         if (r < 0)
      50           0 :                 return r;
      51             : 
      52           0 :         return 0;
      53             : }
      54             : 
      55           0 : int udev_device_delete_db(struct udev_device *udev_device) {
      56             :         int r;
      57             : 
      58           0 :         assert(udev_device);
      59             : 
      60           0 :         r = device_delete_db(udev_device->device);
      61           0 :         if (r < 0)
      62           0 :                 return r;
      63             : 
      64           0 :         return 0;
      65             : }
      66             : 
      67           1 : int udev_device_get_ifindex(struct udev_device *udev_device) {
      68             :         int r, ifindex;
      69             : 
      70           1 :         assert(udev_device);
      71             : 
      72           1 :         r = sd_device_get_ifindex(udev_device->device, &ifindex);
      73           1 :         if (r < 0)
      74           0 :                 return r;
      75             : 
      76           1 :         return ifindex;
      77             : }
      78             : 
      79           0 : const char *udev_device_get_devpath_old(struct udev_device *udev_device) {
      80           0 :         const char *devpath_old = NULL;
      81             :         int r;
      82             : 
      83           0 :         assert(udev_device);
      84             : 
      85           0 :         r = sd_device_get_property_value(udev_device->device, "DEVPATH_OLD", &devpath_old);
      86           0 :         if (r < 0 && r != -ENOENT) {
      87           0 :                 errno = -r;
      88           0 :                 return NULL;
      89             :         }
      90             : 
      91           0 :         return devpath_old;
      92             : }
      93             : 
      94           0 : mode_t udev_device_get_devnode_mode(struct udev_device *udev_device) {
      95             :         mode_t mode;
      96             :         int r;
      97             : 
      98           0 :         assert(udev_device);
      99             : 
     100           0 :         r = device_get_devnode_mode(udev_device->device, &mode);
     101           0 :         if (r < 0) {
     102           0 :                 errno = -r;
     103           0 :                 return 0;
     104             :         }
     105             : 
     106           0 :         return mode;
     107             : }
     108             : 
     109           0 : uid_t udev_device_get_devnode_uid(struct udev_device *udev_device) {
     110             :         uid_t uid;
     111             :         int r;
     112             : 
     113           0 :         assert(udev_device);
     114             : 
     115           0 :         r = device_get_devnode_uid(udev_device->device, &uid);
     116           0 :         if (r < 0) {
     117           0 :                 errno = -r;
     118           0 :                 return 0;
     119             :         }
     120             : 
     121           0 :         return uid;
     122             : }
     123             : 
     124           0 : gid_t udev_device_get_devnode_gid(struct udev_device *udev_device) {
     125             :         gid_t gid;
     126             :         int r;
     127             : 
     128           0 :         assert(udev_device);
     129             : 
     130           0 :         r = device_get_devnode_gid(udev_device->device, &gid);
     131           0 :         if (r < 0) {
     132           0 :                 errno = -r;
     133           0 :                 return 0;
     134             :         }
     135             : 
     136           0 :         return gid;
     137             : }
     138             : 
     139           0 : void udev_device_ensure_usec_initialized(struct udev_device *udev_device, struct udev_device *udev_device_old) {
     140           0 :         sd_device *device_old = NULL;
     141             : 
     142           0 :         assert(udev_device);
     143             : 
     144           0 :         if (udev_device_old)
     145           0 :                 device_old = udev_device_old->device;
     146             : 
     147           0 :         device_ensure_usec_initialized(udev_device->device, device_old);
     148           0 : }
     149             : 
     150           0 : char **udev_device_get_properties_envp(struct udev_device *udev_device) {
     151             :         char **envp;
     152             :         int r;
     153             : 
     154           0 :         assert(udev_device);
     155             : 
     156           0 :         r = device_get_properties_strv(udev_device->device, &envp);
     157           0 :         if (r < 0) {
     158           0 :                 errno = -r;
     159           0 :                 return NULL;
     160             :         }
     161             : 
     162           0 :         return envp;
     163             : }
     164             : 
     165           0 : ssize_t udev_device_get_properties_monitor_buf(struct udev_device *udev_device, const char **buf) {
     166             :         const char *nulstr;
     167             :         size_t len;
     168             :         int r;
     169             : 
     170           0 :         assert(udev_device);
     171           0 :         assert(buf);
     172             : 
     173           0 :         r = device_get_properties_nulstr(udev_device->device, (const uint8_t **)&nulstr, &len);
     174           0 :         if (r < 0)
     175           0 :                 return r;
     176             : 
     177           0 :         *buf = nulstr;
     178             : 
     179           0 :         return len;
     180             : }
     181             : 
     182           0 : int udev_device_get_devlink_priority(struct udev_device *udev_device) {
     183             :         int priority, r;
     184             : 
     185           0 :         assert(udev_device);
     186             : 
     187           0 :         r = device_get_devlink_priority(udev_device->device, &priority);
     188           0 :         if (r < 0)
     189           0 :                 return r;
     190             : 
     191           0 :         return priority;
     192             : }
     193             : 
     194           0 : int udev_device_get_watch_handle(struct udev_device *udev_device) {
     195             :         int handle, r;
     196             : 
     197           0 :         assert(udev_device);
     198             : 
     199           0 :         r = device_get_watch_handle(udev_device->device, &handle);
     200           0 :         if (r < 0)
     201           0 :                 return r;
     202             : 
     203           0 :         return handle;
     204             : }
     205             : 
     206           0 : void udev_device_set_is_initialized(struct udev_device *udev_device) {
     207           0 :         assert(udev_device);
     208             : 
     209           0 :         device_set_is_initialized(udev_device->device);
     210           0 : }
     211             : 
     212           0 : int udev_device_rename(struct udev_device *udev_device, const char *name) {
     213             :         int r;
     214             : 
     215           0 :         assert(udev_device);
     216             : 
     217           0 :         r = device_rename(udev_device->device, name);
     218           0 :         if (r < 0)
     219           0 :                 return r;
     220             : 
     221           0 :         return 0;
     222             : }
     223             : 
     224           0 : struct udev_device *udev_device_shallow_clone(struct udev_device *old_device) {
     225             :         struct udev_device *device;
     226             :         int r;
     227             : 
     228           0 :         assert(old_device);
     229             : 
     230           0 :         device = udev_device_new(old_device->udev);
     231           0 :         if (!device)
     232           0 :                 return NULL;
     233             : 
     234           0 :         r = device_shallow_clone(old_device->device, &device->device);
     235           0 :         if (r < 0) {
     236           0 :                 udev_device_unref(device);
     237           0 :                 errno = -r;
     238           0 :                 return NULL;
     239             :         }
     240             : 
     241           0 :         return device;
     242             : }
     243             : 
     244           0 : struct udev_device *udev_device_clone_with_db(struct udev_device *udev_device_old) {
     245             :         struct udev_device *udev_device;
     246             :         int r;
     247             : 
     248           0 :         assert(udev_device_old);
     249             : 
     250           0 :         udev_device = udev_device_new(udev_device_old->udev);
     251           0 :         if (!udev_device)
     252           0 :                 return NULL;
     253             : 
     254           0 :         r = device_clone_with_db(udev_device_old->device, &udev_device->device);
     255           0 :         if (r < 0) {
     256           0 :                 udev_device_unref(udev_device);
     257           0 :                 errno = -r;
     258           0 :                 return NULL;
     259             :         }
     260             : 
     261           0 :         return udev_device;
     262             : }
     263             : 
     264           0 : struct udev_device *udev_device_new_from_nulstr(struct udev *udev, char *nulstr, ssize_t buflen) {
     265             :         struct udev_device *device;
     266             :         int r;
     267             : 
     268           0 :         device = udev_device_new(udev);
     269           0 :         if (!device)
     270           0 :                 return NULL;
     271             : 
     272           0 :         r = device_new_from_nulstr(&device->device, (uint8_t*)nulstr, buflen);
     273           0 :         if (r < 0) {
     274           0 :                 udev_device_unref(device);
     275           0 :                 errno = -r;
     276           0 :                 return NULL;
     277             :         }
     278             : 
     279           0 :         return device;
     280             : }
     281             : 
     282           0 : struct udev_device *udev_device_new_from_synthetic_event(struct udev *udev, const char *syspath, const char *action) {
     283             :         struct udev_device *device;
     284             :         int r;
     285             : 
     286           0 :         device = udev_device_new(udev);
     287           0 :         if (!device)
     288           0 :                 return NULL;
     289             : 
     290           0 :         r = device_new_from_synthetic_event(&device->device, syspath, action);
     291           0 :         if (r < 0) {
     292           0 :                 udev_device_unref(device);
     293           0 :                 errno = -r;
     294           0 :                 return NULL;
     295             :         }
     296             : 
     297           0 :         return device;
     298             : }
     299             : 
     300           0 : int udev_device_copy_properties(struct udev_device *udev_device_dst, struct udev_device *udev_device_src) {
     301             :         int r;
     302             : 
     303           0 :         assert(udev_device_dst);
     304           0 :         assert(udev_device_src);
     305             : 
     306           0 :         r = device_copy_properties(udev_device_dst->device, udev_device_src->device);
     307           0 :         if (r < 0)
     308           0 :                 return r;
     309             : 
     310           0 :         return 0;
     311             : }
     312             : 
     313           0 : const char *udev_device_get_id_filename(struct udev_device *udev_device) {
     314             :         const char *filename;
     315             :         int r;
     316             : 
     317           0 :         assert(udev_device);
     318             : 
     319           0 :         r = device_get_id_filename(udev_device->device, &filename);
     320           0 :         if (r < 0) {
     321           0 :                 errno = -r;
     322           0 :                 return NULL;
     323             :         }
     324             : 
     325           0 :         return filename;
     326             : }
     327             : 
     328           0 : int udev_device_set_watch_handle(struct udev_device *udev_device, int handle) {
     329             : 
     330           0 :         assert(udev_device);
     331             : 
     332           0 :         device_set_watch_handle(udev_device->device, handle);
     333             : 
     334           0 :         return 0;
     335             : }
     336             : 
     337           0 : void udev_device_set_db_persist(struct udev_device *udev_device) {
     338           0 :         assert(udev_device);
     339             : 
     340           0 :         device_set_db_persist(udev_device->device);
     341           0 : }
     342             : 
     343           0 : int udev_device_set_devlink_priority(struct udev_device *udev_device, int priority) {
     344           0 :         assert(udev_device);
     345             : 
     346           0 :         device_set_devlink_priority(udev_device->device, priority);
     347             : 
     348           0 :         return 0;
     349             : }
     350             : 
     351           0 : int udev_device_add_devlink(struct udev_device *udev_device, const char *devlink) {
     352             :         int r;
     353             : 
     354           0 :         assert(udev_device);
     355             : 
     356           0 :         r = device_add_devlink(udev_device->device, devlink);
     357           0 :         if (r < 0)
     358           0 :                 return r;
     359             : 
     360           0 :         return 0;
     361             : }
     362             : 
     363           0 : int udev_device_add_property(struct udev_device *udev_device, const char *property, const char *value) {
     364             :         int r;
     365             : 
     366           0 :         assert(udev_device);
     367             : 
     368           0 :         r = device_add_property(udev_device->device, property, value);
     369           0 :         if (r < 0)
     370           0 :                 return r;
     371             : 
     372           0 :         return 0;
     373             : }
     374             : 
     375           0 : int udev_device_add_tag(struct udev_device *udev_device, const char *tag) {
     376             :         int r;
     377             : 
     378           0 :         assert(udev_device);
     379             : 
     380           0 :         r = device_add_tag(udev_device->device, tag);
     381           0 :         if (r < 0)
     382           0 :                 return r;
     383             : 
     384           0 :         return 0;
     385             : }
     386             : 
     387           0 : void udev_device_remove_tag(struct udev_device *udev_device, const char *tag) {
     388           0 :         assert(udev_device);
     389             : 
     390           0 :         device_remove_tag(udev_device->device, tag);
     391           0 : }
     392             : 
     393           0 : void udev_device_cleanup_tags_list(struct udev_device *udev_device) {
     394           0 :         assert(udev_device);
     395             : 
     396           0 :         device_cleanup_tags(udev_device->device);
     397           0 : }
     398             : 
     399           0 : void udev_device_cleanup_devlinks_list(struct udev_device *udev_device) {
     400           0 :         assert(udev_device);
     401             : 
     402           0 :         device_cleanup_devlinks(udev_device->device);
     403           0 : }
     404             : 
     405           0 : void udev_device_set_info_loaded(struct udev_device *udev_device) {
     406           0 :         assert(udev_device);
     407             : 
     408           0 :         device_seal(udev_device->device);
     409           0 : }
     410             : 
     411           0 : void udev_device_read_db(struct udev_device *udev_device) {
     412           0 :         assert(udev_device);
     413             : 
     414           0 :         device_read_db_force(udev_device->device);
     415           0 : }

Generated by: LCOV version 1.11