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

Provide a tree by default and handle it name at compilation time with the...

Provide a tree by default and handle it name at compilation time with the --with-default-tree-name flag
parent f9fd498e
No related branches found
No related tags found
No related merge requests found
......@@ -33,6 +33,7 @@ Fine tuning of the installation directories:
--max-path-size=KB default maximum size of a path[1024KB]
--max-service-size=KB default maximum size of a frontend service name[256KB]
--max-tree-name-size=KB default maximum size of a tree name[256KB]
--with-default-tree-name=NAME name of the default tree[global]
--with-skeleton=DIR skeleton files directory installation [SYSDIR/66]
--with-system-log=DIR system service log directory [/var/log/66]
--with-s6-log-user=USER user for running s6-log program [root]
......@@ -199,6 +200,7 @@ max_service='500'
max_path='1024'
max_service_size='256'
max_treename='256'
default_treename='global'
skel='$sysconfdir/66'
system_dir='/var/lib/66'
system_log='/var/log/66'
......@@ -254,6 +256,7 @@ for arg ; do
--max-path-size=*) max_path=${arg#*=} ;;
--max-service-size=*) max_service_size=${arg#*=} ;;
--max-tree-name-size=*) max_treename=${arg#*=} ;;
--with-default-tree-name=*) default_treename=${arg#*=} ;;
--with-skeleton=*) skel=${arg#*=} ;;
--with-system-dir=*) system_dir=${arg#*=} ;;
--with-system-log=*) system_log=${arg#*=} ;;
......@@ -392,6 +395,10 @@ if [ $max_treename -lt 2 ]; then
fail "$0: lower limit for --max-tree-name-size is 2"
fi
if [ ${#default_treename} -gt $max_treename ]; then
fail "$0: maximum length of --with-default-tree-name is $max_treename"
fi
for i in $skel $system_dir $system_log $service_system $module_system $script_system \
$seed_system $service_adm $module_adm $service_admconf $seed_adm $user_dir $service_user \
$module_user $script_user $service_userconf $user_log $seed_user; do
......@@ -564,6 +571,7 @@ max_service := $max_service
max_path := $max_path
max_service_size := $max_service_size
max_treename := $max_treename
default_treename := $default_treename
skel := $skel
system_dir := $system_dir
system_log := $system_log
......@@ -653,6 +661,7 @@ All rights reserved.*/
#define ${package_macro_name}_MAX_PATH $max_path
#define ${package_macro_name}_MAX_SERVICE_NAME $max_service_size
#define ${package_macro_name}_MAX_TREENAME $max_treename
#define ${package_macro_name}_DEFAULT_TREENAME "$default_treename"
#define ${package_macro_name}_SYSTEM_DIR "$system_dir/"
#define ${package_macro_name}_SKEL_DIR "$skel/"
#define ${package_macro_name}_LOGGER_SYSDIR "$system_log/"
......
......@@ -83,6 +83,7 @@ int sanitize_system(ssexec_t *info)
/** set cleanup */
cleantree = info->tree.s ;
int r ;
size_t baselen = info->base.len ;
uid_t log_uid ;
gid_t log_gid ;
......@@ -165,5 +166,30 @@ int sanitize_system(ssexec_t *info)
auto_strings(dst + baselen, SS_TREE_CURRENT) ;
auto_check(dst) ;
/** create the default tree if it doesn't exist yet */
r = tree_isvalid(info->base.s, SS_DEFAULT_TREENAME) ;
if (r < 0)
log_dieu(LOG_EXIT_SYS, "check validity of tree: ", SS_DEFAULT_TREENAME) ;
if (!r) {
int nargc = 4 ;
char const *newargv[nargc] ;
unsigned int m = 0 ;
newargv[m++] = "tree" ;
newargv[m++] = "-E" ;
newargv[m++] = SS_DEFAULT_TREENAME ;
newargv[m++] = 0 ;
char *prog = PROG ;
PROG = "tree" ;
if (ssexec_tree(nargc, newargv, info))
log_dieu(LOG_EXIT_SYS, "create tree: ", SS_DEFAULT_TREENAME) ;
PROG = prog ;
}
return 1 ;
}
......@@ -39,9 +39,11 @@ int tree_sethome(ssexec_t *info)
if (!info->treename.len) {
if (!tree_find_current(&info->tree, base))
return -3 ;
/** no current tree found. Use the default one. */
if (!auto_stra(&info->tree, base, SS_SYSTEM, "/", SS_DEFAULT_TREENAME))
return 0 ;
if (!tree_setname(&info->treename,info->tree.s))
if (!tree_setname(&info->treename, info->tree.s))
return -2 ;
} else {
......@@ -56,10 +58,7 @@ int tree_sethome(ssexec_t *info)
} else if (!r) {
/** Tree doesn't exist yet.
* Let see if we have a seed/<name> to create it,
* but only if we come from the 66-enable tool. */
//if (strcmp(info->prog, "66-enable"))
// return 0 ;
* Let see if we have a seed file to create it */
if (!tree_seed_isvalid(info->treename.s))
log_warnu_return(LOG_EXIT_ZERO,"find a seed file to create the tree: ", info->treename.s) ;
......@@ -68,12 +67,15 @@ int tree_sethome(ssexec_t *info)
char const *newargv[nargc] ;
unsigned int m = 0 ;
newargv[m++] = "66-tree" ;
newargv[m++] = "66 tree" ;
newargv[m++] = info->treename.s ;
newargv[m++] = 0 ;
char *prog = PROG ;
PROG = "tree" ;
if (ssexec_tree(nargc, newargv, info))
log_warnu_return(LOG_EXIT_ZERO,"create tree: ",info->treename.s) ;
PROG = prog ;
}
/** The tree_sethome() function can be recursively called. The info->tree may not be empty.
* Be sure to clean up before using it. */
......
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