Exemplo n.º 1
0
int Redirect_List(const char* path, void* buffer, fuse_fill_dir_t filler, off_t offset, struct fuse_file_info* file_info) {
    const char* userPath = UserDir();
    List* L;
    if(userPath == NULL) {
        L = ListFiles(rootDir, path);
    } else {
        List* lists[3];
        lists[0] = ListFiles(userPath, path);
        lists[1] = ListFiles(rootDir, path);
        lists[2] = NULL;
        free((void*)userPath);
        L = join_lists(lists);
    }
    for (int i=0; i<L->length; i++) {
        struct stat st;
        memset(&st, 0, sizeof(st));
        if(stat(L->str[i], &st) == -1) {
            List_free(L);
            return -errno;
        }
        const char* name = last_term(L->str[i]);
        int result = filler(buffer, name, &st, 0);
        free((void*)name);
        if(result != 0) break;
    }
    List_free(L);
    return 0;
}
Exemplo n.º 2
0
void Command_free(T *C) {
        assert(C && *C);
        freeStrings((*C)->args);
        List_free(&(*C)->args);
        freeStrings((*C)->env);
        List_free(&(*C)->env);
        FREE((*C)->working_directory);
        FREE(*C);
}
Exemplo n.º 3
0
void IoAudioMixer_free(IoAudioMixer *self) 
{ 
	List_free(DATA(self)->sounds);
	List_free(DATA(self)->soundsToRemove);
	List_free(DATA(self)->events);
	List_free(DATA(self)->activeEvents);
	UArray_free(DATA(self)->mixBuffer);
	SoundTouch_free(DATA(self)->soundTouch);
	free(self->data); 
}
Exemplo n.º 4
0
Arquivo: IoLexer.c Projeto: Akiyah/io
void IoLexer_free(IoLexer *self)
{
	IoLexer_clear(self);
	io_free(self->s);
	Stack_free(self->posStack);
	Stack_free(self->tokenStack);
	List_free(self->tokenStream);
	List_free(self->charLineIndex);
	if(self->errorDescription) io_free(self->errorDescription);
	io_free(self);
}
Exemplo n.º 5
0
//
// Reading files
//
const char* FindActualFile(const char* base, const char* path) {
    List* Packages = ls(base);
    for(int i=0; i<Packages->length; i++) {
        const char* array[5] = {base, Packages->str[i], "/", path, NULL};
        const char* subPath = join(array);
        if(access(subPath, F_OK) != -1) {
            List_free(Packages);
            return subPath;
        }
    }
    List_free(Packages);
    return NULL;
}
Exemplo n.º 6
0
END_TEST


START_TEST (test_List_findIf)
{
  List_t *list;

  const char *foo = "foo";
  const char *bar = "bar";
  const char *baz = "baz";
  const char *bop = "bop";


  List_add(L, (void *) foo);
  List_add(L, (void *) bop);

  list = List_findIf(L, myPredicate);

  fail_unless( list            != NULL );
  fail_unless( List_size(list) == 0    );

  List_free(list);

  List_add(L, (void *) foo);
  List_add(L, (void *) bar);
  List_add(L, (void *) baz);
  List_add(L, (void *) bop);

  list = List_findIf(L, myPredicate);

  fail_unless( list              != NULL );
  fail_unless( List_size(list)   == 2    );
  fail_unless( List_get(list, 0) == bar  );
  fail_unless( List_get(list, 1) == baz  );

  List_free(list);

  List_add(L, (void *) baz);

  list = List_findIf(L, myPredicate);

  fail_unless( list              != NULL );
  fail_unless( List_size(list)   == 3    );
  fail_unless( List_get(list, 0) == bar  );
  fail_unless( List_get(list, 1) == baz  );
  fail_unless( List_get(list, 2) == baz  );

  List_free(list);
}
Exemplo n.º 7
0
void UDBIndex_free(UDBIndex *self)
{
	UDBIndex_close(self);
	JFile_free(self->file);
	List_free(self->holes);
	free(self);
}
Exemplo n.º 8
0
IoMessage *IoMessage_opShuffle(IoMessage *self, IoObject *locals, IoMessage *m)
{
	Levels *levels = Levels_new(self);
	List *expressions = List_new();

	List_push_(expressions, self);

	while (List_size(expressions) >= 1)
	{
		IoMessage *n = List_pop(expressions);

		do
		{
			Levels_attach(levels, n, expressions);
			List_appendSeq_(expressions, DATA(n)->args);
		} while ((n = DATA(n)->next));

		Levels_nextMessage(levels);
	}

	List_free(expressions);
	Levels_free(levels);

	return self;
}
Exemplo n.º 9
0
END_TEST


START_TEST (test_List_free_NULL)
{
  List_free(NULL);
}
Exemplo n.º 10
0
void Staff_manage()
{
	char dirname[] = "./Date/Staff.txt";
	FILE *fp;
	pList head;
	int n,count;
	fp = File_open(dirname);
	head = File_read(fp,sizeof(struct staff_t));
	count = List_count(head);
	while(1)
	{	 
		system("cls");
		printf("\n\n\n\t\t\t员工管理界面\n\n");
		printf("\t\t\t1、增加员工\n\n"); 
		printf("\t\t\t2、删除员工\n\n");
		printf("\t\t\t3、修改员工\n\n"); 
		printf("\t\t\t4、查询员工\n\n"); 
		printf("\t\t\t5、返回\n\n"); 
		printf("\t\t\t请输入要操作的功能:");
		n = glb_putString(NULL,'1','5',1,2);
		switch(n)
		{
		case 1:	
			List_print(head,staff_print);
			File_add(fp,head,sizeof(struct staff_t),staff_add);
			List_print(head,staff_print);		
			break;
		case 2:
			List_print(head,staff_print);
			File_remove(fp,head,sizeof(struct staff_t),staff_remove);
			head = File_read(fp,sizeof(struct staff_t));
			List_print(head,staff_print);			
			break;
		case 3:
			List_print(head,staff_print);
			File_updata(fp,head,sizeof(struct staff_t),staff_updata);
			head = File_read(fp,sizeof(struct staff_t));
			List_print(head,staff_print);		
			break;
		case 4:  
			staff_search(head);			
			break;
		case 5:
			break;
		}
		if (n == 5)
		{
			break;
		}
		else
		{
            printf("\n按<Esc>键返回...");
			while(getch() != 27)
			{}
		}
		
		
	}
	List_free(head);
}
Exemplo n.º 11
0
char * DvdTitleActorExpression_interpret(DvdExpression_t * d, DvdInterpreterContext_t * ctx) 
{
	List_T titlesAndActors = DvdInterpreterContext_getTitlesForActor(ctx, (char *)(d->pdata) );
	char * retval = List_csv_str( titlesAndActors );
	List_free( &titlesAndActors );
	return retval;
}
Exemplo n.º 12
0
__declspec(dllexport) void* curl_shim_multi_info_read(void* pvHandle,
    int* nMsgs)
{
    // cast return from GetProcAddress as a CPROC
    List_T lst = NULL;
    CPVPROC pcp = (CPVPROC)GetProcAddress(g_hModCurl,
        "curl_multi_info_read");
    void* pvItem;
    int i, nLocalMsgs, j = 0;
    unsigned int *pnReturn = NULL;
    unsigned int *pnItem;

    *nMsgs = 0;
    while ((pvItem = pcp(pvHandle, &nLocalMsgs)) != NULL)
        lst = List_push(lst, pvItem);

    *nMsgs = List_length(lst);
    if (*nMsgs == 0)
        return NULL;
    pnReturn = (unsigned int*)malloc(3 * (*nMsgs) * sizeof(unsigned int));
    for (i = 0; i < (*nMsgs); i++)
    {
        lst = List_pop(lst, (void**)&pnItem);
        pnReturn[j++] = pnItem[0];
        pnReturn[j++] = pnItem[1];
        pnReturn[j++] = pnItem[2];            
    }
    List_free(&lst);
    return pnReturn;
}
Exemplo n.º 13
0
void Table_manage()
{
	char dirname[] = "./Date/Table.txt";
	FILE *fp;
	pList head;
	int n;
	fp = File_open(dirname);
	head = File_read(fp,sizeof(struct Table_t));
	while(1)
	{	 
		system("cls");
		printf("\n\n\n\t\t\t台桌管理界面\n\n");
		printf("\t\t\t1、增加台桌\n\n"); 
		printf("\t\t\t2、删除台桌\n\n");
		printf("\t\t\t3、修改台桌\n\n"); 
		printf("\t\t\t4、查询台桌\n\n"); 
		printf("\t\t\t5、返回\n\n"); 
		printf("\t\t\t请输入您要操作的功能:");
	    n = glb_putString(NULL,'1','5',1,2);
		switch(n)
		{
		case 1:	
			List_print(head,Table_print);
			File_add(fp,head,sizeof(struct Table_t),Table_add);
			head = File_read(fp,sizeof(struct Table_t));
			List_print(head,Table_print);			
			break;
		case 2:
			List_print(head,Table_print);
			File_remove(fp,head,sizeof(struct Table_t),Table_remove);
			head = File_read(fp,sizeof(struct Table_t));
			List_print(head,Table_print);
			break;
		case 3:
			List_print(head,Table_print);
			File_updata(fp,head,sizeof(struct Table_t),Table_updata);
		    head = File_read(fp,sizeof(struct Table_t));
			List_print(head,Table_print);
			break;
		case 4: 
		    Table_search(head,3,4);
			break;
		case 5:
			break;
		}
		if (n == 5)
		{
			break;
		}
		else
		{
            printf("\n按<Esc>键返回...");
			while(getch() != 27)
			{}
		}
		
	}
	  List_free(head);
}
Exemplo n.º 14
0
void Menu_manage()
{
	char dirname[] = "./Date/Menu.txt";
	FILE *fp;
	pList head;
	int n;
	fp = File_open(dirname);
	head = File_read(fp,sizeof(struct Menu_t));
	while(1)
	{	 
		system("cls");
		printf("\n\n\n\t\t\t菜谱管理界面\n\n");
		printf("\t\t\t1、增加菜谱\n\n"); 
		printf("\t\t\t2、删除菜谱\n\n");
		printf("\t\t\t3、修改菜谱\n\n"); 
		printf("\t\t\t4、查询菜谱\n\n"); 
		printf("\t\t\t5、返回\n\n"); 
		printf("\t\t\t请输入您要操作的功能:");
	    n = glb_putString(NULL,'1','5',1,2);
		switch(n)
		{
		case 1:	
			List_print(head,Menu_print);
			File_add(fp,head,sizeof(struct Menu_t),Menu_add);
			head = File_read(fp,sizeof(struct Menu_t));
			List_print(head,Menu_print);
			break;
		case 2:
			List_print(head,Menu_print);
			File_del(fp,dirname,head,sizeof(struct Menu_t),Menu_del);
			List_print(head,Menu_print);
			break;
		case 3:
			List_print(head,Menu_print);
			File_updata(fp,head,sizeof(struct Menu_t),Menu_updata);
		    head = File_read(fp,sizeof(struct Menu_t));
			List_print(head,Menu_print);
			break;
		case 4: 
	
		    Menu_search(head);
			break;
		case 5:
			break;
		}
		if (n == 5)
		{
			break;
		}
		else
		{
            printf("\n按<Esc>键返回...");
			while(getch() != 27)
			{}
		}
		
	}
	  List_free(head);
}
Exemplo n.º 15
0
Arquivo: IoList.c Projeto: doublec/io
IoList *IoList_newWithList_(void *state, List *list)
{
	IoList *self = IoList_new(state);
	//printf("IoList_newWithList_ %p %p\n", (void *)self, (void *)list);
	List_free(IoObject_dataPointer(self));
	IoObject_setDataPointer_(self, list);
	return self;
}
Exemplo n.º 16
0
Arquivo: test2.c Projeto: OPSF/uClinux
int main()
{
  List_init(&l, sizeof(int));

  A(5); A(4); A(3); A(2); A(1); A(0);
  assert(P(0)==0 && P(1)==1 && P(2)==2 && P(3)==3 && P(4)==4 && P(5)==5 && P0(6));

  assert(CMP(S(5), 5) && CMP(S(2), 2) && CMP(S(0), 0));
  assert(CMP(S(42),-1));

  assert(CMP(SSO_F(5), 5));
  assert(P(0)==5 && P(1)==0 && P(2)==1 && P(3)==2 && P(4)==3 && P(5)==4 && P0(6));

  assert(CMP(SSO_F(5), 5));
  assert(P(0)==5 && P(1)==0 && P(2)==1 && P(3)==2 && P(4)==3 && P(5)==4 && P0(6));

  assert(CMP(SSO_F(0), 0));
  assert(P(0)==0 && P(1)==5 && P(2)==1 && P(3)==2 && P(4)==3 && P(5)==4 && P0(6));

  assert(CMP(SSO_F(4), 4));
  assert(P(0)==4 && P(1)==0 && P(2)==5 && P(3)==1 && P(4)==2 && P(5)==3 && P0(6));

  assert(CMP(SSO_F(5), 5));
  assert(P(0)==5 && P(1)==4 && P(2)==0 && P(3)==1 && P(4)==2 && P(5)==3 && P0(6));
  
  assert(CMP(SSO_F(42),-1));
  assert(P(0)==5 && P(1)==4 && P(2)==0 && P(3)==1 && P(4)==2 && P(5)==3 && P0(6));


  
  assert(CMP(SSO_S(3), 3));
  assert(P(0)==5 && P(1)==4 && P(2)==0 && P(3)==1 && P(4)==3 && P(5)==2 && P0(6));
  
  assert(CMP(SSO_S(3), 3));
  assert(P(0)==5 && P(1)==4 && P(2)==0 && P(3)==3 && P(4)==1 && P(5)==2 && P0(6));

  assert(CMP(SSO_S(5), 5));
  assert(P(0)==5 && P(1)==4 && P(2)==0 && P(3)==3 && P(4)==1 && P(5)==2 && P0(6));

  assert(CMP(SSO_S(4), 4));
  assert(P(0)==4 && P(1)==5 && P(2)==0 && P(3)==3 && P(4)==1 && P(5)==2 && P0(6));

  assert(CMP(SSO_S(0), 0));
  assert(P(0)==4 && P(1)==0 && P(2)==5 && P(3)==3 && P(4)==1 && P(5)==2 && P0(6));

  assert(CMP(SSO_S(0), 0));
  assert(P(0)==0 && P(1)==4 && P(2)==5 && P(3)==3 && P(4)==1 && P(5)==2 && P0(6));

  assert(CMP(SSO_S(0), 0));
  assert(P(0)==0 && P(1)==4 && P(2)==5 && P(3)==3 && P(4)==1 && P(5)==2 && P0(6));
  
  assert(CMP(SSO_S(42), -1));
  assert(P(0)==0 && P(1)==4 && P(2)==5 && P(3)==3 && P(4)==1 && P(5)==2 && P0(6));

  List_free(&l);

  return EXIT_SUCCESS;
}
Exemplo n.º 17
0
void IoEventManager_free(IoEventManager *self)
{
	// we don't free libevent since it's global and there
	// may be other stuff (possibly other IoStates) in the process
	// using it
	List_free(DATA(self)->activeEvents);

	free(IoObject_dataPointer(self));
}
Exemplo n.º 18
0
void IoCInvokeStructure_free(IoCInvokeStructure *self)
{
	if(DATA(self)->structure) {
		free(DATA(self)->structure);
	}
	if(DATA(self)->types) {
		List_free(DATA(self)->types);
	}
	free(DATA(self));
}
Exemplo n.º 19
0
static void applyprinttable( const void * key, void ** names, void *cl)
{
    (void) key;
    if( List_length(*names) > 1 ){ //fgroups must have at least 2 names.
        List_map(*names, applyprintlist, NULL); //names is a pointer to a list.
        printf("\n");
    }
    List_map( *names , applyFree, NULL );
    List_free(*names);
    (void) cl;
}
Exemplo n.º 20
0
void
Datadir_avail_maps (FILE *fp, char *user_mapdir, char *genomesubdir, char *fileroot) {
  char *mapdir;
  struct dirent *entry;
  char *filename;
  DIR *dp;
  List_T maps = NULL;
  char **array;
  int n, i;

  mapdir = Datadir_find_mapdir(user_mapdir,genomesubdir,fileroot);
  fprintf(fp,"Available maps in directory %s:\n",mapdir);

  if ((dp = opendir(mapdir)) == NULL) {
    fprintf(stderr,"Unable to open mapdir %s\n",mapdir);
    exit(9);
  }
  while ((entry = readdir(dp)) != NULL) {
    if (entry->d_name[0] != '.') {
      filename = (char *) CALLOC(strlen(mapdir)+strlen("/")+strlen(entry->d_name)+1,
				 sizeof(char));
      sprintf(filename,"%s/%s",mapdir,entry->d_name);
      
      if (Access_file_exists_p(filename) == true) {
	FREE(filename);
	filename = (char *) CALLOC(strlen(entry->d_name)+1,sizeof(char));
	strcpy(filename,entry->d_name);
	maps = List_push(maps,(void *) filename);
      } else {
	FREE(filename);
      }
    }
  }
  if (closedir(dp) < 0) {
    fprintf(stderr,"Unable to close mapdir %s\n",mapdir);
  }

  if ((n = List_length(maps)) == 0) {
    fprintf(fp,"  (none found)\n");
  } else {
    array = (char **) List_to_array(maps,NULL);
    qsort(array,n,sizeof(char *),strcmp_cmp);
    for (i = 0; i < n; i++) {
      fprintf(fp,"%s\n",array[i]);
      FREE(array[i]);
    }
    FREE(array);
    List_free(&maps);
  }

  FREE(mapdir);
  return;

}
Exemplo n.º 21
0
Arquivo: list.c Projeto: edma2/legolas
void List_test(void) {
  List *np, *head = NULL;
  int i;

  for (i = 0; i < 10; i++) {
    List_append(&head, (void *)i);
  }
  np = head;
  for (i = 0; i < 10; i++) {
    assert((int)np->data == i);
    np = np->next;
  }

  List_free(&head, NULL);
  // make sure free empty list doesn't choke
  head = NULL;
  List_free(&head, NULL);

  printf("%s: All tests pass.\n", __FILE__);
}
Exemplo n.º 22
0
void IoMessage_free(IoMessage *self)
{
	//IoMessageData *d = (IoMessageData *)IoObject_dataPointer(self);
	
	if (DATA(self)->args)
	{
		List_free(DATA(self)->args);
	}

	io_free(IoObject_dataPointer(self));
}
Exemplo n.º 23
0
void
Diagpool_free (T *old) {
  List_T p;
  struct Diag_T *diagptr;
  struct List_T *listcellptr;

  if (*old) {
    for (p = (*old)->diagchunks; p != NULL; p = List_next(p)) {
      diagptr = (struct Diag_T *) List_head(p);
      FREE(diagptr);
    }
    List_free(&(*old)->diagchunks);
    for (p = (*old)->listcellchunks; p != NULL; p = List_next(p)) {
      listcellptr = (struct List_T *) List_head(p);
      FREE(listcellptr);
    }
    List_free(&(*old)->listcellchunks);
    FREE(*old);
  }
  return;
}
Exemplo n.º 24
0
IoObject *IoThread_threadCount(IoObject *self, IoObject *locals, IoMessage *m)
{
	Thread_Init();
	List *threads;
	size_t count;

	threads = Thread_Threads();
	count = List_size(threads);
	List_free(threads);

	return IONUMBER(count);
}
Exemplo n.º 25
0
void
Matchpool_free (T *old) {
  List_T p;
  struct Match_T *matchptr;
  struct List_T *listcellptr;

  if (*old) {
    for (p = (*old)->matchchunks; p != NULL; p = List_next(p)) {
      matchptr = (struct Match_T *) List_head(p);
      FREE(matchptr);
    }
    List_free(&(*old)->matchchunks);
    for (p = (*old)->listcellchunks; p != NULL; p = List_next(p)) {
      listcellptr = (struct List_T *) List_head(p);
      FREE(listcellptr);
    }
    List_free(&(*old)->listcellchunks);
    FREE(*old);
  }
  return;
}
Exemplo n.º 26
0
void
Pairpool_free (T *old) {
  List_T p;
  struct Pair_T *pairptr;
  struct List_T *listcellptr;

  if (*old) {
    for (p = (*old)->pairchunks; p != NULL; p = List_next(p)) {
      pairptr = (struct Pair_T *) List_head(p);
      FREE(pairptr);
    }
    List_free(&(*old)->pairchunks);
    for (p = (*old)->listcellchunks; p != NULL; p = List_next(p)) {
      listcellptr = (struct List_T *) List_head(p);
      FREE(listcellptr);
    }
    List_free(&(*old)->listcellchunks);
    FREE(*old);
  }
  return;
}
Exemplo n.º 27
0
Arquivo: IoList.c Projeto: doublec/io
void IoList_free(IoList *self)
{
	if (NULL == DATA(self))
	{
		printf("IoList_free(%p) already freed\n", (void *)self);
		exit(1);
	}
	//printf("IoList_free(%p) List_free(%p)\n", (void *)self, (void *)DATA(self));

	List_free(DATA(self));
	IoObject_setDataPointer_(self, NULL);

}
Exemplo n.º 28
0
void
Datadir_avail_gmap_databases (FILE *fp, char *user_genomedir) {
  char *genomedir;
  struct dirent *entry;
  char *filename;
  DIR *dp;
  List_T databases = NULL;
  char **array;
  int n, i;

  genomedir = Datadir_find_genomedir(user_genomedir);
  fprintf(fp,"Available gmap databases in directory %s:\n",genomedir);

  if ((dp = opendir(genomedir)) == NULL) {
    fprintf(stderr,"Unable to open genomedir %s\n",genomedir);
    exit(9);
  }
  while ((entry = readdir(dp)) != NULL) {
    filename = (char *) CALLOC(strlen(genomedir)+strlen("/")+strlen(entry->d_name)+strlen("/")+
			       strlen(entry->d_name)+strlen(".version")+1,sizeof(char));
    sprintf(filename,"%s/%s/%s.version",genomedir,entry->d_name,entry->d_name);
    if (Access_file_exists_p(filename) == true) {
      FREE(filename);
      filename = (char *) CALLOC(strlen(entry->d_name)+1,sizeof(char));
      strcpy(filename,entry->d_name);
      databases = List_push(databases,(void *) filename);
    } else {
      FREE(filename);
    }
  }
  if (closedir(dp) < 0) {
    fprintf(stderr,"Unable to close genomedir %s\n",genomedir);
  }

  if ((n = List_length(databases)) == 0) {
    fprintf(fp,"  (none found)\n");
  } else {
    array = (char **) List_to_array(databases,NULL);
    qsort(array,n,sizeof(char *),strcmp_cmp);
    for (i = 0; i < n; i++) {
      fprintf(fp,"%s\n",array[i]);
      FREE(array[i]);
    }
    FREE(array);
    List_free(&databases);
  }

  FREE(genomedir);
  return;
}
Exemplo n.º 29
0
/************************************************************************
void turnover_search(pList  pTable)
营业额查询
************************************************************************/
void turnover_search(pList  pTable)
{
  FILE *fp;
  pList pOrder,pt;
  struct Order_t *data;
  long *stardate,*enddate;
  long ordernum;// 订单号
  int a,b,c;// 用来打印年月日
  long money = 0;// 总营业额
  stardate = (long *)malloc(sizeof(long));// 开始日期
  enddate = (long *)malloc(sizeof(long));// 结束日期
  fp = File_open("./Date/Order/Order.txt");
  pOrder = File_read(fp,sizeof(struct Order_t));// 读出已买订单链表

  system("cls");
  printf("\n\t\t\t(1):当天查询\n");
  printf("\n\t\t\t(2):历史查询\n");
  printf("\n\t\t\t请输入要选择的功能:");
  if (glb_putString(NULL,'1','2',1,2) == 1)
  {
	  system("cls");
	  *stardate = Ordernum_get(NULL,NULL);// 获取当前系统日期
	  *enddate = *stardate;
  }
  else
  {
      Orderdate_input(stardate,enddate);// 输入开始和结束日期
	  printf("\n");
  }
 
  printf("\t\t%-16s%-18s%-11s\n","订单号","时间","金额");
  pt = pOrder->pNext;
  while (pt)
  {
	  data = (struct Order_t *)(pt->pData);
	  sscanf(data->ordernum,"%8ld",&ordernum);// 字符串转化成长整型
	  if ((strcmp(data->acname,acName) == 0)&&((ordernum <= *enddate) && (ordernum >= *stardate)))//
	  {
		  money = money + (data->money);// 营业额累加
         sscanf(data->ordernum,"%4d%2d%2d",&a,&b,&c);//分别取出年月日
		 printf("\t\t%-16s%d%s%2d%s%2d%-6s%s%d\n",data->ordernum,a,"年",b,"月",c,"日","¥",data->money);		 
	  }
	  pt = pt->pNext;
  } 
      printf("\n\t\t营业额总额:¥%ld\n",money);
      List_free(pOrder);
	  printf("\n\t\t按任意键返回...");
	  getch();
}
Exemplo n.º 30
0
static void _remove_group(Table_T items, List_T group, bool timeout) {
    if (group == NULL) return;
    item_ **gitems = (item_ **) List_toArray(group, NULL);
    if (gitems == NULL) return;
    size_t sz = List_length(group);
    for (int i = 0; i < sz; i++) {
        item_ *gitem = gitems[i];
        gitem->group = NULL; 
        if (i > 0) {
            //don't run 'em twice
            gitem->match_handler = NULL;
            gitem->timeout_handler = NULL;
        }
        _remove_item(items, gitem, timeout);
    }
    Mem_free(gitems, __FILE__, __LINE__);
    List_free(&group);
}