    #include <stdio.h>

    #define WIDTH_STR(width) #width
    #define FIXED_FIELD(width) "%" WIDTH_STR(width)
    #define TERMINAL(set) "[^" set "]%*1[" set "] "

    #define W 1024
    int parse(FILE *f) {
        char x[W+1], y[W+1], z[W+1];
        if (fscanf(f, FIXED_FIELD(W) TERMINAL(":"),  x) <= 0) { return EOF; }
        if (fscanf(f, FIXED_FIELD(W) TERMINAL(","),  y) <= 0) { return EOF; }
        if (fscanf(f, FIXED_FIELD(W) TERMINAL("\n"), z) <= 0) { return EOF; }
        printf("<%s>\n", x);
        printf("<%s>\n", y);
        printf("<%s>\n", z);
        return 0;
    }
    
    int main(void) {
    	printf("parse returned: %d\n", parse(stdin));
    }