mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-01 04:03:48 +00:00
cgfsng: copy_parent_file()
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
parent
59ac3b88d8
commit
b095a8ebbb
@ -648,13 +648,14 @@ on_error:
|
|||||||
/* Copy contents of parent(@path)/@file to @path/@file */
|
/* Copy contents of parent(@path)/@file to @path/@file */
|
||||||
static bool copy_parent_file(char *path, char *file)
|
static bool copy_parent_file(char *path, char *file)
|
||||||
{
|
{
|
||||||
char *lastslash, *value = NULL, *fpath, oldv;
|
|
||||||
int len = 0;
|
|
||||||
int ret;
|
int ret;
|
||||||
|
char *fpath, *lastslash, oldv;
|
||||||
|
int len = 0;
|
||||||
|
char *value = NULL;
|
||||||
|
|
||||||
lastslash = strrchr(path, '/');
|
lastslash = strrchr(path, '/');
|
||||||
if (!lastslash) { /* bug... this shouldn't be possible */
|
if (!lastslash) {
|
||||||
ERROR("cgfsng:copy_parent_file: bad path %s", path);
|
ERROR("Failed to detect \"/\" in \"%s\"", path);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
oldv = *lastslash;
|
oldv = *lastslash;
|
||||||
@ -662,22 +663,25 @@ static bool copy_parent_file(char *path, char *file)
|
|||||||
fpath = must_make_path(path, file, NULL);
|
fpath = must_make_path(path, file, NULL);
|
||||||
len = lxc_read_from_file(fpath, NULL, 0);
|
len = lxc_read_from_file(fpath, NULL, 0);
|
||||||
if (len <= 0)
|
if (len <= 0)
|
||||||
goto bad;
|
goto on_error;
|
||||||
|
|
||||||
value = must_alloc(len + 1);
|
value = must_alloc(len + 1);
|
||||||
if (lxc_read_from_file(fpath, value, len) != len)
|
ret = lxc_read_from_file(fpath, value, len);
|
||||||
goto bad;
|
if (ret != len)
|
||||||
|
goto on_error;
|
||||||
free(fpath);
|
free(fpath);
|
||||||
|
|
||||||
*lastslash = oldv;
|
*lastslash = oldv;
|
||||||
fpath = must_make_path(path, file, NULL);
|
fpath = must_make_path(path, file, NULL);
|
||||||
ret = lxc_write_to_file(fpath, value, len, false);
|
ret = lxc_write_to_file(fpath, value, len, false);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
SYSERROR("Unable to write %s to %s", value, fpath);
|
SYSERROR("Failed to write \"%s\" to file \"%s\"", value, fpath);
|
||||||
free(fpath);
|
free(fpath);
|
||||||
free(value);
|
free(value);
|
||||||
return ret >= 0;
|
return ret >= 0;
|
||||||
|
|
||||||
bad:
|
on_error:
|
||||||
SYSERROR("Error reading '%s'", fpath);
|
SYSERROR("Failed to read file \"%s\"", fpath);
|
||||||
free(fpath);
|
free(fpath);
|
||||||
free(value);
|
free(value);
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
Reference in New Issue
Block a user