Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int loners(char* folder) {
- printf("removing loners \n");
- mutperson_map = (optimizedPerson *) mmapr(makepath(folder, "mutual_persons", "bin"), &person_length);
- mutknows_map = (unsigned int *) mmapr(makepath(folder, "mutual_knows", "bin"), &knows_length);
- interests_map = (unsigned short *) mmapr(makepath(folder, "interest", "bin"), &interests_length);
- int interests_counter = 0;
- unsigned long knows_offset, interests_offset;
- unsigned int person_offset, person_new_offset;
- int *offset_tracker = malloc(person_length/sizeof(optimizedPerson) * sizeof(int));
- // Files
- char* noloner_persons_file = makepath(folder, "noloner_persons", "bin");
- char* noloner_knows_file = makepath(folder, "noloner_knows", "bin");
- char* noloner_interests_file = makepath(folder, "noloner_interests", "bin");
- remove(noloner_persons_file);
- remove(noloner_knows_file);
- remove(noloner_interests_file);
- noloner_persons = fopen(noloner_persons_file, "a");
- noloner_knows = fopen(noloner_knows_file, "a");
- noloner_interests = fopen(noloner_interests_file, "a");
- // Filtering friendless people
- // Loop over all persons, keep track of new offsets based on knows_n > 0 in an array
- for (person_offset = person_new_offset = 0; person_offset < person_length/sizeof(optimizedPerson); person_offset++) {
- locperson = &mutperson_map[person_offset];
- if(locperson->knows_n > 0) {
- offset_tracker[person_offset] = person_new_offset;
- person_new_offset++;
- } else {
- offset_tracker[person_offset] = -1;
- }
- }
- // Loop over all persons
- // counters for knows and interests firsts
- for (person_offset = person_new_offset = 0; person_offset < person_length/sizeof(optimizedPerson); person_offset++) {
- locperson = &mutperson_map[person_offset];
- // als in array -1, continue
- if (offset_tracker[person_offset] == -1) {
- continue;
- } else{
- // - for vrienden van die persoon, schrijf de juiste offsets op, adjust teller
- for (knows_offset = locperson->knows_first;
- knows_offset < locperson->knows_first + locperson->knows_n;
- knows_offset++) {
- fwrite(&offset_tracker[mutknows_map[knows_offset]], sizeof(unsigned int), 1, noloner_knows);
- }
- // - for for interests van die persoon, schrijf de juiste first op, adjust teller
- locperson->interests_first = interests_counter;
- for (interests_offset = locperson->interests_first;
- interests_offset < locperson->interests_first + locperson->interest_n;
- interests_offset++) {
- //fwrite(&interests_map[interests_offset], sizeof(unsigned short),1, noloner_interests);
- //interests_counter++;
- }
- }
- }
- // Closing up
- fclose(noloner_persons);
- fclose(noloner_knows);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement