rcsfile.h revision 186700
1271294Sngie/*-
2271294Sngie * Copyright (c) 2007-2008, Ulf Lilleengen <lulf@FreeBSD.org>
3271294Sngie * All rights reserved.
4271294Sngie *
5271294Sngie * Redistribution and use in source and binary forms, with or without
6271294Sngie * modification, are permitted provided that the following conditions
7271294Sngie * are met:
8271294Sngie * 1. Redistributions of source code must retain the above copyright
9271294Sngie *    notice, this list of conditions and the following disclaimer.
10271294Sngie * 2. Redistributions in binary form must reproduce the above copyright
11271294Sngie *    notice, this list of conditions and the following disclaimer in the
12271294Sngie *    documentation and/or other materials provided with the distribution.
13271294Sngie *
14271294Sngie * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15271294Sngie * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16271294Sngie * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17275504Sngie * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18275504Sngie * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19275504Sngie * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20271294Sngie * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21271294Sngie * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22271294Sngie * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23271294Sngie * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24271294Sngie * SUCH DAMAGE.
25271294Sngie *
26271294Sngie * $FreeBSD: projects/csup_cvsmode/contrib/csup/rcsfile.h 186700 2009-01-02 12:40:58Z lulf $
27271294Sngie */
28271294Sngie
29271294Sngie#ifndef _RCSFILE_H_
30271294Sngie#define _RCSFILE_H_
31275504Sngie
32271294Sngie/* RCSFILE fields. */
33#define RCSFILE_HEAD	0
34#define RCSFILE_BRANCH	1
35#define RCSFILE_STRICT	2
36#define RCSFILE_COMMENT	3
37#define RCSFILE_EXPAND	4
38#define RCSFILE_DESC	5
39
40struct rcsfile;
41struct delta;
42struct stream;
43
44/* Fetching, sending and writing an RCS file. */
45struct rcsfile	*rcsfile_frompath(char *, char *, char *, char *, int);
46int		 rcsfile_send_details(struct rcsfile *, struct stream *);
47int		 rcsfile_write(struct rcsfile *, struct stream *);
48void		 rcsfile_print(struct rcsfile *);
49void		 rcsfile_free(struct rcsfile *);
50
51/* Used for adding and setting rcsfile values. */
52void		 rcsfile_addaccess(struct rcsfile *, char *);
53void		 rcsfile_addtag(struct rcsfile *, char *, char *);
54void		 rcsfile_importtag(struct rcsfile *, char *, char *);
55void		 rcsfile_deleterev(struct rcsfile *, char *);
56void		 rcsfile_deletetag(struct rcsfile *, char *, char *);
57struct delta	*rcsfile_getdelta(struct rcsfile *, char *);
58void		 rcsfile_setval(struct rcsfile *, int, char *);
59
60/* Functions used for operating on RCS deltas. */
61struct delta	*rcsfile_addelta(struct rcsfile *, char *, char *, char *,
62		    char *);
63void		 rcsfile_importdelta(struct rcsfile *, char *, char *, char *,
64		    char *, char *);
65
66int		 rcsdelta_addlog(struct delta *, char *, int);
67int		 rcsdelta_addtext(struct delta *, char *, int);
68void		 rcsdelta_appendlog(struct delta *, char *, size_t);
69void		 rcsdelta_appendtext(struct delta *, char *, size_t);
70void		 rcsdelta_setstate(struct delta *, char *);
71void		 rcsdelta_truncatetext(struct delta *, off_t);
72void		 rcsdelta_truncatelog(struct delta *, off_t);
73#endif /* !_RCSFILE_H_ */
74