#define _LARGEFILE64_SOURCE /* needed to use lseek64 */

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <parlib/arch/arch.h>
#include <unistd.h>
#include <errno.h>
#include <dirent.h>
#include <stdlib.h>
#include <string.h>
#include <ros/syscall.h>

/* The naming for the args in bind is messy historically.  We do:
 * 		bind src_path onto_path
 * plan9 says bind NEW OLD, where new is *src*, and old is *onto*.
 * Linux says mount --bind OLD NEW, where OLD is *src* and NEW is *onto*. */
int main(int argc, char *argv[])
{
	int ret;
	int flag = 0;
	char *src_path, *onto_path;

	/* crap arg handling for now. */
	argc--, argv++;
	while (argc > 2) {
		switch (argv[0][1]) {
		case 'b':
			flag |= 1;
			break;
		case 'a':
			flag |= 2;
			break;
		case 'c':
			flag |= 4;
			break;
		default:
			printf("-a or -b and/or -c for now\n");
			exit(0);
		}
		argc--, argv++;
	}

	if (argc < 2) {
		fprintf(stderr, "usage: bind [-a|-b] src_path onto_path\n");
		exit(1);
	}
	src_path = argv[0];
	onto_path = argv[1];
	printf("bind %s -> %s flag %d\n", src_path, onto_path, flag);
	ret = syscall(SYS_nbind, src_path, strlen(src_path), onto_path,
	              strlen(onto_path), flag);
	if (ret < 0)
		perror("Bind failed");
	return ret;
}
