unsigned int FindFiles(DIR_ENTRY_LIST **list, const char *dir, const char *mask, void CallBack(DIR_ENTRY_LIST *ptr)) { DIR_ENTRY_LIST *top = NULL; unsigned int i = 0; char find[256]; strcpy(find, dir); strcat(find, mask); DIR_ENTRY de; unsigned int err; LockSched(); if (FindFirstFile(&de, find, &err)) { DIR_ENTRY_LIST *prev, *de_list; top = malloc(sizeof(DIR_ENTRY_LIST)); de_list = top; do { strcpy(de_list->path, de.folder_name); strcat(de_list->path, "\\"); strcat(de_list->path, de.file_name); strcpy(de_list->dir, de.folder_name); strcpy(de_list->fname, de.file_name); de_list->file_size = de.file_size; de_list->file_attr = de.file_attr; de_list->create_date_time = de.create_date_time; if (CallBack) CallBack(de_list); prev = de_list; de_list->next = malloc(sizeof(DIR_ENTRY_LIST)); de_list = de_list->next; de_list->prev = prev; i++; } while (FindNextFile(&de, &err)); top->prev = NULL; mfree(prev->next); prev->next = NULL; } UnlockSched(); FindClose(&de, &err); *list = top; return i; }
int main (char *exename, char *fname) { MAIN_CSM main_csm; LockSched(); UpdateCSMname(); CreateCSM(&MAINCSM.maincsm,&main_csm,0); UnlockSched(); InitConfig(ELF_NAME); GetFileDir (exename, dir); //SetCurFile (fname); return 0; }
int LoadMUI(char* filename) { int res = 0; int v1=0; char* fn = filename?filename:MCFilePath(mclg_deffile); int f; if (fn && (f=_open(fn,A_ReadOnly+A_BIN,P_READ,&err))!=-1) { MCLG_hdr hdr; if (_read(f, &hdr, sizeof(hdr), &err)==sizeof(hdr)) { if (hdr.sig==mclg_sig) { _lseek(f,hdr.offset,S_SET,&err,&err); int tblcn=(hdr.size & 0xffff); int tblsz=tblcn*sizeof(MC_LG); int bufsz=hdr.size>>16; FreeMUI(); muibuff=malloc(bufsz); muibuffsz=bufsz; MC_LG* tbl; MC_LG* lg; lg=tbl=malloc(tblsz); res = (_read(f, tbl, tblsz, &err)==tblsz) && (_read(f, muibuff, bufsz, &err)==bufsz); if (res) { LockSched(); for(int cc=0;cc<tblcn;cc++) { int ind=getmuiind(lg->id); mui_ld[ind]=(char*)((int)muibuff + lg->ofs); lg=(MC_LG*)((int)lg+sizeof(MC_LG)); } UnlockSched(); } else mfree(muibuff); mfree(tbl); } else v1=1;
int main(const char *exe_path, const char *file_path) { if (InitLang(cfg_lang_path, &lgp) == -1) { MsgBoxError(1, (int)"lang.txt not found!"); kill_elf(); } else { CSM_RAM *save_cmpc; char dummy[sizeof(MAIN_CSM)]; LockSched(); UpdateCSMname(); InitConfig(); save_cmpc = CSM_root()->csm_q->current_msg_processing_csm; CSM_root()->csm_q->current_msg_processing_csm = CSM_root()->csm_q->csm.first; CreateCSM(&MAINCSM.maincsm,dummy,0); CSM_root()->csm_q->current_msg_processing_csm = save_cmpc; UnlockSched(); AddKeybMsgHook((void*)KeyHook); } return 0; }
unsigned int FindFilesRec(DIR_ENTRY_LIST **list, const char *dir, FIND_UIDS *fu, void CallBack(DIR_ENTRY_LIST *ptr)) { DIR_ENTRY_LIST *top = NULL; unsigned int total = 0; char path[256]; char find[256]; char folder_name[128]; strcpy(find, dir); strcat(find, "*"); DIR_ENTRY de; unsigned int err; LockSched(); if (FindFirstFile(&de, find, &err)) { DIR_ENTRY_LIST *ptr = NULL; DIR_ENTRY_LIST *prev = NULL; if (*list) { ptr = *list; } else { top = malloc(sizeof(DIR_ENTRY_LIST)); top->prev = NULL; ptr = top; } do { //isdir if (de.file_attr & FA_DIRECTORY) { strcpy(path, de.folder_name); strcat(path, "\\"); strcat(path, de.file_name); strcat(path, "\\"); total += FindFilesRec(&ptr, path, fu, CallBack); prev = ptr->prev; } else { if (fu) { unsigned int uid; for (int i = 0; i < MAX_UIDS; i++) { uid = GetExtUidByFileName(de.file_name); if (uid == fu->data[i]) goto COPY_DATA; } } else { COPY_DATA: strcpy(ptr->path, de.folder_name); strcat(ptr->path, "\\"); strcat(ptr->path, de.file_name); strcpy(ptr->dir, de.folder_name); strcpy(ptr->fname, de.file_name); ptr->file_size = de.file_size; ptr->file_attr = de.file_attr; ptr->create_date_time = de.create_date_time; if (CallBack) CallBack(ptr); prev = ptr; ptr->next = malloc(sizeof(DIR_ENTRY_LIST)); ptr = ptr->next; ptr->prev = prev; total++; } } } while (FindNextFile(&de, &err)); if (*list) { *list = ptr; } else { if (prev) { mfree(prev->next); prev->next = NULL; } *list = top; } #ifdef NEWSGOLD FindClose(&de, &err); #endif } #ifndef NEWSGOLD FindClose(&de, &err); #endif UnlockSched(); return total; }
int maincsm_onmessage(CSM_RAM* data, GBS_MSG* msg) { if (msg->msg == MSG_IPC) { IPC_REQ *ipc = (IPC_REQ*)msg->data0; if (ipc) { if (strcmp(ipc->name_to, IPC_MY_NAME) == 0) { if (msg->submess != data->id) { LockSched(); CloseCSM(msg->submess); SUBPROC((void*)CreateClipperGUI); UnlockSched(); } } } } if (msg->msg == MSG_RECONFIGURE_REQ) { if (strcmp_nocase(successed_config_filename, (char *)msg->data0) == 0) InitConfig(); } if (total < cfg_max_history) { static WSHDR *clip; if (not_reading) { clip = GetClipBoard(); not_reading = 0; } else { if (clip != GetClipBoard()) { clip = GetClipBoard(); if (total) { CLIPBOARD_LIST *p = top; while (1) { if (p->next) p = p->next; else break; } p->next = malloc(sizeof(CLIPBOARD_LIST)); p = p->next; last->next = p; p->prev = last; p->next = NULL; p->ws = AllocWS(clip->wsbody[0] + 1); wstrcpy(p->ws, clip); last = p; } else { top = malloc(sizeof(CLIPBOARD_LIST)); top->prev = NULL; top->next = NULL; last = top; top->ws = AllocWS(clip->wsbody[0] + 1); wstrcpy(top->ws, clip); } total++; } } } return 1; }