Article View: vmsnet.sources
Article #6C Swing v3.6.3 patches, part 05/07
From: flowers
Date: Thu, 29 Oct 1992 17:42
Date: Thu, 29 Oct 1992 17:42
1499 lines
50281 bytes
50281 bytes
Submitted-by: flowers@memstvx1.memst.edu (Harry Flowers)
Posting-number: Volume 3, Issue 216
Archive-name: cswing/patch2_05
Patch-to: cswing: Volume 3, Issue 35-52,93
-+-+-+-+-+-+-+-+ START OF PART 5 -+-+-+-+-+-+-+-+
X strcpy(FILE_RING`5BNUM_FILES++`5D, filename);
X--- 343,352 -----
X `7B
X if (argv`5Bi`5D`5B0`5D == '.') strcpy(file,"*"); else *fil
Ve = 0;
X strcat(file,unix2vms(argv`5Bi++`5D));
X! while (expand_file_name("SYS$DISK:`5B`5D*.*",
X! file,
X! filename,
X! &context))
X `7B
X FILE_RING`5BNUM_FILES`5D =
X (char*) malloc(strlen(filename) + 1);
X**************
X*** 274,280
X strcat(file,unix2vms(argv`5Bi++`5D));
X while (expand_file_name("SYS$DISK:`5B`5D*.*",file,filename
V,&context))
X `7B
X! FILE_RING`5BNUM_FILES`5D = (char*) malloc(strlen(fil
Vename) + 1);
X strcpy(FILE_RING`5BNUM_FILES++`5D, filename);
X `7D
X `7D
X--- 348,355 -----
X filename,
X &context))
X `7B
X! FILE_RING`5BNUM_FILES`5D =
X! (char*) malloc(strlen(filename) + 1);
X strcpy(FILE_RING`5BNUM_FILES++`5D, filename);
X `7D
X `7D
X**************
X*** 278,284
X strcpy(FILE_RING`5BNUM_FILES++`5D, filename);
X `7D
X `7D
X! if (NUM_FILES) strcpy(file,FILE_RING`5B0`5D);
X `20
X #else
X j = 0;
X--- 353,362 -----
X strcpy(FILE_RING`5BNUM_FILES++`5D, filename);
X `7D
X `7D
X! if (NUM_FILES)
X! strcpy(file,FILE_RING`5B0`5D);
X! `09 else
X! printf("%%MOST-W-NOFILES, no files found");
X `20
X #else
X j = 0;
X**************
X*** 292,297
X `20
X if (NUM_FILES) quit = 0; else quit = 1;
X if (!quit `7C`7C piped) most(file,STARTING_LINE);
X `20
X reset_tty();
X reset_display();
X--- 370,377 -----
X `20
X if (NUM_FILES) quit = 0; else quit = 1;
X if (!quit `7C`7C piped) most(file,STARTING_LINE);
X+ exit(0);
X+ `7D /*** End code for standalone version ***/
X `20
X `20
X #else /*** Code for (CSWING) interface ***/
X**************
X*** 293,303
X if (NUM_FILES) quit = 0; else quit = 1;
X if (!quit `7C`7C piped) most(file,STARTING_LINE);
X `20
X! reset_tty();
X! reset_display();
X! #ifndef VMS
X! fputc('\n',stdout);
X! #endif `20
X! /* exit(0); */
X! return (0);
X `7D
X--- 373,467 -----
X exit(0);
X `7D /*** End code for standalone version ***/
X `20
X!`20
X! #else /*** Code for (CSWING) interface ***/
X! /*
X! ** most_args`5B`5D is an array of (optionally) switches,
X! ** (optionally) extended switches, and the (required)`20
X! ** filename(s).
X! ** See most_files() in SWING_38.C for more info.
X! */ `20
X! void most_less(int num_most_args, char *most_args`5B`5D)
X! `7B
X! char file`5B80`5D, *switches, filename`5B80`5D;
X! int quit,i,piped,a_opt, j;
X! unsigned long context;
X! extern char *getenv(char *);
X! extern int isatty(int);
X! extern int next_file_in_ring;
X!`20
X! /*
X! ** intitialize options and toggles for each call to interface
X! */
X! MOST_A_OPT = 0; /* automatically choose -b if necessary
V */
X! MOST_B_OPT = 0; /* display binary File
V */
X! MOST_C_OPT = 0; /* case-sensitive searches
V */
X! MOST_D_OPT = 0; /* delete file mode (see ':D')
V */
X! MOST_K_OPT = 0; /* display 8 bit unformatted (Kanji)
V */
X! MOST_L_OPT = 0; /* use `5EL (formfeed) to clear screen
V */
X! MOST_S_OPT = 0; /* selective display
V */
X! MOST_T_OPT = 0; /* display tab as `5EI-- valid only with V op
Vtion */
X! MOST_V_OPT = 0; /* verbose-- display control chars as `5Ech
V */
X! MOST_W_OPT = 0; /* wrap lines
V */
X! STARTING_LINE = 1; /* starting line for initial display
V */
X! SEARCH_DIR = 1; /* for toggling direction of string searches
V */
X! SEARCH_STR`5B80`5D = '\0'; /* for setting starting line based on a s
Vtring */
X! SELECTIVE_I_DISPLAY = 0; /* selective indentation display
V */
X! NEXT_RING_FILE = 1; /* for cycling through file ring
V */
X!`20
X! piped = 0;
X! switches = getenv("MOST_SWITCHES");
X! if (switches != NULL) do_switches(switches);
X!`20
X! i = 0;
X! quit = 0;
X! while ((!quit) && (i < num_most_args))
X! `7B
X! if (most_args`5Bi`5D`5B0`5D == '-')
X! do_switches(most_args`5Bi++`5D);
X! else if (most_args`5Bi`5D`5B0`5D == '+')
X! do_extended_switches(most_args`5Bi++`5D);
X! else quit = 1;
X! `7D
X!`20
X! NUM_FILES = 0;
X! context = 0;
X!`20
X! get_terminfo(); /* set up esc sequences etc... */
X! init_tty();`20
X! if (MOST_B_OPT) MOST_A_OPT = 0; /* explicit b overrides a */
X! a_opt = MOST_A_OPT;
X!`20
X! #ifdef VMS
X! /* note short circuit evaluation is crucial here */
X! while(i < num_most_args)
X! `7B
X! if (most_args`5Bi`5D`5B0`5D == '.')
X! strcpy(file,"*");
X! else *file = 0;
X! strcat(file,unix2vms(most_args`5Bi++`5D));
X! while (expand_file_name("SYS$DISK:`5B`5D*.*",
X! file,
X! filename,
X! &context))
X! `7B
X! FILE_RING`5BNUM_FILES`5D = (char*) malloc(strlen(filename)
V + 1);
X! strcpy(FILE_RING`5BNUM_FILES++`5D, filename);
X! `7D
X! `7D
X! if (NUM_FILES) strcpy(file,FILE_RING`5B0`5D);
X!`20
X! #else
X! j = 0;
X! NUM_FILES = num_most_args - i;
X! while (i < num_most_args)
X! `7B
X! FILE_RING`5Bj++`5D = most_args`5Bi++`5D;
X! `7D
X! #endif
X!`20
X! if (NUM_FILES) quit = 0; else quit = 1;
X! if (!quit `7C`7C piped) most(file,STARTING_LINE);
X! return;
X `7D
X #endif /*** End code for (CSWING) interface ***/
X**************
X*** 301,303
X /* exit(0); */
X return (0);
X `7D
X--- 464,467 -----
X if (!quit `7C`7C piped) most(file,STARTING_LINE);
X return;
X `7D
X+ #endif /*** End code for (CSWING) interface ***/
$ CALL UNPACK MAIN_C.PAT;363 1511438572
$ create 'f'
XMOST(3.02FM) 10-10-92
X
XNAME
X
X most - browse or page through a text file
X
XSYNOPSIS
X
X most `5B-bcklstvw`5D `5B+line`5D `5B+/string`5D `5B+d`5D filename `5Bfi
Vlename ...`5D
X
XDESCRIPTION
X
X MOST is a paging program that displays, one windowful at a time, the
X contents of a file on a vtxxx compatable terminal. It pauses after
X each windowful and prints on the window status line of the screen
X the file name, current line number, and the percentage of the file
X so far displayed.
X
X Unlike other paging programs, MOST is capable of displaying an
X arbitrary number of windows as long as each window occupies at least
X two screen lines. Each window may contain the same file or a
X different file. In addition, each window has its own mode. For
X example, one window may display a file with its lines wrapped while
X another may be truncating the lines. Windows may be `60locked'
X together in the sense that if one of the locked windows scrolls, all
X locked windows will scroll. MOST is also capable of ignoring lines
X that are indented beyond a user specified value. This is useful
X when viewing computer programs to pick out gross features of the
X code. See the `60:O' command for a description of this feature.
X
X In addition to displaying ordinary text files, MOST can also display
X binary files as well as files with arbitrary ascii characters. When
X a file is read into a buffer, MOST examines the first 32 bytes of
X the file to determine if the file is a binary file and then switches
X to the appropriate mode. However, this feature may be disabled with
X the -k option. See the description of the -b, -k, -v. and -t
X options for further details.
X
X Text files may contain combinations of underscore and backspace
X characters causing a printer to underline or overstrike. When MOST
X recognizes this, it inserts the appropriate escape sequences to
X achieve the desired effect on vtxxx compatable terminals. In
X addition, some files cause the printer to overstrike some characters
X by embedding carriage return characters in the middle of a line.
X When this occurs, MOST displays the ovestruck character with a bold
X attribute. This feature facilitates the reading of unix man pages
X or a document produced by RUNOFF. In particular, viewing this
X document with MOST should illustrate this behavior provided that the
X underline characters have not been stripped. This may be turned off
X with the -v option.
X
X By default, lines with more characters than the terminal width are
X not wrapped but are instead truncated. When truncation occurs, this
X is indicated by a reverse video `60>' in the far right column of the
X terminal screen. The RIGHT and LEFT arrow keys may be used to view
X lines which extend past the margins of the screen. The -w option
X may be used to override this feature. When a window is wrapped,
X the character `60\' will appear in reverse video at the right edge of
X the window.
X
X Commands are listed below.
X
XOPTIONS
X
X -b binary mode. Use this switch when you want to view files
X containing 8 bit characters. MOST will display the file
X 16 bytes per line in hexidecimal notation. A typical line
X looks like:
X
X 01000000 40001575 9C23A020 4000168D ....@..u.#. @...
X
X When used with the -v option, the same line looks like:
X
X `5EA`5E@`5E@`5E@ @`5E@`5EU u 9C #A0 @`5E@`5EV8D ....@..u.
V#. @...
X
X -c Make searches case sensitive. By default, they are not.
X
X -k `60Kanji' option. Ordinarily, MOST will go into binary mode
X if the file consists of non-ascii characters. Sometimes
X this feature is not desirable since some terminals have a
X special interpretation for eight bit characters. The -k
X option turns off the automatic sensing.
X
X -l Use `5EL (formfeed) to clear screen.
X
X -s Squeeze. Replace multiple blank lines with a single blank
X line.
X
X -t Display tabs as reversed video `60I'. This option is acted
X on only when used with the -v option.
X
X -v Verbose. Display control characters in reverse video, e.g.
X control-A is displayed as a reverse video 'A'. Normally
X MOST interprets control characters.
X
X -w Wrap lines within window.
X
X +line
X Start up at line number (first line of file is 1).
X
X +/string
X Start up at the line containing the first occurence of string.
X
X +d This switch should only be used if you want the option to
X delete a file while viewing it. This makes it easier to
X clean unwanted files out of a directory. The file is
X deleted with the interactive key sequence `60:D' and then
X confirming with `60y'.
X
XUSAGE
X Environment
X
X There are currently three environment variables that MOST looks for:
X
X MOST_SWITCHES
X
X This logical sets commonly used switches. For example, you
X might wish to use MOST with the -c option so that searches
X are case sensitive. Some people prefer to use MOST with the
X -s option so that excess blank lines are not displayed. On
X VMS this is normally done in the login.com through the line:
X
X $ define MOST_SWITCHES "-cs"
X
X MOST_EDITOR (VMS only)
X
X Set this logical to one of three callable editors (EDT, TPU,
X or EMACS), or to one that can be invoked via a spawn (e.g.,
X SEDT). The default is EDT. Since VMS does not support
X callable EMACS, MOST will attempt to attach to a kept EMACS.
X For this case, MOST looks for the logical name EMACS_PID and
X attaches to the process with that pid. It then defines the
X logicals EMACS_FILE_NAME and EMACS_FILE_LINE which EMACS can
X check upon attaching to it.
X
X MOST_HELP
X
X This logical should point to the MOST helpfile (MOST.DOC_FM).
X If help.c was compiled with the logical MOST_HELP_USE_DOC
X defined the help command (H or ?) will invoke a window in
X which the helpfile will be placed. If the compilation logical
X was not defined, a short help summary will be displayed, and
X there is no need to define the MOST_HELP environment logical.
X
X Command Usage
X
X The commands take effect immediately. It is not necessary to
X type a carriage return. Command keys are case-insensitive.
X
X In the following commands, # is a numerical argument (1 by
X default). A '->' is used to indicate that a pair of command
X keys should be entered in sequence.
X
X NEXT_SCREEN, N, CONTROL_N, SPACE
X
X Display another windowful, or jump # windowfuls if # is
X specified.
X
X PREV_SCREEN, P, CONTROL_P
X
X Skip back # windowfuls and then display a windowful.
X
X DOWN_ARROW, D, CONTROL_D, J, CONTROL_J
X
X Display another line, or # more lines, if specified.
X
X UP_ARROW, U, CONTROL_U, `5E, K, CONTROL_-
X
X Display previous line, or # previous lines, if specified.
X
X RIGHT_ARROW, >, TAB, CONTROL_I
X
X Scroll window left 59# columns to view lines that are
X beyond the right margin of the window.
X
X LEFT_ARROW, <
X
X Scroll window right 59# columns to view lines that are
X beyond the left margin of the window.
X
X CONTROL_W, CONTROL_R
X
X Redraw the window.
X
X G If # is not specified, then prompt for a line number
X then jump to that line otherwise just jump to line #.
X
X % If # is not specified, then prompt for a percent number
X then jump to that percent of the file otherwise just
X jump to # percent of the file.
X
X W If the current screen width is 80, make it 132 and
X vica-versa. For other values, this command is ignored.
X
X Q, RETURN, CONTROL_K->E, CONTROL_X->CONTROL_C
X
X Exit from MOST. On VMS, `5EZ also exits.
X
X ?, H, CONTROL_H, HELP
X
X Help. Give a description of all the MOST
X commands. The MOST environment variable
X MOST_HELP must be set for this to be meaningful,
X`09 unless the short help summary has been designated
X`09 at compile time.
X
X /, CONTROL_F, FIND
X
X Prompt for a string and search forward from the
X current line for #th distinct line containing
X the string. CONTROL_G aborts.
X
X \ Prompt for a string and search backward for the
X #th distinct line containing the string.
X CONTROL_G aborts.
X
X R Search for the next # lines containing an
X occurrence of the last search string in the
X direction of the previous search.
X
X M, SELECT, CONTROL_K->M, CONTROL_K->CONTROL_B
X
X Set a mark on the current line for later reference.
X
X PERIOD, INSERT_HERE, CONTROL_K->RETURN, CONTROL_K->CONTROL_J,
X CONTROL_K->CONTROL_M
X
X Set a mark on the current line but return to
X previous mark. This allows the user to toggle
X back and forth between two positions in the
X file.
X
X L Toggle locking for this window. The window is
X locked if there is a `60*' at the left edge of the
X status line. Windows locked together, scroll
X together.
X
X CONTROL_X->2
X
X Split this window in half.
X
X CONTROL_X->O, O
X
X Move to other window.
X
X CONTROL_X->0
X
X Delete this window.
X
X CONTROL_X->1
X
X Delete all other windows, leaving only one window.
X
X E Edit this file. MOST uses callable EDT and TPU or
X spawns and editor to perform the editing task. In
X`09 addition, MOST can attach to a kept editor. See the
X`09 discussion of the environment variable, MOST_EDITOR,
X`09 above.
X
X $, ESC->$ This is system dependent. On VMS, this causes MOST to
X spawn a subprocess. When the user exits the process,
X MOST is resumed. On unix systems, MOST simply suspends
X itself.
X
X :N Skip to the next filename given in the command line. Use
X the arrow keys to scroll forward or backward through the
X file list. `60Q' or 'CONTROL_G' cancels the fetch, and any
X other key selects the given file.
X
X :C Toggle case sensitive search.
X
X :D Delete current file. This command is only
X meaningful with the +d switch.
X
X :O Toggle various options. With this key sequence,
X MOST displays a prompt asking the user to hit
X one of: bistvw. The `60b', 's', `60t', `60v', and
X`09 `60w' options have the same meaning as the command
X line switches. For example, the `60w' option will
X toggle wrapping on and off for the current
X window.
X
X The `60i' option must be used with a prefix
X integer #. All lines indented beyond # columns
X will not be displayed. For example, consider
X the fragment:
X
X int main(int argc, char **argv)
X `7B
X int i = 0;
X
X while (i < argc)
X `7B
X fprintf(stdout,"%i: %s\n",i,argv`5Bi`5D);
X i++;
X `7D `20
X exit(0);
X `7D
X
X The key sequence `601:Oi' will cause MOST to
X display the file ignoring all lines indented
X beyond the first column. So for the example
X above, MOST would display:
X
X int main(int argc, char **argv)...
X `7D
X
X where the `60...' indicates lines follow are not
X displayed.
X
X CONTROL_K->G, CONTROL_X->CONTROL_F
X
X Fetch a new file to this window. You will be prompted
X for the name of the new file. CONTROL_G cancels the
X fetch. A carriage return fetches the file, and adds it
X to the file ring list, after those that were indicated
X on the command line.
X
X CONTROL_T
X
X Show the current date and time.
X
XHINTS
X
X Control_G aborts the commands requiring the user to type something in
X at a prompt. The backquote key has a special meaning here. It is
X used to quote certain characters. This is useful when searching for
X the occurrence of a string with a control character or a string at
X the beginning of a line in stream files. In the latter case, to find
X the occurence of `60The' at the beginning of a line, enter `60`5EJThe w
Vhere
X `60 quotes the CONTROL_J.
X
XBUGS
X
X Almost all of the known bugs or limitations of MOST are due to a
X desire to read and interpret control characters or escape sequences
X in files (`5EH for underlining or bolding a character; `5EM for boldi
Vng
X a line; <ESC>`5B#m for underlining, bolding, or displaying strings in
X reverse video). One side effect is that they can get clipped when
X scrolling right and left through a file, or when wrap mode is set.
X When in doubt, use the '-v' switch or ':O v' toggle to make control
X characters and escape sequences explicit in the display.`20
X
X String may not work properly with binary files.
X
X At this time, MOST only works well with terminals understanding
X vt100 escape sequences. MOST does not seem to have any problem with
X xterm.
X
X Malloc failures are not checked. MOST may crash if there is not
X enough room to hold the file.
X
XAUTHOR
X
X John E. Davis
X The Ohio State University
X Department of Physics
X davis@pacific.mps.ohio-state.edu
X
XAUTHOR'S ACKNOWLEDGEMENT
X
X I would like to thank the users of MOST for valuable comments and
X criticisms. I would especially like to thank those individuals who
X have contributed code to MOST:
X
X Mats Akerberg, Henk D. Davids, and Rex O. Livingston
X
X I would also like to thank Shinichi Hama for his valuable criticisms
X of MOST.
X
XNOTE
X
X MOST(3.02FM) is a modification by Foteos Macrides
X (MACRIDES@WFEB2.BITNET)
X of a modification (3.02) by Harry Flowers
X (FLOWERS@MEMSTVX1.BITNET, FLOWERS@MEMSTVX1.MEMST.EDU)
X of John Davis' MOST(3.01). See header in main.c for modification
X and copyright information. The copyright provisions also apply to
X this version, and to any programs derived from it. Briefly, you
X must make the source code freely available to anyone who wants it.
$ CALL UNPACK MOST.DOC_FM;363 1633581704
$ create 'f'
X*** disk$disk1:`5Bflowers.swing.vmsnet`5Dmost.c;1
X--- disk$disk1:`5Bflowers.swing.src`5Dmost.c;3
X**************
X*** 8,23
X #include "most.h"
X #include "search.h" `20
X `20
X! int SQUEEZE_LINES = 0; /* switch parameters */
X! int MOST_A_OPT = 0; /* automatically choose -b if necessary */
X! int MOST_C_OPT = 0; /* begin pages at top of screen */
X! int MOST_V_OPT = 0; /* display control chars */
X! int MOST_B_OPT = 0; /* display Binary File */
X! int MOST_T_OPT = 0; /* display tab as `5EI-- valid only with V
V option */
X! int MOST_D_OPT = 0; /* delete file mode (see ':D') */
X! int MOST_L_OPT = 0; /* use `5EL (formfeed) to clear screen */
X!`20
X! void most_less(char *file, int start)
X `7B
X char input_s`5B20`5D,ch,outstr`5B80`5D, *strp;
X int line, update, quit, j, repeat, mark, piped, next, row, col, r;
X--- 8,14 -----
X #include "most.h"
X #include "search.h" `20
X `20
X! void most(char *file, int start)
X `7B
X int piped, row, col;
X char junk`5B80`5D;
X**************
X*** 19,26
X `20
X void most_less(char *file, int start)
X `7B
X! char input_s`5B20`5D,ch,outstr`5B80`5D, *strp;
X! int line, update, quit, j, repeat, mark, piped, next, row, col, r;
X globaldef int exit_most;
X `20
X init_display();
X--- 10,18 -----
X `20
X void most(char *file, int start)
X `7B
X! int piped, row, col;
X! char junk`5B80`5D;
X! extern char *MOST_VERSION;
X globaldef int exit_most;
X `20
X init_display();
X**************
X*** 26,38
X init_display();
X get_cdir(C_DIR);
X exit_most = 0;
X- MOST_A_OPT = 0; /* automatically choose -b if necessary */
X- MOST_C_OPT = 0; /* begin pages at top of screen */
X- MOST_V_OPT = 0; /* display control chars */
X- MOST_B_OPT = 0; /* display Binary File */
X- MOST_T_OPT = 0; /* display tab as `5EI-- valid only with V
V option */
X- MOST_D_OPT = 0; /* delete file mode (see ':D') */
X- MOST_L_OPT = 0; /* use `5EL (formfeed) to clear screen */
X `20
X row = col = 0;
X if (file`5B0`5D == '\0') piped = 1; else piped = 0;
X--- 18,23 -----
X init_display();
X get_cdir(C_DIR);
X exit_most = 0;
X `20
X row = col = 0;
X if (file`5B0`5D == '\0') piped = 1; else piped = 0;
X**************
X*** 40,46
X find_file(file);
X goto_line(start);
X CURS_POS = C_POS;
X- /*
X if (*SEARCH_STR != '\0' && (row = search(C_POS,1,&col), row > 0))
X `7B
X goto_line(row);
X--- 25,30 -----
X find_file(file);
X goto_line(start);
X CURS_POS = C_POS;
X if (*SEARCH_STR != '\0' && (row = search(C_POS,1,&col), row > 0))
X `7B
X goto_line(row);
X**************
X*** 47,53
X `7D
X else
X `7B
X- */
X row = C_LINE;
X col = 1;
X /*
X--- 31,36 -----
X `7D
X else
X `7B
X row = C_LINE;
X col = 1;
X `7D
X**************
X*** 50,56
X */
X row = C_LINE;
X col = 1;
X- /*
X `7D
X */ `20
X window_buffer();
X--- 33,38 -----
X `7B
X row = C_LINE;
X col = 1;
X `7D
X `20
X window_buffer();
X**************
X*** 52,58
X col = 1;
X /*
X `7D
X! */ `20
X window_buffer();
X CURS_ROW = WIN->curs_line = row - C_LINE + 1;
X WIN->curs_pos = CURS_POS;
X--- 34,40 -----
X row = C_LINE;
X col = 1;
X `7D
X!`20
X window_buffer();
X CURS_ROW = WIN->curs_line = row - C_LINE + 1;
X WIN->curs_pos = CURS_POS;
X**************
X*** 57,62
X CURS_ROW = WIN->curs_line = row - C_LINE + 1;
X WIN->curs_pos = CURS_POS;
X CURS_COL = WIN->curs_col = col;
X redraw_window();
X update_status(1);
X `20
X--- 39,47 -----
X CURS_ROW = WIN->curs_line = row - C_LINE + 1;
X WIN->curs_pos = CURS_POS;
X CURS_COL = WIN->curs_col = col;
X+ sprintf(junk," MOST(%.*s) Press ? or h for help if needed.",
X+ strlen(MOST_VERSION),MOST_VERSION);
X+ most_message(junk,0);
X redraw_window();
X update_status(1);
X `20
X**************
X*** 64,67
X `7B
X execute_key();
X `7D`20
X `7D
X--- 49,53 -----
X `7B
X execute_key();
X `7D`20
X+ return;
X `7D
$ CALL UNPACK MOST_C.PAT;363 318848356
$ create 'f'
Xsys$share:vaxcrtl.exe/share
XIDENTIFICATION="MOST V3.02 FM"
$ CALL UNPACK MOST_OPTIONS.OPT;363 53109615
$ create 'f'
X*** disk$disk1:`5Bflowers.swing.vmsnet`5Doptions_file.opt;1
X--- disk$disk1:`5Bflowers.swing.src`5Doptions_file.opt;2
X**************
X*** 1,2
X sys$share:vaxcrtl.exe/share
X! IDENTIFICATION="SWING V3.6.2 HF"
X--- 1,2 -----
X sys$share:vaxcrtl.exe/share
X! IDENTIFICATION="SWING V3.6.3 HF"
$ CALL UNPACK OPTIONS_FILE_OPT.PAT;363 2101246153
$ create 'f'
X$ WRITE SYS$OUTPUT "Edit me!"`09! Delete this line
X$ EXIT`09`09`09`09! And this one, too
X$! XPAT = "$dev:`5Bdir`5DPATCH.EXE" ! NOT the VMS PATCH prog
X$! Fix the above line to define XPAT for the patch utility
X$ XPAT AAAREADME.1ST <AAAREADME_1ST.PAT
X$ XPAT BUFFER.C <BUFFER_C.PAT
X$ XPAT CMD.C <CMD_C.PAT
X$ XPAT DESCRIP.MMS <DESCRIP_MMS.PAT
X$ XPAT EDIT.C <EDIT_C.PAT
X$ XPAT EXTERNS.H <EXTERNS_H.PAT
X$ XPAT FILE.C <FILE_C.PAT
X$ XPAT HELP.C <HELP_C.PAT
X$ XPAT KEYM.C <KEYM_C.PAT
X$ XPAT LINE.C <LINE_C.PAT
X$ XPAT LINK_V5.COM <LINK_V5_COM.PAT
X$ XPAT MAIN.C <MAIN_C.PAT
X$ XPAT MOST.C <MOST_C.PAT
X$ XPAT OPTIONS_FILE.OPT <OPTIONS_FILE_OPT.PAT
X$ XPAT SEARCH.C <SEARCH_C.PAT
X$ XPAT SWING-STARTUP.COM <SWING-STARTUP_COM.PAT
X$ XPAT SWING.C <SWING_C.PAT
X$ XPAT SWING.H <SWING_H.PAT
X$ XPAT SWING_16.C <SWING_16_C.PAT
X$ XPAT SWING_22.C <SWING_22_C.PAT
X$ XPAT SWING_24.C <SWING_24_C.PAT
X$ XPAT SWING_38.C <SWING_38_C.PAT
X$ XPAT SWING_4.C <SWING_4_C.PAT
X$ XPAT SWING_8.C <SWING_8_C.PAT
X$ XPAT SWING_9.C <SWING_9_C.PAT
X$ XPAT SWING_DEFS.H <SWING_DEFS_H.PAT
X$ XPAT SWING_REFS.H <SWING_REFS_H.PAT
X$ XPAT SYSDEP.C <SYSDEP_C.PAT
X$ XPAT WINDOW.C <WINDOW_C.PAT
X$ XPAT WINDOW.H <WINDOW_H.PAT
$ CALL UNPACK PATCH.COM;363 1648175905
$ create 'f'
X*** disk$disk1:`5Bflowers.swing.vmsnet`5Dsearch.c;1
X--- disk$disk1:`5Bflowers.swing.src`5Dsearch.c;3
X**************
X*** 3,11
X #include "buffer.h"
X #include "line.h"
X `20
X! int CASE_SENSITIVE = 0;
X! char SEARCH_STR`5B80`5D;
X! int SEARCH_DIR = 1;
X `20
X #define upcase(ch) ((!CASE_SENSITIVE && (ch <= 'z') && (ch >= 'a')) ? ch &
V= 0xDF : ch)
X `20
X--- 3,9 -----
X #include "buffer.h"
X #include "line.h"
X `20
X! #define upcase(ch) ((!MOST_C_OPT && (ch <= 'z') && (ch >= 'a')) ? ch &= 0x
VDF : ch)
X `20
X /* This routine returns the 1 + position of first match of key in str.
X key is modified to match the case of str. */
X**************
X*** 7,14
X char SEARCH_STR`5B80`5D;
X int SEARCH_DIR = 1;
X `20
X- #define upcase(ch) ((!CASE_SENSITIVE && (ch <= 'z') && (ch >= 'a')) ? ch &
V= 0xDF : ch)
X-`20
X /* This routine returns the 1 + position of first match of key in str.
X key is modified to match the case of str. */
X /* We should try to optimize this routine */
X--- 5,10 -----
X `20
X #define upcase(ch) ((!MOST_C_OPT && (ch <= 'z') && (ch >= 'a')) ? ch &= 0x
VDF : ch)
X `20
X /* This routine returns the 1 + position of first match of key in str.
X key is modified to match the case of str. */
X /* We should try to optimize this routine */
X**************
X*** 19,25
X unsigned char *pos;
X int key_len,j, str_len;
X `20
X! if (CASE_SENSITIVE)
X `7B
X strcpy(work,key);
X key_len = strlen(key);
X--- 15,21 -----
X unsigned char *pos;
X int key_len,j, str_len;
X `20
X! if (MOST_C_OPT)
X `7B
X strcpy(work,key);
X key_len = strlen(key);
X**************
X*** 76,82
X unsigned char *pos;
X int key_len,j, str_len;
X `20
X! if (CASE_SENSITIVE)
X `7B
X strcpy(work,key);
X key_len = strlen(key);
X--- 72,78 -----
X unsigned char *pos;
X int key_len,j, str_len;
X `20
X! if (MOST_C_OPT)
X `7B
X strcpy(work,key);
X key_len = strlen(key);
X**************
X*** 181,187
X `20
X row = -1;
X `7D
X! else /* if ( !MOST_T_OPT && !MOST_B_OPT) */ /* expand tabs to get co
Vl correct */
X `7B
X find_row_column(found_at,&row,&the_col);
X *col = apparant_distance(found_at);
X--- 177,186 -----
X `20
X row = -1;
X `7D
X! /*
X! ** expand tabs to get col correct
X! */
X! else if ( (!MOST_T_OPT `7C`7C !MOST_V_OPT) && !MOST_B_OPT)
X `7B
X find_row_column(found_at,&row,&the_col);
X *col = apparant_distance(found_at);
$ CALL UNPACK SEARCH_C.PAT;363 394094524
$ create 'f'
X*** disk$disk1:`5Bflowers.swing.vmsnet`5Dswing-startup.com;1
X--- disk$disk1:`5Bflowers.swing.src`5Dswing-startup.com;3
X**************
X*** 4,10
X $!
V `7
VC
X $!------------------------------------------------------------------------
V--+
X $!
V `7
VC
X! $! Product: CSWING
V `7C
X $!
V `7
VC
X $! Version: 3.6.2
V `7C
X $!
V `7
VC
X--- 4,10 -----
X $!
V `7
VC
X $!------------------------------------------------------------------------
V--+
X $!
V `7
VC
X! $! Product: CSWING MOST
V `7C
X $!
V `7
VC
X $! Version: 3.6.3 3.02FM
V `7C
X $!
V `7
VC
X**************
X*** 6,12
X $!
V `7
VC
X $! Product: CSWING
V `7C
X $!
V `7
VC
X! $! Version: 3.6.2
V `7C
X $!
V `7
VC
X $! Description: This file must be invoked by SYS$MANAGER:SYSTARTUP_V5.CO
VM `7C
X $! or any command procedure called by it.
V `7C
X--- 6,12 -----
X $!
V `7
VC
X $! Product: CSWING MOST
V `7C
X $!
V `7
VC
X! $! Version: 3.6.3 3.02FM
V `7C
X $!
V `7
VC
X $! Description: This file must be invoked by SYS$MANAGER:SYSTARTUP_V5.CO
VM `7C
X $! or any command procedure called by it.
V `7C
X**************
X*** 11,17
X $! Description: This file must be invoked by SYS$MANAGER:SYSTARTUP_V5.CO
VM `7C
X $! or any command procedure called by it.
V `7C
X $! It performs all the necessary startup procedures for
V `7C
X! $! CSWING
V `7C
X $!
V `7
VC
X $! Author: Chris Butler, Ministry of Forestry, Rotorua, N.Z.
V `7C
X $!
V `7
VC
X--- 11,17 -----
X $! Description: This file must be invoked by SYS$MANAGER:SYSTARTUP_V5.CO
VM `7C
X $! or any command procedure called by it.
V `7C
X $! It performs all the necessary startup procedures for
V `7C
X! $! CSWING and MOST
V `7C
X $!
V `7
VC
X $! Author: Chris Butler, Ministry of Forestry, Rotorua, N.Z.
V `7C
X $!
V `7
VC
X**************
X*** 26,31
X $!`0926-Jul-91 (CB)`09Install v 3.5.3 & change name to CSWING
V `7C
X $!`0914-Oct-91 (CB)`09Install v 3.5.4
V `7C
X $!`0918-May-92 (CB)`09Install v 3.6
V `7C
X $!
V `7
VC
X $!------------------------------------------------------------------------
V--+
X $!
X--- 26,32 -----
X $!`0926-Jul-91 (CB)`09Install v 3.5.3 & change name to CSWING
V `7C
X $!`0914-Oct-91 (CB)`09Install v 3.5.4
V `7C
X $!`0918-May-92 (CB)`09Install v 3.6
V `7C
X+ $! 10-Oct-92 (FM) Also install MOST v 3.02FM
V `7C
X $!
V `7
VC
X $!------------------------------------------------------------------------
V--+
X $!
X**************
X*** 30,36
X $!------------------------------------------------------------------------
V--+
X $!
X $! WARNING: Change all occurrences of the string 'disk:`5Bdirectory`5D' be
Vlow
X! $! to the real location of SWING
X $!
X $!
X $! Check to see if they have enuff privs
X--- 31,37 -----
X $!------------------------------------------------------------------------
V--+
X $!
X $! WARNING: Change all occurrences of the string 'disk:`5Bdirectory`5D' be
Vlow
X! $! to the real locations of SWING and MOST
X $!
X $!
X $! Check to see if they have enuff privs
X**************
X*** 44,49
X $! We have privileges ... all systems go
X $!
X $ write sys$output "---> Starting CSWING directory/file manager v3.6.2"
X $!
X $! Define logical pointing to Cswing help library
X $!
X--- 45,51 -----
X $! We have privileges ... all systems go
X $!
X $ write sys$output "---> Starting CSWING directory/file manager v3.6.2"
X+ $ write sys$output " and MOST file viewer v3.02FM"
X $!
X $! Define logical pointing to Cswing help library
X $!
X**************
X*** 49,56
X $!
X $ define/system/executive SWING$HLP`09disk:`5Bdirectory`5DCSWING
X $!
X! $! Add CSWING.EXE as a known image or replace it if it is already installe
Vd
X! $! ("known")
X $!
X $ install := $install/command_mode `20
X $!
X--- 51,58 -----
X $!
X $ define/system/executive SWING$HLP`09disk:`5Bdirectory`5DCSWING
X $!
X! $! Add CSWING.EXE and MOST.EXE as a known images or replace them if they a
Vre
X! $! already installed ("known")
X $!
X $ install := $install/command_mode `20
X $!
X**************
X*** 60,66
X $!
X $ install 'install_verb' disk:`5Bdirectory`5DCSWING.EXE /shared/header/
Vopen
X $!
X! $ EXIT_CSWING_STARTUP:
X $!
X $ prev_privs = f$setprv(prev_privs)
X $ exit 'status
X--- 62,69 -----
X $!
X $ install 'install_verb' disk:`5Bdirectory`5DCSWING.EXE /shared/header/
Vopen
X $!
X! $ install_verb := ""
X! $ if f$file("disk:`5Bdirectory`5DMOST.EXE","known") then install_verb :
V= REPLACE
X $!
X $ install 'install_verb' disk:`5Bdirectory`5DMOST.EXE /shared/header/op
Ven
X $!
X**************
X*** 62,67
X $!
X $ EXIT_CSWING_STARTUP:
X $!
X $ prev_privs = f$setprv(prev_privs)
X $ exit 'status
X $!
X--- 65,74 -----
X $ install_verb := ""
X $ if f$file("disk:`5Bdirectory`5DMOST.EXE","known") then install_verb :
V= REPLACE
X $!
X+ $ install 'install_verb' disk:`5Bdirectory`5DMOST.EXE /shared/header/op
Ven
X+ $!
X+ $ EXIT_CSWING_STARTUP:
X+ $!
X $ prev_privs = f$setprv(prev_privs)
X $ exit 'status
X $!
X**************
X*** 66,72
X $ exit 'status
X $!
X $ NO_PRIVS:
X! $ write sys$error "Insufficient privileges to start CSWING."
X $ write sys$error "Requires ", required_privs, " privileges."
X $ status = %x10000002
X $ goto EXIT_CSWING_STARTUP
X--- 73,79 -----
X $ exit 'status
X $!
X $ NO_PRIVS:
X! $ write sys$error "Insufficient privileges to start CSWING and MOST."
X $ write sys$error "Requires ", required_privs, " privileges."
X $ status = %x10000002
X $ goto EXIT_CSWING_STARTUP
$ CALL UNPACK SWING-STARTUP_COM.PAT;363 926805463
$ create 'f'
X*** disk$disk1:`5Bflowers.swing.vmsnet`5Dswing_16.c;1
X--- disk$disk1:`5Bflowers.swing.src`5Dswing_16.c;2
X**************
X*** 70,75
X char editor`5BEDITOR_SIZE+1`5D;
X char trans`5B100`5D;
X `20
X if (editor_defn`5B0`5D)
X `7B
X strcpy(trans,editor_defn);
X--- 70,85 -----
X char editor`5BEDITOR_SIZE+1`5D;
X char trans`5B100`5D;
X `20
X+ /*
X+ ** confirm intent to Edit
X+ */
X+ sprintf(junk,"Edit %s Y/N `5BN`5D",filename);
X+ if (!confirm_user(junk,"Y"))
X+ return(FALSE);
X+`20
X+ /*
X+ ** determine editor and call it
X+ */
X if (editor_defn`5B0`5D)
X `7B
X strcpy(trans,editor_defn);
$ CALL UNPACK SWING_16_C.PAT;363 1718435475
$ create 'f'
X*** disk$disk1:`5Bflowers.swing.vmsnet`5Dswing_22.c;1
X--- disk$disk1:`5Bflowers.swing.src`5Dswing_22.c;2
X**************
X*** 126,132
X " L list (print) selected files M move selected files to anot
Vher",
X " O show broadcast messages directory structure",
X #ifdef CR_RETURNS_FROM_FILE_TO_DIR_MGR
X! "`5BCR`5D,Q quit the file manager Y type selected file ",
V `20
X #else
X " Q quit the file manager Y type selected file ", `20
X #endif
X--- 126,132 -----
X " L list (print) selected files M move selected files to anot
Vher",
X " O show broadcast messages directory structure",
X #ifdef CR_RETURNS_FROM_FILE_TO_DIR_MGR
X! "`5BCR`5D,Q quit the file manager Y type current/selected f
Vile(s)", `20
X #else
X " Q quit the file manager Y type current/selected file(
Vs)", `20
X #endif
X**************
X*** 128,134
X #ifdef CR_RETURNS_FROM_FILE_TO_DIR_MGR
X "`5BCR`5D,Q quit the file manager Y type selected file ",
V `20
X #else
X! " Q quit the file manager Y type selected file ", `20
X #endif
X " S submit selected files to batch R rename selected files",`20
X " * snapshot the screen U purge this directory", `20
X--- 128,134 -----
X #ifdef CR_RETURNS_FROM_FILE_TO_DIR_MGR
X "`5BCR`5D,Q quit the file manager Y type current/selected f
Vile(s)", `20
X #else
X! " Q quit the file manager Y type current/selected file(
Vs)", `20
X #endif
X " S submit selected files to batch R rename selected files",`20
X " * snapshot the screen U purge this directory", `20
$ CALL UNPACK SWING_22_C.PAT;363 1074814629
$ create 'f'
X*** disk$disk1:`5Bflowers.swing.vmsnet`5Dswing_24.c;1
X--- disk$disk1:`5Bflowers.swing.src`5Dswing_24.c;2
X**************
X*** 36,41
X #include stdio
X #include ssdef
X #include psldef
X #include "more_descrip.h"
X #include "swing.h"
X #include "swing_refs.h"
X--- 36,42 -----
X #include stdio
X #include ssdef
X #include psldef
X+ #include ctype
X #include "more_descrip.h"
X #include "swing.h"
X #include "swing_refs.h"
X**************
X*** 118,124
X add_directory_structure(directory)
X char *directory;
X `7B
X! int i, status;
X DSTRUCTURE *tmp;
X char cur_dir`5BSPEC_SIZE+1`5D;
X char dir`5BSPEC_SIZE+1`5D;
X--- 119,125 -----
X add_directory_structure(directory)
X char *directory;
X `7B
X! int i, j, status;
X DSTRUCTURE *tmp;
X char cur_dir`5BSPEC_SIZE+1`5D;
X char dir`5BSPEC_SIZE+1`5D;
X**************
X*** 124,131
X char dir`5BSPEC_SIZE+1`5D;
X char name`5BSPEC_SIZE+1`5D;
X char device`5BSPEC_SIZE+1`5D;
X!`20
X!`20
X /*
X ** get the root spec for this node
X */
X--- 125,132 -----
X char dir`5BSPEC_SIZE+1`5D;
X char name`5BSPEC_SIZE+1`5D;
X char device`5BSPEC_SIZE+1`5D;
X! char cmndir`5BSPEC_SIZE+1`5D;
X! `20
X /*
X ** get the root spec for this node
X */
X**************
X*** 138,149
X return(FALSE);
X `20
X /*
X- ** if this is the first translation we've made we'll record it as suc
Vh
X- */
X- if (!first_translation`5B0`5D)
X- `09strcpy(first_translation,directory);
X-`20
X- /*
X ** pick up the current device in case it wasn't specified
X */
X show_def(cur_dir);
X--- 139,144 -----
X return(FALSE);
X `20
X /*
X ** pick up the current device in case it wasn't specified
X */
X show_def(cur_dir);
X**************
X*** 148,153
X */
X show_def(cur_dir);
X `20
X /*
X ** get the root spec for this node, this time with device if device
X ** wasn't specified last time
X--- 143,167 -----
X */
X show_def(cur_dir);
X `20
X+ /*`20
X+ ** if device is SYS$SYSROOT, make it SYS$SPECIFIC,`20
X+ ** set up cmndir for SYS$COMMON, and set sysroot_flag
X+ */
X+ if (strstr(cur_dir,"SYS$SYSROOT")) `7B
X+ `09strcpy(junk,"SYS$SPECIFIC:");
X+ `09i = 0;
X+ `09while (directory`5Bi++`5D != '`5B');
X+ strcat(junk,&directory`5Bi-1`5D);
X+ `09strcpy(directory,junk);
X+ `09strcpy(cmndir,"SYS$COMMON:");
X+ strcat(cmndir,&directory`5B13`5D);
X+ `09get_root_dir(directory,dir,name);
X+ `09set_default(dir);
X+ `09show_def(cur_dir);
X+ `09set_default(directory);
X+ `09sysroot_flag = 1;
X+ `7D
X+`20
X /*
X ** get the root spec for this node, this time with device if device
X ** wasn't specified last time
X**************
X*** 154,159
X */
X get_root_dir(cur_dir,dir,name);
X `20
X tmp = fdp;
X while(tmp)
X `7B
X--- 168,179 -----
X */
X get_root_dir(cur_dir,dir,name);
X `20
X+ /*
X+ ** if this is the first translation we've made we'll record it as suc
Vh
X+ */
X+ if (!first_translation`5B0`5D)
X+ `09strcpy(first_translation,directory);
X+`20
X tmp = fdp;
X while(tmp)
X `7B
X**************
X*** 164,186
X */
X sprintf(junk,"Directory structure %s already loaded",dir);
X warning(junk);
X!`20
X! #ifdef extra_setdef
X! /*
X! ** call set_def to see if we can go to the desired directory
X! */
X! set_default(directory);
X!`20
X! /*
X! ** find where we start
X! */
X! set_init_position();
X! `20
X! /*
X! ** repair display
X! */
X! refresh_display();
X! #endif `20
X return(TRUE);
X `7D
X tmp = tmp->forw_ptr;
X--- 184,191 -----
X */
X sprintf(junk,"Directory structure %s already loaded",dir);
X warning(junk);
X! `09 if(sysroot_flag == 1)
X! `09 goto add_sys$common;
X return(TRUE);
X `7D
X tmp = tmp->forw_ptr;
X**************
X*** 224,230
X `7D
X `20
X /*
X! ** link it in
X */
X tmp = fdp;
X if (tmp)
X--- 229,235 -----
X `7D
X `20
X /*
X! ** fix first_translation if load_nodes_from_file changed root
X */
X if (!strstr(first_translation,"`5B000000") &&
X strstr(cdp->dir_name,"`5B000000")) `7B
X**************
X*** 226,231
X /*
X ** link it in
X */
X tmp = fdp;
X if (tmp)
X `7B
X--- 231,251 -----
X /*
X ** fix first_translation if load_nodes_from_file changed root
X */
X+ if (!strstr(first_translation,"`5B000000") &&
X+ strstr(cdp->dir_name,"`5B000000")) `7B
X+ `09i=0;j=0;
X+ `09while (strncmp(&first_translation`5Bi`5D,"`5B",1))
X+ `09 junk`5Bj++`5D = first_translation`5Bi++`5D;
X+ `09i += 1;
X+ `09strcpy(&junk`5Bj`5D,"`5B000000.");
X+ `09j += 8;
X+ `09strcpy(&junk`5Bj`5D,&first_translation`5Bi`5D);
X+ `09strcpy(first_translation,junk);
X+ `7D
X+`20
X+ /*
X+ ** link it in
X+ */
X tmp = fdp;
X if (tmp)
X `7B
X**************
X*** 247,253
X */
X load_lines();
X `20
X! #ifdef extra_setdef
X /*
X ** call set_def to go to desired directory
X */
X--- 267,273 -----
X */
X load_lines();
X `20
X! add_sys$common:
X /*
X ** if node was in SYS$SYSROOT and sysroot_flag is set to 1,
X ** add node for SYS$COMMON and increment sysroot_flag to
X**************
X*** 249,255
X `20
X #ifdef extra_setdef
X /*
X! ** call set_def to go to desired directory
X */
X set_default(directory);
X `20
X--- 269,277 -----
X `20
X add_sys$common:
X /*
+-+-+-+-+-+-+-+- END OF PART 5 +-+-+-+-+-+-+-+-
Technical Details
Message-ID:
<8880507@MVB.SAIC.COM>Path:
arc1-ca.pugleaf.net!sparky!uunet!munnari.oz.au!news.hawaii.edu!s.u-tokyo!kekux!rcnpvx!ccsparc01!icspub!wnoc-kyo!sh.wide!wnoc-tyo-news!nec-tyo!nec-gw!sgiblab! swrinde!zaphod.mps.ohio-state.edu!sol.ctr.columbia.edu!hamblin.math.byu.edu!arizona.edu!mvb.saic.com!vmsnet-sourcesShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!munnari.oz.au!news.hawaii.edu!s.u-tokyo!kekux!rcnpvx!ccsparc01!icspub!wnoc-kyo!sh.wide!wnoc-tyo-news!nec-tyo!nec-gw!sgiblab! swrinde!zaphod.mps.ohio-state.edu!sol.ctr.columbia.edu!hamblin.math.byu.edu!arizona.edu!mvb.saic.com!vmsnet-sources Newsgroups: vmsnet.sources Subject: C Swing v3.6.3 patches, part 05/07 Message-ID: <8880507@MVB.SAIC.COM> From: flowers@memstvx1.memst.edu Date: 29 Oct 92 17:42:14 GMT Organization: Memphis State University Approved: Mark.Berryman@Mvb.Saic.Com Lines: 1499