\label{api_whole_md_doc_whole}%
\Hypertarget{api_whole_md_doc_whole}%
 Some applications do not require the fine-\/grained control over IO, but rather just want to process a whole file with a single call. librsync provides whole-\/file APIs to do exactly that.

These functions open files, process the entire contents, and return an overall result. The whole-\/file operations are the core of the \mbox{\hyperlink{page_rdiff}{rdiff command}}.

This interface is implemented on top of the \mbox{\hyperlink{api_streaming}{Streaming API}}. Processing of a whole file begins with creation of a \mbox{\hyperlink{librsync_8h_add6622b38e3fa557301a190876d5ed4a}{rs\+\_\+job\+\_\+t}} object for the appropriate operation, just as if the application was going to do buffering itself. After creation, the job may be passed to \mbox{\hyperlink{whole_8h_afd9c4b5694a88c0a835f0b3b0f8cbf91}{rs\+\_\+whole\+\_\+run()}}, which will feed it to and from two FILEs as necessary until end of file is reached or the operation completes.

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{librsync_8h_a3c4c3fcea2814610109536f3ae029c5e}{rs\+\_\+sig\+\_\+args()}} 

\mbox{\hyperlink{librsync_8h_a2e111b9ef4acef02f812ec58b8217c8c}{rs\+\_\+sig\+\_\+file()}} 

\mbox{\hyperlink{librsync_8h_a69a679a66bcf4b35b3e22ca0e9791c02}{rs\+\_\+loadsig\+\_\+file()}} 

\mbox{\hyperlink{librsync_8h_a633e49044273bd2b7c1ce568b52b7e91}{rs\+\_\+delta\+\_\+file()}} 

\mbox{\hyperlink{librsync_8h_a76f5d5851aaad2c17bfd9256e344626d}{rs\+\_\+patch\+\_\+file()}} 
\end{DoxySeeAlso}
