+ for (p = &(users->data[users->size - 1]); p >= users->data; p--) {
+ for (b = *p; b; b = b->next) {
+ if ((u = (struct entry *)b->data)->members == 0)
+ continue;
+ pr_Read(0, 0, u->pos, &uentry, sizeof(uentry));
+ for (i=0, m=u->members; m && i<PRSIZE; m=m->unext, i++)
+ uentry.entries[i] = htonl(m->group->id);
+ uentry.count = htonl(i);
+ pr_Write(0, 0, u->pos, &uentry, sizeof(uentry));
+ if (m) {
+ pr_ReadEntry(0, 0, g->pos, &gentry);
+ while (m) {
+ AddToEntry(0, &uentry, u->pos, m->group->id);
+ m = m->unext;
+ }
+ }
+ }
+ }
+ for (p = &(groups->data[groups->size - 1]); p >= groups->data; p--) {
+ for (b = *p; b; b = b->next) {
+ if ((g = (struct entry *)b->data)->members == 0)
+ continue;
+ pr_Read(0, 0, g->pos, &gentry, sizeof(gentry));
+ for (i=0, m=g->members; m && i<PRSIZE; m=m->gnext, i++)
+ gentry.entries[i] = htonl(m->user->id);
+ gentry.count = htonl(i);
+ pr_Write(0, 0, g->pos, &gentry, sizeof(gentry));
+ if (m) {
+ pr_ReadEntry(0, 0, g->pos, &gentry);
+ while (m) {
+ AddToEntry(0, &gentry, g->pos, m->user->id);
+ m = m->gnext;
+ }
+ }
+ }
+ }
+