void init(void) { mapy_init(); ddl_init(); vga_font = LoadResourceFont("BOLDCZ"); default_font = vga_font; icones = LoadResourceFont("IKONY"); graph_init(1); curcolor = RGB555(24,24,24);memcpy(charcolors,flat_color(0x0000),sizeof(charcolors)); init_events(100); curfont = default_font; register_ms_cursor(LoadResourceFont("SIPKA.HI")); init_mysky(); // hranice_mysky(0,0,639,479); add_task(1024,key_test); send_message(E_ADD,E_STATUS_LINE,status_line); send_message(E_STATUS_LINE,E_ADD,E_IDLE,all_status); send_message(E_STATUS_LINE,E_ADD,E_IDLE,status_mem_info); send_message(E_STATUS_LINE,E_ADD,E_IDLE,show_time); send_message(E_ADD,E_TIMER,pc_metter); send_message(E_ADD,E_KEYBOARD,exit_key); send_message(E_ADD,E_PRGERROR,prg_error); signal(SIGILL,raise_error_conv); signal(SIGSEGV,raise_error_conv); install_gui(); redraw_desktop();do_events(); send_message(E_ADD,E_MOUSE,main_menu); msg_box_font = vga_font; msg_icn_font = icones; ukaz_mysku(); update_mysky(); }
static gboolean queue_redraw (gpointer data) { ClutterActor *stage = CLUTTER_ACTOR (data); clutter_actor_queue_redraw (stage); do_events (stage); return TRUE; }
/** handle nested comments and simple minded Prolog syntax */ void plMiniSyntax::highlightBlock(const QString &text) { // simple state machine int nb = currentBlock().blockNumber(); if (nb > 0) { setCurrentBlockState(previousBlockState()); if (nb % 10 == 0) do_events(); } else { startToEnd.start(); qDebug() << "starting at " << QTime::currentTime(); setCurrentBlockState(0); } for (int i = 0, j, l; ; i = j + l) if (currentBlockState()) { // in multiline comment if ((j = text.indexOf("*/", i)) == -1) { setFormat(i, text.length() - i, fmt[Comment]); break; } setFormat(i, j - i + (l = 2), fmt[Comment]); setCurrentBlockState(0); } else { if ((j = text.indexOf("/*", i)) >= 0) { // begin multiline comment setFormat(j, l = 2, fmt[Comment]); setCurrentBlockState(1); } else { if ((j = tokens.indexIn(text, i)) == -1) break; QStringList ml = tokens.capturedTexts(); Q_ASSERT(ml.length() == 5+1); if ((l = ml[1].length())) { // number setFormat(j, l, fmt[Number]); } else if ((l = ml[2].length())) { // symbol setFormat(j, l, fmt[Atom]); } else if ((l = ml[3].length())) { // var setFormat(j, l, fmt[Variable]); } else if ((l = ml[4].length())) { // quoted setFormat(j, l, fmt[String]); } else if ((l = ml[5].length())) { // operator setFormat(j, l, fmt[Operator]); } else { // single line comment setFormat(j, text.length() - i, fmt[Comment]); break; } } } if (currentBlock() == document()->lastBlock()) qDebug() << "done at " << QTime::currentTime() << "in" << startToEnd.elapsed(); }
void close_app(void) { WINDOW *w; CTL3D x = {0,0,0,0}; w = create_window(0,0,1,1,0,&x); desktop_add_window(w); define(-1,0,0,639,477,0,fog_bar);property(NULL,NULL,NULL,RGB555(16,0,0)); redraw_desktop(); if ((ask_exit_status = msg_box("Dotaz?",'\x2',"Chce¨ program ukon‡it, nebo nahr t jinou mapu?","Jinou mapu","Ukon‡it","Ne",NULL)) != 3) terminate(); close_window(w); do_events(); }
int m1::game_platform::run() { m1::signal<void()>::connection const exit_connection = event_destroy.connect([&] { exit(0); }); ShowWindow(m_ImplPtr->window_handle, SW_SHOW); while(do_events()) { on_idle(); WaitMessage(); } return m_ImplPtr->exit_code; }
bool dssim_t::tick() { do_events(); bool going = false; for(auto& node : nodes) { if(paused.count(node.second->nid) == 0) { bool result = node.second->tick(); going = going || result; } else { going = true; } } ticks++; LOG(l::DEBUG, "TickLive:" << ticks << "\n"); if((ticks % 99) == 0) { LOG(l::DBG_EV, "Tick:" << ticks << "\n"); } if(going == false) { // If we have a disconnected server, wait for him to time out and view change his way in node_id_t pr = (node_id_t)0; for(auto& node : nodes) { if(node.second->primary()) { pr = node.first; } } if(pr != (node_id_t)0) { const std::unique_ptr<node_t>& pr_node = nodes[pr]; for(auto& node : nodes) { if(node.second->server() && !pr_node->in_view(node.first)) { LOG(l::DBG_EV, "Continue " << node.first << " not in view\n"); going = true; break; } } } } return going; }
int main(int argc, char **argv) { s_sound *sounds = NULL; s_game *game = NULL; s_perso **persos; int nb_players = 0; char *custom_music = NULL; nb_players = parse_args(argc, argv, &custom_music); persos = malloc(nb_players * sizeof (s_perso)); init_game(&game, nb_players, custom_music); init_main(game->screen, &sounds, persos, game); if (!welcome_main(game)) { do_events(game, persos, sounds); close_main(game, sounds, persos); } return (0); }
void io_loop(void) { int r, i, errv, errlen = sizeof(errv); struct timeval tv = { 1, 0 }; struct sockaddr_in sin; size_t ssin = sizeof(sin); char buffer[BUFSIZE]; sock_t *sock, *tmp; memset(buffer, 0, BUFSIZE); loop: /* wiz is leet */ FD_ZERO(&me.readfds); FD_ZERO(&me.writefds); for (sock = main_sock; sock;) { if (sock->flags & SOCK_DEL) { tmp = sock->next; del_sock(sock); sock = tmp; continue; } if (sock->flags & (SOCK_LISTEN|SOCK_CONN)) FD_SET(sock->socket, &me.readfds); else FD_SET(sock->socket, &me.writefds); sock = sock->next; } while ((r = select(FD_SETSIZE, &me.readfds, &me.writefds, NULL, &tv)) == -1) if (errno != EINTR) { log("FATAL! select() == -1: %s", ERR); exit(1); } do_events(time(NULL)); for (sock = main_sock; r > 0 && sock;) { if (FD_ISSET(sock->socket, &me.readfds) && r--) { if (sock->flags & SOCK_LISTEN) { memset(&sin, 0, sizeof(sin)); if ((i = accept(sock->socket, (struct sockaddr *)&sin, &ssin)) == -1) goto nextsock; log("NET: connection from %s:%d", inet_ntoa(sin.sin_addr), ntohs(sin.sin_port)); tmp = add_sock_to_list(); if ((tmp->socket = nonblock_sock(i)) == -1) { del_sock(tmp); goto nextsock; } else if (!(tmp->fd = fdopen(tmp->socket, "r"))) { log("fdopen(%d) failed: %s", tmp->socket, strerror(errno)); del_sock(tmp); goto nextsock; } tmp->conn = time(NULL); tmp->addr = sin.sin_addr; tmp->port = ntohs(sin.sin_port); tmp->buffer = leetcalloc(BUFSIZE, 1); tmp->flags |= (SOCK_CONN|sock->flags); tmp->flags &= ~SOCK_LISTEN; greet_dcc(tmp); goto nextsock; } if (!fgets(sock->buffer, BUFSIZE, sock->fd)) { errv = 0; if (getsockopt(sock->socket, SOL_SOCKET, SO_ERROR, &errv, &errlen) < 0) { log("NET: getsockopt(SO_ERROR) failed: %s", ERR); goto delsock; } goto readerr; } sock->last = time(NULL); for(i = 0; i < BUFSIZE; i++) if (sock->buffer[i] == '\r' || sock->buffer[i] == '\n') sock->buffer[i] = 0; if (sock->flags & SOCK_HUB) parse(sock->buffer); else if (sock->flags & (SOCK_DCC|SOCK_TELNET)) parse_dcc(sock, sock->buffer); memset(sock->buffer, 0, BUFSIZE); } else if (FD_ISSET(sock->socket, &me.writefds) && r--) { errv = 0; if (getsockopt(sock->socket, SOL_SOCKET, SO_ERROR, &errv, &errlen) < 0) { log("NET: getsockopt(SO_ERROR) failed: %s", ERR); goto delsock; } if (errv > 0) { if (sock->flags & SOCK_HUB) { log("HUB: error connecting to %s: %s", sock->name, strerror(errv)); alldcc("HUB: error connecting to %s: %s", sock->name, strerror(errv)); #if 0 } else if (sock->flags & SOCK_DCC && find_client(sock->name)) reply(OS, sock->name, "Error DCC connecting: %s", strerror(errv)); #else } #endif goto delsock; } if (sock->flags & SOCK_HUB) { log("HUB: connected to %s", sock->name); alldcc("HUB: connected to %s", sock->name); del_event_func(&try_next_hub); sock->conn = time(NULL); me.conn = 1; switch (me.servtype) { case SERV_IRCNN: toserv("PASS :%s\r\n", servpass); toserv("SERVER %s 1 %lu %lu J09 :%s\r\n", me.servname, time(NULL), time(NULL), me.servdesc); add_linked_server(me.servname, me.servname, me.servdesc); intro_nicks(ALL); join_channels(OS); break; case SERV_HYBRD: toserv("CAPAB :QS EX IE EOB UNKLN KLN HOPS HUB TBURST\r\n"); toserv("PASS %s :TS\r\n", servpass); toserv("SERVER %s 0 :%s\r\n", me.servname, me.servdesc); toserv("SVINFO 5 5 0 :%lu\r\n", time(NULL)); add_linked_server(me.servname, me.servname, me.servdesc); break; } } else if (sock->flags & SOCK_DCC) { log("DCC: %s connected from %s:%d", sock->name, inet_ntoa(sock->addr), sock->port); me.dcc++; } sock->flags |= SOCK_CONN; } nextsock: { sock = sock->next; continue; } readerr: { log("NET: read error from %s: %s", (sock->name ? sock->name : inet_ntoa(sock->addr)), strerror(errv)); } delsock: { sock->flags |= SOCK_DEL; goto nextsock; } }
static LRESULT WizardDlgProc(HWND hDlg,UINT msg, WPARAM wParam,LPARAM lParam) { int i; switch (msg) { case WM_INITDIALOG: hWizardDlg = hDlg; hWizardText = GetDlgItem(hDlg,IDC_OUTPUT); SendMessage(hWizardText,WM_SETFONT,(WPARAM)hfCourier,1); display_game_status(); SetTimer(hDlg,10,20,NULL); return 0; case WM_TIMER: do_events();return 1; case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL: EndDialog(hDlg,0);return 0; case IDC_CLEARMAP: { HWND listwnd = PrepareListWindow(hDlg); HWND list = GetDlgItem(listwnd,IDC_LIST); int res; ListBox_AddString(list,"Clear Monsters"); ListBox_AddString(list,"Clear Items"); res = PumpDialogMessages(listwnd); if (res == IDOK) { if (ListBox_GetSel(list,0)) { for(i = 0;i<MAX_MOBS;i++) if (mobs[i].vlajky & MOB_LIVE) { vybrana_zbran = -1; select_player = -1; mob_hit(mobs+i,mobs[i].lives); } } if (ListBox_GetSel(list,1)) { for(i = 0;i<mapsize*4;i++) { destroy_items(map_items[i]); free(map_items[i]); map_items[i] = NULL; } for(i = 0;i<vyk_max;i++) { destroy_items(map_vyk[i].items); map_vyk[i].items[0] = 0; } } } CloseListWindow(listwnd); } break; case IDC_ADVENCE: { int i,j,c; if (!wzscanf("Advence to level <postava -1= vsichni><uroven>:","%d %d",&i,&j)) return 0; c = MessageBox(GetActiveWindow(),"Automaticky?","?",MB_YESNO|MB_ICONQUESTION); if (i>0) advence_player(i-1,j,c == IDYES);else for(i = 0;i<POCET_POSTAV;i++) if (postavy[i].used) advence_player(i,j,c == IDYES); return 0; } case IDC_GOTO: { char prompt[50]; sprintf(prompt,"Goto sector <1-%d>:",mapsize-1); if (!wzscanf(prompt,"%d",&viewsector)) return 0; chod_s_postavama(1); SEND_LOG("(WIZARD) Goto %d",viewsector,0); return 0; } case IDC_LOADMAP: if (!wzscanf("Load Map <filename><sector>","%s %hd",loadlevel.name,&loadlevel.start_pos)) return 0; for(i = 0;i<POCET_POSTAV;i++)postavy[i].sektor = loadlevel.start_pos; SEND_LOG("(WIZARD) Load map '%s' %d",loadlevel.name,loadlevel.start_pos); EndDialog(hDlg,0); send_message(E_CLOSE_MAP); return 0; case IDC_OPENDOOR:if (map_sectors[viewsector].step_next[viewdir]) delay_action(3,viewsector,viewdir,0x2000000,0,0); else delay_action(3,viewsector,viewdir,0,0,0); return 0; case IDC_TAKEMONEY:if (take_money()) return 0;break; case IDC_PURGE:if (purge_map()) return 0;break; case IDC_HEAL:if (heal_meditate()) return 0;break; case IDC_RAISEDEATH:if (raise_death()) return 0;break; case IDC_RAISEMONSTER:if (raise_killed_monster(hDlg)) return 0;break; case IDC_IMMORTAL:set_immortality();break; case IDC_NETECNOST:set_nohassle();break; case IDC_UNAFFECT :unaffect();break; case IDC_WEAPONSKILL:if (advance_weapon()) return 0;break; case IDC_REFRESH:display_game_status();break; case IDC_RELOADMOBILES: i = MessageBox(hDlg,"Tato funkce precte znova parametry vsech existujicich nestvur. " "Pouzivej jen v pripade, ze se tyto parametry zmenili a nesouhlasi tak " "obsah ulozene pozice. Pokracovat? ","??",MB_YESNO|MB_ICONQUESTION); if (i == IDYES) reload_mobs(); return 0; case IDC_LOADITEM: { HWND listdlg = PrepareListWindow(hDlg); HWND list = GetDlgItem(listdlg,IDC_LIST); char buff[256]; int i; int res; for (i = 0;i<item_count;i++) { _snprintf(buff,sizeof(buff),"%d. %s",i,glob_items[i].jmeno); kamenik2windows(buff,strlen(buff),buff); ListBox_AddString(list,buff); } res = PumpDialogMessages(listdlg); while (res == IDOK) { int cnt; for (i = 0,cnt = ListBox_GetCount(list);i<cnt;i++) if (ListBox_GetSel(list,i)) { SEND_LOG("(WIZARD) Load Item %d (%s)",i,glob_items[i].jmeno); macro_drop_item(viewsector,viewdir,i); wzprintf("Dropped item: %d\r\n",i); } res = PumpDialogMessages(listdlg); } CloseListWindow(listdlg); } return 0; } default: return 0; } return 1; }
static void test_setpos(void) { APPBARDATA abd; RECT rc; int screen_width, screen_height; BOOL ret; int org_bottom1; screen_width = GetSystemMetrics(SM_CXSCREEN); screen_height = GetSystemMetrics(SM_CYSCREEN); /* create and register windows[0] */ windows[0].hwnd = CreateWindowExA(WS_EX_TOOLWINDOW|WS_EX_TOPMOST, testwindow_class, testwindow_class, WS_POPUP|WS_VISIBLE, 0, 0, 0, 0, NULL, NULL, NULL, NULL); ok(windows[0].hwnd != NULL, "couldn't create window\n"); do_events(); abd.cbSize = sizeof(abd); abd.hWnd = windows[0].hwnd; abd.uCallbackMessage = MSG_APPBAR; ret = SHAppBarMessage(ABM_NEW, &abd); ok(ret == TRUE, "SHAppBarMessage returned %i\n", ret); /* ABM_NEW should return FALSE if the window is already registered */ ret = SHAppBarMessage(ABM_NEW, &abd); ok(ret == FALSE, "SHAppBarMessage returned %i\n", ret); do_events(); /* dock windows[0] to the bottom of the screen */ windows[0].registered = TRUE; windows[0].to_be_deleted = FALSE; windows[0].edge = ABE_BOTTOM; SetRect(&windows[0].desired_rect, 0, screen_height - 15, screen_width, screen_height); SetWindowLongPtrA(windows[0].hwnd, GWLP_USERDATA, (LONG_PTR)&windows[0]); testwindow_setpos(windows[0].hwnd); do_events(); /* create and register windows[1] */ windows[1].hwnd = CreateWindowExA(WS_EX_TOOLWINDOW|WS_EX_TOPMOST, testwindow_class, testwindow_class, WS_POPUP|WS_VISIBLE, 0, 0, 0, 0, NULL, NULL, NULL, NULL); ok(windows[1].hwnd != NULL, "couldn't create window\n"); abd.hWnd = windows[1].hwnd; ret = SHAppBarMessage(ABM_NEW, &abd); ok(ret == TRUE, "SHAppBarMessage returned %i\n", ret); /* dock windows[1] to the bottom of the screen */ windows[1].registered = TRUE; windows[1].to_be_deleted = FALSE; windows[1].edge = ABE_BOTTOM; SetRect(&windows[1].desired_rect, 0, screen_height - 10, screen_width, screen_height); SetWindowLongPtrA(windows[1].hwnd, GWLP_USERDATA, (LONG_PTR)&windows[1]); testwindow_setpos(windows[1].hwnd); /* the windows are adjusted to they don't overlap */ do_events_until(no_appbars_intersect); test_window_rects(0, 1); /* make windows[0] larger, forcing windows[1] to move out of its way */ windows[0].desired_rect.top = screen_height - 20; testwindow_setpos(windows[0].hwnd); do_events_until(no_appbars_intersect); test_window_rects(0, 1); /* create and register windows[2] */ windows[2].hwnd = CreateWindowExA(WS_EX_TOOLWINDOW|WS_EX_TOPMOST, testwindow_class, testwindow_class, WS_POPUP|WS_VISIBLE, 0, 0, 0, 0, NULL, NULL, NULL, NULL); ok(windows[2].hwnd != NULL, "couldn't create window\n"); do_events(); abd.hWnd = windows[2].hwnd; ret = SHAppBarMessage(ABM_NEW, &abd); ok(ret == TRUE, "SHAppBarMessage returned %i\n", ret); /* dock windows[2] to the bottom of the screen */ windows[2].registered = TRUE; windows[2].to_be_deleted = FALSE; windows[2].edge = ABE_BOTTOM; SetRect(&windows[2].desired_rect, 0, screen_height - 10, screen_width, screen_height); SetWindowLongPtrA(windows[2].hwnd, GWLP_USERDATA, (LONG_PTR)&windows[2]); testwindow_setpos(windows[2].hwnd); do_events_until(no_appbars_intersect); test_window_rects(0, 1); test_window_rects(0, 2); test_window_rects(1, 2); /* move windows[2] to the right side of the screen */ windows[2].edge = ABE_RIGHT; SetRect(&windows[2].desired_rect, screen_width - 15, 0, screen_width, screen_height); testwindow_setpos(windows[2].hwnd); do_events_until(no_appbars_intersect); test_window_rects(0, 1); test_window_rects(0, 2); test_window_rects(1, 2); /* move windows[1] to the top of the screen */ windows[1].edge = ABE_TOP; SetRect(&windows[1].desired_rect, 0, 0, screen_width, 15); testwindow_setpos(windows[1].hwnd); do_events_until(no_appbars_intersect); test_window_rects(0, 1); test_window_rects(0, 2); test_window_rects(1, 2); /* move windows[1] back to the bottom of the screen */ windows[1].edge = ABE_BOTTOM; SetRect(&windows[1].desired_rect, 0, screen_height - 10, screen_width, screen_height); testwindow_setpos(windows[1].hwnd); do_events_until(no_appbars_intersect); test_window_rects(0, 1); test_window_rects(0, 2); test_window_rects(1, 2); /* removing windows[0] will cause windows[1] to move down into its space */ expected_bottom = max(windows[0].allocated_rect.bottom, windows[1].allocated_rect.bottom); org_bottom1 = windows[1].allocated_rect.bottom; ok(windows[0].allocated_rect.bottom > windows[1].allocated_rect.bottom, "Expected windows[0] to be lower than windows[1]\n"); abd.hWnd = windows[0].hwnd; windows[0].to_be_deleted = TRUE; ret = SHAppBarMessage(ABM_REMOVE, &abd); ok(ret == TRUE, "SHAppBarMessage returned %i\n", ret); windows[0].registered = FALSE; DestroyWindow(windows[0].hwnd); do_events_until(got_expected_bottom); if (windows[1].allocated_rect.bottom == org_bottom1) win_skip("Some broken Vista boxes don't move the higher appbar down\n"); else ok(windows[1].allocated_rect.bottom == expected_bottom, "windows[1]'s bottom is %i, expected %i\n", windows[1].allocated_rect.bottom, expected_bottom); test_window_rects(1, 2); /* remove the other windows */ abd.hWnd = windows[1].hwnd; windows[1].to_be_deleted = TRUE; ret = SHAppBarMessage(ABM_REMOVE, &abd); ok(ret == TRUE, "SHAppBarMessage returned %i\n", ret); windows[1].registered = FALSE; DestroyWindow(windows[1].hwnd); abd.hWnd = windows[2].hwnd; windows[2].to_be_deleted = TRUE; ret = SHAppBarMessage(ABM_REMOVE, &abd); ok(ret == TRUE, "SHAppBarMessage returned %i\n", ret); windows[2].registered = FALSE; DestroyWindow(windows[2].hwnd); }
static void on_paint (ClutterActor *stage, gconstpointer *data) { do_events (stage); }
int main(int argc,char *argv[]) { char *s; char *pr; char test[50]; char *mask; InitCrashDump(); SetConsoleCtrlHandler(HandlerRoutine,TRUE); filename[0] ='\0'; // strcpy(filename,"TEST.MAP"); args_support(argc-1,argv); printf("Hledam konfiguracni soubor\n"); config_file = read_config("WSKELDAL.INI"); if (config_file == NULL) { puts("...nemohu najit WSKELDAL.INI\n"); return 1; } if (strlen(filename)>3 && stricmp(filename+strlen(filename)-3,"adv") == 0) { TSTR_LIST adv_cfg = read_config(filename); config_file = merge_configs(config_file,adv_cfg); filename[0] = 0; } sample_path = get_text_field(config_file,"CESTA_ZVUKY"); if (sample_path == NULL) sample_path =""; mob_dir = get_text_field(config_file,"CESTA_ENEMY"); if (mob_dir == NULL) mob_dir =""; init_sound(); init(); concat(mask,get_text_field(config_file,"CESTA_MAPY"),"*.map"); atexit(shut_down); // signal(SIGABRT,shut_down); init_mob_list(); InitMapFiles(get_text_field(config_file,"CESTA_MAPY")); do { ask_exit_status = 2; if (filename[0] =='\0') browser(mask,filename); if (filename[0]!='\0') { char *mapy = get_text_field(config_file,"CESTA_MAPY"); memmove(filename+strlen(mapy),filename,strlen(filename)+1); memcpy(filename,mapy,strlen(mapy)); s = pripona(filename,".HI"); background_file = (char *)getmem(strlen(s)+1);strcpy(background_file,s); load_background(); } do_events(); logo(); pr = pripona(filename,SCR); script_name = NewArr(char,strlen(pr)+1); strcpy(script_name,pr); read_full_side_script(pr); read_spec_procs(); read_side_list(ITEMS_SCRIPT,&vzhled_veci,0,4); read_side_list(ITEMS_PICS,&pohledy_veci,0,2); read_dlg_list(DLG_SCRIPT,&dlg_names,&dlg_pgfs); read_side_list(WEAPONS_SCRIPT,&weapons,0,3); read_side_list(WEAPONS_SCRIPT,&weapons_pos,2,3); set_defaults(); init_multiactions(); memset(vyklenky,0,sizeof(vyklenky)); init_item_system(); if (filename[0]!='\0' ) { int sel = 1; init_maps(); set_defaults(); if (load_map(filename)) msg_box(filename,'\01',"Tento soubor je buƒ ne‡iteln˜, nebo po¨kozen˜","Pokra‡ovat",NULL); if (check_password(NULL) == 0) if (ask_password(test,0) == 0 || check_password(test) == 0) { filename[0] = 0; ask_exit_status = 1; goto preskoc; } if (maplen<2) { sel = msg_box(filename,' ',"Soubor neexistuje, bude vytvo©en nov˜. Nyn¡ je nutn‚ nastavit z kladn¡ stˆny" " a jin‚ dal¨¡ parametry pro tuto mapu","Pokra‡ujem","Zav©it",NULL); if (sel == 1) { newmap = 1; } } if (sel == 1) { create_menu(); redraw_window(); escape(); filename[0] = 0; close_current(); } } preskoc: free(background_file); } while (ask_exit_status == 1); ClearMapFiles(); redraw_desktop(); close_manager(); return 0; }