Hello,
I need help to combine a c-program using curl(to retrieve txt files from internet) and another c-program using popen. currently the popen is using the command ls -l (to list the current folder in terminal).
I have 2 files, the first one is curl program,
which have to retrieve 2 text files from the internet and process them later(I haven't make the manipulation process in the code).
#include <curl/curl.h>
#include <stdio.h>
#include <stdlib.h>
#define WEBPAGE_URL "http://www.rfc-editor.org/rfc/rfc2578.txt"
#define DESTINATION_FILE "out.txt"
#define WEBPAGE_URL2 "http://www.gnu.org/licenses/lgpl.txt"
#define DESTINATION_FILE2 "out2.txt"
size_t write_data( void *ptr, size_t size, size_t nmeb, void *stream)
{
return fwrite(ptr,size,nmeb,stream);
}
int main()
{
FILE * file = fopen(DESTINATION_FILE,"w+");
FILE * file2 = fopen(DESTINATION_FILE2,"w+");
if(!file){
perror("File Open:");
exit(0);
}
CURL *handle = curl_easy_init();
curl_easy_setopt(handle,CURLOPT_URL,WEBPAGE_URL);
curl_easy_setopt(handle,CURLOPT_URL,WEBPAGE_URL2);
curl_easy_setopt(handle,CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(handle,CURLOPT_WRITEDATA, file);
curl_easy_setopt(handle,CURLOPT_WRITEDATA, file2);
curl_easy_perform(handle);
curl_easy_cleanup(handle);
}
and the other is popen program,
which currently is listing the contents in the folder through terminal.
#include <stdio.h>
int main()
{
FILE *fp;
char line[130];
fp = popen("ls -l", "r");
while ( fgets( line, sizeof line, fp))
{
printf("%s", line);
}
pclose(fp);
}
Now the thing is, I need to combine these 2 programs, so that only using 1 program files, I can retrieve txt files using curl as the command in popen, and can manipulate the retrieved txt files later on.
When I run the 2 program separately, it has no errors. but when I tried to combine and compile the code, it has some errors.
Here's my try:
#include <stdio.h>
#include <stdlib.h>
#include <curl/curl.h>
#define WEBPAGE_URL "http://www.rfc-editor.org/rfc/rfc2578.txt"
#define DESTINATION_FILE "out.txt"
#define WEBPAGE_URL2 "http://www.gnu.org/licenses/lgpl.txt"
#define DESTINATION_FILE2 "out2.txt"
size_t write_data( void *ptr, size_t size, size_t nmeb, void *stream)
{
return fwrite(ptr,size,nmeb,stream);
}
int main()
{
FILE * file = fopen(DESTINATION_FILE,"w+");
FILE * file2 = fopen(DESTINATION_FILE2,"w+");
if(!file){
perror("File Open:");
exit(0);
}
CURL *handle = curl_easy_init();
curl_easy_setopt(handle,CURLOPT_URL,WEBPAGE_URL);
curl_easy_setopt(handle,CURLOPT_URL,WEBPAGE_URL2);
curl_easy_setopt(handle,CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(handle,CURLOPT_WRITEDATA, file);
curl_easy_setopt(handle,CURLOPT_WRITEDATA, file2);
curl_easy_perform(handle);
curl_easy_cleanup(handle);
FILE *fp;
char line[130];
fp = popen("handle", "r");
while ( fgets( line, sizeof line, fp))
{
printf("%s", line);
}
pclose(fp);
}
and here's the error I got in the terminal during the compile:
Undefined symbols for architecture x86_64:
"_curl_easy_init", referenced from:
_main in ccsZ6bsW.o
"_curl_easy_setopt", referenced from:
_main in ccsZ6bsW.o
"_curl_easy_perform", referenced from:
_main in ccsZ6bsW.o
"_curl_easy_cleanup", referenced from:
_main in ccsZ6bsW.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Can anyone help me? I'm totally lost here.