
FAMESPrintf()       - AutoDoc missing !
FAMESPrintfA()      - AutoDoc missing !
FAMEDivU64L()       - AutoDoc missing !
FAMEGetObjectSize() - AutoDoc missing !



                        FAME.library History
                        --------------------

V6.0
----

New FAME Config Feature functions:

  FAMEGetConfigType()       - Get the depending ConfigData type

  FAMEIsConfigModified()    - Check if depending ConfigData is modified


V6.0
----

New functions:

  FAMESPrintf()
  FAMESPrintfA()            - output formatted text into a buffer

  FAMEDivU64L()             - full 64-bit division

  FAMEGetObjectSize()       - get the byte size of any defined FAME object

FAME Config Feature functions implemented:

  FAMEObtainConfig()        - obtain a ConfigData structure

  FAMEReleaseConfig()       - release a ConfigData structure

  FAMERequestReset()        - reset a request

  FAMEReloadConfig()        - reload a ConfigData from disk

  FAMESaveConfig()          - immediately save

  FAMEModifyConfig()        - set a ConfigData structure to modified

  FAMESaveAllConfig()       - save all ConfigData structures now

  FAMELockConfig()          - lock a ConfigData structure

  FAMEAttemptLockConfig()   - attempt to lock a ConfigData structure

  FAMEUnLockConfig()        - unlock a locked ConfigData structure

  FAMEHandleConfigResults() - handle results of most functions listed above

  For more informations about the functions above read the AutoDocs and
  especially for the FAME Config Feature the FAMEDeveloper.guide or
  get the pre-release file called 'FAMECFPR.lha' from Aminet (comm/bbs).


V5.0
----

Since my Amiga now runs stable again (i finally kicked the CyberSCSI MK1 Module
*for ever*), it's now possible to continue development without daily data loss
due to frequently DMA trouble with data transferred from odd or WORD aligned
addresses, which was indeed knocking down everything (including corrupted
harddisk backups) for a long while.. (See also: V4.0 history)

FAME.library body rewritten. It now contains C functions as well as assembler
code. (Good bye ASM-One..)

Many new Object types added to FAMEAllocObject(). Now you may allocate almost
everything related to FAME using this function. The older FAME Object defines
have been replaced. You may still use 'em, but they're obsolete now due to the
newer defines.

FAME.library now also opens Utility.library and Intuition.library. Both Library
Bases were added to the FAME Library Base.

New Functions:

  FAMEAtol()       - Finally added again: convert numeric string to long
  FAMEMulU64L()    - Multiply two 64-Bit numbers
  FAMENum64Comp()  - Compare two 64-Bit numbers
  FAMEStrCat()     - Merge two strings
  FAMEStrTo64()    - Convert numeric string to 64-Bit number
  FAMEIsEqual64()  - \
  FAMEIsLower64()  -  > additional 64-Bit compare functions
  FAMEIsHigher64() - /

The FAMENumToStr() / FAMENum64ToStr() source has also been trashed by my old
SCSI controller. Some few changes weren't detected as errors by the Assembler,
so since V?.?, these functions didn't work correctly. Now both accept NULL for
BufSize again, where the latest versions rejected such calls due to these
undetected changes. Also, formatting behaviour was corrupted. FNSF_LEFTFORMAT
went wrong with FAMENumToStr(), FNSF_RIGHTFORMAT & FNSF_CENTERFORMAT with
FAMENum64ToStr(). Other errors have been detected & removed while assembling/
compiling all sources again.

Fixed a type mismatch in the C includes for FAMEAdd64() / FAMESub64(), where the
SrcHi and SrcLo args were swapped. This had no effect since most callers pass
their args as stated in the autodoc description, where everything was okay.

Removed all TAB chars from history, autodoc & all library include files.

Currently, i'm working on several old & new things, including a new public shared
function library, containing all FAME.library functions which don't belong to
FAME BBS only, and several additional functions which i found worth to put
into a public Library. Initial release date will be between 12'97 and 1'98.


V4.10
-----

Finally, the file upload bug was removed, where two callers could upload
the same file at the same time. It wasn't really a bug, since FAMEPostFile()
always returned 0 and IoErr = ERROR_OBJECT_IN_USE if you called this function
using the FPFF_CHECKONLY flag.
Now, FAMEPostFile() (called using FPFF_CHECKONLY) also returns the matching
directory if it failed to lock the file because of ERROR_OBJECT_IN_USE.

Sorry for the update delay, but there is only a handsome of registered FAME
copies out yet, and i have to earn some money in between writing FAME functions.
I really hope that "our" Amiga will survive and succeed and that i'll never
have to write such applications on PC "systems". I just love AmigaOS, and
i'll continue Amiga development -for sure.


V4.00
-----

Fixed FAMEPrivate2() and FAMEPrivate3() again, where, since the last "fix",
some data was written to ExecBase instead of FAMEBase when shutting down
FAME BBS nodes..

New function: FAMECutANSI(), which removes ANSI control sequences off strings.

Fixed some more trashed bytes in the autodoc file. Not long ago, my newly
installed SCSI controller corrupted lots of files on my harddisk on writing
-including my harddisk backup- before i detected what's going on. Some files
are still affected, and there will be no doubt some more corrupted bytes in
the autodoc file i couldn't find yet. Mostly, two bytes of data were cut off
here, inserted there. Also, the FAMEStrChrCase() source was affected that way
that the assembler didn't report any error. Fixed.


V3.1
----

FAMEPrivate3() crashed with V3.0. Fixed.


V3.00
-----

FAMEDosMove() fixed again. If the source file was copied to destination
(instead of renaming), the destination file was still write-locked while
FAME.library tried to modify file comment & protection bits.
Furthermore, FAMEDosMove() now fails if SetComment() or SetProtection() wasn't
successful. All changes also affect FAMEPostFile().

New Function: FAMENum64ToStr() (converts 64-bit numbers to decimal Strings).

FAMENumToStr() fixed. The opened locale structure wasn't closed again.

Replaced all library references to the obsolete ExecBase->ThisTask field
by FindTask(NULL) calls.

FAME library structure renamed to struct FAMELibrary, FAME_protos.h now
includes clib/FAME_protos.h, pragmas/FAME_pragmas.h and libraries/FAME.h
itself, so that you only need to include the proto file. FAME.library
must still be opened and closed within your source code; the correct
definition for FAMEBase in your source is struct FAMELibrary * FAMEBase.

        Example:
        --------

        #include <proto/FAME.h>
        struct FAMELibrary * FAMEBase;

        if (struct Library * FAMEBase = OpenLibrary(FAMENAME,MyNeededMinVer))
        {
         CloseLibrary(FAMEBase);
        }


V2.10
-----

FAMEAvailExe() UnLocked obsolete Locks previously used with OpenFromLock().
Result: MungWall hits. Fixed.


V2.00
-----

FAMEDosMove() now may also copy files. So FAMEDosMove() is used for both
moving and copying. FAMEDosMove() and FAMEPostFile() now may also keep
the source file comment and protection bits. Requested by Elgun.

FAMEChrCut(), FAMEChrCutCase(), FAMEStrCut(), FAMEStrCutCase(), FAMEStrFil()
and FAMESwapRedWhite() now return results (string pointers) instead of nothing
(VOID). The library version had to be increased by 1. However, everything
stays downward-compatible.

FAMEPostFile() is now safe against NULL pointers passed as ULPathList argument.

Autodocs: converted all tabs to spaces.


V1.10
------

Fixed another bug with FAMEDosMove(). If a file had to be copied
(because renaming not possible across devices), and the destination name
was a file name (not a valid directory name to add the source file name
to), the source file was not unlocked.

The FAMEExecuteDir() autodoc description contained some rubbish at the
bottom which i just forgot to delete, or which was accidently inserted.
Who knows ? :^)


V1.00 (first official public release)
-------------------------------------

FAMELoadFilePooled() was named FAMELoadFile() here and there. Fixed.
(i just *hate* snapping!)

FAMEPostFile() rewritten from scratch. The FPF_NOCHECK flag has been
renamed to FPF_REPLACE, because this flag now also causes the library
to delete all existing files of that name it finds in any of the given
destination directories. Sorry for that change.

Fixed a bug in FAMEExecuteDir() (Enforcer hits when passing NULL for Tags).

FAMEExecuteDir() now also executes all CLI scripts it finds in the
given path (script bit must be set).

FAMEFreeDiskSpace() and FAMEGetDevInfoList() optimized a *little* bit.

Fixed a bug in FAMEDosMove(). If renaming failed, the second attempt to
rename wasn't performed (first attempt w. moving "c:dir" to "ram:test"
tries "c:dir" to "ram:test/dir"; second attempt shall try moving "c:dir"
to "ram:test", which wasn't done).

After some fixes and changes, FAMEPrivate7() was made public and is now
named FAMEOverallBytes().


V0.63
-----

Finally, i found the time to test FAMELoadFile() and FAMELoadFilePooled()
(yeah, library version is still below 1.0, which means everything may
be untested), and fixed another bug where the file's FIB wasn't written
to the FAMEFile/FAMEPoolFile structure in some cases.


V0.62
-----

New function: FAMELoadFilePooled().

FAMELoadFile() fixed. The whole function didn't work because the FileName
argument got lost before accessing the file.

Both LoadFile functions now initialize ffil_FH/fpof_HF to NULL if the
FLFF_KEEPFH flag isn't set.


V0.61
-----

Fixed a last-minute bug with FAMEDeletePool(), which crashed if the pool
to be freed had no child pools. Now we have tested the pool functions
by some test code which randomly allocated/freed up to 25 mio. randomly
sized structures. Looks good now. :^)

Added some little things to the pool memory autodocs.

Added FAMEUlPathList structure to the public FAME.library includes.


V0.6
----

FAME memory pool functions completely rewritten from scratch. (shiver..)
Several things have been changed; refer to the autodocs. However, the pool
functions might work now (please test.. 0^)

Release Note:
~~~~~~~~~~~~~
If the pool functions have been successfully tested with some Programs,
FAME.library V1.0 will be released as freely distributable, public shared
library; free to use with any non-commercial program. Also, there will be
no need for anybody to become a registered FAME BBS user to use FAME.library
with own programs. This includes Alien BBS Systems.. :^()

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

V0.5
----

Corrected autodoc description for FAMEFileCopy(). Setting SrcSize to -1
will copy the whole file; the autodoc description mischanged SrcSize with
MaxMem for this one.

FAMEPrivate8() is now a public function named FAMEPostFile().
Refer to the autodoc description for the FAMEUlPathList structure used
with this function. The FAMEUlPathList definitions will be added to the
FAMEPublicStructs.h/.i include files with the next FAME include update..


Added 10 new object types for FAMEAllocObject(). Now you may allocate the
following Objects (structures):

No. Name
---------------------

 1. FAMEDoorMessage
 2. FAMEMailHeader
 3. FAMEMailStat
 4. FAMEToolPortMsg
 5. FAMECoProcessMsg
 6. FAMEExternEditor
 7. FAMEToolNotifyMsg
 8. FAMEExpansion
 9. FAMECnfExpansion
10. FAMEUser
11. FAMEUserKeys
12. FAMEUserConf
13. FAMECoProcess
14. FAMEDestNodes
15. FAMEInfoList
16. FAMEOnlineMsg
17. FAMEOLMString

Note: since V5.0, these defines are OBSOLETE.

All objects come fully initialized now. For Example, FAMEDoorMessage no longer
needs initialization of any System fields, like MN_SIZE.
