int main(int argc, char **argv) { int i, currentNebUser, currentUserMessage, matches = 0; /* print usage if needed */ if (argc != 1) { fprintf(stderr, "No args needed"); exit(0); } char filename[1024]; FILE *file = NULL, *fp = NULL, *userFile = NULL, *messageFile = NULL; sprintf(filename, "../../Data/tableinfo.dat"); file = fopen(filename, "rb"); int locationNum, userNum, messageNum; fread(&locationNum, sizeof(int), 1, file); fread(&userNum, sizeof(int), 1, file); fread(&messageNum, sizeof(int), 1, file); fclose(file); struct timeval time_start, time_end; int matchingRecords = 0; char *matchString = "Nebraska"; /* start time */ gettimeofday(&time_start, NULL); // Get list of NE cities int nebraskaStart, nebraskaEnd; nebraskaStart = findLocationEdge(0, locationNum, matchString, -1, 0); nebraskaEnd = findLocationEdge(0, locationNum, matchString, 1, locationNum); //printf("NE Start: %d, NE End: %d", nebraskaStart, nebraskaEnd); for (i = nebraskaStart; i <= nebraskaEnd; i++) { /* open the corresponding file */ sprintf(filename, "../../Data/Locations/location_%06d.dat", i); fp = fopen(filename,"rb"); if (!fp) { fprintf(stderr, "Cannot open %s\n", filename); exit(0); } // Get location id from NE cities location_t *loc = read_location(fp); //printf("%s, %s\n", loc->city, loc->state); fclose(fp); //printf("%s, %s\n", loc->city, loc->state); // Get list of users from NE cities int firstNebUserAtLocation, lastNebUserAtLocation; firstNebUserAtLocation = findUserEdge(0, userNum, loc->locationID, -1, 0); lastNebUserAtLocation = findUserEdge(0, userNum, loc->locationID, 1, userNum); //printf(" Start: %i, End: %i\n", firstNebUserAtLocation, lastNebUserAtLocation); // foreach user locationStart to locationEnd for (currentNebUser = firstNebUserAtLocation; currentNebUser <= lastNebUserAtLocation; currentNebUser++) { // open user file at current ID in loop sprintf(filename, "../../Data/Users/user_%06d.dat", currentNebUser); userFile = fopen(filename, "rb"); if (!userFile) { fprintf(stderr, "Cannot open %s\n", filename); exit(0); } // Get userid from NE users user_t *usr = read_user(userFile); fclose(userFile); // get list of messages from NE users int firstUserMessage, lastUserMessage; firstUserMessage = findMessageEdge(0, messageNum, usr->id, -1, 0); lastUserMessage = findMessageEdge(0, messageNum, usr->id, 1, messageNum); // printf(" UserMessages Start: %i, End: %i\n", firstUserMessage, lastUserMessage); if(firstUserMessage == -1 && lastUserMessage == -1) { printf("Warning, no messages found for user %i\n", usr->id); } else { int criteriaMatch = 0; // foreach message associated with current user id for (currentUserMessage = firstUserMessage; currentUserMessage <= lastUserMessage; currentUserMessage++) { // open message file sprintf(filename, "../../Data/Messages/message_%07d.dat", currentUserMessage); messageFile = fopen(filename, "rb"); if (!messageFile) { fprintf(stderr, "Cannot open %s\n", filename); exit(0); } message_t *msg = read_message(messageFile); fclose(messageFile); // check time; increment if (msg->hour == 8 || ((msg->hour == 9) && (msg->minute == 0))) { criteriaMatch = 1; break; } } if (criteriaMatch == 1) { matchingRecords++; } } } free_location(loc); } /* end time */ gettimeofday(&time_end, NULL); float totaltime = (time_end.tv_sec - time_start.tv_sec) + (time_end.tv_usec - time_start.tv_usec) / 1000000.0f; printf("\n\nMatching Records %i\n", matchingRecords); printf("\n\nProcess time %f seconds\n", totaltime); return 0; }
void ingredients() { show_ingredients(); read_user(); }