SCAME (part 5 of 5)
Leif Samuelsson
leif at erix.UUCP
Sat Feb 16 12:05:14 AEST 1985
# This is a shell archive. Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
#
# Wrapped by erisun!leif on Sat Feb 9 18:15:04 MET 1985
# Contents: x_funcs.c disptab.c help.c search.c vars.c scame-reaper.c
echo x - x_funcs.c
sed 's/^@//' > "x_funcs.c" <<'@//E*O*F x_funcs.c//'
/* SCAME x_funcs.c */
/* Revision 1.0.0 1985-02-09 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
/* Functions normally not bound to keys */
# include "scame.h"
extern int k_ubk(), k_void(), k_insertc();
x_set_key()
{
funcp fp, *table;
int c;
char s[80], ts[40];
fp = getfuncname("Function Name: ");
if (fp != (funcp) 0) {
sprintf(s, "Put %s on key", func_name(fp, ts));
c = b_getkey(s);
if (c == b_control('X')) {
if (!quiet) strout("C-X ");
c = inchar(FALSE);
c = upcase(c,FALSE);
table = c_x_disptab;
}
else if (c == b_meta('O')) {
if (!quiet) outchar(' ',FALSE);
c = inchar(FALSE);
table = m_o_disptab;
}
else table = disptab;
if (c != -1 && yesorno("Go Ahead") == 1)
table[c] = fp;
}
}
x_viewfile()
{
static char tfile[FILENAMESIZE] = "";
if (getfilename("View File", tfile))
vfile(NIL, tfile,TRUE,TRUE,NIL);
modeline();
}
x_wallchart()
{
register int i;
funcp fp;
char s[80];
Bool same=FALSE;
for (i=0; i<512; i++) {
fp = disptab[i];
if (fp != k_ubk && fp != k_void && fp != k_insertc) {
if (i > 0 && i < 511 && fp == disptab[i-1]
&& fp == disptab[i+1])
same = TRUE;
else {
if (same) {
insertstr("thru\n",4);
same = FALSE;
}
key_name(i, s, FALSE);
if (strlen(s) < 8) strcat(s, "\t");
strcat(s, "\t");
func_name(fp, &s[strlen(s)]);
strcat(s, "\n");
insertstr(s, strlen(s));
}
}
}
for (i=0; i<128; i++) {
fp = c_x_disptab[i];
if (fp != k_ubk && fp != k_void) {
strcpy(s, "C-X ");
key_name(i, &s[strlen(s)], FALSE);
if (strlen(s) < 8) strcat(s, "\t");
strcat(s, "\t");
func_name(fp, &s[strlen(s)]);
strcat(s, "\n");
insertstr(s, strlen(s));
}
}
for (i=0; i<128; i++) {
fp = m_o_disptab[i];
if (fp != k_ubk && fp != k_void) {
strcpy(s, "M-O ");
key_name(i, &s[strlen(s)], FALSE);
if (strlen(s) < 8) strcat(s, "\t");
strcat(s, "\t");
func_name(fp, &s[strlen(s)]);
strcat(s, "\n");
insertstr(s, strlen(s));
}
}
}
x_insertfile()
{
static char infilename[FILENAMESIZE]="";
if (getfilename("Insert File",infilename))
insertfile(infilename);
}
x_adamode()
{
setmode(ADA);
}
x_autofillmode()
{
setminormode(&cb.minormodes.autofill, arg);
}
x_ovwrtmode()
{
setminormode(&cb.minormodes.overwrite, arg);
}
x_cmode()
{
setmode(C);
}
x_cbreakmode()
{
gvars.cbreak_mode = xarg ? arg : (long) !(gvars.cbreak_mode);
ttycbreak();
}
x_checkmail()
{
checkmail(TRUE);
}
x_dired()
{
exec("dired");
}
x_fundamentalmode()
{
setmode(FUNDAMENTAL);
}
x_inschr()
{
if (xarg && arg >= 0 && arg <= 127)
insertc((char)arg,1L);
else errmes(ILA);
}
x_lispmode()
{
setmode(LISP);
}
x_pascalmode()
{
setmode(PASCAL);
}
x_setvariable()
{
setvariable(arg);
}
x_swedishmode()
{
setmode(SWEDISH);
}
x_revert_file()
{
if (xarg || yesorno("Restore file from disk") == 1) {
saveforundo(x_revert_file);
revertfile();
}
}
x_tabify()
{
saveforundo(x_tabify);
tabify();
}
x_sortbuf()
{
#ifdef SORT
saveforundo(x_sortbuf);
pipe_through("/usr/bin/sort", NIL, NIL, NIL, buf, z);
upd2();
modeline();
#else
errmes(NYI);
#endif
killing = FALSE;
}
x_flush_matching_lines()
{
#ifdef GREP
char flushstr[80];
saveforundo(x_flush_matching_lines);
if (instring("Pattern: ", flushstr, 0, "","\r\007") == '\r')
pipe_through("/usr/ucb/grep", "-v", flushstr, NIL, dot, z);
upd2();
modeline();
#else
errmes(NYI);
#endif
killing = FALSE;
}
x_savekbdmac()
{
char tfile[FILENAMESIZE];
*tfile = '\0';
if (getfilename("Save macro on file", tfile))
savekbdmac(tfile);
}
x_loadkbdmac()
{
char tfile[FILENAMESIZE];
*tfile = '\0';
if (getfilename("Load macro from file", tfile))
loadkbdmac(tfile);
}
x_replace()
{
char old[SCRDIMX],new[SCRDIMX], tprompt[SCRDIMX], *tmpdot=dot;
typing = FALSE;
strcpy(tprompt,"Replace: ");
if (instring(tprompt,old,0,NIL,"\r\007") != '\007' && *old !='\0') {
if (strlen(old) <= 20)
sprintf(&tprompt[strlen(tprompt)-2]," %s ",old);
else *tprompt='\0';
strcat(tprompt,"With: ");
if (instring(tprompt,new,0,NIL,"\r\007") != '\007') {
saveforundo(x_replace);
replace(old, new, FALSE);
}
}
echo(NIL);
dot=tmpdot;
}
x_rot13_region() {
saveforundo(x_rot13_region);
rot13_region();
}
@//E*O*F x_funcs.c//
chmod u=rw,g=r,o= x_funcs.c
echo x - disptab.c
sed 's/^@//' > "disptab.c" <<'@//E*O*F disptab.c//'
/* SCAME disptab.c */
/* Revision 1.0.0 1985-02-09 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
/* Command dispatch tables */
#include "scame.h"
#include "k_funcs.h"
extern int k_teco();
struct comstruct x_comtab[] = {
{ "Ada Mode", x_adamode },
{ "Auto Fill Mode", x_autofillmode },
{ "C Mode", x_cmode },
{ "CBREAK Mode", x_cbreakmode },
{ "Change Directory", changedir },
{ "Check Mail", x_checkmail },
{ "Default Mode", findmode },
{ "Delete Matching Lines", x_flush_matching_lines },
{ "Dired", x_dired },
{ "Find File", k_findfile },
{ "Fundamental Mode", x_fundamentalmode },
{ "Insert Character", x_inschr },
{ "Insert File", x_insertfile },
{ "Kill Buffer", k_killbuffer },
{ "Lisp Mode", x_lispmode },
{ "List Buffers", k_listbuffers },
{ "Load Kbd Macro", x_loadkbdmac },
{ "Overwrite Mode", x_ovwrtmode },
{ "Pascal Mode", x_pascalmode },
{ "Push to Shell", push },
{ "Read Mail", k_readmail },
{ "Replace String", x_replace },
{ "Revert File", x_revert_file },
{ "Rot 13 region", x_rot13_region },
{ "Save Kbd Macro", x_savekbdmac },
{ "Select Buffer", k_selectbuffer },
{ "Send Mail", k_mailbuffer },
{ "Set Key", x_set_key },
{ "Set Variable", x_setvariable },
{ "Sort Buffer", x_sortbuf },
{ "Stop", stop },
{ "Swedish Mode", x_swedishmode },
{ "Tabify", x_tabify },
{ "Undo", undo },
{ "View File", x_viewfile },
{ "View Variable", viewvariable },
{ "View Working Directory",viewworkingdir },
{ "Wall Chart", x_wallchart },
{ "What Cursor Position", k_whatcursorpos },
{ "Write File", k_writefile },
{ "Write Region", writeregion },
{ "^R Append Next Kill", k_appendnextkill },
{ "^R Argument Digit", k_digit },
{ "^R Autoargument", k_metadigit },
{ "^R Back to Indentation", k_backtoindent },
{ "^R Backward Character", k_backchar },
{ "^R Backward Delete Character", k_backdelchar },
{ "^R Backward Kill Word", k_backkillword },
{ "^R Backward Sentence", k_begse },
{ "^R Backward Word", k_backword },
{ "^R Beginning of Line", k_begli },
{ "^R Buffer Not Modified", k_notmodified },
{ "^R Copy Region", k_copyregion },
{ "^R Count Lines Page", k_cntlpg },
{ "^R Count Lines Region", k_countlregion },
{ "^R Delete Blank Lines", k_delblanklines },
{ "^R Delete Character", k_delchar },
{ "^R Delete Horizontal space", k_delhorizspace },
{ "^R Delete Indentation", k_delindent },
{ "^R Directory Display", k_listdir },
{ "^R Dired", k_dired },
{ "^R Display Date", k_dispdate },
{ "^R Down Real Line", k_downline },
{ "^R End Defining Kbd Macro", k_enddefkbdmac },
{ "^R End of Line", k_endli },
{ "^R Exchange Point and Mark", k_exchgdotmark },
{ "^R Execute Kbd Macro", k_executekbdmac },
{ "^R Execute Teco Macro", k_teco },
{ "^R Exit", k_exit },
{ "^R Exit To Shell", k_exit_to_shell },
{ "^R Extended Command", k_extended },
{ "^R Fill Region", k_fillregion },
{ "^R Forward Character", k_forwchar },
{ "^R Forward Sentence", k_endse },
{ "^R Forward Word", k_forwword },
{ "^R Goto Beginning", k_begofbuf },
{ "^R Goto End", k_endofbuf },
{ "^R Grow Window", k_growwindow },
{ "^R Help", k_help },
{ "^R Incremental Search", k_isearch },
{ "^R Indent According to Mode", k_tab },
{ "^R Indent New Line", k_indnewline },
{ "^R Indent Rigidly", k_indentregion },
{ "^R Indent for Comment", k_comment },
{ "^R Invoke Inferior Shell", k_push },
{ "^R Kill Line", k_killline },
{ "^R Kill Region", k_killregion },
{ "^R Kill Sentence", k_killsentence },
{ "^R Kill Word", k_killword },
{ "^R Log Out", k_logout },
{ "^R Lowercase Region", k_lowcaseregion },
{ "^R Lowercase Word", k_locasw },
{ "^R Make ()", k_makeparens },
{ "^R Mark Whole Buffer", k_markbuffer },
{ "^R Mark Word", k_markword },
{ "^R Negative Argument", k_negarg },
{ "^R New Line", k_newline }, /* self insert for formatting character ? */
{ "^R New Window", k_newwindow },
{ "^R Next Screen", k_nextscreen },
{ "^R One Window", k_onewindow },
{ "^R Open Line", k_openline },
{ "^R Other Window", k_otherwindow },
{ "^R Prefix Control", k_c_prefix },
{ "^R Prefix Control-Meta", k_c_m_prefix },
{ "^R Prefix Meta", k_m_prefix },
{ "^R Previous Screen", k_prevscreen },
{ "^R Query Replace", k_queryreplace },
{ "^R Quit", k_bell },
{ "^R Quoted Insert", k_quote },
{ "^R Reverse Search", k_risearch },
{ "^R Save File", k_savefile },
{ "^R Scroll Other Window", k_scrollotherwindow },
{ "^R Self Insert", k_insertc },
{ "^R Set Comment Column", k_setcommcol },
{ "^R Set Fill Column", k_setfcol },
{ "^R Set Fill Prefix", k_setfillprefix },
{ "^R Set/Pop Mark", k_pushpopmark },
{ "^R Shell Command", k_shellcmd },
{ "^R Start Kbd Macro", k_startdefkbdmac },
{ "^R Tab to Tab Stop", k_instab },
{ "^R Transpose Characters", k_transchar },
{ "^R Transpose Words", k_trnsword },
{ "^R Two Windows", k_twowindows },
{ "^R Un-kill", k_yank },
{ "^R Universal Argument", k_univarg },
{ "^R Up Real Line", k_upline },
{ "^R Uppercase Initial", k_capitalizeword },
{ "^R Uppercase Region", k_upcaseregion },
{ "^R Uppercase Word", k_upcwd },
{ "^R Visit File", k_visitfile },
{ "pwd", viewworkingdir },
NIL
};
funcp disptab[512] = {
/* 000 */ k_void,
/* 001 */ k_void,
/* 002 */ k_void,
/* 003 */ k_void,
/* 004 */ k_void,
/* 005 */ k_void,
/* 006 */ k_void,
/* 007 */ k_void,
/* 010 */ k_void,
/* 011 */ k_void,
/* 012 */ k_void,
/* 013 */ k_void,
/* 014 */ k_void,
/* 015 */ k_void,
/* 016 */ k_void,
/* 017 */ k_void,
/* 020 */ k_void,
/* 021 */ k_void,
/* 022 */ k_void,
/* 023 */ k_void,
/* 024 */ k_void,
/* 025 */ k_void,
/* 026 */ k_void,
/* 027 */ k_void,
/* 030 */ k_void,
/* 031 */ k_void,
/* 032 */ k_void,
/* 033 */ k_void,
/* 034 */ k_void,
/* 035 */ k_void,
/* 036 */ k_void,
/* 037 */ k_void,
/* 040 */ k_insertc,
/* 041 */ k_insertc,
/* 042 */ k_insertc,
/* 043 */ k_insertc,
/* 044 */ k_insertc,
/* 045 */ k_insertc,
/* 046 */ k_insertc,
/* 047 */ k_insertc,
/* 050 */ k_insertc,
/* 051 */ k_insertc,
/* 052 */ k_insertc,
/* 053 */ k_insertc,
/* 054 */ k_insertc,
/* 055 */ k_negarg,
/* 056 */ k_insertc,
/* 057 */ k_insertc,
/* 060 0 */ k_digit,
/* 061 */ k_digit,
/* 062 */ k_digit,
/* 063 */ k_digit,
/* 064 */ k_digit,
/* 065 */ k_digit,
/* 066 */ k_digit,
/* 067 */ k_digit,
/* 070 */ k_digit,
/* 071 9 */ k_digit,
/* 072 */ k_insertc,
/* 073 */ k_insertc,
/* 074 */ k_insertc,
/* 075 */ k_insertc,
/* 076 */ k_insertc,
/* 077 */ k_insertc,
/* 100 */ k_insertc,
/* 101 */ k_insertc,
/* 102 */ k_insertc,
/* 103 */ k_insertc,
/* 104 */ k_insertc,
/* 105 */ k_insertc,
/* 106 */ k_insertc,
/* 107 */ k_insertc,
/* 110 */ k_insertc,
/* 111 */ k_insertc,
/* 112 */ k_insertc,
/* 113 */ k_insertc,
/* 114 */ k_insertc,
/* 115 */ k_insertc,
/* 116 */ k_insertc,
/* 117 */ k_insertc,
/* 120 */ k_insertc,
/* 121 */ k_insertc,
/* 122 */ k_insertc,
/* 123 */ k_insertc,
/* 124 */ k_insertc,
/* 125 */ k_insertc,
/* 126 */ k_insertc,
/* 127 */ k_insertc,
/* 130 */ k_insertc,
/* 131 */ k_insertc,
/* 132 */ k_insertc,
/* 133 */ k_insertc,
/* 134 */ k_insertc,
/* 135 */ k_insertc,
/* 136 */ k_insertc,
/* 137 */ k_insertc,
/* 140 */ k_insertc,
/* 141 */ k_insertc,
/* 142 */ k_insertc,
/* 143 */ k_insertc,
/* 144 */ k_insertc,
/* 145 */ k_insertc,
/* 146 */ k_insertc,
/* 147 */ k_insertc,
/* 150 */ k_insertc,
/* 151 */ k_insertc,
/* 152 */ k_insertc,
/* 153 */ k_insertc,
/* 154 */ k_insertc,
/* 155 */ k_insertc,
/* 156 */ k_insertc,
/* 157 */ k_insertc,
/* 160 */ k_insertc,
/* 161 */ k_insertc,
/* 162 */ k_insertc,
/* 163 */ k_insertc,
/* 164 */ k_insertc,
/* 165 */ k_insertc,
/* 166 */ k_insertc,
/* 167 */ k_insertc,
/* 170 */ k_insertc,
/* 171 */ k_insertc,
/* 172 */ k_insertc,
/* 173 */ k_insertc,
/* 174 */ k_insertc,
/* 175 */ k_insertc,
/* 176 */ k_insertc,
/* 177 DEL */ k_backdelchar,
/* 200 M-^@ */ k_void,
/* 201 */ k_void,
/* 202 */ k_void,
/* 203 */ k_void,
/* 204 */ k_void,
/* 205 */ k_void,
/* 206 */ k_void,
/* 207 */ k_void,
/* 210 */ k_void,
/* 211 */ k_void,
/* 212 */ k_void,
/* 213 */ k_void,
/* 214 */ k_void,
/* 215 */ k_void,
/* 216 */ k_void,
/* 217 */ k_void,
/* 220 */ k_void,
/* 221 */ k_void,
/* 222 */ k_void,
/* 223 */ k_void,
/* 224 */ k_void,
/* 225 */ k_void,
/* 226 */ k_void,
/* 227 */ k_void,
/* 230 */ k_void,
/* 231 */ k_void,
/* 232 */ k_void,
/* 233 */ k_void,
/* 234 */ k_void,
/* 235 */ k_void,
/* 236 */ k_void,
/* 237 M-^_ */ k_void,
/* 240 M-sp */ k_ubk,
/* 241 M-! */ k_shellcmd,
/* 242 */ k_ubk,
/* 243 */ k_ubk,
/* 244 */ k_ubk,
/* 245 */ k_queryreplace,
/* 246 */ k_ubk,
/* 247 */ k_ubk,
/* 250 */ k_makeparens,
/* 251 */ k_ubk,
/* 252 */ k_ubk,
/* 253 */ k_push,
/* 254 */ k_ubk,
/* 255 */ k_ubk,
/* 256 */ k_ubk,
/* 257 */ k_ubk,
/* 260 M-0 */ k_metadigit,
/* 261 */ k_metadigit,
/* 262 */ k_metadigit,
/* 263 */ k_metadigit,
/* 264 */ k_metadigit,
/* 265 */ k_metadigit,
/* 266 */ k_metadigit,
/* 267 */ k_metadigit,
/* 270 */ k_metadigit,
/* 271 */ k_metadigit,
/* 272 */ k_ubk,
/* 273 */ k_comment,
/* 274 */ k_begofbuf,
/* 275 */ k_countlregion,
/* 276 */ k_endofbuf,
/* 277 */ k_ubk,
/* 300 */ k_markword,
/* 301 */ k_begse,
/* 302 */ k_backword,
/* 303 */ k_capitalizeword,
/* 304 */ k_killword,
/* 305 */ k_endse,
/* 306 */ k_forwword,
/* 307 */ k_fillregion,
/* 310 */ k_ubk,
/* 311 */ k_instab,
/* 312 */ k_ubk,
/* 313 */ k_killsentence,
/* 314 */ k_locasw,
/* 315 */ k_backtoindent,
/* 316 */ k_ubk,
/* 317 */ k_m_o_dispatch,
/* 320 */ k_ubk,
/* 321 */ k_ubk,
/* 322 */ k_ubk,
/* 323 */ k_ubk,
/* 324 M-T */ k_trnsword,
/* 325 M-U */ k_upcwd,
/* 326 M-V */ k_prevscreen,
/* 327 */ k_copyregion,
/* 330 */ k_extended,
/* 331 */ k_ubk,
/* 332 */ k_ubk,
/* 333 */ k_ubk,
/* 334 */ k_delhorizspace,
/* 335 */ k_ubk,
/* 336 */ k_delindent,
/* 337 */ k_ubk,
/* 340 */ k_ubk,
/* 341 */ k_void,
/* 342 */ k_void,
/* 343 */ k_void,
/* 344 */ k_void,
/* 345 */ k_void,
/* 346 */ k_void,
/* 347 */ k_void,
/* 350 */ k_void,
/* 351 */ k_void,
/* 352 */ k_void,
/* 353 */ k_void,
/* 354 */ k_void,
/* 355 */ k_void,
/* 356 */ k_void,
/* 357 */ k_void,
/* 360 */ k_void,
/* 361 */ k_void,
/* 362 */ k_void,
/* 363 */ k_void,
/* 364 */ k_void,
/* 365 */ k_void,
/* 366 */ k_void,
/* 367 */ k_void,
/* 370 */ k_void,
/* 371 */ k_void,
/* 372 M-z */ k_void,
/* 373 M- */ k_ubk,
/* 374 */ k_ubk,
/* 375 */ k_ubk,
/* 376 M-~ */ k_notmodified,
/* 377 M-DEL */ k_backkillword,
/* 400 C-^@ */ k_void,
/* 401 */ k_void,
/* 402 */ k_void,
/* 403 */ k_void,
/* 404 */ k_void,
/* 405 */ k_void,
/* 406 */ k_void,
/* 407 */ k_void,
/* 410 */ k_void,
/* 411 */ k_void,
/* 412 */ k_void,
/* 413 */ k_void,
/* 414 */ k_void,
/* 415 */ k_void,
/* 416 */ k_void,
/* 417 */ k_void,
/* 420 */ k_void,
/* 421 */ k_void,
/* 422 */ k_void,
/* 423 */ k_void,
/* 424 */ k_void,
/* 425 */ k_void,
/* 426 */ k_void,
/* 427 */ k_void,
/* 430 */ k_void,
/* 431 */ k_void,
/* 432 */ k_void,
/* 433 */ k_void,
/* 434 */ k_void,
/* 435 */ k_void,
/* 436 */ k_void,
/* 437 C-^_ */ k_void,
/* 440 C-sp */ k_ubk,
/* 441 */ k_ubk,
/* 442 */ k_ubk,
/* 443 */ k_ubk,
/* 444 */ k_ubk,
/* 445 */ k_ubk,
/* 446 */ k_ubk,
/* 447 */ k_ubk,
/* 450 */ k_ubk,
/* 451 */ k_ubk,
/* 452 */ k_ubk,
/* 453 */ k_ubk,
/* 454 */ k_ubk,
/* 455 */ k_ubk,
/* 456 */ k_ubk,
/* 457 */ k_ubk,
/* 460 */ k_ubk,
/* 461 */ k_ubk,
/* 462 */ k_ubk,
/* 463 */ k_ubk,
/* 464 */ k_ubk,
/* 465 */ k_ubk,
/* 466 */ k_ubk,
/* 467 */ k_ubk,
/* 470 */ k_ubk,
/* 471 */ k_ubk,
/* 472 */ k_ubk,
/* 473 */ k_ubk,
/* 474 */ k_ubk,
/* 475 */ k_ubk,
/* 476 */ k_ubk,
/* 477 */ k_ubk,
/* 500 */ k_pushpopmark,
/* 501 */ k_begli,
/* 502 */ k_backchar,
/* 503 C-C */ k_exit_to_shell,
/* 504 */ k_delchar,
/* 505 */ k_endli,
/* 506 */ k_forwchar,
/* 507 */ k_bell,
/* 510 */ k_backchar,
/* 511 */ k_tab,
/* 512 */ k_indnewline,
/* 513 */ k_killline,
/* 514 */ k_newwindow,
/* 515 */ k_newline,
/* 516 */ k_downline,
/* 517 */ k_openline,
/* 520 */ k_upline,
/* 521 */ k_quote,
/* 522 */ k_risearch,
/* 523 */ k_isearch,
/* 524 */ k_transchar,
/* 525 */ k_univarg,
/* 526 */ k_nextscreen,
/* 527 */ k_killregion,
/* 530 */ k_c_x_dispatch,
/* 531 */ k_yank,
/* 532 */ k_c_m_prefix,
/* 533 */ k_m_prefix,
/* 534 */ k_m_prefix,
/* 535 */ k_ubk,
/* 536 */ k_c_prefix,
/* 537 C-_ */ k_help,
/* 540 C-` */ k_ubk,
/* 541 */ k_void,
/* 542 */ k_void,
/* 543 */ k_void,
/* 544 */ k_void,
/* 545 */ k_void,
/* 546 */ k_void,
/* 547 */ k_void,
/* 550 */ k_void,
/* 551 */ k_void,
/* 552 */ k_void,
/* 553 */ k_void,
/* 554 */ k_void,
/* 555 */ k_void,
/* 556 */ k_void,
/* 557 */ k_void,
/* 560 */ k_void,
/* 561 */ k_void,
/* 562 */ k_void,
/* 563 */ k_void,
/* 564 */ k_void,
/* 565 */ k_void,
/* 566 */ k_void,
/* 567 */ k_void,
/* 570 */ k_void,
/* 571 */ k_void,
/* 572 C-z */ k_void,
/* 573 C-*/ k_ubk,
/* 574 */ k_ubk,
/* 575 */ k_ubk,
/* 576 */ k_ubk,
/* 577 C-DEL */ k_ubk,
/* 600 C-M-^@ */k_void,
/* 601 */ k_void,
/* 602 */ k_void,
/* 603 */ k_void,
/* 604 */ k_void,
/* 605 */ k_void,
/* 606 */ k_void,
/* 607 */ k_void,
/* 610 */ k_void,
/* 611 */ k_void,
/* 612 */ k_void,
/* 613 */ k_void,
/* 614 */ k_void,
/* 615 */ k_void,
/* 616 */ k_void,
/* 617 */ k_void,
/* 620 */ k_void,
/* 621 */ k_void,
/* 622 */ k_void,
/* 623 */ k_void,
/* 624 */ k_void,
/* 625 */ k_void,
/* 626 */ k_void,
/* 627 */ k_void,
/* 630 */ k_void,
/* 631 */ k_void,
/* 632 */ k_void,
/* 633 */ k_void,
/* 634 */ k_void,
/* 635 */ k_void,
/* 636 */ k_void,
/* 637 C-M-^_ */k_void,
/* 640 C-M-sp */k_ubk,
/* 641 */ k_ubk,
/* 642 */ k_ubk,
/* 643 */ k_ubk,
/* 644 */ k_ubk,
/* 645 */ k_queryreplace,
/* 646 */ k_ubk,
/* 647 */ k_ubk,
/* 650 */ k_ubk,
/* 651 */ k_ubk,
/* 652 */ k_ubk,
/* 653 */ k_ubk,
/* 654 */ k_ubk,
/* 655 */ k_ubk,
/* 656 */ k_ubk,
/* 657 */ k_ubk,
/* 660 */ k_ubk,
/* 661 */ k_ubk,
/* 662 */ k_ubk,
/* 663 */ k_ubk,
/* 664 */ k_ubk,
/* 665 */ k_ubk,
/* 666 */ k_ubk,
/* 667 */ k_ubk,
/* 670 */ k_ubk,
/* 671 */ k_ubk,
/* 672 */ k_ubk,
/* 673 */ k_ubk,
/* 674 */ k_ubk,
/* 675 */ k_ubk,
/* 676 */ k_ubk,
/* 677 */ k_ubk,
/* 700 */ k_ubk,
/* 701 */ k_ubk,
/* 702 */ k_ubk,
/* 703 */ k_ubk,
/* 704 */ k_ubk,
/* 705 */ k_ubk,
/* 706 */ k_ubk,
/* 707 */ k_ubk,
/* 710 */ k_ubk,
/* 711 */ k_ubk,
/* 712 */ k_ubk,
/* 713 */ k_ubk,
/* 714 */ k_logout,
/* 715 */ k_backtoindent,
/* 716 */ k_ubk,
/* 717 */ k_ubk,
/* 720 */ k_ubk,
/* 721 */ k_ubk,
/* 722 */ k_ubk,
/* 723 */ k_ubk,
/* 724 */ k_dispdate,
/* 725 */ k_ubk,
/* 726 */ k_scrollotherwindow,
/* 727 */ k_appendnextkill,
/* 730 */ k_extended,
/* 731 */ k_ubk,
/* 732 C-M-Z */ k_exit,
/* 733 M-ESC */ k_teco,
/* 734 */ k_ubk,
/* 735 */ k_ubk,
/* 736 */ k_ubk,
/* 737 C-M-_ */ k_ubk,
/* 740 C-M-` */ k_ubk,
/* 741 C-M-a */ k_void,
/* 742 */ k_void,
/* 743 */ k_void,
/* 744 */ k_void,
/* 745 */ k_void,
/* 746 */ k_void,
/* 747 */ k_void,
/* 750 */ k_void,
/* 751 */ k_void,
/* 752 */ k_void,
/* 753 */ k_void,
/* 754 */ k_void,
/* 755 */ k_void,
/* 756 */ k_void,
/* 757 */ k_void,
/* 760 */ k_void,
/* 761 */ k_void,
/* 762 */ k_void,
/* 763 */ k_void,
/* 764 */ k_void,
/* 765 */ k_void,
/* 766 */ k_void,
/* 767 */ k_void,
/* 770 */ k_void,
/* 771 */ k_void,
/* 772 C-M-z */ k_void,
/* 773 C-M-*/ k_ubk,
/* 774 C-M-| */ k_ubk,
/* 775 C-M-} */ k_ubk,
/* 776 C-M-~ */ k_ubk,
/* 777 C-M-DEL*/k_ubk
};
funcp c_x_disptab[128] = {
/* 000 */ k_ubk,
/* 001 */ k_ubk,
/* 002 */ k_listbuffers,
/* 003 */ k_ubk,
/* 004 */ k_listdir,
/* 005 */ k_ubk,
/* 006 */ k_findfile,
/* 007 */ k_bell,
/* 010 */ k_ubk,
/* 011 */ k_indentregion,
/* 012 */ k_ubk,
/* 013 */ k_ubk,
/* 014 */ k_lowcaseregion,
/* 015 */ k_ubk,
/* 016 */ k_ubk,
/* 017 */ k_delblanklines,
/* 020 */ k_ubk,
/* 021 */ k_ubk,
/* 022 */ k_ubk,
/* 023 */ k_savefile,
/* 024 */ k_ubk,
/* 025 */ k_upcaseregion,
/* 026 */ k_visitfile,
/* 027 */ k_writefile,
/* 030 */ k_exchgdotmark,
/* 031 */ k_ubk,
/* 032 C-Z */ k_exit_to_shell,
/* 033 */ k_ubk,
/* 034 */ k_ubk,
/* 035 */ k_ubk,
/* 036 */ k_ubk,
/* 037 */ k_ubk,
/* 040 */ k_ubk,
/* 041 */ k_ubk,
/* 042 */ k_ubk,
/* 043 */ k_ubk,
/* 044 */ k_ubk,
/* 045 */ k_ubk,
/* 046 */ k_ubk,
/* 047 */ k_ubk,
/* 050 */ k_startdefkbdmac,
/* 051 */ k_enddefkbdmac,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* 056 */ k_setfillprefix,
/* */ k_ubk,
/* */ k_ubk,
/* 061 */ k_onewindow,
/* 062 */ k_twowindows,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* 073 */ k_setcommcol,
/* */ k_ubk,
/* 074 */ k_whatcursorpos,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* 102 */ k_selectbuffer,
/* */ k_ubk,
/* 104 */ k_dired,
/* 105 */ k_executekbdmac,
/* 106 */ k_setfcol,
/* */ k_ubk,
/* 110 */ k_markbuffer,
/* */ k_ubk,
/* */ k_ubk,
/* 113 */ k_killbuffer,
/* 114 */ k_cntlpg,
/* 115 */ k_mailbuffer,
/* */ k_ubk,
/* 117 */ k_otherwindow,
/* */ k_ubk,
/* */ k_ubk,
/* 122 R */ k_readmail,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_exit_to_shell,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* 136 */ k_growwindow,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk,
/* */ k_ubk
};
funcp m_o_disptab[128] = {
/* 000 */ k_ubk,
/* 001 */ k_ascii,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 007 */ k_bell,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 023 */ k_sis,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 0 */ k_ubk,
/* 1 */ k_ubk,
/* 101 */ k_upline,
/* 102 */ k_downline,
/* 103 */ k_forwchar,
/* 104 */ k_backchar,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 123 */ k_edt_pf4,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 154 */ k_edt_comma,
/* 155 */ k_edt_dash,
/* 156 */ k_help,
/* 1 */ k_ubk,
/* 160 */ k_edt_0,
/* 1 */ k_ubk,
/* 162 */ k_endli,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 166 */ k_killregion,
/* 1 */ k_ubk,
/* 170 */ k_edt_8,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk,
/* 1 */ k_ubk
};
@//E*O*F disptab.c//
chmod u=rw,g=r,o= disptab.c
echo x - help.c
sed 's/^@//' > "help.c" <<'@//E*O*F help.c//'
/* SCAME help.c */
/* Revision 1.0.0 1985-02-09 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
#include "scame.h"
extern int k_void(), k_ubk();
/* HELP! */
help()
{
int c;
*commandprompt = '\0';
echo(NIL);
hquery:
typing = FALSE;
strout("Doc (? for help): ");
outchar(c = upcasearr[inchar(FALSE)], TRUE);
switch (c) {
case '\007': pchar(BELL); break;
case '\037':
case '?':
vfile(scamelib,"helpmenu",FALSE,FALSE,NIL);
echo(NIL);
goto hquery;
case '1':
case '2':
fixbuftab(PUT);
sprintf(cb.filename,"%s/%s%c",scamelib,"tut",c);
findfile();
basename(cb.filename,cb.filename,FALSE);
modeline();
break;
case 'A': apropos(); break;
case 'B': vfile(scamelib,"basic",TRUE,TRUE,NIL); break;
case 'C': where(); break;
case 'L': showlastinput(); break;
case 'N': vfile(scamelib,"news",TRUE,TRUE,NIL); break;
case 'Q': break;
case 'S': vfile(scamelib,"summary", TRUE,TRUE,NIL); break;
case DEL: break;
default:
echo(NIL);
outchar(c, TRUE);
strout(" is meaningless here. ");
pchar(BELL);
goto hquery;
}
echo(NIL);
}
where()
{
funcp *table;
int c;
char s[80];
c = b_getkey("Character");
key_name(c, s, TRUE);
if (c == b_control('X')) {
if (!quiet) strout("C-X ");
c = upcasearr[inchar(FALSE)];
strcat(s, " ");
key_name(c, &s[strlen(s)], FALSE);
table = c_x_disptab;
}
else if (c == b_meta('O')) {
if (!quiet) outchar(' ', FALSE);
c = inchar(FALSE);
strcat(s, " ");
key_name(c, &s[strlen(s)], FALSE);
table = m_o_disptab;
}
else table = disptab;
if (table[c] == k_void)
strcat(s, " is an illegal key");
else if (table[c] == k_ubk)
strcat(s, " is not bound to any function");
else {
strcat(s, " runs the function ");
func_name(table[c], &s[strlen(s)]);
}
strcat(s, ".");
typeout(s);
}
showlastinput()
{
char outstr[80];
int i;
char c;
i = lstindex;
if (lastinput[i] == (char) 0200) i=0;
*outstr = '\0';
do {
c = lastinput[i];
if (c == (char) 0200) break;
if (c & 0200) {
strcat(outstr,"Meta-");
c &= 0177;
}
if (c == '\010') strcat(outstr,"Backspace");
else if (c == '\011') strcat(outstr,"Tab");
else if (c == '\012') strcat(outstr,"Linefeed");
else if (c == '\r' ) strcat(outstr,"Return");
else if (c == '\033') strcat(outstr,"Escape");
else if (c == ' ' ) strcat(outstr,"Space");
else if (c == DEL ) strcat(outstr,"Rubout");
else {
if (c < ' ' || c==DEL) {
strcat(outstr,"^");
c = (c+64) & 0177;
}
sprintf(&outstr[strlen(outstr)],"%c",c);
}
strcat(outstr," ");
if (strlen(outstr) > screenwidth - 15) {
typeout(outstr);
*outstr = '\0';
}
i = (i + 1) % LASTINPUTSIZE;
} while (i != lstindex);
if (*outstr != '\0') typeout(outstr);
}
/* apropos */
apropos()
{
char c, tstr[80];
*tstr = '\0';
c = instring("Apropos: ",tstr,0,"\033","\007\r");
if (c=='\r') vfile(scamelib,"aproposlist",FALSE,TRUE,tstr);
}
@//E*O*F help.c//
chmod u=rw,g=r,o= help.c
echo x - search.c
sed 's/^@//' > "search.c" <<'@//E*O*F search.c//'
/* SCAME search.c */
/* Revision 1.0.0 1985-02-09 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
#include "scame.h"
/* Incremental Search */
# define FIXCUR cur(screenlen-1,10+rlen+8*(failed<=level)+8*backward);
/* a few variables common for isearch() and find() */
# define ISEARCHDEPTH 250
char oldsstr[80];
static char *dotarr[ISEARCHDEPTH];
static int failed=15000;
static char sstr[80];
static char iprompt[]="I-Search: ", riprompt[]="Reverse I-Search: ";
static int len, rlen, level;
void isearch(backward)
Bool backward;
{
char charr[ISEARCHDEPTH];
int faillen=0;
Bool done=FALSE;
int c;
int sb = gvars.search_backward,
sf = gvars.search_forward;
closegap();
*commandprompt='\0';
if (backward) echo(riprompt);
else echo(iprompt);
len=rlen=level=0;
dotarr[0]=dot;
oldhome = home;
while (!done) {
charr[level]=c=inchar(TRUE);
switch (c) {
case 7: pchar(BELL); /* ^G */
if (failed <= level) {
level = failed - 1;
len = faillen;
sstr[len] = '\0';
rlen = strsize(sstr);
if (backward)
echo(riprompt);
else echo(iprompt);
strout(sstr);
dot = dotarr[level] + len*(1-backward);
break;
}
/* else fall through to... */
case EOF:dot= dotarr[0];
done = TRUE;
FIXCUR
outchar(BELL, FALSE);
pchar(BELL);
break;
case 17: c = inchar(FALSE); /* ^Q */
FIXCUR
outchar(c, FALSE);
sstr[len++]=c;
sstr[len] = '\0';
rlen = rlen + 1 + (c < ' ' || c > '~');
find(dotarr[level],backward);
if (failed>level) faillen++;
break;
case DEL: if (level > 0) {
level--;
if (charr[level] != sf
&& charr[level] != sb) {
rlen= rlen -1 -(sstr[--len]<' ');
sstr[len] = '\0';
FIXCUR
cleol(TRUE);
if (failed>level+1)faillen--; }
dot=dotarr[level] + faillen;
if (failed==level+1){
if (backward)
echo(riprompt);
else echo(iprompt);
strout(sstr); } }
else pchar(BELL); break;
default: if (c == sf || c == sb) {
if (level==0) {
backward = (c == sb);
strcpy(sstr,oldsstr);
faillen=len=strlen(sstr);
cur(screenlen-1,10+8*backward);
strout(sstr);
rlen = strsize(sstr);
find(dot, backward);
}
else if (failed<=level
&& ((c==sf)^backward))
pchar(BELL);
else {
backward = (c==sb);
find(dotarr[level]+1-2*backward,backward);
}
}
else if (c>=' ' && c<='~') {
FIXCUR
pchar(c);
hpos++;
sstr[len++]=c;
sstr[len] = '\0';
rlen++;
find(dotarr[level], backward);
if (failed>level) faillen++;
}
else {
done=TRUE;
strcpy(oldsstr,sstr);
if (c != gvars.search_exit_char)
unget(c);
}
} /* switch */
if (dot < home || dot > away || updateflag) {
updateflag = TRUE;
update();
modeline();
}
else findxy();
refresh(TRUE);
/*
if (!typeahead() && (cury != vpos || curx != hpos))
cur(cury,curx);
*/
} /* while */
if (abs(dot - dotarr[0]) > gvars.auto_push_point_option) {
FIXCUR
outchar('\0', FALSE);
cur(cury, curx);
pswap(dot,dotarr[0]);
pushpopmark(1L);
dot = dotarr[0];
}
clearecho();
}
static find(tdot,backward)
register char *tdot;
Bool backward;
{
static int oldway = -1;
char *tmpdot;
tmpdot = dot;
dot = tdot;
if (failed <= level && backward == oldway) {
dotarr[level+1]=dotarr[level];
level++;
}
else {
if (search(sstr, backward)) {
dotarr[++level]=dot;
if (!backward) dot += strlen(sstr);
failed=15000;
}
else {
pchar(BELL);
echo("Failing ");
strout(backward ? riprompt : iprompt);
strout(sstr);
dotarr[level+1]=dotarr[level];
if (failed>++level) failed=level;
dot = tmpdot;
}
}
oldway = backward;
}
Bool search(str,backward)
register char *str;
Bool backward;
{
int len=strlen(str);
register char *tdot, *end;
register Bool swedish = (cb.majormode == SWEDISH);
char tstr[80]; /* should be len+1 */
strncpy(tstr, str, min(80-1, len));
end = tstr;
while (*end = upcase(*end,swedish)) end++;
tdot = dot;
if (!backward) {
closegap();
end = z - len;
while (tdot <= end && (*tstr != upcase(*tdot,swedish)
|| !strneq(tdot,tstr,len,swedish))) tdot++;
if (tdot > end)
return(FALSE);
else {
dot = tdot;
return(TRUE);
}
}
else {
if (tdot > z - len) tdot = z - len;
end = buf;
while (tdot >= end && (*tstr != upcase(*tdot,swedish)
|| !strneq(tdot,tstr,len,swedish))) tdot--;
if (tdot < end)
return(FALSE);
else {
dot = tdot;
dot= tdot;
}
}
}
/* Replace */
void replace(old, new, query)
register char *old,*new;
Bool query;
{
register int c, oldlen,newlen;
Bool goahead = !query,
checkforquit=FALSE;
oldlen = strlen(old);
newlen = strlen(new);
while (TRUE) {
if (!checkforquit && typeahead()) {
c = inchar(TRUE);
checkforquit = TRUE;
if (c=='\007') { pchar(BELL); return; }
else unget(c);
}
if (!search(old, FALSE))
return;
dot += oldlen;
query0:
if (goahead) c = ' ';
else {
update();
modeline();
refresh(TRUE);
*commandprompt = '\0';
c = inchar(FALSE);
}
switch (c) {
case '\007': pchar(BELL); /* ^G */
case EOF:
case '\033': return; /* ESC */
case '\022': recurse(); /* ^R */
dot = max(dot-oldlen, buf);
break;
case '\037': /* ^_ */
case '?':
vfile(scamelib,"queryrep",FALSE,TRUE,NIL);
goto query0;
case '!': goahead = TRUE;
case '.':
case ' ': dot -= oldlen;
pushpopmark(1L);
if (newlen > oldlen) {
insertc('\0',(long)(newlen-oldlen));
dot -= newlen-oldlen;
}
else if (oldlen > newlen)
delchar((long)(oldlen-newlen));
strncpy(dot,new,newlen);
cb.modified = TRUE;
dot += newlen;
updateflag = TRUE;
if (c == '.') return;
break;
case DEL: dot -= oldlen-1;
break;
default: pchar(BELL);
goto query0;
}
}
}
@//E*O*F search.c//
chmod u=rw,g=r,o= search.c
echo x - vars.c
sed 's/^@//' > "vars.c" <<'@//E*O*F vars.c//'
/* SCAME vars.c */
/* Revision 1.0.0 1985-02-09 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
/* Scame Variables */
# include "scame.h"
struct {
char *name;
long *varp;
} vartab[] = {
{ "Auto Fill Mode", &cb.minormodes.autofill },
{ "Auto Push Point Option", &gvars.auto_push_point_option },
{ "Bottom Display Margin", &gvars.bottom_display_margin },
{ "CBREAK Mode", &gvars.cbreak_mode },
{ "Comment Column", &gvars.commcol },
{ "Display Matching Paren", &cb.lvars.disp_matching_paren },
{ "Fill Column", &cb.lvars.fillcolumn },
{ "Hackmatic", &gvars.hackmatic },
{ "Mail Check Interval", &gvars.mail_check_interval },
{ "Overwrite Mode", &cb.minormodes.overwrite },
{ "Quote Char", &gvars.quote_char },
{ "Search Backward", &gvars.search_backward },
{ "Search Exit Char", &gvars.search_exit_char },
{ "Search Forward", &gvars.search_forward },
{ "System Output Holding", &gvars.system_output_holding },
{ "Tab Self Insert", &gvars.tab_self_insert },
{ "Top Display Margin", &gvars.top_display_margin },
NIL
};
setvariable(a)
long a;
{
char str[80];
int c,i;
if (!xarg) {
errmes(ILA);
return;
}
*str = '\0';
do {
c=instring("Variable: ",str,strlen(str),"\t","\007\033\r?");
if (c == 7 || (c == 13 && *str=='\0')) {
typing = FALSE;
return;
}
if (c == '?') listmatching((struct tabstruct *)vartab,str);
else if ((i = tablk((struct tabstruct *)vartab,str,0)) <0)
pchar(BELL);
} while (i<0 || c==ESC || c=='?');
switch (i) {
case 2: if (a >=40 && a <=100)
gvars.bottom_display_margin = a;
else errmes(ILA); break;
case 3: *(vartab[i].varp) = a;
ttycbreak(); break;
case 8: gvars.mail_check_interval = a;
chkmailcnt = gvars.mail_check_interval;
break;
case 15: if (a <= 40 && a >= 0)
gvars.top_display_margin = a;
else errmes(ILA); break;
default: *(vartab[i].varp) = a;
}
typing = FALSE;
}
viewvariable()
{
char str[80];
int c,i;
*str = '\0';
do {
c=instring("Variable: ", str,strlen(str),"\t","\007\033\r?");
if (c == 7 || (c == 13 && *str=='\0')) {
typing = FALSE;
return;
}
if (c == '?') listmatching((struct tabstruct *)vartab,str);
else if ((i = tablk((struct tabstruct *)vartab,str,0)) <0)
pchar(BELL);
} while (i<0 || c==ESC || c=='?');
echo(NIL);
printf("%s = %ld", vartab[i].name,*(vartab[i].varp));
fflush(stdout);
typing = FALSE;
}
@//E*O*F vars.c//
chmod u=rw,g=r,o=r vars.c
echo x - scame-reaper.c
sed 's/^@//' > "scame-reaper.c" <<'@//E*O*F scame-reaper.c//'
/* SCAME scame-reaper.c */
/* Revision 1.0.0 1985-02-09 */
static char *cpyrid = "@(#)Copyright (C) 1985 by Leif Samuelsson";
#include <stdio.h>
#include <sys/types.h>
#include <sys/dir.h>
#include "config.h"
#define MAXPIDS 200
#define min(a,b) ((a)<(b)?(a):(b))
int nentries= 0;
int nunlinked= 0;
struct direct dirent, *dp = &dirent;
extern FILE *popen();
char tempdir[] = TMPFILE;
extern char *rindex();
main(argc,argv)
int argc;
char **argv;
{
int trace = (argc > 1);
int pids[MAXPIDS], i,n,pid;
#ifdef DIRBLKSIZ
DIR *d;
#endif
FILE *f;
char line[80];
long t;
char *ctime();
char *s, *cp;
if ((cp = rindex(tempdir, '/')) != (char *)0)
*cp = '\0';
chdir(tempdir);
if (trace) {
printf("Scame-Reaper:\n");
system("date");
system("pwd");
}
if ((f = popen("ps -ax", "r")) == NULL)
fatal("Can't do ps");
i = 0;
fscanf(f, "%*[^\n]");
do fscanf(f, "%d%*[^\n]", &pids[i]);
while ((pids[i] != 0 || i == 0) && ++i < MAXPIDS);
n=i;
pclose(f);
#ifdef DIRBLKSIZ
if ((d=opendir(".")) == NULL)
fatal("Can't open directory file");
while ((dp = readdir(d)) != 0) {
#else
if ((f=fopen(".", "r")) == NULL)
fatal("Can't open directory file");
while (fread(dp, sizeof dirent, 1, f) != 0) {
#endif
if (dp->d_ino == 0 || dp->d_name[0] != 'S')
continue;
for (i=1; i <= 10; i++)
if (dp->d_name[i] < '0' || dp->d_name[1] > '9')
goto loop;
nentries++;
sscanf(dp->d_name, "%*[^0123456789]%5d", &pid);
for (i=0; i<n && pids[i] != pid; i++);
if (i==n)
if (unlink(dp->d_name) != 0)
printf("Can't remove %s\n", dp->d_name);
else nunlinked++;
loop: continue;
}
pclose(f);
if (trace) printf("Done. %d files, %d removed\n", nentries, nunlinked);
}
fatal(s)
char *s;
{
printf("%s, ", s);
perror();
exit(1);
}
@//E*O*F scame-reaper.c//
chmod u=rw,g=r,o= scame-reaper.c
echo Inspecting for damage in transit...
temp=/tmp/shar$$; dtemp=/tmp/.shar$$
trap "rm -f $temp $dtemp; exit" 0 1 2 3 15
cat > $temp <<\!!!
254 529 4258 x_funcs.c
929 3869 19390 disptab.c
140 378 2938 help.c
281 737 6096 search.c
92 313 2407 vars.c
90 249 1762 scame-reaper.c
1786 6075 36851 total
!!!
wc x_funcs.c disptab.c help.c search.c vars.c scame-reaper.c | sed 's=[^ ]*/==' | diff -b $temp - >$dtemp
if [ -s $dtemp ]
then echo "Ouch [diff of wc output]:" ; cat $dtemp
else echo "No problems found."
fi
exit 0
More information about the Comp.sources.unix
mailing list