int parse_command_line()

in src/native/tools/zstd_compress_file/zstd_compress_file.cpp [85:131]


int parse_command_line(
	int argc,
	char **argv,
	operation *op,
	fs::path *uncompressed_path,
	fs::path *compressed_path,
	fs::path *delta_basis_path)
{
	switch (argc)
	{
	case 3: // <uncompressed> <compressed>
		*op                = operation::compress;
		*uncompressed_path = argv[1];
		*compressed_path   = argv[2];
		break;
	case 4:
		if (0 == strcmp(argv[1], DECOMPRESS_SWITCH)) // -d <compressed> <uncompressed>
		{
			*op                = operation::decompress;
			*compressed_path   = argv[2];
			*uncompressed_path = argv[3];
		}
		else
		{
			*op                = operation::compress_with_basis;
			*uncompressed_path = argv[1];
			*delta_basis_path  = argv[2];
			*compressed_path   = argv[3];
		}
		break;
	case 5:
		if (0 == strcmp(argv[1], DECOMPRESS_SWITCH))
		{
			*op                = operation::decompress_with_basis;
			*compressed_path   = argv[2];
			*delta_basis_path  = argv[3];
			*uncompressed_path = argv[4];
		}
		else
		{
			*op = operation::invalid;
			return -1;
		}
	}

	return 0;
}