/**************************************************************************** * languagefile updater * for USB Loader GX *giantpune* ***************************************************************************/ #include #include #include #include #include "UpdateLanguage.h" #include "FileOperations/fileops.h" #include "FileOperations/DirList.h" #include "menu.h" #include "network/networkops.h" #include "network/http.h" int updateLanguageFiles() { char languageFiles[50][MAXLANGUAGEFILES]; DirList Dir(Settings.languagefiles_path); //give up now if we didn't find any if (Dir.GetFilecount() == 0) return -2; //now from the files we got, get only the .lang files for (int cnt = 0; cnt < Dir.GetFilecount(); cnt++) { char filename[64]; strlcpy(filename, Dir.GetFilename(cnt), sizeof(filename)); if (strcasestr(filename, ".lang")) { strcpy(languageFiles[cnt], filename); } } CreateSubfolder(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 < Dir.GetFilecount()) { 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; }