-
Notifications
You must be signed in to change notification settings - Fork 188
/
Copy pathfiles_edit.h
68 lines (53 loc) · 2.26 KB
/
files_edit.h
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
/*
Copyright 2019 Northern.tech AS
This file is part of CFEngine 3 - written and maintained by Northern.tech AS.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; version 3.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
To the extent this program is licensed as part of the Enterprise
versions of CFEngine, the applicable Commercial Open Source License
(COSL) may apply to this file if you as a licensee so wish it. See
included file COSL.txt.
*/
#ifndef CFENGINE_FILES_EDIT_H
#define CFENGINE_FILES_EDIT_H
#include <cf3.defs.h>
#include <file_lib.h>
#ifdef HAVE_LIBXML2
#include <libxml/parser.h>
#include <libxml/xpathInternals.h>
#endif
#define CF_EDIT_IFELAPSED 1 /* NOTE: If doing copy template then edit working copy,
the edit ifelapsed must not be higher than
the copy ifelapsed. This will make the working
copy equal to the copied template file - not the
copied + edited file. */
typedef struct
{
char *filename;
Item *file_start;
int num_edits;
int num_rewrites;
#ifdef HAVE_LIBXML2
xmlDocPtr xmldoc;
#endif
NewLineMode new_line_mode;
} EditContext;
// filename must not be freed until FinishEditContext.
EditContext *NewEditContext(char *filename, const Attributes *a);
void FinishEditContext(EvalContext *ctx, EditContext *ec,
const Attributes *a, const Promise *pp,
PromiseResult *result);
#ifdef HAVE_LIBXML2
bool LoadFileAsXmlDoc(xmlDocPtr *doc, const char *file, EditDefaults ed);
bool SaveXmlDocAsFile(xmlDocPtr doc, const char *file,
const Attributes *a, NewLineMode new_line_mode);
#endif
#endif