#include #include "debug.h" #include "clean_spaces.h" /* Cleans space characters. \s\t\n\r */ int clean_spaces( char *buffer, clean_type ct ) { char *tmpbuf; int length, cnt, offset, seen_stuff; length = strlen( buffer ); if( length < 1 ) { return( 0 ); } tmpbuf = (char *)malloc( length + 1 ); bzero( tmpbuf, length + 1 ); dmsg( 5, "Empty buffer created: '%s'", tmpbuf ); /* Clean begin if ok */ if( ( ct == CL_BEGIN ) || ( ct == CL_BOTH ) ) { offset = 0; seen_stuff = 0; dmsg( 3, "Cleaning beginning of line, '%s'", buffer ); for( cnt = 0; cnt < length; cnt++ ) { if( ( buffer[ cnt ] != ' ' ) && ( buffer[ cnt ] != '\n' ) && ( buffer[ cnt ] != '\r' ) && ( buffer[ cnt ] != '\t' ) ) { /* Set flag */ dmsg( 5, "First non-space char '%c' at %i", buffer[ cnt ], cnt ); seen_stuff = 1; } if( seen_stuff ) { tmpbuf[ offset++ ] = buffer[ cnt ]; } } dmsg( 3, "Line cleaned, '%s'", tmpbuf ); }else { /* Just put the whole thing in */ strcpy( tmpbuf, buffer ); } if( ( ct == CL_END ) || ( ct == CL_BOTH ) ) { dmsg( 3, "Cleaning end of line, '%s'", buffer ); seen_stuff = 0; length = strlen( tmpbuf ) - 1; for( cnt = length; cnt > 0; cnt-- ) { if( ( tmpbuf[ cnt ] != ' ' ) && ( tmpbuf[ cnt ] != '\n' ) && ( tmpbuf[ cnt ] != '\r' ) && ( tmpbuf[ cnt ] != '\t' ) ) { /* Set flag */ dmsg( 5, "First non-space char '%c' at %i", tmpbuf[ cnt ], cnt ); seen_stuff = 1; } if( ! seen_stuff ) { tmpbuf[ cnt ] = 0; } } dmsg( 3, "Line cleaned, '%s'", tmpbuf ); } /* Put it back in the main buffer now */ strcpy( buffer, tmpbuf ); free( tmpbuf ); return( 0 ); }