extern void *ff(void*,int);
|
extern void *ff(void*,int);
|
|
|
struct lpgl { struct lpgl *next; };
|
struct lpgl { struct lpgl *next; };
|
struct lpgd { struct lpgl *first; };
|
struct lpgd { struct lpgl *first; };
|
|
|
typedef int (*xfn)( );
|
typedef int (*xfn)( );
|
static void xDP_IF_EnumGroupsInGroup ( void *a, int b, xfn fn)
|
static void xDP_IF_EnumGroupsInGroup ( void *a, int b, xfn fn)
|
{
|
{
|
struct lpgd *lpGData;
|
struct lpgd *lpGData;
|
struct lpgl *lpGList;
|
struct lpgl *lpGList;
|
|
|
if( ( lpGData = ff( a, b ) ) == ((void *)0) )
|
if( ( lpGData = ff( a, b ) ) == ((void *)0) )
|
return;
|
return;
|
|
|
if( lpGData->first == ((void *)0) )
|
if( lpGData->first == ((void *)0) )
|
return;
|
return;
|
lpGList = lpGData->first;
|
lpGList = lpGData->first;
|
|
|
for( ;; ) {
|
for( ;; ) {
|
if( !(*fn)( ) )
|
if( !(*fn)( ) )
|
return;
|
return;
|
if( lpGList->next == ((void *)0) )
|
if( lpGList->next == ((void *)0) )
|
break;
|
break;
|
lpGList = lpGList->next;
|
lpGList = lpGList->next;
|
}
|
}
|
return;
|
return;
|
}
|
}
|
|
|
|
|
static int
|
static int
|
xcbDeletePlayerFromAllGroups() {
|
xcbDeletePlayerFromAllGroups() {
|
xDP_IF_EnumGroupsInGroup(0, 0, 0);
|
xDP_IF_EnumGroupsInGroup(0, 0, 0);
|
return 1;
|
return 1;
|
}
|
}
|
|
|
void xDP_IF_EnumGroups( xfn fn) {
|
void xDP_IF_EnumGroups( xfn fn) {
|
xDP_IF_EnumGroupsInGroup( 0, 0, fn);
|
xDP_IF_EnumGroupsInGroup( 0, 0, fn);
|
}
|
}
|
|
|
static void xDP_IF_DestroyPlayer () {
|
static void xDP_IF_DestroyPlayer () {
|
xDP_IF_EnumGroups( xcbDeletePlayerFromAllGroups);
|
xDP_IF_EnumGroups( xcbDeletePlayerFromAllGroups);
|
}
|
}
|
|
|
void* foo=xDP_IF_DestroyPlayer;
|
void* foo=xDP_IF_DestroyPlayer;
|
|
|