/* Removes leading and/or trailing whitespaces
Copyright (C) 2006 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING.
If not, write to the Free Software Foundation,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
/* Written by Davide Angelocola
*/
#ifdef HAVE_CONFIG_H
# include
#endif
#include
#if HAVE_MBRTOWC
# include "mbiter.h"
#endif
#include "mbchar.h"
#include "xalloc.h"
#include "trim.h"
char *
trim2(const char *s, int how)
{
mbi_iterator_t i;
char *d;
d = xstrdup(s);
if (!d)
xalloc_die();
/* Trim leading whitespaces. */
if (how != TRIM_TRAILING)
{
mbi_init(i, d, strlen(d));
for (; mbi_avail(i) && mb_isspace(mbi_cur(i)); mbi_advance(i))
;
memmove(d, mbi_cur_ptr(i), strlen(mbi_cur_ptr(i)) + 1);
}
/* Trim trailing whitespaces. */
if (how != TRIM_LEADING)
{
char *x = d + strlen(d) - 1;
for(;;)
{
mbi_init(i, x, strlen(x));
if (!mbi_avail (i))
break;
if (!mb_isspace(mbi_cur(i)))
break;
*x-- = 0;
}
}
return d;
}
int
main(void)
{
char buf[] = " a string ";
printf("trim = '%s'\n", trim(buf));
printf("trim_leading = '%s'\n", trim_leading(buf));
printf("trim_trailing = '%s'\n", trim_trailing(buf));
return 0;
}