#include "noser.h"
#include <stdio.h>
int daylight = 0;
int timezone = 0;
static int initted = 0;
void init(void)
{
daylight = 1;
timezone = 1;
return;
}
size_t __ctype_get_mb_cur_max (void)
{
return (size_t) sizeof(wchar_t);
}
/*
* mbstowcs()
*
* convert multibyte string to wide character string.
*
* DESCRIPTION
* The mbstowcs() function converts the multibyte string
* addressed by s into the corresponding UNICODE string.
* It stores up to n wide characters in pwcs. It stops
* conversion after encountering and storing a null character.
*
* PARAMETERS
* pwcs: Is the address of an array of wide characters,
* type wchar_t, to receive the UNICODE equivalent
* of multibyte string s.
* s: Points to a null-terminated multibyte string
* to be converted to UNICODE.
* n: Is the maximum number of characters to convert
* and store in pwcs.
*
* RETURN VALUES
* If successful, mbstowcs() returns the number of
* multibyte characters it converted, not including
* the terminating null character. If s is a null
* pointer or points to a null character, mbstowcs()
* returns zero. If mbstowcs() encounters an invalid
* multibyte sequence, it returns -1.
*/
size_t mbstowcs(wchar_t *pwcs, const char *s, size_t n)
{
size_t len = 0;
printf("IM IN MBSTOWCS\n");
if(initted == 0)
{
init();
}
if(pwcs == NULL || s == NULL || n == 0)
{
return 0;
}
return len;
}
/*
* wcstombs()
*
* convert wide character string to multibyte string
*
* DESCRIPTION
* The wcstombs() function converts a sequence of codes that
* correspond to multibyte characters from the array pointed
* to by pwcs into a sequence of multibyte characters that
* begins in the initial shift state. Then, wcstombs() stores
* these multibyte characters into the array pointed to by s.
* If a multibyte character exceeds the limit of n total bytes
* or if a NULL character is stored, wcstombs() stops. Each
* code is converted as if by a call to the wctomb() function,
* except that the shift state of the wctomb() function is not
* affected.
* No more than n bytes are modified in the array pointed to
* by s. If copying takes place between objects that overlap,
* the behavior is undefined.
*
*
* PARAMETERS
* s: Points to the sequence of multibyte characters.
* pwcs: Points to the sequence of wide characters.
* n: Is the maximum number of bytes that can be stored
* in the multibyte string.
*
* RETURN VALUES
* The wcstombs() function returns the number of bytes written
* into s, excluding the terminating NULL, if it was able to
* convert the wide character string. If the pwcs string is
* NULL, the wcstombs() function returns the required size of
* the destination string. If the conversion could not be
* performed, -1 is returned.
*/
size_t wcstombs(char *s, const wchar_t *pwcs, size_t n)
{
size_t len = 0;
unsigned int effectiveLen = n - 1;
unsigned int i = 0;
printf("IM IN WCSTOMBS\n");
if(s == NULL || pwcs == NULL || n == 0)
{
return 0;
}
if(initted == 0)
{
init();
}
i = strlen(s);
len = (i <= effectiveLen) ? i : effectiveLen;
for( ; i < len; ++i)
{
s[i] = (char) pwcs[i];
}
s[effectiveLen] = '\0';
return len;
}