1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2025-03-22 02:29:10 +00:00

file-poller: Improved csv output

All ',' and '\n' will now be stripped from the files contents so it doesn't
effect csv formatting

Also fixed some whitespace
This commit is contained in:
Sebastian Goscik 2016-07-11 10:39:23 +01:00
parent ff7a0626ce
commit dbda128813
3 changed files with 25 additions and 16 deletions

View File

@ -14,8 +14,21 @@ void term(int signum)
done = 1; done = 1;
} }
// From: http://stackoverflow.com/questions/1515195/how-to-remove-n-or-t-from-a-given-string-in-c
void strip(char *s) {
char *stripped_s = s;
while(*s != '\0') {
if(*s != ',' && *s != '\n') {
*stripped_s++ = *s++;
} else {
++s;
}
}
*stripped_s = '\0';
}
int main(int argc, char ** argv) { int main(int argc, char ** argv) {
extern char *optarg; extern char *optarg;
extern int optind; extern int optind;
int c = 0; int c = 0;
@ -37,8 +50,8 @@ int main(int argc, char ** argv) {
" Defaults to 1000000 (1 second)\n" " Defaults to 1000000 (1 second)\n"
" -l Comma separated list of labels to use in the CSV\n" " -l Comma separated list of labels to use in the CSV\n"
" output. This should match the number of files\n"; " output. This should match the number of files\n";
//Handling command line arguments //Handling command line arguments
while ((c = getopt(argc, argv, "ht:l:")) != -1) while ((c = getopt(argc, argv, "ht:l:")) != -1)
{ {
@ -69,7 +82,7 @@ int main(int argc, char ** argv) {
fprintf(stderr, "%s: missiing file path(s)\n", argv[0]); fprintf(stderr, "%s: missiing file path(s)\n", argv[0]);
fprintf(stderr, usage, argv[0]); fprintf(stderr, usage, argv[0]);
exit(1); exit(1);
} }
if (labelCount && labelCount != argc-optind) if (labelCount && labelCount != argc-optind)
{ {
@ -79,8 +92,8 @@ int main(int argc, char ** argv) {
fprintf(stderr, usage, argv[0]); fprintf(stderr, usage, argv[0]);
exit(1); exit(1);
} }
//Print headers and open files to poll //Print headers and open files to poll
printf("time"); printf("time");
if(labelCount) if(labelCount)
{ {
@ -94,7 +107,7 @@ int main(int argc, char ** argv) {
printf(",%s", argv[optind + i]); printf(",%s", argv[optind + i]);
} }
} }
printf("\n"); printf("\n");
//Setup SIGTERM handler //Setup SIGTERM handler
struct sigaction action; struct sigaction action;
@ -102,27 +115,23 @@ int main(int argc, char ** argv) {
action.sa_handler = term; action.sa_handler = term;
sigaction(SIGTERM, &action, NULL); sigaction(SIGTERM, &action, NULL);
//Poll files //Poll files
while (!done) { while (!done) {
gettimeofday(&current_time, NULL); gettimeofday(&current_time, NULL);
time_float = (double)current_time.tv_sec; time_float = (double)current_time.tv_sec;
time_float += ((double)current_time.tv_usec)/1000/1000; time_float += ((double)current_time.tv_usec)/1000/1000;
printf("%f", time_float); printf("%f", time_float);
for (i = 0; i < (argc - optind); i++) { for (i = 0; i < (argc - optind); i++) {
read(files_to_poll[i], buf, 1024); read(files_to_poll[i], buf, 1024);
lseek(files_to_poll[i], 0, SEEK_SET); lseek(files_to_poll[i], 0, SEEK_SET);
strip(buf);
//Removes trailing "\n"
int new_line = strlen(buf) -1;
if (buf[new_line] == '\n')
buf[new_line] = '\0';
printf(",%s", buf); printf(",%s", buf);
buf[0] = '\0'; // "Empty" buffer
} }
printf("\n"); printf("\n");
usleep(interval); usleep(interval);
} }
//Close files //Close files
for (i = 0; i < (argc - optind); i++) for (i = 0; i < (argc - optind); i++)
{ {