void textdelete(Text *t, uint q0, uint q1, int tofile) { uint n, p0, p1; int i, c; Text *u; if(tofile && t->ncache != 0) error("text.delete"); n = q1-q0; if(n == 0) return; if(tofile){ filedelete(t->file, q0, q1); if(t->what == Body){ t->w->dirty = TRUE; t->w->utflastqid = -1; } if(t->file->ntext > 1) for(i=0; i<t->file->ntext; i++){ u = t->file->text[i]; if(u != t){ u->w->dirty = TRUE; /* always a body */ textdelete(u, q0, q1, FALSE); textsetselect(u, u->q0, u->q1); textscrdraw(u); } } } if(q0 < t->iq1) t->iq1 -= min(n, t->iq1-q0); if(q0 < t->q0) t->q0 -= min(n, t->q0-q0); if(q0 < t->q1) t->q1 -= min(n, t->q1-q0); if(q1 <= t->org) t->org -= n; else if(q0 < t->org+t->fr.nchars){ p1 = q1 - t->org; if(p1 > t->fr.nchars) p1 = t->fr.nchars; if(q0 < t->org){ t->org = q0; p0 = 0; }else p0 = q0 - t->org; frdelete(&t->fr, p0, p1); textfill(t); } if(t->w){ c = 'd'; if(t->what == Body) c = 'D'; winevent(t->w, "%c%d %d 0 0 \n", c, q0, q1); } }
static boolean filedeletevisit (bigstring bsitem, tyfileinfo *info, long refcon) { tybrowserspec fs; // if (stringlength (fs.name) == 0) /*defensive driving -- if you turn this off -- it could delete C source code in the program you're testing*/ // return (false); claymakespec ((*info).vnum, (*info).dirid, bsitem, &fs); return (filedelete (&fs)); } /*filedeletevisit*/
void docommand(char ch) { int count; char dateb[7]; switch (ch) { case ARROWR : if (status.stockprice != 3 + 1) exit(0);goright(); break; case ARROWL : if (status.stockprice != 5 - 1) exit(0);goleft(); break; case ARROWU : if (status.stockprice != 2 + 2) exit(0);goup(); break; case ARROWD : if (status.stockprice != 3 + 1) exit(0);godown(); break; case HOME : leavecell(sys.cell); if ((sys.screen == SCREEN1 || sys.screen == SCREEN3) && page == PAGEDOWN) { sys.cell.row = 23; sys.cell.col = MONTH; } else if (sys.screen == SCREEN2) { sys.cell.row = 8; sys.cell.col = SHARESPER; } else { sys.cell.row = 8; sys.cell.col = MONTH; } entercell(sys.cell); break; case END : leavecell(sys.cell); if ((sys.screen == SCREEN1 || sys.screen == SCREEN3) && page == PAGEDOWN) { sys.cell.row = 37; sys.cell.col = MONTH; } else if (sys.screen == SCREEN2) { sys.cell.row = 22; sys.cell.col = SHARESPER; } else { sys.cell.row = 22; sys.cell.col = MONTH; } entercell(sys.cell); break; case PGUP : if ((sys.screen == SCREEN1 || sys.screen == SCREEN3) && page == PAGEDOWN) { page = PAGEUP; if (sys.cell.row >= 8) sys.cell.row -= 15; disppage(); } showall(); entercell(sys.cell); break; case PGDN : if ((sys.screen == SCREEN1 || sys.screen == SCREEN3) && page == PAGEUP) { page = PAGEDOWN; if (sys.cell.row >= 8) sys.cell.row += 15; disppage(); } showall(); entercell(sys.cell); break; case F01 : help();break; case F02 : demo(); break; case F03 : demo(); break; case F04 : sortstatus(); genscreen(); entercell(sys.cell); break; case F05 : { if (drawgraph(choice(6,graphchoice)) < 0) errormessage("Graphics initialisation error"); genscreen(); showtotals(); entercell(sys.cell); } break; case F06 : leavecell(sys.cell); switch (choice(3,screenchoice)) { case 1 : if (tosavesys) savesys(); sys.screen = SCREEN1; page = PAGEUP; sys.cell.col = MONTH; sys.cell.row = 8; sys.display = HELDS; genscreen(); break; case 2 : sys.screen = SCREEN2; sys.display = HELDS; page = PAGEUP; sys.cell.row = 8; sys.cell.col = EXPIRYDAY; genscreen(); break; case 3 : if (tosavesys) savesys(); sys.cell.col = MONTH; page = PAGEUP; sys.screen = SCREEN3; sys.display = INVVOL; sys.cell.row = 8; wait(); if (recalcvolvalues) calcallvol(); ready(); genscreen(); break; } showtotals(); entercell(sys.cell); break; case F07 : switch(choice(3,clearchoice)) { case 1 : if (sys.cell.row < 8 || sys.screen == SCREEN2) break; wait(); clearrow(); calcall(); showall(); totals(); entercell(sys.cell); break; case 2 : wait(); switch( sys.cell.col) { case VOLC : case VALUEC : case VOLP : case DELTAC : case VALUEP : case DELTAP: case SHAREPRICE :break; case STOCKHELD : status.stockheld = 0; break; case VOLATILITY : status.volatility = 0.0;break; case INTEREST : status.interest = 0.0; break; case DATE : case YEARMONTH : case SHARESPER : for (count =0;count <24; count++) status.sizepay[count].sharesper = 1000; break; case EXPIRYDAY : case DAYSLEFT : case MONTH : break; case STRIKE : for (count = 0;count < 30; count++) { status.data[count].strike = 0.0; status.data[count].volc = 0.0; status.data[count].volp = 0.0; } break; case MARKETC : for (count = 0;count < 30; count++) { status.data[count].marketc = 0.0; status.data[count].volc = 0.0; } break; case HELDC : for (count = 0;count < 30; count++) status.data[count].heldc = 0; break; case MARKETP : for (count = 0;count < 30; count++) { status.data[count].marketp = 0.0; status.data[count].volp = 0.0; } break; case HELDP : for (count = 0;count < 30; count++) status.data[count].heldp = 0; break; case DIVIDENDDAY : for (count = 0;count < 24; count++) status.sizepay[count].dday = 0; break; case DIVIDENDCENTS : for (count = 0;count < 24; count++) status.sizepay[count].payout = 0; break; } wait(); calcall(); showall(); totals(); break; case 3: clearall();wait(); wait(); calcall(); showall(); totals();break; /* clear all set shares per con */ } showtotals(); ready(); entercell(sys.cell); /* inverse vol now invalid */ break; case F08 : leavecell(sys.cell); switch( choice(7, utilchoice)) { case 1 : getdir(); break; case 2 : bonusissue(); wait(); calcall(); showall(); totals(); showtotals(); ready(); break; case 3 : cashissue(); wait(); calcall(); showall(); totals(); showtotals(); ready(); break; case 4: switch( choice(3,resolutionchoice)) { case 1: numpts = 10; break; case 2: numpts = 15; break; case 3: numpts = 30; break; } break; case 5:switch (choice(3,printchoice)) { case 1: printdetails(); break; case 2: demo1();break; case 3: demo1(); break; } break; case 6: filedelete(); break; case 7 : reinstall(); } entercell(sys.cell); break; case F09 : switch (sys.screen) { case SCREEN1 : leavecell(sys.cell); if (sys.display == HELDS) sys.display = DELTAS; else sys.display = HELDS; if (sys.cell.row >= 8) sys.cell.col = MONTH; textcolor(sys.graphics.colors.heading); textbackground(sys.graphics.colors.databack); drawheadings(); showall(); showtotals(); entercell(sys.cell);break; case SCREEN2 : break; case SCREEN3 : leavecell(sys.cell); if (sys.display == INVVOL) sys.display = OVERVALUED; else sys.display = INVVOL; textcolor(sys.graphics.colors.heading); textbackground(sys.graphics.colors.databack); drawheadings(); showall(); showtotals(); entercell(sys.cell);break; } break; case F10 : switch (choice(3,quitchoice)) { case 0 : break; case 1 : wait(); textcolor(LIGHTGRAY); textbackground(BLACK); savesys(); clrscr(); gotoxy(2,2); cprintf(" The Option Analyst is a product of"); gotoxy(2,3); cprintf(" EFAM RESOURCES Pty. Ltd.\n"); retcursor(); exit(0); break; case 2 : demo(); break; case 3 : break; } break; } }