summaryrefslogtreecommitdiff
blob: 58e75402dadada8eb1b965bafc899dab21e3918c (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
/*
 * parse.h
 *
 * Parser for Gentoo style rc-scripts.
 *
 * Copyright (C) 2004,2005 Martin Schlemmer <azarah@nosferatu.za.org>
 *
 *
 *      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 2 of the License.
 *
 *      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.,
 *      675 Mass Ave, Cambridge, MA 02139, USA.
 *
 * $Header$
 */

#ifndef _PARSE_H
#define _PARSE_H

#include <sys/types.h>
#include "list.h"

#define LEGACY_CACHE_FILE_NAME	"deptree"

#define FIELD_RCSCRIPT	"RCSCRIPT"
#define FIELD_NEED	"NEED"
#define FIELD_USE	"USE"
#define FIELD_BEFORE	"BEFORE"
#define FIELD_AFTER	"AFTER"
#define FIELD_PROVIDE	"PROVIDE"
#define FIELD_FAILED	"FAILED"

typedef struct {
	struct list_head node;

	char *filename;
	time_t mtime;
	time_t confd_mtime;
} rcscript_info_t;

struct list_head rcscript_list;

int get_rcscripts(void);
int check_rcscripts_mtime(char *cachefile);
size_t generate_stage1(char **data);
size_t generate_stage2(char **data);
size_t read_stage2(char **data);
int write_stage2(FILE *outfile);
size_t generate_stage3(char **data);
size_t read_stage3(char **data);
int write_stage3(FILE *outfile);
int write_legacy_stage3(FILE *output);
int parse_cache(const char *data, size_t lenght);

/*
 * 	get_rcscripts()
 * 		|
 * 		V
 * 	check_rcscripts_mtime()	------------------------------> read_stage3()
 * 		|							|
 * 		|							|
 * 		V							V
 * 	generate_stage1() (Called by generate_stage2())		parse_cache()
 * 		|							|
 * 		|							|
 * 		V							|
 * 	generate_stage2() ----> write_stage2() (Debugging)		|
 * 		|							|
 * 		|							|
 * 		|	    === parse_cache()				|
 * 		V	    |		|				|
 * 	generate_stage3() ==|		|				|
 * 		|	    |		|				|
 * 		|	    |		V				|
 *		|	    === service_resolve_dependencies()		|
 *		|							|
 *		|							|
 * 		|-------> write_legacy_stage3() (Proof of Concept	|
 * 		|				 or Debugging)		|
 * 		|							|
 * 		V							|
 * 	write_stage3()							|
 * 		|							|
 *		|							V
 * 		|<-------------------------------------------------------
 * 		|
 * 		V
 *
 */

#endif /* _PARSE_H */