2013-12-07 2 views
-1

Как не показывать всю эту информацию? Все, что я делаю, это небольшой отредактированный пример FTP, и я не хочу, чтобы информация отображалась.Libcurl как не показывать всю эту информацию

изменения: добавлен полный код из main.c

изображения в ссылке: http://www.mediafire.com/convkey/71e9/oyhctzcdjxakzxzfg.jpg

#include <stdio.h> 
#include <stdlib.h> 
#include <curl/curl.h> 

struct FtpFile { 
const char *filename; 
FILE *stream; 
}; 
static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream) 
{ 
    struct FtpFile *out=(struct FtpFile *)stream; 
    if(out && !out->stream) { 
    /* open file for writing */ 
    out->stream=fopen(out->filename, "wb"); 
    if(!out->stream) 
    return -1; /* failure, can't open file to write */ 
} 
return fwrite(buffer, size, nmemb, out->stream); 
} 

int main() 
{ 
CURL *curl; 
CURLcode res; 
struct FtpFile version={"version.txt", /* name to store the file as if succesful */NULL}; 

curl_global_init(CURL_GLOBAL_DEFAULT); 
curl = curl_easy_init(); 

FILE *file_verzija; 
int trenutna_verzija; 
int nova_verzija; 
char pitanje_za_update; 

file_verzija=fopen("version.txt","r"); 

fscanf(file_verzija,"%i",&trenutna_verzija); 

fclose(file_verzija); 


printf("Current version %i",trenutna_verzija); 

printf("\nChecking for updates...\n"); 


if(curl) 
{ 
    /*You better replace the URL with one that works!*/curl_easy_setopt(curl, CURLOPT_URL,"http://elektro-srb.com/site/muffin_finder_files/version.txt"); 
    /* Define our callback to get called when there's data to be written */ 
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite); 
    /* Set a pointer to our struct to pass to the callback */ 
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &version); 
    /* Switch on full protocol/debug output */ 
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); 
    res = curl_easy_perform(curl); 
    /* always cleanup */ 
    curl_easy_cleanup(curl); 
    if(CURLE_OK != res) 
    { 
     /* we failed */ 
     printf("\nerror"); 
    } 
} 

if(version.stream) 
    fclose(version.stream); /* close the local file */ 

file_verzija=fopen("version.txt","r"); 

fscanf(file_verzija,"%i",&nova_verzija); 

fclose(file_verzija); 

if(trenutna_verzija != nova_verzija) 
{ 
    printf("\nUpdate found! New version is %i",nova_verzija); 
} 
else 
{ 
    printf("You are running latest version of Muffin Finder!"); 
} 

if(trenutna_verzija != nova_verzija) 
{ 
    printf("\nUpdate? y/n"); 
    scanf("\n%c",&pitanje_za_update); 
    if((pitanje_za_update == 'y') || (pitanje_za_update == 'Y')) 
    { 
     //UPDATE 
    } 
    else if((pitanje_za_update == 'n') || (pitanje_za_update == 'N')) 
    { 
     //pokretanje stare 
    } 
} 


curl_global_cleanup(); 



return 0; 
} 

ответ

0

комментарий следующая строка:

curl_easy_setopt (curl, CURLOPT_VERBOSE, 1L);

+0

Спасибо! Это именно то, что я хотел! – user3078694

+0

Добро пожаловать, @ user3078694 :) –

1

Вы должны построить WRITEFUNCTION вариант, чтобы предотвратить его от использования stdout для печати.

См. Здесь: http://curl.haxx.se/libcurl/c/curl_easy_setopt.html.

Поиск "WRITEFUNCTION". Вы должны реализовать функцию (и я предполагаю, что вы хотели бы оставить ее пустой).

EDIT: Как ручными состояний, вы должны сделать следующее:

Реализовать функцию замены по умолчанию стандартный вывод в:

size_t outputFunction(char *ptr, size_t size, size_t nmemb, void *userdata) {}

При инициализации структуры CURL, используйте эту опцию:

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, outputFunction);

+0

На самом деле я не бог с программированием, поэтому мне нужна дополнительная помощь :) Можете ли вы сказать мне, что именно делать? Я добавил код – user3078694

+0

Кажется, что код, который вы добавили, просто скопирован. – Novak

+0

Что вы имеете в виду, скопировав один? Я использовал пример ftpget.c из http://curl.haxx.se/ и добавил чтение текстового файла? Я просто не понял, что ты сказал мне сделать, поэтому я прошу более подробную помощь. – user3078694

Смежные вопросы