Этот коммит содержится в:
KoldinaAE
2025-05-26 16:33:24 +03:00
родитель 28d49e9bbd
Коммит ed60de279a
2 изменённых файлов: 43 добавлений и 5 удалений

Просмотреть файл

@@ -13,7 +13,12 @@
<Option compiler="gcc" /> <Option compiler="gcc" />
<Compiler> <Compiler>
<Add option="-g" /> <Add option="-g" />
<Add directory="C:/Users/koldinad/Desktop/lab34/curl1/include" />
</Compiler> </Compiler>
<Linker>
<Add library="C:/Users/koldinad/Desktop/lab34/curl1/lib/libcurl.dll.a" />
<Add directory="C:/Users/koldinad/Desktop/lab34/curl1/lib" />
</Linker>
</Target> </Target>
<Target title="Release"> <Target title="Release">
<Option output="bin/Release/lab03" prefix_auto="1" extension_auto="1" /> <Option output="bin/Release/lab03" prefix_auto="1" extension_auto="1" />

Просмотреть файл

@@ -39,15 +39,18 @@ size_t write_data(void* items, size_t item_size, size_t item_count, void* ctx) {
return data_size; return data_size;
} }
Input download(const string& address) { Input download(const string& address, bool verbose) { //äîáàâëåí ïàðàìåòð 'verbose'
stringstream buffer; stringstream buffer;
CURL* curl = curl_easy_init(); CURL* curl = curl_easy_init();
if (curl) { if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, address.c_str()); curl_easy_setopt(curl, CURLOPT_URL, address.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
if (verbose){ //äîáàâëåíî âêëþ÷åíèå ïîäðîáíîãî âûâîäà, åñëè çàäàí ôëàã
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
}
CURLcode res = curl_easy_perform(curl); CURLcode res = curl_easy_perform(curl);
if (res != CURLE_OK) { if (res != CURLE_OK) {
cerr << "cURL error: " << curl_easy_strerror(res) << endl; cerr << "cURL error: " << curl_easy_strerror(res) << endl;
@@ -65,10 +68,35 @@ Input download(const string& address) {
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
Input inn; //äîáàâëåíà ïåðåìåííàÿ-ôëàã è URL
if (argc > 1) { bool verbose = false;
inn = download(argv[1]); string url;
//äîáàâëåí ðàçáîð àðãóìåíòîâ
for(int i=1; i<argc; ++i){
string arg = argv[i];
if (arg == "-verbose"){
verbose =true;
} }
else if (arg[0] == '-'){
cerr << "Unknow option: " << arg << endl;
cerr << "Usage: " << argv[0] << "[-verbose] <url>" << endl;
return 1;
}
else{
url = arg;
}
}
Input inn;
// èçìåíåí âûçîâ íà verbose download
//if (argc > 1) {
// inn = download(argv[1]);
//}
if (!url.empty()){
inn = download(url, verbose);
}
else { else {
inn = input_data(cin, true); inn = input_data(cin, true);
} }
@@ -78,3 +106,8 @@ int main(int argc, char* argv[])
return 0; return 0;
} }
// Çàùèòà âàðèàíò 10
// Äîáàâüòå ïðîãðàììå îïöèþ -verbose, ïðè óêàçàíèè êîòîðîé íóæíî âêëþ÷àòü îòëàäî÷íûé âûâîä
// cURL ñ ïîìîùüþ CURLOPT_VERBOSE. Îïöèÿ ìîæåò ñòîÿòü äî èëè ïîñëå URL:
// lab34.exe -verbose http://... èëè lab04.exe http://... -verbose