commit 768c45ea89ccf0672737658054a73336b177b34c Author: Ryan Voots Date: Mon May 1 17:23:29 2017 -0700 setting up a git repo for this diff --git a/foo/bar b/foo/bar new file mode 100644 index 0000000..e69de29 diff --git a/main.c b/main.c new file mode 100644 index 0000000..2bafbff --- /dev/null +++ b/main.c @@ -0,0 +1,52 @@ +#include +#include +#include +#include +#include + #define _GNU_SOURCE + #include +#include +#include + +struct args { + int c; + char **v; +}; + +uint8_t CSTACK[8192]; + +int myreaddir(void *fooargs) { + int len; + struct dirent *pDirent; + DIR *pDir; + struct args *myargs = (struct args *) fooargs; + + if (myargs->c < 2) { + printf ("Usage: testprog \n"); + return 1; + } + + mount(NULL, myargs->v[1], NULL, MS_PRIVATE, NULL); + mount(NULL, ".", NULL, MS_PRIVATE, NULL); + umount(myargs->v[1]); + + pDir = opendir (myargs->v[1]); + if (pDir == NULL) { + printf ("Cannot open directory '%s'\n", myargs->v[1]); + return 1; + } + + while ((pDirent = readdir(pDir)) != NULL) { + printf ("[%s]\n", pDirent->d_name); + } + closedir (pDir); + return 0; +} + +int main (int c, char *v[]) { + struct args fooargs = {c: c, v: v}; + + int ret = clone(&myreaddir, CSTACK+8192, CLONE_NEWUTS|CLONE_NEWNS|CLONE_NEWCGROUP|CLONE_NEWIPC|CLONE_NEWNET|CLONE_NEWPID, (void *) &fooargs); + + printf("%05d %05d\n", ret, errno); +}