mirror of
https://github.com/libguestfs/libguestfs.git
synced 2026-03-21 22:53:37 +00:00
New API: write-append
Append content to the end of a file.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/* libguestfs - the guestfsd daemon
|
||||
* Copyright (C) 2009 Red Hat Inc.
|
||||
* Copyright (C) 2009-2011 Red Hat Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@@ -349,6 +349,34 @@ do_write (const char *path, const char *content, size_t size)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
do_write_append (const char *path, const char *content, size_t size)
|
||||
{
|
||||
int fd;
|
||||
|
||||
CHROOT_IN;
|
||||
fd = open (path, O_WRONLY | O_APPEND | O_CREAT | O_NOCTTY, 0666);
|
||||
CHROOT_OUT;
|
||||
|
||||
if (fd == -1) {
|
||||
reply_with_perror ("open: %s", path);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (xwrite (fd, content, size) == -1) {
|
||||
reply_with_perror ("write");
|
||||
close (fd);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (close (fd) == -1) {
|
||||
reply_with_perror ("close: %s", path);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
char *
|
||||
do_read_file (const char *path, size_t *size_r)
|
||||
{
|
||||
|
||||
@@ -5414,7 +5414,9 @@ to ensure the length of the file is exactly C<len> bytes.");
|
||||
"create a new file",
|
||||
"\
|
||||
This call creates a file called C<path>. The content of the
|
||||
file is the string C<content> (which can contain any 8 bit data).");
|
||||
file is the string C<content> (which can contain any 8 bit data).
|
||||
|
||||
See also C<guestfs_write_append>.");
|
||||
|
||||
("pwrite", (RInt "nbytes", [Pathname "path"; BufferIn "content"; Int64 "offset"], []), 247, [ProtocolLimitWarning],
|
||||
[InitScratchFS, Always, TestOutput (
|
||||
@@ -6066,6 +6068,20 @@ is resized to the maximum size.
|
||||
|
||||
See also L<btrfs(8)>.");
|
||||
|
||||
("write_append", (RErr, [Pathname "path"; BufferIn "content"], []), 290, [ProtocolLimitWarning],
|
||||
[InitScratchFS, Always, TestOutput (
|
||||
[["write"; "/write_append"; "line1\n"];
|
||||
["write_append"; "/write_append"; "line2\n"];
|
||||
["write_append"; "/write_append"; "line3a"];
|
||||
["write_append"; "/write_append"; "line3b\n"];
|
||||
["cat"; "/write_append"]], "line1\nline2\nline3aline3b\n")],
|
||||
"append content to end of file",
|
||||
"\
|
||||
This call appends C<content> to the end of file C<path>. If
|
||||
C<path> does not exist, then a new file is created.
|
||||
|
||||
See also C<guestfs_write>.");
|
||||
|
||||
]
|
||||
|
||||
let all_functions = non_daemon_functions @ daemon_functions
|
||||
|
||||
@@ -1 +1 @@
|
||||
289
|
||||
290
|
||||
|
||||
Reference in New Issue
Block a user