summaryrefslogtreecommitdiffstats
path: root/fpart
diff options
context:
space:
mode:
authorStewart Smith <stewart@linux.vnet.ibm.com>2017-11-30 16:59:07 +1100
committerStewart Smith <stewart@linux.vnet.ibm.com>2017-11-30 16:59:07 +1100
commit0d97f635950d6746038ab8c14429be40501369a0 (patch)
treefd92f142a1bfb0b57976fd1a4c2eb50eeefbd918 /fpart
parenta669f2e0fe2ceb56294cc929131b8361734d4164 (diff)
parentfd98239a8beb83a3b3f61513860edb69123828d8 (diff)
downloadffs-0d97f635950d6746038ab8c14429be40501369a0.tar.gz
ffs-0d97f635950d6746038ab8c14429be40501369a0.zip
Merge branch 'bugfixes' of https://github.com/stewart-ibm/ffs
Diffstat (limited to 'fpart')
-rw-r--r--fpart/src/command.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/fpart/src/command.c b/fpart/src/command.c
index 6b4e56e..81cbc70 100644
--- a/fpart/src/command.c
+++ b/fpart/src/command.c
@@ -172,14 +172,15 @@ int create_regular_file(const char *path, size_t size, char pad)
{
assert(path != NULL);
- RAII(FILE*, file, fopen(path, "w"), fclose);
- if (file == NULL) {
+ int fd = open(path, O_CREAT|O_TRUNC|O_WRONLY, S_IRUSR|S_IWUSR);
+ if (fd == -1) {
ERRNO(errno);
return -1;
}
- if (ftruncate(fileno(file), size) < 0) {
+ if (ftruncate(fd, size) < 0) {
ERRNO(errno);
+ close(fd);
return -1;
}
@@ -188,15 +189,17 @@ int create_regular_file(const char *path, size_t size, char pad)
memset(buf, pad, page_size);
while (0 < size) {
- ssize_t rc = fwrite(buf, 1, min(sizeof(buf), size), file);
- if (rc <= 0 && ferror(file)) {
+ ssize_t rc = write(fd, buf, min(sizeof(buf), size));
+ if (rc <= 0) {
ERRNO(errno);
+ close(fd);
return -1;
}
size -= rc;
}
+ close(fd);
return 0;
}
OpenPOWER on IntegriCloud