diff options
Diffstat (limited to 'private/crt32/mbstring/mbsset.c')
-rw-r--r-- | private/crt32/mbstring/mbsset.c | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/private/crt32/mbstring/mbsset.c b/private/crt32/mbstring/mbsset.c new file mode 100644 index 000000000..0884f0e6a --- /dev/null +++ b/private/crt32/mbstring/mbsset.c @@ -0,0 +1,76 @@ +/*** +*mbsset.asm - Sets all charcaters of string to given character (MBCS) +* +* Copyright (c) 1985-1992, Microsoft Corporation. All rights reserved. +* +*Purpose: +* Sets all charcaters of string to given character (MBCS) +* +*Revision History: +* 11-19-92 KRS Ported from 16-bit sources. +* 08-20-93 CFW Change short params to int for 32-bit tree. +* +*******************************************************************************/ + +#ifdef _MBCS +#include <cruntime.h> +#include <mbdata.h> +#include <mbctype.h> +#include <mbstring.h> + +/*** +* mbsset - Sets all charcaters of string to given character (MBCS) +* +*Purpose: +* Sets all of characters in string (except the terminating '/0' +* character) equal to the supplied character. Handles MBCS +* chars correctly. +* +*Entry: +* unsigned char *string = string to modify +* unsigned int val = value to fill string with +* +*Exit: +* returns string = now filled with the specified char +* +*Uses: +* +*Exceptions: +* +*******************************************************************************/ + +unsigned char * _CRTAPI1 _mbsset( string, val ) +unsigned char *string; +unsigned int val; +{ + unsigned char *start = string; + unsigned char highval, lowval; + + if (highval = (unsigned char) (val>>8)) { + + /* 2-byte value */ + + lowval = (unsigned char)(val & 0x00ff); + + while (*string) { + + *string++ = highval; + if (*string) + *string++ = lowval; + else + /* don't orphan lead byte */ + string[-1] = ' '; + } + + } + + else { + /* single byte value */ + + while (*string) + *string++ = (unsigned char)val; + } + + return(start); +} +#endif /* _MBCS */ |