diff -r a29623b68ca2 -r 4b52e95a0104 update/updatez.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/update/updatez.c Thu Jul 07 19:03:54 2016 +0100 @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2009, 2011 J. Ali Harlow + * + * 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; either version 2 of the License, or + * (at your option) any later version. + * + * 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., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include +#include +#include "config.h" +#include "plover/plover.h" +#include "whelk/whelk.h" + +LUALIB_API int luaopen_posix(lua_State *L); + +void update(const char *argv0) +{ + char *path; + gchar *s,*prefix; + int ch; + struct comps *comps; + GError *error=NULL; + path=plover_get_program_directory(argv0); + s=g_strconcat(path,"/repodata/comps.xml",NULL); + comps=plover_comps_new_from_file(s); + if (!comps) + { + perror(s); + exit(1); + } + g_free(s); + prefix=plover_default_prefix_for_vendor(comps->vendor); + if (!plover_installed_files_match_prefix(prefix)) + { + printf("The existing installation is not under %s\n" + "In order to continue, all the existing packages must be removed.\n" + "Do you want to remove all existing packages? ",prefix); + ch=getchar(); + if (ch!='y' && ch!='Y' && ch!=EOF && ch!='\n') + exit(1); + while(ch!='\n' && ch!=EOF) + ch=getchar(); + if (plover_remove(NULL,&error)) + { + fprintf(stderr,"%s\n",error->message); + g_error_free(error); + exit(1); + } + } + plover_comps_free(comps); + if (!plover_update(path,prefix,NULL,&error)) + { + fprintf(stderr,"%s\n",error->message); + g_error_free(error); + exit(1); + } + g_free(prefix); + free(path); +} + +int main(int argc,char **argv) +{ + plover_exception_handler_init(); + razor_set_lua_loader("posix",(void (*)())luaopen_posix); + razor_set_lua_loader("whelk",(void (*)())luaopen_whelk); + update(argv[0]); + exit(0); +}