busybox/libbb/trim.c
<<
>>
Prefs
   1/* vi: set sw=4 ts=4: */
   2/*
   3 * Utility routines.
   4 *
   5 * Copyright (C) many different people.
   6 * If you wrote this, please acknowledge your work.
   7 *
   8 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
   9 */
  10#include "libbb.h"
  11
  12char* FAST_FUNC trim(char *s)
  13{
  14        size_t len = strlen(s);
  15        size_t old = len;
  16
  17        /* trim trailing whitespace */
  18        while (len && isspace(s[len-1]))
  19                --len;
  20
  21        /* trim leading whitespace */
  22        if (len) {
  23                char *nws = skip_whitespace(s);
  24                if ((nws - s) != 0) {
  25                        len -= (nws - s);
  26                        memmove(s, nws, len);
  27                }
  28        }
  29
  30        s += len;
  31        /* If it was a "const char*" which does not need trimming,
  32         * avoid superfluous store */
  33        if (old != len)
  34                *s = '\0';
  35
  36        return s;
  37}
  38