void read_all_groups(void) { int rc,c; char the_path[FMSIZE],directory[15]; /* char status[50]; */ if (ncn<0) { return; } strcpy( the_path, article_path ); /* save article_path */ for (c=0;c<maximum_group+1;c++) { if (group[c].first_msg<=group[c].last_msg) { /* any articles? */ use_status( 2 ); /* use window info line */ newsgroup_to_directory( group[c].name, directory ); mkdir( article_path, S_IWRITE|S_IREAD ); show_status( group[c].name ); evnt_timer( 1200, 0 ); /* wait 1.2 seconds */ if (ncn>=0) { rc = news_group( group[c].name ); read_all_articles( c, article_path ); group[c].viewed = VIEWED; } hide_status(); } } unload_group( current_newsgroup ); strcpy( article_path, the_path ); /* restore article_path */ }
/* * Delay for slider auto-repeat. */ void sl_delay( void ) { evnt_timer( sl_time, 0 ); if( sl_time > SL_MIN_DELAY ) sl_time -= SL_INC; }
/*----------------------------------------------------------------------------------------*/ void sld_arrow( SLD *slider, int16 scroll, int16 val ) { EVNTDATA ev; GRECT rect; int16 pos; switch( scroll ) { case SCROLL_LINE: wdset_state( slider->wd, ( val < 0 ? slider->up : slider->down ), SELECTED, TRUE ); break; case SCROLL_PAGE: graf_mkstate( &ev ); objc_rect( slider->wd->tree, slider->white, &rect ); if( !val ) /* new */ val = ev.y < rect.g_y ? -1 : 1; break; } do { pos = slider->scroll( slider->wd, scroll, val ); sld_setpos( slider, pos ); sld_redraw( slider ); graf_mkstate( &ev ); evnt_timer(20); } while ( ev.bstate & 0x01 ); wdset_state( slider->wd, ( val < 0 ? slider->up : slider->down ), SELECTED, FALSE ); }
int arrow_form_do ( XDINFO *treeinfo, /* dialog tree info */ int *oldbutton /* previously pressed button, 0 if none */ ) { OBJECT *tree; int button; tree = treeinfo->tree; if ( *oldbutton > 0 ) { evnt_timer(150, 0); if ( (xe_button_state() & 1) == 0 ) { tree[*oldbutton].ob_state &= ~SELECTED; xd_draw ( treeinfo, *oldbutton, 1 ); *oldbutton = 0; } } button = xd_form_do(treeinfo, ROOT) & 0x7FFF; if ( button != *oldbutton ) { tree[button].ob_state |= SELECTED; xd_draw ( treeinfo, button, 1 ); *oldbutton = button; } return button; }
void gem_prgm() { OBJECT *tree; int box_x, box_y, box_w, box_h, button, end = FALSE; int work_in[11], work_out[57], count, dummy; for (count = 0; count < 10; count++) work_in[count] = 1; work_in[10] = 2; vdi_handle = graf_handle (& dummy, & dummy, & dummy, & dummy); v_opnvwk (work_in, & vdi_handle, work_out); vq_extnd (vdi_handle, 1, work_out); planes = work_out[4]; rsrc_gaddr (R_TREE, LOGCTRL, & tree); form_center (tree, & box_x, & box_y, & box_w, & box_h); form_dial (FMD_START, 0,0,0,0, box_x, box_y, box_w, box_h); objc_draw (tree, ROOT, MAX_DEPTH, box_x, box_y, box_w, box_h); do { button = form_do (tree, 0) & 0x7fffu; evnt_timer (60, 0); tree[button].ob_state &= ~SELECTED; objc_draw (tree, button, 1, box_x, box_y, box_w, box_h); switch (button) { case FILENAM : modify_fname(); objc_draw (tree, ROOT, MAX_DEPTH, box_x, box_y, box_w, box_h); break; case CLIENT : case MODULE : form_dial (FMD_FINISH, 0,0,0,0, box_x, box_y, box_w, box_h); do_dialog ((button == CLIENT) ? CLI_API : MOD_API); form_dial (FMD_START, 0,0,0,0, box_x, box_y, box_w, box_h); objc_draw (tree, ROOT, MAX_DEPTH, box_x, box_y, box_w, box_h); break; case TERM : if (form_alert (1, "[2][ | Remove LogSTinG and | leave LogCTRL ?][ Yes | No ]") == 1) { if ((long) (*sting_drivers->get_dftab) ("LOGSTING : REMOVE") == 'OkOk') end = TRUE; else form_alert (1, "[1][ | Could not remove LogSTinG ! ][ Hmmm ]"); } break; case FIX : if (form_alert (1, "[2][ | Activate new settings ? ][ Yes | No ]") == 1) do_settings(); break; case CANCEL : if (form_alert (1, "[2][ | Leave LogCTRL ? ][ Yes | No ]") == 1) end = TRUE; break; } } while (! end); form_dial (FMD_FINISH, 0,0,0,0, box_x, box_y, box_w, box_h); v_clsvwk (vdi_handle); }
/*! desk events */ void event_desk(void) { int old_x, old_y, new_x, new_y, dummy; evnt_timer(70, 0); /* timer delay */ graf_mkstate(&dummy, &dummy, &mk, &dummy); if((object == BU_ICN) &&(mk == 1)) { /* icon still cliked -> move */ old_x = adr_desk[object].ob_x; old_y = adr_desk[object].ob_y; graf_dragbox(adr_desk[object].ob_width, adr_desk[object].ob_height, adr_desk[object].ob_x + bureau.xd, adr_desk[object].ob_y + bureau.yd, bureau.xd, bureau.yd, bureau.wd, bureau.hd, &new_x, &new_y); adr_desk[object].ob_x = new_x - bureau.xd; adr_desk[object].ob_y = new_y - bureau.yd; form_dial(FMD_FINISH, 0, 0, 0, 0, old_x + bureau.xd, old_y + bureau.yd, adr_desk[object].ob_width, adr_desk[object].ob_height); form_dial(FMD_FINISH, 0, 0, 0, 0, adr_desk[object].ob_x + bureau.xd, adr_desk[object].ob_y + bureau.yd, adr_desk[object].ob_width, adr_desk[object].ob_height); } else if(((object == BU_BOXTXT) ||(object == BU_TXT1) ||(object == BU_TXT2)) &&(mk == 1)) { /* text stiil cliked -> move */ old_x = adr_desk[BU_BOXTXT].ob_x; old_y = adr_desk[BU_BOXTXT].ob_y; graf_dragbox(adr_desk[BU_BOXTXT].ob_width, adr_desk[BU_BOXTXT].ob_height, adr_desk[BU_BOXTXT].ob_x + bureau.xd, adr_desk[BU_BOXTXT].ob_y + bureau.yd, bureau.xd, bureau.yd, bureau.wd, bureau.hd, &new_x, &new_y); adr_desk[BU_BOXTXT].ob_x = new_x - bureau.xd; adr_desk[BU_BOXTXT].ob_y = new_y - bureau.yd; form_dial(FMD_FINISH, 0, 0, 0, 0, old_x + bureau.xd - 3, old_y + bureau.yd - 3, adr_desk[BU_BOXTXT].ob_width + 6, adr_desk[BU_BOXTXT].ob_height + 6); form_dial(FMD_FINISH, 0, 0, 0, 0, adr_desk[BU_BOXTXT].ob_x + bureau.xd - 3, adr_desk[BU_BOXTXT].ob_y + bureau.yd - 3, adr_desk[BU_BOXTXT].ob_width + 6, adr_desk[BU_BOXTXT].ob_height + 6); } else if(((object == ZERO) ||(object == BU_IMG)) && (adr_desk[BU_ICN].ob_state & SELECTED) &&(mk == 0)) { /* desk clicked -> deselect */ adr_desk[BU_ICN].ob_state &= ~SELECTED; form_dial(FMD_FINISH, 0, 0, 0, 0, adr_desk[BU_ICN].ob_x + bureau.xd, adr_desk[BU_ICN].ob_y + bureau.yd, adr_desk[BU_ICN].ob_width, adr_desk[BU_ICN].ob_height); } else if((object == BU_ICN) && NOT(adr_desk[BU_ICN].ob_state & SELECTED) && (mk == 0)) { /* simple click icon -> select */ adr_desk[BU_ICN].ob_state |= SELECTED; form_dial(FMD_FINISH, 0, 0, 0, 0, adr_desk[BU_ICN].ob_x + bureau.xd, adr_desk[BU_ICN].ob_y + bureau.yd, adr_desk[BU_ICN].ob_width, adr_desk[BU_ICN].ob_height); } } /* end of event_desk() */
/* ----------------------------- */ void funk_blink(int ind) { back[F1_BUT + (ind << 2)].ob_state ^= SELECTED; redraw_w0(F1_BUT + (ind << 2)); evnt_timer(150, 0); back[F1 + (ind << 2)].ob_state &= ~SHADOWED; back[F1_BUT + (ind << 2)].ob_state ^= SELECTED; redraw_w0(F1 + (ind << 2)); back[F1 + (ind << 2)].ob_state &= ~SHADOWED; }
void sl_arrow( int base, int obj, int inc, int min, int max, int *numvar ) { OBJECT *tree = rs_object; int slider = ObHead(base); MRETS mk; int newvalue, oldvalue, delay = SL_MAX_DELAY; GRECT slidrect; slidrect = ObRect( slider ); objc_offset( tree, slider, &slidrect.g_x, &slidrect.g_y ); /* account for outlines */ slidrect.g_x--; slidrect.g_y--; slidrect.g_w += 2; slidrect.g_h += 2; if( obj > 0 ) select( tree, obj ); oldvalue = *numvar; do { newvalue = *numvar + inc; if( newvalue < min ) newvalue = min; else if( newvalue > max ) newvalue = max; /* if in bounds, change the slider thumb */ if( newvalue != oldvalue ) { oldvalue = newvalue; *numvar = newvalue; sl_x( base, newvalue, min, max ); /* undraw old */ Objc_draw( tree, base, 0, &slidrect ); /* draw new */ objc_offset( tree, slider, &slidrect.g_x, &slidrect.g_y ); slidrect.g_x--; slidrect.g_y--; Objc_draw( tree, base, MAX_DEPTH, &slidrect ); evnt_timer( delay, 0 ); if( delay > SL_MIN_DELAY ) delay -= SL_INC; } Graf_mkstate( &mk ); } while( mk.buttons != 0 ); if( obj > 0 ) deselect( tree, obj ); Objc_draw( tree, base, MAX_DEPTH, &slidrect ); }
static void do_arrows(int button, OBJECT *tree, SLIDER *sl, XDINFO *info) { boolean redraw, first = TRUE; int mstate; xd_change(info, button, SELECTED, 1); do { redraw = FALSE; if (button == sl->up_arrow) { if (sl->line > 0) { sl->line--; redraw = TRUE; sl_set_slider(tree, sl, info); } } else { if (sl->line < (sl->n - sl->lines)) { sl->line++; redraw = TRUE; sl_set_slider(tree, sl, info); } } if (redraw == TRUE) sl->set_selector(sl, TRUE, info); mstate = xe_button_state() & 1; if ((first == TRUE) && mstate) { evnt_timer(250, 0); first = FALSE; } } while (mstate); xd_change(info, button, NORMAL, 1); }
static WORD do_deskmenu(WORD item) { WORD done, touchob; OBJECT *tree, *obj; done = FALSE; switch(item) { case ABOUITEM: display_free_stack(); tree = G.a_trees[ADDINFO]; /* draw the form */ show_hide(FMD_START, tree); while(!done) { touchob = form_do(tree, 0); touchob &= 0x7fff; if (touchob == DEICON) { #if CONF_WITH_EASTER_EGG int i; for (i = 0; i < 23; i++) { sound(TRUE, freq[i], dura[i]); evnt_timer(dura[i]*64, 0); } #endif } else done = TRUE; } obj = tree + DEOK; obj->ob_state = NORMAL; show_hide(FMD_FINISH, tree); done = FALSE; break; } return done; }
void main_event_loop() { fgbg=(_app?FG:BG); while(!quit) { if(closed_acc) { evnt_timer(1000,0); #ifdef DEBUG form_alert(1,"[1][ACC reopened][Ok]"); #endif fg_init(&windforms[WIND_CTRL]); if(file_was_open) fd=reopen_file(); closed_acc=0; } if(fgbg==FG) fg_event_loop(); else if(fgbg==BG) bg_event_loop(); } }
void init_manager(void) { #ifdef DEBUG printf(DEBUG_ACTIVATED); #endif _GemParBlk.global[0]=0; ap_id = appl_init(); if (!_GemParBlk.global[0]) exit(0); if (ap_id < 0) exit(0); if (!_app) wind_update(BEG_UPDATE); Pdomain(1); check_cookies(); if (_GemParBlk.global[1] != 1) multitask = 1; if ((_GemParBlk.global[0] >= 0x0400) && (multitask)) multitos = 1; allocmode = GLOBAL; if (_app) allocmode |= 3; read_name(); check_info(); if ((!_app) || ((multitos) && (!magix))) { menu_id = menu_register(ap_id,STRING_MENUENTRY); if (menu_id < 0) { if (!_app) wind_update(END_UPDATE); if (multitos) { appl_exit(); exit(0); } else { while (1) evnt_timer(0,1); } } } find_inf(); if (!_app) wind_update(END_UPDATE); Psignal(SIGTERM,sig_handler); Psignal(SIGQUIT,sig_handler); if (!multitask) { char s[256]; strcpy(s,"[0][OLGA v"); strcat(s,OLGAVERSIONSTR); strcat(s," Rev "); strcat(s,OLGAREVISION); strcat(s," ("); strcat(s,OLGADATE); strcat(s,") | |"); strcat(s,MESSAGE_MULTITASKING); form_alert(1,s); if (_app) { #ifdef DEBUG printf(DEBUG_DEACTIVATED); #endif appl_exit(); exit(0); } } if (shutdown) shel_write(9,1,0,NULL,NULL); broadcast_olenew(); }
do_batch(void) { int hd,sec,hd2; char line[80],*l; long timer; if (fsel("*.TTB",tbuf,"Batch starten") == 1){ if ((hd=Fopen(tbuf,0)) > 0) { while (readline(hd,line)){ l=line; while (*l++ > 32); *(l-1)=0; strupr(line); if (!strcmp(line,"DIAL")) { if (call_modem(-1,l)) break; else continue; } if (!strcmp(line,"WAIT")) { sec=atoi(l); timer=get_timer(); while ((get_timer()-timer) < (sec*200)) evnt_timer(0,0); continue; } if (!strcmp(line,"RWAIT")) { if (rwait(l) == 0) continue; else break; } if (!strcmp(line,"SEND")) { while(*l) send(*l++); send(13); continue; } if (!strcmp(line,"END")) { break; } if (!strcmp(line,"BAUDRATE")) { continue; } if (!strcmp(line,"UPLOAD")) { if (*l == 'X') { para.blklen=128; para.chk=CHKSUM; } if (*l == 'Y') { para.blklen=1024; para.chk=CRC; } while (*l++ > 32); *(l-1)=0; open_dial(1); if ((hd2=Fopen(l,0)) > 0) { send_xmodem(hd2); Fclose(hd2); } open_dial(0); } if (!strcmp(line,"DOWNLOAD")) { if (*l == 'X') { para.blklen=128; para.chk=CHKSUM; } if (*l == 'Y') { para.blklen=1024; para.chk=CRC; } while (*l++ > 32); *(l-1)=0; open_dial(1); if ((hd2=Fcreate(l,0)) > 0) { receive_xmodem(hd2); Fclose(hd2); } open_dial(0); } } Fclose(hd); } } }
int main(void) { int error; #if _MINT_ /* HR 151102 */ have_ssystem = Ssystem(-1, 0, 0) == 0; /* HR 151102: use Ssystem where possible */ mint = (find_cookie('MiNT') == -1) ? FALSE : TRUE; magx = (find_cookie('MagX') == -1) ? FALSE : TRUE; /* HR 151102 */ geneva = (find_cookie('Gnva') == -1) ? FALSE : TRUE; /* DjV 035 080203 */ mint |= magx; /* Quick & dirty */ if (mint) { Psigsetmask(0x7FFFE14EL); Pdomain(1); } #endif x_init(); if ((ap_id = appl_init()) < 0) return -1; if (_GemParBlk.glob.version >= 0x400) { shel_write(9, 1, 0, NULL, NULL); menu_register(ap_id, " Tera Desktop"); } if (rsrc_load(RSRCNAME) == 0) form_alert(1, msg_resnfnd); else { if ((error = init_xdialog(&vdi_handle, malloc, free, "Tera Desktop", 1, &nfonts)) < 0) xform_error(error); else { init_vdi(); rsc_init(); if (((max_w / screen_info.fnt_w) < 40) || ((max_h / screen_info.fnt_h) < 25)) alert_printf(1, MRESTLOW); else { if ((error = alloc_global_memory()) == 0) { if (exec_deskbat() == FALSE) { if (load_icons() == FALSE) { if (init() == FALSE) { graf_mouse(ARROW, NULL); evntloop(); wd_del_all(); menu_bar(menu, 0); xw_close_desk(); } free_icons(); /* HR 151102 */ wind_set(0, WF_NEWDESK, NULL, 0); dsk_draw(); } } Mfree(global_memory); } else xform_error(error); } if (vq_gdos() != 0) vst_unload_fonts(vdi_handle, 0); exit_xdialog(); } rsrc_free(); } /* DjV 013 030103 100203 ---vvv--- */ /* * The following section handles system shutdown and resolution change * If a resolution change is required, shutdown is performed first * If only shutdown s required, system will reset at the end. */ /* appl_exit(); */ if ( chrez || shutdown ) /* If change resolution or shutdown ... */ { /* Tell all applications which would understand it to end */ quit = shel_write ( 4, 2, 0, NULL, NULL ); /* complete shutdown */ evnt_timer( 3000, 0 ); /* Wait a bit? */ /* /* * In Mint, must tell all proceseses to terminate nicely ? * but this is only in this group ? What to do? */ Pkill(0, SIGTERM); evnt_timer(3000, 0); /* Wait a bit? */ */ /* * After all applications have hopefully been closed, * change the screen resolution if needed; * else- reset the computer */ if ( chrez ) get_set_video(2); #if 1 else #if _MINT_ if (!mint) /* HR 230203: Dont reset under MiNT or MagiC !!!!! */ #endif { /* Perform a reset here */ #if 0 /* with warnings */ long *m; /* to memory locations */ long rv; /* reset vector */ Super ( 0L ); /* Supervisor; old stack won't be needed again */ *(m = 0x420L) = 0L; /* memctrl */ *(m = 0x43aL) = 0L; /* memval2 */ *(m = 0x426L) = 0L; /* resvalid */ m = *( m = 0x4f2 ); /* to start of OS */ rv = *(m + 4); /* to routine that handles the reset */ Supexec(rv); /* execute it */ #else /* HR: without warnings */ long (*rv)(); /* reset vector */ Super ( 0L ); /* Supervisor; old stack won't be needed again */ memctrl = 0L; memval2 = 0L; resvalid = 0L; (long)rv = *((long *)os_start + 4); /* routine that handles the reset */ Supexec(rv); /* execute it */ #endif } #endif }
static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8]) { struct core_window *tv=NULL; GRECT tb_area; GUIWIN * gemtk_win; struct atari_sslcert_viewer_s *cvwin = NULL; short retval = 0; OBJECT *toolbar; NSLOG(netsurf, INFO, "win %p", win); if(ev_out->emo_events & MU_MESAG){ switch (msg[0]) { case WM_TOOLBAR: toolbar = gemtk_obj_get_tree(TOOLBAR_SSL_CERT); NSLOG(netsurf, INFO, "CERTVIEWER WM_TOOLBAR"); tv = (struct core_window*) gemtk_wm_get_user_data(win); assert(tv); cvwin = (struct atari_sslcert_viewer_s *) atari_treeview_get_user_data(tv); switch (msg[4]) { case TOOLBAR_SSL_CERT_TRUSTED: if (toolbar[msg[4]].ob_state & OS_SELECTED) { } else { } break; } gemtk_win = atari_treeview_get_gemtk_window(tv); assert(gemtk_win); //gemtk_obj_get_tree(TOOLBAR_HOTLIST)[msg[4]].ob_state &= ~OS_SELECTED; atari_treeview_get_grect(tv, TREEVIEW_AREA_TOOLBAR, &tb_area); evnt_timer(150); gemtk_wm_exec_redraw(gemtk_win, &tb_area); retval = 1; break; case WM_CLOSED: // TODO set perrmissions toolbar = gemtk_obj_get_tree(TOOLBAR_SSL_CERT); tv = (struct core_window*) gemtk_wm_get_user_data(win); assert(tv); cvwin = (struct atari_sslcert_viewer_s *) atari_treeview_get_user_data(tv); if (toolbar[TOOLBAR_SSL_CERT_TRUSTED].ob_state & OS_SELECTED) { sslcert_viewer_accept(cvwin->ssl_session_data); } else { sslcert_viewer_reject(cvwin->ssl_session_data); } atari_sslcert_viewer_destroy(cvwin); retval = 1; break; default: break; } } return(retval); }
void do_some_work() { NDB *ndb; time_t timeout; int handle, message[2], response, ready; if ((handle = UDP_open (0, IP_DIALER_PORT)) < 0) { form_alert (1, no_udp); return; } for (;;) { timeout = time (NULL) + TIMEOUT; do { evnt_timer (200, 0); if ((ndb = CNget_NDB (handle)) != NULL) { switch (* (int16 *) ndb->ndata) { case IP_DIAL_REQUEST : sprintf (alert, query, ndb->ndata + 4, * (int16 *) (ndb->ndata + 2)); if (form_alert (1, alert) == 1) message[0] = IP_DIAL_DONE, message[1] = 0; else { message[0] = IP_DIAL_ERROR; response = 0; do { sprintf (alert, number, response); ready = 0; switch (form_alert (1, alert)) { case 1 : response --; break; case 2 : ready = 1; break; case 3 : response ++; break; } } while (! ready); message[1] = response; } break; case IP_DIAL_HANGUP : form_alert (1, hangup); message[0] = IP_DIAL_DONE; message[1] = 0; break; } KRfree (ndb->ptr); KRfree (ndb); UDP_send (handle, (char *) message, 4); UDP_close (handle); if ((handle = UDP_open (0, IP_DIALER_PORT)) < 0) { form_alert (1, no_udp); return; } } } while (time (NULL) < timeout); if (form_alert (1, proceed) != 1) break; } UDP_close (handle); }
/*----------------------------------------------------------------------------------------*/ void sld_lscroll( SLD *sld ) { OBJECT *tree = sld->wd->tree; EVNTDATA ev; GRECT rect1; GRECT rect2; GRECT rect3; int16 newy = 0; int16 oldy = 0; int16 mmin, mmax; graf_mkstate( &ev ); newy = oldy = ev.y; objc_rect( tree, sld->white, &rect1 ); objc_rect( tree, sld->back, &rect2 ); mmin = oldy - tree[sld->white].ob_y; mmax = oldy + (tree[sld->back].ob_height - tree[sld->white].ob_y - tree[sld->white].ob_height); graf_mouse( FLAT_HAND, NULL ); do { objc_rect( tree, sld->white, &rect2 ); tree[sld->white].ob_y += ( newy-oldy ); objc_rect( tree, sld->white, &rect1 ); rect3.g_x = rect1.g_x; rect3.g_y = min( rect1.g_y, rect2.g_y ); rect3.g_w = rect1.g_w; rect3.g_h = (( (newy-oldy) < 0 ) ? -(newy-oldy) : (newy-oldy) ) + rect1.g_h; if(newy-oldy != 0) { hide_mouse(); if( gl_naes ) { rect3.g_x-=2; rect3.g_y-=2; rect3.g_w+=4; rect3.g_h+=4; } objc_draw( tree, sld->back, MAX_DEPTH, &rect3 ); sld->pos_old = sld->pos_new = sld_getpos(sld); if( sld->scroll ) sld->scroll( sld->wd, SCROLL_LIVE, sld->pos_new ); show_mouse(); } graf_mkstate( &ev ); oldy = newy; newy = min( mmax, ev.y ); newy = max( mmin, newy ); evnt_timer(20); } while ( ev.bstate & 0x01 ); graf_mouse( ARROW, NULL ); }
void main() { int message[8], flag; char string[6]; gl_apid = appl_init(); if (! _app) { menu_register (gl_apid, " Super Server"); evnt_timer (1000, 0); } if (! rsrc_load ("IND.RSC")) { form_alert (1, "[1][ | Cannot find IND.RSC ! ][ Cancel ]"); terminate(); return; } get_path(); if (initialise_windows (4, ICONIFY) == 0) { leave_windows(); rsrc_free(); terminate(); return; } if (get_version (string) > 0) { form_alert (1, "[1][ | STiK is not loaded, | | or corrupted !][ Cancel ]"); leave_windows(); rsrc_free(); terminate(); return; } change_freestring (START, ST_VERS, -1, string, 5); change_freestring (START, SS_VERS, -1, version, 5); set_api_struct(); if (init_modules() == 0) { leave_windows(); rsrc_free(); terminate(); return; } set_callbacks (CB_EVENT, (FUNC) check_modules, (FUNC) 0L); init_configs(); graf_mouse (ARROW, NULL); if (_app) { do_some_work(); while (! exit_inetd) { evnt_mesag (message); message_handler (message); while ((flag = operate_events()) >= 0); if (flag == -4) exit_inetd = TRUE; } } else { FOREVER { evnt_mesag (message); message_handler (message); } } if (strings) Mfree (strings); terminate_modules(); leave_windows(); rsrc_free(); appl_exit(); }