From: Stanislav K. <sta...@or...> - 2013-08-12 12:50:05
|
Signed-off-by: Stanislav Kholmanskikh <sta...@or...> --- include/test.h | 10 +++++++ lib/tst_fill_file.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 0 deletions(-) create mode 100644 lib/tst_fill_file.c diff --git a/include/test.h b/include/test.h index 991269e..d9eba31 100644 --- a/include/test.h +++ b/include/test.h @@ -249,6 +249,16 @@ void tst_run_cmd(void (cleanup_fn)(void), void tst_mkfs(void (cleanup_fn)(void), const char *dev, const char *fs_type, const char *fs_opts); +/* lib/tst_fill_file.c + * + * Creates/ovewrites a file with specified pattern + * @path: path to file + * @pattern: pattern + * @bs: block size + * @bcount: blocks amount + */ +int tst_fill_file(const char *path, char pattern, size_t bs, size_t bcount); + #ifdef TST_USE_COMPAT16_SYSCALL #define TCID_BIT_SUFFIX "_16" #elif TST_USE_NEWER64_SYSCALL diff --git a/lib/tst_fill_file.c b/lib/tst_fill_file.c new file mode 100644 index 0000000..6613330 --- /dev/null +++ b/lib/tst_fill_file.c @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2013 Oracle and/or its affiliates. All Rights Reserved. + * + * 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 the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it would be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Author: Stanislav Kholmanskikh <sta...@or...> + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <fcntl.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> + +#include "test.h" + +int tst_fill_file(const char *path, char pattern, size_t bs, size_t bcount) +{ + int fd, counter; + char *buf; + + fd = open(path, O_CREAT|O_WRONLY|O_TRUNC, S_IRUSR|S_IWUSR); + if (fd < 0) + return -1; + + /* Filling a memory buffer with provided pattern */ + buf = malloc(bs); + if (buf == NULL) { + close(fd); + + return -1; + } + + for (counter = 0; counter < bs; counter++) + buf[counter] = pattern; + + /* Filling the file */ + for (counter = 0; counter < bcount; counter++) + if (write(fd, buf, bs) != bs) { + free(buf); + close(fd); + unlink(path); + + return -1; + } + + + free(buf); + if (close(fd) < 0) + return -1; + + return 0; +} -- 1.7.1 |