Signed-off-by: Stanislav Kholmanskikh <[email protected]>
---
 include/test.h      |   10 +++++++
 lib/tst_fill_file.c |   71 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 81 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..1827322
--- /dev/null
+++ b/lib/tst_fill_file.c
@@ -0,0 +1,71 @@
+/*
+ * 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 <[email protected]>
+ *
+ */
+
+#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) {
+               unlink(path);
+
+               return -1;
+       }
+
+       return 0;
+}
-- 
1.7.1


------------------------------------------------------------------------------
Get 100% visibility into Java/.NET code with AppDynamics Lite!
It's a free troubleshooting tool designed for production.
Get down to code-level detail for bottlenecks, with <2% overhead. 
Download for free and get started troubleshooting in minutes. 
http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to