Skip to content
Snippets Groups Projects
Commit 64a5b389 authored by Eric Vidal's avatar Eric Vidal :speech_balloon:
Browse files

pass to int at sv_exec_s,sv_execlog_s(destination,idga). Add sv_execlog field...

pass to int at sv_exec_s,sv_execlog_s(destination,idga). Add sv_execlog field for oneshotµ. Add struct sv_module_s, pass to struct instead of union for sv_type_s and add sv_module field. Pass to int at sv_name_s(description,idga,idopts,idext,logname,dstlog and add version field. Pass to int at sv_alltype_s for pipeline field and pass to unsigned int at flags field. Remove mandatory field at keynocheck_s. Add stralloc regex at section_s. Add parse_module,regex_get{file_name,replace,regex},regex_replace function. Add write_oneshot_logger. Remove ssexec_t *info arguments at write_services. Add keep_envrion,keep_regex function. Replace get_mandatory by check_mandatory. Remove exist arguments at parse_service_before. Remove ssexec_t *info arguments at parse_service_check_enabled and replace int by char const *
parent 68befc67
No related branches found
No related tags found
No related merge requests found
...@@ -33,18 +33,16 @@ ...@@ -33,18 +33,16 @@
extern stralloc keep ; extern stralloc keep ;
extern stralloc deps ; extern stralloc deps ;
//extern genalloc gadeps ;
extern genalloc gasv ; extern genalloc gasv ;
/**struct for run and finish file*/ /**struct for run and finish file*/
typedef struct sv_exec_s sv_exec,*sv_exec_ref ; typedef struct sv_exec_s sv_exec,*sv_exec_ref ;
struct sv_exec_s struct sv_exec_s
{ {
/**build=45->auto,build=46->custom*/
int build ; int build ;
unsigned int runas ; int runas ;
unsigned int shebang ; int shebang ;
unsigned int exec ; int exec ;
} ; } ;
typedef struct sv_execlog_s sv_execlog,*sv_execlog_ref ; typedef struct sv_execlog_s sv_execlog,*sv_execlog_ref ;
...@@ -54,13 +52,13 @@ struct sv_execlog_s ...@@ -54,13 +52,13 @@ struct sv_execlog_s
/**timeout[0]->kill,timeout[1]->finish /**timeout[0]->kill,timeout[1]->finish
* kill[0][X] enabled,kill[0][0] not enabled*/ * kill[0][X] enabled,kill[0][0] not enabled*/
uint32_t timeout[2][UINT_FMT] ; uint32_t timeout[2][UINT_FMT] ;
unsigned int destination ; int destination ;
uint32_t backup ; uint32_t backup ;
uint32_t maxsize ; uint32_t maxsize ;
/**timestamp=50->tai,timestamp=51->iso,52->none*/ /**timestamp=50->tai,timestamp=51->iso,52->none*/
int timestamp ; int timestamp ;
unsigned int idga ; //pos in genalloc gadeps int idga ; //pos in stralloc deps
unsigned int nga ; //len of idga in genalloc gadeps unsigned int nga ; //number of deps in stralloc deps
} ; } ;
typedef struct sv_classic_longrun_s sv_classic_longrun,*sv_classic_ref ; typedef struct sv_classic_longrun_s sv_classic_longrun,*sv_classic_ref ;
...@@ -76,30 +74,47 @@ struct sv_oneshot_s ...@@ -76,30 +74,47 @@ struct sv_oneshot_s
{ {
sv_exec up ; sv_exec up ;
sv_exec down ; sv_exec down ;
sv_execlog log ;
} ;
typedef struct sv_module_s sv_module,*sv_module_ref ;
struct sv_module_s
{
int configure ;
int iddir ; // pos in stralloc keep -> @directories
unsigned int ndir ; //number of regex directories in stralloc keep -> @directories
int idfiles ; // pos in stralloc keep -> @files
unsigned int nfiles ; //number of regex files in stralloc keep -> @files
int start_infiles ; // pos in stralloc keep of the start of the string -> @infiles
int end_infiles ; // pos in stralloc keep of the end of the string -> @infiles
} ; } ;
typedef union sv_type_u sv_type_t,*sv_type_t_ref ; typedef struct sv_type_s sv_type_t,*sv_type_t_ref ;
union sv_type_u struct sv_type_s
{ {
sv_classic_longrun classic_longrun ; sv_classic_longrun classic_longrun ;
sv_oneshot oneshot ; sv_oneshot oneshot ;
sv_module module ;
} ; } ;
typedef struct sv_name_s sv_name_t, *sv_name_t_ref ; typedef struct sv_name_s sv_name_t, *sv_name_t_ref ;
struct sv_name_s struct sv_name_s
{ {
int itype ;/**int type =30->classic,31->bundle,32->longrun,33->oneshot*/ int itype ; //servcie type: classic->bundle->longrun->oneshot->modules
int name ;//pos in keep int name ; //pos in keep
unsigned int description ;//pos in keep int description ; //pos in keep
unsigned int idga ; //pos in genalloc gadeps-> depends field int version ; // pos in keep
unsigned int nga ; //number or deps in genalloc gadeps->depends field int idga ; //pos in stralloc deps -> @depends or @contents
unsigned int idopts ;// pos in genalloc gadeps -> optional depends unsigned int nga ; //number or deps in stralloc deps -> @depends or @contents
unsigned int nopts ; // number of optinal depends in genalloc gadeps->optional depends int idopts ; // pos in stralloc deps -> @optsdepends
unsigned int idext ;// pos in genalloc gadeps -> external depends unsigned int nopts ; // number of optional depends in stralloc deps-> @optsdepends
unsigned int next ; // number of optinal depends in genalloc gadeps->external depends int idext ; // pos in stralloc deps -> @extdepends
unsigned int logname ; //pos in keep unsigned int next ; // number of optinal depends in stralloc deps -> @extdepends
unsigned int dstlog ; //pos in keep int logname ; //pos in keep
int dstlog ; //pos in keep
} ; } ;
typedef struct sv_alltype_s sv_alltype,*sv_alltype_ref ; typedef struct sv_alltype_s sv_alltype,*sv_alltype_ref ;
struct sv_alltype_s struct sv_alltype_s
{ {
...@@ -111,7 +126,7 @@ struct sv_alltype_s ...@@ -111,7 +126,7 @@ struct sv_alltype_s
/**0->no notification*/ /**0->no notification*/
/**flags[0]->down,flags[1]->nosetsid, /**flags[0]->down,flags[1]->nosetsid,
* down[1] enabled,down[0] not enabled*/ * down[1] enabled,down[0] not enabled*/
int flags[2] ; unsigned int flags[2] ;
uint32_t notification ; uint32_t notification ;
/** array of uid_t /** array of uid_t
* the first element of the table * the first element of the table
...@@ -130,7 +145,7 @@ struct sv_alltype_s ...@@ -130,7 +145,7 @@ struct sv_alltype_s
* dir/file to copy e.g hiercopy[0]=3->3 dir/file to copy */ * dir/file to copy e.g hiercopy[0]=3->3 dir/file to copy */
uint32_t hiercopy[24] ; //dir/file to copy uint32_t hiercopy[24] ; //dir/file to copy
int signal ;//down-signal file int signal ;//down-signal file
unsigned int pipeline ; //pos in deps int pipeline ; //pos in deps
stralloc saenv ; stralloc saenv ;
/* path of the environment file, this is only concern the write /* path of the environment file, this is only concern the write
* process, the read process could be different if conf/sysadmin/service * process, the read process could be different if conf/sysadmin/service
...@@ -141,21 +156,21 @@ struct sv_alltype_s ...@@ -141,21 +156,21 @@ struct sv_alltype_s
#define SV_EXEC_ZERO \ #define SV_EXEC_ZERO \
{ \ { \
0 ,\ -1 ,\
0 ,\ -1 ,\
0 ,\ -1 ,\
0 \ -1 \
} }
#define SV_EXECLOG_ZERO \ #define SV_EXECLOG_ZERO \
{ \ { \
SV_EXEC_ZERO,\ SV_EXEC_ZERO,\
{ { 0 } } ,\ { { 0 } } ,\
-1 ,\
0 ,\ 0 ,\
0 ,\ 0 ,\
0 ,\ -1 ,\
0,\ -1 ,\
0,\
0 \ 0 \
} }
...@@ -169,27 +184,47 @@ struct sv_alltype_s ...@@ -169,27 +184,47 @@ struct sv_alltype_s
#define SV_ONESHOT_ZERO \ #define SV_ONESHOT_ZERO \
{ \ { \
SV_EXEC_ZERO,\ SV_EXEC_ZERO,\
SV_EXEC_ZERO \ SV_EXEC_ZERO, \
SV_EXECLOG_ZERO \
} }
#define SV_NAME_ZERO \ #define SV_TYPE_ZERO \
{ \
SV_CLASSIC_LONGRUN_ZERO ,\
SV_ONESHOT_ZERO , \
SV_MODULE_ZERO \
}
#define SV_MODULE_ZERO \
{ \ { \
-1 ,\ -1 ,\
-1 ,\ -1 ,\
0 ,\ 0 ,\
-1 ,\
0 ,\ 0 ,\
-1 ,\
-1 \
}
#define SV_NAME_ZERO \
{ \
-1 ,\
-1 ,\
-1 ,\
-1 ,\
-1 ,\
0 ,\ 0 ,\
-1 ,\
0 ,\ 0 ,\
-1 ,\
0 ,\ 0 ,\
0 ,\ -1 ,\
0 ,\ -1 \
0 ,\
0 \
} }
#define SV_ALLTYPE_ZERO \ #define SV_ALLTYPE_ZERO \
{ \ { \
{ SV_CLASSIC_LONGRUN_ZERO } ,\ SV_TYPE_ZERO ,\
SV_NAME_ZERO ,\ SV_NAME_ZERO ,\
{ 0 } ,\ { 0 } ,\
{ 0 } ,\ { 0 } ,\
...@@ -199,8 +234,8 @@ struct sv_alltype_s ...@@ -199,8 +234,8 @@ struct sv_alltype_s
0 , \ 0 , \
0 , \ 0 , \
{ 0 } , \ { 0 } , \
0 , \ -1 , \
0 , \ -1 , \
STRALLOC_ZERO , \ STRALLOC_ZERO , \
0 \ 0 \
} }
...@@ -214,11 +249,10 @@ struct keynocheck_s ...@@ -214,11 +249,10 @@ struct keynocheck_s
int idsec ; int idsec ;
int idkey ; int idkey ;
int expected ; int expected ;
int mandatory ;
stralloc val ; stralloc val ;
} ; } ;
#define KEYNOCHECK_ZERO { .idsec = -1, .idkey = -1, .expected = -1, .mandatory = -1, .val = STRALLOC_ZERO } #define KEYNOCHECK_ZERO { .idsec = -1, .idkey = -1, .expected = -1, .val = STRALLOC_ZERO }
extern keynocheck const keynocheck_zero ;//set in sv_alltype_zero.c extern keynocheck const keynocheck_zero ;//set in sv_alltype_zero.c
typedef struct section_s section_t,*section_t_ref ; typedef struct section_s section_t,*section_t_ref ;
...@@ -229,7 +263,8 @@ struct section_s ...@@ -229,7 +263,8 @@ struct section_s
stralloc stop ; stralloc stop ;
stralloc logger ; stralloc logger ;
stralloc environment ; stralloc environment ;
uint32_t idx[5] ; //[0] == 0 -> no, [0] == 1-> yes stralloc regex ;
uint32_t idx[6] ; //[0] == 0 -> no, [0] == 1-> yes
char const *file ; char const *file ;
} ; } ;
#define SECTION_ZERO { .main = STRALLOC_ZERO , \ #define SECTION_ZERO { .main = STRALLOC_ZERO , \
...@@ -237,6 +272,7 @@ struct section_s ...@@ -237,6 +272,7 @@ struct section_s
.stop = STRALLOC_ZERO , \ .stop = STRALLOC_ZERO , \
.logger = STRALLOC_ZERO , \ .logger = STRALLOC_ZERO , \
.environment = STRALLOC_ZERO , \ .environment = STRALLOC_ZERO , \
.regex = STRALLOC_ZERO , \
.idx = { 0 } , \ .idx = { 0 } , \
.file = 0 } .file = 0 }
...@@ -248,8 +284,8 @@ extern void freed_parser(void) ; ...@@ -248,8 +284,8 @@ extern void freed_parser(void) ;
/** enable phase */ /** enable phase */
extern void start_parser(stralloc *list,ssexec_t *info, unsigned int *nbsv,uint8_t FORCE) ; extern void start_parser(stralloc *list,ssexec_t *info, unsigned int *nbsv,uint8_t FORCE) ;
extern int parser(sv_alltype *service,stralloc *src,char const *svname,int svtype) ; extern int parser(sv_alltype *service,stralloc *src,char const *svname,int svtype) ;
extern int parse_service_check_enabled(ssexec_t *info, char const *svname,uint8_t force,uint8_t *exist) ; extern int parse_service_check_enabled(char const *tree_directory, char const *svname,uint8_t force,uint8_t *exist) ;
extern int parse_service_before(ssexec_t *info, stralloc *parsed_list, stralloc *opts_deps_list, char const *sv,unsigned int *nbsv, stralloc *sasv,uint8_t force,uint8_t *exist) ; extern int parse_service_before(ssexec_t *info, stralloc *parsed_list, stralloc *opts_deps_list, char const *sv,unsigned int *nbsv, stralloc *sasv,uint8_t force) ;
extern int parse_service_deps(ssexec_t *info,stralloc *parsed_list, stralloc *opts_deps_list, sv_alltype *sv_before, char const *sv,unsigned int *nbsv,stralloc *sasv,uint8_t force) ; extern int parse_service_deps(ssexec_t *info,stralloc *parsed_list, stralloc *opts_deps_list, sv_alltype *sv_before, char const *sv,unsigned int *nbsv,stralloc *sasv,uint8_t force) ;
extern int parse_service_opts_deps(ssexec_t *info,stralloc *parsed_list,stralloc *opts_deps_list,sv_alltype *sv_before,char const *sv,unsigned int *nbsv,stralloc *sasv,uint8_t force,uint8_t mandatory) ; extern int parse_service_opts_deps(ssexec_t *info,stralloc *parsed_list,stralloc *opts_deps_list,sv_alltype *sv_before,char const *sv,unsigned int *nbsv,stralloc *sasv,uint8_t force,uint8_t mandatory) ;
extern int parse_add_service(stralloc *parsed_list,sv_alltype *sv_before,char const *service,unsigned int *nbsv,uid_t owner) ; extern int parse_add_service(stralloc *parsed_list,sv_alltype *sv_before,char const *service,unsigned int *nbsv,uid_t owner) ;
...@@ -257,17 +293,19 @@ extern int get_svtype(sv_alltype *sv_before, char const *contents) ; ...@@ -257,17 +293,19 @@ extern int get_svtype(sv_alltype *sv_before, char const *contents) ;
/** split */ /** split */
extern int section_get_range(section_t *sasection,stralloc *src) ; extern int section_get_range(section_t *sasection,stralloc *src) ;
extern int key_get_range(genalloc *ga, section_t *sasection) ; extern int key_get_range(genalloc *ga, section_t *sasection) ;
extern int get_mandatory(genalloc *nocheck,int idsec,int idkey) ; extern int check_mandatory(sv_alltype *service, section_t *sasection) ;
extern int nocheck_toservice(keynocheck *nocheck,int svtype, sv_alltype *service) ; extern int nocheck_toservice(keynocheck *nocheck,int svtype, sv_alltype *service) ;
/** store */ /** store */
extern int keep_common(sv_alltype *service,keynocheck *nocheck,int svtype) ; extern int keep_common(sv_alltype *service,keynocheck *nocheck,int svtype) ;
extern int keep_runfinish(sv_exec *exec,keynocheck *nocheck) ; extern int keep_runfinish(sv_exec *exec,keynocheck *nocheck) ;
extern int keep_logger(sv_execlog *log,keynocheck *nocheck) ; extern int keep_logger(sv_execlog *log,keynocheck *nocheck) ;
extern int keep_environ(sv_alltype *service,keynocheck *nocheck) ;
extern int keep_regex(sv_module *module,keynocheck *nocheck) ;
/** helper */ /** helper */
extern int add_pipe(sv_alltype *sv, stralloc *sa) ; extern int add_pipe(sv_alltype *sv, stralloc *sa) ;
/** write */ /** write */
extern void start_write(stralloc *tostart,unsigned int *nclassic,unsigned int *nlongrun,char const *workdir, genalloc *gasv,ssexec_t *info,uint8_t FORCE,uint8_t CONF) ; extern void start_write(stralloc *tostart,unsigned int *nclassic,unsigned int *nlongrun,char const *workdir, genalloc *gasv,ssexec_t *info,uint8_t FORCE,uint8_t CONF) ;
extern int write_services(ssexec_t *info,sv_alltype *sv, char const *workdir, uint8_t force,uint8_t conf) ; extern int write_services(sv_alltype *sv, char const *workdir, uint8_t force,uint8_t conf) ;
extern int write_classic(sv_alltype *sv, char const *dst, uint8_t force, uint8_t conf) ; extern int write_classic(sv_alltype *sv, char const *dst, uint8_t force, uint8_t conf) ;
extern int write_longrun(sv_alltype *sv,char const *dst, uint8_t force, uint8_t conf) ; extern int write_longrun(sv_alltype *sv,char const *dst, uint8_t force, uint8_t conf) ;
extern int write_oneshot(sv_alltype *sv,char const *dst, uint8_t conf) ; extern int write_oneshot(sv_alltype *sv,char const *dst, uint8_t conf) ;
...@@ -279,5 +317,11 @@ extern int write_logger(sv_alltype *sv, sv_execlog *log,char const *name, char c ...@@ -279,5 +317,11 @@ extern int write_logger(sv_alltype *sv, sv_execlog *log,char const *name, char c
extern int write_consprod(sv_alltype *sv,char const *prodname,char const *consname,char const *proddst,char const *consdst) ; extern int write_consprod(sv_alltype *sv,char const *prodname,char const *consname,char const *proddst,char const *consdst) ;
extern int write_dependencies(unsigned int nga,unsigned int idga,char const *dst,char const *filename) ; extern int write_dependencies(unsigned int nga,unsigned int idga,char const *dst,char const *filename) ;
extern int write_env(char const *name,stralloc *sa,char const *dst) ; extern int write_env(char const *name,stralloc *sa,char const *dst) ;
extern int write_oneshot_logger(stralloc *destlog, sv_alltype *sv) ;
/** module */
extern int parse_module(sv_alltype *sv_before,char const *svname,uid_t owner,uint8_t force) ;
extern int regex_get_file_name(char *filename,char const *str) ;
extern int regex_get_replace(char *replace, char const *str) ;
extern int regex_get_regex(char *regex, char const *str) ;
extern int regex_replace(int id,unsigned int nid, char const *sdir,mode_t mode) ;
#endif #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment