Start 1.33.0 development cycle
[oweals/busybox.git] / libbb / trim.c
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
12 char* 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 }