aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2011-01-01 21:04:41 -0500
committerMike Frysinger <vapier@gentoo.org>2011-01-01 21:04:41 -0500
commiteaa748b1842ecf92248662623aa41cc239b25bb2 (patch)
tree5e414e71e2abdf091b143537b3104ff67a8f4aa7
parenttests: add a bunch more feasible errno values (diff)
downloadsandbox-eaa748b1842ecf92248662623aa41cc239b25bb2.tar.gz
sandbox-eaa748b1842ecf92248662623aa41cc239b25bb2.tar.bz2
sandbox-eaa748b1842ecf92248662623aa41cc239b25bb2.zip
tests: make defaults for fds saner
Let the default mode for files be 0777 rather than 0 so that the default creation of files actually works. Also make the flags part of a dirfd filename actually optional. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-rw-r--r--tests/test-skel-0.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/tests/test-skel-0.c b/tests/test-skel-0.c
index 0907e96..b5771d7 100644
--- a/tests/test-skel-0.c
+++ b/tests/test-skel-0.c
@@ -9,6 +9,13 @@ const char *color_red = "\033[31;01m";
# define CONFIG 1
#endif
+static bool _strtoul(const char *sul, unsigned long *ul)
+{
+ char *e;
+ *ul = strtoul(sul, &e, 0);
+ return (*e == '\0');
+}
+
static int _get_flags(const char *str_flags, const value_pair flags[])
{
const char *delim = "|";
@@ -42,6 +49,8 @@ int f_get_flags(const char *str_flags)
PAIR(O_WRONLY)
{ }
};
+ if (!str_flags)
+ return O_CREAT | O_RDWR;
return _get_flags(str_flags, flags);
}
@@ -72,8 +81,9 @@ mode_t sscanf_mode_t(const char *str_mode)
* sscanf() into it otherwise we might smash the stack.
*/
int mode;
+ /* Default to full access. */
if (!str_mode)
- return 0;
+ return 0777;
sscanf(str_mode, "%i", &mode);
return (mode_t)mode;
}
@@ -103,8 +113,11 @@ int at_get_fd(const char *str_dirfd)
str_path = strtok(str, ":");
str_flags = strtok(NULL, ":");
- if (str_flags == NULL)
- return atoi(str_dirfd);
+ if (str_flags == NULL) {
+ unsigned long dirfd;
+ if (_strtoul(str_dirfd, &dirfd))
+ return dirfd;
+ }
str_mode = strtok(NULL, ":");
return open(str_path, f_get_flags(str_flags), sscanf_mode_t(str_mode));