void getFileTimeStamp( char *newFileTime, char *oldFileTime ) { char* convertMonth( char * ) ; char *word, *toParse, *year, *month, *day, *time ; int numParses ; numParses = 0 ; word = toParse = NULL ; toParse = strtok( oldFileTime, "\n" ) ; if( toParse != NULL ) word = strtok( toParse, " " ) ; while( word != NULL ) { switch( numParses ) { case 1 : month = strdup( convertMonth ( word ) ) ; break ; case 2 : day = strdup( word ) ; break ; case 3 : time = strdup( word ) ; break ; case 4 : year = strdup( word ) ; break ; } numParses++ ; word = strtok( NULL, " " ) ; } if( strlen( day ) == 1 ) sprintf( newFileTime,"%s/%s/0%s %s", year, month, day, time ) ; else sprintf( newFileTime,"%s/%s/%s %s", year, month, day, time ) ; free( month ) ; free( day ) ; free( time ) ; free( year ) ; }
//function for writing to the appropriate file once a client is connected void * writeToFile(void * param) { int s = * (int * ) param; FILE * fp; char * year, * month, * day, * weekDay, * hour, * minute, * second; char * group; char fileName[50] = {0}; char fileString[50] = {0}; struct tempdata package1, package2; if(unpack(&package1, s) < 0) //unpacking information about 1st sensor { perror("Error unpacking structure"); return 0; } if(package1.nSensors == 2) { if(unpack(&package2, s) < 0) //unpacking information about 2nd sensor if avaiable { perror("Error unpacking structure"); return 0; } if(package1.action == 0) //storing sensor information in the specified file if not a request status packet { day = strtok(package1.timestamp, " :"); month = strtok(NULL, " :"); weekDay = strtok(NULL, " :"); hour = strtok(NULL, " :"); minute = strtok(NULL, " :"); second = strtok(NULL, " :"); year = strtok(NULL, " :"); group = "g04"; sprintf(fileName, "/var/log/therm/temp_logs/%s_%s_%d_%s", group, year, convertMonth(month), package1.host); sprintf(fileString, "%s %d %s %s %s %5.2f %5.2f", year, convertMonth(month), weekDay, hour, minute, package1.sensorData, package2.sensorData); fp = fopen(fileName, "a"); fprintf(fp, "%s \n", fileString); fclose(fp); } } else if(package1.action == 0) { day = strtok(package1.timestamp, " :"); month = strtok(NULL, " :"); weekDay = strtok(NULL, " :"); hour = strtok(NULL, " :"); minute = strtok(NULL, " :"); second = strtok(NULL, " :"); year = strtok(NULL, " :"); group = "g04"; sprintf(fileName, "/var/log/therm/temp_logs/%s_%s_%d_%s", group, year, convertMonth(month), package1.host); sprintf(fileString, "%s %d %s %s %s %f.2", year, convertMonth(month), weekDay, hour, minute, package1.sensorData); fp = fopen(fileName, "a"); fprintf(fp, "%s \n", fileString); fclose(fp); } #ifdef DEBUG printf("Received info:\n"); printf("Number of sensors: %d\n",package2.nSensors); printf("Host: %s\n",package2.host); printf("Temperature: %lf\n",package2.sensorData); printf("Low Threshold: %lf\n",package2.lowVal); printf("High Threshold: %lf\n",package2.highVal); printf("Time: %s\n",package2.timestamp); printf("Action: %s\n\n",(package2.action == 0)?"send":"request status"); #endif free(param); //freeing the socket identifier passed to this function }