#include <curl/curl.h>

int main(int argc, char *argv[]) {
	// Example URL taken from:
	//   https://everything.curl.dev/libcurl/url/get-part
	const char *input_url = "http://[2a04:4e42:e00::347%25eth0]/";

	CURLU *h = curl_url();
	CURLUcode rc = curl_url_set(h, CURLUPART_URL, input_url, 0);
	if (rc) {
		printf("Error parsing URL: %s\n", curl_url_strerror(rc));
		return 1;
	}
	CURLU *copy = curl_url_dup(h);

	char *h_str, *copy_str;
	rc = curl_url_get(h, CURLUPART_URL, &h_str, 0);
	if (rc) {
		printf("Error printing parsed URL as string: %s\n",
		       curl_url_strerror(rc));
		return 1;
	}
	rc = curl_url_get(copy, CURLUPART_URL, &copy_str, 0);
	if (rc) {
		printf("Error printing parsed URL as string: %s\n",
		       curl_url_strerror(rc));
		return 1;
	}

	printf("Original:  %s\nParsed:    %s\nCopy:      %s\n",
	       input_url, h_str, copy_str);

	curl_free(copy_str);
	curl_free(h_str);
	curl_url_cleanup(copy);
	curl_url_cleanup(h);
}

