|
From: Jiri J. <jja...@re...> - 2014-09-23 09:45:41
|
From: Ondrej Moris <om...@re...>
Signed-off-by: Ondrej Moris <om...@re...>
---
audit-test/utils/bin/do_utimensat.c | 30 +++++++++++++++++++++++++++---
audit-test/utils/bin/do_utimes.c | 19 +++++++++++++++----
2 files changed, 42 insertions(+), 7 deletions(-)
diff --git a/audit-test/utils/bin/do_utimensat.c b/audit-test/utils/bin/do_utimensat.c
index 660b926..bf1fe0b 100644
--- a/audit-test/utils/bin/do_utimensat.c
+++ b/audit-test/utils/bin/do_utimensat.c
@@ -15,6 +15,7 @@
#include "includes.h"
#include <sys/time.h>
+#include <ctype.h>
int main(int argc, char **argv)
{
@@ -22,9 +23,9 @@ int main(int argc, char **argv)
int exitval, result = 0;
int dirfd;
- if (argc != 3) {
- fprintf(stderr, "Usage:\n%s <dir> <path>\n", argv[0]);
- return TEST_ERROR;
+ if (argc != 3 && argc != 5) {
+ fprintf(stderr, "Usage:\n%s <dir> <path> [atime] [mtime]\n", argv[0]);
+ return TEST_ERROR;
}
dirfd = open(argv[1], O_DIRECTORY);
@@ -38,6 +39,29 @@ int main(int argc, char **argv)
times[1].tv_sec = 0;
times[1].tv_nsec = UTIME_NOW;
+ if (argc == 5) {
+ if (!strcmp(argv[3], "UTIME_NOW")) {
+ times[0].tv_sec = 0;
+ times[0].tv_nsec = UTIME_NOW;
+ } else if (!strcmp(argv[3], "UTIME_OMIT")) {
+ times[0].tv_sec = 0;
+ times[0].tv_nsec = UTIME_OMIT;
+ } else if (isdigit(argv[3][0])) {
+ times[0].tv_sec = atol(argv[3]);
+ times[0].tv_nsec = 0;
+ }
+ if (!strcmp(argv[4], "UTIME_NOW")) {
+ times[1].tv_sec = 0;
+ times[1].tv_nsec = UTIME_NOW;
+ } else if (!strcmp(argv[4], "UTIME_OMIT")) {
+ times[1].tv_sec = 0;
+ times[1].tv_nsec = UTIME_OMIT;
+ } else if (isdigit(argv[4][0])) {
+ times[1].tv_sec = atol(argv[4]);
+ times[1].tv_nsec = 0;
+ }
+ }
+
errno = 0;
exitval = utimensat(dirfd, argv[2], times, 0);
result = exitval < 0;
diff --git a/audit-test/utils/bin/do_utimes.c b/audit-test/utils/bin/do_utimes.c
index 9f12d68..6ca2062 100644
--- a/audit-test/utils/bin/do_utimes.c
+++ b/audit-test/utils/bin/do_utimes.c
@@ -15,18 +15,29 @@
#include "includes.h"
#include <sys/time.h>
+#include <ctype.h>
int main(int argc, char **argv)
{
int exitval, result;
+ struct timeval times[2];
- if (argc != 2) {
- fprintf(stderr, "Usage:\n%s <path>\n", argv[0]);
- return TEST_ERROR;
+ if (argc != 2 && argc != 4) {
+ fprintf(stderr, "Usage:\n%s <path> [actime_sec] [modtime_sec]\n", argv[0]);
+ return TEST_ERROR;
}
errno = 0;
- exitval = utimes(argv[1], NULL);
+ if (argc == 4 && isdigit(argv[2][0]) && isdigit(argv[3][0])) {
+ times[0].tv_sec = atol(argv[3]);
+ times[0].tv_usec = 0;
+ times[1].tv_sec = atol(argv[3]);
+ times[1].tv_usec = 0;
+ exitval = utimes(argv[1], times);
+ } else {
+ exitval = utimes(argv[1], NULL);
+ }
+
result = exitval < 0;
printf("%d %d %d\n", result, result ? errno : exitval, getpid());
--
1.8.3.1
|