Rev. 23 of Open/ed released.

9 views
Skip to first unread message

Greg Field

unread,
Jan 2, 2023, 10:15:21 PM1/2/23
to Open/ed


Released version :
------------------

    23.01.01


New features.
-------------

    Additional functions and bug fixes.


Discussion
----------

    This release is mainly some additional functions and bug fixes.
    There are a few open bugs that we list here.


Program options
---------------

    None.

Commands
--------

    New
    ---

    No new commands.

    Changes
    -------

    STRING name  = "abc"+"def+"ghij"
    The string command can now have an initial value of concatenated strings.

    FIND<NUL> or FIND; or FIND<return> will now find empty text lines.
    This applieas to all 4 FIND commands.
    LOCATE<NUL> will stop at every line.


Abbreviations
-------------

    No change.


Modes
-----

    No change.


Functions
---------

    New
    ---

    let int# = ADDITEM (  list , "item", int_separator )
    let int# = ADDUNIQ (  list , "item", int_separator )
    let str# = ADDITEM ( "list", "item", int_separator )
    let str# = ADDUNIQ ( "list", "item", int_separator )

    ADDITEM () add an item to a list.
    ADDUNIQUE () add an item to a list only if it is not already in the list.

    let str# = SORT ( "list"    , "key" , int_separator )
    let int# = SORT ( io_strvar , "key" , int_separator )
    SORT() sorts a list alphabetically or numerically.

    let str# = DIRLIST ( "directory" , "pattern" , "mask", separator, ecode )
    DIRLIST() generates a list from a directories entries.

    let str# = NEXTITEM  ( index_column , "source", 'seper_char' ) def ','.
    let str# = NEXTFIELD ( field_column , "source", 'seper_char' ) def ':'.
    let str# = NEXTLINE  ( line_column  , "source", 'seper_char' ) def '\n'.
    NEXITEM() and friends sequentially read a list one item at a time.

    let str# = UNIQUE ( "list" , [ int_separator ] )
    UNIQUE() ensure there are no duplicate items in a list.

    let str# = STRCAT ( "stra", %strb% , 'strc' , ... )
    STRCAT() concatenates several strings.

    let str# = GETCWD ( )
    GETCWD() returns the current working directory.


    Changes
    -------
    Warning : these may effect existing macros.

    STRTIME(),NOW() now returns 1970.01.01 when time is un-available.
    FCOPY(),FSIZE() return -3 for size too big for integer.
    REWIND(),FSEEK(),FLOCK() now use 0 and -1 as return values.
    The OPENDIR() function now defaults to a mask of "All".
    The MENU() function has an optional separator.


Variables
---------

    New :

        None.

    Removed variables :

        None.

    Changed variables :

        None.


Constants
---------

    New constants :

        %OK%  A return value for functions such as :
                REWIND(),FSEEK(),FLOCK() now use 0 and -1 as return values.
        %ERR% already exists.
                These allow functions to be checked for 0 or -1.

    Changes :

        None.


Maths operators
---------------

    No change.


Symbols
-------

    No change.


Macros
------

    No new macros.

    'cat' and 'dir' have been updated for Rev. 23.


Screen mode window.
-------------------

   No change.


WHEN conditions
---------------

    No change.

Menus
-----

   The screen "Modes" menu has been widened for 22-026.


Keyboard
--------

   No change.

Help.
-----

    New entries for new functions.


Scripts
-------

    No change.


Error codes
-----------

    No change.


Bug fixes
---------

    22-012 : alarm .flags being set to cached when not shared.
    22-013 : stringexpr() LOGGER call was not using -> s.
    22-014 : Default open dir mask changed to "All".
    22-015 : Invalid or unavalable time is 0, rather than -1.
    22-016 : Shared mem still deadlocks after crash.
    22-017 : %alarms.shared% was incorrect. So was %alarms.cached%.
    22-018 : FIND/LOC <NUL> inconsistent. F<NUL> now stops on empty line.
    22-019 FCOPY () should use OPENED_FMODE for new files mode.
    22-020 FCOPY () should return -3 for file size too big for return value.
    22-021 FSIZE () should return -3 for file size too big for return value.
    22-022 REWIND () should use -1/0 return value. Documentation wrong.
    22-023 FSEEK () should use -1/0 return value.
    22-024 FLOCK () should use -1/0 return value. flocknedfile () issue.
    22-025 H Xn shrinks the history list.
    22-026 menu Modes/Screen_return exits session.
    22-027 STRCAT() clears target string.
    22-029 Need an optional separator for MENU().


Open bugs
---------

    22-018 WHICH double reports on "*" and same directory in PATH.
    22-015 Shared mem still splits to different segments after crash.
    22-028 errpro () Help file from syntax error not showing. Timer is huge.
           When mode SHORTER with other combination.
    22-030 let int# = "^J" is accepted as decimal 30.
    22-031 winpick() needs an optional "title" for MENU().


    Discussion :
    If Open/ed crashes and is restarted, it may start a new shared memory segment for alarms.
    The only way around this is to exit all of your Open/ed sessions and
    remove the control file : %alarms.control.file%.

    The WHICH command examines each directory in PATH.
    If '*' is specified and the same directory is also specified, then the
    WHICH command will double report if the command is found.

    The integer value of a control character is ^X.
    Quoted control codes needs a review.


Source code Stats
-----------------

        Version : 23.01.01    Sun 01 Jan 2023 16:50:43

    ned      is 95096 lines, 3M bytes,   averaging 41 bytes per line.
    gstlib   is 12742 lines, 445K bytes, averaging 34 bytes per line.
    shmlib   is 1160  lines, 37K bytes,  averaging 32 bytes per line.
    sortlist is 316   lines, 12K bytes,  averaging 40 bytes per line.
    curwin   is 5840  lines, 220K bytes, averaging 37 bytes per line.
    gpl      is 11859 lines, 371K bytes, averaging 31 bytes per line.
    include  is 4664  lines, 211K bytes, averaging 45 bytes per line.

    Open/ed is 131677 lines, 5M bytes, averaging 39 bytes per line.

                3381  additional lines.

Other
-----


    --------------------------------------------------------------------------------

Greg Field

unread,
Jan 13, 2023, 9:10:32 PM1/13/23
to Open/ed
Release for 23.01.14

Bug fixes.
----------

 23-001 intexpr () using ed.SYMBOL for ^X control codes. Hard code '^'.
 23-002 intexpr () allows ^@ (NUL).

 22-030 let int# = "^J" is accepted as decimal 30.
 23-003 intexpr () allows huge integer. Rm MATHER, make syntax error.
 23-004 Provide syntax for '^''(quote) in intexpr ().
 23-005 STRPRINT () docs says no defaults. Documentation fixed.
 23-006 str1=sort () gets heap corruption detected. Fix in arraytolist ().
        arraytolist () was inc pointer before moving char, when ptr
        is already set to the target column.
 22-028 errpro () Timer is huge. SCR SHORT and LONG.
 23-008 ITEMINLIST () FIELDINLIST () LINEINLIST () was not documented.
 23-009 ITEMINLIST () did not have an alt separ chacter argument.



Open bugs
---------

    22-018 WHICH double reports on "*" and same directory in PATH.
    22-015 Shared mem still splits to different segments after crash.
    22-031 winpick() needs an optional "title" for MENU().


Greg Field

unread,
Feb 1, 2023, 9:35:36 PM2/1/23
to Open/ed
Rev. 23.02.01

Some are documentation fixes. Big reformat of help files.

  23-011 getpwent() and getgrent() (sequential read) return random entries
  23-011 Help files and Ref.Man refer to STR_MAX. Change to STRING_MAX.
  23-020 SYSCOMO doc should discuss KLIST.
               Big tidy of help files with new bindex program.
               Add STRALL(str,' ')
  23-017 FUNKEY missing syntax in docs.
  23-014 EXTRACT() desc is over two lines.
  23-012 Help for COUNT and Mode COUNT needs tidy.
  23-021 Column mode syntax says COUNT. Missing syntax.
  23-022 Explain inconsistent 0/1 -1/0 return values in FUNCTION.hlp.
  23-018 shell error "Unexpected token '(' when cmnd NED xxx().yyy
               Mode EDPAR->SHELLESC now edits () to \(\).
              In NED file(), SYS file(), SYS;ls file(),SYSCOMO.

  23-010 xPWENT() and xGRENT () return values are 0/1. -1/0 ?
               Consistent with OS. Note added to Function.hlp
  23-019 Check all modes are in the MODE help entry.
  23-024 PATH mode not documented. Moved to DEVPATH. Not in use.
  23-025 REGEX mode not documented.
  23-026 Add %REG_xxxx% to constants help file. GREP().hlp.
  23-027 Add EDISABLED to langer.c
  23-016 No examples in GREP()/PERG() docs.
  23-013 Document German lang macro. In UG Chptr "Supplied macros".
  23-015 Split out non grent/pwent help entries ?
               Added note about not needing SET... functions to docs.
  23-028 Rename EDPAR to SHELLESC.
  23-030 Mode shortcuts (COUNT,PROMPT,INPROMPT) skip 1st arg.
                Add %prompt% and %inprompt% vars. LHS ok.
               Add default separator for MENU() to docs.

  Revision 23.02.01  released 23.02.02. Bug fixes posted.



  Open bugs.
  ----------

  22-018 WHICH double reports on "*".

  22-015 Shared mem still splits to different segments after crash.
  22-031 winpick() needs an optional "title" for MENU().
  23-007 Click on ALERT message does not register in alarm system.
  23-023 H x1; should default to 1. Seems ok.
  23-029 MODE() help needs more constants for modes ...
         LR,SR,TAB,WAITER,XT,EOL,MSG,SB,GREP,HISTORY,LP.

Reply all
Reply to author
Forward
0 new messages