Exemplo n.º 1
0
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);
    }
Exemplo n.º 2
0
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);
    }
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
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;
}
Exemplo n.º 6
0
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);

}