librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated...

24
librsync Reference Manual Generated by Doxygen 1.2.5 Sun Mar 18 16:54:50 2001

Transcript of librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated...

Page 1: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

librsyncReferenceManual

Generatedby Doxygen1.2.5

SunMar 18 16:54:502001

Page 2: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

CONTENTS 1

Contents

1 The librsync delta-encodinglibrary 1

2 Intr oduction 2

3 Programming interface 2

4 librsync Data Structur e Index 4

5 librsync File Index 4

6 librsync PageIndex 4

7 librsync ClassDocumentation 5

8 librsync File Documentation 9

9 librsync PageDocumentation 19

10 Glossary 19

11 rdiff network delta tool 20

12 TodoList 20

1 The librsync delta-encodinglibrary

Author(s):Martin Pool � [email protected]

Id:main.dox,v1.132001/03/1201:30:50mbpExp

Thisdocumentis alsoavailablein printableform:

� http://rproxy.samba.org/doxygen/librsync/refman.ps.gz� http://rproxy.samba.org/doxygen/librsync/refman.pdf

More informationaboutlibrsynccanbefoundon therproxywebsite:

� http://rproxy.samba.org/

librsynccanbedownloadedfrom http://rproxy.samba.org/download.html, andused,mod-ified andredistributedunderthetermsof theGNU LesserGeneralPublicLicense(version2.1or later).

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 3: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

2 Intr oduction 2

2 Intr oduction

librsync is a library for calculatingand applying network deltas, with an interface designedto easeintegration into diverse network applications. librsync is being developed as part of the rproxy�http://rproxy.samba.org/ � andrsync �

http://rsync.samba.org/ � projects.

librsyncencapsulatesthecorealgorithmsof thersyncprotocol,whichhelpwith efficientcalculationof thedifferencesbetweentwo files. Thersyncalgorithmis differentfrom mostdifferencingalgorithmsbecauseit doesnot requirethepresenceof thetwo filesto calculatethedelta.Instead,it requiresasetof checksumsof eachblockof onefile, which togetherform asignaturefor thatfile. Blocksatany in theotherfile whichhave thesamechecksumarelikely to beidentical,andwhateverremainsis thedifference.

The library does not deal with file metadataor structure, such as filenames, permissions,or di-rectories. To this library, a file is just a stream of bytes. Higher-level tools, such as rsync�http://rsync.samba.org � candealwith suchissuesin awayappropriateto their users.

Thelibrary supportsthreebasicoperations:

1. GeneratingthesignatureS of afile A .

2. Calculatinga deltaD from S andanew file B.

3. Applying D to A to reconstructB.

The library alsoprovidesthe rdiff network deltatool command-linetool, which makesthis functionalityavailableto usersandscriptinglanguages.

3 Programming interface

Thepublic interfaceto librsync(rsync.h) hasfunctionsin severalmainareas:

� Datastreaming� Generatingandapplyingdeltas� Buffers� Processingwholefiles� Debuggingtraceanderrorlogging� Encodingstatistics� Utility functions

All externalsymbolshave theprefix “rs ”, or “RS ” in thecaseof preprocessorsymbols.

3.1 Data streaming

A key designrequirementfor librsync is that it shouldhandledataasandwhenthe hostingapplicationrequiresit. librsynccanbeusedinsideapplicationsthatdonon-blockingIO or filtering of network streams,becauseit neverdoesIO directly, or needsto block waiting for data.

Theprogramminginterfaceto librsyncis similar to thatof zlib andbzlib. Arbitrary-lengthinputandoutputbuffersarepassedto thelibrary by theapplication,throughaninstanceof rs buffers t. Thelibrary proceedsasfarasit can,andreturnsanrs resultvalueindicatingwhetherit needsmoredataor space.

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 4: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

3.2 Generatingand applying deltas 3

All the stateneededby the library to resumeprocessingwhenmoredatais available is kept in a smallopaquers job t structure. After creationof a job, repeatedcalls to rs job iter() in betweenfilling andemptyingthebufferskeepsdataflowing throughthestream.Thers result t valuesreturnedmayindicate

� RS DONE: processingis complete� RS BLOCKED: processinghasblockedpendingmoredata� oneof variouspossibleerrorsin processing

Thesecanbeconvertedto a human-readablestringby rs strerror().

3.2 Generating and applying deltas

All encodingoperationsareperformedby usinga � begin functionto createa rs job t object,passinginany necessaryinitializationparameters.Thevariousjobsavailableare:

� rs sig begin(): Calculatethesignatureof a file.� rs loadsigbegin(): Loada signatureinto memory.� rs deltabegin(): Calculatethedeltabetweena signatureandanew file.� rs patchbegin(): Apply a deltato a basisto recreatethenew file.

3.3 Buffers

After creatinga job, input andoutputbuffersarepassedto rs job iter() in anrs buffers t structure.

On input, the buffers structuremustcontainthe addressandlengthof the input andoutputbuffers. Thelibrary updatesthesevaluesto indicatetheamountof remainingbuffer. So,on return,avail out is nottheamountof outputdataproduced,but rathertheamountof outputbuffer spaceunfilled. Thismeansthatthevalueson returnareconsistentwith thevalueson entry, but not necessarilywhatyou wouldexpect.

A similar systemis usedby libz andlibbz2.

Warning:The input maynot becompletelyconsumedby the iterationif thereis not enoughoutputspace.Theapplicationmustretainunusedinputdata,andpassit in againwhenit is readyfor moreoutput.

3.4 Processingwholefiles

Someapplicationsdo not requirefine-grainedcontrolover IO, but ratherjust want to processa wholefilewith a singlecall. librsyncprovides‘whole-file’ functionalityto do exactly that.

Processingof a wholefile beginswith creationof a rs job t objectfor theappropriateoperation,just asiftheapplicationwasgoing to do buffering itself. After creation,the job maybepassedto rs whole run(),whichwill feedit to andfrom two FILEsasnecessaryuntil endof file is reachedor theoperationcompletes.

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 5: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

3.5 Debugging trace and error logging 4

3.5 Debugging trace and error logging

librsync can output traceor log messagesas it proceeds.Thesefollow a fairly standardpriority-basedfiltering system(rs traceset level()), usingthesameseverity levelsasUNIX syslog.Messagesby defaultaresentto stderr, but maybepassedto anapplication-providedcallback(rs traceto(), rs tracefn t).

3.6 Encodingstatistics

Encodinganddecodingroutinesaccumulatecompressionperformancestatisticsin a rs statst structureasthey run. Thesemaybeconvertedto human-readableform or written to thelog file usingrs format stats()or rs log stats() respectively.

3.7 Utility functions

Someadditionalfunctionsareusedinternallyandalsoexposedin theAPI:

� encoding/decodingbinarydata:rs base64(), rs unbase64(), rs hexify().� MD4 messagedigests:rs mdfour(), rs mdfour begin(), rs mdfour update(), rs mdfour result().

4 librsync Data Structure Index

4.1 librsync Data Structures

Herearethedatastructureswith brief descriptions:

rs buffers s(Streamthr oughwhich the calling application feedsdata to and fr om the library) 5

rs stats(Performancestatisticsfr om a librsync encodingor decodingoperation) 7

rs target (Description of the match describedby a signature) 8

5 librsync File Index

5.1 librsync File List

Hereis a list of all documentedfiles with brief descriptions:

rsync.h (Main public interface to librsync) 9

6 librsync PageIndex

6.1 librsync RelatedPages

Hereis a list of all relateddocumentationpages:

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 6: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

7 librsync ClassDocumentation 5

Glossary 19

rdiff network delta tool 20

Todo List 20

7 librsync ClassDocumentation

7.1 rs buffers s Struct Reference

Streamthroughwhich thecalling applicationfeedsdatato andfrom thelibrary.

#include�rsync.h �

Data Fields

� char� next in

Next inputbyte.

� size t avail in

Numberof bytesavailableat next in.

� int eof in

True if there is nomore dataafter this.

� char� next out

Next outputbyteshouldbeput there.

� size t avail out

Remainingfreespaceat next out.

7.1.1 DetailedDescription

Streamthroughwhich thecalling applicationfeedsdatato andfrom thelibrary.

Oneachcall to rs job iter, thecallercanmakeavailable

� avail in bytesof inputdataat next in� avail out bytesof outputspaceat next out� someof both

Buffers mustbe allocatedandpassedin by the caller. This routinenever allocates,reallocatesor freesbuffers.

Pay attentionto themeaningof thereturnedpointerandlengthvalues.They do not indicatethe locationandamountof returneddata. Rather, if � out ptr wasoriginally setto out buf, thenthe outputdatabeginsatout buf, andhaslength � out ptr - out buf.

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 7: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

7.1 rs buffers sStruct Reference 6

Notealsothat if � avail in is nonzeroon return,thennot all of the input datahasbeenconsumed.Thecallershouldeitherprovide moreoutputbuffer spaceandcall rs work() againpassingthesamenext inandavail in, or put theremaininginputdatainto somepersistentbuffer andcall rs work() with it againwhenthereis moreoutputspace.

Parameters:next in Referencesa pointer which on entry shouldpoint to the start of the datato be encoded.

Updatedto point to thebyteafterthelastoneconsumed.

avail in Referencesthe lengthof availableinput. Updatedto be the numberof unuseddatabytes,which will bezeroif all the input wasconsumed.May bezeroif thereis no new input, but thecallerjustwantsto drainoutput.

next out Referencesapointerwhichonentrypointsto thestartof theoutputbuffer. Updatedto pointto thebyteafterthelastonefilled.

avail out Referencesthesizeof availableoutputbuffer. Updatedto thesizeof unusedoutputbuffer.

Returns:Thers resultthatcausediterationto stop.

Seealso:rs buffers t , Buffers

7.1.2 Field Documentation

7.1.2.1 char � rs buffers s::next in

Next inputbyte.

7.1.2.2 size t rs buffers s::avail in

Numberof bytesavailableat next in.

7.1.2.3 int rs buffers s::eof in

Trueif thereis no moredataafterthis.

7.1.2.4 char � rs buffers s::next out

Next outputbyteshouldbeput there.

7.1.2.5 size t rs buffers s::avail out

Remainingfreespaceat next out.

Thedocumentationfor thisstructwasgeneratedfrom thefollowing file:

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 8: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

7.2 rs statsStruct Reference 7

� rsync.h

7.2 rs statsStruct Reference

Performancestatisticsfrom a librsyncencodingor decodingoperation.

#include�rsync.h �

Data Fields

� charconst� op

Human-readablenameof currentoperation.

� int lit cmds

Numberof literal commands.

� rs long t lit bytes

Numberof literal bytes.

� rs long t lit cmdbytes

Numberof bytesusedin literal commandheaders.

� rs long t copy cmds� rs long t copy bytes� rs long t copy cmdbytes� rs long t sig cmds� rs long t sig bytes� int false matches� rs long t in bytes

Total bytesreadfrominput.

� rs long t out bytes

Total byteswritten to output.

7.2.1 DetailedDescription

Performancestatisticsfrom a librsyncencodingor decodingoperation.

Seealso:rs format stats(), rs log stats()

7.2.2 Field Documentation

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 9: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

7.3 rs targetStruct Reference 8

7.2.2.1 char const � rs stats::op

Human-readablenameof currentoperation.

For example,”delta”.

7.2.2.2 int rs stats::lit cmds

Numberof literal commands.

7.2.2.3 rs long t rs stats::lit bytes

Numberof literal bytes.

7.2.2.4 rs long t rs stats::lit cmdbytes

Numberof bytesusedin literal commandheaders.

7.2.2.5 rs long t rs stats::in bytes

Totalbytesreadfrom input.

7.2.2.6 rs long t rs stats::out bytes

Totalbyteswritten to output.

Thedocumentationfor thisstructwasgeneratedfrom thefollowing file:

� rsync.h

7.3 rs targetStruct Reference

Descriptionof thematchdescribedby asignature.

#include�sumset.h �

Data Fields

� unsignedshortt� int i

7.3.1 DetailedDescription

Descriptionof thematchdescribedby asignature.

Thedocumentationfor thisstructwasgeneratedfrom thefollowing file:

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 10: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

8 librsync File Documentation 9

� sumset.h

8 librsync File Documentation

8.1 rsync.h File Reference

Main public interfaceto librsync.

Data Structur es

� structrs stats

Performancestatisticsfroma librsyncencodingor decodingoperation.

� structrs mdfour� structrs buffers s

Streamthroughwhich thecalling applicationfeedsdatato andfromthelibrary.

Defines

� #defineRS MD4 LENGTH 16� #defineRS DEFAULT STRONG LEN 8

Default lengthof strongsignatures,in bytes.

� #defineRS DEFAULT BLOCK LEN 2048

Defaultblock length,if notdeterminedbyanyotherfactors.

Typedefs

� typedeflong rs long t

A long integer typethat canhandlethelargestfile offsets.

� typedefvoid rs tracefn t (int level, charconst � msg)

Callback to write out log messages.

� typedefstructrs statsrs statst

Performancestatisticsfroma librsyncencodingor decodingoperation.

� typedefstructrs mdfourrs mdfour t

MD4 message-digestaccumulator.

� typedefunsignedint rs weak sum t� typedefunsignedcharrs strong sum t [RS MD4 LENGTH]� typedefstructrs signaturers signature t

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 11: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

8.1 rsync.h File Reference 10

� typedefstructrs buffers s rs buffers t

Streamthroughwhich thecalling applicationfeedsdatato andfromthelibrary.

� typedefstructrs job rs job t

Job of work to bedone.

� typedefenumrs work optionsrs work options

Bitmaskvaluesthatmaybepassedto theoptionsparameterof rs work().

� typedefrs resultrs dri ven cb (rs job t � job, rs buffers t � buf, void � opaque)� typedefrs resultrs copy cb (void � opaque,off t pos,size t � len,void ��� buf)

Callback usedto retrievepartsof thebasisfile.

Enumerations

� enum rs loglevel � RS LOG EMERG = 0, RS LOG ALERT = 1, RS LOG CRIT = 2,RS LOG ERR = 3, RS LOG WARNING = 4, RS LOG NOTICE = 5, RS LOG INFO = 6,RS LOG DEBUG = 7 �

Log severity levels.

� enumrs result � RS DONE = 0, RS BLOCKED = 1, RS RUNNING = 2, RS TEST SKIPPED= 77, RS IO ERROR = 100, RS SYNTAX ERROR = 101, RS MEM ERROR = 102,RS INPUT ENDED = 103, RS BAD MAGIC = 104, RS UNIMPLEMENTED = 105,RS CORRUPT = 106,RS INTERNAL ERROR= 107,RS PARAM ERROR = 108 �

Returncodesfromnonblocking rsyncoperations.

� enumrs work options � RS END = 0x01 �Bitmaskvaluesthatmaybepassedto theoptionsparameterof rs work().

Functions

� void rs traceset level (rs loglevel level)

Settheleastimportantmessage severity thatwill beoutput.

� void rs traceto (rs tracefn t � )Settracecallback.

� void rs tracestderr(int level, charconst � msg)

Defaulttracecallback thatwritesto stderr.

� int rs supportstrace(void)

Check whetherthelibrary wascompiledwith debugging tracesuport.

� void rs hexify (char � to buf, void const � from buf, int from len)

Convert FROM LEN bytesat FROM BUF into a hex representationin TO BUF, which mustbe twice aslong plusonebytefor thenull terminator.

� size t rs unbase64(char � s)

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 12: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

8.1 rsync.h File Reference 11

Decodea base64buffer in place.

� void rs base64(unsignedcharconst � buf, int n, char � out)

Encodea buffer asbase64.

� charconst� rs strerror(rs resultr)

ReturnanEnglishdescriptionof a rs resultvalue.

� void rs mdfour (unsignedchar � out,void const � in, int n)� void rs mdfour begin (rs mdfour t � md)� void rs mdfour update (rs mdfour t � md,void const � , size t n)� void rs mdfour result (rs mdfour t � md,unsignedchar � out)� char� rs format stats(rs statst const � , char � , size t)

Returna human-readablerepresentationof statistics.

� int rs log stats(rs statst const � stats)� void rs free sumset(rs signaturet � )Deepdeallocationof checksums.

� void rs sumsetdump(rs signaturet const � )Dumpsignaturesto thelog.

� rs resultrs job iter (rs job t � , rs buffers t � )Run a rs job t state machine until it blocks (RSBLOCKED), returns an error, or completes(RS-COMPLETE).

� rs result rs job drive (rs job t � job, rs buffers t � buf, rs driven cb in cb, void � in opaque,rs -driven cbout cb,void � out opaque)

Activelyprocessa job, bymakingcallbacksto fill andemptythebuffers until thejob is done.

� rs resultrs job fr ee(rs job t � )� int rs accum value (rs job t � , char � sum,size t sum len)� rs job t � rs sig begin (size t new block len,size t strongsumlen)

Setupa new encodingjob.

� rs job t � rs deltabegin (rs signaturet � )Prepare to computea streamingdelta.

� rs job t � rs loadsigbegin (rs signaturet ��� )Reada signature froma file into an rs signature t structure in memory.

� rs job t � rs patchbegin (rs copy cb � , void � copy arg)

Applya deltato a basisto recreatethenew file.

� rs resultrs build hash table (rs signaturet � sums)� void rs mdfour file (FILE � in file, char � result)

CalculatetheMD4 sumof a file.

� rs resultrs sig file (FILE � old file, FILE � sig file, size t, size t)

Generatethesignature of a basisfile, andwrite it out to another.

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 13: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

8.1 rsync.h File Reference 12

� rs resultrs loadsigfile (FILE � sig file, rs signaturet ��� sumset)

Loadsignaturesfroma signature file into memory.

� rs resultrs file copy cb (void � arg, off t pos,size t � len,void ��� buf)

Defaultcopyimplementationthat retrievesa part of a stdiofile.

� rs resultrs delta file (rs signaturet � , FILE � new file, FILE � deltafile, rs statst � )� rs resultrs patch file (FILE � basisfile, FILE � deltafile, FILE � new file, rs statst � )

Variables

� charconstrs librsync version[ ] = (PACKAGE” ” VERSION)

Library versionstring.

� charconstrs licence string [ ]� int rs inbuflen

Buffer sizesfor file IO.

� int rs outbuflen

Buffer sizesfor file IO.

8.1.1 DetailedDescription

Main public interfaceto librsync.

Author(s):Martin Pool � [email protected]

Version:librsync-0.9.1

Id:rsync.h,v1.102001/03/1802:00:08mbpExp

SeeIntroductionfor anintroductionto useof this library.

8.1.2 DefineDocumentation

8.1.2.1 #defineRS DEFAULT STRONG LEN 8

Default lengthof strongsignatures,in bytes.

TheMD4 checksumis truncatedto thissize.

8.1.2.2 #defineRS DEFAULT BLOCK LEN 2048

Default block length,if not determinedby any otherfactors.

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 14: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

8.1 rsync.h File Reference 13

8.1.3 TypedefDocumentation

8.1.3.1 typedef long rs long t

A long integertypethatcanhandlethelargestfile offsets.

Perhapsthis might have to be configuredto be ’ long long’, ’ long’, or somethingelsedependingon theplatform.

8.1.3.2 typedef void rs trace fn t

Callbackto write out log messages.

Parameters:level asysloglevel.

msg messageto belogged.

8.1.3.3 typedef struct rs statsrs stats t

Performancestatisticsfrom a librsyncencodingor decodingoperation.

Seealso:rs format stats(), rs log stats()

8.1.3.4 struct rs mdfour rs mdfour t

MD4 message-digestaccumulator.

Seealso:rs mdfour(), rs mdfour begin(), rs mdfour update(), rs mdfour result()

8.1.3.5 typedef struct rs buffers s rs buffers t

Streamthroughwhich thecalling applicationfeedsdatato andfrom thelibrary.

Seealso:structrs buffers s , Buffers

8.1.3.6 typedef struct rs job rs job t

Jobof work to bedone.

Createdby functionssuchasrs sig begin(), andtheniteratedoverby rs job iter().

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 15: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

8.1 rsync.h File Reference 14

8.1.3.7 typedef enumrs work options rs work options

Bitmaskvaluesthatmaybepassedto theoptionsparameterof rs work().

8.1.3.8 typedef rs result rs copy cb

Callbackusedto retrievepartsof thebasisfile.

Parameters:pos Positionwherecopying shouldbegin.

len On input, the amountof datathat shouldbe retrieved. Updatedto show how muchis actuallyavailable.

buf On input, a buffer of at least � len bytes. May beupdatedto point to a buffer allocatedby thecallbackif it prefers.

8.1.4 Enumeration Type Documentation

8.1.4.1 enumrs loglevel

Log severity levels.

Thesearethesameassyslog,at leastin glibc.

Seealso:rs traceset level()

Enumeration values:RS LOG EMERG Systemis unusable.

RS LOG ALERT Action mustbetakenimmediately.

RS LOG CRIT Critical conditions.

RS LOG ERR Error conditions.

RS LOG WARNING Warningconditions.

RS LOG NOTICE Normalbut significantcondition.

RS LOG INFO Informational.

RS LOG DEBUG Debug-level messages.

8.1.4.2 enumrs result

Returncodesfrom nonblockingrsyncoperations.

Enumeration values:RS DONE Completedsuccessfully.

RS BLOCKED Blockedwaiting for moredata.

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 16: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

8.1 rsync.h File Reference 15

RS RUNNING Not yet finishedor blocked.Thisvalueshouldneverbereturnedto thecaller.

RS TEST SKIPPED Testneitherpassedor failed.

RS IO ERROR Error in file or network IO.

RS SYNTAX ERROR Commandline syntaxerror.

RS MEM ERROR Outof memory.

RS INPUT ENDED Endof inputfile, possiblyunexpected.

RS BAD MAGIC Badmagicnumberat startof stream.Probablynot a librsync file, or possiblythe wrongkind of file or from an incompatiblelibraryversion.

RS UNIMPLEMENTED Author is lazy.

RS CORRUPT Unbelievablevaluein stream.

RS INTERNAL ERROR Probablya library bug.

RS PARAM ERROR Badvaluepassedin to library, probablyanapplicationbug.

8.1.4.3 enumrs work options

Bitmaskvaluesthatmaybepassedto theoptionsparameterof rs work().

Enumeration values:RS END Endof inputfile; pleasefinish up.

8.1.5 Function Documentation

8.1.5.1 void rs trace set level (rs loglevel level)

Settheleastimportantmessageseverity thatwill beoutput.

8.1.5.2 void rs trace to (rs trace fn t � new impl)

Settracecallback.

Thecallbackschemeallowsfor usewithin applicationsthatmayhavetheirownparticularwaysof reportingerrors:log files for a webserver, perhaps,andanerrordialogfor abrowser.

Todo:Do we reallyneedsuchfine-grainedcontrol,or just yes/notracing?

8.1.5.3 void rs trace stderr (int level, char const � msg)

Default tracecallbackthatwritesto stderr.

Implementsrs tracefn t, andmaybepassedto rs traceto().

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 17: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

8.1 rsync.h File Reference 16

8.1.5.4 int rs supports trace (void)

Checkwhetherthelibrary wascompiledwith debuggingtracesuport.

If this returnsfalse,thentrying to turn traceon will achievenothing.

8.1.5.5 void rs hexify (char � to buf, void const � from buf, int from len)

Convert FROM LEN bytesat FROM BUF into a hex representationin TO BUF, which mustbetwice aslongplusonebytefor thenull terminator.

8.1.5.6 size t rs unbase64(char � s)

Decodea base64buffer in place.

Returns:thenumberof binarybytes.

8.1.5.7 void rs base64(unsignedchar const � buf, int n, char � out)

Encodeabuffer asbase64.

8.1.5.8 char const� rs strerror (rs result r)

ReturnanEnglishdescriptionof a rs resultvalue.

8.1.5.9 char � rs format stats(rs stats t const � stats, char � buf, size t size)

Returnahuman-readablerepresentationof statistics.

Thestringis truncatedif it doesnot fit. 100charactersshouldbesufficient space.

Parameters:stats Statisticsfrom anencodingor decodingoperation.

buf Buffer to receiveresult.

size Sizeof buffer.

Returns:buf

8.1.5.10 void rs fr eesumset(rs signature t � psums)

Deepdeallocationof checksums.

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 18: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

8.1 rsync.h File Reference 17

8.1.5.11 void rs sumsetdump (rs signature t const � sums)

Dumpsignaturesto thelog.

8.1.5.12 rs result rs job iter (rs job t � job, rs buffers t � buffers)

Run a rs job t state machineuntil it blocks (RS BLOCKED), returns an error, or completes(RS -COMPLETE).

Returns:Thers resultthatcausediterationto stop.

Parameters:ending True if thereis no moredataafterwhat’s in the input buffer. Thefinal block checksumwill

runacrosswhatever’s in there,without trying to accumulateanythingelse.

8.1.5.13 rs result rs job dri ve (rs job t � job, rs buffers t � buf, rs dri ven cb in cb, void � in -opaque, rs dri ven cb out cb, void � out opaque)

Actively processa job, by makingcallbacksto fill andemptythebuffersuntil thejob is done.

8.1.5.14 rs job t � rs sig begin (size t new block len, size t strong sum len)

Setup anew encodingjob.

Seealso:rs sig file()

8.1.5.15 rs job t � rs delta begin (rs signature t � sig)

Prepareto computea streamingdelta.

8.1.5.16 rs job t � rs loadsig begin (rs signature t ��� signature)

Reada signaturefrom a file into anrs signaturet structurein memory.

Oncethere,it canbeusedto generateadeltato anewerversionof thefile.

Note:After loadingthesignatures,youmustcall rs build hashtable() beforeyou canusethem.

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 19: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

8.1 rsync.h File Reference 18

8.1.5.17 rs job t � rs patch begin (rs copy cb � copy cb, void � copy arg)

Apply a deltato a basisto recreatethenew file.

Thisgivesyoubackars job t object,whichcanbecrankedby callingrs job iter() andupdatingthestreampointers.Whenfinished,call rs job finish() to disposeof it.

Parameters:stream Containspointersto input andoutputbuffers,to beadjustedby calleron eachiteration.

copycb Callbackusedto retrievecontentfrom thebasisfile.

copyarg Opaqueenvironmentpointerpassedthroughto thecallback.

Todo:As outputis produced,accumulatetheMD4 checksumof theoutput.Thenif we find a CHECKSUMcommandwe cancheckit’s contentsagainsttheoutput.ImplementCOPYcommands.

Seealso:rs patchfile()

8.1.5.18 void rs mdfour file (FILE � in file, char � result)

CalculatetheMD4 sumof afile.

Parameters:result Binary (nothex) MD4 of thewholecontentsof thefile.

8.1.5.19 rs result rs sig file (FILE � old file, FILE � sig file, size t new block len, size t strong len)

Generatethesignatureof abasisfile, andwrite it out to another.

Parameters:new block len blocksizefor signaturegeneration,in bytes

strong len truncatedlengthof strongchecksums,in bytes

Seealso:rs sig begin()

8.1.5.20 rs result rs loadsig file (FILE � sig file, rs signature t ��� sumset)

Loadsignaturesfrom a signaturefile into memory.

Returnapointerto thenewly allocatedstructurein SUMSET.

Seealso:rs readsigbegin()

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 20: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

9 librsync PageDocumentation 19

8.1.5.21 rs result rs file copy cb (void � arg, off t pos, size t � len, void ��� buf)

Default copy implementationthatretrievesapartof a stdiofile.

8.1.6 Variable Documentation

8.1.6.1 char constrs librsync version[ ] = (PACKAGE ” ” VERSION)

Library versionstring.

8.1.6.2 int rs inbuflen

Buffer sizesfor file IO.

8.1.6.3 int rs outbuflen

Buffer sizesfor file IO.

9 librsync PageDocumentation

10 Glossary

Author(s):Martin Pool � [email protected]

Id:gloss.dox,v1.12001/02/2610:19:12mbpExp

10.1 delta

A descriptionof changesnecessaryto bringa basisfile to thenew state.

10.2 basis

The old versionof a file, to which a delta is applied. The delta may useblocks from the basisfile toreconstructthenew file.

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 21: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

11 rdiff network delta tool 20

11 rdiff network delta tool

Author(s):Martin Pool

Version:

Id:rdiff.dox,v1.12001/02/2503:32:06mbpExp

Foo.

12 TodoList

global rs mdfour64(rs mdfour t � m, unsignedint � M) Recodeto be fast, and to usesystemintegertypes. Perhapsif we canfind anmdfour implementationalreadyon thesystem(e.g. in OpenSSL)thenweshoulduseit insteadof ourown?

Apparentlyrsync2.4now hasa fastMD4 routine.Soweshouldcopy thatinto here.

global rs patch begin(rs copy cb � copy cb, void � copy arg) As output is produced,accumulatetheMD4 checksumof theoutput.Thenif we find a CHECKSUMcommandwe cancheckit’s contentsagainsttheoutput.

ImplementCOPYcommands.

global rs trace to(rs trace fn t � ) Do wereally needsuchfine-grainedcontrol,or just yes/notracing?

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 22: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

Indexavail in

rs buffers s,6avail out

rs buffers s,6

basis,19

copy bytesrs stats,7

copy cmdbytesrs stats,7

copy cmdsrs stats,7

delta,19

eof inrs buffers s,6

falsematchesrs stats,7

irs target,8

in bytesrs stats,8

lit bytesrs stats,8

lit cmdbytesrs stats,8

lit cmdsrs stats,8

next inrs buffers s,6

next outrs buffers s,6

oprs stats,7

out bytesrs stats,8

rs accumvaluersync.h,11

RS BAD MAGICrsync.h,15

rs base64rsync.h,16

RS BLOCKEDrsync.h,14

rs buffers s,5

avail in, 6avail out,6eof in, 6next in, 6next out,6

rs buffers trsync.h,13

rs build hashtablersync.h,11

rs copy cbrsync.h,14

RS CORRUPTrsync.h,15

RS DEFAULT BLOCK LENrsync.h,12

RS DEFAULT STRONG LENrsync.h,12

rs deltabeginrsync.h,17

rs deltafilersync.h,12

RS DONErsync.h,14

rs driven cbrsync.h,10

RS ENDrsync.h,15

rs file copy cbrsync.h,18

rs format statsrsync.h,16

rs free sumsetrsync.h,16

rs hexifyrsync.h,16

rs inbuflenrsync.h,19

RS INPUT ENDEDrsync.h,15

RS INTERNAL ERRORrsync.h,15

RS IO ERRORrsync.h,15

rs job driversync.h,17

rs job freersync.h,11

rs job iterrsync.h,17

rs job t

Page 23: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

INDEX 22

rsync.h,13rs librsync version

rsync.h,19rs licencestring

rsync.h,12rs loadsigbegin

rsync.h,17rs loadsigfile

rsync.h,18RS LOG ALERT

rsync.h,14RS LOG CRIT

rsync.h,14RS LOG DEBUG

rsync.h,14RS LOG EMERG

rsync.h,14RS LOG ERR

rsync.h,14RS LOG INFO

rsync.h,14RS LOG NOTICE

rsync.h,14rs log stats

rsync.h,11RS LOG WARNING

rsync.h,14rs loglevel

rsync.h,14rs long t

rsync.h,13RS MD4 LENGTH

rsync.h,9rs mdfour

rsync.h,11rs mdfour begin

rsync.h,11rs mdfour file

rsync.h,18rs mdfour result

rsync.h,11rs mdfour t

rsync.h,13rs mdfour update

rsync.h,11RS MEM ERROR

rsync.h,15rs outbuflen

rsync.h,19RS PARAM ERROR

rsync.h,15rs patchbegin

rsync.h,17rs patchfile

rsync.h,12rs result

rsync.h,14RS RUNNING

rsync.h,14rs sig begin

rsync.h,17rs sig file

rsync.h,18rs signaturet

rsync.h,9rs stats,7

copy bytes,7copy cmdbytes,7copy cmds,7falsematches,7in bytes,8lit bytes,8lit cmdbytes,8lit cmds,8op,7out bytes,8sig bytes,7sig cmds,7

rs statstrsync.h,13

rs strerrorrsync.h,16

rs strongsumtrsync.h,9

rs sumsetdumprsync.h,16

rs supportstracersync.h,15

RS SYNTAX ERRORrsync.h,15

rs target,8i, 8t, 8

RS TEST SKIPPEDrsync.h,15

rs tracefn trsync.h,13

rs traceset levelrsync.h,15

rs tracestderrrsync.h,15

rs tracetorsync.h,15

rs unbase64rsync.h,16

RS UNIMPLEMENTEDrsync.h,15

rs weaksumt

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001

Page 24: librsync Reference Manualrproxy.samba.org/doxygen/librsync/refman.pdf · 2001-03-18 · Generated at Sun Mar 18 16:54:50 2001 for librsync by Doxygen written by Dimitri van Heesch

INDEX 23

rsync.h,9rs work options

rsync.h,13, 15rsync.h,9

rs accumvalue,11RS BAD MAGIC, 15rs base64,16RS BLOCKED, 14rs buffers t, 13rs build hashtable,11rs copy cb,14RS CORRUPT,15RS DEFAULT BLOCK LEN, 12RS DEFAULT STRONG LEN, 12rs deltabegin, 17rs deltafile, 12RS DONE,14rs driven cb,10RS END, 15rs file copy cb,18rs format stats,16rs free sumset,16rs hexify, 16rs inbuflen,19RS INPUT ENDED,15RS INTERNAL ERROR,15RS IO ERROR,15rs job drive,17rs job free,11rs job iter, 17rs job t, 13rs librsync version,19rs licencestring,12rs loadsigbegin, 17rs loadsigfile, 18RS LOG ALERT, 14RS LOG CRIT, 14RS LOG DEBUG, 14RS LOG EMERG,14RS LOG ERR,14RS LOG INFO, 14RS LOG NOTICE, 14rs log stats,11RS LOG WARNING, 14rs loglevel, 14rs long t, 13RS MD4 LENGTH, 9rs mdfour,11rs mdfour begin, 11rs mdfour file, 18rs mdfour result,11rs mdfour t, 13rs mdfour update,11RS MEM ERROR,15

rs outbuflen,19RS PARAM ERROR,15rs patchbegin, 17rs patchfile, 12rs result,14RS RUNNING, 14rs sig begin, 17rs sig file, 18rs signaturet, 9rs statst, 13rs strerror,16rs strongsum t, 9rs sumsetdump,16rs supportstrace,15RS SYNTAX ERROR,15RS TEST SKIPPED,15rs tracefn t, 13rs traceset level, 15rs tracestderr,15rs traceto, 15rs unbase64,16RS UNIMPLEMENTED, 15rs weaksumt, 9rs work options,13, 15

sig bytesrs stats,7

sig cmdsrs stats,7

trs target,8

Generatedat Sun Mar 18 16:54:502001for librsync by Doxygenwritten by Dimitri van Heesch c�

1997-2001