path-util: rework file_in_same_dir() on top of path_extract_directory()
Let's port one more over. Note that this changes behaviour of file_in_same_dir() in some regards. Specifically, a trailing slash of the input path will be treated differently: previously we'd operate below that dir then, instead of the parent. I think that makes little sense however, and I think the code using this function doesn't expect that either. Moroever, addresses some corner cases if the path is specified as "/" or ".", i.e. where e cannot extract a parent. These will now be treated as error, which I think is much cleaner.
This commit is contained in:
+7
-7
@@ -4681,13 +4681,13 @@ static int load_settings(void) {
|
||||
* actual image we shall boot. */
|
||||
|
||||
if (arg_image) {
|
||||
p = file_in_same_dir(arg_image, arg_settings_filename);
|
||||
if (!p)
|
||||
return log_oom();
|
||||
} else if (arg_directory && !path_equal(arg_directory, "/")) {
|
||||
p = file_in_same_dir(arg_directory, arg_settings_filename);
|
||||
if (!p)
|
||||
return log_oom();
|
||||
r = file_in_same_dir(arg_image, arg_settings_filename, &p);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to generate settings path from image path: %m");
|
||||
} else if (arg_directory) {
|
||||
r = file_in_same_dir(arg_directory, arg_settings_filename, &p);
|
||||
if (r < 0 && r != -EADDRNOTAVAIL) /* if directory is root fs, don't complain */
|
||||
return log_error_errno(r, "Failed to generate settings path from directory path: %m");
|
||||
}
|
||||
|
||||
if (p) {
|
||||
|
||||
Reference in New Issue
Block a user