shithub: s3

ref: 0591d4ae19bb6ad8349f2d3bfda81a99bd04d956
dir: /cat.c/

View raw version
#include <u.h>
#include <libc.h>
#include <bio.h>
#include "s3.h"
#include "cmd.h"

_Noreturn void
usage(void)
{
	fprint(2, "Usage %s: [-o offset] [-n count] s3://bucket/file\n", argv0);
	exits("usage");
}

void
main(int argc , char **argv)
{
	S3 s3;
	Biobuf *b;
	char path[512];
	long offset, n;
	int dorange;

	tmfmtinstall();
	fmtinstall('H', encodefmt);
	parseargs(&s3, argc, argv);
	dorange = 0;
	offset = n = -1;
	ARGBEGIN{
	case 'o':
		dorange++;
		offset = atoi(EARGF(usage()));
		break;
	case 'n':
		dorange++;
		n = atoi(EARGF(usage()));
		break;
	}ARGEND

	if(argc == 0)
		usage();
	if(dorange && (offset == -1 || n == -1)){
		fprint(2, "if using ranges both -o and -n must be specified\n");
		exits("usage");
	}
	if(parseuri(&s3, path, sizeof path, argv[0]) < 0)
		usage();
	b = Bfdopen(1, OWRITE);
	if(dorange)
		downloadrange(&s3, path, b, offset, n);
	else
		download(&s3, path, b, s3get);
	Bterm(b);
	exits(nil);
}