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; }
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); }
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); }
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); }
// // 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; }
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); }
void UDBIndex_free(UDBIndex *self) { UDBIndex_close(self); JFile_free(self->file); List_free(self->holes); free(self); }
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; }
END_TEST START_TEST (test_List_free_NULL) { List_free(NULL); }
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); }
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; }
__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; }
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); }
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); }
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; }
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; }
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)); }
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)); }
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; }
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; }
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__); }
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)); }
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; }
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); }
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; }
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; }
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); }
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; }
/************************************************************************ 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(); }
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); }