🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by flowers Mon, 04 Jan 1993 20:21
C Swing v3.6.4 patches, part 03/04
#133
Author: flowers
Date: Mon, 04 Jan 1993 20:21
1318 lines
50360 bytes
Submitted-by: flowers@memstvx1.memst.edu
Posting-number: Volume 4, Issue 24
Archive-name: cswing/patch3_03
Patch-to: cswing: Volume 3, Issue 35-52,93,211-218

-+-+-+-+-+-+-+-+ START OF PART 3 -+-+-+-+-+-+-+-+
X!                then jump to that percent of the file, otherwise just jump
X!                to # percent of the file.
X `20
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*** 189,195
X                 then jump to that  percent  of the file  otherwise just
X                 jump to # percent of the file.
X `20
X!      W         If the current screen width is  80,  make  it  132  and
X                 vica-versa.  For other values, this command is ignored.
X `20
X       Q, RETURN, CONTROL_K->E, CONTROL_X->CONTROL_C
X--- 195,201 -----
X                 then jump to that percent of the file, otherwise just jump
X                 to # percent of the file.
X `20
X!      W         If  the current screen  width  is  80,  make  it  132  and
X                 vica-versa.  For other values, this command is ignored.
X `20
X       Q, RETURN, CONTROL_K->E, CONTROL_X->CONTROL_C
X**************
X*** 198,208
X `20
X       ?, H, CONTROL_H, HELP
X `20
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 `20
X       /, CONTROL_F, FIND
X `20
X--- 204,213 -----
X `20
X       ?, H, CONTROL_H, HELP
X `20
X!                Help.  Give a description  of  all the MOST commands.  The
X!                MOST environment variable MOST_HELP must be  set  for this
X!                to be meaningful, unless the short help  summary  has been
X!                designated at compile time.
X `20
X       /, CONTROL_F, FIND
X `20
X**************
X*** 206,214
X `20
X       /, CONTROL_F, FIND
X `20
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 `20
X       \         Prompt for a string and search backward  for the
X                 #th  distinct   line  containing  the    string.
X--- 211,219 -----
X `20
X       /, CONTROL_F, FIND
X `20
X!                Prompt for a string and search forward from the top of the
X! `09       current window for the  #th  distinct  occurrence  of  the
X! `09       string.  CONTROL_G aborts.
X `20
X       \         Prompt for a string and search  backward  from the current
X                 cursor  position  for  the #th distinct occurrence of  the
X**************
X*** 210,218
X                 current line for  #th distinct  line  containing
X                 the string.  CONTROL_G aborts.
X `20
X!      \         Prompt for a string and search backward  for the
X!                #th  distinct   line  containing  the    string.
X!                CONTROL_G aborts.
X `20
X       R         Search  for the   next   # lines  containing  an
X                 occurrence of   the last  search string   in the
X--- 215,223 -----
X  `09       current window for the  #th  distinct  occurrence  of  the
X  `09       string.  CONTROL_G aborts.
X `20
X!      \         Prompt for a string and search  backward  from the current
X!                cursor  position  for  the #th distinct occurrence of  the
X!                string.  CONTROL_G aborts.
X `20
X       R         Search from the current cursor  position for the next  #th
X                 occurrence  of  the last search string in the direction of
X**************
X*** 214,222
X                 #th  distinct   line  containing  the    string.
X                 CONTROL_G aborts.
X `20
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 `20
X       M, SELECT, CONTROL_K->M, CONTROL_K->CONTROL_B
X `20
X--- 219,227 -----
X                 cursor  position  for  the #th distinct occurrence of  the
X                 string.  CONTROL_G aborts.
X `20
X!      R         Search from the current cursor  position for the next  #th
X!                occurrence  of  the last search string in the direction of
X!                the previous search (Repeat).
X `20
X                 For  text  files,  the screen cursor is positioned at  the
X  `09       beginning  of  the string for each search hit.  This  also
X**************
X*** 218,224
X                 occurrence of   the last  search string   in the
X                 direction of the previous search.
X `20
X!      M, SELECT, CONTROL_K->M, CONTROL_K->CONTROL_B
X `20
X                 Set a mark on the current line for later reference.
X `20
X--- 223,242 -----
X                 occurrence  of  the last search string in the direction of
X                 the previous search (Repeat).
X `20
X!                For  text  files,  the screen cursor is positioned at  the
X! `09       beginning  of  the string for each search hit.  This  also
X! `09       applies  to  Kanji  mode.    In Binary mode, the cursor is
X! `09       positioned at the beginning of the string in the character
X! `09       version, to the  right  of  the hexidecimal version of the
X! `09       line containing the hit.    Once a string is specified, it
X! `09       is retained in subsequent entries  of  '\' and '/' so that
X! `09       these commands can be used simply to reverse the direction
X! `09       of  searches  (then  repeated  via 'R'), or  the  previous
X! `09       string  can be deleted from the prompt and  a  new  string
X! `09       entered.    However,  forward (/) searches always start at
X! `09       the  top  of  the  current  window,  whereas  reverse  (\)
X! `09       searches and repeats  (R)  start  from  the current cursor
X! `09       position.
X `20
X                 The backquote key is used to quote control characters  and
X  `09       escape in  search  string  specifications.  This is useful
X**************
X*** 220,225
X `20
X       M, SELECT, CONTROL_K->M, CONTROL_K->CONTROL_B
X `20
X                 Set a mark on the current line for later reference.
X `20
X       PERIOD, INSERT_HERE, CONTROL_K->RETURN, CONTROL_K->CONTROL_J,
X--- 238,262 -----
X  `09       searches and repeats  (R)  start  from  the current cursor
X  `09       position.
X `20
X+                The backquote key is used to quote control characters  and
X+ `09       escape in  search  string  specifications.  This is useful
X+ `09       when searching for  the  occurrence  of a string with such
X+ `09       characters or a string  at  the  beginning  of  a  line in
X+ `09       stream files.  In the  latter case, to find occurrences of
X+ `09       `60The' at the beginning of a line, enter `60`5EJThe where the `
V60
X+ `09       quotes  the  CONTROL_J.    If you enter  `5EJ  (rather  than
X+ `09       CONTROL_J),  or CONTROL_J without the preceding backquote,
X+ `09       it will  be  treated  as that two-character string, not as
X+ `09       the control character.
X+     `20
X+                Note that in Binary mode,  control,  escape,  and tab (`5EI
V)
X+ `09       characters  must  always  be  entered  explicitly    (with
X+ `09       backquotes) in search string specifications, regardless of
X+ `09       whether the left-hand display is in hexidecimal or verbose
X+ `09       format.
X+`20
X+      M, SELECT, CONTROL_K->M, CONTROL_K->CONTROL_B
X+`20
X                 Set a mark on the current line for later reference.
X `20
X       PERIOD, INSERT_HERE, CONTROL_K->RETURN, CONTROL_K->CONTROL_J,
X**************
X*** 225,234
X       PERIOD, INSERT_HERE, CONTROL_K->RETURN, CONTROL_K->CONTROL_J,
X               CONTROL_K->CONTROL_M
X `20
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 `20
X       L         Toggle locking  for this window.   The window is
X                 locked if there is a `60*' at the left edge of the
X--- 262,270 -----
X       PERIOD, INSERT_HERE, CONTROL_K->RETURN, CONTROL_K->CONTROL_J,
X               CONTROL_K->CONTROL_M
X `20
X!                Set a mark on the current  line  but  return  to  previous
X!                mark.    This allows the user to  toggle  back  and  forth
X!                between two positions in the file.
X `20
X       L         Toggle locking for this window.  The window  is  locked if
X                 there  is  a  `60*'  at  the left edge of the  status  line
V.
X**************
X*** 230,239
X                 back  and  forth  between two positions in the
X                 file.
X `20
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 `20
X       CONTROL_X->2
X `20
X--- 266,274 -----
X                 mark.    This allows the user to  toggle  back  and  forth
X                 between two positions in the file.
X `20
X!      L         Toggle locking for this window.  The window  is  locked if
X!                there  is  a  `60*'  at  the left edge of the  status  line
V.
X!                Windows locked together, scroll together.
X `20
X       CONTROL_X->2
X `20
X**************
X*** 251,261
X `20
X                 Delete all other windows, leaving only one window.
X `20
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 `20
X       $, ESC->$ This is system dependent.   On VMS, this causes MOST to
X                 spawn a subprocess.  When the user  exits  the process,
X--- 286,295 -----
X `20
X                 Delete all other windows, leaving only one window.
X `20
X!      E         Edit this file.  MOST uses callable EDT and TPU or  spawns
X!                an editor to  perform the editing task.  In addition, MOST
X!                can attach to a  kept  editor.   See the discussion of the
X!                environment variable, MOST_EDITOR, above.
X `20
X       $, ESC->$ This is system dependent.   On  VMS,  this  causes MOST to
X                 spawn a subprocess.  When the user exits the process, MOST
X**************
X*** 257,266
X  `09       discussion of the environment variable, MOST_EDITOR,
X  `09       above.
X `20
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 `20
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--- 291,299 -----
X                 can attach to a  kept  editor.   See the discussion of the
X                 environment variable, MOST_EDITOR, above.
X `20
X!      $, ESC->$ This is system dependent.   On  VMS,  this  causes MOST to
X!                spawn a subprocess.  When the user exits the process, MOST
X!                is resumed.  On unix systems, MOST simply suspends itself.
X `20
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**************
X*** 262,270
X                 MOST is resumed.  On unix systems, MOST simply suspends
X                 itself.
X `20
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 `20
X       :C        Toggle case sensitive search.
X--- 295,303 -----
X                 spawn a subprocess.  When the user exits the process, MOST
X                 is resumed.  On unix systems, MOST simply suspends itself.
X `20
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 an
Vy
X                 other key selects the given file.
X `20
X       :C        Toggle case sensitive search.
X**************
X*** 269,276
X `20
X       :C        Toggle case sensitive search.
X `20
X!      :D        Delete  current   file.   This  command is  only
X!                meaningful with the +d switch.
X `20
X       :O        Toggle various options.  With this key sequence,
X                 MOST  displays a prompt  asking  the user to hit
X--- 302,309 -----
X `20
X       :C        Toggle case sensitive search.
X `20
X!      :D        Delete current file.  This command is only meaningful with
X!                the +d switch.
X `20
X       :O        Toggle various options.   With  this  key  sequence,  MOST
X                 displays a prompt asking the user to hit  one of:  bistvw.
X**************
X*** 272,283
X       :D        Delete  current   file.   This  command is  only
X                 meaningful with the +d switch.
X `20
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 `20
X                 The `60i'  option  must be    used  with a  prefix
X--- 305,315 -----
X       :D        Delete current file.  This command is only meaningful with
X                 the +d switch.
X `20
X!      :O        Toggle various options.   With  this  key  sequence,  MOST
X!                displays a prompt asking the user to hit  one of:  bistvw.
X!                The  `60b',  's',  `60t', `60v', and `60w' options have  th
Ve  same
X!                meaning  as  the  command line switches.  For example, the
X!                `60w' option will toggle wrapping on and off for the curren
Vt
X                 window.
X `20
X                 The `60i' option  must be used with a # prefix integer (0 o
Vr
X**************
X*** 280,289
X                 toggle  wrapping  on  and  off  for the  current
X                 window.
X `20
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 `20
X                 int main(int argc, char **argv)
X                  `7B
X--- 312,321 -----
X                 `60w' option will toggle wrapping on and off for the curren
Vt
X                 window.
X `20
X!                The `60i' option  must be used with a # prefix integer (0 o
Vr
X!                no integer terminates the  option).    All  lines indented
X!                beyond # columns will not  be  displayed.    For  example,
X!                consider the fragment:
X `20
X                 int main(int argc, char **argv)
X                  `7B
X**************
X*** 297,306
X                      exit(0);
X                 `7D
X `20
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 `20
X                 int main(int argc, char **argv)...
X                 `7D
X--- 329,337 -----
X                      exit(0);
X                 `7D
X `20
X!                The key sequence `601:Oi' will cause  MOST  to  display  th
Ve
X!                file ignoring all lines indented beyond the  first column.
X!                So for the example above, MOST would display:
X `20
X                 int main(int argc, char **argv)...
X                 `7D
X**************
X*** 305,311
X                 int main(int argc, char **argv)...
X                 `7D
X `20
X!                where the `60...'  indicates  lines follow are not
X                 displayed.
X `20
X       CONTROL_K->G, CONTROL_X->CONTROL_F
X--- 336,342 -----
X                 int main(int argc, char **argv)...
X                 `7D
X `20
X!                where the `60...' indicates that lines follow which  are no
Vt
X                 displayed.
X `20
X                 The  'i'  function  is  disabled  in  Wrap  mode,  and  is
X**************
X*** 308,314
X                 where the `60...'  indicates  lines follow are not
X                 displayed.
X `20
X!      CONTROL_K->G, CONTROL_X->CONTROL_F
X `20
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--- 339,348 -----
X                 where the `60...' indicates that lines follow which  are no
Vt
X                 displayed.
X `20
X!                The  'i'  function  is  disabled  in  Wrap  mode,  and  is
X!                automatically re-enabled  when  Wrap  mode is toggled off.
X!                The search functions are disabled when the 'i' function is
X!                set, and are re-enabled when it is toggled off.
X `20
X       CONTROL_K->G, CONTROL_X->CONTROL_F
X `20
X**************
X*** 310,320
X `20
X       CONTROL_K->G, CONTROL_X->CONTROL_F
X `20
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 `20
X       CONTROL_T
X `20
X--- 344,356 -----
X                 The search functions are disabled when the 'i' function is
X                 set, and are re-enabled when it is toggled off.
X `20
X!      CONTROL_K->G, CONTROL_X->CONTROL_F
X!`20
X!                Fetch a new file to this window.  You will be prompted for
X!                the name of the new file.  CONTROL_G cancels the fetch.  A
X!                carriage return fetches the file, and  adds it to the file
X!                ring list, after those that were indicated  on the command
X!                line.
X `20
X       CONTROL_G
X      `20
X**************
X*** 316,322
X                 to the file ring  list, after those that were indicated
X                 on the command line.
X `20
X!      CONTROL_T
X `20
X                 Show the current date and time.
X `20
X--- 352,360 -----
X                 ring list, after those that were indicated  on the command
X                 line.
X `20
X!      CONTROL_G
X!     `20
X!                Cancel a prompt and the command which evoked the prompt.
X `20
X       CONTROL_T
X `20
X**************
X*** 318,323
X `20
X       CONTROL_T
X `20
X                 Show the current date and time.
X `20
X  HINTS
X--- 356,363 -----
X      `20
X                 Cancel a prompt and the command which evoked the prompt.
X `20
X+      CONTROL_T
X+`20
X                 Show the current date and time.
X `20
X `20
X**************
X*** 320,326
X `20
X                 Show the current date and time.
X `20
X- HINTS
X `20
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--- 360,365 -----
X `20
X                 Show the current date and time.
X `20
X `20
X  BUGS
X `20
X**************
X*** 322,335
X `20
X  HINTS
X `20
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
V where
X-      `60 quotes the CONTROL_J.
X-`20
X  BUGS
X `20
X       Almost all of  the known bugs or limitations  of  MOST  are due to  a
X--- 361,366 -----
X                 Show the current date and time.
X `20
X `20
X  BUGS
X `20
X       At this time,  MOST  only  works  well  with terminals understanding
X**************
X*** 332,349
X `20
X  BUGS
X `20
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 bol
Vding
X!      a line;  <ESC>`5B#m for underlining, bolding,  or displaying strings
V 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!`20
X!      String may not work properly with binary files.
X!`20
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 `20
X--- 363,369 -----
X `20
X  BUGS
X `20
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 `20
X**************
X*** 347,353
X       vt100 escape sequences.  MOST does not seem to have any problem with
X       xterm.
X `20
X!      Malloc failures  are not checked.  MOST may   crash  if there is not
X       enough room to hold the file.
X `20
X  AUTHOR
X--- 367,373 -----
X       vt100 escape sequences.  MOST does not seem to have any problem with
X       xterm.
X `20
X!      Malloc failures are not checked.    MOST  may  crash if there is not
X       enough room to hold the file.
X `20
X `20
X**************
X*** 350,356
X       Malloc failures  are not checked.  MOST may   crash  if there is not
X       enough room to hold the file.
X `20
X- AUTHOR
X `20
X       John E. Davis
X       The Ohio State University
X--- 370,375 -----
X       Malloc failures are not checked.    MOST  may  crash if there is not
X       enough room to hold the file.
X `20
X `20
X  AUTHOR
X `20
X**************
X*** 352,357
X `20
X  AUTHOR
X `20
X       John E. Davis
X       The Ohio State University
X       Department of Physics
X--- 371,378 -----
X       enough room to hold the file.
X `20
X `20
X+ AUTHOR
X+`20
X       John E. Davis
X       The Ohio State University
X       Department of Physics
X**************
X*** 359,365
X `20
X  AUTHOR'S ACKNOWLEDGEMENT
X `20
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 `20
X--- 380,386 -----
X `20
X  AUTHOR'S ACKNOWLEDGEMENT
X `20
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 `20
X**************
X*** 368,374
X       I would also like to thank Shinichi Hama for his valuable criticisms
X       of MOST.
X `20
X- NOTE
X `20
X       MOST(3.02FM) is a modification by Foteos Macrides
X                                    (MACRIDES@WFEB2.BITNET)
X--- 389,394 -----
X       I would also like to thank Shinichi Hama for his valuable criticisms
X       of MOST.
X `20
X `20
X  NOTE
X `20
X**************
X*** 370,380
X `20
X  NOTE
X `20
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.
X--- 390,405 -----
X       of MOST.
X `20
X `20
X! NOTE
X!`20
X!      MOST(3.03FM) is an upgrade by Foteos Macrides (MACRIDES@SCI.WFEB.EDU,
X!      MACRIDES@WFEB2.BITNET) of MOST(3.02FM),  a modification of MOST(3.02)
X!      by Harry Flowers (FLOWERS@MEMSTVX1.MEMST.EDU,FLOWERS@MEMSTVX1.BITNET)
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
V.
X!      This program is  bundled  with  the  network  distribution  of CSWING
V.
X!      You can ftp CSWING from rigel.efd.lth.se (130.235.52.10).
X!     `20
X!      Send bug reports to MACRIDES@SCI.WFEB.EDU.
$ CALL UNPACK MOST_DOC_FM.PAT;364 1162055011
$ create 'f'
X*** disk$disk1:`5Bflowers.swing.vmsnet`5Dmost.h;1
X--- disk$disk1:`5Bflowers.swing.src`5Dmost.h;2
X**************
X*** 1,10
X! extern int SQUEEZE_LINES;          /* switch parameters */
X! extern int MOST_A_OPT;             /* automatically choose -b if necessary
V */
X! extern int MOST_C_OPT;             /* begin pages at top of screen */
X! extern int MOST_V_OPT;             /* display control chars */
X! extern int MOST_B_OPT;             /* display Binary File */
X! extern int MOST_T_OPT;             /* display tab as `5EI-- valid only wit
Vh V option */
X! extern int MOST_D_OPT;             /* delete file mode  (see ':D')  */
X! extern int MOST_L_OPT;             /* use `5EL (formfeed) to clear screen
V */
X!`20
X  extern void most( char *, int);
X--- 1,8 -----
X! extern int MOST_B_OPT;             /* display Binary File
V                   */
X! extern int MOST_C_OPT;             /* begin pages at top of screen
V          */
X! extern int MOST_D_OPT;             /* delete file mode  (see ':D')
V          */
X! extern int MOST_L_OPT;             /* use `5EL (formfeed) to clear screen
V     */
X! extern int MOST_T_OPT;             /* display tab as `5EI-- valid only wit
Vh V */
X! extern int MOST_V_OPT;             /* display control chars
V                 */
X! extern int SQUEEZE_LINES;          /* switch parameters
V                     */
X  extern void most( char *, int);
$ CALL UNPACK MOST_H.PAT;364 1946188761
$ create 'f'
X*** disk$disk1:`5Bflowers.swing.vmsnet`5Dmost_options.opt;363
X--- disk$disk1:`5Bflowers.swing.src`5Dmost_options.opt;2
X**************
X*** 1,2
X  sys$share:vaxcrtl.exe/share
X! IDENTIFICATION="MOST V3.02 FM"
X--- 1,2 -----
X  sys$share:vaxcrtl.exe/share
X! IDENTIFICATION="MOST V3.03 FM"
$ CALL UNPACK MOST_OPTIONS_OPT.PAT;364 1411928778
$ create 'f'
X*** disk$disk1:`5Bflowers.swing.vmsnet`5Doptions_file.opt;2
X--- disk$disk1:`5Bflowers.swing.src`5Doptions_file.opt;3
X**************
X*** 1,2
X  sys$share:vaxcrtl.exe/share
X! IDENTIFICATION="SWING V3.6.3 HF"
X--- 1,2 -----
X  sys$share:vaxcrtl.exe/share
X! IDENTIFICATION="SWING V3.6.4 HF"
$ CALL UNPACK OPTIONS_FILE_OPT.PAT;364 2084467634
$ 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 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.DOC_FM <MOST_DOC_FM.PAT
X$ XPAT MOST.H <MOST_H.PAT
X$ XPAT MOST_OPTIONS.OPT <MOST_OPTIONS_OPT.PAT
X$ XPAT OPTIONS_FILE.OPT <OPTIONS_FILE_OPT.PAT
X$ XPAT SEARCH.C <SEARCH_C.PAT
X$ XPAT SWING.C <SWING_C.PAT
X$ XPAT SWING.H <SWING_H.PAT
X$ XPAT SWING_38.C <SWING_38_C.PAT
X$ XPAT WINDOW.C <WINDOW_C.PAT
$ CALL UNPACK PATCH.COM;364 1699896402
$ create 'f'
X*** disk$disk1:`5Bflowers.swing.vmsnet`5Dsearch.c;2
X--- disk$disk1:`5Bflowers.swing.src`5Dsearch.c;4
X**************
X*** 5,19
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! /* searches from beg up to but not including end */
X! unsigned char *forw_search_region(unsigned char *beg,unsigned char *end, u
Vnsigned char *key)
X! `7B
X!     char ch, ch2,char1,work`5B80`5D;
X!     unsigned char *pos;
X!     int key_len,j, str_len;
X `20
X      if (MOST_C_OPT)
X        `7B
X--- 5,11 -----
X `20
X  #define upcase(ch) ((!MOST_C_OPT && (ch <= 'z') && (ch >= 'a')) ? ch &= 0x
VDF : ch)
X `20
X! int S_DIFF = 0;
X `20
X  /*
X  **  This routine returns the 1 + position of first match of key in str.
X**************
X*** 15,20
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--- 7,35 -----
X `20
X  int S_DIFF = 0;
X `20
X+ /*
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+ **  Searches from beg up to but not including end.
X+ **  If tabs (`5EI) or formatting characters or strings (`5EH, `5EM, <ESC>`
V5B#m) are
X+ **    in the original text, they are handled such that hits will occur for
X+ **    matches as the search string appears on the screen, i.e, the search
X+ **    string should be entered with spaces instead of tabs and without the
X+ **    formatting characters when not in Binary or Verbose mode (plus -t or
X+ **    :Ot set for tabs).
X+ */
X+ unsigned char *forw_search_region(unsigned char *beg,unsigned char *end,
X+                                   unsigned char *key)
X+ `7B
X+     char ch,ch2,char1,work`5B80`5D;
X+     unsigned char *pos,*save_pos,*b,*e,*i;
X+     int key_len,j,s,str_len,tab_flag;
X+     static unsigned char *s_pos1;
X+     static unsigned char *s_pos2;
X+     extern int M_FLAG;
X+     extern char *M_POS;
X+`20
X      if (MOST_C_OPT)
X        `7B
X            strcpy(work,key);
X**************
X*** 40,45
X     `20
X      while(1)
X        `7B
X            while (ch = *beg, ch = upcase(ch), ch != char1)
X              `7B
X                  if (beg > end) return(EOB);
X--- 55,63 -----
X     `20
X      while(1)
X        `7B
X+ again:
X+           tab_flag = 0;
X+           S_DIFF = 0;
X            while (ch = *beg, ch = upcase(ch), ch != char1)
X              `7B
X                  if (beg > end) return(EOB);
X**************
X*** 43,48
X            while (ch = *beg, ch = upcase(ch), ch != char1)
X              `7B
X                  if (beg > end) return(EOB);
X                  beg++;
X              `7D
X            beg++;
X--- 61,75 -----
X            while (ch = *beg, ch = upcase(ch), ch != char1)
X              `7B
X                  if (beg > end) return(EOB);
X+                 if (!MOST_B_OPT)
X+                   `7B
X+                       if((!MOST_V_OPT `7C`7C !MOST_T_OPT) &&
X+                          char1 == ' ' && ch == '\t')
X+                         `7B
X+                             tab_flag = 1;
X+                             break;
X+                         `7D
X+                   `7D
X                  beg++;
X              `7D
X            beg++;
X**************
X*** 46,52
X                  beg++;
X              `7D
X            beg++;
X-           /* so we have a position of possible match */
X `20
X            j = 1;
X            pos = beg;  /* save this position so we start from here again */
X--- 73,78 -----
X                  beg++;
X              `7D
X            beg++;
X `20
X            /*
X            **  We have a position of possible match.
X**************
X*** 48,54
X            beg++;
X            /* so we have a position of possible match */
X `20
X!           j = 1;
X            pos = beg;  /* save this position so we start from here again */
X            while(ch = *beg++, ch = upcase(ch),
X                  ch2 = work`5Bj++`5D, (ch == ch2) && (j <= key_len));
X--- 74,138 -----
X              `7D
X            beg++;
X `20
X!           /*
X!           **  We have a position of possible match.
X!           **  If not Binary mode,
X!           **    skip if not Verbose mode and it's in an <ESC>`5B#m
X!           **    sequence, or a `5EM overstrike string.
X!           */
X!           if (!MOST_B_OPT)
X!             `7B
X!                 if (!MOST_V_OPT)
X!                   `7B
X!                       if ((char1 == '`5B' &&
X!                            (*(beg - 2) == '\033' && *(beg + 1) == 'm' &&
X!                             (*beg == '0' `7C`7C *beg == '1' `7C`7C
X!                              *beg == '4' `7C`7C *beg == '7'))) `7C`7C
X!                           (char1 == 'm' &&
X!                            (*(beg - 4) == '\033' && *(beg - 3) == '`5B' &&
X!                             (*(beg - 2) == '0' `7C`7C *(beg - 2) == '1' `7
VC`7C
X!                              *(beg - 2) == '4' `7C`7C *(beg - 2) == '7')))
V `7C`7C
X!                           ((char1 == '0' `7C`7C char1 == '1' `7C`7C
X!                             char1 == '4' `7C`7C char1 == '7') &&
X!                            (*(beg - 3) == '\033' && *(beg - 2) == '`5B' &&
X!                             *beg == 'm')))
X!                         goto again;
X!                       else
X!                         `7B
X!                             save_pos = C_POS;
X!                             C_POS = beg - 1;
X!                             b = beg_of_line1();
X!                             if (!MOST_W_OPT)
X!                               `7B
X!                                   e = end_of_line1();
X!                                   for (i = b; i <= e; i++)
X!                                     if (*i == '\015')
X!                                       `7B
X!                                           M_FLAG = 1;
X!                                           M_POS = i;
X!                                       `7D
X!                               `7D
X!                             else
X!                               e = end_of_line();
X!                             if (M_FLAG && C_POS > M_POS)
X!                               `7B
X!                                   C_POS = save_pos;
X!                                   M_FLAG = 0;
X!                                   goto again;
X!                               `7D
X!                             C_POS = save_pos;
X!                             M_FLAG = 0;
X!                         `7D
X!                   `7D
X!             `7D
X!            `20
X!           /*
X!           **  Now see if the rest of the string matches.
X!           **  If not Binary mode,
X!           **    deal with any embedded backspaces (`5EH)
X!           **    or <ESC>`5B#m sequences if not Verbose mode,
X!           **    and with tabs if not Verbose or explicit Tab modes.
X!           */
X            pos = beg;  /* save this position so we start from here again */
X `20
X            if (!MOST_B_OPT && tab_flag)
X**************
X*** 50,57
X `20
X            j = 1;
X            pos = beg;  /* save this position so we start from here again */
X-           while(ch = *beg++, ch = upcase(ch),
X-                 ch2 = work`5Bj++`5D, (ch == ch2) && (j <= key_len));
X `20
X            if (j > key_len)
X              `7B
X--- 134,139 -----
X            **    and with tabs if not Verbose or explicit Tab modes.
X            */
X            pos = beg;  /* save this position so we start from here again */
X `20
X            if (!MOST_B_OPT && tab_flag)
X              `7B
X**************
X*** 53,59
X            while(ch = *beg++, ch = upcase(ch),
X                  ch2 = work`5Bj++`5D, (ch == ch2) && (j <= key_len));
X `20
X!           if (j > key_len)
X              `7B
X                  /* make key match 'key' in beg */
X                  beg = pos - 1;  /* skip back to beginning of match */
X--- 135,141 -----
X            */
X            pos = beg;  /* save this position so we start from here again */
X `20
X!           if (!MOST_B_OPT && tab_flag)
X              `7B
X                  beg--;
X                  j = 0;
X**************
X*** 55,61
X `20
X            if (j > key_len)
X              `7B
X!                 /* make key match 'key' in beg */
X                  beg = pos - 1;  /* skip back to beginning of match */
X                  for (j = 0; j < key_len; j++) key`5Bj`5D = *beg++;
X                  return(pos - 1);
X--- 137,243 -----
X `20
X            if (!MOST_B_OPT && tab_flag)
X              `7B
X!                 beg--;
X!                 j = 0;
X!             `7D
X!           else
X!             j = 1;
X!`20
X!           if (MOST_B_OPT)
X!             `7B
X!                 while(ch = *beg++, ch = upcase(ch), ch2 = work`5Bj++`5D,
X!                       (ch == ch2 && j <= key_len)) ;
X!             `7D
X!           else
X!             `7B
X!                 while(ch = *beg++, ch = upcase(ch), ch2 = work`5Bj++`5D,
X!                       ((ch == ch2) `7C`7C
X!                        (!MOST_V_OPT && (ch == '_' `7C`7C ch == '\033')) `7
VC`7C
X!                        ((!MOST_V_OPT `7C`7C !MOST_T_OPT) &&
X!                         ch == '\t' && ch2 == ' ') &&
X!                        (j <= key_len)))
X!                   `7B
X!                       /*
X!                       **  deal with underlining via `5EH if not Verbose mo
Vde
X!                       */
X!                       if (ch2 != '_' && (ch == '_' && *beg == '\b'))
X!                         `7B
X!                             ch = *(beg + 1);
X!                             ch = upcase(ch);
X!                             if (ch == ch2)
X!                               beg += 2;
X!                             else break;
X!                         `7D
X!                      `20
X!                       /*
X!                       **  deal with bolding via `5EH if not Verbose mode
X!                       */
X!                       else if (!MOST_B_OPT && !MOST_V_OPT && *beg == '\b')
X!                         beg += 2;
X!                      `20
X!                       /*
X!                       **  deal with <ESC>`5B#m if not Verbose mode
X!                       */
X!                       else if (ch == '\033' &&
X!                                *beg == '`5B' && *(beg + 2) == 'm' &&
X!                                (*(beg + 1) == '0' `7C`7C *(beg + 1) == '1'
V `7C`7C
X!                                 *(beg + 1) == '4' `7C`7C *(beg + 1) == '7'
V))
X!                         `7B
X!                             ch = *(beg + 3);
X!                             ch = upcase(ch);
X!                             if (ch != ch2) break;
X!                             else beg += 4;
X!                         `7D
X!                        `20
X!                       /*
X!                       **  deal with tabs if not Verbose or explicit Tab mo
Vdes
X!                       */
X!                       else if (ch == '\t' && ch2 == ' ')
X!                         `7B
X!                             j--;
X!                             save_pos = beg - 1;
X!                             if (tab_flag && beg == pos &&
X!                                 (*(beg - 2) == '\t' `7C`7C *(beg - 2) == '
V '))
X!                               break;
X!                             while (*beg == '\t' `7C`7C *beg == ' ')
X!                               beg++;
X!                             if (save_pos == beg_of_line1())
X!                               s = apparant_distance(beg) - 1;
X!                             else if (MOST_W_OPT)
X!                               `7B
X!                                   MOST_W_OPT = 0;
X!                                   s = apparant_distance(beg) -
X!                                       apparant_distance(save_pos);
X!                                   MOST_W_OPT = 1;
X!                               `7D
X!                             else
X!                               s = apparant_distance(beg) -
X!                                   apparant_distance(save_pos);
X!                             while (s && work`5Bj`5D == ' ' && j < key_len)
X!                               `7B
X!                                   j++;
X!                                   s--;
X!                               `7D
X!                             if (tab_flag &&
X!                                 save_pos == pos - 1 && *beg == work`5Bj`5D
V)
X!                                   S_DIFF = s;
X!                             else if (!tab_flag && s != 0 && j < key_len)
X!                               `7B
X!                                   j = key_len;
X!                                   break;
X!                               `7D
X!                         `7D
X!                   `7D
X!             `7D
X!            `20
X!           /*
X!           **  if it's a full match
X!           */
X!           if (j > key_len)
X!             `7B
X!                 /*
X!                 **  make key match 'key' in beg
X!                 */
X                  beg = pos - 1;  /* skip back to beginning of match */
X                  for (j = 0; j < key_len; j++)
X                    `7B
X**************
X*** 57,63
X              `7B
X                  /* make key match 'key' in beg */
X                  beg = pos - 1;  /* skip back to beginning of match */
X!                 for (j = 0; j < key_len; j++) key`5Bj`5D = *beg++;
X                  return(pos - 1);
X              `7D
X           `20
X--- 239,284 -----
X                  **  make key match 'key' in beg
X                  */
X                  beg = pos - 1;  /* skip back to beginning of match */
X!                 for (j = 0; j < key_len; j++)
X!                   `7B
X!                       if (MOST_B_OPT)
X!                         `7B
X!                             key`5Bj`5D = *beg++;
X!                         `7D
X!                       else
X!                         `7B
X!                             /*
X!                             **  deal with overstriking via `5EH if not Ver
Vbose
X!                             */
X!                             if (!MOST_V_OPT && *(beg + 1) == '\b')
X!                               beg += 2;
X!                            `20
X!                             /*
X!                             **  now deal with tabs if not Verbose or
X!                             **    explicit Tab modes,
X!                             **  else just get the character
X!                             */
X!                             if ((!MOST_V_OPT `7C`7C !MOST_T_OPT) &&
X!                                 *beg == '\t' && work`5Bj`5D == ' ')
X!                               `7B
X!                                   while (*beg == '\t' `7C`7C *beg == ' ')
V beg++;
X!                                   while (key`5Bj`5D == ' ') j++;
X!                                   j--;
X!                               `7D
X!                             else
X!                               key`5Bj`5D = *beg++;
X! `09`09`09     `20
X!                              `20
X!                             /*
X!                             **  now deal with <ESC>`5B#m if not Verbose
X!                             */
X!                             if (!MOST_V_OPT && *(beg) == '\033' &&
X!                                 *(beg + 1) == '`5B' && *(beg + 3) == 'm' &
V&
X!                                 (*(beg + 2) == '0' `7C`7C *(beg + 2) == '1
V' `7C`7C
X!                                  *(beg + 2) == '4' `7C`7C *(beg + 2) == '7
V'))
X!                               beg += 4;
X!                         `7D
X!                   `7D
X                  return(pos - 1);
X              `7D
X            else beg = pos;
X**************
X*** 60,66
X                  for (j = 0; j < key_len; j++) key`5Bj`5D = *beg++;
X                  return(pos - 1);
X              `7D
X-          `20
X            else beg = pos;
X        `7D
X  `7D
X--- 281,286 -----
X                    `7D
X                  return(pos - 1);
X              `7D
X            else beg = pos;
X        `7D
X  `7D
X**************
X*** 66,72
X  `7D
X `20
X `20
X! unsigned char *back_search_region(unsigned char *beg,unsigned char *end, u
Vnsigned char *key)
X  `7B
X      char ch, ch2,char1,work`5B80`5D;
X      unsigned char *pos;
X--- 286,305 -----
X  `7D
X `20
X `20
X! /*
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! **  Searches from end up to but not including beg.
X! **  If tabs (`5EI) or formatting characters or strings (`5EH, `5EM, <ESC>`
V5B#m) are
X! **    in the original text, they are handled such that hits will occur for
X! **    matches as the search string appears on the screen, i.e, the search
X! **    string should be entered with spaces instead of tabs and without the
X! **    formatting characters when not in Binary or Verbose mode (plus -t or
X! **    :Ot set for tabs).
X! */
X! unsigned char *back_search_region(unsigned char *beg,unsigned char *end,
X!                                   unsigned char *key)
X  `7B
X      char ch,ch2,char1,work`5B80`5D;
X      unsigned char *pos,*save_pos,*b,*e,*i;
X**************
X*** 68,76
X `20
X  unsigned char *back_search_region(unsigned char *beg,unsigned char *end, u
Vnsigned char *key)
X  `7B
X!     char ch, ch2,char1,work`5B80`5D;
X!     unsigned char *pos;
X!     int key_len,j, str_len;
X `20
X      if (MOST_C_OPT)
X        `7B
X--- 301,311 -----
X  unsigned char *back_search_region(unsigned char *beg,unsigned char *end,
X                                    unsigned char *key)
X  `7B
X!     char ch,ch2,char1,work`5B80`5D;
X!     unsigned char *pos,*save_pos,*b,*e,*i;
X!     int key_len,j,s,str_len,tab_flag;
X!     extern int M_FLAG;
X!     extern char *M_POS;
X `20
X      if (MOST_C_OPT)
X        `7B
X**************
X*** 97,102
X     `20
X      while(1)
X        `7B
X            while (ch = *end, ch = upcase(ch), ch != char1)
X              `7B
X                  if (beg > end) return(EOB);
X--- 332,340 -----
X     `20
X      while(1)
X        `7B
X+ again:
X+           tab_flag = 0;
X+           S_DIFF = 0;
X            while (ch = *end, ch = upcase(ch), ch != char1)
X              `7B
X                  if (beg > end) return(EOB);
X**************
X*** 100,105
X            while (ch = *end, ch = upcase(ch), ch != char1)
X              `7B
X                  if (beg > end) return(EOB);
X                  end--;
X              `7D
X            end--;
X--- 338,352 -----
X            while (ch = *end, ch = upcase(ch), ch != char1)
X              `7B
X                  if (beg > end) return(EOB);
X+                 if (!MOST_B_OPT)
X+                   `7B
X+                       if((!MOST_V_OPT `7C`7C !MOST_T_OPT) &&
X+                          char1 == ' ' && ch == '\t')
X+                         `7B
X+                             tab_flag = 1;
X+                             break;
X+                         `7D
X+                   `7D
X                  end--;
X              `7D
X            end--;
X**************
X*** 103,111
X                  end--;
X              `7D
X            end--;
X!           /* so we have a position of possible match */
X!`20
X!           j = key_len - 2;
X            pos = end;  /* save this position so we start from here again */
X            while(ch = *end--, ch = upcase(ch),
X                  ch2 = work`5Bj`5D, (ch == ch2) && (j >= 0)) j--;
X--- 350,415 -----
X                  end--;
X              `7D
X            end--;
X!            `20
X!           /*
X!           **  We have a position of possible match.
X!           **  If not Binary mode,
X!           **    skip if not Verbose mode and it's in an <ESC>`5B#m
+-+-+-+-+-+-+-+-  END  OF PART 3 +-+-+-+-+-+-+-+-
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads