Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

A Norton Commander style directory browser, part 05/05

1 view
Skip to first unread message

Gadzhiev A. M.

unread,
Mar 15, 1995, 8:17:46 PM3/15/95
to
Submitted-by: ale...@angel.energy.msk.su (Gadzhiev A. M.)
Posting-number: Volume 7, Issue 47
Archive-name: directory_browser/part05

-+-+-+-+-+-+-+-+ START OF PART 5 -+-+-+-+-+-+-+-+
X`09time(`26current);
X`09dif_tm=localtime(`26current);
X`20`20`20`20if(set_tm)
X`20`20`20`20`20`7B`09`09`09
X`09if((!no_display)`20`26`26`20io_now)
X`09`7B
X`09CURSOR_SAVE();
X`09`09
X`09werase(time_win);
X`09wmove(time_win,0,0);
X`09if`20(dif_tm->tm_hour<10)
X`09`09sprintf(temp,"0%d:",dif_tm->tm_hour);
X`09`20`20`20else
X`09`09sprintf(temp,"%d:",dif_tm->tm_hour);
X`09strcpy(out,temp);
X
X`09if`20(dif_tm->tm_min<10)
X`09`09sprintf(temp,"0%d:",dif_tm->tm_min);
X`09`20`20`20else
X`09`09sprintf(temp,"%d:",dif_tm->tm_min);
X`09strcat(out,temp);
X
X`09if`20(dif_tm->tm_sec<10)
X`09`09sprintf(temp,"0%d",dif_tm->tm_sec);
X`09`20`20`20else
X`09`09sprintf(temp,"%d",dif_tm->tm_sec);
X`09strcat(out,temp);
X`09`09`09
X`09wprintw(time_win,"%s",out);
X`09wrefresh(time_win);
X`09CURSOR_RESTORE();
X`09`7D
X`09signal(SIGALRM,timer);
X`09alarm(1);
X`20`20`20`20`20`7D`09
X`7D
X
Xvoid`20set_timer(void)
X`7B`09
X`09if`20(!set_tm)
X`09`7B
X`09time_win=newwin(1,8,1,71);
X`09wsetattr(time_win,_REVERSE);
X`09set_tm=1;
X`09timer(0);
X`09`7D
X`09else
X`09`7B
X`09set_tm=0;
X`09alarm(0);
X`09signal(SIGALRM,SIG_IGN);
X`09delwin(time_win);
X`09`7D
X`7D
X
X`09
$ call unpack TIMER.C;1 1210078824 "" 4 27 31
$!
$ create 'f'
X/*`20VAX/DEC`20CMS`20REPLACEMENT`20HISTORY,`20Element`20UTILS.C*/
X/*`20*3`20`20`20`2022-APR-1994`2020:56:03`20ALEXEY`20"New`20optimized`20rename
V`20version."*/
X/*`20*2`20`20`20`2015-APR-1994`2015:11:00`20ALEXEY`20"GCC`20port`20fixed."*/
X/*`20*1`20`20`20`2014-APR-1994`2014:36:12`20ALEXEY`20"File`20utilites`20:`20co
Vpy`20,`20delete`20...`20"*/
X/*`20VAX/DEC`20CMS`20REPLACEMENT`20HISTORY,`20Element`20UTILS.C*/
X#include`20<curses.h>
X#include`20<string.h>
X#include`20<unixlib.h>
X#include`20<vms/descrip.h>`09`09`09`09`20`20`20/*2*/
X#include`20<vms/rmsdef.h>`09`09`09`09`09`20`20`20/*2*/
X#include`20<vms/fab.h>`09`09`09`09`09`20`20`20/*2*/
X#include`20<vms/nam.h>`09
X#include`20<vms/lib$routines.h>`09`09`09`09`20`20`20/*2*/
X#include`20<vms/starlet.h>
X
X#include`20"misc.h"`09`09`09`09`09`20`20`20/*2*/
X#include`20"definitions.h"
X#include`20"variables.h"
X#include`20"iso.h"
X
X
Xint`20_alarm(char*,char*,char*);
Xvoid`20prom_copy(int,char`20*);
Xvoid`20prom_move(int`20part,char`20*str_p);
XWINDOW`20*message(WINDOW*,char*,char*);`09`09`09`20`20`20/*2*/
Xchar`20*menu(char**,int,int);`09`09`09`09`20`20`20/*2*/
Xint`20_mess();`09`09`09`09`09`09`09`20`20`20/*2*/
Xvoid`20dev_scan();
Xint`20info_impl(char`20*);
Xint`20sys$setddir();
Xvoid`20good_bye();
Xint`20view_implementation`20(char`20*,int`20*);
Xint`20reread();
Xint`20panel();
Xvoid`20line_gets(WINDOW`20*,char`20*);
Xint`20chdir(char`20*);
Xint`20system(char`20*);
Xint`20crs_rename(char`20*,char*);
Xint`20delete(char`20*);
Xint`20ok(char*,char*);
X
Xvoid`20fresh();
X
X
Xunsigned`20del_sys(char`20*file)
X`7B
X
X`09$DESCRIPTOR(file_d,"");
X
X`09file_d.dsc$w_length=strlen(file);
X`09file_d.dsc$a_pointer=file;
X
X`09if`20(!((status=lib$delete_file(`26file_d))`20`26`201))`20
X`09`09`09_mess(`26status);
X
X`09return`20status;`09
X`7D
X
Xvoid`20copy()
X`7B
X`09char`20com`5B512`5D;
X`09char`20dpy_fname`5B100`5D;
X`09int`20dest,i;
X`09int`20file_numb;
X`09int`20is_current=0;
X`09WINDOW`20*mess;
X`09char`20dest_dir`5B256`5D;
X`09
X`09if`20(NMB_FLS==0)`20return`20;
X`09if(!strcmp(cwd`5B0`5D,cwd`5B1`5D))
X`09`09`7B
X`09`09return;
X`09`09`7D
X`09`09`09
X`09dest=(current_panel)?0:1;
X`09file_numb=0;
X`09for(i=0;i<NMB_FLS;i++)
X`09`09if`20(select_list`5Bcurrent_panel`5D`5Bi`5D)
X`09`09`09`09file_numb++;
X
X`09if`20(!file_numb)`20`7B
X`09`09`09if(strcmp(SLK_FILE,"-")`20`26`26`20!strstr(SLK_FILE,
X`09`09`09`09".DIR"))
X`09`09`09`20`20`7B`20is_current=1;file_numb++;`7D
X`09`09`09else
X`09`09`09`09`7B
X`09`09`09`09return;
X`09`09`09`09`7D
X`09`09`09`7D
X
X`09strcpy(dest_dir,cwd`5Bdest`5D);
X
X`09prom_copy(file_numb,dest_dir);
X`09if(`20!exist(dest_dir))
X`09`09if(_alarm("`20Don't`20Exist`20`20","OK","Exit"))
X
X`09`09`09`09`09good_bye();
X`09`09else
X`09`09`09`09`09`7B
X`09
X`09`09`09`09`09return;
X`09`09`09`09`09`7D
X`09mess=NULL;
X`09if`20(is_current)
X`09`09`7B`20
X`09`09
X`09`09`09sprintf(com,"COPY/REPLA`20%s`20%s",SLK_FILE,dest_dir);
X`09`09`09run(com);
X`09`09`09`09`20`20`20`20`20`20
X`09`09`7D
X`09else
X`09`09`7B
X`09`09for(i=0;i<NMB_FLS;i++)
X`09`09`20`20`20if(select_list`5Bcurrent_panel`5D`5Bi`5D)
X`09`09`09`7B
X`09`09`09sprintf(com,"COPY/REPLA`20%s`20%s",dirs`5Bcurrent_panel`5D`5Bi`5D,
X`09`09`09`09dest_dir);
X`09`09sprintf(dpy_fname,"%s",strstr(dirs`5Bcurrent_panel`5D`5Bi`5D,"`5D")+1);
V`20
X`09`09`09select_list`5Bcurrent_panel`5D`5Bi`5D=(int)NULL;`20/*2*/
X`09`09`09mess=message(mess,"`20`20`20`20`20`20Copying`20`20`20`20`20`20`20",
X`09`09`09`09`20`20`20`20`20dpy_fname);`09`09`09`09
X`09`09`09if(run(com)!=1)
X`09`09`09`09if(_alarm("`20`20`20Operation`20`20`20Failed`20`20`20`20",
X`09`09`09`09`20`20`20`20`20`20`20`20`20"Continue"`20,"Cancel"))
X`09`09`09`09`20`20`20`20`20`20`7B
X`09`09`09`09`20`20`20`20`20`20delwin(mess);`09
X`09`09`09`09`20`20`20`20`20`20return`20;
X`09`09`09`09`09`7D
X`09`09`09
X`09`09`09`7D
X`09`09`7D
X
X`09`09if`20(!is_current)`09delwin(mess);
X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20if`20(LST_OFS>NMB_FLS)
X`09`09`09LST_OFS=
X`09`09reread(SLK_FILE,GLB_SLK);
X`09`09i=current_panel;
X`09`09current_panel=dest;
X`09`09reread(SLK_FILE,GLB_SLK);
X`09`09wrefresh(WIN(LEFT));
X`09`09wrefresh(WIN(RIGHT));
X`09`09current_panel=i;
X`09`09chdir(cwd`5Bcurrent_panel`5D);
X`09`09ACT(_CHOICE);
X`09`09
X`09
X`09`09
X`7D
X
X
Xint`20move_imp(char`20*source,char`20*dest)
X`7B
X`09char`20command`5B255`5D;
X`09int`20status;`09`09`09`09`09`20`20`20/*3*/
X`09
X`09if(strstr(source,".DIR;"))
X`09`09`09`7B
X`09`09`09`09ok("`20`20Can't`20move`20`20","");
X`09`09`09`09return`201;
X`09`09`09`7D
X`20`20`20switch`20(status=crs_rename(source,dest))`7B`09`09`20`20`20/*3*/
X
X`20`20`20case`2099524:`20/*`20Different`20devices`20*/`09`09`09`20`20`20/*3*/
V
X`20`20`20`20`20`20`7B`09`09`09`09`09`09`09`20`20`20/*3*/
X`09sprintf(command,"COPY/REPLA`20%s`20%s",source,dest);
X`09
X`09if`20(run(command)!=1)`20
X`09`09`09`09return`200;
X`09if`20(!(del_sys(source)`20`26`201))
X`09`09`09`09`7B
X`09`09`09`09delete(dest);
X`09`09`09`09return`20`200;
X`09`09`09`09`7D
X`09else`20
X`09`09`09`09return`20`20`201;
X
X`09`7D
X`20`20`20`20`20case`200:`09`09`09`09`09`09`20`20`20/*3*/
X`09/*`20OK`20*/`09`09`09`09`09`20`20`20/*3*/
X`09`09`09`09return`201;`09`09`20`20`20/*3*/
X`20`20`20`20`20default:`09`09`09`09`09`09`20`20`20/*3*/
X`09`09`09`09_mess(`26status);`09`09`20`20`20/*3*/
X`09`09`09`09return`200;`09`09`20`20`20/*3*/
X`09`7D`09`09`09`09`09`09`20`20`20/*3*/
X`20`20`09`09`09`09`09`09`09`20`20`20/*3*/
X`7D`09`09`09`09
X`09
Xvoid`20f_move()
X`7B
X`09char`20com`5B512`5D;
X`09char`20dpy_fname`5B100`5D;
X`09int`20dest,i;
X`09int`20file_numb;
X`09int`20is_current=0;
X`09WINDOW`20*mess;
X`09char`20dest_dir`5B256`5D;
X`09
X`09if`20(NMB_FLS==0)`20return`20;
X`09if(!strcmp(cwd`5B0`5D,cwd`5B1`5D))
X`09`09`7B
X`09`09return;
X`09`09`7D
X`09`09`09
X`09dest=(current_panel)?0:1;
X`09file_numb=0;
X`09for(i=0;i<NMB_FLS;i++)
X`09`09if`20(select_list`5Bcurrent_panel`5D`5Bi`5D)
X`09`09`09`09file_numb++;
X
X`09if`20(!file_numb)`20`7B
X`09`09`09if(strcmp(SLK_FILE,"-")`20`26`26`20!strstr(SLK_FILE,
X`09`09`09`09".DIR"))
X`09`09`09`20`20`7B`20is_current=1;file_numb++;`7D
X`09`09`09else
X`09`09`09`09`7B
X`09`09`09`09return;
X`09`09`09`09`7D
X`09`09`09`7D
X
X`09strcpy(dest_dir,cwd`5Bdest`5D);
X
X`09prom_move(file_numb,dest_dir);
X`09if(`20!exist(dest_dir))
X`09`09if(_alarm("`20Don't`20Exist`20`20","OK","Exit"))
X
X`09`09`09`09`09good_bye();
X`09`09else
X`09`09`09`09`09`7B
X`09
X`09`09`09`09`09return;
X`09`09`09`09`09`7D
X`09mess=NULL;
X`09if`20(is_current)
X`09`09`7B`20
X`09`09
X`09`09`09move_imp(SLK_FILE,dest_dir);
X`09`09`09`09`20`20`20`20`20`20
X`09`09`7D
X`09else
X`09`09`7B
X`09`09for(i=0;i<NMB_FLS;i++)
X`09`09`20`20`20if(select_list`5Bcurrent_panel`5D`5Bi`5D)
X`09`09`09`7B
X`09`09sprintf(dpy_fname,"%s",strstr(dirs`5Bcurrent_panel`5D`5Bi`5D,"`5D")+1);
V`20
X`09`09`09select_list`5Bcurrent_panel`5D`5Bi`5D=(int)NULL;`20/*2*/
X`09`09`09mess=message(mess,"`20`20`20`20`20`20Rename`20(move)`20`20`20`20`20
V`20`20",
X`09`09`09`09`20`20`20`20`20dpy_fname);`09`09`09`09
X`09`09`09if(move_imp(dirs`5Bcurrent_panel`5D`5Bi`5D,
X`09`09`09`09dest_dir)!=1)
X`09`09`09`09if(_alarm("`20`20`20Operation`20`20`20Failed`20`20`20`20",
X`09`09`09`09`20`20`20`20`20`20`20`20`20"Continue"`20,"Cancel"))
X`09`09`09`09`20`20`20`20`20`20`7B
X`09`09`09`09`20`20`20`20`20`20delwin(mess);`09
X`09`09`09`09`20`20`20`20`20`20return`20;
X`09`09`09`09`09`7D
X`09`09`09
X`09`09`09`7D
X`09`09`7D
X
X`09`09if`20(!is_current)`09delwin(mess);
X
X`09`09reread(SLK_FILE,GLB_SLK);
X`09`09i=current_panel;
X`09`09current_panel=dest;
X`09`09reread(SLK_FILE,GLB_SLK);
X`09`09wrefresh(WIN(LEFT));
X`09`09wrefresh(WIN(RIGHT));
X`09`09current_panel=i;
X`09`09chdir(cwd`5Bcurrent_panel`5D);
X`09`09ACT(_CHOICE);
X`09`09
X`09
X`09`09
X`7D
X
Xvoid`20file_edit()
X`7B
X`09char`20command`5B256`5D;
X`09WINDOW`20*output;
X`09
X
X`09if`20(NMB_FLS==0)`20return;
X`09output=newwin(LINES,COLS,0,0);
X`09wrefresh(output);
X
X`09sprintf(command,editor,SLK_FILE);
X
X`09system(command);
X`09
X`09set_term(term_table,SMG$K_INIT_STRING);
X`09werase(output);
X
X`09delwin(output);
X`09fresh();
X`09
X`7D`09`09`09`20`20
X
X
Xvoid`20cre_dir()
X`7B
X`09char`20str`5B60`5D,str2`5B60`5D="";
X`09WINDOW`20*w_chdir,*w_line;
X`09int`20i,col;
X`09
X`09
X`09col`20=(current_panel==RIGHT)?10:45;
X`09w_chdir=newwin(5,30,8,col);
X`09w_line=subwin(w_chdir,1,24,8+3,col+2);
X`09wsetattr(w_chdir,_REVERSE);
X`09wclrattr(w_line,_REVERSE);
X`09sprintf(str,"`20`20Create`20`20Directory`20`20`20`20`20`20`20");
X`20`20`09_box(w_chdir);
X`09mvwaddstr(w_chdir,1,1,str);
X`09mvwaddstr(w_chdir,3,1,">>");
X`09wmove(w_chdir,5,2);
X`09wrefresh(w_chdir);
X`09line_gets(w_line,str2);
X`09delwin(w_line);
X`09delwin(w_chdir);
X`09if`20(mkdir(str2,0))
X`09`09`09ok("`20Operation`20Failed`20","");
X`09`09reread(SLK_FILE,GLB_SLK);
X`09`09if(!strcmp(cwd`5B0`5D,cwd`5B1`5D))
X`09`09`09`7Bint`20i;
X`09`09`09`09i=current_panel;
X`09`09`09`09current_panel=(current_panel)?0:1;
X`09`09`09`09reread(SLK_FILE,GLB_SLK);
X`09`09`09`09wrefresh(WIN(LEFT));
X`09`09`09`09wrefresh(WIN(RIGHT));
X`09`09`09`09current_panel=i;
X`09`09`09`09chdir(cwd`5Bcurrent_panel`5D);
X`09`09`09`7D`09
X
X`09`09ACT(_CHOICE);
X`09
X`7D
X
X
Xint`20if_beg=1;
X
Xvoid`20ch_tem()
X`7B
X`20`09
X`09char`20tit`20`5B40`5D;`09
X`09WINDOW`20*w_chdir,*w_line;
X`09int`20i;
X
X`09
X`09w_chdir=newwin(5,20,5,30);
X`09w_line=subwin(w_chdir,1,14,5+3,30+2);
X
X`09wsetattr(w_chdir,_REVERSE);
X`09wclrattr(w_line,_REVERSE);
X
X`09sprintf(tit,"`20`20Filter`20`20");
X
X`20`20`09_box(w_chdir);
X
X`09mvwaddstr(w_chdir,1,1,tit);
X`09mvwaddstr(w_chdir,3,1,">>");
X`09wmove(w_chdir,5,2);
X
X`09wrefresh(w_chdir);
X`09line_gets(w_line,file_templ`5Bcurrent_panel`5D);
X`09delwin(w_line);
X`09delwin(w_chdir);
X`09
X`7D
X
X`09`09`09`09`09`20`20
Xvoid`20prom_copy(int`20part,char`20*str_p)
X`7B
X`09char`20str`5B60`5D,str2`5B60`5D;
X`09WINDOW`20*w_chdir,*w_line;
X
X
X`09w_chdir=newwin(5,60,8,10);
X`09w_line=subwin(w_chdir,1,54,8+3,10+2);
X`09wsetattr(w_chdir,_REVERSE);
X`09wclrattr(w_line,_REVERSE);
X`09sprintf(str,"`20`20Copy`20`20%d`20`20`20File(s)`20to`20:`20`20`20`20`20`20
V`20",part);
X`20`20`09_box(w_chdir);
X`09mvwaddstr(w_chdir,1,1,str);
X`09mvwaddstr(w_chdir,3,2,">>");
X`09wmove(w_chdir,5,2);
X`09wrefresh(w_chdir);
X`09line_gets(w_line,str_p);
X`09
X`09delwin(w_line);
X`09delwin(w_chdir);
X`7D
Xvoid`20prom_move(int`20part,char`20*str_p)
X`7B
X`09char`20str`5B60`5D,str2`5B60`5D;
X`09WINDOW`20*w_chdir,*w_line;
X
X
X`09w_chdir=newwin(5,60,8,10);
X`09w_line=subwin(w_chdir,1,54,8+3,10+2);
X`09wsetattr(w_chdir,_REVERSE);
X`09wclrattr(w_line,_REVERSE);
X`09sprintf(str,"`20`20Rename`20(move)`20`20%d`20`20`20File(s)`20to`20:`20`20
V`20`20`20`20`20",part);
X`20`20`09_box(w_chdir);
X`09mvwaddstr(w_chdir,1,1,str);
X`09mvwaddstr(w_chdir,3,2,">>");
X`09wmove(w_chdir,5,2);
X`09wrefresh(w_chdir);
X`09line_gets(w_line,str_p);
X`09
X`09delwin(w_line);
X`09delwin(w_chdir);
X`7D
X
Xvoid`20_delete()
X`7B
X`09char`20com`5B512`5D;
X`09char`20dpy_fname`5B100`5D;
X`09int`20dest,i;
X`09int`20file_numb;
X`09int`20is_current=0;
X`09WINDOW`20*mess;
X`09char`20dest_dir`5B256`5D;
X`09
X
X`09if`20(NMB_FLS==0)`20return`20;
X`09dest=(current_panel)?0:1;`09`09
X`09file_numb=0;
X`09for(i=0;i<NMB_FLS;i++)
X`09`09if`20(select_list`5Bcurrent_panel`5D`5Bi`5D)
X`09`09`09`09file_numb++;
X
X`09if`20(!file_numb)`20`7B
X`09`09`09if(strcmp(SLK_FILE,"-"))`20
X`09`09`09`20`20`7B`20is_current=1;file_numb++;`7D
X`09`09`09else
X`09`09`09`09`7B
X`09`09`09`09return;
X`09`09`09`09`7D
X`09`09`09`7D
X`09if(_alarm("`20`20`20`20`20`20Deleting?`20`20`20`20`20","OK","Cancel")==1)
X`09`09`09`7B
X`09`09`09return;`09
X`09`09`09`7D
X`09mess=NULL;`09
X`09if`20(is_current)
X`09`09del_sys(SLK_FILE);
X`09else
X`09`09`7B
X`09`09for(i=0;i<NMB_FLS;i++)
X`09`09`20`20`20if(select_list`5Bcurrent_panel`5D`5Bi`5D)
X`09`09`09`7B
X`09`09`09select_list`5Bcurrent_panel`5D`5Bi`5D=(int)NULL;`20/*2*/
X`09`09`09sprintf(dpy_fname,"%s",
X`09`09`09`09strstr(dirs`5Bcurrent_panel`5D`5Bi`5D,"`5D")+1);
X`09`09`09
X`09`09`09mess=message(mess,"`20`20`20`20`20`20Deleting`20`20`20`20`20`20`20",
V
X`09`09`09`09`20`20`20`20`20dpy_fname);`09`09`09`09
X`09`09`09if(!(del_sys(dirs`5Bcurrent_panel`5D`5Bi`5D)`20`20`26`201))
X`09`09`09`09if(_alarm("`20`20`20Operation`20`20`20Failed`20`20`20`20",
X`09`09`09`09`20`20`20`20`20`20`20`20`20"Continue"`20,"Cancel"))
X`09`09`09`09`20`20`20`20`20`20`7B
X`09`09`09`09`20`20`20`20`20`20delwin(mess);`09`09
X`09`09`09`09`20`20`20`20`20`20return`20;
X`09`09`09`09`20`20`20`20`20`20`7D
X`09`09`09`7D
X`09`09`7D
X`09`09if(!is_current)`20delwin(mess);
X`09`09reread(SLK_FILE,GLB_SLK);
X`09`09if(!strcmp(cwd`5B0`5D,cwd`5B1`5D))
X`09`09`09`7Bint`20i;
X`09`09`09`09i=current_panel;
X`09`09`09`09current_panel=dest;
X`09`09`09`09reread(SLK_FILE,GLB_SLK);
X`09`09`09`09wrefresh(WIN(LEFT));
X`09`09`09`09wrefresh(WIN(RIGHT));
X`09`09`09`09current_panel=i;
X`09`09`09`09chdir(cwd`5Bcurrent_panel`5D);
X`09`09`09`7D`09
X`09`09`09`09
X`09`09ACT(_CHOICE);
X`09`09
X`7D
X
Xvoid`20call_view_external(char`20*filename)
X`7B
X`09char`20comm_view`5B256`5D;
X`09WINDOW`20*`20scr_w;
X`09if`20(NMB_FLS==0)`20return`20;
X`09scr_w=newwin(24,80,0,0);
X`09wrefresh(scr_w);
X`09
X`09sprintf(comm_view,view_s`20,filename);
X`09system(comm_view);
X`09delwin(scr_w);
X`7D
X
Xchar`20*convert_table=iso;
X
X
Xvoid`20convert(char`20*buff,int`20len)`09`20`20`20/*2*/
X`7B
X`20`20register`20i;
X`20`20register`20unsigned`20char`20tmp;`09
X`09
X`20`20for`20(i=0;i<(len);i++)
X`09`09`7B
X`09`09`20`20
X`09`09`20`20tmp=(*((buff)+i));
X`09`09
X`09`09`20`20tmp=(tmp>127)?convert_table`5Btmp+256`5D:tmp;
X`09`09`20`20(*((buff)+i))=tmp;
X`09`09`7D
X`7D`09
X`09`09
X
Xint`20_IS_HELP;
X
X
Xvoid`20call_view_internal(char`20*_filename)
X`7B
X`09
X`09if`20((NMB_FLS==0)`20`26`26`20(_IS_HELP!=1))`20return`20;
X
X`09view_implementation(_filename,`26_IS_HELP);
X`09`09`09
X`09`09`09`09`20`20
X`7D
X
X`09
Xvoid`20call_info(char`20*_filename)
X`7B`09
X`09if`20(NMB_FLS==0)`20return`20;
X`09
X`09if`20(!strcmp(_filename,"-"))`20return;
X`09
X`09info_impl(_filename);
X`09
X`7D
X
Xvoid`20ch_dev(void)
X`7B
X`09char`20*dev;
X`09dev_scan();
X`09dev`20=menu(dev_list,5,(current_panel==RIGHT)?10:50);
X`09
X`09if`20(dev==NULL)`20return;
X`09strcpy(`20cwd`5Bcurrent_panel`5D,dev);
X`09strcat(cwd`5Bcurrent_panel`5D,"`5B000000`5D");
X`09
X`7D
X
X`09`09`09
Xint`20my_chdir(char`20*dir)
X`7B
X`09$DESCRIPTOR(dir_d,"");
X`09$DESCRIPTOR(log_d,"SYS$DISK");
X`09$DESCRIPTOR(dev_d,"");
X`20`20`20`20`20`20`20`20char`20*ptr;
X`20`20`20`20`09struct`20FAB`20fab;
X`20`20`20`20`09struct`20NAM`20nam;
X`20`20`20`20`20`20`20`20char`20`20`20`20`20`20`20esa`5B255`5D,`20dev`5B128`5D;
V
X
X`20`20`20`20fab`20=`20cc$rms_fab;
X`20`20`20`20fab.fab$l_nam`20=`20`26nam;
X`20`20`20`20nam`20=`20cc$rms_nam;
X`20`20`20`20fab.fab$l_fna`20=`20dir;
X`20`20`20`20fab.fab$b_fns`20=`20strlen(dir);
X`20`20`20`20fab.fab$b_shr`20=`20FAB$M_SHRGET;
X`20`20`20`20nam.nam$l_esa`20=`20esa;
X`20`20`20`20nam.nam$b_ess`20=`20255;
X`20`20`20`20nam.nam$v_pwd=1;
X`09
X`20`20`20`20if(!((status=sys$parse(`20`26fab`20))`261)`20)
X`20`20`20`20`09`09`7B
X`09`09`09_mess(`26status);
X`09`09`09return`20-1;
X`09`09`7D
X
X`20`20`20`20if(`20!(`20(nam.nam$b_name==0)`20`26`26`20(nam.nam$b_type==1)
X`20`20`20`20`20`26`26`20(`20nam.nam$b_ver==1`20)`20)`20)
X`09`09`7B`20const`20bad=0x186d4;`09`09`09`20`20`20/*2*/
X`20`20`20`20`09`09`20`20_mess(`26bad);`09`09`09`09`20`20`20/*2*/
X`09`09`20`20return`20-1;
X`09`09`7D
X/*
X`20`20`20`20nam.nam$l_node`5Bnam.nam$b_node`5D='`5C0';
X`20`20`20`20nam.nam$l_dev`5Bnam.nam$b_dev`5D='`5C0';
X*/
X#ifdef`20DEBUG
X`20`20`20`20`20`20`20`20fprintf(stderr,"`20byte`20node`20%d,`20byte`20dev`20%d
V`5Cn",
X`09`09`09nam.nam$b_node,
X`09`09`09`09nam.nam$b_dev);
X#endif
X`20`20/*`20stupid`20VMS`20structurs`20!!`20*/
X`20`20`20`20ptr=dev;`09`09
X`20`20`20`20memcpy(ptr,nam.nam$l_node,nam.nam$b_node);
X`20`20`20`20ptr+=nam.nam$b_node;`09
X`20`20`20`20memcpy(ptr,nam.nam$l_dev,nam.nam$b_dev);
X`20`20`20`20ptr`5Bnam.nam$b_dev`5D='`5C0';
X`20`20`20`20`09
X`20`09
X`20/*`20`20`20sprintf(dev,`20"%s%s",`20nam.nam$l_node,nam.nam$l_dev);`20*/
X#ifdef`20DEBUG
X`09fprintf(stderr,"device`20%s`5Cnnode`20%s`5Cndev`20%s`5Cn",
X`09`09`09`09dev,
X`09`09`09`09nam.nam$l_node,
X`09`09`09`09nam.nam$l_dev);
X#endif`20
X`20`20`20`20dev_d.dsc$w_length`20`20=`20strlen(`20dev`20);
X`20`20`20`20dev_d.dsc$a_pointer`20=`20dev;
X`20`20
X`20`20`20`20dir_d.dsc$w_length`20`20=`20nam.nam$b_dir;
X`20`20`20`20dir_d.dsc$a_pointer`20=`20nam.nam$l_dir;
X
X`20`20`20`20lib$set_logical(`26log_d,`26dev_d);
X
X`20`20`20`20if(!((status=sys$setddir(`20`26dir_d,`200,`200))`261))
X`20`20`20`20`20`09`7B
X`09`09_mess(`26status);
X`09`09return`20-1;
X`09`7D
X`09return`200;
X`7D
X
X`09`09`09`09
$ call unpack UTILS.C;1 946932406 "" 25 28 31
$!
$ create 'f'
X/*`20VAX/DEC`20CMS`20REPLACEMENT`20HISTORY,`20Element`20VARIABLES.H*/
X/*`20*3`20`20`20`20`203-NOV-1994`2016:40:19`20ALEXEY`20"DEC`20C`20compiled`20o
Vk.`20"*/
X/*`20*2`20`20`20`2015-APR-1994`2015:27:08`20ALEXEY`20"GCC`20port`20fixed."*/
X/*`20*1`20`20`20`2014-APR-1994`2014:38:21`20ALEXEY`20"Global`20variables."*/
X/*`20VAX/DEC`20CMS`20REPLACEMENT`20HISTORY,`20Element`20VARIABLES.H*/
X#include`20<curses.h>
Xstruct`20options
X`09`09`7B
X`09`09`20`20char`20*`20name;
X`09`09`20`20char`20*`20val;
X`09`09`20`20int`20(*func)(char*,char*);`09`09`20`20`20/*2*/
X`09`09`7D;
Xstruct`20types
X`09`09`7B
X`09`09`20`20char`20*`20name;
X`09`09`20`20char`20*`20val;
X`09`09`7D;
X
X
Xtypedef`20struct`20options`20opt_var;
Xtypedef`20struct`20types`20type_act;
X
X
X
Xextern`20WINDOW`20*panels`5B3`5D`5B2`5D;
Xextern`20WINDOW`20*face1,*face2;
Xextern`20WINDOW`20*title`5B2`5D;
Xextern`20WINDOW`20*prompt,*input,*help;
X
X
X
X
X`09`09`09`09`09`09`09`20`20`20/*3*/
X
X
Xextern`20int`20max_item`5B2`5D;`09`09`09`09`09`20`20`20/*3*/
X
Xextern`20char`20**dirs`5B2`5D;`09`09`09`09`09`20`20`20/*3*/
X
Xextern`20int`20current_panel;`09`09`09`09`20`20`20/*3*/
X
Xextern`20int`20current_sel`5B2`5D;`09`09`09`09`20`20`20/*3*/
Xextern`20int`20current_ls`5B2`5D;`09`09`09`09`20`20`20/*3*/
X
Xextern`20char`20cwd`5B2`5D`5B256`5D;`09`09`09`09`20`20`20/*3*/
X
Xextern`20int`20select_list`5B2`5D`5B4096`5D;`09`09`09`20`20`20/*3*/
Xextern`20int`20max_selk;`09`09`09`09`09`20`20`20/*3*/
Xextern`20void`20(*call_view)(char*);`09`09`09`20`20`20/*3*/
Xextern`20char`20*PROM;`09`09`09`09`09`20`20`20/*3*/
Xextern`20int`20_about;`09`09`09`09`09`20`20`20/*3*/
Xextern`20int`20_time;`09`09`09`09`09`20`20`20/*3*/
Xextern`20int`20sort;`09`09`09`09`09`20`20`20/*3*/
Xextern`20int`20subst;`09`09`09`09`09`20`20`20/*3*/
Xextern`20int`20is_ver;`09`09`09`09`09`20`20`20/*3*/
Xextern`20int`20is_scwd;`09`09`09`09`09`20`20`20/*3*/
Xextern`20int`20exit_conf;`09`09`09`09`09`20`20`20/*3*/
Xextern`20int`20req_fresh;`09`09`09`09`09`20`20`20/*3*/
Xextern`20char`20file_templ`5B2`5D`5B50`5D;`09`09`09`09`20`20`20/*3*/
Xextern`20char`20*dev_list`5B50`5D;`09`09`09`09`20`20`20/*3*/
Xextern`20int`20max_dev;`09`09`09`09`09`20`20`20/*3*/
Xextern`20char`20*editor;`09`09`09`09`09`20`20`20/*3*/
Xextern`20char`20*view_s;`09`09`09`09`09`20`20`20/*3*/
Xextern`20char`20*help_s;`09`09`09`09`09`20`20`20/*3*/
Xextern`20char`20saved_cwd`5B255`5D;`09`09`09`09`20`20`20/*3*/
Xextern`20int`20real_dev;`09`09`09`09`09`20`20`20/*3*/
$ call unpack VARIABLES.H;1 1970526785 "" 4 29 31
$!
$ create 'f'
X/*`20VAX/DEC`20CMS`20REPLACEMENT`20HISTORY,`20Element`20VERSION.C*/
X/*`20*1`20`20`20`2015-APR-1994`2015:10:03`20ALEXEY`20"Version`20and`20date`20s
Vtrings`20store`20in`20separate`20file."*/
X/*`20VAX/DEC`20CMS`20REPLACEMENT`20HISTORY,`20Element`20VERSION.C*/
Xstatic`20char`20version`5B`5D="1.1";
Xstatic`20char`20date`5B`5D="12`20Apr`201994";
X
Xchar`20*
Xg_ver()
X`7B`20return`20version;`7D
X
Xchar`20*
Xg_date()
X`7B`20return`20date;`20`7D
$ call unpack VERSION.C;1 1111831486 "" 1 30 31
$!
$ create 'f'
X/*`20VAX/DEC`20CMS`20REPLACEMENT`20HISTORY,`20Element`20VIEW.C*/
X/*`20*1`20`20`20`2015-APR-1994`2015:23:06`20ALEXEY`20"Translation`20version`20
Vof`20view.c`20(GNU`20p2c).`20DO`20NOT`20WORK."*/
X/*`20VAX/DEC`20CMS`20REPLACEMENT`20HISTORY,`20Element`20VIEW.C*/
X/*`20Output`20from`20p2c,`20the`20Pascal-to-C`20translator`20*/
X/*`20From`20input`20file`20"VIEW.PAS"`20*/
X
X
X#include`20<vms/smgdef.h>
X#include`20<vms/smg$routines.h>
X#include`20<vms/starlet.h>
X#include`20<errno.h>
X#include`20<file.h>
X#include`20<unixio.h>
X#include`20<string.h>
X
X
X
X
X
Xconst`20Display_lines`20=`20`202400;
Xconst`20Display_columns`20=`20160;
Xconst`20buff_len`20`20`20`20`20`20`20=`201024;
Xconst`20one`20`20`20`20`20`20`20`20`20`20`20=`20`201`20;
X
X
X
Xconst`20`20BORDER=SMG$M_BORDER;
X
Xconst`20`20REVERSE=SMG$M_REVERSE;
X
Xconst`20`20CURSOR_OFF`20=SMG$M_CURSOR_OFF;`20
X
Xconst`20UP=SMG$M_UP;`20
X
Xconst`20DOWN=SMG$M_DOWN;`20
X
Xconst`20LEFT=SMG$M_LEFT;
X
Xconst`20RIGHT`20=SMG$M_RIGHT`20;
X
Xconst`20CURSOR_ON=SMG$M_CURSOR_ON;
X
Xconst`20false`20=`200;
Xconst`20true=1;
X
Xtypedef`20unsigned`20long`20Cond_Code;
X
Xtypedef`20unsigned`20long`20Display_Id_Type;
X
Xtypedef`20unsigned`20long`20Pasteboard_Id_Type;
X
Xtypedef`20unsigned`20long`20Keyboard_Id_Type;
X
Xtypedef`20unsigned`20long`20Key_Table_Id_Type;
X
Xtypedef`20unsigned`20long`20Viewport_Id_Type;
X
Xtypedef`20char`20dsc`5B513`5D;
X
Xtypedef`20char`20str_`5B1024`5D;
Xtypedef`20unsigned`20short`20wrd;
X
X
X
X
Xstatic`20Cond_Code`20_Status;
Xstatic`20Keyboard_Id_Type`20Keyboard_Id;
XPasteboard_Id_Type`20PASTEBOARD_ID;
Xstatic`20Key_Table_Id_Type`20Key_Table_Id;
Xstatic`20Display_Id_Type`20Display_Id,`20Save_Display;
Xstatic`20Viewport_Id_Type`20Viewport_Id;
Xstatic`20long`20Display_Rows;
Xstatic`20int`20`20IN_file;
Xstatic`20int`20co1,co2,co3,co4;
X
Xextern`20unsigned`20long`20get_kb(void);
Xextern`20void`20convert(char`20*buff,int);
X
X
Xstatic`20unsigned`20long`20CONV(long`20STAT)
X`7B
X`20/*`20return`20(0x218644`20+`20STAT`20*`208);`20`20*/
X`20`20return`20STAT;
X`7D
Xstruct`20p_str`20`7B
X`09`20`20int`20len;
X`09`20`20char`20*ptr;
X`7D;`09`09
Xstruct`20p_str`20*
Xto_dsc(char`20*s)
X`7B`20
X`20`20static`20struct`20p_str`20desc;
X`20`20desc.len=strlen(s);
X`20`20desc.ptr=s;
X`20`20return`20`26desc;
X`7D
X
Xvoid`20
X_mess(unsigned`20long`20*sts)
X`7B
X`20`20char`20buff`5B256`5D;
X`20`20long`20col;
X`20`20short`20ret_len;
X`20`20int`20co1,co2,co3;
X`20`20Display_Id_Type`20Display_Id;
X`20`20unsigned`20short`20ch;
X`20`20Cond_Code`20stat;
X`20`20char`20hex_st`5B41`5D;
X`20`20char`20cnts`5B41`5D;
X`20`20struct`20p_str`20buff_d,hex_d=`7B`20sizeof`20(hex_st),0`7D;
X`20`20hex_d.ptr`20=`20hex_st;
X`20`20Keyboard_Id`20=`20get_kb();
X`20`20buff_d.len=sizeof(buff)-1;
X`20`20buff_d.ptr=buff;
X`20`20stat`20=`20sys$getmsg(*sts,`20`26ret_len,`20`26buff_d,0,0);
X`20`20buff`5Bret_len`5D='`5C0';
X`20`20buff_d.len=strlen(buff);
X`20`20co1=5;co4`20=`20ret_len+`204;
X`20`20stat`20=`20smg$create_virtual_display(`26co1,`26co4`20,`26`20Display_Id,
V
X`09`09`09`09`20`20`20`20`26BORDER,`20`26REVERSE);
X
X`20`20if`20(!(stat`20`26`201))
X`20`20`20`20goto`20_Lreturn_;
X
X
X
X
X`20`20stat`20=`20smg$label_border(`26Display_Id,`20to_dsc("Error"));
X`20`20stat`20=`20smg$set_cursor_mode`20(`26PASTEBOARD_ID,`20`26CURSOR_OFF);
X`20`20stat`20=`20sys$fao`20(to_dsc("Status`20Code:`20%X!XL`20"),`20`26co4,`20
V`26hex_d);
X`20`20hex_d.len=co4;
X`20`20co1=2;co2=4;co3=3;
X`20`20stat`20=`20smg$set_cursor_abs`20(`26Display_Id,`20`26co1,`20`26co2);
X`20`20stat`20=`20smg$put_line`20(`26Display_Id,`20`26hex_d);
X`20`20stat`20=`20smg$set_cursor_abs`20(`26Display_Id,`20`26co3,`20`26co3);
X`20`20stat`20=`20smg$put_line`20(`26Display_Id,`20`26buff_d);
X
X`20`20col`20=`20(76`20-`20strlen(buff))`20/`202;
X`20`20co2=10;
X`20`20stat`20=`20smg$paste_virtual_display`20(`26Display_Id,`26PASTEBOARD_ID,
V`20`26co2,`20`26col);
X`20`20if`20(!(stat`20`26`201))
X`20`20`20`20goto`20_Lreturn_;
X`20`20stat`20=`20smg$ring_bell`20(`26Display_Id,`20`26co1);
X`20`20smg$read_keystroke`20(`26Keyboard_Id,`20`26ch);
X`20`20smg$delete_virtual_display`20(`26Display_Id);
X_Lreturn_:`20;
X`7D
X
X
X
Xlong`20
Xview_implementation(char`20*f_name,`20long`20*_IS_help)
X`7B
X`20`20long`20Result;
X`20`20int`20count;
X`20`20char`20Buff`5B1025`5D;
X`20`20char`20Null`5B256`5D;
X`20`20char`20Blank`5B80`5D;
X`20`20long`20Viewport_Col=1;
X`20`20long`20Viewport_Line=1;
X`20`20long`20i,`20j;
X`20`20unsigned`20short`20In_char;
X`20`20int`20Exit_Flag=1;
X`20`20char`20_Title`5B7`5D;
X`20`20Cond_Code`20status;
X`20`20char`20*TEMP;
X`20`20wrd`20TEMP1;
X`20`20char`20STR2`5B256`5D;
X`20`20int`20co1,co2,co3,co4;
X
X
X
X`20`20IN_file=open(f_name,O_RDONLY,`200,"ctx=rec");
X`20`20if`20(`20IN_file`20==`20-1)`20`7B
X`20`20`20`20`20_mess((unsigned`20long`20*)`26vaxc$errno);
X`20`20`20`20Result`20=`200;
X`20`20`20`20goto`20_Lreturn_;
X`20`20`7D
X
X`20`20_Status`20=`20smg$save_physical_screen`20(`26PASTEBOARD_ID,`20`26Save_Di
Vsplay);
X`20`20Keyboard_Id`20=`20get_kb();
X`20`20if`20(!(_Status`20`26`201))`20`7B
X`20`20`20`20_mess(`26_Status);
X`20`20`20`20Result`20=`200;
X`20`20`20`20goto`20_Lreturn1;
X`20`20`7D
X
X
X
X`20`20if`20(*_IS_help`20==`201)`20`7B
X`20`20`20`20_Status`20=`20smg$create_virtual_display`20(`26Display_lines,`20
V`26Display_columns,
X`09`26Display_Id,`20`26BORDER,`20`26REVERSE);
X`20`20`20`20strcpy(_Title,`20"HELP");
X`20`20`7D`20else`20`7B
X`20`20`20`20_Status`20=`20smg$create_virtual_display`20(`26Display_lines,`20
V`26Display_columns,
X`09`09`09`09`09`20`26Display_Id,`20`26BORDER,0);
X`20`20`20`20strcpy(_Title,`20"View");
X`20`20`7D
X
X
X`20`20if`20(!(_Status`20`26`201))`20`7B
X`20`20`20`20_mess(`26_Status);
X`20`20`20`20Result`20=`200;
X`20`20`20`20goto`20_Lreturn1;
X`20`20`7D
X
X`20`20co1=1;co2=22;co3=80;
X`20`20_Status`20=`20smg$create_viewport`20(`26Display_Id,`20`26co1,`26co1,`26c
Vo2,`20`26co3);
X
X`20`20if`20(!(_Status`20`26`201))`20`7B
X`20`20`20`20_mess(`26_Status);
X`20`20`20`20Result`20=`200;
X`20`20`20`20goto`20_Lreturn1;
X`20`20`7D
X
X`20`20_Status`20=`20smg$label_border`20(`26Display_Id,`20to_dsc(_Title));
X`20`20_Status`20=`20smg$set_cursor_mode`20(`26PASTEBOARD_ID,`20`26CURSOR_OFF);
V
X`20`20for`20(i`20=`201;`20i`20<=`20Display_lines;`20i++)`20`7B
X`20`20`20`20`20`20char`20*endch;
X`20`20`20`20`20`20_Status=read(IN_file,Buff,`201025);
X`20`20`20`20`20`20if`20(_Status`20==`200)
X`09`09break;
X`20`20`20`20`20`20if`20(_Status`20==`20-1)`20`7B
X`09_mess((unsigned`20long`20*)`26vaxc$errno);
X`09Result`20=`200;
X`09goto`20_Lreturn1;
X`20`20`20`20`20`20`7D
X`20`20`20`20`20`20
X`20`20`20`20`20`20Buff`5B_Status`5D='`5C0';
X`20`20`20`20`20`20endch`20=`20strchr(Buff,'`5Cn');
X`20`20`20`20`20`20if`20(endch)
X`09`09*endch`20=`20'`5C0';
X`20
X`20`20`20`20`20`20if`20(*_IS_help`20==`203)`20`7B
X`09convert(Buff,strlen(Buff));
X`20`20`20`20`20`20`7D
X`20`20`20`20`20`20smg$put_line`20(`26Display_Id,`20to_dsc(Buff));
X`20`20`20`20`20`20j++;
X`20`20`20`20
X`20`20`7D
X
X
X
X
X
X`20`20co1=2;co2=1;
X`20`20_Status`20=`20smg$paste_virtual_display`20(`26Display_Id,`20`26PASTEBOAR
VD_ID,`20`26co1,`26co2`20);
X`20`20if`20(!(_Status`20`26`201))`20`7B
X`20`20`20`20_mess(`26_Status);
X`20`20`20`20Result`20=`200;
X`20`20`20`20goto`20_Lreturn2;
X`20`20`7D
X
X
X
X`20`20/*+*/
X`20`20/*`20`20`20Read`20(and`20echo)`20lines`20in`20top`20part`20of`20screen
V`20and`20also`20echo
X`7B`20`20`20in`20bottom`20half`20of`20screen.
X`7B
X`7B-*/
X`20`20if`20(*_IS_help`20==`200)`20`7B
X`20`20`20`20sprintf(STR2,`20"Text`20View`20%s`20`20`20`20",`20f_name);
X`20`20`20`20smg$put_status_line`20(`26PASTEBOARD_ID,`20to_dsc(STR2));
X`20`20`7D
X
X`20`20while`20(Exit_Flag)`20`7B`20`20`20/*3*/
X`20`20`20`20smg$read_keystroke`20(`26Keyboard_Id,`20`26In_char);
X`20`20`20`20switch`20(In_char)`20`7B
X
X`20`20`20`20case`20SMG$K_TRM_DOWN:
X`20`20`20`20`20`20if`20(Viewport_Line`20<`20Display_lines`20-`2022`20`26`26`20
VViewport_Line`20<`20j)`20`7B
X`09smg$scroll_viewport`20(`26Display_Id,`20`26UP,0);
X`09Viewport_Line++;
X`20`20`20`20`20`20`7D`20else`20`7B
X`09smg$ring_bell`20(`26Display_Id);
X`20`20`20`20`20`20`7D
X`20`20`20`20`20`20break;
X
X`20`20`20`20case`20SMG$K_TRM_NEXT_SCREEN:
X`20`20`20`20`20`20if`20(Viewport_Line`20<`20Display_lines`20-`2022`20`26`26`20
VViewport_Line`20<`20j)`20`7B
X`09if`20(j`20-`20Viewport_Line`20>`2022)`20`7B
X`20`20`20`20`20`20`20`20`20`20co1=22;`20
X`09`20`20smg$scroll_viewport`20(`26Display_Id,`20`26UP,`20`26co1);
X`09`20`20Viewport_Line`20+=`2022;
X`09`7D`20else`20`7B
X/*`09`20`20co1`20=`20j-Viewport_Line;
X`09`20`20smg$scroll_viewport`20(`26Display_Id,`20`26UP,`20`26co1);
X`20`20`20`20`20`20`20`20`20`20Viewport_Line`20+=`20co1;
X*/
X`09`7D
X`20`20`20`20`20`20`7D`20else`20`7B
X`09smg$ring_bell`20(`26Display_Id);
X`20`20`20`20`20`20`7D
X`20`20`20`20`20`20break;
X
X
X`20`20`20`20case`20SMG$K_TRM_UP:
X`20`20`20`20`20`20if`20(Viewport_Line`20>`201)`20`7B
X`09smg$scroll_viewport`20(`26Display_Id,`20`26DOWN,0);
X`09Viewport_Line--;
X`20`20`20`20`20`20`7D`20else`20`7B
X`09smg$ring_bell`20(`26Display_Id);
X`20`20`20`20`20`20`7D
X`20`20`20`20`20`20break;
X
X
X`20`20`20`20case`20SMG$K_TRM_PREV_SCREEN:
X`20`20`20`20`20`20if`20(Viewport_Line`20>`201)`20`7B
X`09if`20(Viewport_Line`20<=`2022)`20`7B
X`20`20`20`20`20`20`20`20`20`20co1=1;co2=22;co3=80;`20
X`09`20`20smg$change_viewport`20(`26Display_Id,`20`26co1,`20`26Viewport_Col,`26
Vco2,`20`26co3);
X`09`20`20Viewport_Line`20=`201;
X`09`7D`20else`20`7B`20`20`20`20`20co1=22;
X`09`20`20smg$scroll_viewport`20(`26Display_Id,`20`26DOWN,`20`26co1);
X`09`20`20Viewport_Line`20-=`2022;
X`09`7D
X
X`20`20`20`20`20`20`7D`20else`20`7B
X`09smg$ring_bell`20(`26Display_Id);
X`20`20`20`20`20`20`7D
X`20`20`20`20`20`20break;
X
X
X`20`20`20`20case`20SMG$K_TRM_RIGHT:
X`20`20`20`20`20`20if`20(Viewport_Col`20<=`20Display_columns`20-`2080)`20`7B
X`09smg$scroll_viewport`20(`26Display_Id,`20`26LEFT);
X`09Viewport_Col++;
X`20`20`20`20`20`20`7D`20else`20`7B
X`09smg$ring_bell`20(`26Display_Id);
X`20`20`20`20`20`20`7D
X
X`20`20`20`20`20`20break;
X
X
X
X`20`20`20`20case`20SMG$K_TRM_LEFT:
X`20`20`20`20`20`20if`20(Viewport_Col`20>`201)`20`7B
X`09smg$scroll_viewport`20(`26Display_Id,`20`26RIGHT,0);
X`09Viewport_Col--;
X`20`20`20`20`20`20`7D`20else`20`7B
X`09smg$ring_bell`20(`26Display_Id);
X`20`20`20`20`20`20`7D
X`20`20`20`20`20`20break;
X
X
X
X`20`20`20`20case`20SMG$K_TRM_CTRLW:
X`20`20`20`20`20`20smg$repaint_screen`20(`26PASTEBOARD_ID);
X`20`20`20`20`20`20break;
X
X`20`20`20`20case`20SMG$K_TRM_CTRLZ:
X`20`20`20`20case`20SMG$K_TRM_F10:
X`20`20`20`20`20`20Exit_Flag`20=`20false;
X`20`20`20`20`20`20break;
X`20`20`20`20`7D
X
X`20`20`7D
X
X`20`20Result`20=`201;
X`20`20*Null`20=`20'`5C0';
X`20`20smg$put_status_line`20(`26PASTEBOARD_ID,`20to_dsc(Null));
X`20`20smg$delete_virtual_display`20(`26Display_Id);
X_Lreturn2:
X`20`20_Status`20=`20smg$set_cursor_mode`20(`26PASTEBOARD_ID,`20`26CURSOR_ON);
V
X_Lreturn1:
X`20`20smg$restore_physical_screen`20(`26PASTEBOARD_ID,`26`20Save_Display);
X_Lreturn_:
X`20`20if`20(IN_file`20!=`200)
X`20`20`20`20close(IN_file);
X`20`20return`20Result;
X`7D
X
X
X
X
X
X/*`20End.`20*/
$ call unpack VIEW.C;1 2048735833 "" 17 31 31
$ v=f$verify(v)
$ exit

0 new messages