mirror of
https://github.com/wiidev/usbloadergx.git
synced 2024-09-08 08:33:19 +02:00
73 lines
2.1 KiB
C++
73 lines
2.1 KiB
C++
/****************************************************************************
|
|
* languagefile updater
|
|
* for USB Loader GX *giantpune*
|
|
***************************************************************************/
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <sys/dir.h>
|
|
|
|
#include "UpdateLanguage.h"
|
|
#include "listfiles.h"
|
|
#include "menu.h"
|
|
#include "network/networkops.h"
|
|
#include "network/http.h"
|
|
|
|
int updateLanguageFiles() {
|
|
char languageFiles[50][MAXLANGUAGEFILES];
|
|
|
|
//get all the files in the language path
|
|
int countfiles = GetAllDirFiles(Settings.languagefiles_path);
|
|
|
|
//give up now if we didn't find any
|
|
if (!countfiles) return -2;
|
|
|
|
//now from the files we got, get only the .lang files
|
|
for (int cnt = 0; cnt < countfiles; cnt++) {
|
|
char filename[64];
|
|
strlcpy(filename, GetFileName(cnt),sizeof(filename));
|
|
if (strcasestr(filename,".lang")) {
|
|
strcpy(languageFiles[cnt],filename);
|
|
}
|
|
}
|
|
|
|
subfoldercreate(Settings.languagefiles_path);
|
|
|
|
//we assume that the network will already be init by another function
|
|
// ( that has gui eletents in it because this one doesn't)
|
|
int done = 0,j = 0;
|
|
if (IsNetworkInit()) {
|
|
//build the URL, save path, and download each file and save it
|
|
while (j<countfiles) {
|
|
char savepath[150];
|
|
char codeurl[200];
|
|
snprintf(codeurl, sizeof(codeurl), "http://usbloader-gui.googlecode.com/svn/trunk/Languages/%s",languageFiles[j]);
|
|
snprintf(savepath, sizeof(savepath), "%s%s",Settings.languagefiles_path,languageFiles[j]);
|
|
|
|
struct block file = downloadfile(codeurl);
|
|
|
|
if (file.data != NULL) {
|
|
FILE * pfile;
|
|
pfile = fopen(savepath, "wb");
|
|
if(pfile != NULL) {
|
|
fwrite(file.data,1,file.size,pfile);
|
|
fclose(pfile);
|
|
free(file.data);
|
|
done++;
|
|
}
|
|
}
|
|
|
|
j++;
|
|
}
|
|
|
|
}
|
|
//if there was no network init
|
|
else return -1;
|
|
|
|
// return the number of files we updated
|
|
return done;
|
|
}
|
|
|
|
|
|
|