Exemplo n.º 1
0
CLIP_DLLEXPORT void
destroy_c_object(void *item)
{
	C_object *co = (C_object *) item;
	/* alena add for some object*/
	C_signal *cs, *csnext;

//printf("destroy object %s\n", co->type_name);
	if (!co) return;
	if (co->destroy)
		co->destroy(co->cmachine, co);
	if (co->object)
		_list_remove_cwidget(co->cmachine, co->object);
	_clip_destroy(co->cmachine, &co->obj);

	for (cs = co->siglist; cs;)
	{
		csnext = cs->next;
                //printf("destroy signal %s \n", cs->signame);
		_clip_destroy(co->cmachine, &cs->cfunc);
		if (cs) free(cs);
		cs = csnext;
	}

	_clip_destroy_c_item(co->cmachine, co->handle, _C_ITEM_TYPE_WIDGET);
	free(co);
}
Exemplo n.º 2
0
CLIP_DLLEXPORT void
destroy_c_widget(void *item)
{
	C_widget *cw = (C_widget *) item;
	C_signal *cs, *csnext;

//printf("destroy widget %s\n", cw->type_name);
	if (!cw) return;
	if (cw->destroy)
		cw->destroy(cw->cmachine, cw);
	if (cw->widget)
		_list_remove_cwidget(cw->cmachine, cw->widget);
	_clip_destroy(cw->cmachine, &cw->obj);
	for (cs = cw->siglist; cs;)
	{
		csnext = cs->next;
		_clip_destroy(cw->cmachine, &cs->cfunc);
		if (cs) free(cs);
		cs = csnext;
	}
        if (cs) free(cs);

	_clip_destroy_c_item(cw->cmachine, cw->handle, _C_ITEM_TYPE_WIDGET);
	free(cw);
//printf("destroy ok \n");
}
Exemplo n.º 3
0
int dbtcp_fetch(ClipMachine* cm,SQLROWSET* rs,int recs,ClipVar* eval,int every,ClipVar* ors){
	DBTCP_ROWSET* rowset = (DBTCP_ROWSET*)rs;
	DBTCP_CONN* conn = rowset->conn;
	DBTCP_STMT* stmt = rowset->stmt;
	int i,j,er = 0,r;
	void **rec;

	if(rowset->done)
		return 0;

	if(!recs)
		recs = 0x7fffffff;
	for(j=0;j<recs;j++){
		r = dbftp_fetch_row(conn->conn);
		if(r == FETCH_EOF)
			goto done;
		else if(r == FETCH_ERROR){
			dbtcp_error(cm,conn->loc,ER_FETCH,conn->conn,NULL);
			er = 1;
			goto done;
		}
		rowset->loaded++;
		rec = calloc(rowset->nfields,sizeof(void*));

		for(i=0;i<rowset->nfields;i++){
			char* tmp = dbftp_fetch_value(conn->conn,i);
			int len = strlen(tmp);
			rec[i] = calloc(1,len+sizeof(int));
			*(int*)rec[i] = len;
			memcpy((char*)rec[i]+4,tmp,len);
		}

		rowset->data = realloc(rowset->data,rowset->loaded*sizeof(void*));
		rowset->data[rowset->loaded - 1] = rec;
		if(eval && (eval->t.type == CCODE_t || eval->t.type == PCODE_t) && !(rowset->loaded % every)){
			ClipVar var,*v;
			if(_clip_eval(cm,eval,1,ors,&var)){
				_clip_destroy(cm,&var);
				er = 1;
				goto done;
			}
			v = _clip_vptr(&var);
			if(v->t.type == LOGICAL_t && !v->l.val){
				_clip_destroy(cm,&var);
				goto done;
			}
			_clip_destroy(cm,&var);
		}
	}
	return 0;
done:
	rowset->lastrec = rowset->loaded;
	rowset->done = 1;
	if(!rowset->lastrec){
		rowset->bof = rowset->eof = 1;
		rowset->recno = 0;
	}
	_clip_destroy_c_item(cm,stmt->stmt_item,_C_ITEM_TYPE_SQL);
	return er;
}
Exemplo n.º 4
0
int
clip_RDDCLOSEALL(ClipMachine * ClipMachineMemory)
{
   const char *__PROC__ = "RDDCLOSEALL";

   RDD_DATA *rd;

   int key, i, er;

   for (i = 0; i < ClipMachineMemory->container->len_of_Container; i++)
   {
      if (ClipMachineMemory->container->ContainerItem_items_of_Container[i].type_of_ContainerItem == _C_ITEM_TYPE_RDD)
      {
	 rd = (RDD_DATA *) ClipMachineMemory->container->ContainerItem_items_of_Container[i].item_of_ContainerItem;
	 if (rd->ClipMachineMemory == ClipMachineMemory && rd->area == -1)
	 {
	    key = ClipMachineMemory->container->ContainerItem_items_of_Container[i].key_of_ContainerItem;
	    if ((er = rdd_flushbuffer(ClipMachineMemory, rd, __PROC__)))
	       goto err;
	    if (rd->readonly)
	       rd->vtbl->_rlock(ClipMachineMemory, rd, __PROC__);
	    else
	       rd->vtbl->_wlock(ClipMachineMemory, rd, __PROC__);
	    if ((er = rdd_closearea(ClipMachineMemory, rd, __PROC__)))
	       goto err;
	    _clip_destroy_c_item(ClipMachineMemory, key, _C_ITEM_TYPE_RDD);
	    rd = (RDD_DATA *) _clip_fetch_c_item_type(ClipMachineMemory, _C_ITEM_TYPE_RDD, &key);
	 }
      }
   }
   return 0;
 err:
   return er;
}
Exemplo n.º 5
0
int
clip_RGCANCEL(ClipMachine * ClipMachineMemory)
{
   int item = _clip_parni(ClipMachineMemory, 1);	/* container pattern */

   _clip_destroy_c_item(ClipMachineMemory, item, _C_ITEM_TYPE_REGEX);
   return 0;
}
Exemplo n.º 6
0
int ms_fetch(ClipMachine* mp,SQLROWSET* rs,int recs,ClipVar* eval,int every,ClipVar* ors){
	MS_ROWSET* rowset = (MS_ROWSET*)rs;
	MS_STMT* stmt = rowset->stmt;
	MYSQL_ROW row;
	int i,j,er = 0;
	unsigned long *lens;
	void **rec;

	if(rowset->done)
		return 0;

	if(!recs)
		recs = 0x7fffffff;
	for(j=0;j<recs;j++){
		row = mysql_fetch_row(stmt->res);
		if(!row)
			goto done;
		rowset->loaded++;
		rec = calloc(rowset->nfields,sizeof(void*));

		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;
			}
		}
		rowset->data = realloc(rowset->data,rowset->loaded*sizeof(void*));
		rowset->data[rowset->loaded - 1] = rec;
		if(eval && (eval->t.type == CCODE_t || eval->t.type == PCODE_t) && !(rowset->loaded % every)){
			ClipVar var,*v;
			if(_clip_eval(mp,eval,1,ors,&var)){
				_clip_destroy(mp,&var);
				er = 1;
				goto done;
			}
			v = _clip_vptr(&var);
			if(v->t.type == LOGICAL_t && !v->l.val){
				_clip_destroy(mp,&var);
				goto done;
			}
			_clip_destroy(mp,&var);
		}
	}
	return 0;
done:
	rowset->lastrec = rowset->loaded;
	rowset->done = 1;
	if(!rowset->lastrec){
		rowset->bof = rowset->eof = 1;
		rowset->recno = 0;
	}
	_clip_destroy_c_item(mp,stmt->stmt_item,_C_ITEM_TYPE_SQL);
	return er;
}
Exemplo n.º 7
0
static int
_clip_sockclose(ClipMachine *mp)
{
	int fd = _clip_parni(mp, 1);
	C_FILE *cf = (C_FILE *) _clip_fetch_c_item(mp, fd, _C_ITEM_TYPE_FILE);
	int ret = -1, *err = _clip_fetch_item(mp, HASH_ferror);
	fd_set rfds;
	struct timeval tv;
	int arg;

	if (cf == NULL || cf->type != FT_SOCKET)
	{
		*err = EBADF;
	}
	arg = fcntl(cf->fileno, F_GETFL, 0);
	if(!(arg & O_NONBLOCK))
	{
		FD_ZERO(&rfds);
		FD_SET(cf->fileno,&rfds);
		tv.tv_sec = 1; //timeout / 1000;
		tv.tv_usec = 100; //(timeout % 1000) * 1000;
		select(cf->fileno+1,&rfds,NULL,NULL,&tv);
	}
	if (_clip_destroy_c_item(mp, fd, _C_ITEM_TYPE_FILE))
	{
		*err = ret = 0;
	}
	else
	{
		*err = errno;
	}

	/* _clip_retni(mp, ret); TODO? What type of value should return */
	_clip_retl(mp, (ret == 0));
	return 0;
}
Exemplo n.º 8
0
int
rdd_ii_closetag(ClipMachine * ClipMachineMemory, int h, const char *__PROC__)
{
   RDD_ORDER *ro = (RDD_ORDER *) _clip_fetch_c_item(ClipMachineMemory, h, _C_ITEM_TYPE_I_ORDER);

   int i;

   CHECKIO(ro);
   for (i = 0; i < ro->index->norders; i++)
   {
      if (ro->index->orders[i] == ro)
      {
	 for (i++; i < ro->index->norders; i++)
	 {
	    ro->index->orders[i - 1] = ro->index->orders[i];
	 }
      }
   }
   ro->index->norders--;
   ro->index->orders = (RDD_ORDER **) realloc(ro->index->orders, ro->index->norders * sizeof(RDD_ORDER *));
   destroy_rdd_order(ClipMachineMemory, ro);
   _clip_destroy_c_item(ClipMachineMemory, h, _C_ITEM_TYPE_I_ORDER);
   return 0;
}
Exemplo n.º 9
0
Arquivo: com.c Projeto: amery/clip-itk
int
clip_COM_CLOSE(ClipMachine * mp)
{
	v24_port_t *gz;
	int fd = _clip_parni(mp, 1);
	int ret = -1, *err = _clip_fetch_item(mp, HASH_ferror);

	if (fd < 1 || fd > 32)
		return EG_ARG;
	fd = keys[fd];

	gz = (v24_port_t *) _clip_fetch_c_item(mp, fd, _C_ITEM_TYPE_COMPORT);

	if (gz == NULL)
		return EG_ARG;
	else if (_clip_destroy_c_item(mp, fd, _C_ITEM_TYPE_COMPORT))
	{
		ret = 0;
		*err = 0;
	}

	_clip_retl(mp, (ret == 0));
	return 0;
}
Exemplo n.º 10
0
int pg_fetch(ClipMachine* mp,SQLROWSET* rs,int recs,ClipVar* eval,int every,ClipVar* ors){
	PG_ROWSET* rowset = (PG_ROWSET*)rs;
	PG_STMT* stmt = rowset->stmt;
	int i,j,er = 0,len;
	void **rec;

	if(rowset->done)
		return 0;

	if(!recs)
		recs = 0x7fffffff;

	for(i=0;i<recs;i++){
		if(rowset->loaded == rowset->lastrec)
			goto done;
		rec = calloc(rowset->nfields,sizeof(void*));
		for(j=0;j<rowset->nfields;j++){
			if(!PQgetisnull(stmt->res,rowset->loaded,j)){
				len = PQgetlength(stmt->res,rowset->loaded,j);
				if(rowset->binary){
					rec[j] = malloc(len+4);
					*((int*)(rec[j])) = len;
					memcpy(((char*)rec[j])+4,
						PQgetvalue(stmt->res,rowset->loaded,j),len);
				} else {
					rec[j] = malloc(len+1);
					memcpy(rec[j],PQgetvalue(stmt->res,rowset->loaded,j),len);
					((char*)(rec[j]))[len] = 0;
				}
			} else {
				rec[j] = NULL;
			}
		}
		rowset->data[rowset->loaded] = rec;
		rowset->loaded++;
		if(eval && (eval->t.type == CCODE_t || eval->t.type == PCODE_t) && !(rowset->loaded % every)){
			ClipVar var,*v;
			if(_clip_eval(mp,eval,1,ors,&var)){
				_clip_destroy(mp,&var);
				er = 1;
				goto done;
			}
			v = _clip_vptr(&var);
			if(v->t.type == LOGICAL_t && !v->l.val){
				_clip_destroy(mp,&var);
				goto done;
			}
			_clip_destroy(mp,&var);
		}
	}
	return 0;
done:
	rowset->lastrec = rowset->loaded;
	rowset->done = 1;
	if(!rowset->lastrec){
		rowset->bof = rowset->eof = 1;
		rowset->recno = 0;
	}
	_clip_destroy_c_item(mp,stmt->stmt_item,_C_ITEM_TYPE_SQL);
	return er;
}