LCOV - code coverage report
Current view: top level - core - dbus-util.h (source / functions) Hit Total Coverage
Test: main_coverage.info Lines: 0 4 0.0 %
Date: 2019-08-22 15:41:25 Functions: 0 2 0.0 %

          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