blob: da7adea1006e3e001ff6256327d160e456f27f60 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - Initial API and implementation
*******************************************************************************/
#ifdef __gnu_linux__
#define _GNU_SOURCE
#endif /* __gnu_linux__ */
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include "compat.h"
#include "proxy_attr.h"
/*
* Test if this attribute string has matching key. Also tests
* to see if the attribute string is formatted correctly.
*/
int
proxy_test_attribute(char *key, char *attr_str)
{
int len = strlen(key);
/*
* Attribute string must be at least the length of key + 1 characters long.
*/
if (strlen(attr_str) <= len)
return 0;
/*
* Attribute string must have '=' separating key and value.
*/
if (attr_str[len] != '=')
return 0;
/*
* Key must match.
*/
return strncmp(attr_str, key, len) == 0;
}
/*
* Return attribute value as a string. If we have tested for the attribute key
* before calling this, then it is guaranteed to return a non-NULL string.
*/
char *
proxy_get_attribute_value_str(char *attr_str)
{
char * s = strchr(attr_str, '=');
if (s != NULL) {
return s + 1;
}
return NULL;
}
/*
* Return attribute value as an int. May return a misleading value if attribute
* value is not an integer.
*/
int
proxy_get_attribute_value_int(char *attr_str)
{
char * s = strchr(attr_str, '=');
if (s != NULL) {
return strtol(s + 1, NULL, 10);
}
return 0;
}
/*
* Return attribute value as a boolean. Returns false if the
* attribute value is not the (case insensitive) string "true".
*/
int
proxy_get_attribute_value_bool(char *attr_str)
{
char * s = strchr(attr_str, '=');
if (s != NULL) {
return strcasecmp(s + 1, "true") == 0;
}
return 0;
}