/* -*- c-basic-offset: 4; tab-width: 8; indent-tabs-mode: t -*- */

/* Copyright (c) 2001-2007 International Computer Science Institute
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software")
 * to deal in the Software without restriction, subject to the conditions
 * listed in the XORP LICENSE file. These conditions include: you must
 * preserve this copyright notice, and you cannot mention the copyright
 * holders in advertising related to the Software without their permission.
 * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
 * notice is a summary of the XORP LICENSE file; the license in that file is
 * legally binding. 
 */

#ident "$XORP: xorp/libxorp/utility.c,v 1.8 2007/02/16 22:46:28 pavlin Exp $"


/*
 * Misc. utilities.
 */

#include "libxorp_module.h"

#include "libxorp/xorp.h"

#include <ctype.h>

#include "utility.h"


/*
 * Exported variables
 */

/*
 * Local constants definitions
 */

/*
 * Local structures, typedefs and macros
 */

/*
 * Local variables
 */

/*
 * Local functions prototypes
 */


/*
 * Various ctype(3) wrappers that work properly even if the value of the int
 * argument is not representable as an unsigned char and doesn't have the
 * value of EOF.
 */
int
xorp_isalnum(int c)
{
    return isascii(c) && isalnum(c);
}

int
xorp_isalpha(int c)
{
    return isascii(c) && isalpha(c);
}

/*
 * TODO: for now comment-out xorp_isblank(), because isblank(3) is introduced
 * with ISO C99, and may not always be available on the system.
 */
#if 0
int
xorp_isblank(int c)
{
    return isascii(c) && isblank(c);
}
#endif /* 0 */

int
xorp_iscntrl(int c)
{
    return isascii(c) && iscntrl(c);
}

int
xorp_isdigit(int c)
{
    return isascii(c) && isdigit(c);
}

int
xorp_isgraph(int c)
{
    return isascii(c) && isgraph(c);
}

int
xorp_islower(int c)
{
    return isascii(c) && islower(c);
}

int
xorp_isprint(int c)
{
    return isascii(c) && isprint(c);
}

int
xorp_ispunct(int c)
{
    return isascii(c) && ispunct(c);
}

int
xorp_isspace(int c)
{
    return isascii(c) && isspace(c);
}

int
xorp_isupper(int c)
{
    return isascii(c) && isupper(c);
}

int
xorp_isxdigit(int c)
{
    return isascii(c) && isxdigit(c);
}

int
xorp_tolower(int c)
{
    if (isascii(c))
	return tolower(c);
    else
	return c;
}

int
xorp_toupper(int c)
{
    if (isascii(c))
	return toupper(c);
    else
	return c;
}


syntax highlighted by Code2HTML, v. 0.9.1