Пример #1
0
void
ms_clear(ms a)
{
    while (ms_delete(a, 0));
    free(a->items);
    ms_init(a, a->oninsert, a->onremove);
}
Пример #2
0
int
ms_remove(ms a, void *item)
{
    size_t i;

    for (i = 0; i < a->used; i++) {
        if (a->items[i] == item) return ms_delete(a, i);
    }
    return 0;
}
Пример #3
0
static void closeMouse(void)
{
  if (ms)
    {
      ms_setCallback(ms, 0);
      ms_close(ms);
      ms_delete(ms);
      ms= 0;
    }
}
Пример #4
0
void *
ms_take(ms a)
{
    void *item;

    if (!a->used) return NULL;

    a->last = a->last % a->used;
    item = a->items[a->last];
    ms_delete(a, a->last);
    ++a->last;
    return item;
}
Пример #5
0
int ms_refresh(ClipMachine* mp,SQLROWSET* rs,SQLSTMT* s,ClipVar* ap){
	MS_ROWSET *rowset = (MS_ROWSET*)rs;
	MS_STMT* stmt = (MS_STMT*)s;
	int i;
	unsigned long *lens;
	void **rec;
	int status;
	MYSQL_ROW row;

	ms_bindpars(stmt,ap);

	if(!stmt->sql){
		_clip_trap_err(mp, 0, 0, 0, subsys, ER_NOSQL, er_nosql);
		return -1;
	}

	status = mysql_query(stmt->conn->conn,stmt->sql);
	if(status){
		_clip_trap_err(mp, 0, 0, 0, subsys, ER_BADSTATEMENT,
			mysql_error(stmt->conn->conn));
		return -1;
	}
	stmt->res = mysql_use_result(stmt->conn->conn);

	row = mysql_fetch_row(stmt->res);
	if(row){
		rec = malloc(sizeof(void *) * rowset->nfields);

		lens = mysql_fetch_lengths(stmt->res);
		for(i=0;i<rowset->nfields;i++){
			if(row[i]){
				rec[i] = malloc(lens[i] + 4);
				*((int *) (rec[i])) = (int) lens[i];
				memcpy(((char *) rec[i]) + 4, row[i], lens[i]);
			} else {
				rec[i] = NULL;
			}
			if(rowset->data[rowset->recno-1][i])
				free(rowset->data[rowset->recno-1][i]);
		}
		free(rowset->data[rowset->recno-1]);
		rowset->data[rowset->recno-1] = rec;
	} else {
		ms_delete((SQLROWSET*)rowset);
		rowset->lastrec--;
		if(rowset->recno > rowset->lastrec)
			rowset->recno = rowset->lastrec;
	}
	return 0;
}