sched/assimilate.C with an application-specific function of the form
int assimilate_handler(
    WORKUNIT& wu, vector<RESULT>& results, RESULT& canononical_result
);
This is called when either In both cases the 'results' vector will be populated with all the workunit's results (including unsuccessful and unsent ones). All files (both input and output) will generally be on disk.

It's possible that both conditions might hold.

If assimilate_handler() returns zero, the workunit record will be marked as assimilated. If assimilate_handler() returns nonzero, the assimilator will log an error message and exit. Typically the function should return nonzero for any error condition. This way the system administrator can fix the problem before any completed or erroneous workunits are mis-handled by BOINC.

You can use BOINC's back-end utility functions to get file pathnames and open files. "; page_tail(); ?>