[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]


   NAME
        SplitName -- splits out a component of a pathname into a buffer (V36)

   SYNOPSIS
        newpos = SplitName(name, separator, buf, oldpos, size)
        D0                  D1      D2      D3     D4     D5

        WORD SplitName(STRPTR, ubyte, strptr, word, long)

   FUNCTION
        This routine splits out the next piece of a name from a given file
        name.  Each piece is copied into the buffer, truncating at size-1
        characters.  The new position is then returned so that it may be
        passed in to the next call to splitname.  If the separator is not
        found within 'size' characters, then size-1 characters plus a null will
        be put into the buffer, and the position of the next separator will
        be returned.

        If a a separator cannot be found, -1 is returned (but the characters
        from the old position to the end of the string are copied into the
        buffer, up to a maximum of size-1 characters).  Both strings are
        null-terminated.

        This function is mainly intended to support handlers.

   INPUTS
        name      - Filename being parsed.
        separator - Separator charactor to split by.
        buf       - Buffer to hold separated name.
        oldpos    - Current position in the file.
        size      - Size of buf in bytes (including null termination).

   RESULT
        newpos    - New position for next call to splitname.  -1 for last one.

   BUGS
        In V36 and V37, path portions greater than or equal to 'size' caused
        the last character of the portion to be lost when followed by a
        separator.  Fixed for V39 dos.  For V36 and V37, the suggested work-
        around is to call SplitName() with a buffer one larger than normal
        (for example, 32 bytes), and then set buf[size-2] to '0' (for example,
        buf[30] = '0';).

   SEE ALSO
        filepart(), pathpart(), addpart()