Exemple #1
0
typestr::typestr(const typestr & t)
{
    m_str = NULL;
    m_size = 0;
    allocstr(t.m_size);
    memcpy(m_str, t.m_str, t.m_size);
    m_token = t.m_token;
    m_token_pos = t.m_token_pos;
}
Exemple #2
0
void typestr::promise(size_t size)
{
    if (m_size >= size)
        return;
    
    typestr tmpstr = *this;
    allocstr(size);
    memcpy(m_str, tmpstr.str(), tmpstr.m_size);
}
Exemple #3
0
// Rule formatted string init
void typestr::rulestr(const char *s)
{
    if (!s || !*s || !*(s + 1))
    {
        freestr();
        return;
    }
    int i=1, j=0;
    allocstr(strlen(s) + 1);

    while(s[i])
    {
        switch(s[i])
        {
        case '$' :
            if (s[i+1]=='$')
                m_str[j++] = s[++i];
            else
                m_str[j++] = START_OF_FIELD;
            ++i;
            break;
        case '\\' : // hex value
            ++i;
            if (s[i]=='\\' || s[i]=='$') m_str[j++]=s[i++];
            else
            {
                int d=s[i++];
                int u=s[i++];
                if (d>='0' && d<='9') d-='0';
                else
                    if (d>='A' && d<='F') d-='A'-10;
                    else
                        if (d>='a' && d<='f') d-='a'-10;
                if (u>='0' && u<='9') u-='0';
                else
                    if (u>='A' && u<='F') u-='A'-10;
                    else
                        if (u>='a' && u<='f') u-='a'-10;
                m_str[j++]=16*d+u;
            }
            break;
        default : m_str[j++]=s[i++];
        }
    }
    m_str[j-1]=0;
}
Exemple #4
0
void _alert(const char *libdir, const char *msgtype, const char *description)
{
	static char none[1] = "";
	char *cmd;
	int dummy;

	if ( description==NULL ) description = none;

	cmd = allocstr("%s/alert '%s' '%s' &",libdir,msgtype,description);
	logmsg(LOG_INFO,"executing '%s'",cmd);

	/* Assign return value to dummy variable to remove compiler
	 * warnings. We're already trying to generate a warning; there's
	 * no sense in generating another warning when this gives an
	 * error.
	 */
	dummy = system(cmd);

	free(cmd);
}
Exemple #5
0
char* typestr::str(const char *str, size_t maxlen /*= 0*/)
{
    if (!str)
    {
        freestr();
        return NULL;
    }
    size_t needed = 1 + (maxlen > 0 ? maxlen : strlen(str));
    if (m_size < needed)
    {
        allocstr(needed);
    }
    if (maxlen > 0)
    {
        strncpy(m_str, str, maxlen);
        m_str[maxlen] = '\0';
    }
    else
        strcpy(m_str, str);
    return m_str;
}