Fare il parsing dell'output di cUrl

Autore: Fabio Di Matteo
Ultima revisione: 17/03/2017 - 10:16

In questo articolo vedremo come prelevare il valore percentuale dei file scaricari con curl:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
 
int main(int argc, char** argv)
{
	int progress=0;
	FILE *fd;
	char line[1024]={0,}; 
 
 
	system("echo 0 >progress.txt"); //creo il file progress.txt 
	system("curl --libcurl libcurl.txt --stderr progress.txt -O  --stderr progress.txt -O  https://www.freemedialab.org/listing/stupid-backup/stupid-backup.exe &");
	fd = fopen("progress.txt", "r"); 
 
	while(progress<100)
	{
		if (fd)
		{
			// scorro il file fino alla fine (prendo l'ultima riga)
			// e metto la riga in line
			while(fgets(line, 1024, fd)!=NULL)	
			{
			} 
 
 
			//Prelevo dall'ultima riga il valore dell'avanzamento del download
			if (sscanf(line, "%*[^0-9]%d", &progress) ) 
			{
				printf( "Progress: %d\% \n ", progress);
			}
		}
 
	}
 
	fclose(fd);
	printf("Download terminato\n");
	return 0;
}