int pri_event_list (pri_img_t *img, const char *type, const char *range) { int byidx; struct pri_event_s par; if (pri_event_get_type (type, &par.type)) { return (1); } byidx = 0; if (*range == '@') { byidx = 1; range += 1; } if (pri_parse_range (range, &par.idx1, &par.idx2, &par.all)) { return (1); } if (byidx) { return (pri_for_all_tracks (img, pri_event_list_idx_cb, &par)); } else { return (pri_for_all_tracks (img, pri_event_list_pos_cb, &par)); } }
static int pri_edit_tracks (pri_img_t *img, const char *what, const char *val) { int r; unsigned long v; pri_trk_cb fct; v = strtoul (val, NULL, 0); if (strcmp (what, "clock") == 0) { fct = pri_edit_clock_cb; } else if (strcmp (what, "data") == 0) { fct = pri_edit_data_cb; } else if (strcmp (what, "size") == 0) { fct = pri_edit_size_cb; } else { fprintf (stderr, "%s: unknown field (%s)\n", arg0, what); return (1); } r = pri_for_all_tracks (img, fct, &v); if (r) { fprintf (stderr, "%s: editing failed (%s = %lu)\n", arg0, what, v ); } return (r); }
int pri_decode_gcr_raw (pri_img_t *img, const char *fname) { int r; FILE *fp; fp = fopen (fname, "wb"); if (fp == NULL) { return (1); } r = pri_for_all_tracks (img, pri_decode_gcr_raw_cb, fp); fclose (fp); return (r); }
int pri_event_add (pri_img_t *img, const char *type, const char *pos, const char *val) { struct pri_event_s par; if (pri_event_get_type (type, &par.type)) { return (1); } errno = 0; par.idx1 = strtoul (pos, NULL, 0); par.idx2 = strtoul (val, NULL, 0); if (errno) { return (1); } return (pri_for_all_tracks (img, pri_event_add_cb, &par)); }
static int pri_rotate_tracks (pri_img_t *img, unsigned long idx) { return (pri_for_all_tracks (img, pri_rotate_track_cb, &idx)); }
static int pri_list_tracks (pri_img_t *img) { return (pri_for_all_tracks (img, pri_list_track_cb, NULL)); }
static int pri_align_gcr_tracks (pri_img_t *img) { return (pri_for_all_tracks (img, pri_align_gcr_track_cb, NULL)); }
int pri_event_clear (pri_img_t *img) { return (pri_for_all_tracks (img, pri_event_clear_cb, NULL)); }