int rtt_crossref_channel(unsigned long ctx, pwr_tObjid objid, void* arg1, void* arg2, void* arg3, void* arg4) { pwr_tAName hiername; int sts; pwr_sAttrRef signal_aref; sts = gdh_ObjidToName(objid, hiername, sizeof(hiername), cdh_mNName); if (EVEN(sts)) { rtt_message('E', "Cross reference not defined"); return RTT__NOPICTURE; } strcat(hiername, ".SigChanCon"); sts = gdh_GetObjectInfo( hiername, (pwr_tAddress)&signal_aref, sizeof(signal_aref)); if (EVEN(sts)) return sts; sts = gdh_AttrrefToName(&signal_aref, hiername, sizeof(hiername), cdh_mNName); if (EVEN(sts)) { rtt_message('E', "Cross reference not defined"); return RTT__NOPICTURE; } sts = rtt_crr_signal(NULL, hiername); return sts; }
int rtt_view_search( view_ctx ctx, char *search_string) { int i; char *s; int offset; if ( !ctx->buff_read_complete) { rtt_message('E',"File too large"); return RTT__NOPICTURE; } else { /* Find the current offset */ if ( ctx->start_row >= ctx->buffrow_count -1) { rtt_message('E',"String not found"); return RTT__NOPICTURE; } offset = ctx->buffrow[ctx->start_row +1]; s = strstr( &ctx->buff[offset], search_string); if ( !s) { rtt_message('E',"String not found"); return RTT__NOPICTURE; } /* Find the line */ offset = s - ctx->buff; for ( i = 0; i < ctx->buffrow_count; i ++) { if ( ctx->buffrow[i] > offset ) { ctx->start_row = i - 1; if ( ctx->start_row < 0) ctx->start_row = 0; break; } } } return RTT__SUCCESS; }
int rtt_crossref_signal(unsigned long ctx, pwr_tObjid objid, void* arg1, void* arg2, void* arg3, void* arg4) { pwr_tOName hiername; int sts; sts = gdh_ObjidToName(objid, hiername, sizeof(hiername), cdh_mNName); if (EVEN(sts)) { rtt_message('E', "Cross reference not defined"); return RTT__NOPICTURE; } sts = rtt_crr_signal(NULL, hiername); return sts; }
int rtt_show_signals( menu_ctx parent_ctx, char* filename, char* windowname, int debug) { pwr_tFileName default_filename; FILE* file; char line[500]; int window_spaces; pwr_tOName window; pwr_tOName object; pwr_tOName objname; int spaces = 30; int sts; char* s; int wildcard; char title[250]; char classname[32]; int j; int index = 0; pwr_tObjid objid; pwr_tObjid childobjid; rtt_t_menu* menulist = 0; char filestr[80]; int lines; int window_found; pwr_tVolumeId volid; window_found = 0; rtt_toupper(windowname, windowname); /* Check if wildcard */ s = strchr(windowname, '*'); if (s == 0) wildcard = 0; else wildcard = 1; /* Open file */ if (filename == NULL) { /* Open file, first get the volume id */ if (!wildcard) { sts = gdh_NameToObjid(windowname, &objid); if (EVEN(sts)) { rtt_message('E', "Window not found"); return RTT__NOPICTURE; } volid = objid.vid; } else { sts = gdh_GetNodeObject(0, &objid); if (EVEN(sts)) return sts; volid = objid.vid; } sprintf(default_filename, "%srtt_plc_%s.dat", rtt_pwr_dir("pwrp_load"), rtt_VolumeIdToStr(volid)); rtt_get_defaultfilename(default_filename, filestr, NULL); file = fopen(filestr, "r"); } else { rtt_get_defaultfilename(filename, filestr, ".lis"); file = fopen(filestr, "r"); } if (file == 0) { rtt_message('E', "Unable to open file"); return RTT__NOPICTURE; } /* First line is a header, skip it */ sts = rtt_get_signal_line( file, line, sizeof(line), &window_spaces, object, &lines); if (EVEN(sts)) return RTT__NOFILE; /* Get the hierarchy */ while (spaces >= 30) { /* This is still the header */ sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) return RTT__NOFILE; } window_spaces = spaces; while (1) { while (spaces != window_spaces) { sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; } strcpy(window, object); rtt_toupper(window, window); sts = rtt_wildcard(windowname, window); if (!sts) { window_found = 1; /* Hit, print the window */ /* Get objid for the object */ sts = gdh_NameToObjid(window, &objid); if (EVEN(sts)) { sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; continue; } /* Get the object name */ sts = gdh_ObjidToName(objid, objname, sizeof(objname), cdh_mNName); if (EVEN(sts)) return sts; /* Get class name */ sts = rtt_objidtoclassname(objid, classname); if (EVEN(sts)) return sts; /* Add class name to objname in title */ strcpy(title, objname); for (j = strlen(title); j < 45; j++) strcat(title, " "); strcat(title, " "); strcat(title, classname); /* Mark if the object has children */ sts = gdh_GetChild(objid, &childobjid); if (ODD(sts)) strcat(title, " *"); if (!debug) { sts = rtt_menu_list_add(&menulist, index, 0, title, &rtt_hierarchy_child, &rtt_object_parameters, &rtt_crossref_signal, objid, 0, 0, 0, 0); if (EVEN(sts)) return sts; index++; } /* Find the signal list */ sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; while (spaces > window_spaces) { if (streq(object, "Signals")) { /* This is the signals */ sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; lines = 1; while ((spaces > window_spaces) && (lines == 1)) { /* Insert the object in menulist */ /* Get objid for the object */ sts = gdh_NameToObjid(object, &objid); if (EVEN(sts)) { /* End of this list, read next line and continue */ sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; continue; } /* Get the object name */ sts = gdh_ObjidToName(objid, objname, sizeof(objname), cdh_mNName); if (EVEN(sts)) return sts; /* Get class name */ sts = rtt_objidtoclassname(objid, classname); if (EVEN(sts)) return sts; /* Add class name to objname in title */ strcpy(title, " "); strcat(title, objname); for (j = strlen(title); j < 45; j++) strcat(title, " "); strcat(title, " "); strcat(title, classname); if (!debug) { sts = rtt_menu_list_add(&menulist, index, 0, title, &rtt_hierarchy_child, &rtt_object_parameters, &rtt_crossref_signal, objid, 0, 0, 0, 0); if (EVEN(sts)) return sts; index++; } else { sts = rtt_debug_object_add( objid, (rtt_t_menu_upd**)&menulist, &index, &one, 0, 0); if (EVEN(sts)) return sts; } sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; /* Check if end of signals !! */ } } else { sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; } } if (!wildcard) goto finish; } else { if (window_found) goto finish; sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; } } finish: fclose(file); if (menulist != 0) { strcpy(title, "LIST OF SIGNALS"); /* sts = rtt_menu_bubblesort( menulist);*/ if (!debug) sts = rtt_menu_new( parent_ctx, pwr_cNObjid, &menulist, title, 0, RTT_MENUTYPE_DYN); else sts = rtt_menu_upd_new(parent_ctx, pwr_cNObjid, (rtt_t_menu_upd**)&menulist, title, 0, RTT_MENUTYPE_DYN); if (sts == RTT__FASTBACK) return sts; else if (sts == RTT__BACKTOCOLLECT) return sts; else if (EVEN(sts)) return sts; } else { rtt_message('E', "No windows found"); return RTT__NOPICTURE; } return RTT__SUCCESS; }
int rtt_crr_code( char* filename, char* str, int brief, int func, int case_sensitive) { pwr_tFileName default_filename; FILE* file; char line[500]; char tst_line[500]; pwr_tAName object; pwr_tOName objname; int spaces; int first; int sts; char* s; int signalcount = 0; char filestr[80]; int lines; char* buff; pwr_tVolumeId volid; pwr_tObjid objid; int buffcnt = 0; int len; int i; int objname_written; int hit; char* tst_char; /* Open file */ if (filename == NULL) { sts = gdh_GetNodeObject(0, &objid); if (EVEN(sts)) return sts; volid = objid.vid; sprintf(default_filename, "%srtt_crrc_%s.dat", rtt_pwr_dir("pwrp_load"), rtt_VolumeIdToStr(volid)); rtt_get_defaultfilename(default_filename, filestr, NULL); file = fopen(filestr, "r"); } else { rtt_get_defaultfilename(filename, filestr, ".lis"); file = fopen(filestr, "r"); } if (file == 0) { rtt_message('E', "Unable to open file"); return RTT__NOPICTURE; } /* Case sensitive if any lowercase */ if (!case_sensitive) for (s = str; *s != 0; s++) { if (!isupper(*s)) case_sensitive = 1; } buff = calloc(1, CRR_BUFF_SIZE); if (!buff) { rtt_message('E', "Unable to allocate memory"); fclose(file); return RTT__NOPICTURE; } /* Get the hierarchy */ while (!str_StartsWith(line, " _Obj_ ")) { sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; } first = 1; while (1) { strcpy(objname, &line[7]); for (s = objname; !(*s == 32 || *s == 9 || *s == 0); s++) ; *s = 0; sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); objname_written = 0; while (!str_StartsWith(line, " _Obj_ ")) { if (!case_sensitive) rtt_toupper(tst_line, line); else strcpy(tst_line, line); hit = 0; if (!func) { if (strstr(tst_line, str) != 0) hit = 1; } else { if ((s = strstr(tst_line, str)) != 0) { hit = 1; /* Check char after */ tst_char = s + strlen(str); if (isalpha(*tst_char) || isdigit(*tst_char) || *tst_char == '_') hit = 0; /* Check char before */ if (s != tst_line) { tst_char = s - 1; if (isalpha(*tst_char) || isdigit(*tst_char) || *tst_char == '_') hit = 0; } } } if (hit) { /* Hit, print this object */ if (signalcount == 0) { rtt_clear_screen(); if (func) buffcnt = sprintf(buff, "Crossreferens list Function \"%s\"\n\n", str); else buffcnt = sprintf(buff, "Crossreferens list String \"%s\"\n\n", str); } signalcount++; if (buffcnt > CRR_BUFF_SIZE - 100) { buffcnt += sprintf( buff + buffcnt, "RTT-E-QUOTAEXC, Crossref quota exceeded"); goto finish; } if (!objname_written) { len = sprintf(buff + buffcnt, " %s", objname); objname_written = 1; } else len = 0; for (i = len; i < 45; i++) { strcat(buff + buffcnt + len, " "); len++; } buffcnt += len; buffcnt += sprintf(buff + buffcnt, " \"%s\"\n", line); if (brief) { while (!str_StartsWith(line, " _Obj_ ")) { sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; } } else { sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; } } else { sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; } } } finish: fclose(file); if (signalcount > 0) { sts = rtt_view(0, 0, buff, "Crossreference list", RTT_VIEWTYPE_BUF); return sts; } else { if (func) rtt_message('E', "String not found"); else rtt_message('E', "Function not found"); return RTT__NOPICTURE; } }
int rtt_crr_object(char* filename, char* objectname) { pwr_tFileName default_filename; FILE* file; char line[200]; int object_spaces; char object[80]; pwr_tOName objname; char show_objname[80]; int spaces; int first; int sts; char* s; int wildcard; int signalcount = 0; pwr_tFileName filestr; int lines; char* buff; pwr_tVolumeId volid; pwr_tObjid objid; int buffcnt = 0; rtt_toupper(objectname, objectname); /* Check if wildcard */ s = strchr(objectname, '*'); if (s == 0) wildcard = 0; else wildcard = 1; /* Open file */ if (filename == NULL) { /* Open file, first get the volume id */ if (!wildcard) { sts = gdh_NameToObjid(objectname, &objid); if (EVEN(sts)) { rtt_message('E', "Object not found"); return RTT__NOPICTURE; } volid = objid.vid; } else { sts = gdh_GetNodeObject(0, &objid); if (EVEN(sts)) return sts; volid = objid.vid; } sprintf(default_filename, "%srtt_crro_%s.dat", rtt_pwr_dir("pwrp_load"), rtt_VolumeIdToStr(volid)); rtt_get_defaultfilename(default_filename, filestr, NULL); file = fopen(filestr, "r"); } else { rtt_get_defaultfilename(filename, filestr, ".lis"); file = fopen(filestr, "r"); } if (file == 0) { rtt_message('E', "Unable to open file"); return RTT__NOPICTURE; } buff = calloc(1, CRR_BUFF_SIZE); if (!buff) { rtt_message('E', "Unable to allocate memory"); fclose(file); return RTT__NOPICTURE; } /* Get the object */ sts = rtt_get_signal_line(file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; object_spaces = spaces; first = 1; while (1) { if ((s = strchr(object, ':'))) strcpy(objname, s + 1); else strcpy(objname, object); strcpy(show_objname, objname); rtt_toupper(objname, objname); sts = rtt_wildcard(objectname, objname); if (sts) { pwr_tAName subname; strcpy(subname, objectname); strcat(subname, ".*"); sts = rtt_wildcard(subname, objname); } if (!sts) { /* Hit, print this object */ if (signalcount == 0) { rtt_clear_screen(); buffcnt = sprintf(buff, "Crossreferens list %s\n\n", show_objname); } signalcount++; sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; while (spaces > object_spaces) { str_trim(line, line); if (buffcnt > CRR_BUFF_SIZE - 100) { buffcnt += sprintf( buff + buffcnt, "RTT-E-QUOTAEXC, Crossref quota exceeded"); goto finish; } buffcnt += sprintf(buff + buffcnt, " %s\n", line); sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; } } else { if (!wildcard && signalcount) goto finish; sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; } while (spaces != object_spaces) { sts = rtt_get_signal_line( file, line, sizeof(line), &spaces, object, &lines); if (EVEN(sts)) goto finish; } } finish: fclose(file); if (signalcount > 0) { sts = rtt_view(0, 0, buff, "Crossreference list", RTT_VIEWTYPE_BUF); return sts; } else { rtt_message('E', "Object not found"); return RTT__NOPICTURE; } }
int rtt_view( menu_ctx parent_ctx, char *filename, char *inbuff, char *intitle, int type) { view_ctx ctx; unsigned long terminator; char input_str[80]; int maxlen = 30; unsigned long option; int sts; int i, start_i, end_i; int size, offset; int left_marg; int page_size = 21; int row_change; int redraw = 1; char str[100]; char title[80]; FILE *infile; char last_char; char pagestr[80]; if ( type == RTT_VIEWTYPE_FILE) { infile = fopen( filename, "r"); if ( !infile) { rtt_message('E',"Unable to open file"); return RTT__NOPICTURE; } rtt_fgetname( infile, title, filename); } else { strcpy( title, intitle); } ctx = calloc( 1, sizeof( *ctx)); if ( !ctx) { rtt_message('E',"Unable to allocate memory"); return RTT__NOPICTURE; } rtt_ctx_push( (menu_ctx) ctx); ctx->ctx_type = RTT_CTXTYPE_VIEW; strcpy( ctx->title, title); ctx->parent_ctx = parent_ctx; ctx->first = 1; if ( type == RTT_VIEWTYPE_FILE) ctx->infile = infile; else ctx->inbuff = inbuff; ctx->read_sts = (char *) 1; ctx->buff = calloc( 1, RTTVIEW_BUFF_SIZE); if ( !ctx->buff) { rtt_ctx_pop(); rtt_message('E',"Unable to allocate memory"); return RTT__NOPICTURE; } ctx->buffrow = calloc( RTTVIEW_BUFFROW_SIZE, sizeof(*ctx->buffrow)); if ( !ctx->buffrow) { rtt_ctx_pop(); rtt_message('E',"Unable to allocate memory"); return RTT__NOPICTURE; } ctx->buffrow_count = 0; ctx->start_row = 0; left_marg = 0; row_change = 0; if ( type == RTT_VIEWTYPE_FILE) rtt_read_file( ctx, ctx->buff, RTTVIEW_BUFF_SIZE, ctx->buffrow, RTTVIEW_BUFFROW_SIZE, &ctx->buffrow_count, 0, page_size, &ctx->start_row); else rtt_read_buff( ctx, ctx->buff, RTTVIEW_BUFF_SIZE, ctx->buffrow, RTTVIEW_BUFFROW_SIZE, &ctx->buffrow_count, 0, page_size, &ctx->start_row); option = RTT_OPT_NORECALL | RTT_OPT_NOEDIT | RTT_OPT_NOECHO | RTT_OPT_TIMEOUT; while (1) { if ( ctx->start_row + page_size > ctx->buffrow_count ) { if ( type == RTT_VIEWTYPE_FILE) rtt_read_file( ctx, ctx->buff, RTTVIEW_BUFF_SIZE, ctx->buffrow, RTTVIEW_BUFFROW_SIZE, &ctx->buffrow_count, 0, page_size, &ctx->start_row); else ctx->start_row = max( 0, ctx->buffrow_count - page_size); /* rtt_read_buff( ctx, ctx->buff, RTTVIEW_BUFF_SIZE, ctx->buffrow, RTTVIEW_BUFFROW_SIZE, &ctx->buffrow_count, 0, page_size, &ctx->start_row); */ redraw = 1; } else if ( ctx->start_row < 0) { if ( type == RTT_VIEWTYPE_FILE) rtt_read_file( ctx, ctx->buff, RTTVIEW_BUFF_SIZE, ctx->buffrow, RTTVIEW_BUFFROW_SIZE, &ctx->buffrow_count, 1, page_size, &ctx->start_row); else ctx->start_row = 0; /* rtt_read_buff( ctx, ctx->buff, RTTVIEW_BUFF_SIZE, ctx->buffrow, RTTVIEW_BUFFROW_SIZE, &ctx->buffrow_count, 1, page_size, &ctx->start_row); */ redraw = 1; } if ( redraw || row_change != 0) { redraw = 0; rtt_display_erase(); start_i = ctx->start_row; end_i = min(ctx->start_row+page_size, ctx->buffrow_count); rtt_cursor_abs( 1, 22-page_size); for ( i = ctx->start_row; i < end_i; i++) { if ( i == ctx->buffrow_count - 1) { offset = ctx->buffrow[i] + left_marg; rtt_view_get_row_size( &ctx->buff[offset], 80, &size, &last_char); size = min( size, 80); if ( last_char != 10) r_print("%.*s\n\r", size, &ctx->buff[offset]); else r_print("%.*s\r", size, &ctx->buff[offset]); /* str[80] = 0; r_print("%80s\n", str); */ } else { offset = min( ctx->buffrow[i+1] - 1, ctx->buffrow[i] + left_marg); size = min( ctx->buffrow[i+1] - offset, 80); rtt_view_get_row_size( &ctx->buff[offset], 80, &size, &last_char); size = min( size, 80); if ( last_char != 10) r_print("%.*s\n\r", size, &ctx->buff[offset]); else r_print("%.*s\r", size, &ctx->buff[offset]); } } rtt_cursor_abs( 1, 22); rtt_char_inverse_start(); if ( end_i == ctx->buffrow_count) sprintf( pagestr, "%d-EOF(%d)", start_i+1, ctx->buffrow_count); else sprintf( pagestr, "%d-%d(%d)", start_i+1, end_i, ctx->buffrow_count); sprintf( str, " |%12s | Ctrl/R back", pagestr); strncpy( &str[1], title, min( strlen( title), 49)); r_print( "%80s", str); rtt_char_inverse_end(); rtt_cursor_abs( 1, 23); rtt_eofline_erase(); rtt_cursor_abs( 1, 24); rtt_eofline_erase(); } row_change = 0; r_print_buffer(); rtt_command_get_input_string( (char *) &rtt_chn, input_str, &terminator, maxlen, rtt_recallbuff, option, rtt_scantime, &rtt_scan, ctx, NULL, RTT_COMMAND_PICTURE); rtt_message('S',""); switch ( terminator) { case RTT_K_ARROW_UP: if ( type == RTT_VIEWTYPE_BUF) { if ( ctx->start_row - RTTVIEW_ARROW_INC < 0) { ctx->start_row = 0; row_change = RTTVIEW_ARROW_INC - ctx->start_row; } else { ctx->start_row -= RTTVIEW_ARROW_INC; row_change = -RTTVIEW_ARROW_INC; } redraw = 0; } else { ctx->start_row -= RTTVIEW_ARROW_INC; row_change = -RTTVIEW_ARROW_INC; redraw = 0; } break; case RTT_K_ARROW_DOWN: ctx->start_row += RTTVIEW_ARROW_INC; row_change = RTTVIEW_ARROW_INC; redraw = 0; break; case RTT_K_ARROW_RIGHT: left_marg += 8; redraw = 1; break; case RTT_K_ARROW_LEFT: redraw = 1; left_marg -= 8; if ( left_marg < 0) left_marg = 0; break; case RTT_K_NEXTPAGE: /* Next page */ ctx->start_row += RTTVIEW_PAGE_INC; row_change = RTTVIEW_PAGE_INC; redraw = 0; break; case RTT_K_PREVPAGE: /* Previous page */ ctx->start_row -= RTTVIEW_PAGE_INC; row_change = -RTTVIEW_PAGE_INC; redraw = 0; break; case RTT_K_RETURN: break; case RTT_K_PF1: /* Top */ ctx->buffstart_row = 0; ctx->start_row = 0; rtt_read_buff( ctx, ctx->buff, RTTVIEW_BUFF_SIZE, ctx->buffrow, RTTVIEW_BUFFROW_SIZE, &ctx->buffrow_count, 1, page_size, &ctx->start_row); redraw = 1; break; case RTT_K_PF2: /* Bottom */ ctx->start_row = max( 0, ctx->buffrow_count - page_size); if ( type == RTT_VIEWTYPE_FILE) { while( ctx->read_sts != NULL) { rtt_read_buff( ctx, ctx->buff, RTTVIEW_BUFF_SIZE, ctx->buffrow, RTTVIEW_BUFFROW_SIZE, &ctx->buffrow_count, 0, page_size, &ctx->start_row); ctx->start_row = ctx->buffrow_count - page_size + 1; } } redraw = 1; break; case RTT_K_PF3: rtt_message('E', "Function not defined"); break; case RTT_K_PF4: if ( type == RTT_VIEWTYPE_FILE) fclose( ctx->infile); free( ctx->buff); free( ctx->buffrow); free( ctx); rtt_ctx_pop(); return RTT__SUCCESS; case RTT_K_FAST_1: case RTT_K_FAST_2: case RTT_K_FAST_3: case RTT_K_FAST_4: case RTT_K_FAST_5: case RTT_K_FAST_6: case RTT_K_FAST_7: case RTT_K_FAST_8: case RTT_K_FAST_9: case RTT_K_FAST_10: case RTT_K_FAST_11: case RTT_K_FAST_12: case RTT_K_FAST_13: case RTT_K_FAST_14: case RTT_K_FAST_15: rtt_fastkey = terminator - RTT_K_FAST; sts = rtt_get_fastkey_type(); if ( sts == RTT__NOPICTURE) { sts = rtt_get_fastkey_picture( (menu_ctx) ctx); if ( EVEN(sts)) return sts; break; } case RTT_K_CTRLZ: if ( type == RTT_VIEWTYPE_FILE) fclose( ctx->infile); free( ctx->buff); free( ctx->buffrow); free( ctx); rtt_ctx_pop(); return RTT__FASTBACK; case RTT_K_CTRLW: redraw = 1; break; case RTT_K_CTRLK: /* Acknowledge last alarm */ sts = rtt_alarm_ack_last(); break; case RTT_K_CTRLL: /* Change description mode */ if ( !rtt_description_on) sts = rtt_cli( rtt_command_table, "SET DESCRIPTION", (void *) ctx, 0); else sts = rtt_cli( rtt_command_table, "SET NODESCRIPTION", (void *) ctx, 0); break; case RTT_K_CTRLV: break; case RTT_K_CTRLN: break; case RTT_K_DELETE: break; case RTT_K_COMMAND: sts = rtt_get_command( (menu_ctx) ctx, (char *) &rtt_chn, rtt_recallbuff, 0, 0, ctx, "pwr_rtt> ", 0, RTT_ROW_COMMAND, rtt_command_table); /* menu_ptr might have been changed */ if ( EVEN(sts)) return sts; if ( sts == RTT__FASTBACK) { if ( type == RTT_VIEWTYPE_FILE) fclose( ctx->infile); free( ctx->buff); free( ctx->buffrow); free( ctx); rtt_ctx_pop(); return RTT__FASTBACK; } if ( sts == RTT__BACK) { if ( type == RTT_VIEWTYPE_FILE) fclose( ctx->infile); free( ctx->buff); free( ctx->buffrow); free( ctx); rtt_ctx_pop(); return RTT__SUCCESS; } if ( sts == RTT__BACKTOCOLLECT) { if ( type == RTT_VIEWTYPE_FILE) fclose( ctx->infile); free( ctx->buff); free( ctx->buffrow); free( ctx); rtt_ctx_pop(); return RTT__BACKTOCOLLECT; } if ( sts != RTT__NOPICTURE) { redraw = 1; } break; case RTT_K_HELP: /* Try to find subject in application help */ sts = rtt_help( parent_ctx, "VIEW WINDOW", rtt_appl_helptext); if ( sts == RTT__NOHELPSUBJ) rtt_help( parent_ctx, "OBJECT MENU", (rtt_t_helptext *) rtt_command_helptext); redraw = 1; break; } } return RTT__SUCCESS; }