/* *** SCRIPT SYMBOL: [File] FileOpen *** */ FILE* FileOpen(const char*fnmm, const char* mode) { int useindx = 0; char fileToOpen[MAX_PATH]; if (!validate_user_file_path(fnmm, fileToOpen, strcmp(mode, "rb") != 0)) return NULL; // find a free file handle to use for (useindx = 0; useindx < num_open_script_files; useindx++) { if (valid_handles[useindx] == NULL) break; } valid_handles[useindx] = fopen(fileToOpen, mode); if (valid_handles[useindx] == NULL) return NULL; if (useindx >= num_open_script_files) { if (num_open_script_files >= MAX_OPEN_SCRIPT_FILES) quit("!FileOpen: tried to open more than 10 files simultaneously - close some first"); num_open_script_files++; } return valid_handles[useindx]; }
/* *** SCRIPT SYMBOL: [File] File::Delete^1 *** */ static int File_Delete(const char *fnmm) { char fileToDelete[MAX_PATH]; if (!validate_user_file_path(fnmm, fileToDelete, true)) return 0; unlink(fileToDelete); return 1; }
/* *** SCRIPT SYMBOL: [File] File::Exists^1 *** */ static int File_Exists(const char *fnmm) { char fileToCheck[MAX_PATH]; if (!validate_user_file_path(fnmm, fileToCheck, false)) return 0; FILE *iii = fopen(fileToCheck, "rb"); if (iii == NULL) return 0; fclose(iii); return 1; }
/* *** SCRIPT SYMBOL: [ListBox] ListBox::FillDirList^1 *** */ void ListBox_FillDirList(GUIListBox *listbox, const char *filemask) { char searchPath[MAX_PATH]; validate_user_file_path(filemask, searchPath, false); listbox->Clear(); al_ffblk dfb; int dun = al_findfirst(searchPath, &dfb, FA_SEARCH); while (!dun) { listbox->AddItem(dfb.name); dun = al_findnext(&dfb); } al_findclose(&dfb); guis_need_update = 1; }