/* * Copyright (C) 2009, 2011, 2016 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_from_executable_zip(const char *argv0) { char *uri; gchar *s,*prefix; int ch; struct comps *comps; GError *error=NULL; s=plover_get_program(argv0); uri=g_strconcat("file:",s,NULL); g_free(s); s=g_strconcat(uri,"/repodata/comps.xml",NULL); comps=plover_comps_new_from_uri(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_uri(uri,prefix,NULL,&error)) { fprintf(stderr,"%s\n",error->message); g_error_free(error); exit(1); } g_free(prefix); free(uri); } 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_from_executable_zip(argv[0]); exit(0); }