From: Sandeep Patil <sspatil@google.com>
To: ltp@lists.linux.it
Subject: [LTP] [PATCH v2 2/2] android: getcwd02: use temp dir from $TMPDIR if present
Date: Mon, 28 Aug 2017 09:40:43 -0700 [thread overview]
Message-ID: <20170828164043.93407-3-sspatil@google.com> (raw)
In-Reply-To: <20170828164043.93407-1-sspatil@google.com>
getcwd02 test are broken on an Android system as the device doesn't have
"/tmp", so make sure the test checks if a directory exists before using
it as a temporary directory. Look for an altternative path in 'TMPDIR'
environment variable and fallback to using that as the temporary
directory for the test if /tmp is not found.
Signed-off-by: Sandeep Patil <sspatil@google.com>
---
testcases/kernel/syscalls/getcwd/getcwd02.c | 43 +++++++++++++++++++++++++++--
1 file changed, 40 insertions(+), 3 deletions(-)
diff --git a/testcases/kernel/syscalls/getcwd/getcwd02.c b/testcases/kernel/syscalls/getcwd/getcwd02.c
index 384157d42..cff2124b7 100644
--- a/testcases/kernel/syscalls/getcwd/getcwd02.c
+++ b/testcases/kernel/syscalls/getcwd/getcwd02.c
@@ -27,9 +27,12 @@
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
#include "tst_test.h"
-#define TMPDIR "/tmp"
+#define GETCWD_TMPDIR_PATH "/tmp"
static char exp_buf[PATH_MAX];
static char buffer[PATH_MAX];
@@ -43,6 +46,38 @@ static struct t_case {
{NULL, PATH_MAX}
};
+static int dir_exists(const char *dirpath)
+{
+ struct stat sb;
+
+ if (!stat(dirpath, &sb) && S_ISDIR(sb.st_mode))
+ return 1;
+
+ return 0;
+}
+
+static const char *get_tmpdir_path(void)
+{
+ char *tmpdir = GETCWD_TMPDIR_PATH;
+
+ if (dir_exists(tmpdir))
+ goto done;
+
+ /* fallback to $TMPDIR */
+ tmpdir = getenv("TMPDIR");
+ if (!tmpdir)
+ tst_brk(TBROK | TERRNO, "Failed to get $TMPDIR");
+
+ if (tmpdir[0] != '/')
+ tst_brk(TBROK, "$TMPDIR must be an absolute path");
+
+ if (!dir_exists(tmpdir))
+ tst_brk(TBROK | TERRNO, "TMPDIR '%s' doesn't exist", tmpdir);
+
+done:
+ return tmpdir;
+}
+
static void verify_getcwd(unsigned int n)
{
struct t_case *tc = &tcases[n];
@@ -71,9 +106,11 @@ end:
static void setup(void)
{
- SAFE_CHDIR(TMPDIR);
+ const char *tmpdir = get_tmpdir_path();
+
+ SAFE_CHDIR(tmpdir);
- if (!realpath(TMPDIR, exp_buf))
+ if (!realpath(tmpdir, exp_buf))
tst_brk(TBROK | TERRNO, "realpath() failed");
tst_res(TINFO, "Expected path '%s'", exp_buf);
--
2.14.1.342.g6490525c54-goog
next prev parent reply other threads:[~2017-08-28 16:40 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-28 16:40 [LTP] [PATCH v2 0/2] Fix getcwd0[12] tests for Android devices Sandeep Patil
2017-08-28 16:40 ` [LTP] [PATCH v2 1/2] getcwd01: Remove unnecessary usage of temporary directory Sandeep Patil
2017-08-29 11:21 ` Cyril Hrubis
2017-08-28 16:40 ` Sandeep Patil [this message]
2017-08-29 11:22 ` [LTP] [PATCH v2 2/2] android: getcwd02: use temp dir from $TMPDIR if present Cyril Hrubis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170828164043.93407-3-sspatil@google.com \
--to=sspatil@google.com \
--cc=ltp@lists.linux.it \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.