int main(int argc, char *argv[]) { el *name, *elt, *tmp, etmp; el *head = NULL; /* important- initialize to NULL! */ char linebuf[BUFLEN]; FILE *file; file = fopen( "test11.dat", "r" ); if (file == NULL) { perror("can't open: "); exit(-1); } while (fgets(linebuf,BUFLEN,file) != NULL) { name = (el*)malloc(sizeof(el)); if (name == NULL) exit(-1); strncpy(name->bname,linebuf,sizeof(name->bname)); DL_APPEND(head, name); } DL_SORT(head, namecmp); DL_FOREACH(head,elt) printf("%s", elt->bname); memcpy(etmp.bname, "WES\n", 5UL); DL_SEARCH(head,elt,&etmp,namecmp); if (elt != NULL) printf("found %s\n", elt->bname); /* now delete each element, use the safe iterator */ DL_FOREACH_SAFE(head,elt,tmp) { DL_DELETE(head,elt); }
int main(int argc, char *argv[]) { el *name, *elt, *tmp, etmp; int i; example_user_t *user, *users=NULL; char linebuf[BUFLEN]; FILE *file; UT_string *s; char binary[] = "\xff\xff"; if ( (file = fopen( "test11.dat", "r" )) == NULL ) { perror("can't open: "); exit(-1); } while (fgets(linebuf,BUFLEN,file) != NULL) { if ( (name = (el*)malloc(sizeof(el))) == NULL) exit(-1); strncpy(name->bname,linebuf,BUFLEN); DL_APPEND(head, name); } DL_SORT(head, namecmp); DL_FOREACH(head,elt) printf("%s", elt->bname); memcpy(&etmp.bname, "WES\n", 5); DL_SEARCH(head,elt,&etmp,namecmp); if (elt) printf("found %s\n", elt->bname); /* now delete each element, use the safe iterator */ DL_FOREACH_SAFE(head,elt,tmp) { DL_DELETE(head,elt); }
static BOOL KUSB_API l_DevEnum_Sync_Slave( __in KLST_HANDLE DeviceList, __in KLST_DEVINFO_HANDLE DeviceInfo, __in KLST_SYNC_CONTEXT* Context) { PKLST_DEVINFO_EL slaveDevInfo = (PKLST_DEVINFO_EL)DeviceInfo; PKLST_DEVINFO_EL masterDevInfo; UNREFERENCED_PARAMETER(DeviceList); DL_SEARCH(Context->Master->head, masterDevInfo, slaveDevInfo, mLst_DL_Match_SymbolicLink); if (masterDevInfo) { // This element exists on both lists. // Skip elements already processed by previous sync operations. if (masterDevInfo->Public.SyncFlags != KLST_SYNC_FLAG_NONE) return TRUE; // always use the new DevicePath from the slave list memcpy(masterDevInfo->Public.DevicePath, slaveDevInfo->Public.DevicePath, KLST_STRING_MAX_LEN); if (slaveDevInfo->Public.Connected != masterDevInfo->Public.Connected) { // Connected/Disconnected. masterDevInfo->Public.SyncFlags |= (KLST_SYNC_FLAG_CONNECT_CHANGE & Context->SyncFlags); masterDevInfo->Public.Connected = slaveDevInfo->Public.Connected; if (slaveDevInfo->Public.Connected) masterDevInfo->Public.SyncFlags |= (KLST_SYNC_FLAG_ADDED & Context->SyncFlags); else masterDevInfo->Public.SyncFlags |= (KLST_SYNC_FLAG_REMOVED & Context->SyncFlags); } else { // Unchanged. masterDevInfo->Public.SyncFlags = KLST_SYNC_FLAG_UNCHANGED; } } else { // This element exists in the slave but not in the master if ((KLST_SYNC_FLAG_ADDED & Context->SyncFlags)) { // Move it to the master list LstK_DetachInfo(DeviceList, (KLST_DEVINFO_HANDLE)slaveDevInfo); LstK_AttachInfo((KLST_HANDLE)Context->Master, (KLST_DEVINFO_HANDLE)slaveDevInfo); // Update 'SyncFlags' if (slaveDevInfo->Public.Connected) slaveDevInfo->Public.SyncFlags = KLST_SYNC_FLAG_ADDED; else slaveDevInfo->Public.SyncFlags = KLST_SYNC_FLAG_UNCHANGED; } } return TRUE; }
int main() { int i; el els[10], *e, *tmp, *tmp2; for(i=0;i<10;i++) els[i].id='a'+i; /* test LL macros */ printf("LL macros\n"); LL_APPEND(head,&els[0]); LL_APPEND(head,&els[1]); LL_APPEND(head,&els[2]); LL_FOREACH(head,e) printf("%c ", e->id); printf("\n"); LL_SEARCH_SCALAR(head, e, id, 'b'); if (e) printf("search scalar found b\n"); LL_SEARCH(head, e, &els[0], eltcmp); if (e) printf("search found %c\n",e->id); LL_FOREACH_SAFE(head,e,tmp) LL_DELETE(head,e); printf("\n"); /* test DL macros */ printf("DL macros\n"); DL_APPEND(head,&els[0]); DL_APPEND(head,&els[1]); DL_APPEND(head,&els[2]); DL_FOREACH(head,e) printf("%c ", e->id); printf("\n"); DL_SEARCH_SCALAR(head, e, id, 'b'); if (e) printf("search scalar found b\n"); DL_SEARCH(head, e, &els[0], eltcmp); if (e) printf("search found %c\n",e->id); DL_FOREACH_SAFE(head,e,tmp) DL_DELETE(head,e); printf("\n"); /* test CDL macros */ printf("CDL macros\n"); CDL_PREPEND(head,&els[0]); CDL_PREPEND(head,&els[1]); CDL_PREPEND(head,&els[2]); CDL_FOREACH(head,e) printf("%c ", e->id); printf("\n"); CDL_SEARCH_SCALAR(head, e, id, 'b'); if (e) printf("search scalar found b\n"); CDL_SEARCH(head, e, &els[0], eltcmp); if (e) printf("search found %c\n",e->id); CDL_FOREACH_SAFE(head,e,tmp,tmp2) CDL_DELETE(head,e); return 0; }
static BOOL KUSB_API l_DevEnum_Sync_Master( __in KLST_HANDLE DeviceList, __in KLST_DEVINFO_HANDLE DeviceInfo, __in KLST_SYNC_CONTEXT* Context) { PKLST_DEVINFO_EL masterDevInfo = (PKLST_DEVINFO_EL)DeviceInfo; PKLST_DEVINFO_EL slaveDevInfo; UNREFERENCED_PARAMETER(DeviceList); // Skip elements already processed by previous sync operations. if (masterDevInfo->Public.SyncFlags != KLST_SYNC_FLAG_NONE) return TRUE; DL_SEARCH(Context->Slave->head, slaveDevInfo, masterDevInfo, mLst_DL_Match_SymbolicLink); if (slaveDevInfo) { // This element exists in the slave and master list. memcpy(masterDevInfo->Public.DevicePath, slaveDevInfo->Public.DevicePath, KLST_STRING_MAX_LEN); if (slaveDevInfo->Public.Connected != masterDevInfo->Public.Connected) { // Connected/Disconnected. masterDevInfo->Public.SyncFlags |= (KLST_SYNC_FLAG_CONNECT_CHANGE & Context->SyncFlags); masterDevInfo->Public.Connected = slaveDevInfo->Public.Connected; if (slaveDevInfo->Public.Connected) masterDevInfo->Public.SyncFlags |= (KLST_SYNC_FLAG_ADDED & Context->SyncFlags); else masterDevInfo->Public.SyncFlags |= (KLST_SYNC_FLAG_REMOVED & Context->SyncFlags); } else { // Unchanged. masterDevInfo->Public.SyncFlags = KLST_SYNC_FLAG_UNCHANGED; } } else { // This element exists in the master list only. if (masterDevInfo->Public.Connected) { masterDevInfo->Public.SyncFlags |= (KLST_SYNC_FLAG_REMOVED & Context->SyncFlags); if (!masterDevInfo->Public.SyncFlags) masterDevInfo->Public.SyncFlags = KLST_SYNC_FLAG_UNCHANGED; masterDevInfo->Public.Connected = FALSE; } else { masterDevInfo->Public.SyncFlags = KLST_SYNC_FLAG_UNCHANGED; } } return TRUE; }
void profile_rma_nbload_end(int proc, int rid) { if (!profiling_enabled || !(prof_groups & CAFPROF_GET)) return; rma_node_t *rma_node, tmp; PROFILE_GET_END(proc, rid); /* remove this RMA from the save list */ tmp.rmaid = rid; rma_node = NULL; DL_SEARCH(saved_load_rma_list, rma_node, &tmp, rmaid_cmp); if (rma_node) DL_DELETE(saved_load_rma_list, rma_node); }