# HG changeset patch # User J. Ali Harlow # Date 1467962789 -3600 # Node ID 296eac3183bce5d812b77facb1ef69413f3cc894 # Parent 4b52e95a01042930d54026e6cbd2d702cae8fa84 Second steps towards adding updatez diff -r 4b52e95a0104 -r 296eac3183bc plover/razor.c --- a/plover/razor.c Thu Jul 07 19:03:54 2016 +0100 +++ b/plover/razor.c Fri Jul 08 08:26:29 2016 +0100 @@ -205,6 +205,30 @@ return retval; } +gboolean plover_update_uri(const char *base_uri,const char *prefix,char **pkgs, + GError **error) +{ + gboolean retval; + GError *tmp_error=NULL; + PloverTransaction *transaction; + transaction=plover_transaction_new_update_uri(base_uri,prefix,pkgs, + &tmp_error); + if (!transaction) + { + retval=g_error_matches(tmp_error,PLOVER_POSIX_ERROR,ENOENT); + if (retval) + g_error_free(tmp_error); + else + g_propagate_error(error,tmp_error); + } + else + { + retval=plover_transaction_commit(transaction,NULL,error); + g_object_unref(transaction); + } + return retval; +} + gboolean plover_update(const char *base,const char *prefix,char **pkgs, GError **error) { diff -r 4b52e95a0104 -r 296eac3183bc plover/transaction.c --- a/plover/transaction.c Thu Jul 07 19:03:54 2016 +0100 +++ b/plover/transaction.c Fri Jul 08 08:26:29 2016 +0100 @@ -630,6 +630,26 @@ return transaction; } +PloverTransaction *plover_transaction_new_update_uri(const char *base_uri, + const char *prefix,char **pkgs,GError **error) +{ + PloverTransaction *transaction; + transaction=plover_transaction_new(); + plover_transaction_set_prefix(transaction,prefix); + if (!plover_transaction_set_upstream_from_yum_uri(transaction,base_uri, + error)) + { + g_object_unref(transaction); + return NULL; + } + if (!plover_transaction_update(transaction,pkgs,error)) + { + g_object_unref(transaction); + return NULL; + } + return transaction; +} + PloverTransaction *plover_transaction_new_update(const char *base, const char *prefix,char **pkgs,GError **error) { diff -r 4b52e95a0104 -r 296eac3183bc plover/transaction.h --- a/plover/transaction.h Thu Jul 07 19:03:54 2016 +0100 +++ b/plover/transaction.h Fri Jul 08 08:26:29 2016 +0100 @@ -65,6 +65,8 @@ const char *prefix,char **pkgs,GError **error); gboolean plover_transaction_update(PloverTransaction *transaction, char **pkgs,GError **error); +PloverTransaction *plover_transaction_new_update_uri(const char *base_uri, + const char *prefix,char **pkgs,GError **error); PloverTransaction *plover_transaction_new_update(const char *base, const char *prefix,char **pkgs,GError **error); gboolean plover_transaction_remove(PloverTransaction *transaction, diff -r 4b52e95a0104 -r 296eac3183bc plover/util.c --- a/plover/util.c Thu Jul 07 19:03:54 2016 +0100 +++ b/plover/util.c Fri Jul 08 08:26:29 2016 +0100 @@ -231,6 +231,17 @@ return path; } +char *plover_get_program(const char *argv0) +{ +#ifdef WIN32 + char path[PATH_MAX]; + GetModuleFileName(NULL,path,sizeof(path)); + return strdup(path); +#else + return strdup(argv0); +#endif +} + /* * Get the directory containing the program executable. */ diff -r 4b52e95a0104 -r 296eac3183bc update/updatez.c --- a/update/updatez.c Thu Jul 07 19:03:54 2016 +0100 +++ b/update/updatez.c Fri Jul 08 08:26:29 2016 +0100 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009, 2011 J. Ali Harlow + * 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 @@ -25,16 +25,18 @@ LUALIB_API int luaopen_posix(lua_State *L); -void update(const char *argv0) +void update_from_executable_zip(const char *argv0) { - char *path; + char *uri; 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); + 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); @@ -60,14 +62,14 @@ } } plover_comps_free(comps); - if (!plover_update(path,prefix,NULL,&error)) + if (!plover_update_uri(uri,prefix,NULL,&error)) { fprintf(stderr,"%s\n",error->message); g_error_free(error); exit(1); } g_free(prefix); - free(path); + free(uri); } int main(int argc,char **argv) @@ -75,6 +77,6 @@ plover_exception_handler_init(); razor_set_lua_loader("posix",(void (*)())luaopen_posix); razor_set_lua_loader("whelk",(void (*)())luaopen_whelk); - update(argv[0]); + update_from_executable_zip(argv[0]); exit(0); }