dsys2
changeset 3:eec499998960
foo
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Wed, 31 Aug 2011 23:23:38 +0300 |
parents | 1705e550bd91 |
children | 95f010f7eadc |
files | src/dsys.c |
diffstat | 1 files changed, 51 insertions(+), 1 deletions(-) [+] |
line diff
1.1 --- a/src/dsys.c Wed Aug 31 05:08:54 2011 +0300 1.2 +++ b/src/dsys.c Wed Aug 31 23:23:38 2011 +0300 1.3 @@ -41,7 +41,11 @@ 1.4 1.5 demo->src_tm = demo->start_tm = -1; 1.6 1.7 - /* TODO */ 1.8 + if(read_script(demo, fp) == -1) { 1.9 + free(demo); 1.10 + return 0; 1.11 + } 1.12 + 1.13 return demo; 1.14 } 1.15 1.16 @@ -57,6 +61,52 @@ 1.17 } 1.18 1.19 1.20 + 1.21 +static int read_script(struct dsys_demo *demo, FILE *fp) 1.22 +{ 1.23 + int nline = 0; 1.24 + char buf[512], *line, tok; 1.25 + int timestamp; 1.26 + struct dsys_event *ev; 1.27 + 1.28 + while(fgets(buf, sizeof buf, fp)) { 1.29 + nline++; 1.30 + 1.31 + line = buf;/*strip_ws(buf);*/ 1.32 + 1.33 + if(!line || !*line) { 1.34 + continue; 1.35 + } 1.36 + 1.37 + if(!(tok = strtok(line, SEP)) || !isdigit(*tok)) { 1.38 + fprintf(stderr, "error reading script at line: %d: expected timestamp\n", nline); 1.39 + return -1; 1.40 + } 1.41 + timestamp = atoi(tok); 1.42 + 1.43 + if(!(tok = strtok(0, SEP))) { 1.44 + fprintf(stderr, "error reading script at line: %d: expected event name\n", nline); 1.45 + return -1; 1.46 + } 1.47 + 1.48 + if(!(ev = malloc(sizeof *ev))) { 1.49 + perror("read_script: failed to allocate memory for an event\n"); 1.50 + return -1; 1.51 + } 1.52 + ev->t0 = t0; 1.53 + ev->t1 = t1; 1.54 + 1.55 + if(!(ev->name = malloc(strlen(tok) + 1))) { 1.56 + free(ev); 1.57 + sprintf("read_script: failed to allocate memory for the event name: %s\n", tok); 1.58 + return -1; 1.59 + } 1.60 + } 1.61 + 1.62 + return 0; 1.63 +} 1.64 + 1.65 + 1.66 void dsys_update(struct dsys_demo *demo, demotime_t tm) 1.67 { 1.68 demo->src_tm = tm;