diff options
Diffstat (limited to 'dmake/dmstring.c')
-rw-r--r-- | dmake/dmstring.c | 300 |
1 files changed, 0 insertions, 300 deletions
diff --git a/dmake/dmstring.c b/dmake/dmstring.c deleted file mode 100644 index 53068a9deba0..000000000000 --- a/dmake/dmstring.c +++ /dev/null @@ -1,300 +0,0 @@ -/* RCS $Id: dmstring.c,v 1.2 2007-01-18 09:29:40 vg Exp $ --- --- SYNOPSIS --- String handling code --- --- DESCRIPTION --- Routines to handle string manipulation. This code is not specific --- to dmake and has/and will be used in other programs. The string --- "" is considered the NULL string, if NIL(char) is received instead --- undefined results may occurr. (In reality NIL(char) is checked for --- but in general it is not safe to assume NIL(char) == NULL) --- --- AUTHOR --- Dennis Vadura, dvadura@dmake.wticorp.com --- --- WWW --- http://dmake.wticorp.com/ --- --- COPYRIGHT --- Copyright (c) 1996,1997 by WTI Corp. All rights reserved. --- --- This program is NOT free software; you can redistribute it and/or --- modify it under the terms of the Software License Agreement Provided --- in the file <distribution-root>/readme/license.txt. --- --- LOG --- Use cvs log to obtain detailed change logs. -*/ - -#include "extern.h" - -PUBLIC char * -DmStrJoin( src, data, n, fr )/* -=============================== - Join data to src according to value of n. - - n = -1 - return strcat( src, data ) - n >= 0 - return strncat( src, data, n ) - - FREE original src if fr == TRUE, else leave it alone */ - -char *src; -char *data; -int n; -int fr; -{ - char *t; - int l; - int flag = FALSE; - - DB_ENTER( "DmStrJoin" ); - - if( src == NIL(char) ) { src = ""; flag = TRUE; } - if( data == NIL(char) ) data = ""; - DB_PRINT( "str", ("Joining [%s] [%s] %d", src, data, n) ); - - if( n == -1 ) n = strlen( data ); - - l = strlen( src ) + n + 1; - if( (t = MALLOC( l, char )) == NIL(char) ) No_ram(); - - strcpy( t, src ); - if (n) strncat( t, data, n ); - t[ l-1 ] = '\0'; - - if( !flag && fr ) FREE( src ); - - DB_PRINT( "str", ("Result [%s]", t) ); - DB_RETURN( t ); -} - - - - -PUBLIC char * -DmStrAdd( src, data, fr )/* -=========================== - append data to src with space in between if src is not NIL(char) or "" - and free both src and data if fr == TRUE, otherwise leave them be */ - -char *src; -char *data; -int fr; -{ - char *t; - int l; - int sflag; - int dflag; - - DB_ENTER( "DmStrAdd" ); - - sflag = dflag = fr; - - if( src == NIL(char) ) { src = ""; sflag = FALSE; } - if( data == NIL(char) ) { data = ""; dflag = FALSE; } - DB_PRINT( "str", ("Adding [%s] [%s] %d", src, data, fr) ); - - l = strlen(src) + strlen(data) + 1; - if( *src ) l++; - - if( (t = MALLOC( l, char )) == NIL(char) ) No_ram(); - - strcpy( t, src ); - - if( *data ) - { - if( *src ) strcat( t, " " ); - strcat( t, data ); - } - - if( sflag ) FREE( src ); - if( dflag ) FREE( data ); - - DB_PRINT( "str", ("Result [%s]", t) ); - DB_RETURN( t ); -} - - - -PUBLIC char * -DmStrApp( src1, src2 )/* -======================== - Append two strings together, and return the result with a space between - the two strings. FREE the first string if it is not NIL and always - leave the second string be. */ -char *src1; -char *src2; -{ - src2 = DmStrAdd( src1, src2, FALSE ); - if( src1 != NIL(char) ) FREE( src1 ); - return( src2 ); -} - - -PUBLIC char * -DmStrDup( str )/* -================= Duplicate the contents of a string, by using malloc */ -char *str; -{ - char *t; - - if( str == NIL(char) ) return( NIL(char) ); - - if( (t = MALLOC( strlen( str )+1, char )) == NIL(char) ) No_ram(); - strcpy( t, str ); - - return( t ); -} - - - -PUBLIC char * -DmStrDup2( str )/* -================== - This function is used solely to properly quote command line arguments when - they are reinserted int MAKEMACROS so that they can be used further in - a processing line. */ -char *str; -{ - char *t; - size_t size; - size_t alloced; - char *tmp; - char *dest; - int seen_equal = 0; - - if(str == NIL(char)) return(NIL(char)); - size = strlen(str) + 1; - alloced = size + 2; /* for two quotes */ - - for(tmp = str; *tmp; tmp++) - if(*tmp == '"') - alloced++; - - if((t = MALLOC(alloced, char)) == NIL(char)) No_ram(); - - for(tmp = str, dest = t; *tmp; tmp++, dest++) { - if(*tmp == '=' && !seen_equal) { - seen_equal = 1; - *dest++ = *tmp; - *dest = '"'; - continue; - } - if(*tmp == '"') - *dest++ = '\\'; - *dest = *tmp; - } - - if(!seen_equal) - Fatal("DmStrDup2 invoked without argument of form x=y\n"); - - *dest++ = '"'; - *dest = 0; - - return t; -} - - - -PUBLIC char * -DmStrPbrk( s1, s2 )/* -==================== - find first occurrence of char in s2 in string s1. - Returns a pointer to the first occurrence. NOTE '\0' is considered part - of s2 and a pointer to it is returned if no other chars match. */ - -char *s1; -char *s2; -{ - register char *t; - - if( s1 == NIL(char) || s2 == NIL(char) ) return( "" ); - - for( t=s1; *t && (strchr( s2, *t ) == NIL(char)); t++ ); - return( t ); -} - - - - -PUBLIC char * -DmStrSpn( s1, s2 )/* -==================== - return pointer to first char in s1 that does not belong to s2. - Returns the pointer if match found, else returns pointer to null char - in s1. (ie. "" ) */ - -char *s1; -char *s2; -{ - register char *t; - - if( s1 == NIL(char) || s2 == NIL(char) ) return( "" ); - - for( t=s1; *t && (strchr( s2, *t ) != NIL(char)); t++ ); - return( t ); -} - - - - -PUBLIC char * -DmStrStr( s1, s2 )/* -==================== find first occurrence in s1 of s2 */ -char *s1; -char *s2; -{ - register char *s; - register char *p; - register char *r; - - if( s1 != NIL(char) && s2 != NIL(char) ) - for( s=s1; *s; s++ ) - if( *s == *s2 ) - { - for( r=s+1, p = s2+1; *p && (*r == *p); r++, p++ ); - if( !*p ) return( s ); - } - - return( NIL(char) ); -} - - - -PUBLIC char * -DmSubStr( s, e )/* -================== - Return the string between the two pointers s and e, not including the - char that e points to. NOTE: This routine assumes that s and e point - into the same string. */ - -char *s; -char *e; -{ - char save; - int len = e-s; - - if( len < 0 || len > strlen(s) ) - Fatal( "Internal Error: SubStr fails consistency test" ); - - save = *e; - *e = '\0'; - s = DmStrDup( s ); - *e = save; - - return( s ); -} - - -/* Provide "missing" string function. */ -#ifndef HAVE_STRLWR -char * -strlwr(char *s) -{ - char *p; - for(p=s; *p; p++ ) - *p = tolower(*p); - return s; -} -#endif |