chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bus: fix hello ioctl buffer size calculation
[elogind.git]
/
src
/
shared
/
install.c
diff --git
a/src/shared/install.c
b/src/shared/install.c
index cfd4a5af8acad9f038ed4b2b4473cd74f93ee0d7..5001ad43be016061fe6b20c6d209c9bd1cecb725 100644
(file)
--- a/
src/shared/install.c
+++ b/
src/shared/install.c
@@
-38,6
+38,7
@@
#include "conf-files.h"
#include "specifier.h"
#include "install-printf.h"
#include "conf-files.h"
#include "specifier.h"
#include "install-printf.h"
+#include "special.h"
typedef struct {
Hashmap *will_install;
typedef struct {
Hashmap *will_install;
@@
-211,11
+212,10
@@
static int remove_marked_symlinks_fd(
for (;;) {
struct dirent *de;
for (;;) {
struct dirent *de;
- union dirent_storage buf;
- int k;
- k = readdir_r(d, &buf.de, &de);
- if (k != 0) {
+ errno = 0;
+ de = readdir(d);
+ if (!de && errno != 0) {
r = -errno;
break;
}
r = -errno;
break;
}
@@
-275,10
+275,10
@@
static int remove_marked_symlinks_fd(
found =
set_get(remove_symlinks_to, dest) ||
found =
set_get(remove_symlinks_to, dest) ||
- set_get(remove_symlinks_to,
path_get_file_
name(dest));
+ set_get(remove_symlinks_to,
base
name(dest));
if (unit_name_is_instance(p))
if (unit_name_is_instance(p))
- found = found && strv_contains(files,
path_get_file_
name(p));
+ found = found && strv_contains(files,
base
name(p));
if (found) {
if (found) {
@@
-372,12
+372,11
@@
static int find_symlinks_fd(
}
for (;;) {
}
for (;;) {
- int k;
struct dirent *de;
struct dirent *de;
- union dirent_storage buf;
- k = readdir_r(d, &buf.de, &de);
- if (k != 0)
+ errno = 0;
+ de = readdir(d);
+ if (!de && errno != 0)
return -errno;
if (!de)
return -errno;
if (!de)
@@
-450,7
+449,7
@@
static int find_symlinks_fd(
if (path_is_absolute(name))
found_dest = path_equal(dest, name);
else
if (path_is_absolute(name))
found_dest = path_equal(dest, name);
else
- found_dest = streq(
path_get_file_
name(dest), name);
+ found_dest = streq(
base
name(dest), name);
if (found_path && found_dest) {
_cleanup_free_ char *t = NULL;
if (found_path && found_dest) {
_cleanup_free_ char *t = NULL;
@@
-717,7
+716,7
@@
int unit_file_link(
char *fn;
struct stat st;
char *fn;
struct stat st;
- fn =
path_get_file_
name(*i);
+ fn =
base
name(*i);
if (!path_is_absolute(*i) ||
!unit_name_is_valid(fn, true)) {
if (!path_is_absolute(*i) ||
!unit_name_is_valid(fn, true)) {
@@
-860,7
+859,7
@@
static int install_info_add(
assert(name || path);
if (!name)
assert(name || path);
if (!name)
- name =
path_get_file_
name(path);
+ name =
base
name(path);
if (!unit_name_is_valid(name, true))
return -EINVAL;
if (!unit_name_is_valid(name, true))
return -EINVAL;
@@
-921,6
+920,7
@@
static int config_parse_also(const char *unit,
const char *filename,
unsigned line,
const char *section,
const char *filename,
unsigned line,
const char *section,
+ unsigned section_line,
const char *lvalue,
int ltype,
const char *rvalue,
const char *lvalue,
int ltype,
const char *rvalue,
@@
-956,6
+956,7
@@
static int config_parse_user(const char *unit,
const char *filename,
unsigned line,
const char *section,
const char *filename,
unsigned line,
const char *section,
+ unsigned section_line,
const char *lvalue,
int ltype,
const char *rvalue,
const char *lvalue,
int ltype,
const char *rvalue,
@@
-1426,7
+1427,7
@@
static int install_context_mark_for_removal(
char *unit_file;
if (i->path) {
char *unit_file;
if (i->path) {
- unit_file =
path_get_file_
name(i->path);
+ unit_file =
base
name(i->path);
if (unit_name_is_instance(unit_file))
/* unit file named as instance exists, thus all symlinks
if (unit_name_is_instance(unit_file))
/* unit file named as instance exists, thus all symlinks
@@
-1560,7
+1561,8
@@
int unit_file_reenable(
int unit_file_set_default(
UnitFileScope scope,
const char *root_dir,
int unit_file_set_default(
UnitFileScope scope,
const char *root_dir,
- char *file,
+ const char *file,
+ bool force,
UnitFileChange **changes,
unsigned *n_changes) {
UnitFileChange **changes,
unsigned *n_changes) {
@@
-1573,6
+1575,7
@@
int unit_file_set_default(
assert(scope >= 0);
assert(scope < _UNIT_FILE_SCOPE_MAX);
assert(scope >= 0);
assert(scope < _UNIT_FILE_SCOPE_MAX);
+ assert(file);
if (unit_name_to_type(file) != UNIT_TARGET)
return -EINVAL;
if (unit_name_to_type(file) != UNIT_TARGET)
return -EINVAL;
@@
-1589,14
+1592,15
@@
int unit_file_set_default(
if (r < 0)
return r;
if (r < 0)
return r;
-
i = (InstallInfo*)hashmap_first(c.will_install
);
+
assert_se(i = hashmap_first(c.will_install)
);
r = unit_file_search(&c, i, &paths, root_dir, false);
if (r < 0)
return r;
r = unit_file_search(&c, i, &paths, root_dir, false);
if (r < 0)
return r;
- path = strappenda(config_path, "/default.target");
- r = create_symlink(i->path, path, true, changes, n_changes);
+ path = strappenda(config_path, "/" SPECIAL_DEFAULT_TARGET);
+
+ r = create_symlink(i->path, path, force, changes, n_changes);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-1612,6
+1616,10
@@
int unit_file_get_default(
char **p;
int r;
char **p;
int r;
+ assert(scope >= 0);
+ assert(scope < _UNIT_FILE_SCOPE_MAX);
+ assert(name);
+
r = lookup_paths_init_from_scope(&paths, scope);
if (r < 0)
return r;
r = lookup_paths_init_from_scope(&paths, scope);
if (r < 0)
return r;
@@
-1621,9
+1629,9
@@
int unit_file_get_default(
char *n;
if (isempty(root_dir))
char *n;
if (isempty(root_dir))
- path = strappend(*p, "/
default.target"
);
+ path = strappend(*p, "/
" SPECIAL_DEFAULT_TARGET
);
else
else
- path = strjoin(root_dir, "/", *p, "/
default.target"
, NULL);
+ path = strjoin(root_dir, "/", *p, "/
" SPECIAL_DEFAULT_TARGET
, NULL);
if (!path)
return -ENOMEM;
if (!path)
return -ENOMEM;
@@
-1631,10
+1639,14
@@
int unit_file_get_default(
r = readlink_malloc(path, &tmp);
if (r == -ENOENT)
continue;
r = readlink_malloc(path, &tmp);
if (r == -ENOENT)
continue;
- if (r < 0)
+ else if (r == -EINVAL)
+ /* not a symlink */
+ n = strdup(SPECIAL_DEFAULT_TARGET);
+ else if (r < 0)
return r;
return r;
+ else
+ n = strdup(basename(tmp));
- n = strdup(path_get_file_name(tmp));
if (!n)
return -ENOMEM;
if (!n)
return -ENOMEM;
@@
-1924,12
+1936,12
@@
int unit_file_get_list(
for (;;) {
struct dirent *de;
for (;;) {
struct dirent *de;
- union dirent_storage buffer;
_cleanup_unitfilelist_free_ UnitFileList *f = NULL;
_cleanup_unitfilelist_free_ UnitFileList *f = NULL;
- r = readdir_r(d, &buffer.de, &de);
- if (r != 0)
- return -r;
+ errno = 0;
+ de = readdir(d);
+ if (!de && errno != 0)
+ return -errno;
if (!de)
break;
if (!de)
break;
@@
-1993,7
+2005,7
@@
int unit_file_get_list(
f->state = UNIT_FILE_STATIC;
found:
f->state = UNIT_FILE_STATIC;
found:
- r = hashmap_put(h,
path_get_file_
name(f->path), f);
+ r = hashmap_put(h,
base
name(f->path), f);
if (r < 0)
return r;
f = NULL; /* prevent cleanup */
if (r < 0)
return r;
f = NULL; /* prevent cleanup */