History of changes since DeskLib 2.30:




***		Desk 3.20	***


15 Oct 1997
Desk_Debug_BackTrace no longer indents by prefix string.



03 Oct 1997

Added support for multiple poll-idle handlers - see
Desk_Event_PollIdle3(), Desk_Event_PollIdle(),
Desk_Event_ClaimNullIdle(), Desk_Event_ClaimNullIdleInterval(),
Desk_Event_ReleaseNullIdle().


02 Oct 1997

Added a few things to sed script used by desk.bin.ConvertSr2, to convert
task_handle, open_WHEREVER etc.


22 Sep 1997

Added Desk_Filing_ScanDir2, which catches and skips dir-read errors.
Also removed code which dealt with root dirs are a special case - this
was incorrect I think...



09 Jun 1997

Desk_Sprite_Get() seems to be buggy. Changed code to fix this, but
completely untested. Piers Wombwell.



20 May 1997

Changed all WimpSWIs veneers to call the X SWI and check the return
using the objasm macro Desk_Error2_CheckV (which simply does 'BLVS
Desk_Error2_CheckOS'). Previously, all Wimp SWIs were called using the
non-X form, relying on a signal to be generated which would be caught by
the Desk_Error2 system. This didn't work when Wimp SWIs were called
from SVC mode (which is ok for some of them), as the C runtime system
doesn't catch OS errors when running in SVC mode.



07 May 1997

Added Desk_Import2_ImportData2().
Added Desk_Export_ExportData2().


24 Apr 1997

Improved output from Desk_BackTrace_Output*() - now shows pc from
[fp,#-4] (the 'return link value' in the stack frame header - see
'Desktop Tools' page 253). Thus backtraces show both pc and function
address.


14 Apr 1997
Added Desk_DeskMem_BufferMidExtend().
Added some MemCheck calls to MsgTrans.c.RMA.

10 Apr 1997

Added Desk_Error2_MsgTrans* - raises errors whose text is read from a
single Acorn-style messages file. Desk_Error2_MsgTransInit(),
Desk_Error2_MsgTransFinal(), Desk_Error2_MsgTransHandle(),
Desk_Error2_MsgTransHandle0(), Desk_Error2_MsgTransHandlef(), 

Added Desk_MsgTrans_Lookupvf(), Desk_MessageTrans_Lookupf(),
Desk_MessageTrans_LookupvfStatic(), Desk_MessageTrans_LookupfStatic(),
Desk_MessageTrans_LookupStatic().

Added a few 'const' things to MsgTrans.




13 Mar 1997
Trying to get rid of the few remaining compiler errors - variables being
used before being set etc.


07 Mar 1997

Made Jump library Desk_Debug_Printf the address of the jmpbuf - useful
for detecting when part of a project has been compiled with -zm and the
rest without...

Remade Desk.o.Desk - had an Error_Report external reference in it left
over from a previous bad build.



06 Mar 1997
Changed function strcpycr to Desk_strcpycr - in assembler file
Str.s.strcpycr. 

Added Desk_Error_ReportInternal, Desk_Error_ReportFatalInternal,
Desk_Error_Check, Desk_Error_CheckFatal, Desk_Error_OutOfMemory - these
seem to have been removed at some point since DeskLib 2.30. Error2
functions should be used for error handling - these are mainly for
DeskLib compatibility. 

Thanks to Steve Spry for spotting these problems.



28 Feb 1997
Added OSBuffer library - interface onto BufferManager service routines
(RO 3.5 and later only).

24 Feb 1997
Removed all c4 and c0 directories (c4 was a build using Acorn C version
4, c0 were backups of code I was tentatively changing).

Added Desk_Filing_GetObjType().



06 Feb 1997
Debug's uniqfile library now exits gracefully if it can't open output
file - used to hang everything in modules.


03 Feb 1997
Added taskwindow library.


29 Jan 1997
Added PRM page numbers to all SWI veneers in Desk.WimpSWIs.h


27 Jan 1997
Desk_Debug_Assert calls exit(1) instead of abort() in module builds.


24 Jan 1997


***		Desk 3.10	***




22 Jan 1997
Fixed bug in Desk_Filing_OpenDir2's treatment of wildcard - set to NULL
so can be freed after error. Also uses Desk_strdup. Removed Filing's
MALLOC and FREE macros - uses Desk_DeskMem_ now.

Fixed undocumented bug in Wimp_PlotIcon veneer. When not in redraw loop,
r4 and r5 specify the graphics origin. Now sets these to 0. Added
Desk_Wimp_PlotIcon2( Desk_icon_block* fakeicon, int xorigin, int
yorigin) to allow for this usage.



20 Jan 1997

Added Desk_Debug_RedirectToFilename, only implemented in uniqfile at the
moment.

Added Save2 library - uses Export and Dialog2 to provide save windows.


17 Jan 1997

Added Desk_Window_ToggleShow


15 Jan 1997
Changed Screen to always find new mode variables - under RO3.50 and
later, mode variable can be same even if mode has changed (it's a
pointer to a block of memory).


13 Jan 1997
Fixed bug in Desk_Filing_OpenDir2() - was malloc(strlen()), strcpy...

09 Jan 1997
Added Desk.Bin.ConvertSrc and Desk.Bin.ConvertSr2, for roughly
converting source from using DeskLib to Desk. Needs the RISC OS port of
sed.


07 Jan 1997
Adding support for interactive help to Menu2. Menu2 Desk_Menu2_Create2
requires a (possibly NULL) pointer to a function to call in response to
a Desk_message_HELPREQUEST for a menu.


20 Dec 1996
Added <Desk_Sources$Dir>.Scripts.LinkAll 

18 Dec 1996

Added Desk_Error2_ConvertToOS2().

17 Dec 1996
Added Desk_Filing_OpenDir2().

09 Dec 1996
Added Desk_Str_strdupcr().


05 Dec 1996
Fixed bug in Desk_Icon_FileIcon - was using "Desk_file_%3x" instead of
"file_%3x".

Fixed bug in Event (8-/). Dealing with handler that unregistered itself
was wrong.

04 Dec 1996

Change Desk_Export_file/ramsaver/resulthandler to be Desk_export_*.


19 Nov 1996

Changed SaveCodePointerOffset from 3 to 2 in BackTrace.h.Defs - governs
where the search for embedded name starts from.


08 Nov 1996

Changed free() to Desk_DeskMem_Free() in Icon.c.IconInsert.


06 Nov 1996

Added Ptr.h - for rounding ptrs etc.



05 Nov 1996

Added extern "C" things to DynamArea.h



29 Oct 1996

Added Desk_C4 - compiled with Acorn CC version 4.


24 Oct 1996

Fixed small bug in Desk_Debug_DumpRegistersToFile - didn't increment
filename suffix correctly.


21 Oct 1996

Changed Desk_DragASprite_Start to DragASprite_Start when calling
OS_SWINumberFromString from DragASpr.s.DragIcon (thanks to Andreas
Zieringer for spotting this one).

Changed code to fix bug in Desk_Pane2__OpenWindow (AZ again).



16 Oct 1996

Added 'nobeep' field to Desk_error_flags union (see Desk.Wimp.h)
Added Desk_wimp_reporterror_button enum.


***	11 Sep 1996	Desk 3.00beta	***


Changes between DeskLib 2.30x betas and release 3.00 beta of Desk:


Menu2
Desk_Menu2_Create now requires a (possibly NULL) pointer to a
function to call whenever a menu is closed in any way.

LinkList
Desk_LinkList_InsertBefore/After now work if pos is NULL.

Core
Desk_os_error is now typedef-ed to _kernel_oserror if compilation is
with Acorn compiler. This allows the two types to be used interchangably
which is sometimes very useful.
New boolean typedef enum 'Desk_bool' is used wherever DeskLib's BOOL was
used.
Desk__MODULE_CLIENT is expected to be predefined when compiling with cc
-zm.

BackTrace
New library for walking the stack. Very useful when debugging...

Jump
Macros/functions involving setjmp and longjmp, for use by the Error2
library. These should be compatible with SDLS, but I haven't tried this.

Error2
All support for handling errors. All of Desk uses this library when an
error occurs.

DynamArea
Simple management of dynamic areas - allows you to easily create/resize
etc, without worrying about the rather unhelpful behaviour of the
underlying SWIs - DynamArea keeps track of the actual size of the area
etc.

Event
Added Desk_Event_MessagesClaim and Desk_Event_MessagesRelease - simply
claim/release all three message types in one go.

Import2
Provides general support for exporting data using either file or ram
transfer.

MsgTrans
Added functions for finding the size of a message after substitution,
looking up into Desk_deskmem_buffer's, opening a file with the system
info stored in RMA.

KernelSWIs
Added functions for convenient reading of a system variable.
Added functions for reading/writing CMOS.

File
Removed the old system which used a global variable to store the last
error returned.
Added a few extra functions.

Filing
Added Desk_Filing_CompareDates.

DeskMem
New library which provides standard veneers for malloc et al, which
raise errors instead of returning 0. Uses function pointers to point to
malloc, realloc etc, which can be changed to point to user-supplied ones
(eg if you want all memory to be in a dynamic area)
Added Desk_deskmem_buffer and associated support functions, which
provide easy-to-use buffers which are always multiples of an initial
size, to try to prevent fragmentation.

Export
Handles export of data using file or ram transfer.


Many functions which previously returned an (os_error*) have been
changed to return void, and raise an error if something goes wrong. Eg
all the Wimp SWI veneers.





********************************************************************

DeskLib betas 2.3x


Updates between DeskLib beta versions since version 2.30



13 May 1996

Filing now treats images as directories.


09 May 1996

Event__ExitFunction now sets taskhandle to 0 after calling
Wimp_CloseDown.

Error_Report functions now output backtrace to stderr in debug builds.



08 May 1996

Module verion now compiled with -ff to remove embedded fn names. Added
DL_M_Fn with names.


07 May 1996

Error2_VerboseExit now displays OS error using _kernel_last_oserror()
when signal error is SIGOSERR.


30 Apr 1996

Core.h: Added _DeskLib__Zm - defined when compilation is either for
module (cc -Zm) or for DLL (also cc -Zm). This is because -Zm code
doesn't like initialised static data outside of functions...

Added DeskLib:o.DeskLib_M, compiled with -Zm, for use in modules.
'_DeskLib__MODULE' is predefined for this build.

Added DeskLib:o.Debug.uniquefile_m - unique-file debugging compiled with cc -Zm.




17 Apr 1996

Added Debug_SetNestingIndentation( const char*). Subsequent ouptut from
Debug_Printf is indented with multiple copies of the specified string,
according to function-call nesting.

Added BackTrace libray, for getting information from the stack about
which functions are active etc.



29 Feb 1996

Added Debug_Assert for Event handlers being > 0x8000

27 Feb 1996

Removed close icon from TestApp's query window - caused illegal handle.


23 Feb 1996

Fixed bug in OS_ReadVarVal_ReadIntoBuffer - sys var is now read as a
string, and terminated according to returned length, rather than end of
buffer.


22 Feb 1996

Added #pragma -c0 to a Pane2.c.Open and Pane2.c.Pane2 - cc506 complains
about internal inconsistancy.


12 Feb 1996

Removed Debug__Dummy, and changed Debug_Dummyf macro to use printf. 
CC could generate AOF file which referenced debug_level even though it
wasn't used in the compiled code. Fixed this by #defining
Debug<n>_Printf straight to Debug_Dummyf.


09 Jan 1996

Minor changes to Menu2.


13 Dec 1995

Added jumpauto_lasterror.


12 Dec 1995

Added Error2_GetNewErrorType
Added File_EnsureDirectory, File_EnsureParentDirectory
Fixed bug in Menu2 - was calling non-existent menu2 choice-handler when
a menu2 had its own leafs.


01 Dec 1995

Added Error2_HandleAllSignals


29 Nov 1995

Changed Jump library.


19 Nov 1995

Added File_AllocLoad


18 Nov 1995

Made DeskMem use function pointer to the memory allocation functions.
This enables a program to change what functions it uses for static
memory at run-time. It also means that there is no need to replace
DeskMem at link-time.


17 Nov 1995

Moved DeskMem error-handling into a separate .c file.


2.35beta	16 Nov 1995

Added file '...Docs.Files', which lists and has comments on (nearly) all
the directory structure and files that make up DeskLib.


15 Nov 1995

Added DeskLib:o.Debug.DeskLib - a version of DeskLib compiled with
'DeskLib_DEBUG' predefined. Only the Menu2 (and one other I think)
library uses Debug_ calls.



14 Nov 1995

Made Serial, PDriver non-DLL sublibraries.

Made various libraries more SDLS compatible - many libraries called
atexit() or Event_Claim/Release() etc without using
_DeskLib_SDLS_dllEntry( <handlerfn>).

Eg Dialog, EventMsg, Font2, Import, Menu2, Pane2, Print, Save, Template
(font handling), Window.

Fixed a bug in Menu2 - could call the wrong selection-handler if a
non-leaf menuitem was chosen.



2.34	10 Nov 1995

Added Icon_InsertText, Window_IsOpen.

Added Wimp_E* macros - these are Wimp veneers which call Error2_Handle
if the SWI returns an error.

Changed DeskMem organisation a bit. To add a different static-memory
allocator system, just provide a replacement for DeskMem.c.XCalls.

Made JumpAuto_Error2Handler call Error2_Exit rather than
Error2_VerboseExit.

Added !DLMisc, for misc libraries not needed by DeskLib.

Replaced SWI library with a smaller assembler version. The old one is in
'!DLMisc'.

Moved Import library into the main DeskLib distribution, from !DLUser.

!DLUser is now empty..




07 Nov 1995

Removed 'do ... while (0)' construct in the JumpAuto_TryCatch macro.
This allows 'break' in trycode or catchcode, but means you shouldn't put
a ';' after the macro.

Made the Error2 signal-handler call signal(), to restore signal
handling's use of Error2_SignalHandler - ANSI signal handling is reset
to default after each signal.


05 Nov 1995

GFX.h: Added gfx_action_ enums for graphics plot actions.
Added ColourTrans_RGB, SetGCOL2,3.



2.33	02 Nov 1995

Changed directory structure of and some filenames in 'DeskLib.Docs.'

01 Nov 1995

Added '!DeskLib.sh.' directory, which contains some standard assembler
'header' files - 'RegDefs' and 'Macros'. Previously, every sub-library
directory had its own copy of these two files. Changed all .s files to
GET these new files, and deleted local versions.

Changed Error2 globalblock - now has just two fields, the error type and
a union which points to data. Errors which need some block of memory (eg
Error2_HandleTextf) now have their own static blocks of memory - see
DeskMem for an example.



31 Oct 1995

Added ColourTrans_ReturnColourNumber and ColourTrans_ReturnGCOL.
Added Menu_SetNotify macro.
Changed File_SetType to be an assembler veneer, returning (os_error*).
Added File_SetLoad, File_SetExec, File_CreateDirectory.

26 Oct 1995

Changed Error2_HandleTextf to use 'bytes' field in error2_block and make
the 'text' field point to the 'bytes' field.

SmallError: Removed all refereces to event_taskname



18 Oct 1995

Changed Jump DLLDef file.

Changed some Pane2 external definitions to start with Pane2__ or pane2__,
Removed Pane2's internal-only things from the DLLDef file.


15 Oct 1995

Added #ifndef __dl_xx_h to some headers.

2.32	12 Oct 1995

11 Oct 1995

Added __cplusplus to Window.h - it somehow missed out first time round...
Added __cplusplus to Filing.h
Added Error2_HandleText


05 Oct 1995

Added Menu_AddSubWindow macro.



03 Oct 1995

Added lots of 'const' to prototypes and altered source code accordingly.



02 Oct 1995

Moved Jump library into main '!DeskLib' library.

29 Sep 1995

Added JumpAuto_TryCatch macro. This enables code that looks very similar
to C++'s try-catch constructs.


28 Sep 1995

Added extra struct to button_type union for buttontype 10
Added button2_* macros

Added Str_StrNCpy0, and equivalent macro strncpy0



2.31

This version doesn't have any SDLS or Examples.




23 Sep 1995

New libraries in !DLUser:

SWI	Faster version of SWI.
Sort	Quicksort
Hash	Better hash library than previous version.



22 Sep 1995

Removed blank makefile from 'DeskLib.Docs.Blanks'.
Removed HelpCommnt directory from 'DeskLib.Docs.Blanks'.



21 Sep 1995

Added ListNewer command to '!DLSources.Bin.'.



20 Sep 1995

File	Added File_CheckError and File_XCheckError - simple macro veneers
	for Error2_Check( file_lasterror).

Added <DeskLib_Sources$Dir>.Scripts.Static.MakeLib2 and MkOList2 . These
use Libfile -i to add any new .o files to DeskLib, rather than remaking
the whole library.

Added Every2 program to <DeskLib_Sources$Dir>.Bin .

Added 'Jump' library. This (hopefully) provides SDLS-compatible
setjmp/longjmp. Also has easy-to-use macros for automating use of
set/longjmp, eg for use with the Error2 library.



13 Sep 1995

Filing
	Allowed a 'void *reference' to be sent to Filing_ScanDir(Dir),
	and added facility to 'prune' scans through the directory tree -
	if the start-dir function returns filing_scan_PRUNE.  Renamed
	the function-pointer typedefs used in Filing_ScanDir and
	Filing_ScanDirByDir.

KernelSWIs
	Added OS_ReadVarVal_GetLength, OS_ReadVarVal_ReadIntoBuffer,
	OS_ReadVarVal_AutoAlloc.



12 Sep 1995

objasm -throwback used in MMFs.



09 Sep 1995

Added Error2 library
Contains a simple error-handling mechanism. A few extra handlers are
provided to help bracket (os_err *) functions, BOOL functions etc.

Added Error3 library - uses Error2 and provides an Event_-style system
for claiming errors. ***Completely untested at the moment***

Added macros for every Wimp SWI veneer in WimpSWIs.h . These macros use
Error_XHandle to provide semi-error-handling Wimp SWI calls.

Made all library calls to Wimp_* use Wimp_e*, so that any error-handler
gets to see each error.

Made all libraries call DeskMem_Malloc/Calloc/Realloc/Free instead of
the <stdlib.h> functions.

Added DeskMem library whihc impla\ements the DeskMem functions (to use
malloc et al). The plan is to have alternative DeskMem libs (eg which se
Mem_ calls).



2.30 (02 Sep 1995)

