dp doubly linked list
This commit is contained in:
33
igc.c
33
igc.c
@@ -14,6 +14,7 @@
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include "igc.h"
|
||||
#include "linkage.h"
|
||||
|
||||
struct IGC_DataPoint* parse_datapoint(char* line)
|
||||
{
|
||||
@@ -107,13 +108,11 @@ struct IGC_Header* parse_header_record(struct IGC_Header* hdr, char* line)
|
||||
return hdr;
|
||||
}
|
||||
|
||||
void parse_igc_file(FILE* fp)
|
||||
void parse_igc_file(FILE* fp, struct IGC_Header* hdr, struct dp_node* list)
|
||||
{
|
||||
size_t len = 0;
|
||||
char* line = NULL;
|
||||
|
||||
struct IGC_Header* hdr = (struct IGC_Header*)calloc(1, sizeof(struct IGC_Header));
|
||||
|
||||
while (getline(&line, &len, fp) != -1)
|
||||
{
|
||||
switch(line[0])
|
||||
@@ -126,9 +125,9 @@ void parse_igc_file(FILE* fp)
|
||||
break;
|
||||
case DATAPOINT:
|
||||
struct IGC_DataPoint* dp = parse_datapoint(line);
|
||||
// show_datapoint(dp);
|
||||
//show_datapoint(dp);
|
||||
// Doubly linked list of points (so theyre joined in chronological order; opens possibilities for analysis later)
|
||||
// append_datapoint(dp);
|
||||
append_datapoint(list, dp);
|
||||
break;
|
||||
case HEADER:
|
||||
hdr = parse_header_record(hdr, line);
|
||||
@@ -143,27 +142,3 @@ void parse_igc_file(FILE* fp)
|
||||
}
|
||||
show_header_info(hdr);
|
||||
}
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
if (argc < 2)
|
||||
{
|
||||
printf("Usage: %s <file>\n", argv[0]);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
char filename[NAME_MAX] = {0};
|
||||
strncpy(filename, argv[1], NAME_MAX-1);
|
||||
|
||||
FILE* fp = fopen(filename, "r");
|
||||
|
||||
if (!fp)
|
||||
{
|
||||
printf("Couldn't open file %s\n", filename);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
parse_igc_file(fp);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user