mirror of
https://github.com/postgres/postgres.git
synced 2025-06-14 18:42:34 +03:00
Postgres95 1.01 Distribution - Virgin Sources
This commit is contained in:
104
src/bin/psql/stringutils.c
Normal file
104
src/bin/psql/stringutils.c
Normal file
@ -0,0 +1,104 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* stringutils.c--
|
||||
* simple string manipulation routines
|
||||
*
|
||||
* Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/bin/psql/stringutils.c,v 1.1.1.1 1996/07/09 06:22:15 scrappy Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <stdlib.h>
|
||||
#include "stringutils.h"
|
||||
|
||||
/* all routines assume null-terminated strings! */
|
||||
|
||||
/* removes whitespaces from the left, right and both sides of a string */
|
||||
/* MODIFIES the string passed in and returns the head of it */
|
||||
char* leftTrim(char* s)
|
||||
{
|
||||
char* s2 = s;
|
||||
int shift=0;
|
||||
int j=0;
|
||||
|
||||
while (isspace(*s))
|
||||
{ s++; shift++;}
|
||||
if (shift > 0)
|
||||
{
|
||||
while ( (s2[j] = s2[j+shift]) !='\0')
|
||||
j++;
|
||||
}
|
||||
|
||||
return s2;
|
||||
}
|
||||
|
||||
char* rightTrim(char* s)
|
||||
{
|
||||
char* sEnd;
|
||||
sEnd = s+strlen(s)-1;
|
||||
while (isspace(*sEnd))
|
||||
sEnd--;
|
||||
if (sEnd < s)
|
||||
s[0]='\0';
|
||||
else
|
||||
s[sEnd-s+1]='\0';
|
||||
return s;
|
||||
}
|
||||
|
||||
char* doubleTrim(char* s)
|
||||
{
|
||||
strcpy(s,leftTrim(rightTrim(s)));
|
||||
return s;
|
||||
}
|
||||
|
||||
/* dupstr : copies a string, while allocating space for it.
|
||||
the CALLER is responsible for freeing the space
|
||||
returns NULL if the argument is NULL*/
|
||||
char* dupstr(char *s)
|
||||
{
|
||||
char* result;
|
||||
|
||||
if (s == NULL)
|
||||
return NULL;
|
||||
|
||||
result = (char*)malloc(strlen(s)+1);
|
||||
strcpy(result, s);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
#ifdef STRINGUTILS_TEST
|
||||
void testStringUtils()
|
||||
{
|
||||
static char* tests[] = {" goodbye \n", /* space on both ends */
|
||||
"hello world", /* no spaces to trim */
|
||||
"", /* empty string */
|
||||
"a", /* string with one char*/
|
||||
" ", /* string with one whitespace*/
|
||||
NULL_STR};
|
||||
|
||||
int i=0;
|
||||
while (tests[i]!=NULL_STR)
|
||||
{
|
||||
char* t;
|
||||
t = dupstr(tests[i]);
|
||||
printf("leftTrim(%s) = ",t);
|
||||
printf("%sEND\n", leftTrim(t));
|
||||
t = dupstr(tests[i]);
|
||||
printf("rightTrim(%s) = ",t);
|
||||
printf("%sEND\n", rightTrim(t));
|
||||
t = dupstr(tests[i]);
|
||||
printf("doubleTrim(%s) = ",t);
|
||||
printf("%sEND\n", doubleTrim(t));
|
||||
i++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user