X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fdbus1-generator%2Fdbus1-generator.c;h=10a33efee5f0fe013d575ec61206dcd9e8e5e036;hb=b6b1849830f5e4a6065c3b0c993668e500c954d3;hp=ba2953014d73aa790ee687ff6ebd65e46e44eaa8;hpb=e9f3d2d508bfd9fb5b54e82994bda365a71eb864;p=elogind.git diff --git a/src/dbus1-generator/dbus1-generator.c b/src/dbus1-generator/dbus1-generator.c index ba2953014..10a33efee 100644 --- a/src/dbus1-generator/dbus1-generator.c +++ b/src/dbus1-generator/dbus1-generator.c @@ -40,6 +40,7 @@ static int create_dbus_files( _cleanup_free_ char *b = NULL, *s = NULL, *lnk = NULL; _cleanup_fclose_ FILE *f = NULL; + int r; assert(path); assert(name); @@ -57,10 +58,8 @@ static int create_dbus_files( return log_oom(); f = fopen(a, "wxe"); - if (!f) { - log_error("Failed to create %s: %m", a); - return -errno; - } + if (!f) + return log_error_errno(errno, "Failed to create %s: %m", a); fprintf(f, "# Automatically generated by systemd-dbus1-generator\n\n" @@ -85,7 +84,7 @@ static int create_dbus_files( fprintf(f, "Environment=DBUS_STARTER_BUS_TYPE=%s\n", type); if (streq(type, "system")) - fprintf(f, "Environment=DBUS_STARTER_ADDRESS=" DEFAULT_SYSTEM_BUS_PATH "\n"); + fprintf(f, "Environment=DBUS_STARTER_ADDRESS=" DEFAULT_SYSTEM_BUS_ADDRESS "\n"); else if (streq(type, "session")) { char *run; @@ -95,16 +94,17 @@ static int create_dbus_files( return -EINVAL; } - fprintf(f, "Environment=DBUS_STARTER_ADDRESS="KERNEL_USER_BUS_FMT ";" UNIX_USER_BUS_FMT "\n", + fprintf(f, "Environment=DBUS_STARTER_ADDRESS="KERNEL_USER_BUS_ADDRESS_FMT ";" UNIX_USER_BUS_ADDRESS_FMT "\n", getuid(), run); } } - fflush(f); - if (ferror(f)) { - log_error("Failed to write %s: %m", a); - return -errno; - } + r = fflush_and_check(f); + if (r < 0) + return log_error_errno(r, "Failed to write %s: %m", a); + + fclose(f); + f = NULL; service = s; } @@ -114,10 +114,8 @@ static int create_dbus_files( return log_oom(); f = fopen(b, "wxe"); - if (!f) { - log_error("Failed to create %s: %m", b); - return -errno; - } + if (!f) + return log_error_errno(errno, "Failed to create %s: %m", b); fprintf(f, "# Automatically generated by systemd-dbus1-generator\n\n" @@ -134,21 +132,17 @@ static int create_dbus_files( name, service); - fflush(f); - if (ferror(f)) { - log_error("Failed to write %s: %m", b); - return -errno; - } + r = fflush_and_check(f); + if (r < 0) + return log_error_errno(r, "Failed to write %s: %m", b); lnk = strjoin(arg_dest_late, "/" SPECIAL_BUSNAMES_TARGET ".wants/", name, ".busname", NULL); if (!lnk) return log_oom(); mkdir_parents_label(lnk, 0755); - if (symlink(b, lnk)) { - log_error("Failed to create symlink %s: %m", lnk); - return -errno; - } + if (symlink(b, lnk)) + return log_error_errno(errno, "Failed to create symlink %s: %m", lnk); return 0; } @@ -163,27 +157,17 @@ static int add_dbus(const char *path, const char *fname, const char *type) { { "D-BUS Service", "SystemdService", config_parse_string, 0, &service }, }; - _cleanup_fclose_ FILE *f = NULL; - _cleanup_free_ char *p = NULL; + char *p; int r; assert(path); assert(fname); - p = strjoin(path, "/", fname, NULL); - if (!p) - return log_oom(); - - f = fopen(p, "re"); - if (!f) { - if (errno == -ENOENT) - return 0; - - log_error("Failed to read %s: %m", p); - return -errno; - } - - r = config_parse(NULL, p, f, "D-BUS Service\0", config_item_table_lookup, table, true, false, NULL); + p = strappenda(path, "/", fname); + r = config_parse(NULL, p, NULL, + "D-BUS Service\0", + config_item_table_lookup, table, + true, false, true, NULL); if (r < 0) return r; @@ -239,7 +223,7 @@ static int parse_dbus_fragments(const char *path, const char *type) { if (errno == -ENOENT) return 0; - log_error("Failed to enumerate D-Bus activated services: %m"); + log_error_errno(errno, "Failed to enumerate D-Bus activated services: %m"); return -errno; } @@ -258,7 +242,7 @@ static int parse_dbus_fragments(const char *path, const char *type) { return r; fail: - log_error("Failed to read D-Bus services directory: %m"); + log_error_errno(errno, "Failed to read D-Bus services directory: %m"); return -errno; } @@ -269,10 +253,8 @@ static int link_busnames_target(const char *units) { t = strappenda(arg_dest, "/" SPECIAL_BASIC_TARGET ".wants/" SPECIAL_BUSNAMES_TARGET); mkdir_parents_label(t, 0755); - if (symlink(f, t) < 0) { - log_error("Failed to create symlink %s: %m", t); - return -errno; - } + if (symlink(f, t) < 0) + return log_error_errno(errno, "Failed to create symlink %s: %m", t); return 0; } @@ -283,24 +265,18 @@ static int link_compatibility(const char *units) { f = strappenda(units, "/systemd-bus-proxyd.socket"); t = strappenda(arg_dest, "/" SPECIAL_DBUS_SOCKET); mkdir_parents_label(t, 0755); - if (symlink(f, t) < 0) { - log_error("Failed to create symlink %s: %m", t); - return -errno; - } + if (symlink(f, t) < 0) + return log_error_errno(errno, "Failed to create symlink %s: %m", t); f = strappenda(units, "/systemd-bus-proxyd.socket"); t = strappenda(arg_dest, "/" SPECIAL_SOCKETS_TARGET ".wants/systemd-bus-proxyd.socket"); mkdir_parents_label(t, 0755); - if (symlink(f, t) < 0) { - log_error("Failed to create symlink %s: %m", t); - return -errno; - } + if (symlink(f, t) < 0) + return log_error_errno(errno, "Failed to create symlink %s: %m", t); t = strappenda(arg_dest, "/" SPECIAL_DBUS_SERVICE); - if (symlink("/dev/null", t) < 0) { - log_error("Failed to mask %s: %m", t); - return -errno; - } + if (symlink("/dev/null", t) < 0) + return log_error_errno(errno, "Failed to mask %s: %m", t); return 0; } @@ -325,7 +301,7 @@ int main(int argc, char *argv[]) { umask(0022); - if (access("/dev/kdbus/control", F_OK) < 0) + if (access("/sys/fs/kdbus/control", F_OK) < 0) return 0; r = cg_pid_get_owner_uid(0, NULL); @@ -337,10 +313,8 @@ int main(int argc, char *argv[]) { path = "/usr/share/dbus-1/system-services"; type = "system"; units = SYSTEM_DATA_UNIT_PATH; - } else { - log_error("Failed to determine whether we are running as user or system instance: %s", strerror(-r)); - return r; - } + } else + return log_error_errno(r, "Failed to determine whether we are running as user or system instance: %m"); r = parse_dbus_fragments(path, type);