@database robodoc.guide
@author J.v.Weert and F.N.C.Slothouber
@(c)
@node Main work:Gotcha/developer/glib.guide
@{b}TABLE OF CONTENTS@{ub}
@{"gotcha.library/--Information--" Link "--Information--"}
@{"gotcha.library/ARexx-GL_NODEINFO" Link "ARexx-GL_NODEINFO"}
@{"gotcha.library/ARexx-GL_PORTREQUEST" Link "ARexx-GL_PORTREQUEST"}
@{"gotcha.library/ARexx-GL_REQUESTNODE" Link "ARexx-GL_REQUESTNODE"}
@{"gotcha.library/GL_AddNodeData" Link "GL_AddNodeData"}
@{"gotcha.library/GL_AddNodeString" Link "GL_AddNodeString"}
@{"gotcha.library/GL_AddNotifyTask" Link "GL_AddNotifyTask"}
@{"gotcha.library/GL_AddressToString" Link "GL_AddressToString"}
@{"gotcha.library/GL_AdrCmp" Link "GL_AdrCmp"}
@{"gotcha.library/GL_AdrCmpPat" Link "GL_AdrCmpPat"}
@{"gotcha.library/GL_AllocRem" Link "GL_AllocRem"}
@{"gotcha.library/GL_CloseNL" Link "GL_CloseNL"}
@{"gotcha.library/GL_DeleteNode" Link "GL_DeleteNode"}
@{"gotcha.library/GL_DupGotchaPortList" Link "GL_DupGotchaPortList"}
@{"gotcha.library/GL_ExtraChange" Link "GL_ExtraChange"}
@{"gotcha.library/GL_ExtraClose" Link "GL_ExtraClose"}
@{"gotcha.library/GL_ExtraDel" Link "GL_ExtraDel"}
@{"gotcha.library/GL_ExtraEnumNode" Link "GL_ExtraEnumNode"}
@{"gotcha.library/GL_ExtraEnumTag" Link "GL_ExtraEnumTag"}
@{"gotcha.library/GL_ExtraFind" Link "GL_ExtraFind"}
@{"gotcha.library/GL_ExtraFindLock" Link "GL_ExtraFindLock"}
@{"gotcha.library/GL_ExtraFlush" Link "GL_ExtraFlush"}
@{"gotcha.library/GL_ExtraLock" Link "GL_ExtraLock"}
@{"gotcha.library/GL_ExtraLockTag" Link "GL_ExtraLockTag"}
@{"gotcha.library/GL_ExtraOpen" Link "GL_ExtraOpen"}
@{"gotcha.library/GL_ExtraPut" Link "GL_ExtraPut"}
@{"gotcha.library/GL_ExtraTagDate" Link "GL_ExtraTagDate"}
@{"gotcha.library/GL_ExtraUnlock" Link "GL_ExtraUnlock"}
@{"gotcha.library/GL_ExtraUnlockTag" Link "GL_ExtraUnlockTag"}
@{"gotcha.library/GL_FindNode" Link "GL_FindNode"}
@{"gotcha.library/GL_FindNodeFirst" Link "GL_FindNodeFirst"}
@{"gotcha.library/GL_FindNodeNext" Link "GL_FindNodeNext"}
@{"gotcha.library/GL_FindNodeString" Link "GL_FindNodeString"}
@{"gotcha.library/GL_FreeDZNLists" Link "GL_FreeDZNLists"}
@{"gotcha.library/GL_FreeDomainArray" Link "GL_FreeDomainArray"}
@{"gotcha.library/GL_FreeList" Link "GL_FreeList"}
@{"gotcha.library/GL_FreeRem" Link "GL_FreeRem"}
@{"gotcha.library/GL_GetConfig" Link "GL_GetConfig"}
@{"gotcha.library/GL_GetCosts" Link "GL_GetCosts"}
@{"gotcha.library/GL_GetDZNLists" Link "GL_GetDZNLists"}
@{"gotcha.library/GL_GetDomainArray" Link "GL_GetDomainArray"}
@{"gotcha.library/GL_GetListsDiffs" Link "GL_GetListsDiffs"}
@{"gotcha.library/GL_GetNodeNr" Link "GL_GetNodeNr"}
@{"gotcha.library/GL_GetOpenCount" Link "GL_GetOpenCount"}
@{"gotcha.library/GL_GetPassword" Link "GL_GetPassword"}
@{"gotcha.library/GL_MoveIndexDomain" Link "GL_MoveIndexDomain"}
@{"gotcha.library/GL_MoveIndexZone" Link "GL_MoveIndexZone"}
@{"gotcha.library/GL_NewList" Link "GL_NewList"}
@{"gotcha.library/GL_NodeRequest" Link "GL_NodeRequest"}
@{"gotcha.library/GL_OpenNL" Link "GL_OpenNL"}
@{"gotcha.library/GL_PlaySample" Link "GL_PlaySample"}
@{"gotcha.library/GL_Poll" Link "GL_Poll"}
@{"gotcha.library/GL_PollFreeStr" Link "GL_PollFreeStr"}
@{"gotcha.library/GL_PortRequest" Link "GL_PortRequest"}
@{"gotcha.library/GL_ReadItem" Link "GL_ReadItem"}
@{"gotcha.library/GL_RemNotifyTask" Link "GL_RemNotifyTask"}
@{"gotcha.library/GL_SendRxCmd" Link "GL_SendRxCmd"}
@{"gotcha.library/GL_StringListDup" Link "GL_StringListDup"}
@{"gotcha.library/GL_StringListDupCB" Link "GL_StringListDupCB"}
@{"gotcha.library/GL_StripSpaces" Link "GL_StripSpaces"}
@{"gotcha.library/GL_TranslatePhone" Link "GL_TranslatePhone"}
@{"gotcha.library/GL_XtractInfos" Link "GL_XtractInfos"}
@endnode
@Node "--Information--" "gotcha.library/--Information--"
@{fg shine}gotcha.library/--Information--@{fg text}

NAME
@{fg shine}    gotcha.library
@{fg text}
COPYRIGHT
@{i}@{fg shine}    (c)1995/1996 Thomas Bickel. All rights reserved.
    This one is Freeware.

    You do not have to pay anything in order to use gotcha.library,
    you may copy it, give it to others, etc. as long as this is done
    for free. But you must not is sell it, or charge a fee for the
    library.

    gotcha.library may be used in commercial or shareware products
    provided you send the author a free copy.

    Please note that "GList", Gotchas nodelist processor, that
    creates the files for gotcha.library is shareware and may only
    be used for a trial period or if you register Gotcha.
    See the Gotcha and GTools documentation for more informations about
    this matter.

@{fg text}@{ui}
DISCLAIMER
    This software is provided "as is", without warranty of any kind or
    fitness for a particular purpose, either expressed or implied, all of
    which are hereby explicitly disclaimed. The author only guarantees
    that gotcha.library will occupy disk space.
    In no event shall the author be liable to you or anyone else for any
    damages, including any lost profits, lost savings or other incidental or
    consequential damages arising out of the use or inability to use this
    software.


FUNCTION
    This library provides some easy to use functions to access informations
    stored in nodelists. To be more precise: from nodelists compiled with
    "GList", Gotchas' nodelist processor.
    One can look up informations for specific addresses or addresses
    matching patterns.

    Informations that will be given besides the address: region, hub,
    domain, cost, bbs name, location, sysop, phonenumber, translated
    phonenumber, baudrate, nodelist flags and the password.
    For easy comunication with software users a GUI driven address
    requester and port requester (intended to request an ARexx port) is
    available too.

    Besides those nodelist specific functions there are also support
    functions for exec lists, memory allocation, and even a function
    to play samples.

    This library also features an ARexx interface, to use the functions
    you will have to tell ARexx about it. In a script write:
          if ~show(Libraries,"gotcha.library") then
              if ~addlib("gotcha.library",0,-30,0) then exit


AUTHOR
@{i}@{fg shine}    Thomas Bickel
@{fg text}@{ui}
MODIFICATION HISTORY
    19-Mar-95 -- 1.0 First version
    04-May-95 -- 1.1 MatchFirst,-Next functions
    09-May-95 -- 1.3 String functions added
    04-Oct-95 -- 1.7 Added ARexx function, port requester
    16-Nov-95 -- 1.8 More string functions, notify functions added
    19-Jan-96 -- 2.0 Some bugfixes
    06-Feb-96 -- 3.0 Added 'Extra' functions
    ! Don't use the extra functions yet, as their usage will change !

@endnode
@Node "ARexx-GL_NODEINFO" "gotcha.library/ARexx-GL_NODEINFO"
@{fg shine}gotcha.library/ARexx-GL_NODEINFO@{fg text}

NAME
@{fg shine}   GL_NODEINFO -- Get informations for a node
@{fg text}
SYNOPSIS
   info = GL_NODEINFO(address,flags,nodelistpath)

FUNCTION
   Get informations for an address.

INPUTS
   address -- the address to get infos for
   flags -- what information to return, seperated by a comma:
      ALL          -- for all except original phonenumber and type
      NODE         -- node address
      OPER or SYSO -- sysop
      SYST or BBS  -- bbs name
      PHON or TELE -- phonenumber
      OPHO         -- original phonenumber (as in the nodelist)
      LOCA         -- location
      PASS         -- password
      BAUD         -- baudrate from the nodelist
      COST         -- cost
      REGI         -- region
      HUB          -- hub
      FLAG         -- nodlist flags
      TYPE         -- type (HOST,HUB,NODE or POINT)
      Note that the informations will be given in the order specified here.
   nodelistpath -- path where the (compiled) nodelist resides

RESULT
   An errorstring starting with "0", or the infostring starting with "1".

EXAMPLE
@{fg shine}   say GL_NODEINFO("2:310/108","ALL","nodelist:");
@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO

@endnode
@Node "ARexx-GL_PORTREQUEST" "gotcha.library/ARexx-GL_PORTREQUEST"
@{fg shine}gotcha.library/ARexx-GL_PORTREQUEST@{fg text}

NAME
@{fg shine}   GL_PORTREQUEST -- Request a port from the user
@{fg text}
SYNOPSIS
   node = GL_PORTREQUEST(windowtitle,defaultport)

FUNCTION
   Request a port from the user.

INPUTS
   windowtitle -- title of the window
   defaultport -- initial portname

RESULT
   The choosen port or "0".

EXAMPLE
@{fg shine}   say GL_PORTREQUEST("Select a port","GOTCHA");
@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO


@endnode
@Node "ARexx-GL_REQUESTNODE" "gotcha.library/ARexx-GL_REQUESTNODE"
@{fg shine}gotcha.library/ARexx-GL_REQUESTNODE@{fg text}

NAME
@{fg shine}   GL_REQUESTNODE -- Request a node from the user
@{fg text}
SYNOPSIS
   node = GL_REQUESTNODE(windowtitle,flags)

FUNCTION
   Request a node from the user.

INPUTS
   windowtitle -- title of the window
   flags -- "N" for quick request, no infowindow

RESULT
   The choosen node or "0".

EXAMPLE
@{fg shine}   say GL_REQUESTNODE("Select a node","N");
@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO

@endnode
@Node "GL_AddNodeData" "gotcha.library/GL_AddNodeData"
@{fg shine}gotcha.library/GL_AddNodeData@{fg text}

NAME
@{fg shine}   @{"GL_AddNodeData" Link "work:Gotcha/developer/glib.guide/GL_AddNodeData"} -- Add a non string node to a list
@{fg text}
SYNOPSIS
   node = @{"GL_AddNodeData" Link "work:Gotcha/developer/glib.guide/GL_AddNodeData"}(list,datasize,add,pri)
                          A0,   D0,     D1, D2
   void * @{"GL_AddNodeData" Link "work:Gotcha/developer/glib.guide/GL_AddNodeData"}(struct List *,ULONG,UWORD,ULONG)

FUNCTION
   Allocates <datasize> bytes for a new node and links it into the list.
   After you have called this function you can fill in your data.

INPUTS
   list -- list to add node to
   datasize -- size of nodestruct plus user data
   add -- one of:
   AN_HEAD        AddHead
   AN_TAIL        AddTail
   AN_ENQUEUE     Enqueue (priority in data)
   pri -- priority for AN_ENQUEUE

RESULT
   The node or NULL on failure.

EXAMPLE
@{fg shine}   @{"GL_AddNodeData" Link "work:Gotcha/developer/glib.guide/GL_AddNodeData"}(list,sizeof(my_struct),AN_TAIL,NULL);
@{fg text}
NOTES
@{fg shine}   Create something like this:
   struct my_struct {
   struct Node node;
   ULONG my_ulong;
   UBYTE *my_string;
   etc...
   };
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_NewList" Link "work:Gotcha/developer/glib.guide/GL_NewList"}, @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}, @{"GL_AddNodeString" Link "work:Gotcha/developer/glib.guide/GL_AddNodeString"}, @{"GL_FindNodeString" Link "work:Gotcha/developer/glib.guide/GL_FindNodeString"},
   @{"GL_GetNodeNr" Link "work:Gotcha/developer/glib.guide/GL_GetNodeNr"}, @{"GL_StringListDup" Link "work:Gotcha/developer/glib.guide/GL_StringListDup"}, @{"GL_DeleteNode" Link "work:Gotcha/developer/glib.guide/GL_DeleteNode"}


@endnode
@Node "GL_AddNodeString" "gotcha.library/GL_AddNodeString"
@{fg shine}gotcha.library/GL_AddNodeString@{fg text}

NAME
@{fg shine}   @{"GL_AddNodeString" Link "work:Gotcha/developer/glib.guide/GL_AddNodeString"} -- Add a node with a string to an exec list
@{fg text}
SYNOPSIS
   new_node = @{"GL_AddNodeString" Link "work:Gotcha/developer/glib.guide/GL_AddNodeString"}(string,list,add,data)
                                 A0,   A1, D0,  D1
   struct Node * @{"GL_AddNodeString" Link "work:Gotcha/developer/glib.guide/GL_AddNodeString"}(UBYTE *,struct List *,UWORD,ULONG)

FUNCTION
   Allocates memory for a new node and the given string. node->ln_Name will
   point to the copy of the given string.

INPUTS
   string -- string to duplicate
   list -- list to add node to
   add -- one of:
   AN_HEAD        AddHead
   AN_TAIL        AddTail
   AN_ENQUEUE     Enqueue (priority in data)
   AN_INSERT      Insert, case sensitive, after (char*)<data>
   AN_INSERTI     Insert, case insensitive, after (char*)<data>
   AN_INSERT_AF   Insert, sort alpha forward, case sensitive
   AN_INSERT_AB   Insert, sort alpha backwards, case sensitive
   AN_INSERT_AFI  Insert, sort alpha forward, case insensitive
   AN_INSERT_ABI  Insert, sort alpha backwards, case insensitive
   data -- either priority, char * (AN_INSERT,AN_INSERTI) or NULL.

RESULT
   The new node or NULL on failure.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_NewList" Link "work:Gotcha/developer/glib.guide/GL_NewList"}, @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}, @{"GL_FindNodeString" Link "work:Gotcha/developer/glib.guide/GL_FindNodeString"}, @{"GL_AddNodeData" Link "work:Gotcha/developer/glib.guide/GL_AddNodeData"},
   @{"GL_GetNodeNr" Link "work:Gotcha/developer/glib.guide/GL_GetNodeNr"}, @{"GL_StringListDup" Link "work:Gotcha/developer/glib.guide/GL_StringListDup"}, @{"GL_DeleteNode" Link "work:Gotcha/developer/glib.guide/GL_DeleteNode"}

@endnode
@Node "GL_AddNotifyTask" "gotcha.library/GL_AddNotifyTask"
@{fg shine}gotcha.library/GL_AddNotifyTask@{fg text}

NAME
@{fg shine}   @{"GL_AddNotifyTask" Link "work:Gotcha/developer/glib.guide/GL_AddNotifyTask"} -- Add a task to the notification list
@{fg text}
SYNOPSIS
   success = @{"GL_AddNotifyTask" Link "work:Gotcha/developer/glib.guide/GL_AddNotifyTask"}(signr)
                               D0
   BOOL @{"GL_AddNotifyTask" Link "work:Gotcha/developer/glib.guide/GL_AddNotifyTask"}(LONG)

FUNCTION
   This function adds the current task to the list of tasks that will be
   notified in case a new invocation of Gotcha is launched or in case
   a Gotcha invocation quits.
   If this happens the signal indicated by 'signr' will be set.

INPUTS
   signr -- number of signal that should be set (not mask!)

RESULT
        TRUE if the task could be added to the list, FALSE else.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}   Don't forget to call @{"GL_RemNotifyTask" Link "work:Gotcha/developer/glib.guide/GL_RemNotifyTask"} or memory will get lost.
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_RemNotifyTask" Link "work:Gotcha/developer/glib.guide/GL_RemNotifyTask"}


@endnode
@Node "GL_AddressToString" "gotcha.library/GL_AddressToString"
@{fg shine}gotcha.library/GL_AddressToString@{fg text}

NAME
@{fg shine}   @{"GL_AddressToString" Link "work:Gotcha/developer/glib.guide/GL_AddressToString"} -- Converts a address structure to a string.
@{fg text}
SYNOPSIS
   type = @{"GL_AddressToString" Link "work:Gotcha/developer/glib.guide/GL_AddressToString"}(add,dest)
                            A0,  A1
   LONG @{"GL_AddressToString" Link "work:Gotcha/developer/glib.guide/GL_AddressToString"}(struct gl_address *,UBYTE *)

FUNCTION
   Converts a address structure to a string

INPUTS
   add -- gl_address struct
   dest -- destination buffer

RESULT
   1 -- address contains wildcards
   0 -- address contains no wildcards

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_XtractInfos" Link "work:Gotcha/developer/glib.guide/GL_XtractInfos"}

@endnode
@Node "GL_AdrCmp" "gotcha.library/GL_AdrCmp"
@{fg shine}gotcha.library/GL_AdrCmp@{fg text}

NAME
@{fg shine}   @{"GL_AdrCmp" Link "work:Gotcha/developer/glib.guide/GL_AdrCmp"} -- Compare two addresses exact.
@{fg text}
SYNOPSIS
   result = @{"GL_AdrCmp" Link "work:Gotcha/developer/glib.guide/GL_AdrCmp"}(add1,add2)
                       A0,  A1
   int @{"GL_AdrCmp" Link "work:Gotcha/developer/glib.guide/GL_AdrCmp"}(struct gl_address *, struct gl_address *)

FUNCTION
   This function compares two addresses. For a "equal" result both addresses
   must be _exactly_ the same. "2:*" matches only "2:*" but not "2:300/23".

INPUTS
   add1 -- address 1
   add2 -- address 2

RESULT
   negative -- first string is below the second
   zero -- strings are equal
   positive -- first string is above the second

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_AdrCmpPat" Link "work:Gotcha/developer/glib.guide/GL_AdrCmpPat"}

@endnode
@Node "GL_AdrCmpPat" "gotcha.library/GL_AdrCmpPat"
@{fg shine}gotcha.library/GL_AdrCmpPat@{fg text}

NAME
@{fg shine}   @{"GL_AdrCmpPat" Link "work:Gotcha/developer/glib.guide/GL_AdrCmpPat"} -- Compare two addresses with pattern matching.
@{fg text}
SYNOPSIS
   result = @{"GL_AdrCmpPat" Link "work:Gotcha/developer/glib.guide/GL_AdrCmpPat"}(add1,add2)
                          A0,  A1
   int @{"GL_AdrCmpPat" Link "work:Gotcha/developer/glib.guide/GL_AdrCmpPat"}(struct gl_address *, struct gl_address *)

FUNCTION
   This function compares two addresses with pattern matching.
   "2:*" matches "2:*" and "2:300/23".

INPUTS
   add1 -- address 1
   add2 -- address 2

RESULT
   negative -- first string is below the second
   zero -- strings are equal
   positive -- first string is above the second

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_AdrCmp" Link "work:Gotcha/developer/glib.guide/GL_AdrCmp"}


@endnode
@Node "GL_AllocRem" "gotcha.library/GL_AllocRem"
@{fg shine}gotcha.library/GL_AllocRem@{fg text}

NAME
@{fg shine}   @{"GL_AllocRem" Link "work:Gotcha/developer/glib.guide/GL_AllocRem"} -- AllocVec with tracking to make freeing easy.
@{fg text}
SYNOPSIS
   memory = @{"GL_AllocRem" Link "work:Gotcha/developer/glib.guide/GL_AllocRem"}(key,byteSize,requirements)
                        A0,   D0,         D1
   APTR @{"GL_AllocRem" Link "work:Gotcha/developer/glib.guide/GL_AllocRem"}(ULONG *,ULONG,ULONG)

FUNCTION
   Allocate memory with AllocVec and links all allocations made with one
   key together, making freeing easy.

INPUTS
   key -- remember key, set to 0 before first call
   byteSize -- number of bytes to allocate
   requirements -- memory requirements

RESULT
   Allocated memory or NULL in case of not enought memory.

EXAMPLE
@{fg shine}   ULONG k=0;
   @{"GL_AllocRem" Link "work:Gotcha/developer/glib.guide/GL_AllocRem"}(&k,1000,MEMF_CLEAR);
   @{"GL_AllocRem" Link "work:Gotcha/developer/glib.guide/GL_AllocRem"}(&k,1000,MEMF_CLEAR);
   @{"GL_FreeRem" Link "work:Gotcha/developer/glib.guide/GL_FreeRem"}(&k);
@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_FreeRem" Link "work:Gotcha/developer/glib.guide/GL_FreeRem"}

@endnode
@Node "GL_CloseNL" "gotcha.library/GL_CloseNL"
@{fg shine}gotcha.library/GL_CloseNL@{fg text}

NAME
@{fg shine}   @{"GL_CloseNL" Link "work:Gotcha/developer/glib.guide/GL_CloseNL"} -- Close the nodelist and free context data.
@{fg text}
SYNOPSIS
   context = @{"GL_CloseNL" Link "work:Gotcha/developer/glib.guide/GL_CloseNL"}(context)
                          A0
   struct gl_context * @{"GL_CloseNL" Link "work:Gotcha/developer/glib.guide/GL_CloseNL"}(struct gl_context *)

FUNCTION
   Close a nodelist opened with @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}.

INPUTS
   context -- the context returned by @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}.

RESULT
   Always NULL.

EXAMPLE
@{fg shine}   my_context = @{"GL_CloseNL" Link "work:Gotcha/developer/glib.guide/GL_CloseNL"}(my_context);
@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}


@endnode
@Node "GL_DeleteNode" "gotcha.library/GL_DeleteNode"
@{fg shine}gotcha.library/GL_DeleteNode@{fg text}

NAME
@{fg shine}   @{"GL_DeleteNode" Link "work:Gotcha/developer/glib.guide/GL_DeleteNode"} -- Unlink a node and free memory
@{fg text}
SYNOPSIS
   @{"GL_DeleteNode" Link "work:Gotcha/developer/glib.guide/GL_DeleteNode"}(node)
                  A0
   void @{"GL_DeleteNode" Link "work:Gotcha/developer/glib.guide/GL_DeleteNode"}(struct Node *)

FUNCTION
   Removes() a node from a list and frees its memory.

INPUTS
   node -- node to remove

RESULT

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}   Only use this function on nodes you allocated via the library.
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_NewList" Link "work:Gotcha/developer/glib.guide/GL_NewList"}, @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}, @{"GL_AddNodeString" Link "work:Gotcha/developer/glib.guide/GL_AddNodeString"}, @{"GL_FindNodeString" Link "work:Gotcha/developer/glib.guide/GL_FindNodeString"},
   @{"GL_AddNodeData" Link "work:Gotcha/developer/glib.guide/GL_AddNodeData"}, @{"GL_GetNodeNr" Link "work:Gotcha/developer/glib.guide/GL_GetNodeNr"}, @{"GL_StringListDup" Link "work:Gotcha/developer/glib.guide/GL_StringListDup"}

@endnode
@Node "GL_DupGotchaPortList" "gotcha.library/GL_DupGotchaPortList"
@{fg shine}gotcha.library/GL_DupGotchaPortList@{fg text}

NAME
@{fg shine}   @{"GL_DupGotchaPortList" Link "work:Gotcha/developer/glib.guide/GL_DupGotchaPortList"} -- Get a copy of the ARexx port list
@{fg text}
SYNOPSIS
   list = @{"GL_DupGotchaPortList" Link "work:Gotcha/developer/glib.guide/GL_DupGotchaPortList"}()
   struct List * @{"GL_DupGotchaPortList" Link "work:Gotcha/developer/glib.guide/GL_DupGotchaPortList"}(void)

FUNCTION
   Creates a copy of the internal list of all available Gotcha Arexx ports.
   The number of ports will depend on the number of gotcha invocations running
   at the time this function is called.
   Free the list with @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}.

INPUTS

RESULT
   A pointer to an exec list.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}


@endnode
@Node "GL_ExtraChange" "gotcha.library/GL_ExtraChange"
@{fg shine}gotcha.library/GL_ExtraChange@{fg text}

NAME
@{fg shine}   @{"GL_ExtraChange" Link "work:Gotcha/developer/glib.guide/GL_ExtraChange"} -- Change a database entry
@{fg text}
SYNOPSIS
   succ = @{"GL_ExtraChange" Link "work:Gotcha/developer/glib.guide/GL_ExtraChange"}(extra,address,data,tag,size,flags)
                          A0      A1    A2  D0   D1   D2
   BOOL @{"GL_ExtraChange" Link "work:Gotcha/developer/glib.guide/GL_ExtraChange"}(void *,struct gl_address,void *,ULONG,ULONG,ULONG)

FUNCTION
   This function first tries to find a matching entry in the database
   if one is found it is removed. Then the given data is added to
   the database.

INPUTS
   Extra -- descriptor as returned by @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}
   address -- address the data is for
   data -- pointer to your data
   tag -- tag the data is for
   size -- size of your data
   flags -- NULL for now

RESULT
   TRUE for success, FALSE for failure.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}   This is the same as fist calling @{"GL_ExtraFind" Link "work:Gotcha/developer/glib.guide/GL_ExtraFind"}, removing the node if
   found, then calling @{"GL_ExtraPut" Link "work:Gotcha/developer/glib.guide/GL_ExtraPut"}.
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_ExtraPut" Link "work:Gotcha/developer/glib.guide/GL_ExtraPut"}

@endnode
@Node "GL_ExtraClose" "gotcha.library/GL_ExtraClose"
@{fg shine}gotcha.library/GL_ExtraClose@{fg text}

NAME
@{fg shine}   @{"GL_ExtraClose" Link "work:Gotcha/developer/glib.guide/GL_ExtraClose"} -- Close extra database
@{fg text}
SYNOPSIS
   @{"GL_ExtraClose" Link "work:Gotcha/developer/glib.guide/GL_ExtraClose"}(Extra)
                  A0
   VOID @{"GL_ExtraClose" Link "work:Gotcha/developer/glib.guide/GL_ExtraClose"}(void *)

FUNCTION
   Close extra database opened via @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}.

INPUTS
   Database descriptor as returned by @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}.

RESULT

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}

@endnode
@Node "GL_ExtraDel" "gotcha.library/GL_ExtraDel"
@{fg shine}gotcha.library/GL_ExtraDel@{fg text}

NAME
@{fg shine}   @{"GL_ExtraDel" Link "work:Gotcha/developer/glib.guide/GL_ExtraDel"} -- Delete an data entry
@{fg text}
SYNOPSIS
   succ @{"GL_ExtraDel" Link "work:Gotcha/developer/glib.guide/GL_ExtraDel"}(Extra, data)
                     A0     A1
   BOOL @{"GL_ExtraDel" Link "work:Gotcha/developer/glib.guide/GL_ExtraDel"}(void *, void *)

FUNCTION
   Delete an data entry from the database. Ie unlink it and free
   the memory.

INPUTS
   Extra -- descriptor as returned by @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}
   data -- data ptr as returned eg by @{"GL_ExtraFind" Link "work:Gotcha/developer/glib.guide/GL_ExtraFind"}

RESULT
   TRUE if the node could be removed, FALSE else.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_ExtraFind" Link "work:Gotcha/developer/glib.guide/GL_ExtraFind"}

@endnode
@Node "GL_ExtraEnumNode" "gotcha.library/GL_ExtraEnumNode"
@{fg shine}gotcha.library/GL_ExtraEnumNode@{fg text}

NAME
@{fg shine}   @{"GL_ExtraEnumNode" Link "work:Gotcha/developer/glib.guide/GL_ExtraEnumNode"} -- Call callback for each node
@{fg text}
SYNOPSIS
   count = @{"GL_ExtraEnumNode" Link "work:Gotcha/developer/glib.guide/GL_ExtraEnumNode"}(extra,func,userdata)
                             A0    A1     A2
   LONG @{"GL_ExtraEnumNode" Link "work:Gotcha/developer/glib.guide/GL_ExtraEnumNode"}(void *, BOOL (*)(struct gl_address*,void*),void *)

FUNCTION
   For each node in the database the given callback function will be
   called with the address of the node and the passed in user data.

INPUTS
   Extra -- descriptor as returned by @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}
   func -- callback function, should return TRUE if you wish to
           continue, FALSE to stop.
   userdata -- 2nd argument passed to the callback function

RESULT
   number of nodes processed

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO

@endnode
@Node "GL_ExtraEnumTag" "gotcha.library/GL_ExtraEnumTag"
@{fg shine}gotcha.library/GL_ExtraEnumTag@{fg text}

NAME
@{fg shine}   @{"GL_ExtraEnumTag" Link "work:Gotcha/developer/glib.guide/GL_ExtraEnumTag"} -- Call callback for set of entries
@{fg text}
SYNOPSIS
   count = @{"GL_ExtraEnumTag" Link "work:Gotcha/developer/glib.guide/GL_ExtraEnumTag"}(extra,address,func,userdata)
                         A0      A1    A2     A3
   LONG @{"GL_ExtraEnumTag" Link "work:Gotcha/developer/glib.guide/GL_ExtraEnumTag"}(void *,struct gl_address *,
                           BOOL (*)(void *,ULONG,ULONG,void*),VOID *)

FUNCTION
   For each entry in the database that has a matching address
   the callbackfunction will be called with a pointer to the
   data, the size, the tag and the given userdata.

INPUTS
   Extra -- descriptor as returned by @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}
   address -- address to match
   func -- callback function, should return TRUE if you wish to
           continue, FALSE to stop.
   userdata -- 4th argument passed to the callback function

RESULT
   Number of nodes processed.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO


@endnode
@Node "GL_ExtraFind" "gotcha.library/GL_ExtraFind"
@{fg shine}gotcha.library/GL_ExtraFind@{fg text}

NAME
@{fg shine}   @{"GL_ExtraFind" Link "work:Gotcha/developer/glib.guide/GL_ExtraFind"} -- Find a entry in the database
@{fg text}
SYNOPSIS
   data = @{"GL_ExtraFind" Link "work:Gotcha/developer/glib.guide/GL_ExtraFind"}(Extra,address,size,tag)
                        A0     A1     A2   D0
   VOID *@{"GL_ExtraFind" Link "work:Gotcha/developer/glib.guide/GL_ExtraFind"}(void *, struct gl_address *, ULONG *,ULONG)

FUNCTION
   Find a entry in the database that matches tag and address.

INPUTS
   Extra -- descriptor as returned by @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}
   address -- address to match
   size -- will be set to size of data if present
   tag -- tag to match

RESULT

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_ExtraPut" Link "work:Gotcha/developer/glib.guide/GL_ExtraPut"}, @{"GL_ExtraFindLock" Link "work:Gotcha/developer/glib.guide/GL_ExtraFindLock"}

@endnode
@Node "GL_ExtraFindLock" "gotcha.library/GL_ExtraFindLock"
@{fg shine}gotcha.library/GL_ExtraFindLock@{fg text}

NAME
@{fg shine}   @{"GL_ExtraFindLock" Link "work:Gotcha/developer/glib.guide/GL_ExtraFindLock"} -- Find and lock a entry in the database
@{fg text}
SYNOPSIS
   data = @{"GL_ExtraFindLock" Link "work:Gotcha/developer/glib.guide/GL_ExtraFindLock"}(Extra,address,size,tag)
                             A0     A1    A2  D0
   VOID *@{"GL_ExtraFindLock" Link "work:Gotcha/developer/glib.guide/GL_ExtraFindLock"}(void *, struct gl_address *, ULONG *, ULONG)

FUNCTION
   Find a entry in the database that matches tag and address and locks
   the data entry via @{"GL_ExtraLockTag" Link "work:Gotcha/developer/glib.guide/GL_ExtraLockTag"}.

INPUTS
   Extra -- descriptor as returned by @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}
   address -- address to match
   size -- will be set to size of data if present
   tag -- tag to match

RESULT

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}   Don't forget to unlock the data.
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_ExtraPut" Link "work:Gotcha/developer/glib.guide/GL_ExtraPut"}, @{"GL_ExtraFind" Link "work:Gotcha/developer/glib.guide/GL_ExtraFind"}, @{"GL_ExtraLockTag" Link "work:Gotcha/developer/glib.guide/GL_ExtraLockTag"}

@endnode
@Node "GL_ExtraFlush" "gotcha.library/GL_ExtraFlush"
@{fg shine}gotcha.library/GL_ExtraFlush@{fg text}

NAME
@{fg shine}   @{"GL_ExtraFlush" Link "work:Gotcha/developer/glib.guide/GL_ExtraFlush"} -- Flush extra database out to disk
@{fg text}
SYNOPSIS
   succ = @{"GL_ExtraFlush" Link "work:Gotcha/developer/glib.guide/GL_ExtraFlush"}(Extra)
                        A0
   BOOL @{"GL_ExtraFlush" Link "work:Gotcha/developer/glib.guide/GL_ExtraFlush"}(void *)

FUNCTION
   If the database has changed calling this function will make
   the data to get written to disk.

INPUTS
   Extra descriptor as returned by @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}

RESULT
   FALSE if there was an error, TRUE else.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO

@endnode
@Node "GL_ExtraLock" "gotcha.library/GL_ExtraLock"
@{fg shine}gotcha.library/GL_ExtraLock@{fg text}

NAME
@{fg shine}   @{"GL_ExtraLock" Link "work:Gotcha/developer/glib.guide/GL_ExtraLock"} -- Lock the database for exclusive access
@{fg text}
SYNOPSIS
   @{"GL_ExtraLock" Link "work:Gotcha/developer/glib.guide/GL_ExtraLock"}(Extra)
                  A0
   VOID @{"GL_ExtraLock" Link "work:Gotcha/developer/glib.guide/GL_ExtraLock"}(void *)

FUNCTION
   This function guaranties the calling task exclusive access to the
   database until @{"GL_ExtraUnlock" Link "work:Gotcha/developer/glib.guide/GL_ExtraUnlock"} is called.

INPUTS
   Extra -- descriptor as returned by @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}

RESULT

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}   Calling this function is only required if you don't want other tasks
   to change anything in the database.
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_ExtraUnlock" Link "work:Gotcha/developer/glib.guide/GL_ExtraUnlock"}


@endnode
@Node "GL_ExtraLockTag" "gotcha.library/GL_ExtraLockTag"
@{fg shine}gotcha.library/GL_ExtraLockTag@{fg text}

NAME
@{fg shine}   @{"GL_ExtraLockTag" Link "work:Gotcha/developer/glib.guide/GL_ExtraLockTag"} -- Write/delete lock a database entry
@{fg text}
SYNOPSIS
   @{"GL_ExtraLockTag" Link "work:Gotcha/developer/glib.guide/GL_ExtraLockTag"}(Extra, data)
                     A0    A1
   VOID @{"GL_ExtraLockTag" Link "work:Gotcha/developer/glib.guide/GL_ExtraLockTag"}(void *, void *)

FUNCTION
   Write/delete lock a single database entry. Other tasks will not be
   allowed to write to or delete the data entry given.

INPUTS
   Extra -- descriptor as returned by @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}
   data -- data ptr as returned eg by @{"GL_ExtraFind" Link "work:Gotcha/developer/glib.guide/GL_ExtraFind"}

RESULT

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_ExtraFind" Link "work:Gotcha/developer/glib.guide/GL_ExtraFind"}, @{"GL_ExtraUnlockTag" Link "work:Gotcha/developer/glib.guide/GL_ExtraUnlockTag"}


@endnode
@Node "GL_ExtraOpen" "gotcha.library/GL_ExtraOpen"
@{fg shine}gotcha.library/GL_ExtraOpen@{fg text}

NAME
@{fg shine}   @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"} -- Open extra database
@{fg text}
SYNOPSIS
   Extra *@{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}(path)
                        A0
   VOID *@{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}(UBYTE *)

FUNCTION
   Opens the extra database (ie the file called 'Gotcha!extra') found
   in the given path. If the database does not exist it will be created.
   Note that there can only be *one* (global) database.

INPUTS
   path -- where to look for the database, usualy "nodelist:"

RESULT
   An extra descriptor.

EXAMPLE
@{fg shine}   extra = @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}("nodelist:");
@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   GL_Extra#?


@endnode
@Node "GL_ExtraPut" "gotcha.library/GL_ExtraPut"
@{fg shine}gotcha.library/GL_ExtraPut@{fg text}

NAME
@{fg shine}   @{"GL_ExtraPut" Link "work:Gotcha/developer/glib.guide/GL_ExtraPut"} -- Add an entry to the database
@{fg text}
SYNOPSIS
   succ =  @{"GL_ExtraPut" Link "work:Gotcha/developer/glib.guide/GL_ExtraPut"}(Extra,address,data,tag,size,flags)
                        A0     A1     A2   D0  D1    D2
   BOOL @{"GL_ExtraPut" Link "work:Gotcha/developer/glib.guide/GL_ExtraPut"}(void *,struct gl_address *,void *,ULONG,ULONG,ULONG)

FUNCTION
   Add a new entry to the database.

INPUTS
   Extra -- descriptor as returned by @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}
   address -- address the data is for
   data -- pointer to your data
   tag -- tag the data is for
   size -- size of your data
   flags -- NULL for now

RESULT
   TRUE for success, FALSE for failure.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}   The added entry wil not get written out to memory immediately but
   the next time the database is flushed or closed.
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_ExtraFind" Link "work:Gotcha/developer/glib.guide/GL_ExtraFind"}

@endnode
@Node "GL_ExtraTagDate" "gotcha.library/GL_ExtraTagDate"
@{fg shine}gotcha.library/GL_ExtraTagDate@{fg text}

NAME
@{fg shine}   @{"GL_ExtraTagDate" Link "work:Gotcha/developer/glib.guide/GL_ExtraTagDate"} -- Get date of last change to entry
@{fg text}
SYNOPSIS
   @{"GL_ExtraTagDate" Link "work:Gotcha/developer/glib.guide/GL_ExtraTagDate"}(Extra, data, DateStamp)
                     A0     A1      A2
   VOID @{"GL_ExtraTagDate" Link "work:Gotcha/developer/glib.guide/GL_ExtraTagDate"}(void *, void *, struct DateStamp *)

FUNCTION
   Get the date of the last change made to an entry.

INPUTS
   Extra -- descriptor as returned by @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}
   data -- data ptr as returned eg by @{"GL_ExtraFind" Link "work:Gotcha/developer/glib.guide/GL_ExtraFind"}
   DateStamp -- DateStamp structure to be filled

RESULT

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_ExtraFind" Link "work:Gotcha/developer/glib.guide/GL_ExtraFind"}


@endnode
@Node "GL_ExtraUnlock" "gotcha.library/GL_ExtraUnlock"
@{fg shine}gotcha.library/GL_ExtraUnlock@{fg text}

NAME
@{fg shine}   @{"GL_ExtraUnlock" Link "work:Gotcha/developer/glib.guide/GL_ExtraUnlock"} -- Unlock the database
@{fg text}
SYNOPSIS
   @{"GL_ExtraUnlock" Link "work:Gotcha/developer/glib.guide/GL_ExtraUnlock"}(Extra)
                    A0
   VOID @{"GL_ExtraUnlock" Link "work:Gotcha/developer/glib.guide/GL_ExtraUnlock"}(void *)

FUNCTION
   Unlock the database locked via @{"GL_ExtraLock" Link "work:Gotcha/developer/glib.guide/GL_ExtraLock"}

INPUTS
   Extra -- descriptor as returned by @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}

RESULT

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_ExtraLock" Link "work:Gotcha/developer/glib.guide/GL_ExtraLock"}

@endnode
@Node "GL_ExtraUnlockTag" "gotcha.library/GL_ExtraUnlockTag"
@{fg shine}gotcha.library/GL_ExtraUnlockTag@{fg text}

NAME
@{fg shine}   @{"GL_ExtraUnlockTag" Link "work:Gotcha/developer/glib.guide/GL_ExtraUnlockTag"} -- Unlock a locked data entry
@{fg text}
SYNOPSIS
   @{"GL_ExtraUnlockTag" Link "work:Gotcha/developer/glib.guide/GL_ExtraUnlockTag"}(Extra, data)
                       A0     A1
   VOID @{"GL_ExtraUnlockTag" Link "work:Gotcha/developer/glib.guide/GL_ExtraUnlockTag"}(void *, void *)

FUNCTION
   Unlocks a database entry locked via @{"GL_ExtraLockTag" Link "work:Gotcha/developer/glib.guide/GL_ExtraLockTag"}

INPUTS
   Extra -- descriptor as returned by @{"GL_ExtraOpen" Link "work:Gotcha/developer/glib.guide/GL_ExtraOpen"}
   data -- same data ptr as passed to @{"GL_ExtraLockTag" Link "work:Gotcha/developer/glib.guide/GL_ExtraLockTag"}

RESULT

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_ExtraFind" Link "work:Gotcha/developer/glib.guide/GL_ExtraFind"}, @{"GL_ExtraLockTag" Link "work:Gotcha/developer/glib.guide/GL_ExtraLockTag"}

@endnode
@Node "GL_FindNode" "gotcha.library/GL_FindNode"
@{fg shine}gotcha.library/GL_FindNode@{fg text}

NAME
@{fg shine}   @{"GL_FindNode" Link "work:Gotcha/developer/glib.guide/GL_FindNode"} -- Find a node in the nodelist and fill the info structure.
@{fg text}
SYNOPSIS
   success = @{"GL_FindNode" Link "work:Gotcha/developer/glib.guide/GL_FindNode"}(address,context,info,pat)
                           A0,     A1,    A2, A3
   LONG @{"GL_FindNode" Link "work:Gotcha/developer/glib.guide/GL_FindNode"}(struct gl_address *,struct gl_context *,struct gl_nodeinfo *,
                     struct gl_pattern *)

FUNCTION
   This function will search the whole nodelist for the given address and
   if found fill the gl_nodeinfo structure with informations such as phonenumber
   (original and translated), sysop, bbs-name, flags, password, cost, etc.

INPUTS
   address -- address of node to search for.
   context -- context from @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}.
   info -- the info structure to fill.
   pat -- NULL for now.

RESULT
   0 for failure, 1 for success.

EXAMPLE
@{fg shine}   succ = @{"GL_FindNode" Link "work:Gotcha/developer/glib.guide/GL_FindNode"}(my_add,my_context,nodeinfo,NULL);
@{fg text}
NOTES
@{fg shine}   This function will not handle addresses with patterns.
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_XtractInfos" Link "work:Gotcha/developer/glib.guide/GL_XtractInfos"}, @{"GL_FindNodeFirst" Link "work:Gotcha/developer/glib.guide/GL_FindNodeFirst"}, @{"GL_FindNodeNext" Link "work:Gotcha/developer/glib.guide/GL_FindNodeNext"}, @{"GL_AddressToString" Link "work:Gotcha/developer/glib.guide/GL_AddressToString"}
   @{"GL_AdrCmp" Link "work:Gotcha/developer/glib.guide/GL_AdrCmp"}, @{"GL_AdrCmpPat" Link "work:Gotcha/developer/glib.guide/GL_AdrCmpPat"}, @{"GL_GetConfig" Link "work:Gotcha/developer/glib.guide/GL_GetConfig"}

@endnode
@Node "GL_FindNodeFirst" "gotcha.library/GL_FindNodeFirst"
@{fg shine}gotcha.library/GL_FindNodeFirst@{fg text}

NAME
@{fg shine}   @{"GL_FindNodeFirst" Link "work:Gotcha/developer/glib.guide/GL_FindNodeFirst"} -- Find nodes in the nodelist with pattern matching.
@{fg text}
SYNOPSIS
   success = @{"GL_FindNodeFirst" Link "work:Gotcha/developer/glib.guide/GL_FindNodeFirst"}(address,context,info,pat)
                                A0,     A1,    A2, A3
   LONG @{"GL_FindNodeFirst" Link "work:Gotcha/developer/glib.guide/GL_FindNodeFirst"}(struct gl_address *,struct gl_context *,
                      struct gl_nodeinfo *, struct gl_pattern *pat)

FUNCTION
   This function will search the whole nodelist for the given pattern and
   if found fill the gl_nodeinfo structure with informations such as phonenumber
   (original and translated), sysop, bbs-name, flags, password, cost, etc.

INPUTS
   address -- address of node to search for with pattern.
   context -- context from @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}.
   info -- the info structure to fill.
   pat -- gl_pattern struct, will be initized by @{"GL_FindNodeFirst" Link "work:Gotcha/developer/glib.guide/GL_FindNodeFirst"}.

RESULT
   0 for failure, 1 for success.

EXAMPLE
@{fg shine}   if (@{"GL_FindNodeFirst" Link "work:Gotcha/developer/glib.guide/GL_FindNodeFirst"}(&add,cont,&ninfo,&pat)) {
   do {
       puts(ninfo.name);
   } while (@{"GL_FindNodeNext" Link "work:Gotcha/developer/glib.guide/GL_FindNodeNext"}(&add,cont,&ninfo,&pat));
@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_XtractInfos" Link "work:Gotcha/developer/glib.guide/GL_XtractInfos"}, @{"GL_FindNode" Link "work:Gotcha/developer/glib.guide/GL_FindNode"}, @{"GL_FindNodeNext" Link "work:Gotcha/developer/glib.guide/GL_FindNodeNext"}, @{"GL_AddressToString" Link "work:Gotcha/developer/glib.guide/GL_AddressToString"}
   @{"GL_AdrCmp" Link "work:Gotcha/developer/glib.guide/GL_AdrCmp"}, @{"GL_AdrCmpPat" Link "work:Gotcha/developer/glib.guide/GL_AdrCmpPat"}, @{"GL_GetConfig" Link "work:Gotcha/developer/glib.guide/GL_GetConfig"}

@endnode
@Node "GL_FindNodeNext" "gotcha.library/GL_FindNodeNext"
@{fg shine}gotcha.library/GL_FindNodeNext@{fg text}

NAME
@{fg shine}   @{"GL_FindNodeNext" Link "work:Gotcha/developer/glib.guide/GL_FindNodeNext"} -- Find the next node matching the pattern.
@{fg text}
SYNOPSIS
   success = @{"GL_FindNodeNext" Link "work:Gotcha/developer/glib.guide/GL_FindNodeNext"}(address,context,info,pat)
                               A0,     A1,   A2,  A3
   LONG @{"GL_FindNodeNext" Link "work:Gotcha/developer/glib.guide/GL_FindNodeNext"}(struct gl_address *,struct gl_context *,
                      struct gl_nodeinfo *, struct gl_pattern *pat)

FUNCTION
   This function will search the whole nodelist for the next node matching
   the pattern.

INPUTS
   address -- address of node to search for with pattern.
   context -- context from @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}.
   info -- the info structure to fill.
   pat -- gl_pattern struct, will be initized by @{"GL_FindNodeFirst" Link "work:Gotcha/developer/glib.guide/GL_FindNodeFirst"}.

RESULT
   0 for failure, 1 for success.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_FindNodeFirst" Link "work:Gotcha/developer/glib.guide/GL_FindNodeFirst"}

@endnode
@Node "GL_FindNodeString" "gotcha.library/GL_FindNodeString"
@{fg shine}gotcha.library/GL_FindNodeString@{fg text}

NAME
@{fg shine}   @{"GL_FindNodeString" Link "work:Gotcha/developer/glib.guide/GL_FindNodeString"} -- Search a string in a list
@{fg text}
SYNOPSIS
   node = @{"GL_FindNodeString" Link "work:Gotcha/developer/glib.guide/GL_FindNodeString"}(string,list,flags)
                              A0,   A1,   D0
   struct Node * @{"GL_FindNodeString" Link "work:Gotcha/developer/glib.guide/GL_FindNodeString"}(UBYTE *,struct List *,ULONG)

FUNCTION
   Searches for a string in the given list and returns the node in which the
   string was found.

INPUTS
   string -- string to find
   list -- list to search
   flags -- one of:
   FN_I        match case insensitive
   FN_S        match case sensitive
   FN_INSTR    instring

RESULT
   The node or NULL on failure.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_NewList" Link "work:Gotcha/developer/glib.guide/GL_NewList"}, @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}, @{"GL_AddNodeString" Link "work:Gotcha/developer/glib.guide/GL_AddNodeString"}, @{"GL_AddNodeData" Link "work:Gotcha/developer/glib.guide/GL_AddNodeData"},
   @{"GL_GetNodeNr" Link "work:Gotcha/developer/glib.guide/GL_GetNodeNr"}, @{"GL_StringListDup" Link "work:Gotcha/developer/glib.guide/GL_StringListDup"}, @{"GL_DeleteNode" Link "work:Gotcha/developer/glib.guide/GL_DeleteNode"}


@endnode
@Node "GL_FreeDZNLists" "gotcha.library/GL_FreeDZNLists"
@{fg shine}gotcha.library/GL_FreeDZNLists@{fg text}

NAME
@{fg shine}   @{"GL_FreeDZNLists" Link "work:Gotcha/developer/glib.guide/GL_FreeDZNLists"} -- Get domain, zone, net lists.
@{fg text}
SYNOPSIS
   success = @{"GL_FreeDZNLists" Link "work:Gotcha/developer/glib.guide/GL_FreeDZNLists"}(context,xdom,xzones,xnets)
                               A0,    A1,   A2,   A3
   BOOL @{"GL_FreeDZNLists" Link "work:Gotcha/developer/glib.guide/GL_FreeDZNLists"}(struct gl_context *,UBYTE ***,UWORD **,UWORD **)

FUNCTION
   Frees all resources allocated with @{"GL_GetDZNLists" Link "work:Gotcha/developer/glib.guide/GL_GetDZNLists"}.

INPUTS
   context -- from @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}
   xdom -- address of an pointer to a UBYTE pointer array
   xzones -- address of an UWORD array pointer
   xnets -- addres of an UWORD array pointer

RESULT
   Always FALSE.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_GetDZNLists" Link "work:Gotcha/developer/glib.guide/GL_GetDZNLists"}

@endnode
@Node "GL_FreeDomainArray" "gotcha.library/GL_FreeDomainArray"
@{fg shine}gotcha.library/GL_FreeDomainArray@{fg text}

NAME
@{fg shine}   @{"GL_FreeDomainArray" Link "work:Gotcha/developer/glib.guide/GL_FreeDomainArray"} -- Free array obtained via @{"GL_GetDomainArray" Link "work:Gotcha/developer/glib.guide/GL_GetDomainArray"}
@{fg text}
SYNOPSIS
   @{"GL_FreeDomainArray" Link "work:Gotcha/developer/glib.guide/GL_FreeDomainArray"}(array)
                        A0
   VOID @{"GL_FreeDomainArray" Link "work:Gotcha/developer/glib.guide/GL_FreeDomainArray"}(char**)

FUNCTION
   Frees an array obtained via @{"GL_GetDomainArray" Link "work:Gotcha/developer/glib.guide/GL_GetDomainArray"}.

INPUTS
   Array as returned by @{"GL_GetDomainArray" Link "work:Gotcha/developer/glib.guide/GL_GetDomainArray"}

RESULT

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_GetDomainArray" Link "work:Gotcha/developer/glib.guide/GL_GetDomainArray"}

@endnode
@Node "GL_FreeList" "gotcha.library/GL_FreeList"
@{fg shine}gotcha.library/GL_FreeList@{fg text}

NAME
@{fg shine}   @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"} -- Free the list and all nodes of an exec list
@{fg text}
SYNOPSIS
   success = @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}(list)
                          A0
   BOOL @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}(struct List *list)

FUNCTION
   Frees all memory allocated by the nodes and list structures.

INPUTS
   list -- list to free

RESULT
   TRUE if a list was passed, FALSE else.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_NewList" Link "work:Gotcha/developer/glib.guide/GL_NewList"}, @{"GL_AddNodeString" Link "work:Gotcha/developer/glib.guide/GL_AddNodeString"}, @{"GL_FindNodeString" Link "work:Gotcha/developer/glib.guide/GL_FindNodeString"}, @{"GL_AddNodeData" Link "work:Gotcha/developer/glib.guide/GL_AddNodeData"},
   @{"GL_GetNodeNr" Link "work:Gotcha/developer/glib.guide/GL_GetNodeNr"}, @{"GL_StringListDup" Link "work:Gotcha/developer/glib.guide/GL_StringListDup"}, @{"GL_DeleteNode" Link "work:Gotcha/developer/glib.guide/GL_DeleteNode"}

@endnode
@Node "GL_FreeRem" "gotcha.library/GL_FreeRem"
@{fg shine}gotcha.library/GL_FreeRem@{fg text}

NAME
@{fg shine}   @{"GL_FreeRem" Link "work:Gotcha/developer/glib.guide/GL_FreeRem"} -- Free memory allocated with @{"GL_AllocRem" Link "work:Gotcha/developer/glib.guide/GL_AllocRem"}
@{fg text}
SYNOPSIS
   @{"GL_FreeRem" Link "work:Gotcha/developer/glib.guide/GL_FreeRem"}(key)
              A0
   void @{"GL_FreeRem" Link "work:Gotcha/developer/glib.guide/GL_FreeRem"}(ULONG *)

FUNCTION
   Free all memory made by @{"GL_AllocRem" Link "work:Gotcha/developer/glib.guide/GL_AllocRem"} with the given key.

INPUTS
   key -- remember key

RESULT

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_AllocRem" Link "work:Gotcha/developer/glib.guide/GL_AllocRem"}

@endnode
@Node "GL_GetConfig" "gotcha.library/GL_GetConfig"
@{fg shine}gotcha.library/GL_GetConfig@{fg text}

NAME
@{fg shine}   @{"GL_GetConfig" Link "work:Gotcha/developer/glib.guide/GL_GetConfig"} -- Get an extra config for an address.
@{fg text}
SYNOPSIS
   add = @{"GL_GetConfig" Link "work:Gotcha/developer/glib.guide/GL_GetConfig"}(context,address,add,info,address2)
                        A0,     A1,    A2, A3,    A4
   ULONG @{"GL_GetConfig" Link "work:Gotcha/developer/glib.guide/GL_GetConfig"}(struct gl_context *,struct gl_address *,ULONG,UBYTE  **info,
                struct gl_address *)

FUNCTION
   Get an extra configuration string for an address or address-pattern.

INPUTS
   context -- from @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}
   address -- address to get extra config for, may be a pattern too
   add -- set to NULL befor first call
   info -- address of a string pointer
   address2 -- pointer to a second gl_address struct that will be filled with
   the address of a found extra config.

RESULT
   add -- continue info, don't care
   info -- read only string with extra config
   address2 -- address for which info is valid

EXAMPLE
@{fg shine}   @{"GL_XtractInfos" Link "work:Gotcha/developer/glib.guide/GL_XtractInfos"}(&add,argv[1]);
   x=NULL;
   do {
       x=@{"GL_GetConfig" Link "work:Gotcha/developer/glib.guide/GL_GetConfig"}(cont,&add,x,&s,&add2);
       if (s) {
           @{"GL_AddressToString" Link "work:Gotcha/developer/glib.guide/GL_AddressToString"}(&add2,adr);
           printf("%-22.22s %s\\n",adr,s);
       }
   } while (x);

@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO

@endnode
@Node "GL_GetCosts" "gotcha.library/GL_GetCosts"
@{fg shine}gotcha.library/GL_GetCosts@{fg text}

NAME
@{fg shine}   @{"GL_GetCosts" Link "work:Gotcha/developer/glib.guide/GL_GetCosts"} -- Get costs for a phonenumber.
@{fg text}
SYNOPSIS
   costs = @{"GL_GetCosts" Link "work:Gotcha/developer/glib.guide/GL_GetCosts"}(context,phone)
                       A0,      A1
   LONG @{"GL_GetCosts" Link "work:Gotcha/developer/glib.guide/GL_GetCosts"}(struct gl_context *, UBYTE *)

FUNCTION
   This function gets the costs for a untranslated(!) phonenumber as it is
   found in the nodelist.

INPUTS
   context -- context from @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}.
   phone -- phonenumber from the nodelist

RESULT
   The cost as specified in "glist.config" or 0.

EXAMPLE
@{fg shine}   cost = @{"GL_TranslatePhone" Link "work:Gotcha/developer/glib.guide/GL_TranslatePhone"}(my_context,nlphonenum);
@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}

@endnode
@Node "GL_GetDZNLists" "gotcha.library/GL_GetDZNLists"
@{fg shine}gotcha.library/GL_GetDZNLists@{fg text}

NAME
@{fg shine}   @{"GL_GetDZNLists" Link "work:Gotcha/developer/glib.guide/GL_GetDZNLists"} -- Get domain, zone, net lists.
@{fg text}
SYNOPSIS
   success = @{"GL_GetDZNLists" Link "work:Gotcha/developer/glib.guide/GL_GetDZNLists"}(context,xdom,xzones,xnets)
                              A0,    A1,  A2,    A3
   BOOL @{"GL_GetDZNLists" Link "work:Gotcha/developer/glib.guide/GL_GetDZNLists"}(struct gl_context *,UBYTE ***,UWORD **,UWORD **)

FUNCTION
   Allocates memory and fills it with domain names, zone numbers and net
   numbers. This function is necessary to implement something like
   the NodeRequester. Since its rather difficult to get, say, a list
   of all nets in zone 2 without scanning the whole nodelist with
   @{"GL_FindNodeFirst" Link "work:Gotcha/developer/glib.guide/GL_FindNodeFirst"} and @{"GL_FindNodeNext" Link "work:Gotcha/developer/glib.guide/GL_FindNodeNext"}.

INPUTS
   context -- from @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}
   xdom -- address of an pointer to a UBYTE pointer array, for domains
   xzones -- address of an UWORD array pointer, for zones
   xnets -- addres of an UWORD array pointer, for nets

RESULT
   TRUE for success, FALSE else.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_FreeDZNLists" Link "work:Gotcha/developer/glib.guide/GL_FreeDZNLists"}

@endnode
@Node "GL_GetDomainArray" "gotcha.library/GL_GetDomainArray"
@{fg shine}gotcha.library/GL_GetDomainArray@{fg text}

NAME
@{fg shine}   @{"GL_GetDomainArray" Link "work:Gotcha/developer/glib.guide/GL_GetDomainArray"} -- Get list of nodelist names
@{fg text}
SYNOPSIS
   array = @{"GL_GetDomainArray" Link "work:Gotcha/developer/glib.guide/GL_GetDomainArray"}(context)
                               A0
   char ** @{"GL_GetDomainArray" Link "work:Gotcha/developer/glib.guide/GL_GetDomainArray"}(struct gl_context *)

FUNCTION
   This function will return a NULL terminated array of pointers
   to the names of compiled nodelists.

INPUTS
   context -- as returned by @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}

RESULT
   The array or NULL

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}   Free the returned array with @{"GL_FreeDomainArray" Link "work:Gotcha/developer/glib.guide/GL_FreeDomainArray"}.
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_FreeDomainArray" Link "work:Gotcha/developer/glib.guide/GL_FreeDomainArray"}

@endnode
@Node "GL_GetListsDiffs" "gotcha.library/GL_GetListsDiffs"
@{fg shine}gotcha.library/GL_GetListsDiffs@{fg text}

NAME
@{fg shine}   @{"GL_GetListsDiffs" Link "work:Gotcha/developer/glib.guide/GL_GetListsDiffs"} -- Get the diffs for two lists
@{fg text}
SYNOPSIS
   success = @{"GL_GetListsDiffs" Link "work:Gotcha/developer/glib.guide/GL_GetListsDiffs"}(old,new,onlyinnew,notinnew,inboth,flags)
                              A0  A1      A2       A3      D0     D1
   BOOL @{"GL_GetListsDiffs" Link "work:Gotcha/developer/glib.guide/GL_GetListsDiffs"}(struct List *, struct List *, struct List **,
              struct List **, struct List **,ULONG)

FUNCTION
   This function will compare the 'old' and 'new' lists and create one
   or more new lists containing the different or comon strings.
   If a non NULL value is passed for "*onlyinnew", "*notinnew" or "*inboth"
   the library will assume that it points to a list previously allocated
   with @{"GL_NewList" Link "work:Gotcha/developer/glib.guide/GL_NewList"}() and free that list!
   After you are done with the newly created lists you should free them
   with @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}().

INPUTS
   old -- the first source list
   new -- the second source list
   onlyinnew -- if non NULL this list will contain all nodes that are only
                present in the 'new' list but not in 'old'
   notinnew -- if non NULL this list will contain all nodes that are only
               present in 'old' but not in new
   inboth -- if non NULL this list will contain all nodes that are present
             in both 'new' and 'old' lists
   flags -- one of
       FN_I        match case insensitive
       FN_S        match case sensitive
       FN_INSTR    instring

RESULT
     TRUE if the lists could be created, FALSE else.

EXAMPLE
@{fg shine}   onlyinnew=notinnew=inboth=NULL;    // NULL it!
   if (@{"GL_GetListsDiffs" Link "work:Gotcha/developer/glib.guide/GL_GetListsDiffs"}(old,new,&onlyinnew,&notinnew,&inboth,FN_I)) {
         /* check the lists or whatever... */
       @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}(onlyinnew);
       @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}(notinnew);
       @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}(inboth);
   }
@{fg text}
NOTES
@{fg shine}   This function will return TRUE even if NULL is passed for all three
   result lists.
   If the function failes all allocated memory for the new lists will
   by freed by the library, so you don't have to do it in this case.
   Take care not to pass any crap in the result-listpointers because
   this would lead to a crash in most cases.
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO

@endnode
@Node "GL_GetNodeNr" "gotcha.library/GL_GetNodeNr"
@{fg shine}gotcha.library/GL_GetNodeNr@{fg text}

NAME
@{fg shine}   @{"GL_GetNodeNr" Link "work:Gotcha/developer/glib.guide/GL_GetNodeNr"} -- Get address of a node by index
@{fg text}
SYNOPSIS
   node = @{"GL_GetNodeNr" Link "work:Gotcha/developer/glib.guide/GL_GetNodeNr"}(list,nr)
                        A0, D0
   void * @{"GL_GetNodeNr" Link "work:Gotcha/developer/glib.guide/GL_GetNodeNr"}(struct List *,ULONG)

FUNCTION
   Get the address of node number <nr>. The first node is number 0, the second
   number 1 etc. This is quite handy eg with lists attached to listviews.

INPUTS
   list -- list search in
   nr -- index of node to return

RESULT
   The node or NULL on failure.

EXAMPLE
@{fg shine}   @{"GL_GetNodeNr" Link "work:Gotcha/developer/glib.guide/GL_GetNodeNr"}(list,23);
@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_NewList" Link "work:Gotcha/developer/glib.guide/GL_NewList"}, @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}, @{"GL_AddNodeString" Link "work:Gotcha/developer/glib.guide/GL_AddNodeString"}, @{"GL_FindNodeString" Link "work:Gotcha/developer/glib.guide/GL_FindNodeString"},
   @{"GL_AddNodeData" Link "work:Gotcha/developer/glib.guide/GL_AddNodeData"}, @{"GL_StringListDup" Link "work:Gotcha/developer/glib.guide/GL_StringListDup"}, @{"GL_DeleteNode" Link "work:Gotcha/developer/glib.guide/GL_DeleteNode"}

@endnode
@Node "GL_GetOpenCount" "gotcha.library/GL_GetOpenCount"
@{fg shine}gotcha.library/GL_GetOpenCount@{fg text}

NAME
@{fg shine}   @{"GL_GetOpenCount" Link "work:Gotcha/developer/glib.guide/GL_GetOpenCount"} -- Get @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"} count.
@{fg text}
SYNOPSIS
   count = @{"GL_GetOpenCount" Link "work:Gotcha/developer/glib.guide/GL_GetOpenCount"}()
   LONG @{"GL_GetOpenCount" Link "work:Gotcha/developer/glib.guide/GL_GetOpenCount"}(void)

FUNCTION
   Gets the @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"} count. i.e number of times the nodelist is open.

INPUTS

RESULT
   @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"} count

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO

@endnode
@Node "GL_GetPassword" "gotcha.library/GL_GetPassword"
@{fg shine}gotcha.library/GL_GetPassword@{fg text}

NAME
@{fg shine}   @{"GL_GetPassword" Link "work:Gotcha/developer/glib.guide/GL_GetPassword"} -- Get the password for an address.
@{fg text}
SYNOPSIS
   @{"GL_GetPassword" Link "work:Gotcha/developer/glib.guide/GL_GetPassword"}(context,info)
                    A0,    A1
   void @{"GL_GetPassword" Link "work:Gotcha/developer/glib.guide/GL_GetPassword"}(struct gl_context *,struct gl_nodeinfo *)

FUNCTION
   This function will fill in the password for the address from the
   info structure.

INPUTS
   context -- context from @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}
   info -- pointer to a gl_nodeinfo structure

RESULT

EXAMPLE
@{fg shine}   @{"GL_GetPassword" Link "work:Gotcha/developer/glib.guide/GL_GetPassword"}(my_context,nodeinfo);
@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}, @{"GL_FindNode" Link "work:Gotcha/developer/glib.guide/GL_FindNode"}, @{"GL_TranslatePhone" Link "work:Gotcha/developer/glib.guide/GL_TranslatePhone"}, @{"GL_GetCosts" Link "work:Gotcha/developer/glib.guide/GL_GetCosts"},
   @{"GL_GetPassword" Link "work:Gotcha/developer/glib.guide/GL_GetPassword"}, @{"GL_FindNodeFirst" Link "work:Gotcha/developer/glib.guide/GL_FindNodeFirst"}, @{"GL_FindNodeNext" Link "work:Gotcha/developer/glib.guide/GL_FindNodeNext"}, @{"GL_GetConfig" Link "work:Gotcha/developer/glib.guide/GL_GetConfig"}



@endnode
@Node "GL_MoveIndexDomain" "gotcha.library/GL_MoveIndexDomain"
@{fg shine}gotcha.library/GL_MoveIndexDomain@{fg text}

NAME
@{fg shine}   @{"GL_MoveIndexDomain" Link "work:Gotcha/developer/glib.guide/GL_MoveIndexDomain"} -- Move index ahead, depending on domain.
@{fg text}
SYNOPSIS
   @{"GL_MoveIndexDomain" Link "work:Gotcha/developer/glib.guide/GL_MoveIndexDomain"}(cnt,z,n,xzones,xnets)
                  D0,A0,A1, D1,  D2
   void @{"GL_MoveIndexDomain" Link "work:Gotcha/developer/glib.guide/GL_MoveIndexDomain"}(LONG,LONG *,LONG *,UWORD **,UWORD **)

FUNCTION
   Move the "z" and "n" index ahead, depending on the selected domain.

INPUTS
   cnt -- index of selected domain
   z -- will be set to index of first zone in selected domain
   n -- will be set to index of first net in selected domain
   xzones -- address of an UWORD array pointer
   xnets -- addres of an UWORD array pointer

RESULT

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_MoveIndexZone" Link "work:Gotcha/developer/glib.guide/GL_MoveIndexZone"}, @{"GL_GetDZNLists" Link "work:Gotcha/developer/glib.guide/GL_GetDZNLists"}

@endnode
@Node "GL_MoveIndexZone" "gotcha.library/GL_MoveIndexZone"
@{fg shine}gotcha.library/GL_MoveIndexZone@{fg text}

NAME
@{fg shine}   @{"GL_MoveIndexZone" Link "work:Gotcha/developer/glib.guide/GL_MoveIndexZone"} -- Move index ahead, depending on zone.
@{fg text}
SYNOPSIS
   @{"GL_MoveIndexZone" Link "work:Gotcha/developer/glib.guide/GL_MoveIndexZone"}(cnt,n,xnets)
                 D0,A0, A1
   void @{"GL_MoveIndexZone" Link "work:Gotcha/developer/glib.guide/GL_MoveIndexZone"}(LONG,LONG *,UWORD **xnets)

FUNCTION
   Move the "n" index ahead, depending on the selected zone.

INPUTS
   cnt -- index of selected zone
   n -- will be set to index of first net in selected zone
   xnets -- addres of an UWORD array pointer

RESULT

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_MoveIndexDomain" Link "work:Gotcha/developer/glib.guide/GL_MoveIndexDomain"}, @{"GL_GetDZNLists" Link "work:Gotcha/developer/glib.guide/GL_GetDZNLists"}

@endnode
@Node "GL_NewList" "gotcha.library/GL_NewList"
@{fg shine}gotcha.library/GL_NewList@{fg text}

NAME
@{fg shine}   @{"GL_NewList" Link "work:Gotcha/developer/glib.guide/GL_NewList"} -- AllocVec and init a exec list struct
@{fg text}
SYNOPSIS
   list = @{"GL_NewList" Link "work:Gotcha/developer/glib.guide/GL_NewList"}()
   struct List * @{"GL_NewList" Link "work:Gotcha/developer/glib.guide/GL_NewList"}(void)

FUNCTION
   Allocates a list struct and initiates it with NewList.

INPUTS

RESULT
   A pointer to an exec list or NULL.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}, @{"GL_AddNodeString" Link "work:Gotcha/developer/glib.guide/GL_AddNodeString"}, @{"GL_FindNodeString" Link "work:Gotcha/developer/glib.guide/GL_FindNodeString"}, @{"GL_AddNodeData" Link "work:Gotcha/developer/glib.guide/GL_AddNodeData"},
   @{"GL_GetNodeNr" Link "work:Gotcha/developer/glib.guide/GL_GetNodeNr"}, @{"GL_StringListDup" Link "work:Gotcha/developer/glib.guide/GL_StringListDup"}, @{"GL_DeleteNode" Link "work:Gotcha/developer/glib.guide/GL_DeleteNode"}


@endnode
@Node "GL_NodeRequest" "gotcha.library/GL_NodeRequest"
@{fg shine}gotcha.library/GL_NodeRequest@{fg text}

NAME
@{fg shine}   @{"GL_NodeRequest" Link "work:Gotcha/developer/glib.guide/GL_NodeRequest"} -- GUI driven address requester
@{fg text}
SYNOPSIS
   resultcode = @{"GL_NodeRequest" Link "work:Gotcha/developer/glib.guide/GL_NodeRequest"}(gb)
                            A0
   LONG @{"GL_NodeRequest" Link "work:Gotcha/developer/glib.guide/GL_NodeRequest"}(struct gl_browser *gb)

FUNCTION
   Request an address/node stored in the compiled nodelist from
   the user.

INPUTS
   gb -- struct gl_browser

RESULT
   GLB_OK -- everything ok, the selected address is in gb->result.
   GLB_CANCEL -- user canceled the requester
   GLB_NOLIBGT -- could not open gadtools library
   GLB_NOLIBGTL -- could not open gtlayout library
   GLB_NOLIBINT -- could not open intuition library
   GLB_NOWINDOW -- could not open window
   GLB_NOMEM -- out of memory

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_PortRequest" Link "work:Gotcha/developer/glib.guide/GL_PortRequest"}

@endnode
@Node "GL_OpenNL" "gotcha.library/GL_OpenNL"
@{fg shine}gotcha.library/GL_OpenNL@{fg text}

NAME
@{fg shine}   @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"} -- Open the nodelist and create a context.
@{fg text}
SYNOPSIS
   context = @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}(nlpath)
                            A0
   struct gl_context * @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}(char *)

FUNCTION
   Open the nodelist and data file (Gotcha!index, Gotcha!data)
   created by glist, and create a context structure reqired for
   access to the data stored in the compiled nodelist.

INPUTS
   nlpath -- path where "Gotcha!index" and "Gotcha!data" are stored.
         Usualy "nodelist:". Acctualy a lot of tools expect
         the files to be in "nodelist:".

RESULT
   A pointer to a context or NULL in case of an error or if the nodelist
   is locked.

EXAMPLE
@{fg shine}   my_context = @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}("nodelist:");
@{fg text}
NOTES
@{fg shine}   Programms that need excusive access to the nodelist (e.g glist)
   will lock the nodelist and wait until all calls to this function
   have been matched with a call to @{"GL_CloseNL" Link "work:Gotcha/developer/glib.guide/GL_CloseNL"}. Therefore it is
   important to keep the time between @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"} and @{"GL_CloseNL" Link "work:Gotcha/developer/glib.guide/GL_CloseNL"} as
   short as possible to avoid any hassle. This means you should NOT
   open the nodelist at the start of your programm and close it at
   the end but rather open it only in those functions that require
   access to the nodelist.
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_CloseNL" Link "work:Gotcha/developer/glib.guide/GL_CloseNL"}, @{"GL_FindNode" Link "work:Gotcha/developer/glib.guide/GL_FindNode"}, @{"GL_TranslatePhone" Link "work:Gotcha/developer/glib.guide/GL_TranslatePhone"}, @{"GL_GetCosts" Link "work:Gotcha/developer/glib.guide/GL_GetCosts"},
   @{"GL_GetPassword" Link "work:Gotcha/developer/glib.guide/GL_GetPassword"}, @{"GL_FindNodeFirst" Link "work:Gotcha/developer/glib.guide/GL_FindNodeFirst"}, @{"GL_FindNodeNext" Link "work:Gotcha/developer/glib.guide/GL_FindNodeNext"}, @{"GL_GetConfig" Link "work:Gotcha/developer/glib.guide/GL_GetConfig"}
   @{"GL_GetDZNLists" Link "work:Gotcha/developer/glib.guide/GL_GetDZNLists"}, @{"GL_FreeDZNLists" Link "work:Gotcha/developer/glib.guide/GL_FreeDZNLists"}

€vM*   NAME
   @{"GL_XtractInfos" Link "work:Gotcha/developer/glib.guide/GL_XtractInfos"} -- Extract zone, net, node, point and domain information
                     from an address-string.

SYNOPSIS
   succ = @{"GL_XtractInfos" Link "work:Gotcha/developer/glib.guide/GL_XtractInfos"}(address,string)
                             A0,   A1
   LONG @{"GL_XtractInfos" Link "work:Gotcha/developer/glib.guide/GL_XtractInfos"}(struct gl_address *, UBYTE *)

FUNCTION
   Parses an address string and extracts zone, net, node, point and domain
   information. This function also handles wildcards (*,?). "?" replaces a
   single item (zone, net, node, point or domain), "*" means: assume '?'
   for the rest of the items. e.g. 2:* matches all addresses in zone 2.
   1:?/300 matches all nodes in zone 1, with nodenumber 300.
   If no domain is specified "?" will be assumed.

INPUTS
   address -- a pointer to a gl_address structure that will be filled with
              address information.
   string -- the address-string to parse

RESULT
   Always 1.

EXAMPLE
@{fg shine}   @{"GL_XtractInfos" Link "work:Gotcha/developer/glib.guide/GL_XtractInfos"}(my_add,"2:310/108");
@{fg text}
NOTES
@{fg shine}   The address can be terminated with a space or a '!' as well as zero.
   The domain string will be cut if there is a dot.
   e.g. "fidonet.org" -> "fidonet"
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_FindNode" Link "work:Gotcha/developer/glib.guide/GL_FindNode"}, @{"GL_FindNodeFirst" Link "work:Gotcha/developer/glib.guide/GL_FindNodeFirst"}, @{"GL_FindNodeNext" Link "work:Gotcha/developer/glib.guide/GL_FindNodeNext"}, @{"GL_AddressToString" Link "work:Gotcha/developer/glib.guide/GL_AddressToString"}
   @{"GL_AdrCmp" Link "work:Gotcha/developer/glib.guide/GL_AdrCmp"}, @{"GL_AdrCmpPat" Link "work:Gotcha/developer/glib.guide/GL_AdrCmpPat"}, @{"GL_GetConfig" Link "work:Gotcha/developer/glib.guide/GL_GetConfig"}

@endnode
@Node "GL_PlaySample" "gotcha.library/GL_PlaySample"
@{fg shine}gotcha.library/GL_PlaySample@{fg text}

NAME
@{fg shine}   @{"GL_PlaySample" Link "work:Gotcha/developer/glib.guide/GL_PlaySample"} -- Play a sample.
@{fg text}
SYNOPSIS
   @{"GL_PlaySample" Link "work:Gotcha/developer/glib.guide/GL_PlaySample"}(data,len,vol,period,pri)
                   A0, A1, D0,    D1,  D2
   void @{"GL_PlaySample" Link "work:Gotcha/developer/glib.guide/GL_PlaySample"}(UBYTE *,ULONG,USHORT,ULONG,BYTE)

FUNCTION
   This functions plays a sample with given length, volume, period and
   priority on one of the 4 channels.

INPUTS
   data -- sample to play
   len -- length of the sample
   vol -- volume
   period -- period
   pri -- priority

RESULT

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO

@endnode
@Node "GL_Poll" "gotcha.library/GL_Poll"
@{fg shine}gotcha.library/GL_Poll@{fg text}

NAME
@{fg shine}   @{"GL_Poll" Link "work:Gotcha/developer/glib.guide/GL_Poll"} -- Scan the outbound dir for files and build call string
@{fg text}
SYNOPSIS
   string = @{"GL_Poll" Link "work:Gotcha/developer/glib.guide/GL_Poll"}(gl_poll);
                       A0
   UBYTE * @{"GL_Poll" Link "work:Gotcha/developer/glib.guide/GL_Poll"}(struct gl_poll *);

FUNCTION
   This function will scan the given directory for the specified files
   (gl_poll.flags) and if successful return a complete CALL string
   that can be sent to Gotchas ARexx port. In case of failure gl_poll.error
   will be non zero and be set to a value (GLPER_#?) indicating the error,
   in addition to that, this function will return a error string that can
   be shown to the user.
   Optionaly, by setting the GLPF_GUI flag, you can ask that a
   requester be used. In this case the user can select a different port
   and change the type of files to look for.
   If the function was successful you must free the returned string
   with @{"GL_PollFreeStr" Link "work:Gotcha/developer/glib.guide/GL_PollFreeStr"}.

INPUTS
   a gl_poll struct:
   version -- set this to GLPOLL_VERSION
   port -- default port to use in case you ask for a GUI, will be set
           to whatever the user asks for
   sizeport -- maximum len of port
   dir -- directory to scan for files
   wintitle -- title of the requester window (if GLPF_GUI is set)
   flags -- GLPF_#? flags
   error -- zero for success, on failure some GLPER_#? value

RESULT
   The result indicating success or failure will be passed in the
   error field of the gl_poll struct passed to the function.
   On success a complete CALL string will be returned, in
   addition the 'port' string may have changed.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}   Don't forget to free the returned CALL string and don't free the
   returned string if gl_poll.error is non zero.
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_PollFreeStr" Link "work:Gotcha/developer/glib.guide/GL_PollFreeStr"}, @{"GL_SendRxCmd" Link "work:Gotcha/developer/glib.guide/GL_SendRxCmd"}


@endnode
@Node "GL_PollFreeStr" "gotcha.library/GL_PollFreeStr"
@{fg shine}gotcha.library/GL_PollFreeStr@{fg text}

NAME
@{fg shine}   @{"GL_PollFreeStr" Link "work:Gotcha/developer/glib.guide/GL_PollFreeStr"} -- Free CALL string returned by @{"GL_Poll" Link "work:Gotcha/developer/glib.guide/GL_Poll"}
@{fg text}
SYNOPSIS
   @{"GL_PollFreeStr" Link "work:Gotcha/developer/glib.guide/GL_PollFreeStr"}(string);
                    A0
   @{"GL_PollFreeStr" Link "work:Gotcha/developer/glib.guide/GL_PollFreeStr"}(UBYTE *);

FUNCTION
   This function will free a string as returned by @{"GL_Poll" Link "work:Gotcha/developer/glib.guide/GL_Poll"}.

INPUTS
   string -- returned by @{"GL_Poll" Link "work:Gotcha/developer/glib.guide/GL_Poll"}

RESULT

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}   Don't ever free the string if gl_poll.error was non zero!
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_Poll" Link "work:Gotcha/developer/glib.guide/GL_Poll"}

@endnode
@Node "GL_PortRequest" "gotcha.library/GL_PortRequest"
@{fg shine}gotcha.library/GL_PortRequest@{fg text}

NAME
@{fg shine}   @{"GL_PortRequest" Link "work:Gotcha/developer/glib.guide/GL_PortRequest"} -- GUI driven port requester
@{fg text}
SYNOPSIS
   resultcode = @{"GL_PortRequest" Link "work:Gotcha/developer/glib.guide/GL_PortRequest"}(pr)
                               A0
   LONG @{"GL_PortRequest" Link "work:Gotcha/developer/glib.guide/GL_PortRequest"}(struct gl_portreq *)

FUNCTION
   Request an port from the public available system portlist.

INPUTS
   pr -- struct gl_portreq

RESULT
   GLB_OK -- everything ok, the selected address is in pr->res.
   GLB_CANCEL -- user canceled the requester
   GLB_NOLIBGT -- could not open gadtools library
   GLB_NOLIBGTL -- could not open gtlayout library
   GLB_NOLIBINT -- could not open intuition library
   GLB_NOWINDOW -- could not open window
   GLB_NOMEM -- out of memory

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_NodeRequest" Link "work:Gotcha/developer/glib.guide/GL_NodeRequest"}


@endnode
@Node "GL_ReadItem" "gotcha.library/GL_ReadItem"
@{fg shine}gotcha.library/GL_ReadItem@{fg text}

NAME
@{fg shine}   @{"GL_ReadItem" Link "work:Gotcha/developer/glib.guide/GL_ReadItem"} -- Read one item from a specified input source.
@{fg text}
SYNOPSIS
   result = @{"GL_ReadItem" Link "work:Gotcha/developer/glib.guide/GL_ReadItem"}(dest, len, cs)
                         A0,  D0,  A1
   LONG @{"GL_ReadItem" Link "work:Gotcha/developer/glib.guide/GL_ReadItem"}(UBYTE *,long, long *)

FUNCTION
   This function works much like dos.libs' ReadItem. It will read one item
   from a specified input source to the destination buffer. The difference
   is that a backslash instead of a "*" is used to escape a double-quote and
   that comments starting with a ";" will be skipped. cr/lf will also be
   skipped. This is pretty usefull to parse a ASCII-config file.

INPUTS
   dest -- destination buffer
   len -- size of buffer in bytes
   cs -- input source, must be set to the start of the input source before the
   first call to @{"GL_ReadItem" Link "work:Gotcha/developer/glib.guide/GL_ReadItem"} is made.

RESULT
   GLRI_EQU -- item is a equal sign (not copied to buffer)
   GLRI_EOF -- end of input
   GLRI_ERR -- error (e.g. no second quote)
   GLRI_OK -- item is ok

EXAMPLE
@{fg shine}
   UBYTE keyword[32], data[256];
   long ir, source = (long)my_string;

   while (1) {
       ir = @{"GL_ReadItem" Link "work:Gotcha/developer/glib.guide/GL_ReadItem"}(keyword,32,&source);
       if (ir == GLRI_EOF) return(TRUE);
       if (ir != GLRI_OK)  break;
       printf("%s -> ",keyword);
       while (GLRI_EQU == (ir = @{"GL_ReadItem" Link "work:Gotcha/developer/glib.guide/GL_ReadItem"}(data,256,&source)));
       if (ir != GLRI_OK) break;
       puts(data);
   }

@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO

@endnode
@Node "GL_RemNotifyTask" "gotcha.library/GL_RemNotifyTask"
@{fg shine}gotcha.library/GL_RemNotifyTask@{fg text}

NAME
@{fg shine}   @{"GL_RemNotifyTask" Link "work:Gotcha/developer/glib.guide/GL_RemNotifyTask"} -- Remove a task from the notlification list
@{fg text}
SYNOPSIS
   success = @{"GL_RemNotifyTask" Link "work:Gotcha/developer/glib.guide/GL_RemNotifyTask"}(signr)
                               D0
   BOOL @{"GL_RemNotifyTask" Link "work:Gotcha/developer/glib.guide/GL_RemNotifyTask"}(LONG)

FUNCTION
   This function removes a task that has been added with @{"GL_AddNotifyTask" Link "work:Gotcha/developer/glib.guide/GL_AddNotifyTask"}
   from the list. Pass in the same signal number that has been passed to
   @{"GL_AddNotifyTask" Link "work:Gotcha/developer/glib.guide/GL_AddNotifyTask"}.

INPUTS
   signr -- signal that given in previous call to @{"GL_AddNotifyTask" Link "work:Gotcha/developer/glib.guide/GL_AddNotifyTask"}

RESULT
        TRUE if the task was found and removed, FALSE else.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_AddNotifyTask" Link "work:Gotcha/developer/glib.guide/GL_AddNotifyTask"}

@endnode
@Node "GL_SendRxCmd" "gotcha.library/GL_SendRxCmd"
@{fg shine}gotcha.library/GL_SendRxCmd@{fg text}

NAME
@{fg shine}   @{"GL_SendRxCmd" Link "work:Gotcha/developer/glib.guide/GL_SendRxCmd"} -- Send an ARexx command
@{fg text}
SYNOPSIS
   success = @{"GL_SendRxCmd" Link "work:Gotcha/developer/glib.guide/GL_SendRxCmd"}(port,cmd,res,resmax,flags)
                           A0, A1, A2,   D0,   D1
   BOOL @{"GL_SendRxCmd" Link "work:Gotcha/developer/glib.guide/GL_SendRxCmd"}(UBYTE *,UBYTE *,UBYTE *,LONG,ULONG)

FUNCTION
   Send an command to an ARexx port.

INPUTS
   port -- destination port
   cmd -- command string
   res -- result buffer
   resmax -- result buffer size in bytes
   flags -- Action flags, e.g. RXFF_RESULT for result strings

RESULT
        TRUE if reply was ok, FALSE else.

EXAMPLE
@{fg shine}@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO

@endnode
@Node "GL_StringListDup" "gotcha.library/GL_StringListDup"
@{fg shine}gotcha.library/GL_StringListDup@{fg text}

NAME
@{fg shine}   @{"GL_StringListDup" Link "work:Gotcha/developer/glib.guide/GL_StringListDup"} -- Duplicate a string list.
@{fg text}
SYNOPSIS
   list = @{"GL_StringListDup" Link "work:Gotcha/developer/glib.guide/GL_StringListDup"}(list,forbid,add)
                            A0,   D0,   D1
   struct List * @{"GL_StringListDup" Link "work:Gotcha/developer/glib.guide/GL_StringListDup"}(struct List *,BOOL,UWORD)

FUNCTION
   This function will create a copy of the given list. All ln_Name pointers
   of the original list MUST be stringpointers. Free the returned list
   with @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}.

INPUTS
   list -- list to duplicate
   forbid -- use Forbid(), Permit(), while duplicating
   add -- one of:
   AN_HEAD        AddHead
   AN_TAIL        AddTail
   AN_ENQUEUE     Enqueue (priority will be copied)
   AN_INSERT_AF   Insert, sort alpha forward, case sensitive
   AN_INSERT_AB   Insert, sort alpha backwards, case sensitive
   AN_INSERT_AFI  Insert, sort alpha forward, case insensitive
   AN_INSERT_ABI  Insert, sort alpha backwards, case insensitive

RESULT
   The new list or NULL on failure.

EXAMPLE
@{fg shine}   listdup = @{"GL_StringListDup" Link "work:Gotcha/developer/glib.guide/GL_StringListDup"}(list,TRUE,AN_INSERT_AF);
@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_NewList" Link "work:Gotcha/developer/glib.guide/GL_NewList"}, @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}, @{"GL_AddNodeString" Link "work:Gotcha/developer/glib.guide/GL_AddNodeString"}, @{"GL_FindNodeString" Link "work:Gotcha/developer/glib.guide/GL_FindNodeString"},
   @{"GL_AddNodeData" Link "work:Gotcha/developer/glib.guide/GL_AddNodeData"}, @{"GL_GetNodeNr" Link "work:Gotcha/developer/glib.guide/GL_GetNodeNr"}, @{"GL_DeleteNode" Link "work:Gotcha/developer/glib.guide/GL_DeleteNode"}

@endnode
@Node "GL_StringListDupCB" "gotcha.library/GL_StringListDupCB"
@{fg shine}gotcha.library/GL_StringListDupCB@{fg text}

NAME
@{fg shine}   @{"GL_StringListDupCB" Link "work:Gotcha/developer/glib.guide/GL_StringListDupCB"} -- Duplicate a string list with callback function.
@{fg text}
SYNOPSIS
   list = @{"GL_StringListDupCB" Link "work:Gotcha/developer/glib.guide/GL_StringListDupCB"}(list,cmpfunction,forbid,add,userdata)
                              A0,      A1,     D0,   D1     A2
   struct List * @{"GL_StringListDupCB" Link "work:Gotcha/developer/glib.guide/GL_StringListDupCB"}(struct List *,
                            BOOL (*cmpfunc)(struct Node *,void *),BOOL,UWORD,VOID *)

FUNCTION
   This is the same as @{"GL_StringListDup" Link "work:Gotcha/developer/glib.guide/GL_StringListDup"} with the exception of the additional
   callback function. Before a string is added to the list the callback
   function is called and only if it returns TRUE a new node will be
   created.

INPUTS
   list -- list to duplicate
   cmpfunction -- callback function or NULL
   forbid -- use Forbid(), Permit(), while duplicating
   add -- see @{"GL_StringListDup" Link "work:Gotcha/developer/glib.guide/GL_StringListDup"}
   userdata -- will be passed to your callback function

RESULT
   The new list or NULL on failure.

EXAMPLE
@{fg shine}   listdup = @{"GL_StringListDup" Link "work:Gotcha/developer/glib.guide/GL_StringListDup"}(list,mycmpfunc,TRUE,AN_INSERT_AF);
@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_NewList" Link "work:Gotcha/developer/glib.guide/GL_NewList"}, @{"GL_FreeList" Link "work:Gotcha/developer/glib.guide/GL_FreeList"}, @{"GL_AddNodeString" Link "work:Gotcha/developer/glib.guide/GL_AddNodeString"}, @{"GL_FindNodeString" Link "work:Gotcha/developer/glib.guide/GL_FindNodeString"},
   @{"GL_AddNodeData" Link "work:Gotcha/developer/glib.guide/GL_AddNodeData"}, @{"GL_GetNodeNr" Link "work:Gotcha/developer/glib.guide/GL_GetNodeNr"}, @{"GL_DeleteNode" Link "work:Gotcha/developer/glib.guide/GL_DeleteNode"}, @{"GL_StringListDup" Link "work:Gotcha/developer/glib.guide/GL_StringListDup"}

@endnode
@Node "GL_StripSpaces" "gotcha.library/GL_StripSpaces"
@{fg shine}gotcha.library/GL_StripSpaces@{fg text}

NAME
@{fg shine}     @{"GL_StripSpaces" Link "work:Gotcha/developer/glib.guide/GL_StripSpaces"} -- Strip double spaces from a string.
@{fg text}
SYNOPSIS
     s = @{"GL_StripSpaces" Link "work:Gotcha/developer/glib.guide/GL_StripSpaces"}(s)
                        A0
     UBYTE * @{"GL_StripSpaces" Link "work:Gotcha/developer/glib.guide/GL_StripSpaces"}(UBYTE *)

FUNCTION
     This function will strip spaces from the start and the end of the string
     and remove all double spaces from the string.

INPUTS
     s -- string to trim

RESULT
     Same as input.

EXAMPLE
@{fg shine}     puts(@{"GL_StripSpaces" Link "work:Gotcha/developer/glib.guide/GL_StripSpaces"}("    <-    ->       <-     ->   "));
@{fg text}
NOTES
@{fg shine}@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO

@endnode
@Node "GL_TranslatePhone" "gotcha.library/GL_TranslatePhone"
@{fg shine}gotcha.library/GL_TranslatePhone@{fg text}

NAME
@{fg shine}   @{"GL_TranslatePhone" Link "work:Gotcha/developer/glib.guide/GL_TranslatePhone"} -- Translate a phonenumber.
@{fg text}
SYNOPSIS
   error = @{"GL_TranslatePhone" Link "work:Gotcha/developer/glib.guide/GL_TranslatePhone"}(context,orginal,dest)
                               A0,     A1,    A2
   LONG @{"GL_TranslatePhone" Link "work:Gotcha/developer/glib.guide/GL_TranslatePhone"}(struct gl_context *,UBYTE *,UBYTE *)

FUNCTION
   This function translates a phonenumber as it is found in the nodelist
   with the information given to glist ("Phone" statements in glist.config).

INPUTS
   context -- context from @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}.
   original -- phonenumber from the nodelist
   dest -- destination for translated phonenumber

RESULT
   0 for error, 1 else.

EXAMPLE
@{fg shine}   error = @{"GL_TranslatePhone" Link "work:Gotcha/developer/glib.guide/GL_TranslatePhone"}(my_context,nlphonenum,dialphonenum);
@{fg text}
NOTES
@{fg shine}   If no translation is available dest will be the same as original.
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_OpenNL" Link "work:Gotcha/developer/glib.guide/GL_OpenNL"}

@endnode
@Node "GL_XtractInfos" "gotcha.library/GL_XtractInfos"
@{fg shine}gotcha.library/GL_XtractInfos@{fg text}

NAME
@{fg shine}   @{"GL_XtractInfos" Link "work:Gotcha/developer/glib.guide/GL_XtractInfos"} -- Extract zone, net, node, point and domain information
                     from an address-string.
@{fg text}
SYNOPSIS
   succ = @{"GL_XtractInfos" Link "work:Gotcha/developer/glib.guide/GL_XtractInfos"}(address,string)
                             A0,   A1
   LONG @{"GL_XtractInfos" Link "work:Gotcha/developer/glib.guide/GL_XtractInfos"}(struct gl_address *, UBYTE *)

FUNCTION
   Parses an address string and extracts zone, net, node, point and domain
   information. This function also handles wildcards (*,?). "?" replaces a
   single item (zone, net, node, point or domain), "*" means: assume '?'
   for the rest of the items. e.g. 2:* matches all addresses in zone 2.
   1:?/300 matches all nodes in zone 1, with nodenumber 300.
   If no domain is specified "?" will be assumed.

INPUTS
   address -- a pointer to a gl_address structure that will be filled with
              address information.
   string -- the address-string to parse

RESULT
   Always 1.

EXAMPLE
@{fg shine}   @{"GL_XtractInfos" Link "work:Gotcha/developer/glib.guide/GL_XtractInfos"}(my_add,"2:310/108");
@{fg text}
NOTES
@{fg shine}   The address can be terminated with a space or a '!' as well as zero.
   The domain string will be cut if there is a dot.
   e.g. "fidonet.org" -> "fidonet"
@{fg text}
BUGS
@{fg shine}@{fg text}
SEE ALSO
   @{"GL_FindNode" Link "work:Gotcha/developer/glib.guide/GL_FindNode"}, @{"GL_FindNodeFirst" Link "work:Gotcha/developer/glib.guide/GL_FindNodeFirst"}, @{"GL_FindNodeNext" Link "work:Gotcha/developer/glib.guide/GL_FindNodeNext"}, @{"GL_AddressToString" Link "work:Gotcha/developer/glib.guide/GL_AddressToString"}
   @{"GL_AdrCmp" Link "work:Gotcha/developer/glib.guide/GL_AdrCmp"}, @{"GL_AdrCmpPat" Link "work:Gotcha/developer/glib.guide/GL_AdrCmpPat"}, @{"GL_GetConfig" Link "work:Gotcha/developer/glib.guide/GL_GetConfig"}

@endnode

