
/*  File   : strtrim.c
    Author : Richard A. O'Keefe.
    Updated: 20 April 1984
    Defines: strtrim()

    strtrim(dst, src, set, ends)
    copies src to dst, but will skip leading characters in set if "ends"
    is <= 0, and will skip trailing characters in set if ends is >= 0.
    Thus there are three cases:
        ends < 0 :      trim a prefix
        ends = 0 :      trim a prefix and a suffix both
        ends > 0 :      trim a suffix
    To compress internal runs, see strpack.  The normal use of this is
    strtrim(buffer, buffer, " \t", 0);  The result is the address of the
    NUL which now terminates dst.
*/

#include "stdio.h"
#include "_str2set.h"

#define NUL '\0'

char *strtrim(dst, src, set, ends)
    register char *dst, *src;
    char *set;
    int ends;
    {
        _str2set(set);
        if (ends <= 0) {
            while (_set_vec[*src] == _set_ctr) src++;
        }
        if (ends >= 0) {
            register int chr;
            register char *save = dst;
            while (chr = *src++) {
                *dst++ = chr;
                if (_set_vec[chr] != _set_ctr) save = dst;
            }
            dst = save, *dst = NUL;
        } else {
            while (*dst++ = *src++) ;
            --dst;
        }
        return dst;
    }


