@database   stormamiga_lib_e.guide
@author     "Matthias Henze / Kai Fleischer"
@$VER:      stormamiga_lib_e.guide 3.0 (15.08.98)

@SMARTWRAP
@index guideIndex

/// Contents
@node Main Contents
@{jcenter}

@{b}@{fg shine}stormamiga.lib Version 44.01 ( 15.08.1998 )@{par}

Copyright İ 1996/98 by CyberdyneSystems@{par}

written by Matthias Henze@{fg text}@{ub}@{par}

@{b}@{FG fill}S H A R E W A R E@{FG text}@{ub}

@{code}@{jleft}
  @{" Introduction     " link Introduction}    General Information about stormamiga.lib.

  @{" Special Features " link "Special Features"}    Why should I use stormamiga.lib?

  @{" Requirements     " link Requirements}    What do I need to use stormamiga.lib?

  @{" Installation     " link Installation}    How to install stormamiga.lib?

  @{" Functions        " link Functions}    Description of all functions.

  @{" Hints            " link Hints}    Tips and Tricks.

  @{" Examples         " link Examples}    Description of the examples.

  @{" Known Bugs       " link "Known Bugs"}    Known bugs and misbehaviours.

  @{" Updates          " link Updates}    How to update.

  @{" Restrictions     " link Restrictions}    Restrictions of the Demo version.

  @{" Registration     " link Registration}    How can I regsiter?

  @{" Copyright        " link Copyright}    Copyright notice.

  @{" History          " link History}    Brief history.

  @{" Future           " link Future}    Future developments.

  @{" Thanks           " link Thanks}    Thanks to ... .

  @{" Author           " link Author}    How to contact the author.

  @{" Index            " link guideIndex}    Index of this documentation.
@endnode
///
/// Introduction
@node Introduction
@{b}@{fg shine}Introduction:@{par}
~~~~~~~~~~~~~@{fg text}@{ub}@{par}

The "stormamiga.lib" is a linkerlibrary for StormC.
It replaces the linkerlibraries "amiga.lib",
"storm020.lib", "math020.lib", "math881.lib", "math040.lib",
"math060.lib" and the Startupcode "startup.o". For StormC
version 3.x the following linkerlibraries are replaced "stormclibstartup020.lib",
"stormcstartup020.lib" and "stormcsupport020.lib" too.@{par}
The "stormamiga.lib" is completely written in Assembler.
Programs linked with it become really fast and small.@{par}

The goal is to replace all functions of "amiga.lib" that are not
part of the pragma files and all functions of "storm.lib" without
the a6 small datamodell with small and fast assembler functions.
Furthermore I'm going to implement some special functions
(GNU C, SAS C, DICE, Maxon C++) that allow easier programming.@{par}
So on March the 18th 1996 I decided to write "stormamiga.lib".@{par}
@endnode
///
/// Special Features
@node "Special Features"
@{b}@{fg shine}Special features of "stormamiga.lib":@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

@{b}1.)@{ub}@{par}
written in Assembler; programs linked with "stormamiga.lib" become very
small and fast@{par}

@{b}2.)@{ub}@{par}
special versions of @{" startupcode " link Startupcode} for far and near code for "Ansi C" and "C++";
programs become even shorter@{par}

@{b}3.)@{ub}@{par}
special versions of "stormamiga.lib" for MC68EC020+, MC68881+, MC68040+
and MC68060; "stormamiga_040.lib" is up to 22 times faster than "math040.lib"
and shorter@{par}

@{b}4.)@{ub}@{par}
support for near code model; you can optimize your program 'til the last byte@{par}

@{b}5.)@{ub}@{par}
the "stormamiga.lib" contains many @{" functions " link functions} (e.g.: "access", "chdir",
"sleep", "strdup", "isnan" etc.) of "Unix" and "Posix", some specialfunctions
(e.g.: "strbpl", "strins" etc.) of the compilers "GNU C", "SAS C", "DICE" and "Maxon C++"
and supports path in Unix-format; due to this the change of the compiler becomes much easier@{par}

@{b}6.)@{ub}@{par}
the definition of @{" STORMAMIGA_INLINE " link Inlinefunctions} generates inlinefunctions for
many systemcalls (e.g.: "putc", "GetAPen" etc.)@{par}

@{b}7.)@{ub}@{par}
the definition of @{" STORMAMIGA_STACK " link STORMAMIGA_STACK} xxxx (xxxx amount of stackmemory)
sets the stacksize your program wants to use@{par}

@{b}8.)@{ub}@{par}
programs linked with "stormamiga.lib" are automatically startable from Workbench if
@{" STORMAMIGA_NOWB " link STORMAMIGA_NOWB} is not defined@{par}

@{b}9.)@{ub}@{par}
"stormamiga.lib" has got some reduced @{" functions " link functions} (without math support)
(e.g.: "printf_", "scanf_" etc.); programs become shorter and faster@{par}

@{b}10.)@{ub}@{par}
the definition of @{" STORMAMIGA_OS3 " link "OS3 functions"} generates AmigaOS 3.x optimized
versions of many functions (e.g.: "malloc", "free" etc.)@{par}

@{b}11.)@{ub}@{par}
special versions of string functions that are aware of the german
language (e.g.: "islower_d", "toupper_d" etc.) and special output
functions for german (e.g.: "strftime_d", "asctime_d" etc.); have
a look at @{" german functions " link "german functions"}@{par}

@{b}12.)@{ub}@{par}
"stormamiga.lib" contains some special functions (e.g.: "button",
"max_Width" etc.) that simplifies control of mouse or window handling
dramatically; so even unskilled Amiga programmers can use such things
easiely; have look at @{" functions " link functions}@{par}

@{b}13.)@{ub}@{par}
"stormamiga.lib" is low priced@{par}
@endnode
///
/// Requirements
@node Requirements
@{code}@{b}@{fg shine}Requirements:
~~~~~~~~~~~~~@{fg text}@{ub}

- An Amiga
- AmigaOS 2.0 (V37) or higher
- MC68EC020 or higher
- StormC V.2.0 or higher
@endnode
///
/// Installation
@node Installation
@{b}@{fg shine}Installation:@{par}
~~~~~~~~~~~~~@{fg text}@{ub}@{par}

Allthough there are different versions of "stormamiga.lib" (named
"stormamiga.lib", "stormamiga_nc.lib", etc.) this guide calls them
"stormamiga.lib". The different startupcodes ("stormamiga_startups.o",
"stormamiga_nc_startups.o", etc.) are usually called "stormamiga_startups.o".@{par}

The "stormamiga.lib" is installed by the Installer. StormC has to be installed
before you can install "stormamiga.lib".@{par}
Run "HD-Install_xxx" (xxx is your prefered language) from Workbench
and follow the instructions.@{par}
After the succesfull installation start StormC in order to change
your configuration. Open a new or an existing project and insert
the "stormamiga.lib" in first place. If you want to create shared libraries the
"stormamiga_library.lib" has to be inserted before "stormamiga.lib". If you want
to use the small codemodell you should include the nc-version of "stormamiga.lib"
(e.g.: "stormamiga_nc.lib") that is optimized for the small codemodell.@{par}
Then choose a startupcode. Choose the "Linkeroptions" from the "Preferences"
menu. Select "Own startupcode" and the startupcode you want to use
(e.g.: "stormamiga_startups+.o" for C or "stormamiga_C++_startups+.o" for C++).@{par}
In order to use the special functions of "stormamiga.lib" you have
to include "stormamiga.h" in your source code (#include <stormamiga.h>).
Last but not least you have to define @{" STORMAMIGA " link STORMAMIGA}.@{par}
@endnode
///
/// Function overview
@node "Function overview"
@{b}@{fg shine}Overview of supported functions:@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

@{fg shine}functions of "stormamiga.lib", of "stormamiga_nc.lib",of "stormamiga_881.lib",
of "stormamiga_nc_881.lib",of "stormamiga_040.lib", of "stormamiga_nc_040.lib"of
"stormamiga_060.lib" and of "stormamiga_nc_060.lib"@{fg text}@{par}
@{" amiga.lib functions " link "amiga.lib functions"}@{" assert functions    " link "assert functions"}@{" ctype functions     " link "ctype functions"}
@{" dirent functions    " link "dirent functions"}@{" fcntl functions     " link "fcntl functions"}@{" internal functions  " link "internal functions"}
@{" class filebuf       " link "class filebuf"}@{" class fstream       " link "class fstream"}@{" class ifstream      " link "class ifstream"}
@{" class ios           " link "class ios"}@{" class istream       " link "class istream"}@{" class ofstream      " link "class ofstream"}
@{" class ostream       " link "class ostream"}@{" class streambuf     " link "class streambuf"}@{" math functions      " link "math functions"}
@{" new functions       " link "new functions"}@{" resource functions  " link "resource functions"}@{" setjmp functions    " link "setjmp functions"}
@{" signal functions    " link "signal functions"}@{" other functions     " link "other functions"}@{" special functions   " link "special functions"}
@{" stat functions      " link "stat functions"}@{" stdio functions     " link "stdio functions"}@{" stdlib functions    " link "stdlib functions"}
@{" string functions    " link "string functions"}@{" time functions      " link "time functions"}@{" unistd functions    " link "unistd functions"}@{par}

@{fg shine}functions of "stormamiga-library.lib" and of "stormamiga-library_nc.lib"@{fg text}@{par}
@{" internal functions  " link internal-lib-functions}@{" new functions       " link new-lib-functions}@{" other functions     " link other-lib-functions}
@{" stdlib functions    " link stdlib-lib-functions}@{" time functions      " link time-lib-functions}@{" unistd functions    " link unistd-lib-functions}@{par}
@endnode

@node "amiga.lib functions"
@{code}@{fg shine}amiga.lib functions@{fg text}

AddTOF()         ArgArrayDone()   ArgArrayInit()   ArgInt()
ArgString()      BeginIO()        CallHook()       CallHookA()
CoerceMethod()   CoerceMethodA()  CreatePort()     CreateTask()
CreateExtIO()    CreateStdIO()    DeleteExtIO()    DeletePort()
DeleteStdIO()    DeleteTask()     DoMethod()       DoMethodA()
DoSuperMethod()  DoSuperMethodA() FastRand()       FreeIEvents()
HookEntry()      HotKey()         InvertString()   LibAllocPooled()
LibCreatePool()  LibDeletePool()  LibFreePooled()  NewList()
RangeRand()      RemTOF()         SetSuperAttrs()  SPRINTF()
TimeDelay()      VSPRINTF()       waitbeam()
@endnode

@node "assert functions"
@{code}@{fg shine}assert functions@{fg text}

assert()        assert_()       do_assert()     do_assert_()
@endnode

@node "ctype functions"
@{code}@{fg shine}ctype functions@{fg text}

isalnum()       isalnum_d()     isalpha()       isalpha_d()
iscntrl()       isdigit()       isgraph()       islower()
islower_d()     isprint()       isprint_d()     ispunct()
ispunct_d()     isspace()       isupper()       isupper_d()
isxdigit()      tolower()       tolower_d()     toupper()
toupper_d()     which_xdigit()
@endnode

@node "dirent functions"
@{code}@{fg shine}dirent functions@{fg text}

closedir()      opendir()       readdir()       rewinddir()
@endnode

@node "internal functions"
@{code}@{fg shine}internal functions@{fg text}

Add64()                         blocksize_a2_d2()
Cmp64()                         dotimer()
exitNearData()                  EXIT_0_Main()
EXIT_4_free()                   EXIT_4_free_3()
EXIT_9_AtExitFunctionsCaller    EXIT_9_Stack()
geta4()                         GetBaseReg()
initNearData()                  INIT_0_InitExceptionHandling
INIT_5_clock()                  INIT_5_timer
INIT_9_Stack()                  lib_64bit_shl()
lib_64bit_shr()                 lib_catch()
lib_catchclass()                lib_destruct()
lib_destruct_a0()               lib_rethrow()
lib_throw()                     main() (Ansi C)
main() (C++)                    main__()
Neg64()                         SDiv64()
SDivMod64()                     set_terminate()
set_unexpected()                SMod64()
SMult64()                       Sub64()
terminate()                     UDiv64()
UDivMod64()                     UMod64()
UMult64()                       unexpected()
wbmain() (Ansi C)               wbmain() (C++)
wbmain_() (Ansi C)              wbmain_() (C++)

@{b}Autolib functions@{ub}
EXIT_3_AmigaGuideBase()         EXIT_2_AslBase()
EXIT_3_BulletBase()             EXIT_3_ColorWheelBase()
EXIT_2_CxBase()                 EXIT_3_DataTypesBase()
EXIT_2_DiskfontBase()           EXIT_1_DOSBase()
EXIT_2_ExpansionBase()          EXIT_2_GadToolsBase()
EXIT_3_GradientSliderBase()     EXIT_2_GfxBase()
EXIT_2_IconBase()               EXIT_2_IFFParseBase()
EXIT_2_IntuitionBase()          EXIT_2_KeymapBase()
EXIT_2_LayersBase()             EXIT_3_LocaleBase()
EXIT_3_LowLevelBase()           EXIT_2_MathBase()
EXIT_2_MathIeeeDoubBasBase()    EXIT_2_MathIeeeDoubTransBase()
EXIT_2_MathIeeeSingBasBase()    EXIT_2_MathIeeeSingTransBase()
EXIT_2_MathTransBase()          EXIT_2_MUIMasterBase()
EXIT_3_NVBase()                 EXIT_3_RealTimeBase()
EXIT_2_ReqToolsBase()           EXIT_2_RexxSysBase()
EXIT_3_TranslatorBase()         EXIT_1_UtilityBase()
EXIT_2_VersionBase()            EXIT_2_WizardBase()
EXIT_2_WorkbenchBase()          INIT_3_AmigaGuideBase()
INIT_2_AslBase()                INIT_3_BulletBase()
INIT_3_ColorWheelBase()         INIT_2_CxBase()
INIT_3_DataTypesBase()          INIT_2_DiskfontBase()
INIT_1_DOSBase()                INIT_2_ExpansionBase()
INIT_2_GadToolsBase()           INIT_3_GradientSliderBase()
INIT_2_GfxBase()                INIT_2_IconBase()
INIT_2_IFFParseBase()           INIT_2_IntuitionBase()
INIT_2_KeymapBase()             INIT_2_LayersBase()
INIT_3_LocaleBase()             INIT_3_LowLevelBase()
INIT_2_MathBase()               INIT_2_MathIeeeDoubBasBase()
INIT_2_MathIeeeDoubTransBase()  INIT_2_MathIeeeSingBasBase()
INIT_2_MathIeeeSingTransBase()  INIT_2_MathTransBase()
INIT_2_MUIMasterBase()          INIT_3_NVBase()
INIT_3_RealTimeBase()           INIT_2_ReqToolsBase()
INIT_2_RexxSysBase()            INIT_3_TranslatorBase()
INIT_1_UtilityBase()            INIT_2_VersionBase()
INIT_2_WizardBase()             INIT_2_WorkbenchBase()

@{b}IO functions@{ub}
amigaclose()                    amigaeof()
amigaflush()                    amigagetc()
amigagetcunget()                amigaopen()
amigaputc()                     amigaread()
amigareadunget()                amigaseek()
amigaungetc()                   amigawrite()
double_in()                     double_out()
EXIT_5_fstream()                EXIT_5_InitFiles()
EXIT_5_InitStdIOFiles()         EXIT_6_InitPOSIXIOFiles()
EXIT_9_chdir()                  form_in()
form_in64()                     form_in_()
form_in64_()                    form_out()
form_out64()                    form_out_()
form_out64_()                   getch()
INIT_0_InitFiles()              INIT_0_NEAR_CODE_StdioFiles()
INIT_5_fstream()                INIT_5_InitStdIOFiles()
INIT_6_InitPOSIXIOFiles()       INIT_9_chdir()
putch()                         udiv_64()
ungetch()                       UnixToAmigaPath()
un_signed_out()

@{b}math functions@{ub} (only in the version for MC68EC020+)
lib_double2float()              lib_double2int()
lib_float2double()              lib_float2int()
lib_float_add()                 lib_float_cmp()
lib_float_div()                 lib_float_mult()
lib_float_neg()                 lib_float_sub()
lib_float_tst()                 lib_int2double()
lib_int2float()                 

@{b}internal data@{ub}
AmigaGuideBase                  AslBase
BulletBase                      ColorWheelBase
CxBase                          DataTypesBase
DiskfontBase                    DOSBase
errno                           ExpansionBase
fileList                        GadToolsBase
GradientSliderBase              GfxBase
IconBase                        IFFParseBase
IntuitionBase                   KeymapBase
LayersBase                      LocaleBase
LowLevelBase                    MathBase
MathIeeeDoubBasBase             MathIeeeDoubTransBase
MathIeeeSingBasBase             MathIeeeSingTransBase
MathTransBase                   MUIMasterBase
NVBase                          RealTimeBase
ReqToolsBase                    RexxSysBase
SaveSP                          signal_dat
std__err                        std__in
std__out                        tmpnamList
tmpnamNext                      TranslatorBase
UtilityBase                     VersionBase
WBMsg                           WizardBase
WorkbenchBase                   __ctypetable
@endnode

@node "class filebuf"
@{code}@{FG shine}class filebuf@{FG text}

@{b}Constructors@{ub}
filebuf::filebuf()

@{b}Destructors@{ub}
filebuf::~filebuf()

@{b}Methods@{ub}
filebuf *open(const char *, int)
filebuf *filebuf::close()
filebuf::seekoff(long, enum seek_dir__ios, int)
filebuf::seekpos(streampos, int)
filebuf::setbuf(char *, uint)
filebuf::sync()
filebuf::doallocate()
filebuf::overflow(int)
filebuf::underflow()
filebuf::xsputn(cchar *, int)
filebuf::xsgetn(char *, int)
filebuf::pbackfail(int)
@endnode

@node "class fstream"
@{code}@{FG shine}class fstream@{FG text}

@{b}Constructors@{ub}
fstream::fstream()
fstream::fstream(cchar *, int)

@{b}Methods@{ub}
fstream::open(const char *, int)
fstream::close()
fstream::setbuf(char *, uint)
@endnode

@node "class ifstream"
@{code}@{FG shine}class ifstream@{FG text}

@{b}Constructors@{ub}
ifstream::ifstream()
ifstream::ifstream(cchar *, int)

@{b}Methods@{ub}
ifstream::open(const char *, int)
ifstream::close()
ifstream::setbuf(char *, uint)
@endnode

@node "class ifstream"
@{code}@{FG shine}class ifstream@{FG text}

@{b}Constructors@{ub}
ifstream::ifstream()
ifstream::ifstream(cchar *, int)

@{b}Methods@{ub}
ifstream::open(const char *, int)
ifstream::close()
ifstream::setbuf(char *, uint)
@endnode

@node "class ios"
@{code}@{FG shine}class ios@{FG text}

@{b}Methods@{ub}
ios::bitalloc()
ios::init(streambuf *)
ios::xalloc()

@{b}Flags@{ub}
dec(ios &)
hex(ios &)
oct(ios &)
@endnode

@node "class istream"
@{code}@{FG shine}class istream@{FG text}

@{b}Constructors@{ub}
istream::istream(streambuf *b)

@{b}Methods@{ub}
istream::ipfx(int)
istream::get()
istream::peek()
istream::operator >>(char &)
istream::operator >>(uchar &)
istream::operator >>(schar &)
istream::operator >>(uchar *)
istream::operator >>(schar *)
istream::operator >>(char *)
istream::operator >>(short &)
istream::operator >>(ushort &)
istream::operator >>(int &)
istream::operator >>(uint &)
istream::operator >>(long &)
istream::operator >>(ulong &)
istream::operator >>(float &)
istream::operator >>(double &)
istream::operator >>(long double &)
istream::operator >>(istream &(*f)(istream &))
istream::operator >>(ios &(*f)(ios &))
istream::get(char *, int, char)
istream::get(uchar *, int, char)
istream::get(schar *, int, char)
istream::get(schar &)
istream::get(uchar &)
istream::get(char &)
istream::getline(char *, int, char)
istream::getline(uchar *, int, char)
istream::getline(schar *, int, char)
istream::ignore(int, int)
istream::read(uchar *, int)
istream::read(schar *, int)
istream::read(char *, int)
istream::seekg(streampos)
istream::seekg(streamoff, enum seek_dir__ios)
isteam &ws(istream &)
@endnode

@node "class ofstream"
@{code}@{FG shine}class ofstream@{FG text}

@{b}Constructors@{ub}
ofstream::ofstream()
ofstream::ofstream(const char *, int)

@{b}Methods@{ub}
ofstream::open(const char *, int)
ofstream::close()
ofstream::setbuf(char *, uint)
@endnode

@node "class ostream"
@{code}@{FG shine}class ostream@{FG text}

@{b}Constructors@{ub}
ostream::ostream(streambuf *)

@{b}Methods@{ub}
ostream::opfx()
ostream::osfx()
ostream::operator <<(schar)
ostream::operator <<(uchar)
ostream::operator <<(char)
ostream::operator <<(cuchar *)
ostream::operator <<(cschar *)
ostream::operator <<(cchar *)
ostream::operator <<(short)
ostream::operator <<(ushort)
ostream::operator <<(int)
ostream::operator <<(uint)
ostream::operator <<(long)
ostream::operator <<(ulong)
ostream::operator <<(float)
ostream::operator <<(double)
ostream::operator <<(void *)
ostream::flush();
ostream::seekp(streampos, enum seek_dir__ios)
ostream::seekp(streamoff, enum seek_dir__ios)
ends(ostream &)
endl(ostream &)
@endnode

@node "class streambuf"
@{code}@{FG shine}class streambuf@{FG text}

@{b}Constructors@{ub}
streambuf::streambuf()
streambuf::streambuf(char *, int)

@{b}Destructors@{ub}
streambuf::~streambuf()

@{b}Methods@{ub}
streambuf *streambuf::setbuf(char *, ulong)
streambuf::setbuffer(char *, ulong, int)
streambuf::doallocate()
streambuf::sgetn(char *, int)
streambuf::sputn(cchar *, int)
streambuf::overflow(int)
streambuf::underflow()
streambuf::xsgetn(char *, int)
streambuf::xsputn(cchar *, int)
@endnode


@node "math functions"
@{code}@{fg shine}math functions@{fg text}

acos()          asin()          atan()          atan2()
ceil()          cos()           cosh()          exp()
fabs()          floor()         fmod()          frexp()
isinf()         isnan()         ldexp()         log()
log10()         modf()          pow()           sin()
sinh()          sqrt()          tan()           tanh()
@endnode

@node "new functions"
@{code}@{fg shine}new functions@{fg text}

set_new_handler()
@endnode

@node "resource functions"
@{code}@{fg shine}resource functions@{fg text}

getrusage()
@endnode

@node "setjmp functions"
@{code}@{fg shine}setjmp functions@{fg text}

longjmp()       setjmp()
@endnode

@node "signal functions"
@{code}@{fg shine}signal functions@{fg text}

raise()         signal()
@endnode

@node "special functions"
@{code}@{fg shine}special functions@{fg text}

button()        button_al()     button_ar()     button_bl()
button_br()     divs64()        divsl()         divu64()
divul()         max_Height()    max_Width()     muls()
muls64()        mulu()          mulu64()        waitbutton()
waitbutton_al() waitbutton_ar() waitbutton_bl() waitbutton_br()
@endnode

@node "stat functions"
@{code}@{fg shine}stat functions@{fg text}

chmod()         fstat()         lstat()         mkdir()
stat()
@endnode

@node "other functions"
@{code}@{FG shine}other functions@{FG text}

cinfilebuf::cinfilebuf()
cinfilebuf::~cinfilebuf()
coutfilebuf::coutfilebuf()
coutfilebuf::~coutfilebuf()
operator new(size_t)
operator delete(void, size_t)
@endnode

@node "stdio functions"
@{code}@{fg shine}stdio functions@{fg text}

clearerr()      fclose()        feof()          ferror()
fflush()        fgetc()         fgetpos()       fgets()
fopen()         fprintf()       fprintf64()     fprintf_()
fprintf64_()    fputc()         fputs()         fputstr()
fread()         freopen()       fscanf()        fscanf64()
fscanf_()       fscanf64_()     fseek()         fsetpos()
ftell()         fwrite()        getc()          getchar()
gets()          getw()          perror()        printf()
printf64()      printf_()       printf64_()     putc()
putchar()       puts()          putw()          remove()
rename()        rewind()        scanf()         scanf64()
scanf_()        scanf64_()      setbuf()        setbuffer()
setlinebuf()    setvbuf()       snprintf()      snprintf64()
snprintf_()     snprintf64_()   sprintf()       sprintf64()
sprintf_()      sprintf64_()    sscanf()        sscanf64()
sscanf_()       sscanf64_()     tmpfile()       tmpnam()
ungetc()        vfprintf()      vfprintf64()    vfprintf_()
vfprintf64_()   vfscanf()       vfscanf64()     vfscanf_()
vfscanf64_()    vprintf()       vprintf64()     vprintf_()
vprintf64_()    vscanf()        vscanf64()      vscanf_()
vscanf64_()     vsnprintf()     vsnprintf64()   vsnprintf_()
vsnprintf64_()  vsprintf()      vsprintf64()    vsprintf_()
vsprintf64_()   vsscanf()       vsscanf64()     vsscanf_()
vsscanf64_()
@endnode

@node "stdlib functions"
@{code}@{fg shine}stdlib functions@{fg text}

abort()         abort__STANDARD() abs()           atexit()
atof()          atoi()            atol()          atoll()
bsearch()       calloc()          div()           exit()
free()          free_3()          getenv()        inttostr()
labs()          ldiv()            llabs()         llongtostr()
malloc()        malloc_3()        qsort()         rand()
realloc()       srand()           strtod()        strtol()
strtoll()       strtoul()         strtoull()      system()
uinttostr()     ullongtostr()
@endnode

@node "string functions"
@{code}@{fg shine}string functions@{fg text}

bcmp()          bcopy()         bzero()         ffs()
index()         memccpy()       memchr()        memcmp()
memcpy()        memmove()       memset()        rindex()
stpchr()        stpcpy()        strbpl()        strcasecmp()
strcasecmp_d()  strcat()        strchr()        strcmp()
strcpy()        strcspn()       strdup()        strerror()
stricmp()       stricmp_d()     strins()        strlen()
strlower()      strlower_d()    strlwr()        strlwr_d()
strncasecmp()   strncasecmp_d() strncat()       strncmp()
strncpy()       strncpyn()      strnicmp()      strnicmp_d()
strpbrk()       strrchr()       strsep()        strspn()
strstr()        strtok()        strupper()      strupper_d()
strupr()        strupr_d()      strxfrm()       swab()
@endnode

@node "time functions"
@{code}@{fg shine}time functions@{fg text}

asctime()       asctime_d()     clock()         ctime()
ctime_d()       difftime()      gmtime()        mktime()
strftime()      strftime_d()    time()          times()
utime()         utimes()
@endnode

@node "unistd functions"
@{code}@{fg shine}unistd functions@{fg text}

access()        chdir()         close()         getcwd()
getwd()         lseek()         mktemp()        read()
rmdir()         sleep()         unlink()        usleep()
write
@endnode

@node "fcntl functions"
@{code}@{fg shine}fcntl functions@{fg text}

creat()         open()
@endnode

@node internal-lib-functions "internal functions"
@{code}@{fg shine}internal functions@{fg text}

EXIT_4_free()                   EXIT_4_free_3()
EXIT_9_Stack()                  INIT_5_clock()
INIT_9_Stack()                  

@{b}shared-librarie functions@{ub}
abortLibInit()                  LibClose()
LibExpunge()                    LibInit()
LibInitError()                  LibNull()
LibOpen()                       __LibClose()
__LibOpen()

@{b}Autolib functions@{ub}
EXIT_3_AmigaGuideBase()         EXIT_2_AslBase()
EXIT_3_BulletBase()             EXIT_3_ColorWheelBase()
EXIT_2_CxBase()                 EXIT_3_DataTypesBase()
EXIT_2_DiskfontBase()           EXIT_1_DOSBase()
EXIT_2_ExpansionBase()          EXIT_2_GadToolsBase()
EXIT_3_GradientSliderBase()     EXIT_2_GfxBase()
EXIT_2_IconBase()               EXIT_2_IFFParseBase()
EXIT_2_IntuitionBase()          EXIT_2_KeymapBase()
EXIT_2_LayersBase()             EXIT_3_LocaleBase()
EXIT_3_LowLevelBase()           EXIT_2_MathBase()
EXIT_2_MathIeeeDoubBasBase()    EXIT_2_MathIeeeDoubTransBase()
EXIT_2_MathIeeeSingBasBase()    EXIT_2_MathIeeeSingTransBase()
EXIT_2_MathTransBase()          EXIT_2_MUIMasterBase()
EXIT_3_NVBase()                 EXIT_3_RealTimeBase()
EXIT_2_ReqToolsBase()           EXIT_2_RexxSysBase()
EXIT_3_TranslatorBase()         EXIT_1_UtilityBase()
EXIT_2_VersionBase()            EXIT_2_WizardBase()
EXIT_2_WorkbenchBase()          INIT_3_AmigaGuideBase()
INIT_2_AslBase()                INIT_3_BulletBase()
INIT_3_ColorWheelBase()         INIT_2_CxBase()
INIT_3_DataTypesBase()          INIT_2_DiskfontBase()
INIT_1_DOSBase()                INIT_2_ExpansionBase()
INIT_2_GadToolsBase()           INIT_3_GradientSliderBase()
INIT_2_GfxBase()                INIT_2_IconBase()
INIT_2_IFFParseBase()           INIT_2_IntuitionBase()
INIT_2_KeymapBase()             INIT_2_LayersBase()
INIT_3_LocaleBase()             INIT_3_LowLevelBase()
INIT_2_MathBase()               INIT_2_MathIeeeDoubBasBase()
INIT_2_MathIeeeDoubTransBase()  INIT_2_MathIeeeSingBasBase()
INIT_2_MathIeeeSingTransBase()  INIT_2_MathTransBase()
INIT_2_MUIMasterBase()          INIT_3_NVBase()
INIT_3_RealTimeBase()           INIT_2_ReqToolsBase()
INIT_2_RexxSysBase()            INIT_3_TranslatorBase()
INIT_1_UtilityBase()            INIT_2_VersionBase()
INIT_2_WizardBase()             INIT_2_WorkbenchBase()

@{b}IO functions@{ub}
EXIT_5_fstream()                EXIT_5_InitFiles()
EXIT_5_InitStdIOFiles()         EXIT_6_InitPOSIXIOFiles()
EXIT_9_chdir()                  INIT_0_InitFiles()
INIT_0_NEAR_CODE_StdioFiles()   INIT_5_fstream()
INIT_5_InitStdIOFiles()         INIT_6_InitPOSIXIOFiles()
INIT_9_chdir()

@{b}internal data@{ub}
AmigaGuideBase                  AslBase
BulletBase                      ColorWheelBase
CxBase                          DataTypesBase
DiskfontBase                    DOSBase
ExpansionBase                   fileList
GadToolsBase                    GradientSliderBase
GfxBase                         IconBase
IFFParseBase                    IntuitionBase
KeymapBase                      LayersBase
LocaleBase                      LowLevelBase
MathBase                        MathIeeeDoubBasBase
MathIeeeDoubTransBase           MathIeeeSingBasBase
MathIeeeSingTransBase           MathTransBase
MUIMasterBase                   NVBase
RealTimeBase                    ReqToolsBase
RexxSysBase                     std__err
std__in                         std__out
tmpnamList                      tmpnamNext
TranslatorBase                  UtilityBase
VersionBase                     WizardBase
WorkbenchBase
@endnode

@node new-lib-functions "new functions"
@{code}@{fg shine}new functions@{fg text}

set_new_handler()
@endnode

@node other-lib-functions "other functions"
@{code}@{FG shine}other functions@{FG text}

operator new(size_t)
operator delete(void, size_t)
@endnode

@node stdlib-lib-functions "stdlib functions"
@{code}@{fg shine}stdlib functions@{fg text}

free()          free_3()          malloc()        malloc_3()
@endnode

@node time-lib-functions "time functions"
@{code}@{fg shine}time functions@{fg text}

clock()
@endnode

@node unistd-lib-functions "unistd functions"
@{code}@{fg shine}unistd functions@{fg text}

chdir()
@endnode
///
/// functions
@node functions
@{b}@{fg shine}Functions of "stormamiga.lib":@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

@{" Function Overview " link "Function Overview"}@{par}

Because standard Ansi-C and C++ functions are described in the
StormC guide, I am going to explain only the special functions.@{par}

@{" main__()      " link main__()}@{" Startupcode   " link Startupcode}@{" wbmain()      " link wbmain()}@{par}

@{fg shine}AmigaDOS stdio functions@{par}
@{" SPRINTF       " link SPRINTF}@{" VSPRINTF      " link VSPRINTF}@{par}

stdio functions@{par}
@{" fprintf64     " link fprintf64}@{" fprintf_      " link fprintf_}@{" fprintf64_    " link fprintf64_}@{" fscanf64      " link fscanf64}
@{" fscanf_       " link fscanf_}@{" fscanf64_     " link fscanf64_}@{" getw          " link getw}@{" printf64      " link printf64}
@{" printf_       " link printf_}@{" printf64_     " link printf64_}@{" putw          " link putw}@{" scanf64       " link scanf64}
@{" scanf_        " link scanf_}@{" scanf64_      " link scanf64_}@{" setbuffer     " link setbuffer}@{" setlinebuf    " link setlinebuf}
@{" snprintf      " link snprintf}@{" snprintf64    " link snprintf64}@{" snprintf_     " link snprintf_}@{" snprintf64_   " link snprintf64_}
@{" sprintf64     " link sprintf64}@{" sprintf_      " link sprintf_}@{" sprintf64_    " link sprintf64_}@{" sscanf64      " link sscanf64}
@{" sscanf_       " link sscanf_}@{" sscanf64_     " link sscanf64_}@{" vfprintf64    " link vfprintf64}@{" vfprintf_     " link vfprintf_}
@{" vfprintf64_   " link vfprintf64_}@{" vfscanf       " link vfscanf}@{" vfscanf64     " link vfscanf64}@{" vfscanf_      " link vfscanf_}
@{" vfscanf64_    " link vfscanf64_}@{" vprintf64     " link vprintf64}@{" vprintf_      " link vprintf_}@{" vprintf64_    " link vprintf64_}
@{" vscanf        " link vscanf}@{" vscanf64      " link vscanf64}@{" vscanf_       " link vscanf_}@{" vscanf64_     " link vscanf64_}
@{" vsnprintf     " link vsnprintf}@{" vsnprintf64   " link vsnprintf64}@{" vsnprintf_    " link vsnprintf_}@{" vsnprintf64_  " link vsnprintf64_}
@{" vsprintf64    " link vsprintf64}@{" vsprintf_     " link vsprintf_}@{" vsprintf64_   " link vsprintf64_}@{" vsscanf       " link vsscanf}
@{" vsscanf64     " link vsscanf64}@{" vsscanf_      " link vsscanf_}@{" vsscanf64_    " link vsscanf64_}@{par}

unistd functions@{par}
@{" access        " link access}@{" chdir         " link chdir}@{" close         " link close}@{" getcwd        " link getcwd}
@{" getwd         " link getwd}@{" lseek         " link lseek}@{" mktemp        " link mktemp}@{" read          " link read}
@{" rmdir         " link rmdir}@{" sleep         " link sleep}@{" unlink        " link unlink}@{" usleep        " link usleep}
@{" write         " link write}@{par}

fcntl functions@{par}
@{" creat         " link creat}@{" open          " link open}@{par}

dirent functions@{par}
@{" closedir      " link closedir}@{" opendir       " link opendir}@{" readdir       " link readdir}@{" rewinddir     " link rewinddir}@{par}

stat functions@{par}
@{" chmod         " link chmod}@{" fstat         " link fstat}@{" lstat         " link lstat}@{" mkdir         " link mkdir}
@{" stat          " link stat}@{par}

string functions@{par}
@{" bcmp          " link bcmp}@{" bcopy         " link bcopy}@{" bzero         " link bzero}@{" ffs           " link ffs}
@{" index         " link index}@{" memccpy       " link memccpy}@{" rindex        " link rindex}@{" stpchr        " link stpchr}
@{" stpcpy        " link stpcpy}@{" strbpl        " link strbpl}@{" strcasecmp    " link strcasecmp}@{" strcasecmp_d  " link strcasecmp_d}
@{" strcoll       " link strcoll}@{" strdup        " link strdup}@{" stricmp_d     " link stricmp_d}@{" strins        " link strins}
@{" strlower      " link strlower}@{" strlower_d    " link strlower_d}@{" strlwr_d      " link strlwr_d}@{" strncasecmp   " link strncasecmp}
@{" strncasecmp_d " link strncasecmp_d}@{" strncpyn      " link strncpyn}@{" strnicmp      " link strnicmp}@{" strnicmp_d    " link strnicmp_d}
@{" strsep        " link strsep}@{" strupper      " link strupper}@{" strupper_d    " link strupper_d}@{" strupr_d      " link strupr_d}
@{" strxfrm       " link strxfrm}@{" swab          " link swab}@{par}

ctype functions@{par}
@{" isalnum_d     " link isalnum_d}@{" isalpha_d     " link isalpha_d}@{" islower_d     " link islower_d}@{" isprint_d     " link isprint_d}
@{" ispunct_d     " link ispunct_d}@{" isupper_d     " link isupper_d}@{" tolower_d     " link tolower_d}@{" toupper_d     " link toupper_d}@{par}

assert functions@{par}
@{" assert_       " link "assert_"}@{par}

time functions@{par}
@{" asctime_d     " link asctime_d}@{" ctime_d       " link ctime_d}@{" strftime      " link strftime}@{" strftime_d    " link strftime_d}
@{" times         " link times}@{" utime         " link utime}@{" utimes        " link utimes}@{par}

resource functions@{par}
@{" getrusage     " link getrusage}@{par}

math functions@{par}
@{" isinf         " link isinf}@{" isnan         " link isnan}@{par}

special functions@{par}
@{" button        " link button}@{" button_al     " link button_al}@{" button_ar     " link button_ar}@{" button_bl     " link button_bl}
@{" button_br     " link button_br}@{" divsl         " link divsl}@{" divul         " link divul}@{" divs64        " link divs64}
@{" divu64        " link divu64}@{" max_Height    " link max_Height}@{" max_Width     " link max_Width}@{" muls          " link muls}
@{" mulu          " link mulu}@{" muls64        " link muls64}@{" mulu64        " link mulu64}@{" waitbutton    " link "waitbutton"}
@{" waitbutton_al " link waitbutton_al}@{" waitbutton_ar " link waitbutton_ar}@{" waitbutton_bl " link waitbutton_bl}@{" waitbutton_br " link waitbutton_br}@{par}
@endnode
///
/// The Startupcodes
@node Startupcode "The Startupcodes"
@{b}@{fg shine}The Startupcodes@{par}
~~~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

The startupcodes of "stormamiga.lib" offer more functions than the original
StormC "startup.o". Furthermore they are more flexible and smaller than "startup.o".@{par}

@{b}The Startupcodes for Ansi-C@{ub}@{par}

The startupcodes "stormamiga_startups.o", "stormamiga_nc_startups.o",
"stormamiga_startups+.o" and "stormamiga_nc_startups+.o" call, if started
from CLI, the function "_main__". This one is equal to the function
@{" main__() " link main__()} in Ansi-C. If this function does not exist in
your program, it will be linked from "stormamiga.lib". The function "_main__"
calls "_main", that is equal to "main()" in Ansi-C. If this function does not
exist, the linker will report an error.@{par}
A program started from WorkBench calls @{" _wbmain_ " link _wbmain_}. If
"STORMAMIGA_NOWB" is defined, an empty function will be linked. Otherwise
it will be linked from "stormamiga.lib". The function "_wbmain_" calls "_wbmain"
that is equal to @{" wbmain() " link wbmain()} in Ansi-C. If this function
does not exist, it will be linked from "stormamiga.lib".@{par}

@{b}The Startupcodes for C++@{ub}@{par}
The startupcodes "stormamiga_C++_startups.o", "stormamiga_nc_C++_startups.o",
"stormamiga_C++_startups+.o" and "stormamiga_nc_C++_startups+.o" call, if started
from CLI, the function "main_". This one is equal to the function
main() in C++. If this function does not exist in your program, it will
be linked from "stormamiga.lib". The function "main_" calls "main__iPPc",
that is equal to "main(int, char **)" in C++. If this function does not
exist, the linker will report an error.@{par}
A program started from WorkBench calls @{" wbmain__ " link _wbmain_}. If
"STORMAMIGA_NOWB" is defined, an empty function will be linked. Otherwise
it will be linked from "stormamiga.lib". The function "wbmain__" calls
"wbmain__P09WBStartup" that is equal to @{" wbmain(struct WBStartup *) " link wbmain()}
in C++. If this function does not exist, it will be linked from "stormamiga.lib".@{par}

@{code}
@{b}Functional Overview of Startupcodes@{ub}
__________________________________________________________________________________________
|          Startupcode          | Ansi C | C++ |  Codemodell   |      Datamodell         |
|                               |        |     |  FAR  | NEAR  | FAR | NEAR A4 | NEAR A6 |
|ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ|ŻŻŻŻŻŻŻŻ|ŻŻŻŻŻ|ŻŻŻŻŻŻŻ|ŻŻŻŻŻŻŻ|ŻŻŻŻŻ|ŻŻŻŻŻŻŻŻŻ|ŻŻŻŻŻŻŻŻŻ|
| stormamiga_startups.o         |  yes   | no  |  yes  | (yes) | yes |  (yes)ı |   no    |
|-------------------------------|--------|-----|-------|-------|-----|---------|---------|
| stormamiga_startups+.o        |  yes   | no  |  yes  | (yes) | yes |   yes   |   no    |
|-------------------------------|--------|-----|-------|-------|-----|---------|---------|
| stormamiga_nc_startups.o      |  yes   | no  | (yes) |  yes  | yes |  (yes)ı |   no    |
|-------------------------------|--------|-----|-------|-------|-----|---------|---------|
| stormamiga_nc_startups+.o     |  yes   | no  | (yes) |  yes  | yes |   yes   |   no    |
|-------------------------------|--------|-----|-------|-------|-----|---------|---------|
| stormamiga_C++_startups.o     |   no   | yes |  yes  | (yes) | yes |  (yes)ı |   no    |
|-------------------------------|--------|-----|-------|-------|-----|---------|---------|
| stormamiga_C++_startups+.o    |   no   | yes |  yes  | (yes) | yes |   yes   |   no    |
|-------------------------------|--------|-----|-------|-------|-----|---------|---------|
| stormamiga_nc_C++_startups.o  |   no   | yes | (yes) |  yes  | yes |  (yes)ı |   no    |
|-------------------------------|--------|-----|-------|-------|-----|---------|---------|
| stormamiga_nc_C++_startups+.o |   no   | yes | (yes) |  yes  | yes |   yes   |   no    |
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
(yes)  = Startupcodes marked this way will work with this Codemodell, but your programms become bigger.

(yes)ı = Startupcodes marked this way will create resident programs. If your programs do not have
	 to be resident, this Startupcodes have no further advantage. Your programs become only bigger.
@endnode
///
/// wb-main
@node main__()
@{b}@{FG shine}The "main__()" function.@{par}
~~~~~~~~~~~~~~~~~~~~~~~~@{FG text}@{ub}@{par}

If your program does not need any arguments or you want to
write this procedure on your own you can rename "main()"
into "main__()". Your program becomes smaller.@{par}

@{b}@{FG fill}Important@{FG text}@{ub}@{par}

"main__()" is not recognized as a normal main function by
the compiler, so the returncode is not set to 0. You have do
do this by calling "return 0" at the end of your program.@{par}

The function "main__()" is only supported by the following
startupcodes "stormamiga_startups.o", "stormamiga_nc_startups.o",
"stormamiga_startups+.o" and "stormamiga_nc_startups+.o"
"main__()" needs Ansi C to work.
@endnode

@node _wbmain_
@{b}@{FG shine}The functions "_wbmain_" and "_wbmain__".@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{FG text}@{ub}@{par}

The functions "_wbmain_" and "_wbmain__" are necessary to use
sources from different compilers (GNU C, SAS C, DICE, Maxon C++,
StormC) with "stormamiga.lib" and its Startupcodes. Furthermore
they contend all functions to quit a program, started from WorkBench,
correctly.@{par}
The functions "_wbmain_" and "_wbmain__" copy the Workbenchmessage
into the global variable "WBMsg".@{par}
Please look at @{" Workbenchexamples " link Workbenchexamples}.@{par}
@endnode

@node wbmain()
@{b}@{FG shine}The function "wbmain()".@{par}
~~~~~~~~~~~~~~~~~~~~~~~~@{FG text}@{ub}@{par}

The function "wbmain()" is part of "stormamiga.lib".
It changes to the actual directory and, if  @{" STORMAMIGA_NO_IO_WB " link STORMAMIGA_NO_IO_WB}
is not defined, redirects standard output "stdout" and
standard input "stdin" to a CLI window. The parameters of
this window can be defined in the variable "__stdiowin".
The defaultvalue is "char __stdiowin[] = \"CON://///AUTO/CLOSE\"".@{par}
If you write your own "wbmain()", your function will be used and
not the one from "stormamiga.lib".@{par}
Please look at @{" Workbenchexamples " link Workbenchexamples}.@{par}
@endnode

@node Workbenchexamples
@{b}@{FG shine}Some examples for a Workbench start.@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{FG text}@{ub}@{par}

"stormamiga.lib" contains several ways to react on a start from
WorkBench. The following examples may help to show the usage of
those feautures.@{par}

@{code}
@{b}Example 1@{ub}
void main (int argc, char **argv)
{
  if (argc == 0)
  {
    // Place all function necessary for a Workbench start here
  }
  else
  {
    // Place all function necessary for a CLI start here
  }

@{b}Example 2@{ub}
void main__ (void)
{
extern struct WBStartup *WBMsg;
  if (WBMsg != 0)
  {
    // Place all function necessary for a Workbench start here
  }
  else
  {
    // Place all function necessary for a CLI start here
  }

@{b}Example 3@{ub}
void main (int argc, char **argv)
{
    // Place all function necessary for a CLI start here
}

void wbmain (struct WBStartup *wbs)
{
    // Place all function necessary for a Workbench start here
}
@endnode
///
/// stdio-functions
@node SPRINTF
@{fg shine}SPRINTF@{fg text}@{par}
Formated output into stringbuffer "s".@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = SPRINTF (s, format, ...);@{par}

long r;@{par}
char *s;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output into @{" stringbuffer " link stringbuffer} "s". The formatstring
 describes the ouputformat followed by different parameters.@{par}

"SPRINTF" makes use of the @{" RawDoFmt " link "StormC:StormSYS/Help/exec/RawDoFmt()"} function
of "exec.library" and is a very small function.@{par}

@{b}Return@{ub}@{par}
No. of printed characters.@{par}
@endnode

@node VSPRINTF
@{fg shine}VSPRINTF@{fg text}@{par}
Formated output into stringbuffer "s".@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = VSPRINTF (s, format, vl);@{par}

long r;@{par}
char *s;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output into @{" stringbuffer " link stringbuffer} "s". The formatstring
"format" describes the outputformat, followed by a
@{" parameterlist " link parameterlist} "vl".@{par}

"VSPRINTF" makes use of the @{" RawDoFmt " link "StormC:StormSYS/Help/exec/RawDoFmt()"} function
of "exec.library" and is a very small function.@{par}

@{b}Return@{ub}@{par}
No. of printed characters.@{par}
@endnode

@node printf64
@{fg shine}printf64@{fg text}@{par}
Formated output to standard-output "stdout".@{par}
@{i}Extended version of "printf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = printf64 (format, ...);@{par}

int r;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output to standard-output "stdout". The @{" outputformatstring " link outputformatstring}
 "format" defines the outputformat followed by different parameters.@{par}
The function "printf64" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node printf_
@{fg shine}printf_@{fg text}@{par}
Formated output to standard-output "stdout".@{par}
@{i}Functionreduced version of "printf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = printf_ (format, ...);@{par}

int r;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output to standard-output "stdout". The @{" outputformatstring_ " link outputformatstring_}
 "format" defines the outputformat followed by different parameters.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node printf64_
@{fg shine}printf64_@{fg text}@{par}
Formated output to standard-output "stdout".@{par}
@{i}Extended version of "printf_".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = printf64_ (format, ...);@{par}

int r;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output to standard-output "stdout". The @{" outputformatstring_ " link outputformatstring_}
 "format" defines the outputformat followed by different parameters.@{par}
The function "printf64_" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node fprintf64
@{fg shine}fprintf64@{fg text}@{par}
Formated output into file "f".@{par}
@{i}Extended version of "fprintf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = fprintf64 (f, format, ...);@{par}

int r;@{par}
FILE *f;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output into file "f". The @{" outputformatstring " link outputformatstring} "format"
defines the outputformat followed by different parameters.@{par}
The function "fprintf64" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node fprintf_
@{fg shine}fprintf_@{fg text}@{par}
Formated output into file "f".@{par}
@{i}Functionreduced version of "fprintf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = fprintf_ (f, format, ...);@{par}

int r;@{par}
FILE *f;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output into file "f". The @{" outputformatstring_ " link outputformatstring_} "format"
defines the outputformat followed by different parameters.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node fprintf64_
@{fg shine}fprintf64_@{fg text}@{par}
Formated output into file "f".@{par}
@{i}Extended version of "fprintf_".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = fprintf64_ (f, format, ...);@{par}

int r;@{par}
FILE *f;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output into file "f". The @{" outputformatstring_ " link outputformatstring_} "format"
defines the outputformat followed by different parameters.@{par}
The function "fprintf64_" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node sprintf64
@{fg shine}sprintf64@{fg text}@{par}
Formated Output into stringbuffer "s".@{par}
@{i}Extended version of "sprintf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = sprintf64 (s, format, ...);@{par}

int r;@{par}
char *s;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output into @{" stringbuffer " link stringbuffer} "s". The @{" outputformatstring " link outputformatstring}
 "format" defines the outputformat followed by different parameters.@{par}
The function "sprintf64" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node sprintf_
@{fg shine}sprintf_@{fg text}@{par}
Formated Output into stringbuffer "s".@{par}
@{i}Functionreduced version of "sprintf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = sprintf_ (s, format, ...);@{par}

int r;@{par}
char *s;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output into @{" stringbuffer " link stringbuffer} "s". The @{" outputformatstring_ " link outputformatstring_}
 "format" defines the outputformat followed by different parameters.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node sprintf64_
@{fg shine}sprintf64_@{fg text}@{par}
Formated Output into stringbuffer "s".@{par}
@{i}Extended version of "sprintf_".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = sprintf64_ (s, format, ...);@{par}

int r;@{par}
char *s;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output into @{" stringbuffer " link stringbuffer} "s". The @{" outputformatstring_ " link outputformatstring_}
 "format" defines the outputformat followed by different parameters.@{par}
The function "sprintf64_" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node snprintf
@{fg shine}snprintf@{fg text}@{par}
Formated output of "n" characters into stringbuffer "s".@{par}

@{b}Usage@{ub}@{par}
#include <stdio_stormamiga.h>@{par}

r = snprintf (s, n, format, ...);@{par}

int r;@{par}
char *s;@{par}
size_t n;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
Formated output of "n" characters into @{" stringbuffer " link stringbuffer} "s". A '\\0' is
appended automatically. Because of this strings longer than "n" are cut down to "n-1" characters.
The @{" outputformatstring " link outputformatstring} "format" defines the outputformat
followed by different parameters.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or if "n" lower than "format", -1.@{par}
@{code}
@{b}Example@{ub}
#define STORMAMIGA
#define STORMAMIGA_NOWB

#include <stdio.h>
#include <stormamiga.h>

int main__(void)
{
  cchar *format = "This is a test.";
  char s[8];
  int r;
  size_t n = sizeof s;

  r = snprintf(s, n, format);
  printf("%s\\n", s);     /* "This is" */
  printf("%d\\n", r);     /* "-1" */
  return NULL;
}
@endnode

@node snprintf64
@{fg shine}snprintf64@{fg text}@{par}
Formated output of "n" characters into stringbuffer "s".@{par}
@{i}Extended version of "snprintf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = snprintf64 (s, n, format, ...);@{par}

int r;@{par}
char *s;@{par}
size_t n;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output of "n" characters into @{" stringbuffer " link stringbuffer} "s". A '\\0' is
appended automatically. Because of this strings longer than "n" are cut down to "n-1" characters.
The @{" outputformatstring " link outputformatstring} "format" defines the outputformat
followed by different parameters.@{par}
The function "snprintf64" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or if "n" lower than "format" -1.@{par}
@{code}
@{b}Example@{ub}
#define STORMAMIGA
#define STORMAMIGA_NOWB

#include <stdio.h>
#include <stormamiga.h>

int main__(void)
{
  cchar *format = "This is a test.";
  char s[8];
  int r;
  size_t n = sizeof s;

  r = snprintf64(s, n, format);
  printf64("%s\\n", s);     /* "This is" */
  printf64("%d\\n", r);     /* "-1" */
  return NULL;
}
@endnode

@node snprintf_
@{fg shine}snprintf_@{fg text}@{par}
Formated output of "n" characters into stringbuffer "s".@{par}
@{i}Functionsreduced version of "snprintf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = snprintf_ (s, n, format, ...);@{par}

int r;@{par}
char *s;@{par}
size_t n;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output of "n" characters into @{" stringbuffer " link stringbuffer} "s". A '\\0' is
appended automatically. Because of this strings longer than "n" are cut down to "n-1" characters.
The @{" outputformatstring_ " link outputformatstring_} "format" defines the outputformat
followed by different parameters.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or if "n" lower than "format" -1.@{par}
@{code}
@{b}Example@{ub}
#define STORMAMIGA
#define STORMAMIGA_NOWB

#include <stdio.h>
#include <stormamiga.h>

int main__(void)
{
  cchar *format = "This is a test.";
  char s[8];
  int r;
  size_t n = sizeof s;

  r = snprintf_(s, n, format);
  printf_("%s\\n", s);     /* "This is" */
  printf_("%d\\n", r);     /* "-1" */
  return NULL;
}
@endnode

@node snprintf64_
@{fg shine}snprintf64_@{fg text}@{par}
Formated output of "n" characters into stringbuffer "s".@{par}
@{i}Extended version of "snprintf_".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = snprintf64_ (s, n, format, ...);@{par}

int r;@{par}
char *s;@{par}
size_t n;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output of "n" characters into @{" stringbuffer " link stringbuffer} "s". A '\\0' is
appended automatically. Because of this strings longer than "n" are cut down to "n-1" characters.
The @{" outputformatstring_ " link outputformatstring_} "format" defines the outputformat
followed by different parameters.@{par}
The function "snprintf64_" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or if "n" lower than "format" -1.@{par}
@{code}
@{b}Example@{ub}
#define STORMAMIGA
#define STORMAMIGA_NOWB

#include <stdio.h>
#include <stormamiga.h>

int main__(void)
{
  cchar *format = "This is a test.";
  char s[8];
  int r;
  size_t n = sizeof s;

  r = snprintf64_(s, n, format);
  printf64_("%s\\n", s);     /* "This is" */
  printf64_("%d\\n", r);     /* "-1" */
  return NULL;
}
@endnode

@node vprintf64
@{fg shine}vprintf64@{fg text}@{par}
Formated output to standard output "stdout".@{par}
@{i}Extended version of "vprintf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vprintf64 (format, vl);@{par}

int r;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output to standard output "stdout". The
@{" outputformatstring " link outputformatstring} "format" defines the outputformat
followed by a @{" parameterlist " link parameterlist} "vl".@{par}
The function "vprintf64" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node vprintf_
@{fg shine}vprintf_@{fg text}@{par}
Formated output to standard output "stdout".@{par}
@{i}Functionreduced version of "vprintf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vprintf_ (format, vl);@{par}

int r;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output to standard output "stdout". The
@{" outputformatstring_ " link outputformatstring_} "format" defines the outputformat
followed by a @{" parameterlist " link parameterlist} "vl".@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node vprintf64_
@{fg shine}vprintf64_@{fg text}@{par}
Formated output to standard output "stdout".@{par}
@{i}Extended version of "vprintf_".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vprintf64_ (format, vl);@{par}

int r;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output to standard output "stdout". The
@{" outputformatstring_ " link outputformatstring_} "format" defines the outputformat
followed by a @{" parameterlist " link parameterlist} "vl".@{par}
The function "vprintf64_" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node vfprintf64
@{fg shine}vfprintf64@{fg text}@{par}
Formated output into file "f".@{par}
@{i}Extended version of "vfprintf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vfprintf64 (f, format, vl);@{par}

int r;@{par}
FILE *f;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output into file "f". The
@{" outputformatstring " link outputformatstring} "format" describes
the outputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}
The function "vfprintf64" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node vfprintf_
@{fg shine}vfprintf_@{fg text}@{par}
Formated output into file "f".@{par}
@{i}Functionreduced version of "vfprintf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vfprintf_ (f, format, vl);@{par}

int r;@{par}
FILE *f;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output into file "f". The
@{" outputformatstring_ " link outputformatstring_} "format" describes
the outputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node vfprintf64_
@{fg shine}vfprintf64_@{fg text}@{par}
Formated output into file "f".@{par}
@{i}Extended version of "vfprintf_".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vfprintf64_ (f, format, vl);@{par}

int r;@{par}
FILE *f;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output into file "f". The
@{" outputformatstring_ " link outputformatstring_} "format" describes
the outputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}
The function "vfprintf64_" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node vsprintf64
@{fg shine}vsprintf64@{fg text}@{par}
Formated output into stringbuffer "s".@{par}
@{i}Extended version of "vsprintf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vsprintf64 (s, format, vl);@{par}

int r;@{par}
char *s;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output into @{" stringbuffer " link stringbuffer} "s". The
@{" outputformatstring " link outputformatstring} "format" describes the
outputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}
The function "vsprintf64" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node vsprintf_
@{fg shine}vsprintf_@{fg text}@{par}
Formated output into stringbuffer "s".@{par}
@{i}Functionreduced version of "vsprintf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vsprintf_ (s, format, vl);@{par}

int r;@{par}
char *s;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output into @{" stringbuffer " link stringbuffer} "s". The
@{" outputformatstring_ " link outputformatstring_} "format" describes the
outputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node vsprintf64_
@{fg shine}vsprintf64_@{fg text}@{par}
Formated output into stringbuffer "s".@{par}
@{i}Extended version of "vsprintf_".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vsprintf64_ (s, format, vl);@{par}

int r;@{par}
char *s;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output into @{" stringbuffer " link stringbuffer} "s". The
@{" outputformatstring_ " link outputformatstring_} "format" describes the
outputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}
The function "vsprintf64_" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or a negative No. if out failed.@{par}
@endnode

@node vsnprintf
@{fg shine}vsnprintf@{fg text}@{par}
Formated output of "n" characters into stringbuffer "s".@{par}

@{b}Usage@{ub}@{par}
#include <stdio_stormamiga.h>@{par}

r = vsnprintf (s, n, format, vl);@{par}

int r;@{par}
char *s;@{par}
size_t n;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
Formated output of "n" characters into @{" stringbuffer " link stringbuffer} "s".
A '\\0' will be appended. Because of this strings longer than "n", are cut down to
"n-1" characters. The @{" outputformatstring " link outputformatstring} "format" describes
the outputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}

@{b}Return@{ub}@{par}
No. of printed characters or if "n" lower than "format" -1.@{par}
@{code}
@{b}Example@{ub}
#define STORMAMIGA
#define STORMAMIGA_NOWB

#include <stdarg.h>
#include <stdio.h>
#include <stormamiga.h>

int main__(void)
{
  cchar *format = "This is a test.";
  char s[8];
  int r;
  size_t n = sizeof s;
  va_list vl;

  va_start (vl, format);
  r = vsnprintf(s, n, format, vl);
  va_end (vl);
  printf("%s\\n", s);     /* "This is" */
  printf("%d\\n", r);     /* "-1" */
  return NULL;
}
@endnode

@node vsnprintf64
@{fg shine}vsnprintf64@{fg text}@{par}
Formated output of "n" characters into stringbuffer "s".@{par}
@{i}Extended version of "vsnprintf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vsnprintf64 (s, n, format, vl);@{par}

int r;@{par}
char *s;@{par}
size_t n;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
Formated output of "n" characters into @{" stringbuffer " link stringbuffer} "s".
A '\\0' will be appended. Because of this strings longer than "n", are cut down to
"n-1" characters. The @{" outputformatstring " link outputformatstring} "format" describes
the outputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}
The function "vsnprintf64" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or if "n" lower than "format" -1.@{par}
@{code}
@{b}Example@{ub}
#define STORMAMIGA
#define STORMAMIGA_NOWB

#include <stdarg.h>
#include <stdio.h>
#include <stormamiga.h>

int main__(void)
{
  cchar *format = "This is a test.";
  char s[8];
  int r;
  size_t n = sizeof s;
  va_list vl;

  va_start (vl, format);
  r = vsnprintf64(s, n, format, vl);
  va_end (vl);
  printf64("%s\\n", s);     /* "This is" */
  printf64("%d\\n", r);     /* "-1" */
  return NULL;
}
@endnode

@node vsnprintf_
@{fg shine}vsnprintf_@{fg text}@{par}
Formated output of "n" characters into stringbuffer "s".@{par}
@{i}Functionreduced version of "vsnprintf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vsnprintf_ (s, n, format, vl);@{par}

int r;@{par}
char *s;@{par}
size_t n;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output of "n" characters into @{" stringbuffer " link stringbuffer} "s".
A "\\0" will be appended. Because of this strings longer than "n", are cut down to
"n-1" characters. The @{" outputformatstring_ " link outputformatstring_} "format" describes
the outputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}

@{b}Return@{ub}@{par}
No. of printed characters or if "n" lower than "format" -1.@{par}
@{code}
@{b}Example@{ub}
#define STORMAMIGA
#define STORMAMIGA_NOWB

#include <stdarg.h>
#include <stdio.h>
#include <stormamiga.h>

int main__(void)
{
  cchar *format = "This is a test.";
  char s[8];
  int r;
  size_t n = sizeof s;
  va_list vl;

  va_start (vl, format);
  r = vsnprintf_(s, n, format, vl);
  va_end (vl);
  printf_("%s\\n", s);     /* "This is" */
  printf_("%d\\n", r);     /* "-1" */
  return NULL;
}
@endnode

@node vsnprintf64_
@{fg shine}vsnprintf64_@{fg text}@{par}
Formated output of "n" characters into stringbuffer "s".@{par}
@{i}Extended version of "vsnprintf_".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vsnprintf64_ (s, n, format, vl);@{par}

int r;@{par}
char *s;@{par}
size_t n;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output of "n" characters into @{" stringbuffer " link stringbuffer} "s".
A "\\0" will be appended. Because of this strings longer than "n", are cut down to
"n-1" characters. The @{" outputformatstring_ " link outputformatstring_} "format" describes
the outputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}
The function "vsnprintf64_" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of printed characters or if "n" lower than "format" -1.@{par}
@{code}
@{b}Example@{ub}
#define STORMAMIGA
#define STORMAMIGA_NOWB

#include <stdarg.h>
#include <stdio.h>
#include <stormamiga.h>

int main__(void)
{
  cchar *format = "This is a test.";
  char s[8];
  int r;
  size_t n = sizeof s;
  va_list vl;

  va_start (vl, format);
  r = vsnprintf64_(s, n, format, vl);
  va_end (vl);
  printf64_("%s\\n", s);     /* "This is" */
  printf64_("%d\\n", r);     /* "-1" */
  return NULL;
}
@endnode

@node scanf64
@{fg shine}scanf64@{fg text}@{par}
Read formated Input from standard-input "stdin".@{par}
@{i}Extended version of "scanf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = scanf64 (format, ...);@{par}

int r;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Read formated Input from standard-input "stdin". The
@{" inputformatstring " link inputformatstring} "format" describes the inputformat
followed by parameters.@{par}
The function "scanf64" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node scanf_
@{fg shine}scanf_@{fg text}@{par}
Read formated Input from standard-input "stdin".@{par}
@{i}Functionreduced version of"scanf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = scanf_ (format, ...);@{par}

int r;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Read formated Input from standard-input "stdin". The
@{" inputformatstring_ " link inputformatstring_} "format" describes the inputformat
followed by parameters.@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node scanf64_
@{fg shine}scanf64_@{fg text}@{par}
Read formated Input from standard-input "stdin".@{par}
@{i}Extended version of "scanf_".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = scanf64_ (format, ...);@{par}

int r;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Read formated Input from standard-input "stdin". The
@{" inputformatstring_ " link inputformatstring_} "format" describes the inputformat
followed by parameters.@{par}
The function "scanf64_" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node fscanf64
@{fg shine}fscanf64@{fg text}@{par}
Read formated Input from file "f".@{par}
@{i}Extended version of "fscanf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = fscanf64 (f, format, ...);@{par}

int r;@{par}
FILE *f;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Read formated Input from file "f". The @{" inputformatstring " link inputformatstring}
"format" describes the inputformat followed by parameters.@{par}
The function "fscanf64" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node fscanf_
@{fg shine}fscanf_@{fg text}@{par}
Read formated Input from file "f".@{par}
@{i}Functionreduced version of"fscanf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = fscanf_ (f, format, ...);@{par}

int r;@{par}
FILE *f;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Read formated Input from file "f". The @{" inputformatstring_ " link inputformatstring_}
"format" describes the inputformat followed by parameters.@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node fscanf64_
@{fg shine}fscanf64_@{fg text}@{par}
Read formated Input from file "f".@{par}
@{i}Extended version of "fscanf_".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = fscanf64_ (f, format, ...);@{par}

int r;@{par}
FILE *f;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Read formated Input from file "f". The @{" inputformatstring_ " link inputformatstring_}
"format" describes the inputformat followed by parameters.@{par}
The function "fscanf64_" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node sscanf64
@{fg shine}sscanf64@{fg text}@{par}
Read formated Input from stringbuffer "s".@{par}
@{i}Extended version of "sscanf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = sscanf64 (s, format, ...);@{par}

int r;@{par}
char *s;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Read formated Input from stringbuffer "s". The
@{" inputformatstring " link inputformatstring} "format" describes
the inputformat followed by parameters.@{par}
The function "sscanf64" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node sscanf_
@{fg shine}sscanf_@{fg text}@{par}
Read formated Input from stringbuffer "s".@{par}
@{i}Functionreduced version of"sscanf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = sscanf_ (s, format, ...);@{par}

int r;@{par}
char *s;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Read formated Input from stringbuffer "s". The
@{" inputformatstring_ " link inputformatstring_} "format" describes
the inputformat followed by parameters.@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node sscanf64_
@{fg shine}sscanf64_@{fg text}@{par}
Read formated Input from stringbuffer "s".@{par}
@{i}Extended version of "sscanf_".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = sscanf64_ (s, format, ...);@{par}

int r;@{par}
char *s;@{par}
const char *format;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Read formated Input from stringbuffer "s". The
@{" inputformatstring_ " link inputformatstring_} "format" describes
the inputformat followed by parameters.@{par}
The function "sscanf64_" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node vscanf
@{fg shine}vscanf@{fg text}@{par}
Read formated Input from standard-input "stdin".@{par}

@{b}Usage@{ub}@{par}
#include <stdio_stormamiga.h>@{par}

r = vscanf (format, vl);@{par}

int r;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
Read formated Input from standard-input "stdin". The
@{" inputformatstring " link inputformatstring} "format" describes the inputformat
followed by a @{" parameterlist " link parameterlist} "vl".@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node vscanf64
@{fg shine}vscanf64@{fg text}@{par}
Read formated Input from standard-input "stdin".@{par}
@{i}Extended version of "scanf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vscanf64 (format, vl);@{par}

int r;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
Read formated Input from standard-input "stdin". The
@{" inputformatstring " link inputformatstring} "format" describes the inputformat
followed by a @{" parameterlist " link parameterlist} "vl".@{par}
The function "vscanf64" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node vscanf_
@{fg shine}vscanf_@{fg text}@{par}
Read formated Input from standard-input "stdin".@{par}
@{i}Functionreduced version of "vscanf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vscanf_ (format, vl);@{par}

int r;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Read formated Input from standard-input "stdin". The
@{" inputformatstring_ " link inputformatstring_} "format" describes the inputformat
followed by a @{" parameterlist " link parameterlist} "vl".@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node vscanf64_
@{fg shine}vscanf64_@{fg text}@{par}
Read formated Input from standard-input "stdin".@{par}
@{i}Extended version of "scanf_".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vscanf64_ (format, vl);@{par}

int r;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Read formated Input from standard-input "stdin". The
@{" inputformatstring_ " link inputformatstring_} "format" describes the inputformat
followed by a @{" parameterlist " link parameterlist} "vl".@{par}
The function "vscanf64_" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node vfscanf
@{fg shine}vfscanf@{fg text}@{par}
Read formated Input from file "f".@{par}

@{b}Usage@{ub}@{par}
#include <stdio_stormamiga.h>@{par}

r = vfscanf (f, format, vl);@{par}

int r;@{par}
FILE *f;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
Read formated Input from file "f". The @{" inputformatstring " link inputformatstring}
"format" describes the inputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node vfscanf64
@{fg shine}vfscanf64@{fg text}@{par}
Read formated Input from file "f".@{par}
@{i}Extended version of "vfscanf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vfscanf64 (f, format, vl);@{par}

int r;@{par}
FILE *f;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
Read formated Input from file "f". The @{" inputformatstring " link inputformatstring}
"format" describes the inputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}
The function "vfscanf64" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node vfscanf_
@{fg shine}vfscanf_@{fg text}@{par}
Read formated Input from file "f".@{par}
@{i}Functionreduced version of"vfscanf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vfscanf_ (f, format, vl);@{par}

int r;@{par}
FILE *f;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Read formated Input from file "f". The @{" inputformatstring_ " link inputformatstring_}
"format" describes the inputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node vfscanf64_
@{fg shine}vfscanf64_@{fg text}@{par}
Read formated Input from file "f".@{par}
@{i}Extended version of "vfscanf_".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vfscanf64_ (f, format, vl);@{par}

int r;@{par}
FILE *f;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Read formated Input from file "f". The @{" inputformatstring_ " link inputformatstring_}
"format" describes the inputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}
The function "vfscanf64_" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node vsscanf
@{fg shine}vsscanf@{fg text}@{par}
Read formated Input from stringbuffer "s".@{par}

@{b}Usage@{ub}@{par}
#include <stdio_stormamiga.h>@{par}

r = vsscanf (s, format, vl);@{par}

int r;@{par}
char *s;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
Read formated Input from stringbuffer "s". The @{" inputformatstring " link inputformatstring}
"format" describes the inputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node vsscanf64
@{fg shine}vsscanf64@{fg text}@{par}
Read formated Input from stringbuffer "s".@{par}
@{i}Extended version of "vsscanf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vsscanf64 (s, format, vl);@{par}

int r;@{par}
char *s;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
Read formated Input from stringbuffer "s". The @{" inputformatstring " link inputformatstring}
"format" describes the inputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}
The function "vsscanf64" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node vsscanf_
@{fg shine}vsscanf_@{fg text}@{par}
Read formated Input from stringbuffer "s".@{par}
@{i}Functionreduced version of"vsscanf".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vsscanf_ (s, format, vl);@{par}

int r;@{par}
char *s;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Read formated Input from stringbuffer "s". The @{" inputformatstring_ " link inputformatstring_}
"format" describes the inputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node vsscanf64_
@{fg shine}vsscanf64_@{fg text}@{par}
Read formated Input from stringbuffer "s".@{par}
@{i}Extended version of "vsscanf_".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = vsscanf64_ (s, format, vl);@{par}

int r;@{par}
char *s;@{par}
const char *format;@{par}
va_list vl;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Read formated Input from stringbuffer "s". The @{" inputformatstring_ " link inputformatstring_}
"format" describes the inputformat followed by a @{" parameterlist " link parameterlist} "vl".@{par}
The function "vsscanf64_" supports the specifier "L" for long long int or
unsigned long long int.@{par}

@{b}Return@{ub}@{par}
No. of formatvalue or in case of failure a returnvalue lower than
the No. of formatvalue.@{par}
@endnode

@node setbuffer
@{fg shine}setbuffer@{fg text}@{par}
Set a filebuffer@{par}

@{b}Usage@{ub}@{par}
#include <stdio_stormamiga.h>@{par}

r = setbuffer (f, buf, size);@{par}

void r;@{par}
FILE *f;@{par}
char *buf;@{par}
int size;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.3BSD)@{par}

@{b}Function@{ub}@{par}
Set buffer "buf" of length "size" for file "f".@{par}

The instruction "setbuffer" is also available as @{" Inlinefunctions " link Inlinefunctions}.@{par}

@{b}Return@{ub}@{par}
none@{par}
@endnode

@node setlinebuf
@{fg shine}setlinebuf@{fg text}@{par}
Set a linebuffer@{par}

@{b}Usage@{ub}@{par}
#include <stdio_stormamiga.h>@{par}

r = setlinebuf (f);@{par}

int r;@{par}
FILE *f;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.3BSD)@{par}

@{b}Function@{ub}@{par}
Set a linebuffer for file "f".@{par}

The instruction "setlinebuf" is also available as @{" Inlinefunctions " link Inlinefunctions}.@{par}

@{b}Return@{ub}@{par}
Return always 0.@{par}
@endnode

@node getw
@{fg shine}getw@{fg text}@{par}
Einlesen eines Wortes@{par}

@{b}Usage@{ub}@{par}
#include <stdio_stormamiga.h>@{par}

r = getw(f);@{par}

int r;@{par}
FILE *f;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
Liest aus der Datei "f" das nächste Wort.@{par}

@{b}Return@{ub}@{par}
Das nächste Wort aus der Datei "f" oder "EOF" falls ein Fehler
auftrat oder das Ende der Datei erreicht war.@{par}
@endnode

@node putw
@{fg shine}putw@{fg text}@{par}
Ausgabe eines Wortes@{par}

@{b}Usage@{ub}@{par}
#include <stdio_stormamiga.h>@{par}

r = putw(w, f);@{par}

int r;@{par}
int w;@{par}
FILE *f;@{par}

@{b}Standard@{ub}@{par}
not (yet) (Version 6 AT&T UNIX)@{par}

@{b}Function@{ub}@{par}
Das Wort "w" wird in die Datei "f" ausgegeben.@{par}

@{b}Return@{ub}@{par}
Das ausgegebene Wort oder im Fehlerfall "EOF".@{par}
@endnode
///
/// unistd-functions
@node access
@{fg shine}access@{fg text}@{par}
Überprüft den Zugriffsmodus von Dateien@{par}

@{b}Usage@{ub}@{par}
#include <unistd.h>@{par}

r = access(file, mode);@{par}

int r;@{par}
const char *file;@{par}
int mode;@{par}

@{b}Standard@{ub}@{par}
IEEE Std1003.1-1988 ("POSIX")@{par}

@{b}Function@{ub}@{par}
Es wird überprüft ob der Zugriffsmodus "mode" bei der
Datei "name" möglich ist oder nicht.@{par}

Bei Definition von @{" STORMAMIGA_UNIXPATH " link STORMAMIGA_UNIXPATH} können für diese
Funktionen auch Pfadangaben im Unix-Format verwendet
werden.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst 0.@{par}
@endnode

@node chdir
@{fg shine}chdir@{fg text}@{par}
Verzeichnis wechseln@{par}

@{b}Usage@{ub}@{par}
#include <unistd.h>@{par}

r = chdir(path);@{par}

int r;@{par}
const char *path;@{par}

@{b}Standard@{ub}@{par}
IEEE Std1003.1-1988 ("POSIX")@{par}

@{b}Function@{ub}@{par}
Es wird vom aktuellen Arbeitsverzeichnis zum Verzeichnis
"path" gewechselt.@{par}
Beim Beenden des Programmes wird das Originalverzeichnis
wieder hergestellt.@{par}

Bei Definition von @{" STORMAMIGA_UNIXPATH " link STORMAMIGA_UNIXPATH} können für diese
Funktionen auch Pfadangaben im Unix-Format verwendet
werden.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst 0.@{par}
@endnode

@node rmdir
@{fg shine}rmdir@{fg text}@{par}
Verzeichnis löschen@{par}

@{b}Usage@{ub}@{par}
#include <unistd.h>@{par}

r = rmdir(path);@{par}

int r;@{par}
char *path;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.3BSD)@{par}

@{b}Function@{ub}@{par}
Das Verzeichnis "path" wird gelöscht.@{par}

Bei Definition von @{" STORMAMIGA_UNIXPATH " link STORMAMIGA_UNIXPATH} können für diese
Funktionen auch Pfadangaben im Unix-Format verwendet
werden.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst 0.@{par}
@endnode

@node unlink
@{fg shine}unlink@{fg text}@{par}
Link löschen@{par}

@{b}Usage@{ub}@{par}
#include <unistd.h>@{par}

r = unlink(name);@{par}

int r;@{par}
const char *name;@{par}

@{b}Standard@{ub}@{par}
not (yet) (Version 6 AT&T UNIX)@{par}

@{b}Function@{ub}@{par}
Es wird der Link "name" gelöscht.@{par}

Bei Definition von @{" STORMAMIGA_UNIXPATH " link STORMAMIGA_UNIXPATH} können für diese
Funktionen auch Pfadangaben im Unix-Format verwendet
werden.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst 0.@{par}
@endnode

@node sleep
@{fg shine}sleep@{fg text}@{par}
stoppt den aktuellen Prozeß@{par}

@{b}Usage@{ub}@{par}
#include <unistd.h>@{par}

r = sleep(n);@{par}

void r;@{par}
unsigned int n;@{par}

@{b}Standard@{ub}@{par}
not (yet) (Version 7 AT&T UNIX)@{par}

@{b}Function@{ub}@{par}
Der aktuelle Prozeß wird für "n" Sekunden gestoppt.@{par}

@{b}Return@{ub}@{par}
none@{par}
@endnode

@node usleep
@{fg shine}usleep@{fg text}@{par}
stoppt den aktuellen Prozeß@{par}

@{b}Usage@{ub}@{par}
#include <unistd.h>@{par}

r = usleep(n);@{par}

void r;@{par}
unsigned int n;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.3BSD)@{par}

@{b}Function@{ub}@{par}
Der aktuelle Prozeß wird für "n" Mikrosekunden gestoppt.@{par}

@{b}Return@{ub}@{par}
none@{par}
@endnode

@node getcwd
@{fg shine}getcwd@{fg text}@{par}
Verzeichnisname ermitteln@{par}

@{b}Usage@{ub}@{par}
#include <unistd.h>@{par}

r = getcwd(buf, n);@{par}

char *r;@{par}
char *buf;@{par}
size_t n;@{par}

@{b}Standard@{ub}@{par}
ANSI C3.159-1989 ("ANSI C")@{par}

@{b}Function@{ub}@{par}
Es wird der Name des aktuellen Arbeitsverzeichnisses nach
"buf" kopiert und ein Zeiger ("r") auf "buf" zurückgegeben.
Die Größe von "buf" wird mit "n" angegeben.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall 0, sonst ein Zeiger auf "buf".@{par}
@endnode

@node getwd
@{fg shine}getwd@{fg text}@{par}
Verzeichnisname ermitteln@{par}

@{b}Usage@{ub}@{par}
#include <unistd.h>@{par}

r = getwd(buf);@{par}

char *r;@{par}
char *buf;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.0BSD)@{par}

@{b}Function@{ub}@{par}
Es wird der Name des aktuellen Arbeitsverzeichnisses nach
"buf" kopiert und ein Zeiger ("r") auf "buf" zurückgegeben.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall 0, sonst ein Zeiger auf "buf".@{par}
@endnode

@node mktemp
@{fg shine}mktemp@{fg text}@{par}
erzeugt einen temporären Dateinamen@{par}

@{b}Usage@{ub}@{par}
#include <unistd.h>@{par}

r = mktemp(template);@{par}

char *r;@{par}
char *template;@{par}

@{b}Standard@{ub}@{par}
not (yet) (Version 7 AT&T UNIX)@{par}

@{b}Function@{ub}@{par}
Es wird der temporäre Dateiname "template" erzeugt und ein
Zeiger darauf zurückgegeben.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall 0, sonst ein Zeiger auf "template".@{par}
@endnode

@node close
@{fg shine}close@{fg text}@{par}
schließt einen File Descriptor@{par}

@{b}Usage@{ub}@{par}
#include <unistd.h>@{par}

r = close(fd);@{par}

int r;@{par}
int fd;@{par}

@{b}Standard@{ub}@{par}
IEEE Std1003.1-1988 ("POSIX")@{par}

@{b}Function@{ub}@{par}
Es wird der File Descriptor "fd" geschlossen.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst 0.@{par}
@endnode

@node lseek
@{fg shine}lseek@{fg text}@{par}
positioniert den Schreib- und Lesezeiger@{par}

@{b}Usage@{ub}@{par}
#include <unistd.h>@{par}

r = lssek(fd, offset, whence);@{par}

off_t r;@{par}
int fd;@{par}
off_t offset;@{par}
int whence;@{par}

@{b}Standard@{ub}@{par}
IEEE Std1003.1-1988 ("POSIX")@{par}

@{b}Function@{ub}@{par}
Der Schreib- und Lesezeiger von "fd" wird an eine neue Position
gesetzt. Der Parameter "offset" gibt die Position relativ zur
Startposition, die sich aus dem Modus "whence" ergibt, an.@{par}

Als Moduswerte sind erlaubt:@{par}

SEEK_CUR: Der Offset wird von der aktuellen Position gezählt und
kann daher positiv oder negativ sein.@{par}
SEEK_SET: Der Offset wird vom Anfang der Datei gezählt und sollte
positiv sein.@{par}
SEEK_END: Der Offset wird vom Ende der Datei gezählt und sollte
negativ sein.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst die aktuelle Position.@{par}
@endnode

@node read
@{fg shine}read@{fg text}@{par}
Eingaben lesen@{par}

@{b}Usage@{ub}@{par}
#include <unistd.h>@{par}

r = read(fd, buf, n);@{par}

ssize_t r;@{par}
int fd;@{par}
void *buf;@{par}
size_t n;@{par}

@{b}Standard@{ub}@{par}
IEEE Std1003.1-1988 ("POSIX")@{par}

@{b}Function@{ub}@{par}
Es werden maximal "n" Zeichen aus "fd" in "buf" gelesen.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst die Anzahl der gelesenen Zeichen.@{par}
@endnode

@node write
@{fg shine}write@{fg text}@{par}
Ausgaben schreiben@{par}

@{b}Usage@{ub}@{par}
#include <unistd.h>@{par}

r = write(fd, buf, n);@{par}

ssize_t r;@{par}
int fd;@{par}
const void *buf;@{par}
size_t n;@{par}

@{b}Standard@{ub}@{par}
IEEE Std1003.1-1988 ("POSIX")@{par}

@{b}Function@{ub}@{par}
Es werden "n" Zeichen aus "buf" in "fd" geschrieben.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst die Anzahl der geschriebenen Zeichen.@{par}
@endnode
///
/// fcntl-functions
@node creat
@{fg shine}creat@{fg text}@{par}
erzeugt eine neue Datei@{par}

@{b}Usage@{ub}@{par}
#include <fcntl.h>@{par}

r = creat(path, mode);@{par}

int r;@{par}
const char *path;@{par}
mode_t mode;@{par}

@{b}Standard@{ub}@{par}
(noch) keiner (Version 6 AT&T UNIX)@{par}

@{b}Function@{ub}@{par}
Es wird die Datei "path" in dem angegebenem Modus "mode"
erzeugt.@{par}

Bei Definition von @{" STORMAMIGA_UNIXPATH " link STORMAMIGA_UNIXPATH} können für diese
Funktionen auch Pfadangaben im Unix-Format verwendet
werden.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst den File Descriptor.@{par}
@endnode

@node open
@{fg shine}open@{fg text}@{par}
erzeugt oder öffnet eine Datei@{par}

@{b}Usage@{ub}@{par}
#include <fcntl.h>@{par}

r = open(path, flags, ...);@{par}

int r;@{par}
const char *path;@{par}
int flags;@{par}

@{b}Standard@{ub}@{par}
(noch) keiner (Version 6 AT&T UNIX)@{par}

@{b}Function@{ub}@{par}
Es wird die Datei "path" in dem bei "flags" angegebenem Modus
erzeugt oder geöffnet.@{par}

Bei Definition von @{" STORMAMIGA_UNIXPATH " link STORMAMIGA_UNIXPATH} können für diese
Funktionen auch Pfadangaben im Unix-Format verwendet
werden.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst den File Descriptor.@{par}
@endnode
///
/// dirent-functions
@node closedir
@{fg shine}closedir@{fg text}@{par}
Verzeichnis schließen@{par}

@{b}Usage@{ub}@{par}
#include <dirent.h>@{par}

r = closedir(dirp);@{par}

int r;@{par}
DIR *dirp;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.2BSD)@{par}

@{b}Function@{ub}@{par}
Es wird das, in "dirp" benannte, Verzeichnis geschlossen und
die zugehörige Struktur freigegeben.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst 0.@{par}
@endnode

@node opendir
@{fg shine}opendir@{fg text}@{par}
Verzeichnis öffnen@{par}

@{b}Usage@{ub}@{par}
#include <dirent.h>@{par}

r = opendir(name);@{par}

DIR *r;@{par}
const char *name;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.2BSD)@{par}

@{b}Function@{ub}@{par}
Es wird das Verzeichnis "name" geöffnet.@{par}

Bei Definition von @{" STORMAMIGA_UNIXPATH " link STORMAMIGA_UNIXPATH} können für diese
Funktionen auch Pfadangaben im Unix-Format verwendet
werden.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall 0, sonst ein Zeiger auf den directory stream.@{par}
@endnode

@node readdir
@{fg shine}readdir@{fg text}@{par}
Verzeichnis lesen@{par}

@{b}Usage@{ub}@{par}
#include <dirent.h>@{par}

r = readdir(dirp);@{par}

struct dirent *r;@{par}
DIR *dirp;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.2BSD)@{par}

@{b}Function@{ub}@{par}
Es wird der nächste Verzeichniseintrag, des in "dirp" benannten
Verzeichnisses, gelesen.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall oder am Ende des Verzeichnisses 0, sonst ein Zeiger
auf den nächsten Verzeichniseintrag.@{par}
@endnode

@node rewinddir
@{fg shine}rewinddir@{fg text}@{par}
Verzeichnisposition zurücksetzen@{par}

@{b}Usage@{ub}@{par}
#include <dirent.h>@{par}

r = rewinddir(dirp);@{par}

void r;@{par}
DIR *dirp;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.2BSD)@{par}

@{b}Function@{ub}@{par}
Es wird die Position, des in "dirp" benannten Verzeichnisses,
an den Anfang des Verzeichnisses zurückgesetzt.@{par}

@{b}Return@{ub}@{par}
none@{par}
@endnode
///
/// resource-functions
@node getrusage
@{fg shine}getrusage@{fg text}@{par}
ermittelt Informationen zum aktuellen Prozess oder dessen Unterprozesse@{par}

@{b}Usage@{ub}@{par}
#include <sys/resource.h>@{par}

r = getrusage(who, rusage);@{par}

int r;@{par}
int who;@{par}
struct rusage *rusage;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.2BSD)@{par}

@{b}Function@{ub}@{par}
Es werden Informationen zum aktuellen Prozess oder zu dessen Unterprozessen
ermittelt und in "rusage" ausgegeben. Mit "who" wird angegeben ob
Informationen zum aktuellen Prozess oder zu dessen Unterprozessen ermittelt
werden sollen. Für den aktuellen Prezess wird für "who" "RUSAGE_SELF", für
dessen Unterprozesse wird "RUSAGE_CHILDREN" angegeben.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst 0.@{par}
@endnode
///
/// stat-functions
@node chmod
@{fg shine}chmod@{fg text}@{par}
ändert den Zugriffsmodus von Dateien@{par}

@{b}Usage@{ub}@{par}
#include <sys/stat.h>@{par}

r = chmod(path, mode);@{par}

int r;@{par}
const char *path;@{par}
mode_t mode;@{par}

@{b}Standard@{ub}@{par}
IEEE Std1003.1-1988 ("POSIX")@{par}

@{b}Function@{ub}@{par}
Der Zugriffsmodus von "path" wird in den Modus "mode" geändert.@{par}

Bei Definition von @{" STORMAMIGA_UNIXPATH " link STORMAMIGA_UNIXPATH} können für diese
Funktionen auch Pfadangaben im Unix-Format verwendet
werden.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst 0.@{par}
@endnode

@node mkdir
@{fg shine}mkdir@{fg text}@{par}
Verzeichnis anlegen@{par}

@{b}Usage@{ub}@{par}
#include <sys/stat.h>@{par}

r = mkdir(path, mode);@{par}

int r;@{par}
const char *path;@{par}
mode_t mode;@{par}

@{b}Standard@{ub}@{par}
IEEE Std1003.1-1988 ("POSIX")@{par}

@{b}Function@{ub}@{par}
Es wird das Verzeichnis "path" mit dem Zugriffsmodus "mode" angelegt.@{par}

Bei Definition von @{" STORMAMIGA_UNIXPATH " link STORMAMIGA_UNIXPATH} können für diese
Funktionen auch Pfadangaben im Unix-Format verwendet
werden.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst 0.@{par}
@endnode

@node stat
@{fg shine}stat@{fg text}@{par}
Status von Dateien ermitteln@{par}

@{b}Usage@{ub}@{par}
#include <sys/stat.h>@{par}

r = stat(path, sb);@{par}

int r;@{par}
const char *path;@{par}
struct stat *sb;@{par}

@{b}Standard@{ub}@{par}
IEEE Std1003.1-1988 ("POSIX")@{par}

@{b}Function@{ub}@{par}
Es werden Informationen der Datei "path" ermittelt. "sb" ist ein Zeiger auf
die Struktur stat.@{par}

Bei Definition von @{" STORMAMIGA_UNIXPATH " link STORMAMIGA_UNIXPATH} können für diese
Funktionen auch Pfadangaben im Unix-Format verwendet
werden.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst 0.@{par}
@endnode

@node lstat
@{fg shine}lstat@{fg text}@{par}
Status von Links ermitteln@{par}

@{b}Usage@{ub}@{par}
#include <sys/stat.h>@{par}

r = lstat(path, sb);@{par}

int r;@{par}
const char *path;@{par}
struct stat *sb;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.2BSD)@{par}

@{b}Function@{ub}@{par}
Es werden Informationen des Links "path" ermittelt. "sb" ist ein Zeiger auf
die Struktur stat.@{par}

Bei Definition von @{" STORMAMIGA_UNIXPATH " link STORMAMIGA_UNIXPATH} können für diese
Funktionen auch Pfadangaben im Unix-Format verwendet
werden.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst 0.@{par}
@endnode

@node fstat
@{fg shine}fstat@{fg text}@{par}
Status von Dateien ermitteln@{par}

@{b}Usage@{ub}@{par}
#include <sys/stat.h>@{par}

r = fstat(fd, sb);@{par}

int r;@{par}
int fd;@{par}
struct stat *sb;@{par}

@{b}Standard@{ub}@{par}
IEEE Std1003.1-1988 ("POSIX")@{par}

@{b}Function@{ub}@{par}
Es werden Informationen über "fd" ermittelt. "sb" ist ein Zeiger auf
die Struktur stat.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst 0.@{par}
@endnode
///
/// string-functions
@node strcoll
@{fg shine}strcoll@{fg text}@{par}
Compare two strings using the actual language.@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = strcoll (s1, s2);@{par}

int r;@{par}
const char *s1;@{par}
const char *s2;@{par}

@{b}Standard@{ub}@{par}
ANSI C3.159-1989 ("ANSI C")@{par}

@{b}Function@{ub}@{par}
Compare the strings "s1" and "s2" character by character.
Because "stormamiga.lib" does not use ANSI-Localization,
the actual language is not supported.@{par}
This function is only for compatibility reasons implemented (e.g.: GNU C).@{par}
@{code}
@{b}Return@{ub}
< 0 if s1 < s2
= 0 if s1 = s2
> 0 if s1 > s2
@endnode

@node strxfrm
@{fg shine}strxfrm@{fg text}@{par}
Copy a string using the actual language.@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = strxfrm (dest, source, n);@{par}

int r;@{par}
char *dest;@{par}
const char *source;@{par}
size_t n;@{par}

@{b}Standard@{ub}@{par}
ANSI C3.159-1989 ("ANSI C")@{par}

@{b}Function@{ub}@{par}
Copies max. "n" bytes of string "source" to "dest".
Because "stormamiga.lib" does not use ANSI-Localization,
the actual language is not supported.@{par}
This function is only for compatibility reasons implemented (e.g.: GNU C).@{par}

@{b}Return@{ub}@{par}
The length of the copied string "source" with no '\\0'.@{par}
@endnode

@node bcmp
@{fg shine}bcmp@{fg text}@{par}
Compare two memoryblocks using a maximal size.@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = bcmp (b1, b2, n);@{par}

int r;@{par}
const void *b1;@{par}
const void *b2;@{par}
size_t n;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.2BSD)@{par}

@{b}Function@{ub}@{par}
Compare memoryblocks "b1" and "b2" byte by byte with the size of maximal "n".
The two blocks must not overlap.@{par}
@{code}
@{b}Return@{ub}
< 0 if b1 < b2
= 0 if b1 = b2
> 0 if b1 > b2
@endnode

@node bcopy
@{fg shine}bcopy@{fg text}@{par}
Copy memory.@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = bcopy (source, dest, n);@{par}

void r;@{par}
const void *source;@{par}
void *dest;@{par}
size_t n;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.2BSD)@{par}

@{b}Function@{ub}@{par}
Copy "n" bytes of memoryblock "source" to "dest". The two blocks
must not overlap. If "n" is 0 nothing will be copied.@{par}

@{b}Return@{ub}@{par}
none@{par}
@endnode

@node bzero
@{fg shine}bzero@{fg text}@{par}
Overwrite memoryblock with NULL-bytes.@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = bzero (b, n);@{par}

void r;@{par}
void *b;@{par}
size_t n;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.3BSD)@{par}

@{b}Function@{ub}@{par}
Overwrite memoryblock "b" with "n" NULL-bytes.@{par}

This function is also available as @{" Inlinefunctions " link Inlinefunctions}.@{par}

@{b}Return@{ub}@{par}
none@{par}
@endnode

@node ffs
@{fg shine}ffs@{fg text}@{par}
Find first set bit in a bit-string.@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = ffs (value);@{par}

int r;@{par}
int value;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.3BSD)@{par}

@{b}Function@{ub}@{par}
Find first set bit in bit-string "value" and return its index.@{par}

@{b}Return@{ub}@{par}
Index of bit-string "value"@{par}
@endnode

@node index
@{fg shine}index@{fg text}@{par}
Search for the first appearance of a character in a string.@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = index (s, c);@{par}

char *r;@{par}
const char *s;@{par}
int c;@{par}

@{b}Standard@{ub}@{par}
not (yet) (Version 6 AT&T UNIX)@{par}

@{b}Function@{ub}@{par}
Search for the first appearance of character "c" in string "s"
und return a pointer to the first "c". Return 0 if "c" was not found.@{par}

@{b}Return@{ub}@{par}
A pointer to first appearance of character "c" or 0.@{par}
@endnode

@node rindex
@{fg shine}rindex@{fg text}@{par}
Search for the last appearance of a character in a string.@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = rindex (s, c);@{par}

char *r;@{par}
const char *s;@{par}
int c;@{par}

@{b}Standard@{ub}@{par}
not (yet) (Version 6 AT&T UNIX)@{par}

@{b}Function@{ub}
Search for the last appearance of character "c" in string "s"
und return a pointer to the last "c". Return 0 if "c" was not found.@{par}

@{b}Return@{ub}@{par}
A pointer to last appearance of character "c" or 0.@{par}
@endnode

@node memccpy
@{fg shine}memccpy@{fg text}@{par}
Copy memory@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = memccpy (dest, source, c, n);@{par}

void *r;@{par}
void *dest;@{par}
const void *source;@{par}
int c;@{par}
size_t n;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.3BSD)@{par}

@{b}Function@{ub}@{par}
Copy memory from "source" to "dest". If character "c" appears in "source"
memcopy stops and returns a pointer to the byte behind the copy of "c". Otherwise it
copies "n" bytes and returns 0.@{par}

@{b}Return@{ub}@{par}
A pointer to the character behind the copy of "c" in memoryblock
"dest" or 0.@{par}
@{code}
@{b}Example@{ub}
#define STORMAMIGA
#define STORMAMIGA_NOWB

#include <string.h>
#include <stdio.h>
#include <stormamiga.h>

int main__(void)
{
  cvoid *source = "This is a test.";
  void *dest[50];
  int c = 'e';
  size_t n = sizeof dest;

  memccpy(dest, source, c, n);
  puts((char *)dest);     /* "This is a te" */
  return NULL;
}
@endnode

@node strncpyn
@{fg shine}strncpyn@{fg text}@{par}
Copy a string with length limitation.@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = strncpyn (dest, source, n);@{par}

char *r;@{par}
char *dest;@{par}
const char *source;@{par}
size_t n;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
This function copies maximal "n" characters of string "source"
to string "dest". A '\\0' is always appended. Because of this strings
longer than "n" are cut down to "n-1" characters. Strings shorter than
"n" are filled up with extra '\\0' until "n". A pointer to the "dest"
string is returned.@{par}
@{code}
@{b}Return@{ub}
A pointer to the destination string "dest".

@{b}Example@{ub}
#define STORMAMIGA
#define STORMAMIGA_NOWB

#include <stdio.h>
#include <stormamiga.h>

int main__(void)
{
  cchar *source = "This is a test.";
  char dest[10];
  size_t n = 8;

  strncpyn(dest, source, n);
  puts(dest);     /* "This is" */
  return NULL;
}
@endnode

@node strsep
@{fg shine}strsep@{fg text}@{par}
Split strings.@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = strsep (s1, s2);@{par}

char *r;@{par}
char **s1;@{par}
char *s2;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
This function searches string "*s1" (with terminating 0) for the first
appearance of any character from string "s2". A matching character will
be replaced with '\\0' and the next character in "*s1" is marked. The original
value of string "*s1" is returned. If no character matches, the function will
return 0.@{par}
@{code}
@{b}Return@{ub}
Original value of string "*s1" or 0.

@{b}Example@{ub}
#define STORMAMIGA
#define STORMAMIGA_NOWB

#include <string.h>
#include <stdio.h>
#include <stormamiga.h>

int main__(void)
{
  char *s1 = "This is a test.";
  char *s2 = " ";
  char *r;

  r = strsep(&s1, s2);
  puts(s1);     /* "is a test." */
  puts(r);      /* "This" */
  return NULL;
}
@endnode

@node swab
@{fg shine}swab@{fg text}@{par}
Swap neighbored bytes.@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = swab (source, dest, n);@{par}

void r;@{par}
const void *source;@{par}
void *dest;@{par}
size_t n;@{par}

@{b}Standard@{ub}@{par}
not (yet) (Version 7 AT&T UNIX)@{par}

@{b}Function@{ub}@{par}
Copies "n" bytes from "source" to "dest" and swap the two neighbored
bytes. "n" has to be even.@{par}

@{b}Return@{ub}@{par}
none@{par}
@endnode

@node strnicmp
@{fg shine}strnicmp@{fg text}@{par}
vergleichen zweier Strings mit Beachtung einer Maximallänge@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = strnicmp (s1, s2, n);@{par}

int r;@{par}
const char *s1;@{par}
const char *s2;@{par}
size_t n;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Vergleicht die beiden Strings "s1" und "s2", bis maximal zum Zeichen
mit Index "n", Zeichen für Zeichen, ohne die Groß- oder Kleinschreibung
der Buchstaben zu beachten.@{par}
Aus Portabilitätsgründen werden keine Umlaute unterstützt.@{par}
@{code}
@{b}Return@{ub}
< 0 if s1 < s2
= 0 if s1 = s2
> 0 if s1 > s2
@endnode

@node strcasecmp
@{fg shine}strcasecmp@{fg text}@{par}
vergleichen zweier Strings@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = strcasecmp (s1, s2);@{par}

int r;@{par}
const char *s1;@{par}
const char *s2;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
Vergleicht die beiden Strings "s1" und "s2" Zeichen für Zeichen,
ohne die Groß- oder Kleinschreibung der Buchstaben zu beachten.@{par}
Aus Portabilitätsgründen werden keine Umlaute unterstützt.@{par}
@{code}
@{b}Return@{ub}
< 0 if s1 < s2
= 0 if s1 = s2
> 0 if s1 > s2
@endnode

@node strncasecmp
@{fg shine}strncasecmp@{fg text}@{par}
vergleichen zweier Strings mit Beachtung einer Maximallänge@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = strncasecmp (s1, s2, n);@{par}

int r;@{par}
const char *s1;@{par}
const char *s2;@{par}
size_t n;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
Vergleicht die beiden Strings "s1" und "s2", bis maximal zum Zeichen
mit Index "n", Zeichen für Zeichen, ohne die Groß- oder Kleinschreibung
der Buchstaben zu beachten.@{par}
Aus Portabilitätsgründen werden keine Umlaute unterstützt.@{par}
@{code}
@{b}Return@{ub}
< 0 if s1 < s2
= 0 if s1 = s2
> 0 if s1 > s2
@endnode

@node strlower
@{fg shine}strlower@{fg text}@{par}
wandelt die Großbuchstaben eines Strings in Kleinbuchstaben um@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = strlower (s);@{par}

char *r;@{par}
char *s;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
Falls ein oder mehrere Zeichen des Strings "s" Großbuchstabe sind,
werden sie in Kleinbuchstaben umgewandelt, ansonsten bleiben sie
unverändert.@{par}
Aus Portabilitätsgründen werden keine Umlaute unterstützt.@{par}

@{b}Return@{ub}@{par}
Der umgewandelte String "s".@{par}
@endnode

@node strupper
@{fg shine}strupper@{fg text}@{par}
wandelt die Kleinbuchstaben eines Strings in Großbuchstaben um@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = strupper (s);@{par}

char *r;@{par}
char *s;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
Falls ein oder mehrere Zeichen des Strings "s" Kleinbuchstaben sind,
werden sie in Großbuchstaben umgewandelt, ansonsten bleiben sie
unverändert.@{par}
Aus Portabilitätsgründen werden keine Umlaute unterstützt.@{par}

@{b}Return@{ub}@{par}
Der umgewandelte String "s".@{par}
@endnode

@node stricmp_d
@{fg shine}stricmp_d@{fg text}@{par}
vergleichen zweier Strings@{par}
@{i}german Version of "stricmp"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = stricmp_d (s1, s2);@{par}

int r;@{par}
const char *s1;@{par}
const char *s2;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Vergleicht die beiden Strings "s1" und "s2" Zeichen für Zeichen,
ohne die Groß- oder Kleinschreibung der Buchstaben zu beachten.@{par}
The german Umlaute "ä", "ö", "ü", "Ä", "Ö" and "Ü" are supported.
Because "ß" cannot be capitalized, it is not supported.@{par}

Look at @{" german functions " link "german functions"}.@{par}
@{code}
@{b}Return@{ub}
< 0 if s1 < s2
= 0 if s1 = s2
> 0 if s1 > s2
@endnode

@node strnicmp_d
@{fg shine}strnicmp_d@{fg text}@{par}
vergleichen zweier Strings mit Beachtung einer Maximallänge@{par}
@{i}german Version of "strnicmp"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = strnicmp_d (s1, s2, n);@{par}

int r;@{par}
const char *s1;@{par}
const char *s2;@{par}
size_t n;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Vergleicht die beiden Strings "s1" und "s2", bis maximal zum Zeichen
mit Index "n", Zeichen für Zeichen, ohne die Groß- oder Kleinschreibung
der Buchstaben zu beachten.@{par}
The german Umlaute "ä", "ö", "ü", "Ä", "Ö" and "Ü" are supported.
Because "ß" cannot be capitalized, it is not supported.@{par}

Look at @{" german functions " link "german functions"}.@{par}
@{code}
@{b}Return@{ub}
< 0 if s1 < s2
= 0 if s1 = s2
> 0 if s1 > s2
@endnode

@node strcasecmp_d
@{fg shine}strcasecmp_d@{fg text}@{par}
vergleichen zweier Strings@{par}
@{i}german Version of "strcasecmp"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = strcasecmp_d (s1, s2);@{par}

int r;@{par}
const char *s1;@{par}
const char *s2;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Vergleicht die beiden Strings "s1" und "s2" Zeichen für Zeichen,
ohne die Groß- oder Kleinschreibung der Buchstaben zu beachten.@{par}
The german Umlaute "ä", "ö", "ü", "Ä", "Ö" and "Ü" are supported.
Because "ß" cannot be capitalized, it is not supported.@{par}

Look at @{" german functions " link "german functions"}.@{par}
@{code}
@{b}Return@{ub}
< 0 if s1 < s2
= 0 if s1 = s2
> 0 if s1 > s2
@endnode

@node strncasecmp_d
@{fg shine}strncasecmp_d@{fg text}@{par}
vergleichen zweier Strings mit Beachtung einer Maximallänge@{par}
@{i}german Version of "strncasecmp"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = strncasecmp_d (s1, s2, n);@{par}

int r;@{par}
const char *s1;@{par}
const char *s2;@{par}
size_t n;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Vergleicht die beiden Strings "s1" und "s2", bis maximal zum Zeichen
mit Index "n", Zeichen für Zeichen, ohne die Groß- oder Kleinschreibung
der Buchstaben zu beachten.@{par}
The german Umlaute "ä", "ö", "ü", "Ä", "Ö" and "Ü" are supported.
Because "ß" cannot be capitalized, it is not supported.@{par}

Look at @{" german functions " link "german functions"}.@{par}
@{code}
@{b}Return@{ub}
< 0 if s1 < s2
= 0 if s1 = s2
> 0 if s1 > s2
@endnode

@node strlower_d
@{fg shine}strlower_d@{fg text}@{par}
wandelt die Großbuchstaben eines Strings in Kleinbuchstaben um@{par}
@{i}german Version of "strlower"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = strlower_d (s);@{par}

char *r;@{par}
char *s;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Falls ein oder mehrere Zeichen des Strings "s" Großbuchstabe sind,
werden sie in Kleinbuchstaben umgewandelt, ansonsten bleiben sie
unverändert.@{par}
The german Umlaute "ä", "ö", "ü", "Ä", "Ö" and "Ü" are supported.
Because "ß" cannot be capitalized, it is not supported.@{par}

Look at @{" german functions " link "german functions"}.@{par}

@{b}Return@{ub}@{par}
Der umgewandelte String "s".@{par}
@endnode

@node strupper_d
@{fg shine}strupper_d@{fg text}@{par}
wandelt die Kleinbuchstaben eines Strings in Großbuchstaben um@{par}
@{i}german Version of "strupper"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = strupper_d (s);@{par}

char *r;@{par}
char *s;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Falls ein oder mehrere Zeichen des Strings "s" Kleinbuchstaben sind,
werden sie in Großbuchstaben umgewandelt, ansonsten bleiben sie
unverändert.@{par}
The german Umlaute "ä", "ö", "ü", "Ä", "Ö" and "Ü" are supported.
Because "ß" cannot be capitalized, it is not supported.@{par}

Look at @{" german functions " link "german functions"}.@{par}

@{b}Return@{ub}@{par}
Der umgewandelte String "s".@{par}
@endnode

@node strlwr_d
@{fg shine}strlwr_d@{fg text}@{par}
wandelt die Großbuchstaben eines Strings in Kleinbuchstaben um@{par}
@{i}german Version of "strlwr"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = strlwr_d (s);@{par}

char *r;@{par}
char *s;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Falls ein oder mehrere Zeichen des Strings "s" Großbuchstabe sind,
werden sie in Kleinbuchstaben umgewandelt, ansonsten bleiben sie
unverändert.@{par}
The german Umlaute "ä", "ö", "ü", "Ä", "Ö" and "Ü" are supported.
Because "ß" cannot be capitalized, it is not supported.@{par}

Look at @{" german functions " link "german functions"}.@{par}

@{b}Return@{ub}@{par}
Der umgewandelte String "s".@{par}
@endnode

@node strupr_d
@{fg shine}strupr_d@{fg text}@{par}
wandelt die Kleinbuchstaben eines Strings in Großbuchstaben um@{par}
@{i}german Version of "strupr"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = strupr_d (s);@{par}

char *r;@{par}
char *s;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Falls ein oder mehrere Zeichen des Strings "s" Kleinbuchstaben sind,
werden sie in Großbuchstaben umgewandelt, ansonsten bleiben sie
unverändert.@{par}
Look at @{" german functions " link "german functions"}.@{par}

@{b}Return@{ub}@{par}
Der umgewandelte String "s".@{par}
@endnode

@node strdup
@{fg shine}strdup@{fg text}@{par}
speichert die Kopie eines Strings@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = strdup (s);@{par}

char *r;@{par}
const char *s;@{par}

@{b}Standard@{ub}@{par}
not (yet) (BSD)@{par}

@{b}Function@{ub}@{par}
"strdup" reserviert ausreichend Speicher für eine Kopie des Strings "s",
kopiert diesen, und gibt einen Zeiger auf die Kopie zurück. Dieser
Zeiger kann später als Argument für die Funktion @{" free " link "StormC:StormSYS/Help/StormReference.guide/free"} verwendet werden.@{par}

@{b}Return@{ub}@{par}
Einen Zeiger auf die Kopie des Strings "s".@{par}
@endnode

@node stpchr
@{fg shine}stpchr@{fg text}@{par}
sucht das erste Vorkommen eines Zeichens in einem String@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = stpchr (s, c);@{par}

char *r;@{par}
const char *s;@{par}
int c;@{par}

@{b}Standard@{ub}@{par}
not (yet) (UNIX)@{par}

@{b}Function@{ub}@{par}
Sucht das erste Vorkommen des Zeichens "c" in dem String "s"
und gibt einen Zeiger auf das erste gefundene Zeichen "c"
zurück. Das abschließende Nullzeichen des String "s" wird
ignoriert. Wenn das Zeichen "c" nicht gefunden wird, wird 0
zurückgegeben.@{par}

@{b}Return@{ub}@{par}
Ein Zeiger auf das erste gefundene Zeichen "c" oder 0.@{par}
@{code}
@{b}Example@{ub}
#define STORMAMIGA
#define STORMAMIGA_NOWB

#include <string.h>
#include <stdio.h>
#include <stormamiga.h>

int main__(void)
{
  char *s = "This is a test.";
  char *r;
  int c = ' ';

  r = stpchr(s, c);
  puts(r);     /* " is a test" */
  return NULL;
}
@endnode

@node stpcpy
@{fg shine}stpcpy@{fg text}@{par}
kopieren eines Strings@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = stpcpy (dest, source);@{par}

char *r;@{par}
char *dest;@{par}
const char *source;@{par}

@{b}Standard@{ub}@{par}
not (yet) (UNIX)@{par}

@{b}Function@{ub}@{par}
Der String "source" wird in den String "dest" kopiert. Der
String "dest" muß mindestens so groß wie der String "source" +1
(für das abschließende Nullzeichen) sein. Es wird immer ein
Zeiger auf das Nullzeichen des Zielstring "dest" zurückgegeben@{par}

@{b}Return@{ub}@{par}
Ein Zeiger auf das Nullzeichen des Zielstrings "dest".@{par}
@{code}
@{b}Example@{ub}
#define STORMAMIGA
#define STORMAMIGA_NOWB

#include <string.h>
#include <stdio.h>
#include <stormamiga.h>

int main__(void)
{
  cchar *source1 = "This is a ";
  cchar *source2 = "test.";
  char dest[50];
  char *r;

  r = stpcpy(dest, source1);
  stpcpy(r, source2);
  puts(dest);     /* "This is a test." */
  return NULL;
}
@endnode

@node strins
@{fg shine}strins@{fg text}@{par}
einfügen eines Strings in einen anderen String@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = strins (dest, source);@{par}

void r;@{par}
char *dest;@{par}
const char *source;@{par}

@{b}Standard@{ub}@{par}
not (yet) (Specialfunction from "DICE")@{par}

@{b}Function@{ub}@{par}
Der String "source" wird in den String "dest" eingefügt. Dabei
muß der String "dest" groß genug sein, um den String "source"
aufzunehmen.@{par}

@{b}Return@{ub}@{par}
none@{par}
@{code}
@{b}Example@{ub}
#define STORMAMIGA
#define STORMAMIGA_NOWB

#include <string.h>
#include <stdio.h>
#include <stormamiga.h>

int main__(void)
{
  cchar *source1 = "This is a test.";
  cchar *source2 = "new ";
  char dest[50];

  strcpy(dest, source1);
  strins(dest + 10, source2);
  puts(dest);     /* "This is a new test." */
  return NULL;
}
@endnode

@node strbpl
@{fg shine}strbpl@{fg text}@{par}
Zerlegt eine Stringreihe in einzelne Strings@{par}

@{b}Usage@{ub}@{par}
#include <string_stormamiga.h>@{par}

r = strbpl(av, n, sary);@{par}

int r;@{par}
char **av;@{par}
int n;@{par}
const char *sary;@{par}

@{b}Standard@{ub}@{par}
not (yet) (Specialfunction from "DICE")@{par}

@{b}Function@{ub}@{par}
Es wird die Stringreihe "sary" in einzelne Strings Zerlegt.@{par}
Die Stringreihe "sary" besteht aus mehreren Strings mit abschließendem
Nullzeichen. Mit "n" wird die maximale Anzahl von Einträgen in "av"
angegeben.@{par}

@{b}Return@{ub}@{par}
Anzahl der Strings die in "av" geladen wurden. Das letzte Nullzeichen
wird ignoriert.@{par}
@{code}
@{b}Example@{ub}
#define STORMAMIGA
#define STORMAMIGA_NOWB

#include <string.h>
#include <stdio.h>
#include <stormamiga.h>

int main__(void)
{
  char *sary = "This\0is\0a\0test.\0\0";
  char *av[17];
  int n = sizeof av / sizeof av[0];

  strbpl(av, n, sary);
  puts(av[0]);    /* "This" */
  puts(av[1]);    /* "is" */
  puts(av[2]);    /* "a" */
  puts(av[3]);    /* "test." */
  return NULL;
}
@endnode
///
/// ctype-functions
@node isalnum_d
@{fg shine}isalnum_d@{fg text}@{par}
Tests for a character or number.@{par}
@{i}german version of "isalnum"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = isalnum_d (ch);@{par}

int r;@{par}
int ch;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
This function tests, if "ch" is a character or a number.@{par}
The german Umlaute "ä", "ö", "ü", "ß", "Ä", "Ö" and "Ü" are supported.@{par}

Look at @{" german functions " link "german functions"}.@{par}

@{b}Return@{ub}@{par}
0 if "ch" is neither a character nor a number, otherwise a value != 0@{par}
@endnode

@node isalpha_d
@{fg shine}isalpha_d@{fg text}@{par}
Tests for a character@{par}
@{i}german version of "isalpha"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = isalpha_d (ch);@{par}

int r;@{par}
int ch;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
This function tests, if "ch" is a character.@{par}
The german Umlaute "ä", "ö", "ü", "ß", "Ä", "Ö" and "Ü" are supported.@{par}

Look at @{" german functions " link "german functions"}.@{par}

@{b}Return@{ub}@{par}
0 if "ch" is not a character, otherwise a value != 0@{par}
@endnode

@node islower_d
@{fg shine}islower_d@{fg text}@{par}
Tests for small letters.@{par}
@{i}german version of "islower"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = islower_d (ch);@{par}

int r;@{par}
int ch;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
This function tests, if "ch" is a small letter.@{par}
The german Umlaute "ä", "ö", "ü", "ß", "Ä", "Ö" and "Ü" are supported.@{par}

Look at @{" german functions " link "german functions"}.@{par}

@{b}Return@{ub}@{par}
0 if "ch" is not a small character, otherwise a value != 0@{par}
@endnode

@node isprint_d
@{fg shine}isprint_d@{fg text}@{par}
Tests for printable characters.@{par}
@{i}german version of "isprint"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = isprint_d (ch);@{par}

int r;@{par}
int ch;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
This function tests, if "ch" is a printable character.@{par}
The german Umlaute "ä", "ö", "ü", "ß", "Ä", "Ö" and "Ü" are supported.@{par}

Look at @{" german functions " link "german functions"}.@{par}

@{b}Return@{ub}@{par}
0 if "ch" is not a printable character, otherwise a value != 0@{par}
@endnode

@node ispunct_d
@{fg shine}ispunct_d@{fg text}@{par}
Tests for special characters.@{par}
@{i}german version of "ispunct"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = ispunct_d (ch);@{par}

int r;@{par}
int ch;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
This function tests, if "ch" is a special character.@{par}
The german Umlaute "ä", "ö", "ü", "ß", "Ä", "Ö" and "Ü" belong not to
the special characters.@{par}

Look at @{" german functions " link "german functions"}.@{par}

@{b}Return@{ub}@{par}
0 if "ch" is not a special character, otherwise a value != 0@{par}
@endnode

@node isupper_d
@{fg shine}isupper_d@{fg text}@{par}
Tests for a capitalized letter@{par}
@{i}german version of "isupper"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = isupper_d (ch);@{par}

int r;@{par}
int ch;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
This function tests, if "ch" is a capitalized character.@{par}
The german Umlaute "ä", "ö", "ü", "Ä", "Ö" and "Ü" are supported.
Because "ß" cannot be capitalized, it is not supported.@{par}

Look at @{" german functions " link "german functions"}.@{par}

@{b}Return@{ub}@{par}
0 if "ch" is not a capitalized character, otherwise a value != 0@{par}
@endnode

@node tolower_d
@{fg shine}tolower_d@{fg text}@{par}
Convert capital letters into small ones.@{par}
@{i}german version of "tolower"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = tolower_d (ch);@{par}

int r;@{par}
int ch;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
If "ch" is a capital letter, it will be converted into a small one.
Otherwise it changes nothing.@{par}
The german Umlaute "ä", "ö", "ü", "Ä", "Ö" and "Ü" are supported.
Because "ß" cannot be capitalized, it is not supported.@{par}

Look at @{" german functions " link "german functions"}.@{par}

@{b}Return@{ub}@{par}
converted character@{par}
@endnode

@node toupper_d
@{fg shine}toupper_d@{fg text}@{par}
Convert small letters into capital ones.@{par}
@{i}german version of "toupper"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = toupper_d (ch);@{par}

int r;@{par}
int ch;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
If "ch" is a small letter, it will be converted into a capital one.
Otherwise it changes nothing.@{par}
The german Umlaute "ä", "ö", "ü", "Ä", "Ö" and "Ü" are supported.
Because "ß" cannot be capitalized, it is not supported.@{par}

Look at @{" german functions " link "german functions"}.@{par}

@{b}Return@{ub}@{par}
converted character@{par}
@endnode
///
/// assert-functions
@node assert_
@{fg shine}assert@{fg text}@{par}
Test for a specific condition and interrupt the programm.@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

assert_ (x);@{par}

int x;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Look at @{" assert " link "StormC:StormSYS/Help/StormReference.guide/assert"}.@{par}
The only difference to "assert" is that "assert_" uses "printf_"
and not "printf".@{par}
@endnode
///
/// time-functions
@node strftime
@{fg shine}strftime@{fg text}@{par}
Formated output of date and time into stringbuffer "s".@{par}
@{i}Extended version of "strftime" of "storm.lib".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <time.h>@{par}

r = strftime (s, size, format, tp);@{par}

size_t r;@{par}
char *s;@{par}
size_t size;@{par}
const char *format;@{par}
const struct tm *tp;@{par}

@{b}Standard@{ub}@{par}
ANSI C3.159-1989 ("ANSI C")@{par}

@{b}Function@{ub}@{par}
Formated output of date and time into @{" stringbuffer " link stringbuffer} "s".
The @{" timeformatstring " link timeformatstring} "format" describes the outputformat.@{par}

@{b}Return@{ub}@{par}
No. of printed characters.@{par}
@endnode

@node strftime_d
@{fg shine}strftime_d@{fg text}@{par}
Formated output of date and time into stringbuffer "s".@{par}
@{i}Extended german version of "strftime" of "storm.lib".@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = strftime_d (s, size, format, tp);@{par}

size_t r;@{par}
char *s;@{par}
size_t size;@{par}
const char *format;@{par}
const struct tm *tp;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Formated output of date and time into @{" stringbuffer " link stringbuffer} "s".
The @{" timeformatstring " link timeformatstring} "format" describes the outputformat.@{par}
Names of months and days are printed in german.@{par}

Look at @{" german functions " link "german functions"}.@{par}

@{b}Return@{ub}@{par}
No. of printed characters.@{par}
@endnode

@node asctime_d
@{fg shine}asctime_d@{fg text}@{par}
Generate a string from date and time.@{par}
@{i}german Version of "asctime"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

tp = asctime_d (t);@{par}

char *tp;@{par}
const struct tm *t;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
"asctime_d" converts the time from "*t" to a string of the form
"Mit Okt 07 01:03:42 1992". This string is internally buffered and
the function returns a pointer to this buffer.@{par}
Names of months and days are printed in german.@{par}

Look at @{" german functions " link "german functions"}.@{par}

@{b}Return@{ub}@{par}
This function returns an ASCII-text with the exact length of 26 characters.@{par}
The format of this text is:@{par}
    "DDD MMM dd hh:mm:ss YYYY"@{par}

DDD = day of week, MMM = month, dd = day of month,
hh:mm:ss = hour:minute:second and YYYY = year.@{par}
For example:@{par}
    "Mit Okt 25 12:05:43 1995"
@endnode

@node ctime_d
@{fg shine}ctime_d@{fg text}@{par}
Converts a time-value to an ASCII-Text.@{par}
@{i}german version of "ctime"@{ui}@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

s = ctime_d (t);@{par}

char *s;@{par}
const time_t *t;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
"ctime_d" is identical to "asctime_d (localtime (t))", it converts a
"time_t"-value into string.@{par}
Names of months and days are printed in german.@{par}

Look at @{" german functions " link "german functions"}.@{par}

This function is also available as @{" Inlinefunctions " link Inlinefunctions}.@{par}

@{b}Return@{ub}@{par}
This function returns an ASCII-text with the exact length of 26 characters.@{par}
The format of this text is:@{par}
    "DDD MMM dd hh:mm:ss YYYY"@{par}

DDD = day of week, MMM = month, dd = day of month,
hh:mm:ss = hour:minute:second and YYYY = year.@{par}
For example:@{par}
    "Mit Okt 25 12:05:43 1995"
@endnode

@node utime
@{fg shine}utime@{fg text}@{par}
setzen von Zugriffs- und Bearbeitungszeit@{par}

@{b}Usage@{ub}@{par}
#include <utime.h>@{par}

r = utime(file, timep);@{par}

int r;@{par}
const char *file;@{par}
const struct utimebuf *timep;@{par}

@{b}Standard@{ub}@{par}
IEEE Std1003.1-1988 ("POSIX")@{par}

@{b}Function@{ub}@{par}
Es wird die Zugriffs- und Bearbeitungszeit der Datei "file" gesetzt.
Wenn "timep" null ist, dann wird die aktuelle Zeit als Zugriffs- und
Bearbeitungszeit gesetzt.@{par}

Bei Definition von @{" STORMAMIGA_UNIXPATH " link STORMAMIGA_UNIXPATH} können für diese
Funktionen auch Pfadangaben im Unix-Format verwendet werden.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst 0.@{par}
@endnode

@node utimes
@{fg shine}utimes@{fg text}@{par}
setzen von Zugriffs- und Bearbeitungszeit@{par}

@{b}Usage@{ub}@{par}
#include <sys/time.h>@{par}

r = utimes(file, times);@{par}

int r;@{par}
const char *file;@{par}
const struct timeval *times;@{par}

@{b}Standard@{ub}@{par}
not (yet) (4.2BSD)@{par}

@{b}Function@{ub}@{par}
Es wird die Zugriffs- und Bearbeitungszeit der Datei "file" gesetzt.
Wenn "times" null ist, dann wird die aktuelle Zeit als Zugriffs- und
Bearbeitungszeit gesetzt.@{par}

Bei Definition von @{" STORMAMIGA_UNIXPATH " link STORMAMIGA_UNIXPATH} können für diese
Funktionen auch Pfadangaben im Unix-Format verwendet werden.@{par}

@{b}Return@{ub}@{par}
Im Fehlerfall -1, sonst 0.@{par}
@endnode

@node times
@{fg shine}times@{fg text}@{par}


@{b}Usage@{ub}@{par}
#include <sys/times.h>@{par}

r = times(tp);@{par}

clock_t r;@{par}
struct tms *tp;@{par}

@{b}Standard@{ub}@{par}
IEEE Std1003.1-1988 ("POSIX")@{par}

@{b}Function@{ub}@{par}


@{b}Return@{ub}@{par}

@endnode
///
/// math-functions
@node isinf
@{fg shine}isinf@{fg text}@{par}
Test for an infinite number.@{par}

@{b}Usage@{ub}@{par}
#include <math_stormamiga.h>@{par}

r = isinf (x);@{par}

int r;@{par}
double x;@{par}

@{b}Standard@{ub}@{par}
IEEE Standard for Binary Floating-Point Arithmetic, Std 754-1985, ANSI@{par}

@{b}Function@{ub}@{par}
"isinf" (is infinite) tests, if "x" is infinite or not.@{par}

@{b}Return@{ub}@{par}
1 if "x" is infinite, otherwise 0.@{par}
@endnode

@node isnan
@{fg shine}isnan@{fg text}@{par}
Test for an illegal number.@{par}

@{b}Usage@{ub}@{par}
#include <math_stormamiga.h>@{par}

r = isnan (x);@{par}

int r;@{par}
double x;@{par}

@{b}Standard@{ub}@{par}
IEEE Standard for Binary Floating-Point Arithmetic, Std 754-1985, ANSI@{par}

@{b}Function@{ub}@{par}
"isnan" (is not a number) tests, if "x" is an illegal number
(division by 0, square root of negative number).@{par}

@{b}Return@{ub}@{par}
1 if "x" is an illegal number, otherwise 0.@{par}
@endnode
///
/// special-functions
@node muls
@{fg shine}muls@{fg text}@{par}
signed 32 Bit mal 32 Bit Multiplikation mit 32 Bit Ergebnis@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = muls (arg1, arg2);@{par}

long r;@{par}
long arg1;@{par}
long arg2;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "muls" multipliziert "arg1" mit "arg2" und ermittelt
das Ergebnis "r".@{par}
Der Befehl "muls" ist ein sehr schneller und sehr kleiner Ersatz
für den Befehl @{" SMult32 " link "StormC:StormSYS/Help/utility/SMult32()"} der "utility.library". Da die Funktion
und der Aufruf beider Befehle identisch ist, kann "SMult32"
einfach durch "muls" ersetzt werden.@{par}

Der Befehl "muls" ist auch als @{" Inlinefunctions " link Inlinefunctions} verfügbar.@{par}

@{b}Return@{ub}@{par}
signed 32 Bit Ergebnis "r"@{par}
@endnode

@node mulu
@{fg shine}mulu@{fg text}@{par}
unsigned 32 Bit mal 32 Bit Multiplikation mit 32 Bit Ergebnis@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = mulu (arg1, arg2);@{par}

ulong r;@{par}
ulong arg1;@{par}
ulong arg2;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "mulu" multipliziert "arg1" mit "arg2" und ermittelt
das Ergebnis "r".@{par}
Der Befehl "mulu" ist ein sehr schneller und sehr kleiner Ersatz
für den Befehl @{" UMult32 " link "StormC:StormSYS/Help/utility/UMult32()"} der "utility.library". Da die Funktion
und der Aufruf beider Befehle identisch ist, kann "UMult32"
einfach durch "mulu" ersetzt werden.@{par}

Der Befehl "mulu" ist auch als @{" Inlinefunctions " link Inlinefunctions} verfügbar.@{par}

@{b}Return@{ub}@{par}
unsigned 32 Bit Ergebnis "r"@{par}
@endnode

@node divsl
@{fg shine}divsl@{fg text}@{par}
signed 32 Bit durch 32 Bit Division mit 32 Bit Quotient und Rest@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

quotient : remainder = divsl (dividend, divisor);@{par}

long quotient;@{par}
long remainder;@{par}
long dividend;@{par}
long divisor;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "divsl" teilt den Dividenden "dividend" durch den
Divisor "divisor" und ermittelt den Quotient "quotient" und den
Rest "remainder".@{par}
Der Befehl "divsl" ist ein sehr schneller und sehr kleiner Ersatz
für den Befehl @{" SDivMod32 " link "StormC:StormSYS/Help/utility/SDivMod32()"} der "utility.library".
Da die Funktion und der Aufruf beider Befehle identisch ist, kann
"SDivMod32" einfach durch "divsl" ersetzt werden.@{par}

@{b}Return@{ub}@{par}
signed 32 Bit Quotient "quotient"@{par}
signed 32 Bit Rest "remainder"@{par}
@endnode

@node divul
@{fg shine}divul@{fg text}@{par}
unsigned 32 Bit durch 32 Bit Division mit 32 Bit Quotient und Rest@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

quotient : remainder = divul (dividend, divisor);@{par}

ulong quotient;@{par}
ulong remainder;@{par}
ulong dividend;@{par}
ulong divisor;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "divul" teilt den Dividenden "dividend" durch den
Divisor "divisor" und ermittelt den Quotient "quotient" und den
Rest "remainder".@{par}
Der Befehl "divul" ist ein sehr schneller und sehr kleiner Ersatz
für den Befehl @{" UDivMod32 " link "StormC:StormSYS/Help/utility/UDivMod32()"} der "utility.library".
Da die Funktion und der Aufruf beider Befehle identisch ist, kann
"UDivMod32" einfach durch "divul" ersetzt werden.@{par}

@{b}Return@{ub}@{par}
unsigned 32 Bit Quotient "quotient"@{par}
unsigned 32 Bit Rest "remainder"@{par}
@endnode

@node muls64
@{fg shine}muls64@{fg text}@{par}
signed 32 Bit mal 32 Bit Multiplikation mit 64 Bit Ergebnis@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = muls64 (arg1, arg2);@{par}

long r;@{par}
long arg1;@{par}
long arg2;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "muls64" multipliziert "arg1" mit "arg2" und ermittelt
das Ergebnis "r".@{par}
Der Befehl "muls64" ist ein sehr schneller und sehr kleiner Ersatz
für den Befehl @{" SMult64 " link "StormC:StormSYS/Help/utility/SMult64()"} der "utility.library". Da die Funktion
und der Aufruf beider Befehle identisch ist, kann "SMult64"
einfach durch "muls64" ersetzt werden.@{par}
Im Gegensatz zu "SMult64", benötigt "muls64" nicht AmigaOS 3.x,
sondern ist bereits ab AmigaOS 2.x lauffähig.@{par}

@{b}Return@{ub}@{par}
signed 64 Bit Ergebnis "r"@{par}
@endnode

@node mulu64
@{fg shine}mulu64@{fg text}@{par}
unsigned 32 Bit mal 32 Bit Multiplikation mit 64 Bit Ergebnis@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = mulu64 (arg1, arg2);@{par}

ulong r;@{par}
ulong arg1;@{par}
ulong arg2;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "mulu64" multipliziert "arg1" mit "arg2" und ermittelt
das Ergebnis "r".@{par}
Der Befehl "mulu64" ist ein sehr schneller und sehr kleiner Ersatz
für den Befehl @{" UMult64 " link "StormC:StormSYS/Help/utility/UMult64()"} der "utility.library". Da die Funktion
und der Aufruf beider Befehle identisch ist, kann "UMult64"
einfach durch "mulu64" ersetzt werden.@{par}
Im Gegensatz zu "UMult64", benötigt "mulu64" nicht AmigaOS 3.x,
sondern ist bereits ab AmigaOS 2.x lauffähig.@{par}

@{b}Return@{ub}@{par}
unsigned 64 Bit Ergebnis "r"@{par}
@endnode

@node divs64
@{fg shine}divs64@{fg text}@{par}
signed 64 Bit durch 32 Bit Division mit 32 Bit Quotient und Rest@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

quotient : remainder = divs64 (dividend, divisor);@{par}

long quotient;@{par}
long remainder;@{par}
long dividend;@{par}
long divisor;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "divs64" teilt den Dividenden "dividend" durch den
Divisor "divisor" und ermittelt den Quotient "quotient" und den
Rest "remainder".@{par}

@{b}Return@{ub}@{par}
signed 32 Bit Quotient "quotient"@{par}
signed 32 Bit Rest "remainder"@{par}
@endnode

@node divu64
@{fg shine}divu64@{fg text}@{par}
unsigned 64 Bit durch 32 Bit Division mit 32 Bit Quotient und Rest@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

quotient : remainder = divu64 (dividend, divisor);@{par}

ulong quotient;@{par}
ulong remainder;@{par}
ulong dividend;@{par}
ulong divisor;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "divu64" teilt den Dividenden "dividend" durch den
Divisor "divisor" und ermittelt den Quotient "quotient" und den
Rest "remainder".@{par}

@{b}Return@{ub}@{par}
unsigned 32 Bit Quotient "quotient"@{par}
unsigned 32 Bit Rest "remainder"@{par}
@endnode

@node button_al
@{fg shine}button_al@{fg text}@{par}
Abfrage der linken Maus- oder Joysticktaste an Port A@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = button_al ();@{par}

int r;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "button_al" ist zur Abfrage der linken Maus- oder
Joysticktaste an Port A. Wenn zum Zeitpunkt der Abfrage die
entsprechende Taste betätigt ist, wird 1 zurückgegeben, sonst 0.

@{b}Return@{ub}@{par}
1 wenn die entsprechende Taste betätigt ist, sonst 0@{par}
@{code}
@{b}Beispiel@{ub}
#include <stormamiga.h>

int main__(void)
{
start:
    if (!button_al ())
    goto start;
    printf_ ("Hello World!\\n");
    return NULL;
}
@endnode

@node button_ar
@{fg shine}button_ar@{fg text}@{par}
Abfrage der rechten Maustaste an Port A@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = button_ar ();@{par}

int r;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "button_ar" ist zur Abfrage der rechten Maustaste an Port A.
Wenn zum Zeitpunkt der Abfrage die entsprechende Taste betätigt ist,
wird 1 zurückgegeben, sonst 0.@{par}

@{b}Return@{ub}@{par}
1 wenn die entsprechende Taste betätigt ist, sonst 0@{par}
@{code}
@{b}Beispiel@{ub}
#include <stormamiga.h>

int main__(void)
{
start:
    if (!button_ar ())
    goto start;
    printf_ ("Hello World!\\n");
    return NULL;
}
@endnode

@node button_bl
@{fg shine}button_bl@{fg text}@{par}
Abfrage der linken Maus- oder Joysticktaste an Port B@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = button_bl ();@{par}

int r;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "button_bl" ist zur Abfrage der linken Maus- oder
Joysticktaste an Port B. Wenn zum Zeitpunkt der Abfrage die
entsprechende Taste betätigt ist, wird 1 zurückgegeben, sonst 0.@{par}

@{b}Return@{ub}@{par}
1 wenn die entsprechende Taste betätigt ist, sonst 0@{par}
@{code}
@{b}Beispiel@{ub}
#include <stormamiga.h>

int main__(void)
{
start:
    if (!button_bl ())
    goto start;
    printf_ ("Hello World!\\n");
    return NULL;
}
@endnode

@node button_br
@{fg shine}button_br@{fg text}@{par}
Abfrage der rechten Maustaste an Port B@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = button_br ();@{par}

int r;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "button_br" ist zur Abfrage der rechten Maustaste an Port B.
Wenn zum Zeitpunkt der Abfrage die entsprechende Taste betätigt ist,
wird 1 zurückgegeben, sonst 0.@{par}

@{b}Return@{ub}@{par}
1 wenn die entsprechende Taste betätigt ist, sonst 0@{par}
@{code}
@{b}Beispiel@{ub}
#include <stormamiga.h>

int main__(void)
{
start:
    if (!button_br ())
    goto start;
    printf_ ("Hello World!\\n");
    return NULL;
}
@endnode

@node button
@{fg shine}button@{fg text}@{par}
Abfrage der Maus- und Joysticktasten@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = button (port, button);@{par}

int r;@{par}
int port;@{par}
int button;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "button" ist zur Abfrage der Maus- und Joysticktasten.
Für "port" kann 0, für Port A, oder 1, für Port B, angegeben werden.
Für "button" kann 0, für die linke Maustaste oder die Feuertaste am
Joystick, oder 1, für die rechte Maustaste, angegeben werden.
Wenn zum Zeitpunkt der Abfrage die entsprechende Taste betätigt ist,
wird 1 zurückgegeben, sonst 0.@{par}

@{b}Return@{ub}@{par}
1 wenn die entsprechende Taste betätigt ist, sonst 0@{par}
@{code}
@{b}Beispiel@{ub}
#include <stormamiga.h>

int main__(void)
{
 int p = 0; // Port A
 int b = 0; // linke Maustaste oder Feuertaste

start:
    if (!button (p, b))
    goto start;
    printf_ ("Hello World!\\n");
    return NULL;
}
@endnode

@node waitbutton_al
@{fg shine}waitbutton_al@{fg text}@{par}
Abfrage der linken Maus- oder Joysticktaste an Port A@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = waitbutton_al ();@{par}

void r;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "waitbutton_al" ist zur Abfrage der linken Maus- oder
Joysticktaste an Port A. Das Programm wartet solange, bis die
richtige Taste betätigt wird.@{par}
@{code}
@{b}Return@{ub}
keine

@{b}Beispiel@{ub}
#include <stormamiga.h>

int main__(void)
{
    waitbutton_al ();
    printf_ ("Hello World!\\n");
    return NULL;
}
@endnode

@node waitbutton_ar
@{fg shine}waitbutton_ar@{fg text}@{par}
Abfrage der rechten Maustaste an Port A@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = waitbutton_ar ();@{par}

void r;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "waitbutton_ar" ist zur Abfrage der rechten Maustaste an Port A.
Das Programm wartet solange, bis die richtige Taste betätigt wird.@{par}
@{code}
@{b}Return@{ub}
keine

@{b}Beispiel@{ub}
#include <stormamiga.h>

int main__(void)
{
    waitbutton_ar ();
    printf_ ("Hello World!\\n");
    return NULL;
}
@endnode

@node waitbutton_bl
@{fg shine}waitbutton_bl@{fg text}@{par}
Abfrage der linken Maus- oder Joysticktaste an Port B@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = waitbutton_bl ();@{par}

void r;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "waitbutton_bl" ist zur Abfrage der linken Maus- oder
Joysticktaste an Port B. Das Programm wartet solange, bis die
richtige Taste betätigt wird.@{par}
@{code}
@{b}Return@{ub}
keine

@{b}Beispiel@{ub}
#include <stormamiga.h>

int main__(void)
{
    waitbutton_bl ();
    printf_ ("Hello World!\\n");
    return NULL;
}
@endnode

@node waitbutton_br
@{fg shine}waitbutton_br@{fg text}@{par}
Abfrage der rechten Maustaste an Port B@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = waitbutton_br ();@{par}

void r;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "waitbutton_br" ist zur Abfrage der rechten Maustaste an Port B.
Das Programm wartet solange, bis die richtige Taste betätigt wird.@{par}
@{code}
@{b}Return@{ub}
keine

@{b}Beispiel@{ub}
#include <stormamiga.h>

int main__(void)
{
    waitbutton_br ();
    printf_ ("Hello World!\\n");
    return NULL;
}
@endnode

@node waitbutton
@{fg shine}waitbutton@{fg text}@{par}
Abfrage der Maus- und Joysticktasten@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r = waitbutton (port, button);@{par}

void r;@{par}
int port;@{par}
int button;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "waitbutton" ist zur Abfrage der Maus- und Joysticktasten.
Für "port" kann 0, für Port A, oder 1, für Port B, angegeben werden.
Für "button" kann 0, für die linke Maustaste oder die Feuertaste am
Joystick, oder 1, für die rechte Maustaste, angegeben werden.
Das Programm wartet solange, bis die richtige Taste betätigt wird.@{par}
@{code}
@{b}Return@{ub}
keine

@{b}Beispiel@{ub}
#include <stormamiga.h>

int main__(void)
{
 int p = 0; // Port A
 int b = 0; // linke Maustaste oder Feuertaste

    waitbutton (p, b);
    printf_ ("Hello World!\\n");
    return NULL;
}
@endnode

@node max_Height
@{fg shine}max_Height@{fg text}@{par}
Ermitteln der sichtbaren Fensterhöhe@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r =  max_Height (window);@{par}

int r;@{par}
struct  Window  *window;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "max_Height" ermittelt die sichtbare Höhe des Fensters
"window".@{par}

Der Befehl "max_Height" ist auch als @{" Inlinefunctions " link Inlinefunctions} verfügbar.@{par}

@{b}Return@{ub}@{par}
Die sichtbare Höhe des Fensters "window".@{par}
@endnode

@node max_Width
@{fg shine}max_Width@{fg text}@{par}
Ermitteln der sichtbaren Fensterbreite@{par}

@{b}Usage@{ub}@{par}
#include <stormamiga.h>@{par}

r =  max_Width (window);@{par}

int r;@{par}
struct  Window  *window;@{par}

@{b}Standard@{ub}@{par}
not (yet) (own development)@{par}

@{b}Function@{ub}@{par}
Der Befehl "max_Width" ermittelt die sichtbare Breite des Fensters
"window".@{par}

Der Befehl "max_Width" ist auch als @{" Inlinefunctions " link Inlinefunctions} verfügbar.@{par}

@{b}Return@{ub}@{par}
Die sichtbare Breite des Fensters "window".@{par}
@endnode
///
/// stringbuffer
@node stringbuffer
@{b}@{fg shine}The stringbuffer "s".@{par}
~~~~~~~~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

The stringbuffer "s" has to be large enough for the outputstring
and a terminating zero.@{par}
The function is not able to determin wether the buffer is large enough.@{par}
@endnode
///
/// parameterlist
@node parameterlist
@{b}@{fg shine}The parameterlist "vl".@{par}
~~~~~~~~~~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

The parameterlist "vl" has to be initialized with va_start
before its first call and be terminated after the call with va_end.@{par}
@endnode
///
/// outputformatstring
@node outputformatstring
@{b}@{fg shine}The outputformatstring "format".@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

The formatstring "format" consists of formatspecifiers and
outputsymbols. The formatspecifiers describe the type of
the outputfunction's parameters, the type of conversion and the
output. All characters that are not beginning with "%" are not
formatspecifiers and stay untouched.@{par}

The structure of formatspecifiers:@{par}

% [flags] [width [.limit] ] [size] type@{par}

Values in square brackets are optional.@{par}

@{b}flags@{ub}@{par}
@{b}"-"@{ub}@{par}
leftjustified@{par}
@{b}"+"@{ub}@{par}
positive sign for numbers@{par}
@{b}"0"@{ub}@{par}
leading zeros for numbers@{par}
@{b}"#"@{ub}@{par}
prints a "0x" for hexadecimal numbers and "0" for octal numbers
it adds trailing zeros for the types "g" and "G"@{par}

@{b}width@{ub}@{par}
Fieldwidth as decimal numbers or "*", if the width should be the next
argument of type int. The fieldwidth is always a minimum value, longer
outputs are not adapted.@{par}

@{b}limit@{ub}@{par}
The precision of decimal numbers or "*", in this case the precision
is the next argument. It is of type int. Its value is the maximal number
of characters printed in case of strings or the minimal number of numbers for
fixpoint output or the number of numbers behind the decimal point for floating
point values.@{par}

@{b}size@{ub}@{par}
Length of the argument:@{par}
@{b}"h"@{ub}@{par}
argument is of type short int or unsigned short int or float@{par}
@{b}"l"@{ub}@{par}
argument is of type long int or unsigned long int or double@{par}
@{b}"L"@{ub}@{par}
argument is of type long long int or unsigned long long int (Only available in
the special 64bit versions.)@{par}

@{b}type@{ub}@{par}
Type of the argument:@{par}

@{b}"d", "i"@{ub}@{par}
Output a signed decimal number, argument is of type int@{par}

@{b}"o"@{ub}@{par}
Output an unsigned octal number, argument is of type int or unsigned int@{par}

@{b}"x"@{ub}@{par}
Output an unsigned hex number in noncapitalized letters,
argument is of type int or unsigned int@{par}

@{b}"X"@{ub}@{par}
Output an unsigned hex number in capitalized letters,
argument is of type int or unsigned int@{par}

@{b}"u"@{ub}@{par}
Output an unsigned decimal number, argument is of type unsigned int@{par}

@{b}"c"@{ub}@{par}
Output a single character, argument is of type int or
is converted to unsigned char@{par}

@{b}"s"@{ub}@{par}
Output a string, terminated with a NULL, argument is of type char *@{par}

@{b}"f"@{ub}@{par}
Output a floating point number in nonexponetial form, argument is of type double@{par}

@{b}"e"@{ub}@{par}
Output a floating point number in exponetial form (with "e" as exp sign),
argument is of type double@{par}

@{b}"E"@{ub}@{par}
Output a floating point number in exponetial form (with "E" as exp sign),
argument is of type double@{par}

@{b}"g"@{ub}@{par}
Output a floating point number depending on its exponent in nonexponential or
in exponential form (with "e" as exp sign), argument is of type double@{par}

@{b}"G"@{ub}@{par}
Output a floating point number depending on its exponent in nonexponential or
in exponential form (with "E" as exp sign), argument is of type double@{par}

@{b}"p"@{ub}@{par}
Output a hex memory address, argument is of type void *@{par}

@{b}"n"@{ub}@{par}
Saves the number of charcters printed by this function call into the
variable pointed to by the argument of type int *, no output happens@{par}

@{b}"%"@{ub}@{par}
Output a "%" sign @{par}

All other types lead to undefined outputs.@{par}
@endnode
///
/// outputformatstring_
@node outputformatstring_
@{b}@{fg shine}The outputformatstring_ "format".@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

The formatstring "format" consists of formatspecifiers and
outputsymbols. The formatspecifiers describe the type of
the outputfunction's parameters, the type of conversion and the
output. All characters that are not beginning with "%" are not
formatspecifiers and stay untouched.@{par}

The structure of formatspecifiers:@{par}

% [flags] [width [.limit] ] [size] type@{par}

Values in square brackets are optional.@{par}

@{b}flags@{ub}@{par}
@{b}"-"@{ub}@{par}
leftjustified@{par}
@{b}"+"@{ub}@{par}
positive sign for numbers@{par}
@{b}"0"@{ub}@{par}
leading zeros for numbers@{par}
@{b}"#"@{ub}@{par}
prints a "0x" for hexadecimal numbers and "0" for octal numbers
it adds trailing zeros for the types "g" and "G"@{par}

@{b}width@{ub}@{par}
Fieldwidth as decimal numbers or "*", if the width should be the next
argument of type int. The fieldwidth is always a minimum value, longer
outputs are not adapted.@{par}

@{b}limit@{ub}@{par}
The precision of decimal numbers or "*", in this case the precision
is the next argument. It is of type int. Its value is the maximal number
of characters printed in case of strings or the minimal number of numbers for
fixpoint output or the number of numbers behind the decimal point for floating
point values.@{par}

@{b}size@{ub}@{par}
Length of the argument:@{par}
@{b}"h"@{ub}@{par}
argument is of type short int or unsigned short int@{par}
@{b}"l"@{ub}@{par}
argument is of type long int or unsigned long int@{par}
@{b}"L"@{ub}@{par}
argument is of type long long int or unsigned long long int (Only available in
the special 64bit versions.)@{par}

@{b}type@{ub}@{par}
Type of the argument:@{par}

@{b}"d", "i"@{ub}@{par}
Output a signed decimal number, argument is of type int@{par}

@{b}"o"@{ub}@{par}
Output an unsigned octal number, argument is of type int or unsigned int@{par}

@{b}"x"@{ub}@{par}
Output an unsigned hex number in noncapitalized letters,
argument is of type int or unsigned int@{par}

@{b}"X"@{ub}@{par}
Output an unsigned hex number in capitalized letters,
argument is of type int or unsigned int@{par}

@{b}"u"@{ub}@{par}
Output an unsigned decimal number, argument is of type unsigned int@{par}

@{b}"c"@{ub}@{par}
Output a single character, argument is of type int or
is converted to unsigned char@{par}

@{b}"s"@{ub}@{par}
Output a string, terminated with a NULL, argument is of type char *@{par}

@{b}"p"@{ub}@{par}
Output a hex memory address, argument is of type void *@{par}

@{b}"n"@{ub}@{par}
Saves the number of charcters printed by this function call into the
variable pointed to by the argument of type int *, no output happens@{par}

@{b}"%"@{ub}@{par}
Output a "%" sign @{par}

All other types lead to undefined outputs.@{par}
@endnode
///
/// inputformatstring
@node inputformatstring
@{b}@{fg shine}The inputputformatstring "format".@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

The formatstring "format" consists of formatspecifiers and
inputcharacters. The formatspecifiers describe the type of
the inputfunction's parameters, the type of conversion and the
input. All characters that are not beginning with "%" and that are
not delimiter (blanks, tabs, linefeeds) are not formatspecifiers
and stay untouched.@{par}

The structure of formatspecifiers:@{par}

% [width] [size] type@{par}

Values in square brackets are optional.@{par}

@{b}width@{ub}@{par}
Numbers of bytes to read as decimal number or "*". The later reads the
characters, but does not insert them into the next argument.@{par}

@{b}size@{ub}@{par}
Length of the argument:@{par}
@{b}"h"@{ub}@{par}
argument is of type short int or unsigned short int or float@{par}
@{b}"l"@{ub}@{par}
argument is of type long int or unsigned long int or double@{par}
@{b}"L"@{ub}@{par}
argument is of type long long int or unsigned long long int (Only available in
the special 64bit versions.)@{par}

@{b}type@{ub}@{par}
Type of the argument:@{par}

@{b}"d"@{ub}{par}
Input a signed decimal number, argument is of type int *@{par}

@{b}"i"@{ub}@{par}
Input a signed decimal, octal (starts with '0') or hex number (starts
with '0x'), argument is of type int@{par}

@{b}"o"@{ub}@{par}
Input an unsigned octal number, argument is of type int or unsigned int@{par}

@{b}"x"@{ub}@{par}
Input an unsigned hex number with or without a leading '0x',
argument is of type int or unsigned int@{par}

@{b}"c"@{ub}@{par}
Input "width" characters, blanks and whitespaces are not ignored and
no NULLs are appended, argument is of type char *@{par}

@{b}"s"@{ub}@{par}
Input a string, leading blanks and whitespaces are filtered out, a NULL
is appended, argument is of type char *@{par}

@{b}"e", "f", "g"@{ub}@{par}
Input a floating point number, argument is of type float *@{par}

@{b}"p"@{ub}@{par}
Input a hex memory address, argument is of type int *@{par}

@{b}"n"@{ub}@{par}
Saves the number of charcters read by this function call into the
variable pointed to by the argument of type int *, no input happens@{par}

@{b}"[...]"@{ub}@{par}
Input a string, only consisting of the characters inclosed in the brackets,
a NULL is appended, argument is of type char *@{par}

@{b}"[^...]"@{ub}@{par}
Input a string, consisting not of the characters inclosed in the brackets,
a NULL is appended, argument is of type char *@{par}

@{b}"%"@{ub}@{par}
Input a "%" sign@{par}

All other types are undefined inputs.@{par}
@endnode
///
/// inputformatstring_
@node inputformatstring_
@{b}@{fg shine}The inputputformatstring_ "format".@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

The formatstring "format" consists of formatspecifiers and
inputcharacters. The formatspecifiers describe the type of
the inputfunction's parameters, the type of conversion and the
input. All characters that are not beginning with "%" and that are
not delimiter (blanks, tabs, linefeeds) are not formatspecifiers
and stay untouched.@{par}

The structure of formatspecifiers:@{par}

% [width] [size] type@{par}

Values in square brackets are optional.@{par}

@{b}width@{ub}@{par}
Numbers of bytes to read as decimal number or "*". The later reads the
characters, but does not insert them into the next argument.@{par}

@{b}size@{ub}@{par}
Length of the argument:@{par}
@{b}"h"@{ub}@{par}
argument is of type short int or unsigned short int@{par}
@{b}"l"@{ub}@{par}
argument is of type long int or unsigned long int@{par}
@{b}"L"@{ub}@{par}
argument is of type long long int or unsigned long long int (Only available in
the special 64bit versions.)@{par}

@{b}type@{ub}@{par}
Type of the argument:@{par}

@{b}"d"@{ub}{par}
Input a signed decimal number, argument is of type int *@{par}

@{b}"i"@{ub}@{par}
Input a signed decimal, octal (starts with '0') or hex number (starts
with '0x'), argument is of type int@{par}

@{b}"o"@{ub}@{par}
Input an unsigned octal number, argument is of type int or unsigned int@{par}

@{b}"x"@{ub}@{par}
Input an unsigned hex number with or without a leading '0x',
argument is of type int or unsigned int@{par}

@{b}"c"@{ub}@{par}
Input "width" characters, blanks and whitespaces are not ignored and
no NULLs are appended, argument is of type char *@{par}

@{b}"s"@{ub}@{par}
Input a string, leading blanks and whitespaces are filtered out, a NULL
is appended, argument is of type char *@{par}

@{b}"p"@{ub}@{par}
Input a hex memory address, argument is of type int *@{par}

@{b}"n"@{ub}@{par}
Saves the number of charcters read by this function call into the
variable pointed to by the argument of type int *, no input happens@{par}

@{b}"[...]"@{ub}@{par}
Input a string, only consisting of the characters inclosed in the brackets,
a NULL is appended, argument is of type char *@{par}

@{b}"[^...]"@{ub}@{par}
Input a string, consisting not of the characters inclosed in the brackets,
a NULL is appended, argument is of type char *@{par}

@{b}"%"@{ub}@{par}
Input a "%" sign@{par}

All other types are undefined inputs.@{par}
@endnode
///
/// timeformatstring
@node timeformatstring
@{b}@{fg shine}The timeformatstring to convert different forms of time.@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

The timeformatstring "format" for the formated output of date and time
consists of formatspecifiers and inputcharacters. The formatspecifiers
describe the type of the outputfunction's parameters, the type of conversion
and the output. All characters that are not beginning with "%" and that are
not delimiter (blanks, tabs, linefeeds) are not formatspecifiers
and stay untouched.@{par}

The structure of formatspecifiers:@{par}

% type@{par}

@{b}type@{ub}@{par}
type of the argument:@{par}

@{b}"a"@{ub}@{par}
abbreviated name of the day of the week (Mon, Tue, ...)@{par}

@{b}"A"@{ub}@{par}
full name of the day of the week@{par}

@{b}"b", "h"@{ub}@{par}
abbreviated name of the month (Jan, Feb, ...)@{par}

@{b}"B"@{ub}@{par}
full name of the month@{par}

@{b}"c"@{ub}@{par}
short form of date and time ("%m/%d/%y %I:%M:%S")@{par}

@{b}"C"@{ub}@{par}
display in format "%a %b %e %I:%M:%S %Y"@{par}

@{b}"d"@{ub}@{par}
number of the day of a month (01 bis 31)@{par}

@{b}"e"@{ub}@{par}
number of the day of a month ( 1 bis 31)@{par}

@{b}"H"@{ub}@{par}
american hour format (01 bis 12)@{par}

@{b}"I"@{ub}@{par}
eropean hour format (00 bis 23)@{par}

@{b}"j"@{ub}@{par}
number of the day of a year (001 bis 366)@{par}

@{b}"k"@{ub}@{par}
european hour format ( 0 bis 23)@{par}

@{b}"l"@{ub}@{par}
american hour format ( 1 bis 12)@{par}

@{b}"m"@{ub}@{par}
number of the month (01 bis 12)@{par}

@{b}"M"@{ub}@{par}
number of minutes (00 bis 59)@{par}

@{b}"n"@{ub}@{par}
new line@{par}

@{b}"p"@{ub}@{par}
half of the day ("AM" oder "PM")@{par}

@{b}"r"@{ub}@{par}
display in format "%H:%M:%S %p"@{par}

@{b}"R"@{ub}@{par}
display in format "%I:%M"@{par}

@{b}"S"@{ub}@{par}
number of seconds (00 bis 60)@{par}

@{b}"t"@{ub}@{par}
a tab@{par}

@{b}"u"@{ub}@{par}
number of the day of the week (1 bis 7); monday is the first day of the week@{par}

@{b}"U"@{ub}@{par}
number of the week of a year (00 bis 53); sunday is the first day of the week@{par}

@{b}"V"@{ub}@{par}
number of the week of a year (01 bis 53); monday is the first day of the week@{par}

@{b}"w"@{ub}@{par}
number of the day of the week (0 bis 6);  sunday is the first day of the week@{par}

@{b}"W"@{ub}@{par}
number of the week of a year (00 bis 53); monday is the first day of the week@{par}

@{b}"x", "D"@{ub}@{par}
short format of date ("%m/%d/%y")@{par}

@{b}"X", "T"@{ub}@{par}
short format of time ("%I:%M:%S")@{par}

@{b}"y"@{ub}@{par}
number of year without centuries@{par}

@{b}"Y"@{ub}@{par}
full year including century@{par}

@{b}"Z"@{ub}@{par}
name of timezone@{par}

@{b}"%"@{ub}@{par}
a "%" sign@{par}

All other types are undefined inputs.@{par}
@endnode
///
/// Hints
@node Hints
@{b}@{fg shine}Hints:@{par}
~~~~~~@{fg text}@{ub}@{par}

Although using "stormamiga.lib" is quite easy, I give you some hints.@{par}

@{code}
 @{" General notes     " link "General notes"}    General usage notes.

 @{" Inlinefunctions   " link Inlinefunctions}    Description of Inlinefunctions.

 @{" 64 bit functions  " link "64 bit functions"}    Description of 64 bit functions.

 @{" OS3 functions     " link "OS3 functions"}    Description of OS3 functions.

 @{" german functions  " link "german functions"}    Description of german functions.

 @{" Amiga - functions " link Amiga-functions}    Description of Amiga - functions.
@endnode
///
/// General notes
@node "General notes"
@{b}@{fg shine}General notes:@{par}
~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

@{b}Functional Overview of Libraries@{ub}@{par}
____________________________________________________________________________________@{par}
|        Library            |  required  |   Codemodell  |     Datenmodell         |@{par}
|                           |  Processor |  FAR  | NEAR  | FAR | NEAR A4 | NEAR A6 |@{par}
|ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ|ŻŻŻŻŻŻŻŻŻŻŻŻ|ŻŻŻŻŻŻŻ|ŻŻŻŻŻŻŻ|ŻŻŻŻŻ|ŻŻŻŻŻŻŻŻŻ|ŻŻŻŻŻŻŻŻŻ|@{par}
| stormamiga.lib            | MC68EC020+ |  yes  | (yes) | yes |   yes   |   no    |@{par}
|---------------------------|------------|-------|-------|-----|---------|---------|@{par}
| stormamiga_nc.lib         | MC68EC020+ | (yes) |  yes  | yes |   yes   |   no    |@{par}
|---------------------------|------------|-------|-------|-----|---------|---------|@{par}
| stormamiga_881.lib        | MC68881+   |  yes  | (yes) | yes |   yes   |   no    |@{par}
|---------------------------|------------|-------|-------|-----|---------|---------|@{par}
| stormamiga_nc_881.lib     | MC68881+   | (yes) |  yes  | yes |   yes   |   no    |@{par}
|---------------------------|------------|-------|-------|-----|---------|---------|@{par}
| stormamiga_040.lib        | MC68040+   |  yes  | (yes) | yes |   yes   |   no    |@{par}
|---------------------------|------------|-------|-------|-----|---------|---------|@{par}
| stormamiga_nc_040.lib     | MC68040+   | (yes) |  yes  | yes |   yes   |   no    |@{par}
|---------------------------|------------|-------|-------|-----|---------|---------|@{par}
| stormamiga_060.lib        | MC68060    |  yes  | (yes) | yes |   yes   |   no    |@{par}
|---------------------------|------------|-------|-------|-----|---------|---------|@{par}
| stormamiga_nc_060.lib     | MC68060    | (yes) |  yes  | yes |   yes   |   no    |@{par}
|---------------------------|------------|-------|-------|-----|---------|---------|@{par}
| stormamiga-library.lib    | MC68EC020+ |  yes  | (yes) | yes |   no    |   no    |@{par}
|---------------------------|------------|-------|-------|-----|---------|---------|@{par}
| stormamiga-library_nc.lib | MC68EC020+ | (yes) |  yes  | yes |   no    |   no    |@{par}
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ@{par}
(yes)  = Libraries marked this way will work with this Codemodell, but your programms become bigger.@{par}


The include file "stormamiga.h" contains the declarations for all
special functions.@{par}
In order to avoid long terms like "unsigned long long int", I'v defined
short terms like "ullint" for this purpose.@{par}

@{b}definet shortening@{ub}@{par}

cvoid  for const void@{par}
cchar  for const char@{par}
cschar for const signed char@{par}
cuchar for const unsigned char@{par}
schar  for signed char@{par}
uchar  for unsigned char@{par}
ushort for unsigned short@{par}
lint   for long int@{par}
llint  for long long int@{par}
uint   for unsigned int@{par}
ulint  for unsigned long int@{par}
ullint for unsigned long long int@{par}
llong  for long long@{par}
ulong  for unsigned long@{par}
ullong for unsigned long long@{par}

@{b}definition in the file "stormamiga.h"@{ub}@{par}

@{" STORMAMIGA          " link STORMAMIGA}@{" STORMAMIGA_DEUTSCH  " link "german functions"}@{" STORMAMIGA_INLINE   " link Inlinefunctions}
@{" STORMAMIGA_NOWB     " link STORMAMIGA_NOWB}@{" STORMAMIGA_NO_IO_WB " link STORMAMIGA_NO_IO_WB}@{" STORMAMIGA_OS3      " link "OS3 functions"}
@{" STORMAMIGA_STACK    " link STORMAMIGA_STACK}@{" STORMAMIGA_UNIXPATH " link STORMAMIGA_UNIXPATH}@{" STORMAMIGA_64BIT    " link "64 bit functions"}@{par}


The includefile "stormamigainline.h" contains all
@{" Inlinefunctions " link "Inlinefunctions"}.@{par}

For questions concerning the statupcode look at
@{" Startupcode " link "Startupcode"}.@{par}

All functions ending with "...64" (e.g.: "printf64") are
@{" 64 bit functions " link "64 bit functions"}.@{par}

All functions ending with "..._3" (e.g.: "malloc_3") are
@{" OS3 functions " link "OS3 functions"}.@{par}

All functions ending with "..._d" (e.g.: "ctime_d") are
@{" german functions " link "german functions"}.@{par}


If you want to write portable sources for different compilers,
your programs should look like this example.@{par}
@{code}
@{b}Example@{ub}

#include <stdio.h>
#include <time.h>

#ifdef __STORM__
  #define STORMAMIGA_INLINE
  #define STORMAMIGA_DEUTSCH
  #include <stormamiga.h>
  #define printf printf_
  #define main main__
#endif

int main (void)
{
  struct tm *tp;
  time_t t;

  time (&t);
  tp = localtime (&t);
  printf ("Die aktuelle Zeit ist %s", asctime (tp));
  return NULL;
}
@endnode
///
/// STORMAMIGA
@node STORMAMIGA
@{b}@{FG shine}The definition "STORMAMIGA":@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{FG text}@{ub}@{par}

If you want to use the special functions of "stormamiga.lib", you have to
insert the line "#define STORMAMIGA" before you include any include file or
you can enter the define into the compileroptons window (preprocessor).@{par}
@endnode
///
/// STORMAMIGA_UNIXPATH
@node STORMAMIGA_UNIXPATH
@{b}@{FG shine}The definition "STORMAMIGA_UNIXPATH":@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{FG text}@{ub}@{par}

The definition of "STORMAMIGA_UNIXPATH" enables the use of paths in unix style.
The line "#define STORMAMIGA_UNIXPATH" has to be inserted before you include
any include file or you can enter the define into the compileroptons window
(preprocessor).@{par}
@{code}
@{u}@{b}All included functions:@{uu}@{ub}

@{b}stdio functions@{ub}
remove()

@{b}unistd functions@{ub}
access()        chdir()         rmdir()         unlink()

@{b}fcntl functions@{ub}
creat()         open()

@{b}stat functions@{ub}
chmod()         lstat()         mkdir()         stat()

@{b}dirent functions@{ub}
opendir()

@{b}time functions@{ub}
utime()         utimes()
@endnode
///
/// STORMAMIGA_STACK
@node STORMAMIGA_STACK
@{b}@{FG shine}The definition "STORMAMIGA_STACK":@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{FG text}@{ub}@{par}

You can set the stacksize your program uses with the definition of
"STORMAMIGA_STACK". All you have to do is to insert the line
"#define STORMAMIGA_STACK xxxx" (xxxx is the stacksize) before you
include the includefiles into your program or define it in the window
"compileroptions preprocessor" via menu preferences.@{par}

@{b}@{FG fill}Important@{FG text}@{ub}@{par}

If you use this definition, you have to replace the "xxxx" by the real stacksize
or you program might crash.@{par}
@endnode
///
/// STORMAMIGA_NOWB
@node STORMAMIGA_NOWB
@{b}@{FG shine}The definition "STORMAMIGA_NOWB":@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{FG text}@{ub}@{par}

Programs linked with "stormamiga.lib" and that define "STORMAMIGA_NOWB"
are no longer startable from WorkBench, but they become smaller.
If you want to use this behaviour you have to insert the line
"#define STORMAMIGA_NOWB" into your source before including the includefiles or
define it in the window "compileroptions preprocessor" via menu preferences.@{par}

@{b}@{FG fill}Important@{FG text}@{ub}@{par}

If you use this definition, an existing wbmain function will be ignored.
If you start a program compiled with this definition from WorkBench it might crash.@{par}
This is for "real" CLI programs only.@{par}
@endnode
///
/// STORMAMIGA_NO_IO_WB
@node STORMAMIGA_NO_IO_WB
@{b}@{FG shine}The definition "STORMAMIGA_NO_IO_WB":@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{FG text}@{ub}@{par}

The definition of "STORMAMIGA_NO_IO_WB" disables the redirection of
standardinput "stdin" and standardouput "stdout" to a CLI window.
If you want to use this behaviour you have to insert the line
"#define STORMAMIGA_NO_IO_WB" into your source before including the includefiles or
define it in the window "compileroptions preprocessor" via menu preferences.@{par}
@endnode
///
/// OS3-functions
@node "OS3 functions"
@{b}@{FG shine}The OS3 functions:@{par}
~~~~~~~~~~~~~~~~~~@{FG text}@{ub}@{par}

The OS3 functions are especially optimized for AmigaOS 3.x.
They make use of the new functions of AmigaOS 3.x and so programs become
smaller. If you want to use the OS3 functions you have to insert the line
"#define STORMAMIGA_OS3" into your source before including the includefiles or
define it in the window "compileroptions preprocessor" via menu preferences.@{par}

@{b}@{FG fill}Important@{FG text}@{ub}@{par}

Please activate the OS3 functions only through the definition of "STORMAMIGA_OS3"
and @{b}never@{ub} on its own.@{par}
Programs compiled this way do not work with AmigaOS 2.x.@{par}

@{code}
@{u}@{b}All included functions:@{uu}@{ub}

@{b}stdlib functions@{ub}
free_3()        malloc_3()

@{b}internal functions@{ub}
EXIT_4_free_3()
@endnode
///
/// 64 bit functions
@node "64 bit functions"
@{b}@{FG shine}The 64 Bit functions:@{par}
~~~~~~~~~~~~~~~~~~~~~@{FG text}@{ub}@{par}

The 64bit functions are expanded versions of printf and scanf. They
support the specifier "L" for long long int and unsigned long long int.@{par}
If you want to use these 64 Bit functions, you will have to
"#define STORMAMIGA_64BIT" before including the includefiles. This can
be done in the compileroptions window in the preprocessor section.@{par}
If you want to use only a few of these functions, you will have to add
a "64" to the name of the function ("printf" becomes "printf64").@{par}
@{code}
@{u}@{b}All included functions:@{uu}@{ub}

@{b}stdio functions@{ub}
fprintf64()     fprintf64_()    fscanf64()      fscanf64_()
printf64()      printf64_()     scanf64()       scanf64_()
snprintf64()    snprintf64_()   sprintf64()     sprintf64_()
sscanf64()      sscanf64_()     vfprintf64()    vfprintf64_()
vfscanf64()     vfscanf64_()    vprintf64()     vprintf64_()
vscanf64()      vscanf64_()     vsnprintf64()   vsnprintf64_()
vsprintf64()    vsprintf64_()   vsscanf64()     vsscanf64_()
@endnode
///
/// Inlinefunctions
@node Inlinefunctions
@{b}@{fg shine}The inlinefunctions:@{par}
~~~~~~~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

The inlinefunctions are placed at the line of the original function call.
Programs often become shorter and faster. But if you do not use any
optimization, your program will become possibly larger and slower.@{par}

If you want to use inline functions, you will have to
"#define STORMAMIGA_INLINE" before including the includefiles. This can
be done in the compileroptions window in the preprocessor section.@{par}

@{code}
@{u}@{b}All included functions:@{uu}@{ub}

@{b}stdio functions@{ub}
clearerr()      feof()          ferror()        fgetc()
fputc()         getc()          perror()        putc()
putchar()       remove()        rename()        setbuf()
setbuffer()     setlinebuf()    ungetc()

@{b}string functions@{ub}
bzero()         memchr()        memcmp()        memcpy()
memmove()       memset()

@{b}stdlib functions@{ub}
abort()         atof()          atoi()          atol()
atoll()

@{b}time functions@{ub}
ctime()         ctime_d()       difftime()      localtime()

@{b}special functions@{ub}
max_Height()    max_Width()     muls()          mulu()

@{b}amiga.lib functions@{ub}
CreateExtIO()   CreateStdIO()   DeleteExtIO()   DeleteStdIO()
DeleteTask()    NewList()       RemTOF()        waitbeam()

@{b}Amiga functions@{ub}
GetAPen()       GetBPen()       Move()
@endnode
///
/// german functions
@node "german functions"
@{b}@{fg shine}The german functions:@{par}
~~~~~~~~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

Because neither "ANSI C" nor "C++" supports umlaute and all texts are
printed in english, I've written some german functions, that output
texts in german and support umlaute.@{par}
If you want to use these german functions, you will have to
"#define STORMAMIGA_DEUTSCH" before including the includefiles. This can
be done in the compileroptions window in the preprocessor section.@{par}
If you want to use only a few of these functions, you will have to add
a "_d" to the name of the function ("ctime" becomes "ctime_d").@{par}
@{code}
@{u}@{b}All included functions:@{uu}@{ub}

@{b}string functions@{ub}
strcasecmp_d()  strncasecmp_d() stricmp_d()     strnicmp_d()
strlower_d()    strlwr_d()      strupper_d()    strupr_d()

@{b}ctype functions@{ub}
isalnum_d()     isalpha_d()     islower_d()     isprint_d()
ispunct_d()     isupper_d()     tolower_d()     toupper_d()

@{b}time functions@{ub}
asctime_d()     ctime_d()       strftime_d()
@endnode
///
/// Amiga-functions
@node Amiga-functions
@{b}@{fg shine}The Amiga - functions:@{par}
~~~~~~~~~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

The Amiga-functions are functions that are already included in the AmigaOS.
Because AmigaOS-functions are very often large and slow, I've integrated some
of those functions in "stormamiga.lib".@{par}
The Amiga - functions can be used as @{" inlinefunctions " link Inlinefunctions}.@{par}
@endnode
///
/// Examples
@node Examples
@{b}@{fg shine}Examples:@{par}
~~~~~~~~~@{fg text}@{ub}@{par}

In order to show the advantages and the usage of "stormamiga.lib" in Ansi-C,
I included the example-programs "Hello_World", "Pi", "Dhrystone",
"SpeedTest" and "TaskDemo".@{par}

The examples called  "...-storm" are linked with "storm020.lib" and the
startupcode "startup.o".@{par}

The examples called "...-stormamiga" are linked with "stormamiga_nc.lib"
and the startupcode "stormamiga_nc_startups+.o".@{par}

The examples called "...-stormamiga-2" are linked with "stormamiga_nc.lib"
and the startupcode "stormamiga_nc_startups+.o".
Furthermore the sourcecode is optimized for "stormamiga.lib".@{par}


In order to show the advantages and the usage of "stormamiga.lib"
and "C++.lib" in C++, I included the example-program "Hello_World_C++".@{par}

The examples called  "...-storm" are linked with "storm020.lib" and the
startupcode "startup.o".@{par}

The examples called "...-stormamiga" are linked with "stormamiga_nc.lib",
"C++.lib" and the startupcode "stormamiga_nc_C++_startups+.o".@{par}

The examples called "...-stormamiga-2" are linked with "stormamiga_nc.lib",
"C++.lib" and the startupcode "stormamiga_nc_C++_startups+.o".@{par}
Furthermore the sourcecode is optimized for "stormamiga.lib".@{par}


@{b}Some hints to "SpeedTest":@{ub}@{par}

"SpeedTest" is a simple testprogram that checks the speed and precision
of mathematical- and output-functions.@{par}
The number of testruns should be around 1000000 for MC68060, between 500000
and 1000000 for MC68040+, between 100000 and 500000 for MC68881+ and between
10000 and 50000 without FPU.@{par}

On an A1200 with OS 3.0 the "sqrt"-function of "mathieeedoubbas.library" returns
an infinite value (inf) instead of an reasonable value (Nan).@{par}
@endnode
///
/// Known bugs
@node "Known bugs"
@{b}@{fg shine}Known bugs:@{par}
~~~~~~~~~~~@{fg text}@{ub}@{par}

- @{b}N O N E@{ub}@{par}
@endnode
///
/// Updates
@node Updates
@{b}@{fg shine}Updates:@{par}
~~~~~~~~@{fg text}@{ub}@{par}

The newest version can be found on the homepage "http://WWW.CyberdyneSystems.de/".@{par}

Updates can be obtained directly from the @{" author " link author}.
If you would like to get the newest version via snail mail just send me
a disk (HD or DD) and an adressed envelope including postage.@{par}
@endnode
///
/// Restrictions
@node Restrictions
@{b}@{fg shine}Restrictions of the Demo-Version:@{par}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@{fg text}@{ub}@{par}

The demo-version of "stormamiga.lib" lacks the support for the small code modell
and optimized versions for MC68881+, MC68040+ und MC68060. Das Erstellen von Shared
Librarys ist ebenfalls nicht möglich. Furthermore the demo version shows an information
requester whenever you start a program linked with it.@{par}

@{code}
@{u}@{b}All included files in the demo-version:@{uu}@{ub}

@{b}Linkerlibraries@{ub}
stormamiga.lib

A special demo version of "stormamiga.lib".

@{b}Startupcodes@{ub}
stormamiga_startups.o
stormamiga_C++_startups.o

These Startupcodes are special demo versions.

@{b}Includefiles@{ub}
sys/dir.h
sys/dirent.h
sys/resource.h
sys/stat.h
sys/time.h
sys/times.h
sys/types.h
sys/unistd.h
dirent.h
limits.h
limits_stormamiga.h
math.h
math_stormamiga.h
stdio.h
stdio_stormamiga.h
stormamiga.h
stormamigainline.h
string.h
string_stormamiga.h
time.h
time_stormamiga.h
unistd.h
UnixToAmigaPath.h
utime.h

@{b}Userdictionary@{ub}
User x.dic ("x" is a number between 1 and 3)

@{b}Examples@{ub}
Hello_World
Hello_World_C++
Dhrystone
TaskDemo
drops
SpeedTest

These examples are adapted to the demo version.


@{u}@{b}All included files of the registered version:@{uu}@{ub}

@{b}Linkerlibraries@{ub}
stormamiga.lib
stormamiga_nc.lib
stormamiga_881.lib
stormamiga_nc_881.lib
stormamiga_040.lib
stormamiga_nc_040.lib
stormamiga_060.lib
stormamiga_nc_060.lib
stormamiga-library.lib
stormamiga-library_nc.lib

@{b}Startupcodes@{ub}
stormamiga_startups.o
stormamiga_startups+.o
stormamiga_nc_startups.o
stormamiga_nc_startups+.o
stormamiga_C++_startups.o
stormamiga_C++_startups+.o
stormamiga_nc_C++_startups.o
stormamiga_nc_C++_startups+.o

@{b}Includefiles@{ub}
sys/dir.h
sys/dirent.h
sys/resource.h
sys/stat.h
sys/time.h
sys/times.h
sys/types.h
sys/unistd.h
dirent.h
limits.h
limits_stormamiga.h
math.h
math_stormamiga.h
stdio.h
stdio_stormamiga.h
stormamiga.h
stormamigainline.h
string.h
string_stormamiga.h
time.h
time_stormamiga.h
unistd.h
UnixToAmigaPath.h
utime.h

@{b}Userdictionary@{ub}
User x.dic ("x" is a number between 1 and 3)

@{b}Examples@{ub}
Hello_World
Hello_World_C++
Dhrystone
TaskDemo
drops
SpeedTest
@endnode
///
/// Registration
@node Registration
@{b}@{fg shine}Registration:@{par}
~~~~~~~~~~~~~@{fg text}@{ub}@{par}

The "stormamiga.lib" is Shareware. If you want to use the unrestricted version, you
have to register first and pay the fee. You can find my address at @{" author " link Author}.
Contact me for my Bankaccount.@{par}
Once you have registered, you recieve a registrationnumber to download "stormamiga.lib".@{par}

@{b}price@{ub}@{par}
version for AmigaOS/68k: 10,- DM (German Marks) or 7,- $ (US Dollar) or 5,- £ (UK Pound)@{par}
version for p.OS/68k   : 10,- DM (German Marks) or 7,- $ (US Dollar) or 5,- £ (UK Pound)@{par}
version for AmigaOS/PPC: 20,- DM (German Marks) or 14,- $ (US Dollar) or 10,- £ (UK Pound)@{par}
version for p.OS/PPC   : 20,- DM (German Marks) or 14,- $ (US Dollar) or 10,- £ (UK Pound) not yet available@{par}
@endnode
///
/// Copyright
@node Copyright
@{b}@{fg shine}Copyright:@{par}
~~~~~~~~~~@{fg text}@{ub}@{par}

The demo-version of "stormamiga.lib" is freely distributable as long as
it is NOT CHANGED and ALL files are included UNCHANGED.@{par}
@{b}The registered version of "stormamiga.lib" is ONLY for registered users.
The "stormamiga.lib", the password and the registrationnumber must not be
published or copied@{ub}.@{par}

Re- or disassembling of "stormamiga.lib" is NOT allowed.@{par}


@{b}@{i}@{u}MOST IMPORTANT:@{ub}@{ui}@{uu}@{par}

"stormamiga.lib" is PROVIDED AS IS. Use it your OWN RISK.@{par}

The author is NOT RESPONSIBLE for any data loss or damage caused directly or
indirectly by the use of "stormamiga.lib".@{par}

All rights reserved. Please send bugreports and suggestions.@{par}
@endnode
///
/// History
@node History
@{b}@{fg shine}History:@{par}
~~~~~~~~@{fg text}@{ub}@{par}

@{" V.43.00  - V.43.05 " link V.43.00-V.43.05}  02.05.1997 - 13.03.1998@{par}


@{b}stormamiga.lib V.44.01 (16.07.1998 - 15.08.1998):@{par}
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ@{ub}@{par}
- the internal functions "INIT_5_InitStdIOFiles" and "EXIT_5_InitStdIOFiles" optimized@{par}

- the functions "ostream::operator <<(short)", "ostream::operator <<(ushort)",
"ostream::operator <<(int)", "ostream::operator <<(uint)", "ostream::operator <<(long)",
"ostream::operator <<(ulong)", "ostream::operator <<(cuchar *)", "ostream::operator <<(cschar *)"
and "ostream::operator <<(cchar *)" optimized@{par}

- Bugfixing of the internal functions "INIT_5_InitStdIOFiles" and "EXIT_5_InitStdIOFiles"
(only by Near Code and Near Data)@{par}

- Bugfixing of the function "ostream::operator <<(void *)"@{par}

- the installerscript overwork and extend@{par}

- the manual overwork and extend@{par}


@{b}stormamiga-library.lib V.44.01 (16.07.1998 - 15.08.1998):@{par}
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ@{ub}@{par}
- the internal functions "INIT_5_InitStdIOFiles" and "EXIT_5_InitStdIOFiles" optimized@{par}

- the functions "LibOpen" and "LibClose" overwork and extend (only the Versions for
StormC V2)@{par}


@{b}stormamiga.lib V.44.00 (13.11.1997 - 15.07.1998):@{par}
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ@{ub}@{par}
- the string-functions "stpchr", "stpcpy", "strbpl" and "strins" written@{par}

- the string-function "strdup" optimized.@{par}

- the stdio-functions "getw" and "putw" written@{par}

- the stdio-functions "fopen", "fclose", "freopen", "setvbuf" and "tmpnam" optimized@{par}

- the stdlib-functions "calloc", "realloc", "atexit" and "getenv" optimized@{par}

- the dirent-functions "opendir", "readdir", "rewinddir" and "closedir" written@{par}

- the unistd-functions "sleep", "usleep", "access", "chdir", "rmdir", "unlink", "getwd",
"getcwd", "mktemp", "close", "lseek", "read" and "write" written@{par}

- the fcntl-functions "creat" and "open" written@{par}

- the stat-functions "stat", "lstat", "fstat", "chmod" and "mkdir" written@{par}

- the time-functions "times", "utime" and "utimes" written@{par}

- the time-functions "ctime" and "ctime_d" optimized@{par}

- the resource-function "getrusage" written@{par}

- the math-functions "cosh", "sinh", "log10", "tanh", "log", "pow", "cos", "sin", "atan",
"tan", "exp", "acos", "asin" (only by the Versions for MC68881+, MC68040+ and MC68060),
"fabs", "fmod", "modf", "sqrt", "atan2", "ceil" and "floor" optimized (only by the Versions
for MC68EC020+)@{par}

- the spezial-functions "button" and "waitbutton" optimized@{par}

- the amiga.lib-functions "LibAllocPooled" and "LibFreePooled" new written@{par}

- the internal functions "dotimer", "INIT_9_chdir", "EXIT_9_chdir", "INIT_5_timer",
"UnixToAmigaPath", "INIT_6_InitPOSIXIOFiles" and "EXIT_6_InitPOSIXIOFiles" written@{par}

- the internal functions "double_in", "double_out", "form_in", "form_in64", "form_out",
"form_out64" (only by the Versions for MC68EC020+), "INIT_9_Stack", "EXIT_9_Stack",
"EXIT_5_InitFiles", "INIT_5_clock", "EXIT_4_free", "INIT_5_InitStdIOFiles", "INIT_5_fstream",
"EXIT_0_Main", "amigaopen", "amigaclose", "amigaflush", "amigagetc", "amigagetcunget", "amigaputc",
"amigaread", "amigareadunget", "amigaseek", "amigaungetc" and "amigawrite" optimized@{par}

- the Versions for MC68060 optimized (all emulated instructions removed); This make many programms
verry fast.@{par}

- Bugfixing of stdlib-functions "free" and "malloc_3"@{par}

- Bugfixing of stdio-function "fopen"@{par}

- Bugfixing of string-function "memset"@{par}

- Bugfixing of functions "istream::getline(char *, int, char)", "istream::get(char *,
int, char)", "ostream::operator <<(const char *)" and "delete"@{par}

- Bugfixing of includefile "stormamiga.h"@{par}

- Bugfixing of the internal functions "double_out" (only in large data model by the Versions
for MC68EC020+), "double_in" (only by the Versions for MC68881+, MC68040+ and MC68060),
"form_in", "form_in_", "form_in64" "form_in64_", "form_out", "form_out_", "form_out64" and "form_out64_"@{par}

- the internal functions "LibInit", "LibOpen", "LibClose", "LibExpunge", "LibNull",
"__LibOpen" and "__LibClose" removed@{par}

- the includefiles "limits_stormamiga.h", "math_stormamiga.h", "stdio_stormamiga.h",
"string_stormamiga.h", "time_stormamiga.h", "sys/time.h", "sys/times.h", "sys/resource.h",
"utime.h", "unistd.h", "sys/dirent.h", "sys/dir.h", "dirent.h", "sys/stat.h", "sys/types.h"
and "sys/unistd.h" written@{par}

- the includefiles "stormamiga.h" and "stormamigainline.h" overwork and extend@{par}

- all examples for the new version of "stormamiga.lib" changed@{par}

- the definitions "STORMAMIGA_UNIXPATH" and "STORMAMIGA" added@{par}

- the user dictonary overwork and extend@{par}

- the installerscript overwork and extend@{par}

- the manual overwork and extend@{par}


@{b}stormamiga-library.lib V.44.00 (10.03.1998 - 15.07.1998):@{par}
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ@{ub}@{par}
- the internal functions "EXIT_3_AmigaGuideBase", "EXIT_2_AslBase",
"EXIT_3_BulletBase", "EXIT_3_ColorWheelBase", "EXIT_2_CxBase",
"EXIT_3_DataTypesBase", "EXIT_2_DiskfontBase", "EXIT_1_DOSBase",
"EXIT_2_ExpansionBase", "EXIT_2_GadToolsBase", "EXIT_3_GradientSliderBase",
"EXIT_2_GfxBase", "EXIT_2_IconBase", "EXIT_2_IFFParseBase",
"EXIT_2_IntuitionBase", "EXIT_2_KeymapBase", "EXIT_2_LayersBase",
"EXIT_3_LocaleBase", "EXIT_3_LowLevelBase", "EXIT_2_MathBase",
"EXIT_2_MathIeeeDoubBasBase", "EXIT_2_MathIeeeDoubTransBase",
"EXIT_2_MathIeeeSingBasBase", "EXIT_2_MathIeeeSingTransBase",
"EXIT_2_MathTransBase", "EXIT_2_MUIMasterBase", "EXIT_3_NVBase",
"EXIT_3_RealTimeBase", "EXIT_2_ReqToolsBase", "EXIT_2_RexxSysBase",
"EXIT_3_TranslatorBase", "EXIT_1_UtilityBase", "EXIT_2_VersionBase",
"EXIT_2_WizardBase", "EXIT_2_WorkbenchBase", "INIT_3_AmigaGuideBase",
"INIT_2_AslBase", "INIT_3_BulletBase", "INIT_3_ColorWheelBase",
"INIT_2_CxBase", "INIT_3_DataTypesBase", "INIT_2_DiskfontBase",
"INIT_1_DOSBase", "INIT_2_ExpansionBase", "INIT_2_GadToolsBase",
"INIT_3_GradientSliderBase", "INIT_2_GfxBase", "INIT_2_IconBase",
"INIT_2_IFFParseBase", "INIT_2_IntuitionBase", "INIT_2_KeymapBase",
"INIT_2_LayersBase", "INIT_3_LocaleBase", "INIT_3_LowLevelBase",
"INIT_2_MathBase", "INIT_2_MathIeeeDoubBasBase", "INIT_2_MathIeeeDoubTransBase",
"INIT_2_MathIeeeSingBasBase", "INIT_2_MathIeeeSingTransBase",
"INIT_2_MathTransBase", "INIT_2_MUIMasterBase", "INIT_3_NVBase",
"INIT_3_RealTimeBase", "INIT_2_ReqToolsBase", "INIT_2_RexxSysBase",
"INIT_3_TranslatorBase", "INIT_1_UtilityBase", "INIT_2_VersionBase",
"INIT_2_WizardBase", "INIT_2_WorkbenchBase", "INIT_9_Stack", "EXIT_9_Stack",
"INIT_0_NEAR_CODE_StdioFiles",  "INIT_5_InitFiles", "EXIT_5_InitFiles", "INIT_5_clock",
"EXIT_4_free", "EXIT_4_free_3", "INIT_5_InitStdIOFiles", "EXIT_5_InitStdIOFiles",
"INIT_6_InitPOSIXIOFiles", "EXIT_6_InitPOSIXIOFiles", "INIT_5_fstream", "INIT_5_fstream",
"INIT_9_chdir", "EXIT_9_chdir", "LibInit", "LibOpen", "LibClose", "LibExpunge", "LibNull",
"abortLibInit", "LibInitError", "__LibOpen" and "__LibClose" written@{par}

- the stdlib-functions "malloc", "free", "malloc_3" and "free_3" written@{par}

- the unistd-function "chdir" written@{par}

- the time-function "clock" written@{par}

- the new-function "set_new_handler" written@{par}

- the functions "new" and "delete" written@{par}
@endnode
///
/// V.43.00-V.43.05 History
@node V.43.00-V.43.05 History
@{b}stormamiga.lib V.43.05 (Patch vom 13.03.1998):@{par}
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ@{ub}@{par}
- die stdlib-Funktionen "malloc" und "free" neu geschrieben@{par}

- die interne Funktion "EXIT_4_free" neu geschrieben@{par}

- die Funktionen "new" und "delete" neu geschrieben@{par}


@{b}stormamiga.lib V.43.04 (Patch vom 04.03.1998):@{par}
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ@{ub}@{par}
- Fehlerkorrektur der internen Funktionen "INIT_5_clock", "EXIT_4_free",
"INIT_5_InitStdIOFiles", "EXIT_5_InitFiles", "INIT_5_fstream" und "amigaputc"@{par}


@{b}stormamiga.lib V.43.03 (Patch vom 30.01.1998):@{par}
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ@{ub}@{par}
- Fehlerkorrektur der stdlib-Funktion "malloc"; Es traten einige Enforcer-Hits auf.@{par}


@{b}stormamiga.lib V.43.02 (Patch vom 09.01.1998):@{par}
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ@{ub}@{par}
- die stdlib-Funktionen "malloc" und "free" optimiert; Diese
Funktion ist jetzt kürzer und schneller.@{par}

- Fehlerkorrektur der stdlib-Funktion "malloc"; Wenn das Programm
Mungwall aktiv war, wurde der Speicher nicht oder nicht richtig
angefordert.@{par}


@{b}stormamiga.lib V.43.01 (11.11.1997 - 12.11.1997):@{par}
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ@{ub}@{par}
- die internen Funktionen "LibInit" und "LibExpunge" an StormC V.3.x
angepaßt; dadurch ist es möglich Shared Libraries mit StormC V.3.x
zu schreiben.@{par}


@{b}stormamiga.lib V.43.00 (02.05.1997 - 10.11.1997):@{par}
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ@{ub}@{par}
- die amiga.lib-Funktion "InvertString" geschrieben@{par}

- die amiga.lib-Funktionen "AddTOF", "CreatePort", "ArgArrayInit"
und "HotKey" optimiert; Diese Funktionen sind jetzt kürzer und schneller.@{par}

- die string-Funktion "strdup" optimiert; Diese Funktion ist jetzt kürzer
und schneller.@{par}

- die stdlib-Funktionen "malloc_3" und "free_3" geschrieben@{par}

- die stdlib-Funktionen "exit" und "abort__STANDARD" neu geschrieben@{par}

- die stdlib-Funktionen "div", "ldiv" und "uinttostr" optimiert; Diese
Funktionen sind jetzt schneller.@{par}

- die stdio-Funktionen "printf64", "printf64_", "vprintf64", "vprintf64_",
"fprintf64", "fprintf64_", "vfprintf64", "vfprintf64_", "snprintf64",
"snprintf64_", "sprintf64", "sprintf64_", "vsnprintf64", "vsnprintf64_",
"vsprintf64", "vsprintf64_", "scanf64", "scanf64_", "vscanf64", "vscanf64_",
"fscanf64", "fscanf64_", "vfscanf64", "vfscanf64_", "sscanf64", "sscanf64_",
"vsscanf64" und "vsscanf64_" geschrieben@{par}

- die stdio-Funktionen "sprintf", "sprintf_", "vsprintf", "vsprintf_",
"snprintf", "snprintf_", "vsnprintf", "vsnprintf_", "freopen", "tmpnam",
"fread", "fwrite", "tmpfile", "fopen" und "puts" optimiert; Diese Funktionen
sind jetzt kürzer und schneller.@{par}

- die time-Funktionen "gmtime", "mktime", "strftime" und "strftime_d" optimiert;
Diese Funktionen sind jetzt kürzer und schneller.@{par}

- die spezial-Funktionen "divsl" und "divul" optimiert; Diese Funktionen
sind jetzt schneller.@{par}

- die internen Funktionen "INIT_9_Stack", "EXIT_9_Stack", "wbmain_", "wbmain__",
"un_signed_out", "INIT_5_fstream", "EXIT_5_fstream", "EXIT_4_free_3", "getch",
"putch" und "ungetch" geschrieben@{par}

- die internen Funktionen "form_in", "form_in_", "form_out", "form_out_",
"wbmain" und "wbmain__P09WBStartup" neu geschrieben@{par}

- die internen Funktionen "main_" und "main__" an die neuen Startupcodes
angepaßt@{par}

- die internen Funktionen "EXIT_3_AmigaGuideBase", "EXIT_2_AslBase",
"EXIT_3_BulletBase", "EXIT_3_ColorWheelBase", "EXIT_2_CxBase",
"EXIT_3_DataTypesBase", "EXIT_2_DiskfontBase", "EXIT_1_DOSBase",
"EXIT_2_ExpansionBase", "EXIT_2_GadToolsBase", "EXIT_3_GradientSliderBase",
"EXIT_2_GfxBase", "EXIT_2_IconBase", "EXIT_2_IFFParseBase",
"EXIT_2_IntuitionBase", "EXIT_2_KeymapBase", "EXIT_2_LayersBase",
"EXIT_3_LocaleBase", "EXIT_3_LowLevelBase", "EXIT_2_MathBase",
"EXIT_2_MathIeeeDoubBasBase", "EXIT_2_MathIeeeDoubTransBase",
"EXIT_2_MathIeeeSingBasBase", "EXIT_2_MathIeeeSingTransBase",
"EXIT_2_MathTransBase", "EXIT_2_MUIMasterBase", "EXIT_3_NVBase",
"EXIT_3_RealTimeBase", "EXIT_2_ReqToolsBase", "EXIT_2_RexxSysBase",
"EXIT_3_TranslatorBase", "EXIT_1_UtilityBase", "EXIT_2_VersionBase",
"EXIT_2_WizardBase", "EXIT_2_WorkbenchBase", "INIT_3_AmigaGuideBase",
"INIT_2_AslBase", "INIT_3_BulletBase", "INIT_3_ColorWheelBase",
"INIT_2_CxBase", "INIT_3_DataTypesBase", "INIT_2_DiskfontBase",
"INIT_1_DOSBase", "INIT_2_ExpansionBase", "INIT_2_GadToolsBase",
"INIT_3_GradientSliderBase", "INIT_2_GfxBase", "INIT_2_IconBase",
"INIT_2_IFFParseBase", "INIT_2_IntuitionBase", "INIT_2_KeymapBase",
"INIT_2_LayersBase", "INIT_3_LocaleBase", "INIT_3_LowLevelBase",
"INIT_2_MathBase", "INIT_2_MathIeeeDoubBasBase", "INIT_2_MathIeeeDoubTransBase",
"INIT_2_MathIeeeSingBasBase", "INIT_2_MathIeeeSingTransBase",
"INIT_2_MathTransBase", "INIT_2_MUIMasterBase", "INIT_3_NVBase",
"INIT_3_RealTimeBase", "INIT_2_ReqToolsBase", "INIT_2_RexxSysBase",
"INIT_3_TranslatorBase", "INIT_1_UtilityBase", "INIT_2_VersionBase",
"INIT_2_WizardBase", "INIT_2_WorkbenchBase", "INIT_5_clock",
"INIT_0_NEAR_CODE_StdioFiles", "INIT_5_InitStdIOFiles", "EXIT_4_free",
"EXIT_9_AtExitFunctionsCaller", "EXIT_5_InitFiles", "EXIT_0_Main",
"LibInit", "LibClose", "LibExpunge", "amigareadunget", "amigaputc",
"amigaopen", "form_in64", "form_in64_", "form_out64", "form_out64_",
"double_in", "double_out", "main" und "main__" optimiert; Diese Funktionen
sind jetzt kürzer und schneller.@{par}

- die internen Funktionen "form_in", "form_in_", "form_out" und "form_out_"
in "form_in64", "form_in64_", "form_out64" und "form_out64_" umbenannt@{par}

- die Funktionen "cinfilebuf::cinfilebuf()", "cinfilebuf::~cinfilebuf()",
"coutfilebuf::coutfilebuf()" und "coutfilebuf::~coutfilebuf()" geschrieben@{par}

- alle Funktionen der Klassen "filebuf", "fstream", "ifstream", "ios", "istream",
"ofstream", "ostream" und "streambuf" geschrieben@{par}

- Fehlerkorrektur der amiga.lib-Funktion "TimeDelay"; Die Anwendung dieser
Funktion hatte keinerlei Wirkung.@{par}

- Fehlerkorrektur der stdio-Funktionen "freopen" und "tmpfile"; Die Anwendung
dieser Funktionen führte auf einigen Systemen zum Systemabsturz.@{par}

- Fehlerkorrektur der stdlib-Funktion "abort"@{par}

- Fehlerkorrektur der math-Funktion "atan2"; Da die Register nicht korrekt
restauriert wurden, führte die Anwendung dieser Funktionen zu Fehlern oder
zum Systemabsturz.@{par}

- Fehlerkorrektur der internen Funktionen "LibInit", "LibExpunge" (Register
a6 wurde nicht gesichert), "form_out" (Bei den Typen "e", "E", "g" und "G"
wurden maximal 2 Stellen des Exponenten angezeigt. Wenn der Exponent mehr als
2 Stellen hatte, dann wurden nur die letzten 2 Stellen angezeigt. Bei Type "p"
wurde "0x" nicht ausgegeben.), "form_in" (Bei den Typen "e", "f" und "g" hatte
die Angabe der Größe "h" keinerlei Wirkung.), "amigaread", "main__", "main_",
"signal_dat" und "amigaputc"@{par}

- die internen Funktionen "char_out", "string_out", "signed_out",
"unsigned_out", "char_in", "string_in", "int_in", "Expo10", "expo10", "Pwr10",
"pwr10", "fpwr10", "floattostr", "intmult", "uintmult", intdiv", "uintdiv",
"li_div_int", "lib_div_uint", "SDivMod32", "UDivMod32", "INIT_0_InitUserbreak",
"_userbreak", "main__iPc" und "main__iPPc" entfernt; Diese Funktionen sind, in
der aktuellen Version der "stormamiga.lib", nicht mehr notwendig.@{par}

- alle Register- und Alphafunktionen entfernt@{par}

- die Startupcodes "stormamiga_startups+.o", "stormamiga_nc_startups+.o",
"stormamiga_C++_startups+.o" und "stormamiga_nc_C++_startups+.o" geschrieben@{par}

- die Startupcodes "stormamiga_startups.o", "stormamiga_nc_startups.o",
"stormamiga_C++_startups.o" und "stormamiga_nc_C++_startups.o" neu
geschrieben@{par}

- spezielle Versionen der Startupcodes "stormamiga_startups.o", "stormamiga_nc_startups.o",
"stormamiga_C++_startups.o", "stormamiga_nc_C++_startups.o", "stormamiga_startups+.o",
"stormamiga_nc_startups+.o", "stormamiga_C++_startups+.o" und "stormamiga_nc_C++_startups+.o"
für StormC V.3.x  geschrieben@{par}

- alle Beispielprogramme an die aktuelle Version der "stormamiga.lib" angepasst,
das Beispielprogramm "SpeedTest" erweitert@{par}

- die Includedateien "stormamiga.h" und "stormamigainline.h" überarbeitet und
erweitert@{par}

- das Benutzer-Lexikon überarbeitet und erweitert@{par}

- das Installerskript überarbeitet und erweitert@{par}

- die Anleitung überarbeitet und erweitert; Beschreibung der neuen Funktionen
hinzugefügt, einige Fehler beseitigt@{par}


@{b}stormamiga_881.lib V.43.00 (13.12.1996 - 10.11.1997):@{par}
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ@{ub}@{par}
- die math-Funktionen "fmod" und "modf" neu geschrieben@{par}

- die internen Funktionen "form_in", "form_in64", "form_out",
"form_out64", "double_in" und "double_out" geschrieben@{par}

- die Methoden "ostream &ostream::operator <<(float)" und
"istream &istream::operator >>(float &)" geschrieben@{par}


@{b}stormamiga_040.lib V.43.00 (13.12.1996 - 10.11.1997):@{par}
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ@{ub}@{par}
- die math-Funktionen "acos", "asin", "atan", "cosh", "exp", "log",
"log10", "pow", "sin", "sinh", "tan" und "tanh" geschrieben@{par}

- die math-Funktionen "cos" (Diese Funktion ist jetzt schneller.),
"floor", "ceil", "fmod" und "modf" neu geschrieben@{par}

- die math-Funktion "atan2" optimiert; Diese Funktion ist jetzt kürzer
und schneller.@{par}

- die internen Funktionen "form_in", "form_in64", "form_out",
"form_out64", "double_in" und "double_out" geschrieben@{par}

- die Methoden "ostream &ostream::operator <<(float)" und
"istream &istream::operator >>(float &)" geschrieben@{par}


@{b}stormamiga_060.lib V.43.00 (13.12.1996 - 10.11.1997):@{par}
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ@{ub}@{par}
- die math-Funktionen "acos", "asin", "atan", "cosh", "exp", "log",
"log10", "pow", "sin", "sinh", "tan" und "tanh" geschrieben@{par}

- die math-Funktionen "cos" (Diese Funktion ist jetzt schneller.),
"fmod" und "modf" neu geschrieben@{par}

- die math-Funktion "atan2" optimiert; Diese Funktion ist jetzt kürzer
und schneller.@{par}

- die stdlib-Funktionen "div", "ldiv" und "uinttostr" geschrieben@{par}

- die time-Funktionen "gmtime", "mktime", "strftime" und "strftime_d"
geschrieben@{par}

- die spezial-Funktionen "divsl" und "divul" geschrieben@{par}

- die internen Funktionen "form_in", "form_in64", "form_out",
"form_out64", "form_out_", "form_out64_", "un_signed_out",
"double_in" und "double_out" geschrieben@{par}

- die Methoden "ostream &ostream::operator <<(float)" und
"istream &istream::operator >>(float &)" geschrieben@{par}
@endnode
///
/// Future
@node future The Future
@{b}@{fg shine}The future:@{par}
~~~~~~~~~~~@{fg text}@{ub}@{par}

The following topics are on my wishlist for the next versions of
"stormamiga.lib".@{par}

- writing all missing functions of "stormamiga.lib" for "p.OS" and "PowerPC"@{par}

- writing many functions of "UNIX", "POSIX" and other compilers like "DICE" and "SAS C"@{par}

- some Amiga functions and new functions@{par}

- better support for AmigaOS 3.x@{par}

- Your suggestions@{par}
@endnode
///
/// Thanks
@node Thanks
@{b}@{fg shine}Thanks:@{par}
~~~~~~~@{fg text}@{ub}@{par}

I want to thank the following persons and companies:@{par}
ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ@{par}

- @{b}Haage & Partner Computer GmbH@{ub}; for their support; for the
sourcecodes, they gave me for free; especially Jochen Becher and
Jürgen Haage, who spend several hours for my probelms.@{par}

- @{b}Uwe Schienbein@{ub}; for Betatesting, Bugreports, new ideas, his
support developing the functions "cos" and "sin" for MC68040+ and MC68060,
for the exampleprogram "TaskDemo" and the logo for the "stormamiga.lib"@{par}

- @{b}Thomas Blätte@{ub}; for the english translation of the installerscripts,
the icons for installer, Betatesting, Bugreports and new ideas@{par}

- @{b}ALeX Kazik@{ub}; for Bugreports and new ideas@{par}

- @{b}Kai Fleischer@{ub}; for the english translation of this guide,
Betatesting, Bugreports, new ideas and moral support@{par}

- @{b}Carsten Bornholz@{ub}; for Betatesting and Bugreports@{par}

- @{b}Jens Schildknecht@{ub}; for Betatesting and Bugreports@{par}

- @{b}Allan Odgaard@{ub}; for Bugreports@{par}

- @{b}Andreas Mayer-Gürr@{ub}; for Bugreports and moral support@{par}

- @{b}Jens Rosenboom@{ub}; for Bugreports  and many, many suggestions@{par}

- @{b}Joachim Schneider@{ub}; for Betatesting@{par}

- @{b}Onur Pekdimir@{ub}; for his support publishing "stormamiga.lib"@{par}

- @{b}Dietmar Heidrich@{ub}; for "OMA"@{par}

- @{b}Frank Wille@{ub}; for "PhxAss"@{par}
@endnode
///
/// Author
@node Author
@{b}@{fg shine}Author:@{par}
~~~~~~~@{fg text}@{ub}@{par}
@{jcenter}
Matthias Henze@{par}
Gorkistrasse 127@{par}
04347 Leipzig@{par}
Germany@{par}

fon: +49 (0) 341/2326414@{par}

email: Matthias_Henze@CyberdyneSystems.de@{par}

URL: http://WWW.CyberdyneSystems.de/@{par}

@{b}@{fg shine}English guide:@{par}
~~~~~~~~~~~~~~@{fg text}@{ub}@{par}
For bugreports or suggestions concerning the english guide please email:@{par}

    kai.fleischer@gmd.de@{par}
@{par}

@{jleft}
I am always looking for bugreports und suggestions.@{par}
Please tell me your opinion about "stormamiga.lib".@{par}

@{b}@{u}To all users who work for some kind words@{ub}@{uu}@{par}

I am searching for users who want to translate the documentation and installerscript
into a not (yet) supported language and for betatesters.@{par}
If you are interested in one of the mentioned topics please mail or call.@{par}

Thanks for your support.@{par}
@endnode
///
/// Index
@node guideIndex Index
@{code}@{b}@{fg shine}Index:
~~~~~~@{fg text}@{ub}

@{b} A@{ub}

 @{" access              " link access}
 @{" Amiga - functions   " link Amiga-functions}
 @{" asctime_d           " link asctime_d}
 @{" assert_             " link assert_}
 @{" author              " link author}

@{b} B@{ub}

 @{" bcmp                " link bcmp}
 @{" bcopy               " link bcopy}
 @{" button              " link button}
 @{" button_al           " link button_al}
 @{" button_ar           " link button_ar}
 @{" button_bl           " link button_bl}
 @{" button_br           " link button_br}
 @{" bzero               " link bzero}

@{b} C@{ub}

 @{" chdir               " link chdir}
 @{" chmod               " link chmod}
 @{" close               " link close}
 @{" closedir            " link closedir}
 @{" Copyright           " link Copyright}
 @{" creat               " link creat}
 @{" ctime_d             " link ctime_d}

@{b} D@{ub}

 @{" divs64              " link divs64}
 @{" divsl               " link divsl}
 @{" divu64              " link divu64}
 @{" divul               " link divul}

@{b} E@{ub}

 @{" Examples            " link Examples}

@{b} F@{ub}

 @{" ffs                 " link ffs}
 @{" fprintf64           " link fprintf64}
 @{" fprintf_            " link fprintf_}
 @{" fprintf64_          " link fprintf64_}
 @{" fscanf64            " link fscanf64}
 @{" fscanf_             " link fscanf_}
 @{" fscanf64_           " link fscanf64_}
 @{" fstat               " link fstat}
 @{" Function overview   " link "Function overview"}
 @{" functions           " link functions}

@{b} G@{ub}

 @{" General notes       " link "General notes"}
 @{" german functions    " link "german functions"}
 @{" getcwd              " link getcwd}
 @{" getrusage           " link getrusage}
 @{" getw                " link getw}
 @{" getwd               " link getwd}

@{b} H@{ub}

 @{" Hints               " link Hints}
 @{" History             " link History}

@{b} I@{ub}

 @{" index               " link index}
 @{" Inlinefunctions     " link Inlinefunctions}
 @{" inputformatstring   " link inputformatstring}
 @{" inputformatstring_  " link inputformatstring_}
 @{" Installation        " link Installation}
 @{" Introduction        " link Introduction}
 @{" isalnum_d           " link isalnum_d}
 @{" isalpha_d           " link isalpha_d}
 @{" isinf               " link isinf}
 @{" islower_d           " link islower_d}
 @{" isnan               " link isnan}
 @{" isprint_d           " link isprint_d}
 @{" ispunct_d           " link ispunct_d}
 @{" isupper_d           " link isupper_d}

@{b} K@{ub}

 @{" Known bugs          " link "Known Bugs"}

@{b} L@{ub}

 @{" lseek               " link lseek}
 @{" lstat               " link lstat}

@{b} M@{ub}

 @{" main__()            " link main__()}
 @{" max_Height          " link max_Height}
 @{" max_Width           " link max_Width}
 @{" memccpy             " link memccpy}
 @{" mkdir               " link mkdir}
 @{" mktemp              " link mktemp}
 @{" muls                " link muls}
 @{" muls64              " link muls64}
 @{" mulu                " link mulu}
 @{" mulu64              " link mulu64}

@{b} O@{ub}

 @{" open                " link open}
 @{" opendir             " link opendir}
 @{" OS3 functions       " link "OS3 functions"}
 @{" outputformatstring  " link outputformatstring}
 @{" outputformatstring_ " link outputformatstring_}

@{b} P@{ub}

 @{" parameterlist       " link parameterlist}
 @{" printf64            " link printf64}
 @{" printf_             " link printf_}
 @{" printf64_           " link printf64_}
 @{" putw                " link putw}

@{b} R@{ub}

 @{" read                " link read}
 @{" readdir             " link readdir}
 @{" Registration        " link Registration}
 @{" Requirements        " link Requirements}
 @{" Restrictions        " link Restrictions}
 @{" rewinddir           " link rewinddir}
 @{" rindex              " link rindex}
 @{" rmdir               " link rmdir}

@{b} S@{ub}

 @{" scanf64             " link scanf64}
 @{" scanf_              " link scanf_}
 @{" scanf64_            " link scanf64_}
 @{" setbuffer           " link setbuffer}
 @{" setlinebuf          " link setlinebuf}
 @{" sleep               " link sleep}
 @{" snprintf            " link snprintf}
 @{" snprintf64          " link snprintf64}
 @{" snprintf_           " link snprintf_}
 @{" snprintf64_         " link snprintf64_}
 @{" Special features    " link "Special features"}
 @{" SPRINTF             " link SPRINTF}
 @{" sprintf64           " link sprintf64}
 @{" sprintf_            " link sprintf_}
 @{" sprintf64_          " link sprintf64_}
 @{" sscanf64            " link sscanf64}
 @{" sscanf_             " link sscanf_}
 @{" sscanf64_           " link sscanf64_}
 @{" Startupcode         " link Startupcode}
 @{" stat                " link stat}
 @{" STORMAMIGA          " link STORMAMIGA}
 @{" STORMAMIGA_DEUTSCH  " link "german functions"}
 @{" STORMAMIGA_INLINE   " link Inlinefunctions}
 @{" STORMAMIGA_NOWB     " link STORMAMIGA_NOWB}
 @{" STORMAMIGA_NO_IO_WB " link STORMAMIGA_NO_IO_WB}
 @{" STORMAMIGA_OS3      " link "OS3 functions"}
 @{" STORMAMIGA_STACK    " link STORMAMIGA_STACK}
 @{" STORMAMIGA_UNIXPATH " link STORMAMIGA_UNIXPATH}
 @{" STORMAMIGA_64BIT    " link "64 bit functions"}
 @{" stpchr              " link stpchr}
 @{" stpcpy              " link stpcpy}
 @{" strbpl              " link strbpl}
 @{" strcasecmp          " link strcasecmp}
 @{" strcasecmp_d        " link strcasecmp_d}
 @{" strcoll             " link strcoll}
 @{" strdup              " link strdup}
 @{" strftime            " link strftime}
 @{" strftime_d          " link strftime_d}
 @{" stricmp_d           " link stricmp_d}
 @{" stringbuffer        " link stringbuffer}
 @{" strisns             " link strins}
 @{" strlower            " link strlower}
 @{" strlower_d          " link strlower_d}
 @{" strlwr_d            " link strlwr_d}
 @{" strncasecmp         " link strncasecmp}
 @{" strncasecmp_d       " link strncasecmp_d}
 @{" strncpyn            " link strncpyn}
 @{" strnicmp            " link strnicmp}
 @{" strnicmp_d          " link strnicmp_d}
 @{" strsep              " link strsep}
 @{" strupper            " link strupper}
 @{" strupper_d          " link strupper_d}
 @{" strupr_d            " link strupr_d}
 @{" strxfrm             " link strxfrm}
 @{" swab                " link swab}

@{b} T@{ub}

 @{" Thanks              " link Thanks}
 @{" The future          " link future}
 @{" timeformatstring    " link timeformatstring}
 @{" times               " link times}
 @{" tolower_d           " link tolower_d}
 @{" toupper_d           " link toupper_d}

@{b} U@{ub}

 @{" unlink              " link unlink}
 @{" Updates             " link Updates}
 @{" usleep              " link usleep}
 @{" utime               " link utime}
 @{" utimes              " link utimes}

@{b} V@{ub}

 @{" vfprintf64          " link vfprintf64}
 @{" vfprintf_           " link vfprintf_}
 @{" vfprintf64_         " link vfprintf64_}
 @{" vfscanf             " link vfscanf}
 @{" vfscanf64           " link vfscanf64}
 @{" vfscanf_            " link vfscanf_}
 @{" vfscanf64_          " link vfscanf64_}
 @{" vprintf64           " link vprintf64}
 @{" vprintf_            " link vprintf_}
 @{" vprintf64_          " link vprintf64_}
 @{" vscanf              " link vscanf}
 @{" vscanf64            " link vscanf64}
 @{" vscanf_             " link vscanf_}
 @{" vscanf64_           " link vscanf64_}
 @{" vsnprintf           " link vsnprintf}
 @{" vsnprintf64         " link vsnprintf64}
 @{" vsnprintf_          " link vsnprintf_}
 @{" vsnprintf64_        " link vsnprintf64_}
 @{" VSPRINTF            " link VSPRINTF}
 @{" vsprintf64          " link vsprintf64}
 @{" vsprintf_           " link vsprintf_}
 @{" vsprintf64_         " link vsprintf64_}
 @{" vsscanf             " link vsscanf}
 @{" vsscanf64           " link vsscanf64}
 @{" vsscanf_            " link vsscanf_}
 @{" vsscanf64_          " link vsscanf64_}

@{b} W@{ub}

 @{" waitbutton          " link waitbutton}
 @{" waitbutton_al       " link waitbutton_al}
 @{" waitbutton_ar       " link waitbutton_ar}
 @{" waitbutton_bl       " link waitbutton_bl}
 @{" waitbutton_br       " link waitbutton_br}
 @{" wbmain()            " link wbmain()}
 @{" _wbmain_            " link _wbmain_}
 @{" _wbmain__           " link _wbmain_}
 @{" Workbenchexamples   " link Workbenchexamples}
 @{" write               " link write}
@endnode
///
