Exemple #1
0
/* generate stream page ------------------------------------------------------*/
static int gen_page2(gtime_t time, const char *temp, const char *page)
{
    FILE *ifp,*ofp;
    gtime_t ts,te;
    double ep[6],hour[24],late[MAXSTA][24]= {{0}},avai[MAXSTA][24]= {{0}};
    double val1[MAXSTA],val2[MAXSTA];
    char buff[1024],file[1024],*sta[MAXSTA],str[MAXSTA][32];
    int i,j,n,nsta=0,sec=0;

    ts=timeadd(time,-90000.0);
    te=timeadd(time, -3600.0);

    for (i=0; i<MAXSTA; i++) sta[i]=str[i];

    for (i=0; i<24; i++) {
        time2epoch(timeadd(ts,i*3600.0),ep);
        sprintf(file,REP_FILE,ep[0],ep[1],ep[2],ep[3]);

        if (!(n=read_rep(file,sta,val1,val2))) continue;

        for (j=0; j<n; j++) {
            late[j][i]=val1[j];
            avai[j][i]=val2[j];
        }
        hour[i]=ep[3];
        nsta=n;
    }
    if (!(ifp=fopen(temp,"r"))) {
        fprintf(stderr,"file open error: %s\n",temp);
        return 0;
    }
    if (!(ofp=fopen(page,"w"))) {
        fprintf(stderr,"file open error: %s\n",page);
        fclose(ifp);
        return 0;
    }
    while (fgets(buff,sizeof(buff),ifp)) {

        if      (strstr(buff,"@DATE START"  )) sec=1;
        else if (strstr(buff,"@TABLE0 START")) sec=2;
        else if (strstr(buff,"@TABLE1 START")) sec=3;
        else if (strstr(buff,"@TABLE2 START")) sec=4;
        else if (strstr(buff,"@DATE END"    )) sec=0;
        else if (strstr(buff,"@TABLE0 END"  )) sec=0;
        else if (strstr(buff,"@TABLE1 END"  )) sec=0;
        else if (strstr(buff,"@TABLE2 END"  )) sec=0;

        switch (sec) {
        case 0:
            fputs(buff,ofp);
            break;
        case 1:
            out_date(ofp,ts,te);
            break;
        case 2:
            out_ref(ofp,ts);
            break;
        case 3:
            out_table1(ofp,sta,nsta,hour,avai,1);
            break;
        case 4:
            out_table1(ofp,sta,nsta,hour,late,1);
            break;
        }
    }
    fclose(ifp);
    fclose(ofp);
    return 1;
}
Exemple #2
0
static Token *read_token_int(void) {
  int c = getc_nonspace();
  switch (c) {
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':
      return read_number(c);
    case 'a':
    case 'b':
    case 'c':
    case 'd':
    case 'e':
    case 'f':
    case 'g':
    case 'h':
    case 'i':
    case 'j':
    case 'k':
    case 'l':
    case 'm':
    case 'n':
    case 'o':
    case 'p':
    case 'q':
    case 'r':
    case 's':
    case 't':
    case 'u':
    case 'v':
    case 'w':
    case 'x':
    case 'y':
    case 'z':
    case 'A':
    case 'B':
    case 'C':
    case 'D':
    case 'E':
    case 'F':
    case 'G':
    case 'H':
    case 'I':
    case 'J':
    case 'K':
    case 'L':
    case 'M':
    case 'N':
    case 'O':
    case 'P':
    case 'Q':
    case 'R':
    case 'S':
    case 'T':
    case 'U':
    case 'V':
    case 'W':
    case 'X':
    case 'Y':
    case 'Z':
    case '_':
      return read_ident(c);
    case '*':
    case '/':
    case '(':
    case ')':
    case ',':
    case ';':
    case '[':
    case ']':
    case '{':
    case '}':
    case '<':
    case '>':
    case '!':
    case '?':
    case ':':
    case '.':
      return make_punct(c);
    case '-':
      c = getc(stdin);
      if (c == '-') return make_punct(PUNCT_DEC);
      if (c == '>') return make_punct(PUNCT_ARROW);
      ungetc(c, stdin);
      return make_punct('-');
    case '=':
      return read_rep('=', '=', PUNCT_EQ);
    case '+':
      return read_rep('+', '+', PUNCT_INC);
    case '&':
      return read_rep('&', '&', PUNCT_LOGAND);
    case '|':
      return read_rep('|', '|', PUNCT_LOGOR);
    case '"':
      return read_string();
    case '\'':
      return read_char();
    case EOF:
      return NULL;
    default:
      error("Unexpected character: '%c'", c);
  }
}