vshost-util-vserver

Build script and sources for util-vserver.
git clone https://ccx.te2000.cz/git/vshost-util-vserver
Log | Files | Refs

vcopy-init.hc (2993B)


      1 // $Id$    --*- c -*--
      2 
      3 // Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
      4 //  
      5 // This program is free software; you can redistribute it and/or modify
      6 // it under the terms of the GNU General Public License as published by
      7 // the Free Software Foundation; version 2 of the License.
      8 //  
      9 // This program is distributed in the hope that it will be useful,
     10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
     11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     12 // GNU General Public License for more details.
     13 //  
     14 // You should have received a copy of the GNU General Public License
     15 // along with this program; if not, write to the Free Software
     16 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
     17 
     18 
     19 static void
     20 createSkeleton(char const *name)
     21 {
     22   char const *	app_dir;
     23 
     24   app_dir = vc_getVserverAppDir(name, vcCFG_AUTO, "vunify");
     25   if (app_dir==0 &&
     26       vc_createSkeleton(name, vcCFG_AUTO, vcSKEL_FILESYSTEM|vcSKEL_PKGMGMT)==-1) {
     27     perror("vc_createSkeleton()");
     28     exit(1);
     29   }
     30 
     31   if (app_dir==0) {
     32     app_dir = vc_getVserverAppDir(name, vcCFG_AUTO, "");
     33       
     34     PathInfo		path = {
     35       .d = app_dir,
     36       .l = strlen(app_dir),
     37     };
     38     PathInfo		rhs_path = {
     39       .d = "vunify",
     40       .l = sizeof("vunify")-1
     41     };
     42       
     43     char		p_buf[ENSC_PI_APPSZ(path, rhs_path)];
     44     PathInfo_append(&path, &rhs_path, p_buf);
     45 
     46     Emkdir(path.d, 0755);
     47   }
     48 
     49   free(const_cast(char *)(app_dir));
     50 }
     51 
     52 
     53 static void
     54 initModeManually(int argc, char *argv[])
     55 {
     56   int		count=argc/2;
     57 
     58   if (count!=2) {
     59     WRITE_MSG(2, "Bad arguments; try '--help' for more information\n");
     60     exit(1);
     61   }
     62 
     63   MatchList_initManually(&global_info.dst_list, 0, strdup(argv[0]), argv[1]);
     64   MatchList_initManually(&global_info.src_list, 0, strdup(argv[2]), argv[3]);
     65 }
     66 
     67 
     68 static void
     69 initModeVserver(int argc, char *argv[])
     70 {
     71   int					count       = argc;
     72   struct MatchVserverInfo		src_vserver = {
     73     .name        = argv[1],
     74     .use_pkgmgmt = true
     75   };
     76 
     77   if (!MatchVserverInfo_init(&src_vserver)) {
     78     WRITE_MSG(2, "Failed to initialize unification for source-vserver\n");
     79     exit(1);
     80   }
     81 
     82   if (count!=2) {
     83     WRITE_MSG(2, "Bad arguments; try '--help' for more information\n");
     84     exit(1);
     85   }
     86 
     87   if (!MatchList_initByVserver(&global_info.src_list, &src_vserver)) {
     88     WRITE_MSG(2, "unification not configured for source vserver\n");
     89     exit(1);
     90   }
     91 
     92   MatchVserverInfo_free(&src_vserver);
     93 
     94 
     95   
     96   struct MatchVserverInfo		dst_vserver = {
     97     .name        = argv[0],
     98     .use_pkgmgmt = false
     99   };
    100   
    101   if (!global_args->is_strict)
    102     createSkeleton(dst_vserver.name);
    103   
    104   if (!MatchVserverInfo_init(&dst_vserver)) {
    105     WRITE_MSG(2, "Failed to initialize unification for destination-vserver\n");
    106     exit(1);
    107   }
    108   
    109   if (!MatchList_initByVserver(&global_info.dst_list, &dst_vserver)) {
    110     WRITE_MSG(2, "unification not configured for destination vserver\n");
    111     exit(1);
    112   }
    113 
    114   MatchVserverInfo_free(&dst_vserver);
    115 }