-int taper_scan P((char* wantlabel,
- char** gotlabel, char** timestamp, char** error_message,
- char **tapedev));
+typedef void (*TaperscanOutputFunctor)(void * data, char * msg);
+typedef gboolean (*TaperscanProlongFunctor)(void *data);
+
+int taper_scan (char* wantlabel,
+ char** gotlabel, char** timestamp,
+ char **tapedev,
+ taper_scan_tracker_t* tracker,
+ TaperscanOutputFunctor output_functor,
+ void *output_data,
+ TaperscanProlongFunctor prolong_functor,
+ void *prolong_data
+ );
+void FILE_taperscan_output_callback(void *data, char *msg);
+void CHAR_taperscan_output_callback(void *data, char *msg);
+
+/* Returns a newly allocated tracker object. */
+taper_scan_tracker_t* taper_scan_tracker_new(void);
+
+/* Frees a tracker object. */
+void taper_scan_tracker_free(taper_scan_tracker_t*);
+
+#endif /* !TAPERSCAN_H */