mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-15 21:26:57 +00:00
lxc-copy: do not use mkostemp and dprintf
Fixes android builds: DSBINDIR=\"/data/lxc/lxc/sbin\" -I/build/libcap/libcap/include/ -Wall -Werror -MT lxc_copy.o -MD -MP -MF $depbase.Tpo -c -o lxc_copy.o lxc_copy.c &&\ mv -f $depbase.Tpo $depbase.Po lxc_copy.c: In function 'mount_tmpfs': lxc_copy.c:834:2: error: implicit declaration of function 'mkostemp' [-Werror=implicit-function-declaration] fd = mkostemp(premount, O_CLOEXEC); ^ lxc_copy.c:841:2: error: implicit declaration of function 'dprintf' [-Werror=implicit-function-declaration] ret = dprintf(fd, "#! /bin/sh\n" ^ Signed-off-by: Christian Brauner <cbrauner@suse.de>
This commit is contained in:
parent
897dcac41f
commit
a8e279fd53
@ -805,6 +805,7 @@ static char *mount_tmpfs(const char *oldname, const char *newname,
|
|||||||
int ret, fd;
|
int ret, fd;
|
||||||
size_t len;
|
size_t len;
|
||||||
char *premount = NULL;
|
char *premount = NULL;
|
||||||
|
FILE *fp;
|
||||||
|
|
||||||
if (arg->tmpfs && arg->keepdata) {
|
if (arg->tmpfs && arg->keepdata) {
|
||||||
fprintf(stderr, "%s\n", "A container can only be placed on a "
|
fprintf(stderr, "%s\n", "A container can only be placed on a "
|
||||||
@ -831,21 +832,31 @@ static char *mount_tmpfs(const char *oldname, const char *newname,
|
|||||||
if (ret < 0 || (size_t)ret >= len)
|
if (ret < 0 || (size_t)ret >= len)
|
||||||
goto err_free;
|
goto err_free;
|
||||||
|
|
||||||
fd = mkostemp(premount, O_CLOEXEC);
|
fd = mkstemp(premount);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
goto err_free;
|
goto err_free;
|
||||||
|
|
||||||
|
if (fcntl(fd, F_SETFD, FD_CLOEXEC)) {
|
||||||
|
SYSERROR("Failed to set close-on-exec on file descriptor.");
|
||||||
|
goto err_close;
|
||||||
|
}
|
||||||
|
|
||||||
if (chmod(premount, 0755) < 0)
|
if (chmod(premount, 0755) < 0)
|
||||||
goto err_close;
|
goto err_close;
|
||||||
|
|
||||||
ret = dprintf(fd, "#! /bin/sh\n"
|
fp = fdopen(fd, "r+");
|
||||||
|
if (!fp)
|
||||||
|
goto err_close;
|
||||||
|
fd = -1;
|
||||||
|
|
||||||
|
ret = fprintf(fp, "#! /bin/sh\n"
|
||||||
"mount -n -t tmpfs -o mode=0755 none %s/%s\n",
|
"mount -n -t tmpfs -o mode=0755 none %s/%s\n",
|
||||||
path, newname);
|
path, newname);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto err_close;
|
goto err_close;
|
||||||
|
|
||||||
if (!arg->keepname) {
|
if (!arg->keepname) {
|
||||||
ret = dprintf(fd, "mkdir -p %s/%s/delta0/etc\n"
|
ret = fprintf(fp, "mkdir -p %s/%s/delta0/etc\n"
|
||||||
"echo %s > %s/%s/delta0/etc/hostname\n",
|
"echo %s > %s/%s/delta0/etc/hostname\n",
|
||||||
path, newname, newname, path, newname);
|
path, newname, newname, path, newname);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
@ -856,7 +867,10 @@ static char *mount_tmpfs(const char *oldname, const char *newname,
|
|||||||
return premount;
|
return premount;
|
||||||
|
|
||||||
err_close:
|
err_close:
|
||||||
close(fd);
|
if (fd > 0)
|
||||||
|
close(fd);
|
||||||
|
else
|
||||||
|
fclose(fp);
|
||||||
err_free:
|
err_free:
|
||||||
free(premount);
|
free(premount);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
Loading…
Reference in New Issue
Block a user