Beispiel #1
0
spif_bool_t
spif_eterm_action_init(spif_eterm_action_t self)
{
    spif_obj_init(SPIF_OBJ(self));
    spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(eterm_action));
    self->type = ETERM_ACTION_NONE;
    self->modifiers = ETERM_MOD_NONE;
    self->button = ETERM_BUTTON_NONE;
    self->keysym = ETERM_KEYSYM_NONE;
    self->handler = (spif_eterm_action_handler_t) NULL;
    self->parameter = (spif_eterm_action_parameter_t) NULL;
    return TRUE;
}
Beispiel #2
0
Datei: str.c Projekt: mej/libast
spif_bool_t
spif_str_init_from_fd(spif_str_t self, int fd)
{
    int n;
    spif_charptr_t p;

    ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE);
    ASSERT_RVAL((fd >= 0), FALSE);
    /* ***NOT NEEDED*** spif_obj_init(SPIF_OBJ(self)); */
    spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS(SPIF_STRCLASS_VAR(str)));
    self->size = buff_inc;
    self->len = 0;
    self->s = (spif_charptr_t) MALLOC(self->size);

    for (p = self->s; ((n = read(fd, p, buff_inc)) > 0) || (errno == EINTR);) {
        self->size += n;
        self->s = (spif_charptr_t) REALLOC(self->s, self->size);
        p += n;
    }
    self->len = self->size - buff_inc;
    self->size = self->len + 1;
    self->s = (spif_charptr_t) REALLOC(self->s, self->size);
    self->s[self->len] = 0;
    return TRUE;
}
Beispiel #3
0
Datei: str.c Projekt: mej/libast
spif_bool_t
spif_str_init_from_fp(spif_str_t self, FILE *fp)
{
    spif_charptr_t p, end = NULL;

    ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE);
    ASSERT_RVAL((fp != (FILE *) NULL), FALSE);
    /* ***NOT NEEDED*** spif_obj_init(SPIF_OBJ(self)); */
    spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS(SPIF_STRCLASS_VAR(str)));
    self->size = buff_inc;
    self->len = 0;
    self->s = (spif_charptr_t) MALLOC(self->size);

    for (p = self->s; fgets((char *)p, buff_inc, fp); p += buff_inc) {
        if (!(end = (spif_charptr_t)strchr((const char *)p, '\n'))) {
            self->size += buff_inc;
            self->s = (spif_charptr_t) REALLOC(self->s, self->size);
        } else {
            *end = 0;
            break;
        }
    }
    self->len = (spif_stridx_t) ((end)
                          ? (end - self->s)
                          : ((int) strlen((const char *)self->s)));
    self->size = self->len + 1;
    self->s = (spif_charptr_t) REALLOC(self->s, self->size);
    return TRUE;
}
Beispiel #4
0
static spif_bool_t
spif_url_init_from_ipaddr(spif_url_t self, spif_ipsockaddr_t ipaddr)
{
    spif_uint8_t tries;
    spif_hostinfo_t hinfo;

    ASSERT_RVAL(!SPIF_URL_ISNULL(self), FALSE);
    spif_str_init(SPIF_STR(self));
    spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(url));
    self->proto = (spif_str_t) NULL;
    self->user = (spif_str_t) NULL;
    self->passwd = (spif_str_t) NULL;
    self->path = (spif_str_t) NULL;
    self->query = (spif_str_t) NULL;

    /* Try up to 3 times to resolve the hostname. */
    h_errno = 0;
    tries = 0;
    do {
        tries++;
        hinfo = gethostbyaddr((const char *) &(ipaddr->sin_addr), sizeof(ipaddr->sin_addr), AF_INET);
    } while ((tries <= 3) && (!hinfo) && (h_errno == TRY_AGAIN));
    if (!hinfo || !hinfo->h_name) {
        spif_charptr_t buff;

        buff = SPIF_CHARPTR(inet_ntoa(ipaddr->sin_addr));
        self->host = spif_str_new_from_ptr(buff);
    } else {
        self->host = spif_str_new_from_ptr(SPIF_CHARPTR(hinfo->h_name));
    }

    self->port = spif_str_new_from_num(ntohs(ipaddr->sin_port));
    return TRUE;
}
Beispiel #5
0
spif_bool_t
spif_socket_init_from_urls(spif_socket_t self, spif_url_t surl, spif_url_t durl)
{
    ASSERT_RVAL(!SPIF_SOCKET_ISNULL(self), FALSE);
    /* ***NOT NEEDED*** spif_obj_init(SPIF_OBJ(self)); */
    spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(socket));
    self->fd = -1;
    self->fam = AF_INET;
    self->type = SOCK_STREAM;
    self->proto = 0;
    self->addr = (spif_sockaddr_t) NULL;
    self->len = 0;
    self->flags = 0;
    if (!SPIF_URL_ISNULL(surl)) {
        self->local_url = spif_url_dup(surl);
    } else {
        self->local_url = (spif_url_t) NULL;
    }
    if (!SPIF_URL_ISNULL(durl)) {
        self->remote_url = spif_url_dup(durl);
    } else {
        self->remote_url = (spif_url_t) NULL;
    }
    return TRUE;
}
Beispiel #6
0
Datei: tok.c Projekt: Limsik/e17
spif_bool_t
spif_tok_init(spif_tok_t self)
{
    ASSERT_RVAL(!SPIF_TOK_ISNULL(self), FALSE);
    if (!spif_obj_init(SPIF_OBJ(self))) {
        return FALSE;
    } else if (!spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(tok))) {
        return FALSE;
    }
    self->src = (spif_str_t) NULL;
    self->quote = '\'';
    self->dquote = '\"';
    self->escape = '\\';
    self->tokens = (spif_list_t) NULL;
    self->sep = (spif_str_t) NULL;
    return TRUE;
}
Beispiel #7
0
Datei: tok.c Projekt: Limsik/e17
spif_bool_t
spif_tok_init_from_fd(spif_tok_t self, int fd)
{
    ASSERT_RVAL(!SPIF_TOK_ISNULL(self), FALSE);
    if (!spif_obj_init(SPIF_OBJ(self))) {
        return FALSE;
    } else if (!spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(tok))) {
        return FALSE;
    }
    self->src = spif_str_new_from_fd(fd);
    self->quote = '\'';
    self->dquote = '\"';
    self->escape = '\\';
    self->tokens = (spif_list_t) NULL;
    self->sep = (spif_str_t) NULL;
    return ((SPIF_STR_ISNULL(self->src)) ? (FALSE) : (TRUE));
}
Beispiel #8
0
Datei: str.c Projekt: mej/libast
spif_bool_t
spif_str_init(spif_str_t self)
{
    ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE);
    /* ***NOT NEEDED*** spif_obj_init(SPIF_OBJ(self)); */
    spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS(SPIF_STRCLASS_VAR(str)));
    self->s = (spif_charptr_t) NULL;
    self->len = 0;
    self->size = 0;
    return TRUE;
}
Beispiel #9
0
Datei: str.c Projekt: mej/libast
spif_bool_t
spif_str_init_from_ptr(spif_str_t self, spif_charptr_t old)
{
    ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE);
    REQUIRE_RVAL((old != (spif_charptr_t) NULL), spif_str_init(self));
    /* ***NOT NEEDED*** spif_obj_init(SPIF_OBJ(self)); */
    spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS(SPIF_STRCLASS_VAR(str)));
    self->len = strlen((const char *) old);
    self->size = self->len + 1;
    self->s = (spif_charptr_t) MALLOC(self->size);
    memcpy(self->s, old, self->size);
    return TRUE;
}
Beispiel #10
0
spif_bool_t
spif_eterm_action_init_from_data(spif_eterm_action_t self, spif_eterm_action_type_t type,
                                 spif_ushort_t modifiers, spif_uchar_t button, KeySym keysym, spif_ptr_t param)
{
    spif_obj_init(SPIF_OBJ(self));
    spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(eterm_action));
    self->type = type;
    self->modifiers = modifiers;
    self->button = button;
    self->keysym = keysym;

    switch (type) {
        case ETERM_ACTION_STRING:
            self->handler = (spif_eterm_action_handler_t) action_handle_string;
            self->parameter = (spif_obj_t) spif_str_new_from_ptr(param);
            /*parse_escaped_string(self->parameter.string); */
            break;
        case ETERM_ACTION_ECHO:
            self->handler = (spif_eterm_action_handler_t) action_handle_echo;
            self->parameter = (spif_obj_t) spif_str_new_from_ptr(param);
            /*parse_escaped_string(self->parameter.string); */
            break;
        case ETERM_ACTION_SCRIPT:
            self->handler = (spif_eterm_action_handler_t) action_handle_script;
            self->parameter = (spif_obj_t) spif_str_new_from_ptr(param);
            break;
        case ETERM_ACTION_MENU:
            self->handler = (spif_eterm_action_handler_t) action_handle_menu;
            /*self->parameter.menu = (menu_t *) param; */
            break;
        default:
            break;
    }
    D_ACTIONS(("Added action.  modifiers == 0x%08x, button == %d, keysym == 0x%08x\n",
               self->modifiers, self->button, (unsigned) self->keysym));

    return TRUE;
}
Beispiel #11
0
spif_bool_t
spif_socket_init(spif_socket_t self)
{
    ASSERT_RVAL(!SPIF_SOCKET_ISNULL(self), FALSE);
    /* ***NOT NEEDED*** spif_obj_init(SPIF_OBJ(self)); */
    spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(socket));
    self->fd = -1;
    self->fam = AF_INET;
    self->type = SOCK_STREAM;
    self->proto = 0;
    self->addr = (spif_sockaddr_t) NULL;
    self->len = 0;
    self->flags = 0;
    self->local_url = (spif_url_t) NULL;
    self->remote_url = (spif_url_t) NULL;
    return TRUE;
}
Beispiel #12
0
Datei: str.c Projekt: mej/libast
spif_bool_t
spif_str_init_from_num(spif_str_t self, long num)
{
    spif_char_t buff[28];

    ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE);
    /* ***NOT NEEDED*** spif_obj_init(SPIF_OBJ(self)); */
    spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS(SPIF_STRCLASS_VAR(str)));

    snprintf((char *) buff, sizeof(buff), "%ld", num);
    self->len = strlen((char *) buff);
    self->size = self->len + 1;
    self->s = (spif_charptr_t) MALLOC(self->size);
    strcpy((char *) self->s, (char *) buff);

    return TRUE;
}
Beispiel #13
0
Datei: url.c Projekt: Limsik/e17
spif_bool_t
spif_url_init(spif_url_t self)
{
    ASSERT_RVAL(!SPIF_URL_ISNULL(self), FALSE);
    if (!spif_str_init(SPIF_STR(self))) {
        return FALSE;
    }
    spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(url));
    self->proto = (spif_str_t) NULL;
    self->user = (spif_str_t) NULL;
    self->passwd = (spif_str_t) NULL;
    self->host = (spif_str_t) NULL;
    self->port = (spif_str_t) NULL;
    self->path = (spif_str_t) NULL;
    self->query = (spif_str_t) NULL;
    return TRUE;
}
Beispiel #14
0
Datei: url.c Projekt: Limsik/e17
spif_bool_t
spif_url_init_from_ptr(spif_url_t self, spif_charptr_t other)
{
    ASSERT_RVAL(!SPIF_URL_ISNULL(self), FALSE);
    if (!spif_str_init_from_ptr(SPIF_STR(self), other)) {
        return FALSE;
    }
    spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(url));
    self->proto = (spif_str_t) NULL;
    self->user = (spif_str_t) NULL;
    self->passwd = (spif_str_t) NULL;
    self->host = (spif_str_t) NULL;
    self->port = (spif_str_t) NULL;
    self->path = (spif_str_t) NULL;
    self->query = (spif_str_t) NULL;
    spif_url_parse(self);
    return TRUE;
}
Beispiel #15
0
spif_bool_t
spif_eterm_action_done(spif_eterm_action_t self)
{
    if (!SPIF_OBJ_ISNULL(self->parameter)) {
        if ((self->type == ETERM_ACTION_STRING)
            || (self->type == ETERM_ACTION_ECHO)
            || (self->type == ETERM_ACTION_SCRIPT)) {
            spif_str_del(SPIF_STR(self->parameter));
        }
    }
    self->type = ETERM_ACTION_NONE;
    self->modifiers = ETERM_MOD_NONE;
    self->button = ETERM_BUTTON_NONE;
    self->keysym = ETERM_KEYSYM_NONE;
    self->handler = (spif_eterm_action_handler_t) NULL;
    self->parameter = (spif_eterm_action_parameter_t) NULL;
    spif_obj_done(SPIF_OBJ(self));
    return TRUE;
}
Beispiel #16
0
static spif_bool_t
spif_url_init_from_unixaddr(spif_url_t self, spif_unixsockaddr_t unixaddr)
{
    ASSERT_RVAL(!SPIF_URL_ISNULL(self), FALSE);
    spif_str_init(SPIF_STR(self));
    spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS_VAR(url));
    self->proto = (spif_str_t) NULL;
    self->user = (spif_str_t) NULL;
    self->passwd = (spif_str_t) NULL;
    self->host = (spif_str_t) NULL;
    self->port = (spif_str_t) NULL;
    self->query = (spif_str_t) NULL;

    if (unixaddr->sun_path) {
        self->path = spif_str_new_from_ptr(SPIF_CHARPTR(unixaddr->sun_path));
    } else {
        self->path = (spif_str_t) NULL;
    }
    return TRUE;
}
Beispiel #17
0
Datei: str.c Projekt: mej/libast
spif_bool_t
spif_str_init_from_buff(spif_str_t self, spif_charptr_t buff, spif_stridx_t size)
{
    ASSERT_RVAL(!SPIF_STR_ISNULL(self), FALSE);
    /* ***NOT NEEDED*** spif_obj_init(SPIF_OBJ(self)); */
    spif_obj_set_class(SPIF_OBJ(self), SPIF_CLASS(SPIF_STRCLASS_VAR(str)));
    self->size = size;
    if (buff != (spif_charptr_t) NULL) {
        self->len = strnlen((const char *) buff, size);
    } else {
        self->len = 0;
    }
    if (self->size == self->len) {
        self->size++;
    }
    self->s = (spif_charptr_t) MALLOC(self->size);
    if (buff != (spif_charptr_t) NULL) {
        memcpy(self->s, buff, self->len);
    }
    self->s[self->len] = 0;
    return TRUE;
}