void begin (int argc, const char * argv[]) { size_t output; size_t pos; output = Outfile ("-"); Add_field (output, Sym ("uint4"), Sym ("bp0")); Add_field (output, Sym ("uint4"), Sym ("bp1")); File_fix (output, 1, 0); pos = 0; while (1) { const int char_in = getchar (); if (char_in == EOF) { if (ferror (stdin)) Fatal ("input error"); else { if (pos % 2) { Poke (output, 0, 1, uInt4 (bp_letter_to_int4 (0))); Advance (output, 1); } break; } } Poke (output, 0, (pos % 2), uInt4 (bp_letter_to_int4 (char_in))); ++pos; if (!(pos % 2)) Advance (output, 1); } Close (output); }
void print_fields(int fd, unsigned char *details) /* print a line describing the field types used in print_line() */ { char fields[TERM_LEN]; char field_user[] = " USER "; char field_id[] = "ID "; char field_rq[] = " R&Q "; char field_options[] = " OPTIONS "; char field_schedule[] = " SCHEDULE "; char field_until[] = " LAVG 1,5,15 UNTIL STRICT"; char field_pid[] = " PID "; char field_index[] = " INDEX"; char field_cmd[] = " CMD"; char field_endline[] = "\n"; int len = 0; fields[0] = '\0'; Add_field(field_id); Test_add_field(FIELD_USER, field_user); Test_add_field(FIELD_PID, field_pid); Test_add_field(FIELD_INDEX, field_index); Test_add_field(FIELD_RQ, field_rq); Test_add_field(FIELD_OPTIONS, field_options); Test_add_field(FIELD_LAVG, field_until); Test_add_field(FIELD_SCHEDULE, field_schedule); Add_field(field_cmd); Add_field(field_endline); fields[TERM_LEN-1] = '\0'; if ( send(fd, fields, (len < sizeof(fields)) ? len : sizeof(fields), 0) < 0 ) error_e("error in send()"); }