update/update.c
author J. Ali Harlow <ali@juiblex.co.uk>
Fri Mar 23 20:29:50 2012 +0000 (2012-03-23)
changeset 23 e29384105b8d
parent 3 868db5c1f2d7
child 24 2b9f54d14cc2
permissions -rw-r--r--
Release 0.4.3
     1 /*
     2  * Copyright (C) 2009, 2011  J. Ali Harlow <ali@juiblex.co.uk>
     3  *
     4  * This program is free software; you can redistribute it and/or modify
     5  * it under the terms of the GNU General Public License as published by
     6  * the Free Software Foundation; either version 2 of the License, or
     7  * (at your option) any later version.
     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 along
    15  * with this program; if not, write to the Free Software Foundation, Inc.,
    16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
    17  */
    18 
    19 #include <stdlib.h>
    20 #include <stdio.h>
    21 #include <lua.h>
    22 #include "config.h"
    23 #include "plover/plover.h"
    24 #include "whelk/whelk.h"
    25 
    26 LUALIB_API int luaopen_posix(lua_State *L);
    27 
    28 void update(const char *argv0)
    29 {
    30     char *path,*s,*prefix;
    31     int ch;
    32     struct comps *comps;
    33     path=plover_get_program_directory(argv0);
    34     s=plover_strconcat(path,"/repodata/comps.xml",NULL);
    35     comps=plover_comps_new_from_file(s);
    36     if (!comps)
    37     {
    38 	perror(s);
    39 	exit(1);
    40     }
    41     free(s);
    42     prefix=plover_default_prefix_for_vendor(comps->vendor);
    43     if (!plover_installed_files_match_prefix(prefix))
    44     {
    45 	printf("The existing installation is not under %s\n"
    46 	  "In order to continue, all the existing packages must be removed.\n"
    47 	  "Do you want to remove all existing packages? ",prefix);
    48 	ch=getchar();
    49 	if (ch!='y' && ch!='Y' && ch!=EOF && ch!='\n')
    50 	    exit(1);
    51 	while(ch!='\n' && ch!=EOF)
    52 	    ch=getchar();
    53 	plover_remove(NULL);
    54     }
    55     plover_comps_free(comps);
    56     plover_update(path,prefix,NULL);
    57     free(prefix);
    58     free(path);
    59 }
    60 
    61 int main(int argc,char **argv)
    62 {
    63     razor_set_lua_loader("posix",luaopen_posix);
    64     razor_set_lua_loader("whelk",luaopen_whelk);
    65     update(argv[0]);
    66     exit(0);
    67 }