summaryrefslogtreecommitdiff
path: root/lib/rep.h
blob: 673b85d2d71f3b9056f013622a38aecfb532bec6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/*
 * AUTHOR
 * N. Nielsen
 *
 * LICENSE
 * This software is in the public domain.
 *
 * The software is provided "as is", without warranty of any kind,
 * express or implied, including but not limited to the warranties
 * of merchantability, fitness for a particular purpose, and
 * noninfringement. In no event shall the author(s) be liable for any
 * claim, damages, or other liability, whether in an action of
 * contract, tort, or otherwise, arising from, out of, or in connection
 * with the software or the use or other dealings in the software.
 *
 * SUPPORT
 * Send bug reports to: <nielsen@memberwebs.com>
 */

#ifndef __REP_H__
#define __REP_H__

#ifdef __cplusplus
extern "C" {
#endif

#include "rlib.h"

/*
 * This file defines a higher level interface into the rlib library.
 * See "rlib.h" for the low level interface
 */


/*
 * r_context
 *  A context with all necessary information for replaces etc...
 */
typedef struct _r_context
{
	r_stream stream;		/* The rlib stream */
	r_script script;		/* The rlib script */

	r_uint block;			/* The buffer size used for replaces */
	r_uint options;			/* Options to be passed to rlibInit */
}
r_context;


/*
 * repLoad
 *  Loads a rep script from a file. Call this before repInit.
 *  This will load various options from the file in addition
 *  to the raw script (see r_context).
 *
 *  ctx:		The rep context (which should be zero'd)
 *  script:		A rep script file open for reading.
 */
int repLoad(r_context* ctx, FILE* script);


/*
 * repInit
 *  Called to initialize the rlib with your initialization options
 *  etc...
 *
 *  ctx:		The rep context to initialize
 */
int repInit(r_context* ctx);


/*
 * repFiles
 *  Runs a rep script on a file, writing output to an output
 *  file.
 *
 *  ctx:		The rep context.
 *	fileIn:		The input file opened for reading.
 *  fileOut:	The output file opened for writing.
 */
int repFiles(r_context* ctx, FILE* fileIn, FILE* fileOut);


/*
 * repFile
 *  Runs a rep script on a file, sending output to the specifed
 *  callback function.
 *
 *  ctx:		The rep context.
 *  fileIn:		The input file opened for reading.
 */
int repFile(r_context* ctx, FILE* fileIn);


/*
 * repFree
 *  Free a rep context.
 *
 *  ctx:	The rep context.
 */
void repFree(r_context* ctx);

#ifdef __cplusplus
}
#endif

#endif /* __REP_H__ */