#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++;
	if (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;
}
