LCOV - code coverage report
Current view: top level - core - dbus-util.h (source / functions) Hit Total Coverage
Test: systemd_full.info Lines: 0 4 0.0 %
Date: 2019-08-23 13:36:53 Functions: 0 2 0.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /* SPDX-License-Identifier: LGPL-2.1+ */
       2                 :            : #pragma once
       3                 :            : 
       4                 :            : #include "sd-bus.h"
       5                 :            : 
       6                 :            : #include "unit.h"
       7                 :            : 
       8                 :            : int bus_property_get_triggered_unit(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *error);
       9                 :            : 
      10                 :            : #define BUS_DEFINE_SET_TRANSIENT(function, bus_type, type, cast_type, fmt) \
      11                 :            :         int bus_set_transient_##function(                               \
      12                 :            :                         Unit *u,                                        \
      13                 :            :                         const char *name,                               \
      14                 :            :                         cast_type *p,                                   \
      15                 :            :                         sd_bus_message *message,                        \
      16                 :            :                         UnitWriteFlags flags,                           \
      17                 :            :                         sd_bus_error *error) {                          \
      18                 :            :                                                                         \
      19                 :            :                 type v;                                                 \
      20                 :            :                 int r;                                                  \
      21                 :            :                                                                         \
      22                 :            :                 assert(p);                                              \
      23                 :            :                                                                         \
      24                 :            :                 r = sd_bus_message_read(message, bus_type, &v);         \
      25                 :            :                 if (r < 0)                                              \
      26                 :            :                         return r;                                       \
      27                 :            :                                                                         \
      28                 :            :                 if (!UNIT_WRITE_FLAGS_NOOP(flags)) {                    \
      29                 :            :                         *p = (cast_type) v;                             \
      30                 :            :                         unit_write_settingf(u, flags, name,             \
      31                 :            :                                             "%s=" fmt, name, v);        \
      32                 :            :                 }                                                       \
      33                 :            :                                                                         \
      34                 :            :                 return 1;                                               \
      35                 :            :         }
      36                 :            : 
      37                 :            : #define BUS_DEFINE_SET_TRANSIENT_IS_VALID(function, bus_type, type, cast_type, fmt, check) \
      38                 :            :         int bus_set_transient_##function(                               \
      39                 :            :                         Unit *u,                                        \
      40                 :            :                         const char *name,                               \
      41                 :            :                         cast_type *p,                                   \
      42                 :            :                         sd_bus_message *message,                        \
      43                 :            :                         UnitWriteFlags flags,                           \
      44                 :            :                         sd_bus_error *error) {                          \
      45                 :            :                                                                         \
      46                 :            :                 type v;                                                 \
      47                 :            :                 int r;                                                  \
      48                 :            :                                                                         \
      49                 :            :                 assert(p);                                              \
      50                 :            :                                                                         \
      51                 :            :                 r = sd_bus_message_read(message, bus_type, &v);         \
      52                 :            :                 if (r < 0)                                              \
      53                 :            :                         return r;                                       \
      54                 :            :                                                                         \
      55                 :            :                 if (!check(v))                                          \
      56                 :            :                         return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, \
      57                 :            :                                                  "Invalid %s setting: " fmt, name, v); \
      58                 :            :                                                                         \
      59                 :            :                 if (!UNIT_WRITE_FLAGS_NOOP(flags)) {                    \
      60                 :            :                         *p = (cast_type) v;                             \
      61                 :            :                         unit_write_settingf(u, flags, name,             \
      62                 :            :                                             "%s=" fmt, name, v);        \
      63                 :            :                 }                                                       \
      64                 :            :                                                                         \
      65                 :            :                 return 1;                                               \
      66                 :            :         }
      67                 :            : 
      68                 :            : #define BUS_DEFINE_SET_TRANSIENT_TO_STRING(function, bus_type, type, cast_type, fmt, to_string) \
      69                 :            :         int bus_set_transient_##function(                               \
      70                 :            :                         Unit *u,                                        \
      71                 :            :                         const char *name,                               \
      72                 :            :                         cast_type *p,                                   \
      73                 :            :                         sd_bus_message *message,                        \
      74                 :            :                         UnitWriteFlags flags,                           \
      75                 :            :                         sd_bus_error *error) {                          \
      76                 :            :                                                                         \
      77                 :            :                 const char *s;                                          \
      78                 :            :                 type v;                                                 \
      79                 :            :                 int r;                                                  \
      80                 :            :                                                                         \
      81                 :            :                 assert(p);                                              \
      82                 :            :                                                                         \
      83                 :            :                 r = sd_bus_message_read(message, bus_type, &v);         \
      84                 :            :                 if (r < 0)                                              \
      85                 :            :                         return r;                                       \
      86                 :            :                                                                         \
      87                 :            :                 s = to_string(v);                                       \
      88                 :            :                 if (!s)                                                 \
      89                 :            :                         return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, \
      90                 :            :                                                  "Invalid %s setting: " fmt, name, v); \
      91                 :            :                                                                         \
      92                 :            :                 if (!UNIT_WRITE_FLAGS_NOOP(flags)) {                    \
      93                 :            :                         *p = (cast_type) v;                             \
      94                 :            :                         unit_write_settingf(u, flags, name,             \
      95                 :            :                                             "%s=%s", name, s);          \
      96                 :            :                 }                                                       \
      97                 :            :                                                                         \
      98                 :            :                 return 1;                                               \
      99                 :            :         }
     100                 :            : 
     101                 :            : #define BUS_DEFINE_SET_TRANSIENT_TO_STRING_ALLOC(function, bus_type, type, cast_type, fmt, to_string) \
     102                 :            :         int bus_set_transient_##function(                               \
     103                 :            :                         Unit *u,                                        \
     104                 :            :                         const char *name,                               \
     105                 :            :                         cast_type *p,                                   \
     106                 :            :                         sd_bus_message *message,                        \
     107                 :            :                         UnitWriteFlags flags,                           \
     108                 :            :                         sd_bus_error *error) {                          \
     109                 :            :                                                                         \
     110                 :            :                 _cleanup_free_ char *s = NULL;                          \
     111                 :            :                 type v;                                                 \
     112                 :            :                 int r;                                                  \
     113                 :            :                                                                         \
     114                 :            :                 assert(p);                                              \
     115                 :            :                                                                         \
     116                 :            :                 r = sd_bus_message_read(message, bus_type, &v);         \
     117                 :            :                 if (r < 0)                                              \
     118                 :            :                         return r;                                       \
     119                 :            :                                                                         \
     120                 :            :                 r = to_string(v, &s);                                   \
     121                 :            :                 if (r == -EINVAL)                                       \
     122                 :            :                         return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, \
     123                 :            :                                                  "Invalid %s setting: " fmt, name, v); \
     124                 :            :                 if (r < 0)                                              \
     125                 :            :                         return r;                                       \
     126                 :            :                                                                         \
     127                 :            :                 if (!UNIT_WRITE_FLAGS_NOOP(flags)) {                    \
     128                 :            :                         *p = (cast_type) v;                             \
     129                 :            :                         unit_write_settingf(u, flags, name,             \
     130                 :            :                                             "%s=%s", name, s);          \
     131                 :            :                 }                                                       \
     132                 :            :                                                                         \
     133                 :            :                 return 1;                                               \
     134                 :            :         }
     135                 :            : 
     136                 :            : #define BUS_DEFINE_SET_TRANSIENT_PARSE(function, type, parse)           \
     137                 :            :         int bus_set_transient_##function(                               \
     138                 :            :                         Unit *u,                                        \
     139                 :            :                         const char *name,                               \
     140                 :            :                         type *p,                                        \
     141                 :            :                         sd_bus_message *message,                        \
     142                 :            :                         UnitWriteFlags flags,                           \
     143                 :            :                         sd_bus_error *error) {                          \
     144                 :            :                                                                         \
     145                 :            :                 const char *s;                                          \
     146                 :            :                 type v;                                                 \
     147                 :            :                 int r;                                                  \
     148                 :            :                                                                         \
     149                 :            :                 assert(p);                                              \
     150                 :            :                                                                         \
     151                 :            :                 r = sd_bus_message_read(message, "s", &s);              \
     152                 :            :                 if (r < 0)                                              \
     153                 :            :                         return r;                                       \
     154                 :            :                                                                         \
     155                 :            :                 v = parse(s);                                           \
     156                 :            :                 if (v < 0)                                              \
     157                 :            :                         return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, \
     158                 :            :                                                  "Invalid %s setting: %s", name, s); \
     159                 :            :                                                                         \
     160                 :            :                 if (!UNIT_WRITE_FLAGS_NOOP(flags)) {                    \
     161                 :            :                         *p = v;                                         \
     162                 :            :                         unit_write_settingf(u, flags, name,             \
     163                 :            :                                             "%s=%s", name, s);          \
     164                 :            :                 }                                                       \
     165                 :            :                                                                         \
     166                 :            :                 return 1;                                               \
     167                 :            :         }
     168                 :            : 
     169                 :            : #define BUS_DEFINE_SET_TRANSIENT_PARSE_PTR(function, type, parse)       \
     170                 :            :         int bus_set_transient_##function(                               \
     171                 :            :                         Unit *u,                                        \
     172                 :            :                         const char *name,                               \
     173                 :            :                         type *p,                                        \
     174                 :            :                         sd_bus_message *message,                        \
     175                 :            :                         UnitWriteFlags flags,                           \
     176                 :            :                         sd_bus_error *error) {                          \
     177                 :            :                                                                         \
     178                 :            :                 const char *s;                                          \
     179                 :            :                 type v;                                                 \
     180                 :            :                 int r;                                                  \
     181                 :            :                                                                         \
     182                 :            :                 assert(p);                                              \
     183                 :            :                                                                         \
     184                 :            :                 r = sd_bus_message_read(message, "s", &s);              \
     185                 :            :                 if (r < 0)                                              \
     186                 :            :                         return r;                                       \
     187                 :            :                                                                         \
     188                 :            :                 r = parse(s, &v);                                       \
     189                 :            :                 if (r < 0)                                              \
     190                 :            :                         return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, \
     191                 :            :                                                  "Invalid %s setting: %s", name, s); \
     192                 :            :                                                                         \
     193                 :            :                 if (!UNIT_WRITE_FLAGS_NOOP(flags)) {                    \
     194                 :            :                         *p = v;                                         \
     195                 :            :                         unit_write_settingf(u, flags, name,             \
     196                 :            :                                             "%s=%s", name, strempty(s)); \
     197                 :            :                 }                                                       \
     198                 :            :                                                                         \
     199                 :            :                 return 1;                                               \
     200                 :            :         }
     201                 :            : 
     202                 :            : #define BUS_DEFINE_SET_TRANSIENT_STRING_WITH_CHECK(function, check)     \
     203                 :            :         int bus_set_transient_##function(                               \
     204                 :            :                         Unit *u,                                        \
     205                 :            :                         const char *name,                               \
     206                 :            :                         char **p,                                       \
     207                 :            :                         sd_bus_message *message,                        \
     208                 :            :                         UnitWriteFlags flags,                           \
     209                 :            :                         sd_bus_error *error) {                          \
     210                 :            :                                                                         \
     211                 :            :                 const char *v;                                          \
     212                 :            :                 int r;                                                  \
     213                 :            :                                                                         \
     214                 :            :                 assert(p);                                              \
     215                 :            :                                                                         \
     216                 :            :                 r = sd_bus_message_read(message, "s", &v);              \
     217                 :            :                 if (r < 0)                                              \
     218                 :            :                         return r;                                       \
     219                 :            :                                                                         \
     220                 :            :                 if (!isempty(v) && !check(v))                           \
     221                 :            :                         return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, \
     222                 :            :                                                  "Invalid %s setting: %s", name, v); \
     223                 :            :                                                                         \
     224                 :            :                 if (!UNIT_WRITE_FLAGS_NOOP(flags)) {                    \
     225                 :            :                         r = free_and_strdup(p, empty_to_null(v));       \
     226                 :            :                         if (r < 0)                                      \
     227                 :            :                                 return r;                               \
     228                 :            :                                                                         \
     229                 :            :                         unit_write_settingf(u, flags|UNIT_ESCAPE_SPECIFIERS, name, \
     230                 :            :                                             "%s=%s", name, strempty(v)); \
     231                 :            :                 }                                                       \
     232                 :            :                                                                         \
     233                 :            :                 return 1;                                               \
     234                 :            :         }
     235                 :            : 
     236                 :            : int bus_set_transient_mode_t(Unit *u, const char *name, mode_t *p, sd_bus_message *message, UnitWriteFlags flags, sd_bus_error *error);
     237                 :            : int bus_set_transient_unsigned(Unit *u, const char *name, unsigned *p, sd_bus_message *message, UnitWriteFlags flags, sd_bus_error *error);
     238                 :            : int bus_set_transient_user(Unit *u, const char *name, char **p, sd_bus_message *message, UnitWriteFlags flags, sd_bus_error *error);
     239                 :            : int bus_set_transient_path(Unit *u, const char *name, char **p, sd_bus_message *message, UnitWriteFlags flags, sd_bus_error *error);
     240                 :            : int bus_set_transient_string(Unit *u, const char *name, char **p, sd_bus_message *message, UnitWriteFlags flags, sd_bus_error *error);
     241                 :            : int bus_set_transient_bool(Unit *u, const char *name, bool *p, sd_bus_message *message, UnitWriteFlags flags, sd_bus_error *error);
     242                 :            : int bus_set_transient_usec_internal(Unit *u, const char *name, usec_t *p, bool fix_0, sd_bus_message *message, UnitWriteFlags flags, sd_bus_error *error);
     243                 :          0 : static inline int bus_set_transient_usec(Unit *u, const char *name, usec_t *p, sd_bus_message *message, UnitWriteFlags flags, sd_bus_error *error) {
     244                 :          0 :         return bus_set_transient_usec_internal(u, name, p, false, message, flags, error);
     245                 :            : }
     246                 :          0 : static inline int bus_set_transient_usec_fix_0(Unit *u, const char *name, usec_t *p, sd_bus_message *message, UnitWriteFlags flags, sd_bus_error *error) {
     247                 :          0 :         return bus_set_transient_usec_internal(u, name, p, true, message, flags, error);
     248                 :            : }

Generated by: LCOV version 1.14