#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>

void error(char *message)
{
    fprintf(stderr, "Error: %s", message);
}


void warning(char *message, int linenum, char *fn)
{
    fprintf(stderr, "%s:Line %d - %s", fn, linenum, message);
}


char *str_dup(char *string)
{
    char *ptr;

    ptr = (char *) malloc(sizeof(char) * (strlen(string) + 1));
    strcpy(ptr, string);
    return(ptr);
}


long decipher_flag_text(char *flags)
{
    char *ptr;
    long vector = 0;

    if (isdigit(*flags))
	return(atol(flags));
    ptr = flags;
    while(isalpha(*ptr)) {
	if (*ptr > 'Z')
	    vector |= (1 << (*ptr - 'a'));
	else
	    vector |= (1 << (*ptr - 'A' + 26));
	ptr++;
    }
    if (*ptr)
	return(-1);
    return(vector);
}