DBD-cubrid
view release on metacpan or search on metacpan
cci-src/src/base/porting.c view on Meta::CPAN
{
char *p, *token;
if (*stringp == NULL)
return NULL;
token = *stringp;
p = strstr (*stringp, delim);
if (p == NULL)
{
*stringp = NULL;
}
else
{
*p = '\0';
*stringp = p + strlen (delim);
}
return token;
}
#endif
/*
* getpass() - get a password
* return: password string
* prompt(in): prompt message string
*/
char *
getpass (const char *prompt)
{
size_t pwlen = 0;
int c;
static char password_buffer[80];
fprintf (stdout, prompt);
while (1)
{
c = getch ();
if (c == '\r' || c == '\n')
break;
if (c == '\b')
{ /* backspace */
if (pwlen > 0)
pwlen--;
continue;
}
if (pwlen < sizeof (password_buffer) - 1)
password_buffer[pwlen++] = c;
}
password_buffer[pwlen] = '\0';
return password_buffer;
}
#endif /* WINDOWS */
#if defined(WINDOWS)
int
setenv (const char *name, const char *val, int overwrite)
{
errno_t ret;
if (!overwrite)
{
char *ptr = getenv (name);
if (ptr != NULL)
{
return -1;
}
}
ret = _putenv_s (name, val);
if (ret == EINVAL)
{
return -1;
}
return 0;
}
int
cub_vsnprintf (char *buffer, size_t count, const char *format, va_list argptr)
{
int len = _vscprintf_p (format, argptr) + 1;
if (len > (int) count)
{
char *cp = malloc (len);
if (cp == NULL)
{
return -1;
}
len = _vsprintf_p (cp, len, format, argptr);
if (len < 0)
{
free (cp);
return len;
}
memcpy (buffer, cp, count - 1);
buffer[count - 1] = 0;
free (cp);
return (int) count;
}
return _vsprintf_p (buffer, count, format, argptr);
}
#if !defined(_MSC_VER) || _MSC_VER < 1800
double
round (double d)
{
return d >= 0 ? floor (d + 0.5) : ceil (d - 0.5);
}
#endif
int
( run in 1.084 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )