bin: no point in cleaning up resources when it's exiting...
This commit is contained in:
parent
647aa0727f
commit
e2176ec4b6
@ -468,20 +468,6 @@ process_entry_memory(struct archive *ar, const void *src, const char *file)
|
||||
archive_entry_free(entry);
|
||||
}
|
||||
|
||||
static void
|
||||
destroy_xentry(struct xentry *xe)
|
||||
{
|
||||
assert(xe);
|
||||
|
||||
free(xe->file);
|
||||
free(xe->type);
|
||||
if (xe->target)
|
||||
free(xe->target);
|
||||
if (xe->hash)
|
||||
free(xe->hash);
|
||||
free(xe);
|
||||
}
|
||||
|
||||
static void
|
||||
process_archive(struct archive *ar,
|
||||
struct archive_entry_linkresolver *resolver,
|
||||
@ -516,16 +502,14 @@ process_archive(struct archive *ar,
|
||||
while ((xe = TAILQ_FIRST(&xentry_list)) != NULL) {
|
||||
TAILQ_REMOVE(&xentry_list, xe, entries);
|
||||
if ((strcmp(xe->type, "metadata") == 0) ||
|
||||
(strcmp(xe->type, "dirs") == 0)) {
|
||||
destroy_xentry(xe);
|
||||
(strcmp(xe->type, "dirs") == 0))
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!quiet) {
|
||||
printf("%s: adding `%s' ...\n", pkgver, xe->file);
|
||||
fflush(stdout);
|
||||
}
|
||||
process_entry_file(ar, resolver, xe, NULL);
|
||||
destroy_xentry(xe);
|
||||
}
|
||||
}
|
||||
|
||||
@ -778,8 +762,6 @@ main(int argc, char **argv)
|
||||
/* close and free archive */
|
||||
archive_write_free(ar);
|
||||
|
||||
prop_object_release(pkg_propsd);
|
||||
prop_object_release(pkg_filesd);
|
||||
/*
|
||||
* Archive was created successfully; flush data to storage,
|
||||
* set permissions and rename to dest file; from the caller's
|
||||
@ -794,6 +776,8 @@ main(int argc, char **argv)
|
||||
if (fchmod(pkg_fd, 0666 & ~myumask) == -1)
|
||||
die("cannot fchmod() %s:", tname);
|
||||
|
||||
close(pkg_fd);
|
||||
|
||||
if (rename(tname, binpkg) == -1)
|
||||
die("cannot rename %s to %s:", tname, binpkg);
|
||||
|
||||
@ -802,9 +786,5 @@ main(int argc, char **argv)
|
||||
printf("%s: binary package created successfully (%s)\n",
|
||||
pkgver, binpkg);
|
||||
|
||||
free(binpkg);
|
||||
free(pkgname);
|
||||
close(pkg_fd);
|
||||
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
@ -525,8 +525,5 @@ main(int argc, char **argv)
|
||||
*/
|
||||
create_dot_graph(&xh, f, plistd, confd, revdeps);
|
||||
|
||||
prop_object_release(confd);
|
||||
xbps_end(&xh);
|
||||
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
@ -37,8 +37,6 @@
|
||||
#include <xbps_api.h>
|
||||
#include "defs.h"
|
||||
|
||||
static struct xbps_handle xh;
|
||||
|
||||
static void __attribute__((noreturn))
|
||||
usage(bool fail)
|
||||
{
|
||||
@ -62,13 +60,6 @@ usage(bool fail)
|
||||
exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
static void __attribute__((noreturn))
|
||||
cleanup_sighandler(int signum)
|
||||
{
|
||||
xbps_end(&xh);
|
||||
_exit(signum);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
@ -90,8 +81,8 @@ main(int argc, char **argv)
|
||||
{ "yes", no_argument, NULL, 'y' },
|
||||
{ NULL, 0, NULL, 0 }
|
||||
};
|
||||
struct xbps_handle xh;
|
||||
struct xferstat xfer;
|
||||
struct sigaction sa;
|
||||
const char *rootdir, *cachedir, *conffile, *defrepo;
|
||||
int i, c, flags, rv;
|
||||
bool skip_sync, yes, reinstall, drun, update;
|
||||
@ -176,15 +167,6 @@ main(int argc, char **argv)
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/*
|
||||
* Register a signal handler to clean up resources used by libxbps.
|
||||
*/
|
||||
memset(&sa, 0, sizeof(sa));
|
||||
sa.sa_handler = cleanup_sighandler;
|
||||
sigaction(SIGHUP, &sa, NULL);
|
||||
sigaction(SIGINT, &sa, NULL);
|
||||
sigaction(SIGTERM, &sa, NULL);
|
||||
|
||||
maxcols = get_maxcols();
|
||||
/*
|
||||
* Check that we have write permission on rootdir, metadir
|
||||
@ -197,8 +179,7 @@ main(int argc, char **argv)
|
||||
fprintf(stderr, "Not enough permissions on "
|
||||
"rootdir/cachedir/metadir: %s\n",
|
||||
strerror(errno));
|
||||
rv = errno;
|
||||
goto out;
|
||||
exit(errno);
|
||||
}
|
||||
}
|
||||
|
||||
@ -206,7 +187,7 @@ main(int argc, char **argv)
|
||||
if (!skip_sync || !drun) {
|
||||
rv = xbps_rpool_sync(&xh, XBPS_PKGINDEX, NULL);
|
||||
if (rv != 0)
|
||||
goto out;
|
||||
exit(rv);
|
||||
}
|
||||
|
||||
if (update && (argc == optind)) {
|
||||
@ -217,7 +198,7 @@ main(int argc, char **argv)
|
||||
for (i = optind; i < argc; i++) {
|
||||
rv = update_pkg(&xh, argv[i]);
|
||||
if (rv != 0)
|
||||
goto out;
|
||||
exit(rv);
|
||||
}
|
||||
rv = exec_transaction(&xh, maxcols, yes, drun);
|
||||
} else if (!update) {
|
||||
@ -225,12 +206,10 @@ main(int argc, char **argv)
|
||||
for (i = optind; i < argc; i++) {
|
||||
rv = install_new_pkg(&xh, argv[i], reinstall);
|
||||
if (rv != 0)
|
||||
goto out;
|
||||
exit(rv);
|
||||
}
|
||||
rv = exec_transaction(&xh, maxcols, yes, drun);
|
||||
}
|
||||
|
||||
out:
|
||||
xbps_end(&xh);
|
||||
exit(rv);
|
||||
}
|
||||
|
@ -104,8 +104,6 @@ check_pkg_integrity_all(struct xbps_handle *xhp)
|
||||
for (i = 0; i < maxthreads; i++)
|
||||
pthread_join(thd[i].thread, NULL);
|
||||
|
||||
free(thd);
|
||||
|
||||
if ((rv = xbps_pkgdb_update(xhp, true)) != 0) {
|
||||
xbps_error_printf("failed to write pkgdb: %s\n",
|
||||
strerror(rv));
|
||||
|
@ -122,6 +122,5 @@ main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
xbps_end(&xh);
|
||||
exit(rv ? EXIT_FAILURE : EXIT_SUCCESS);
|
||||
}
|
||||
|
@ -138,7 +138,6 @@ list_orphans(struct xbps_handle *xhp)
|
||||
prop_dictionary_get_cstring_nocopy(obj, "pkgver", &pkgver);
|
||||
printf("%s\n", pkgver);
|
||||
}
|
||||
prop_object_iterator_release(iter);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -260,6 +260,5 @@ main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
xbps_end(&xh);
|
||||
exit(rv);
|
||||
}
|
||||
|
@ -64,7 +64,6 @@ show_pkg_revdeps(struct xbps_handle *xhp, const char *pkg)
|
||||
prop_array_get_cstring_nocopy(reqby, i, &pkgdep);
|
||||
printf("%s\n", pkgdep);
|
||||
}
|
||||
prop_object_release(reqby);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -171,7 +171,6 @@ show_pkg_info(prop_dictionary_t dict)
|
||||
|
||||
print_value_obj(keyname, obj, NULL, false);
|
||||
}
|
||||
prop_object_release(all_keys);
|
||||
}
|
||||
|
||||
int
|
||||
@ -210,7 +209,6 @@ show_pkg_files(prop_dictionary_t filesd)
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
prop_object_release(allkeys);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -286,7 +284,6 @@ int
|
||||
repo_show_pkg_files(struct xbps_handle *xhp, const char *pkg)
|
||||
{
|
||||
prop_dictionary_t pkgd;
|
||||
int rv;
|
||||
|
||||
pkgd = xbps_rpool_get_pkg_plist(xhp, pkg, "./files.plist");
|
||||
if (pkgd == NULL) {
|
||||
@ -297,8 +294,5 @@ repo_show_pkg_files(struct xbps_handle *xhp, const char *pkg)
|
||||
}
|
||||
}
|
||||
|
||||
rv = show_pkg_files(pkgd);
|
||||
prop_object_release(pkgd);
|
||||
return rv;
|
||||
|
||||
return show_pkg_files(pkgd);
|
||||
}
|
||||
|
@ -159,6 +159,5 @@ main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
xbps_end(&xh);
|
||||
exit(rv ? EXIT_FAILURE : EXIT_SUCCESS);
|
||||
}
|
||||
|
@ -39,8 +39,6 @@
|
||||
#include <xbps_api.h>
|
||||
#include "../xbps-install/defs.h"
|
||||
|
||||
static struct xbps_handle xh;
|
||||
|
||||
static void __attribute__((noreturn))
|
||||
usage(bool fail)
|
||||
{
|
||||
@ -64,13 +62,6 @@ usage(bool fail)
|
||||
exit(fail ? EXIT_FAILURE : EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
static void __attribute__((noreturn))
|
||||
cleanup_sighandler(int signum)
|
||||
{
|
||||
xbps_end(&xh);
|
||||
_exit(signum);
|
||||
}
|
||||
|
||||
static void
|
||||
state_cb_rm(struct xbps_state_cb_data *xscd, void *cbdata)
|
||||
{
|
||||
@ -256,7 +247,7 @@ main(int argc, char **argv)
|
||||
{ "yes", no_argument, NULL, 'y' },
|
||||
{ NULL, 0, NULL, 0 }
|
||||
};
|
||||
struct sigaction sa;
|
||||
struct xbps_handle xh;
|
||||
const char *rootdir, *cachedir, *conffile;
|
||||
int i, c, flags, rv;
|
||||
bool yes, drun, recursive, ignore_revdeps, clean_cache;
|
||||
@ -337,15 +328,6 @@ main(int argc, char **argv)
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
/*
|
||||
* Register a signal handler to clean up resources used by libxbps.
|
||||
*/
|
||||
memset(&sa, 0, sizeof(sa));
|
||||
sa.sa_handler = cleanup_sighandler;
|
||||
sigaction(SIGHUP, &sa, NULL);
|
||||
sigaction(SIGINT, &sa, NULL);
|
||||
sigaction(SIGTERM, &sa, NULL);
|
||||
|
||||
maxcols = get_maxcols();
|
||||
/*
|
||||
* Check that we have write permission on rootdir, metadir
|
||||
@ -358,15 +340,14 @@ main(int argc, char **argv)
|
||||
fprintf(stderr, "Not enough permissions on "
|
||||
"rootdir/cachedir/metadir: %s\n",
|
||||
strerror(errno));
|
||||
rv = errno;
|
||||
goto out;
|
||||
exit(errno);
|
||||
}
|
||||
}
|
||||
|
||||
if (clean_cache) {
|
||||
rv = cachedir_clean(&xh);
|
||||
if (rv != 0)
|
||||
goto out;
|
||||
exit(rv);;
|
||||
}
|
||||
|
||||
if (orphans) {
|
||||
@ -374,10 +355,9 @@ main(int argc, char **argv)
|
||||
if (rv != ENOENT) {
|
||||
fprintf(stderr, "Failed to queue package "
|
||||
"orphans: %s\n", strerror(rv));
|
||||
goto out;
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
rv = 0;
|
||||
goto out;
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
}
|
||||
|
||||
@ -386,19 +366,15 @@ main(int argc, char **argv)
|
||||
if (rv == 0)
|
||||
continue;
|
||||
else if (rv != EEXIST)
|
||||
goto out;
|
||||
exit(rv);
|
||||
else
|
||||
reqby_force = true;
|
||||
}
|
||||
if (reqby_force && !ignore_revdeps) {
|
||||
rv = EINVAL;
|
||||
goto out;
|
||||
}
|
||||
if (reqby_force && !ignore_revdeps)
|
||||
exit(EXIT_FAILURE);
|
||||
|
||||
if (orphans || (argc > optind))
|
||||
rv = exec_transaction(&xh, maxcols, yes, drun);
|
||||
|
||||
out:
|
||||
xbps_end(&xh);
|
||||
exit(rv);
|
||||
}
|
||||
|
@ -59,10 +59,9 @@ index_add(struct xbps_handle *xhp, int argc, char **argv)
|
||||
idx = idxfiles = newpkgd = newpkgfilesd = curpkgd = NULL;
|
||||
tmpfilen = tmprepodir = plist = plistf = NULL;
|
||||
|
||||
if ((tmprepodir = strdup(argv[0])) == NULL) {
|
||||
rv = ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
if ((tmprepodir = strdup(argv[0])) == NULL)
|
||||
return ENOMEM;
|
||||
|
||||
repodir = dirname(tmprepodir);
|
||||
|
||||
/* Internalize index or create it if doesn't exist */
|
||||
@ -73,8 +72,7 @@ index_add(struct xbps_handle *xhp, int argc, char **argv)
|
||||
if (errno != ENOENT) {
|
||||
fprintf(stderr, "index: cannot read `%s': %s\n",
|
||||
plist, strerror(errno));
|
||||
rv = -1;
|
||||
goto out;
|
||||
return -1;
|
||||
} else {
|
||||
idx = prop_dictionary_create();
|
||||
assert(idx);
|
||||
@ -88,8 +86,7 @@ index_add(struct xbps_handle *xhp, int argc, char **argv)
|
||||
if (errno != ENOENT) {
|
||||
fprintf(stderr, "index: cannot read `%s': %s\n",
|
||||
plistf, strerror(errno));
|
||||
rv = -1;
|
||||
goto out;
|
||||
return -1;
|
||||
} else {
|
||||
idxfiles = prop_dictionary_create();
|
||||
assert(idx);
|
||||
@ -100,10 +97,9 @@ index_add(struct xbps_handle *xhp, int argc, char **argv)
|
||||
* Process all packages specified in argv.
|
||||
*/
|
||||
for (i = 0; i < argc; i++) {
|
||||
if ((tmpfilen = strdup(argv[i])) == NULL) {
|
||||
rv = ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
if ((tmpfilen = strdup(argv[i])) == NULL)
|
||||
return ENOMEM;
|
||||
|
||||
filen = basename(tmpfilen);
|
||||
/*
|
||||
* Read metadata props plist dictionary from binary package.
|
||||
@ -137,12 +133,8 @@ index_add(struct xbps_handle *xhp, int argc, char **argv)
|
||||
*/
|
||||
curpkgd = prop_dictionary_get(idx, pkgname);
|
||||
if (curpkgd == NULL) {
|
||||
if (errno && errno != ENOENT) {
|
||||
prop_object_release(newpkgd);
|
||||
free(tmpfilen);
|
||||
rv = errno;
|
||||
goto out;
|
||||
}
|
||||
if (errno && errno != ENOENT)
|
||||
return errno;
|
||||
} else {
|
||||
prop_dictionary_get_cstring_nocopy(curpkgd,
|
||||
"filename", &oldfilen);
|
||||
@ -170,12 +162,9 @@ index_add(struct xbps_handle *xhp, int argc, char **argv)
|
||||
oldpkgver, oldarch);
|
||||
rv = remove_pkg(repodir,
|
||||
oldarch, oldfilen);
|
||||
if (rv != 0) {
|
||||
prop_object_release(newpkgd);
|
||||
free(tmpfilen);
|
||||
free(buf);
|
||||
goto out;
|
||||
}
|
||||
if (rv != 0)
|
||||
return rv;
|
||||
|
||||
printf("index: removed obsolete binpkg %s.\n", buf);
|
||||
free(buf);
|
||||
prop_object_release(newpkgd);
|
||||
@ -190,13 +179,9 @@ index_add(struct xbps_handle *xhp, int argc, char **argv)
|
||||
buf2 = strdup(oldpkgver);
|
||||
assert(buf2);
|
||||
rv = remove_pkg(repodir, oldarch, oldfilen);
|
||||
if (rv != 0) {
|
||||
free(buf);
|
||||
free(buf2);
|
||||
prop_object_release(newpkgd);
|
||||
free(tmpfilen);
|
||||
goto out;
|
||||
}
|
||||
if (rv != 0)
|
||||
return rv;
|
||||
|
||||
prop_dictionary_remove(idx, pkgname);
|
||||
free(buf2);
|
||||
printf("index: removed obsolete entry/binpkg %s.\n", buf);
|
||||
@ -206,49 +191,30 @@ index_add(struct xbps_handle *xhp, int argc, char **argv)
|
||||
* We have the dictionary now, add the required
|
||||
* objects for the index.
|
||||
*/
|
||||
if (!prop_dictionary_set_cstring(newpkgd, "filename", filen)) {
|
||||
rv = errno;
|
||||
prop_object_release(newpkgd);
|
||||
free(tmpfilen);
|
||||
goto out;
|
||||
}
|
||||
if ((sha256 = xbps_file_hash(argv[i])) == NULL) {
|
||||
rv = errno;
|
||||
prop_object_release(newpkgd);
|
||||
free(tmpfilen);
|
||||
goto out;
|
||||
}
|
||||
if (!prop_dictionary_set_cstring(newpkgd, "filename", filen))
|
||||
return errno;
|
||||
|
||||
if ((sha256 = xbps_file_hash(argv[i])) == NULL)
|
||||
return errno;
|
||||
|
||||
if (!prop_dictionary_set_cstring(newpkgd, "filename-sha256",
|
||||
sha256)) {
|
||||
free(sha256);
|
||||
prop_object_release(newpkgd);
|
||||
free(tmpfilen);
|
||||
rv = errno;
|
||||
goto out;
|
||||
}
|
||||
sha256))
|
||||
return errno;
|
||||
|
||||
free(sha256);
|
||||
if (stat(argv[i], &st) == -1) {
|
||||
prop_object_release(newpkgd);
|
||||
free(tmpfilen);
|
||||
rv = errno;
|
||||
goto out;
|
||||
}
|
||||
if (stat(argv[i], &st) == -1)
|
||||
return errno;
|
||||
|
||||
if (!prop_dictionary_set_uint64(newpkgd, "filename-size",
|
||||
(uint64_t)st.st_size)) {
|
||||
prop_object_release(newpkgd);
|
||||
free(tmpfilen);
|
||||
rv = errno;
|
||||
goto out;
|
||||
return errno;
|
||||
}
|
||||
/*
|
||||
* Add new pkg dictionary into the index.
|
||||
*/
|
||||
if (!prop_dictionary_set(idx, pkgname, newpkgd)) {
|
||||
prop_object_release(newpkgd);
|
||||
free(tmpfilen);
|
||||
rv = EINVAL;
|
||||
goto out;
|
||||
}
|
||||
if (!prop_dictionary_set(idx, pkgname, newpkgd))
|
||||
return EINVAL;
|
||||
|
||||
flush = true;
|
||||
printf("index: added `%s-%s' (%s).\n", pkgname, version, arch);
|
||||
free(tmpfilen);
|
||||
@ -258,10 +224,8 @@ index_add(struct xbps_handle *xhp, int argc, char **argv)
|
||||
found = false;
|
||||
newpkgfilesd = xbps_get_pkg_plist_from_binpkg(argv[i],
|
||||
"./files.plist");
|
||||
if (newpkgfilesd == NULL) {
|
||||
rv = EINVAL;
|
||||
goto out;
|
||||
}
|
||||
if (newpkgfilesd == NULL)
|
||||
return EINVAL;
|
||||
|
||||
/* Find out if binary pkg stored in index contain any file */
|
||||
pkg_cffiles = prop_dictionary_get(newpkgfilesd, "conf_files");
|
||||
@ -341,32 +305,18 @@ index_add(struct xbps_handle *xhp, int argc, char **argv)
|
||||
if (flush && !prop_dictionary_externalize_to_zfile(idx, plist)) {
|
||||
fprintf(stderr, "index: failed to externalize plist: %s\n",
|
||||
strerror(errno));
|
||||
rv = -1;
|
||||
goto out;
|
||||
return -1;
|
||||
}
|
||||
if (files_flush &&
|
||||
!prop_dictionary_externalize_to_zfile(idxfiles, plistf)) {
|
||||
fprintf(stderr, "index-files: failed to externalize "
|
||||
"plist: %s\n", strerror(errno));
|
||||
rv = -1;
|
||||
goto out;
|
||||
return -1;
|
||||
}
|
||||
printf("index: %u packages registered.\n",
|
||||
prop_dictionary_count(idx));
|
||||
printf("index-files: %u packages registered.\n",
|
||||
prop_dictionary_count(idxfiles));
|
||||
|
||||
out:
|
||||
if (tmprepodir)
|
||||
free(tmprepodir);
|
||||
if (plist)
|
||||
free(plist);
|
||||
if (plistf)
|
||||
free(plistf);
|
||||
if (idx)
|
||||
prop_object_release(idx);
|
||||
if (idxfiles)
|
||||
prop_object_release(idxfiles);
|
||||
|
||||
return rv;
|
||||
return 0;
|
||||
}
|
||||
|
@ -113,29 +113,23 @@ index_clean(struct xbps_handle *xhp, const char *repodir)
|
||||
if (errno != ENOENT) {
|
||||
fprintf(stderr, "index: cannot read `%s': %s\n",
|
||||
plist, strerror(errno));
|
||||
free(plist);
|
||||
return -1;
|
||||
} else {
|
||||
free(plist);
|
||||
} else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
idxfiles = prop_dictionary_internalize_from_zfile(plistf);
|
||||
if (idxfiles == NULL) {
|
||||
if (errno != ENOENT) {
|
||||
fprintf(stderr, "index: cannot read `%s': %s\n",
|
||||
plistf, strerror(errno));
|
||||
rv = -1;
|
||||
goto out;
|
||||
} else {
|
||||
goto out;
|
||||
}
|
||||
return -1;
|
||||
} else
|
||||
return 0;
|
||||
}
|
||||
if (chdir(repodir) == -1) {
|
||||
fprintf(stderr, "index: cannot chdir to %s: %s\n",
|
||||
repodir, strerror(errno));
|
||||
rv = -1;
|
||||
goto out;
|
||||
return -1;
|
||||
}
|
||||
printf("Cleaning `%s' index, please wait...\n", repodir);
|
||||
|
||||
@ -177,7 +171,6 @@ index_clean(struct xbps_handle *xhp, const char *repodir)
|
||||
}
|
||||
prop_object_release(thd[i].result);
|
||||
}
|
||||
free(thd);
|
||||
if (!flush)
|
||||
goto out;
|
||||
|
||||
@ -192,14 +185,5 @@ out:
|
||||
printf("index-files: %u packages registered.\n",
|
||||
prop_dictionary_count(idxfiles));
|
||||
|
||||
if (plist)
|
||||
free(plist);
|
||||
if (plistf)
|
||||
free(plistf);
|
||||
if (idx)
|
||||
prop_object_release(idx);
|
||||
if (idxfiles)
|
||||
prop_object_release(idxfiles);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
@ -106,6 +106,5 @@ main(int argc, char **argv)
|
||||
else if (rm_mode)
|
||||
rv = remove_obsoletes(&xh, argv[optind]);
|
||||
|
||||
xbps_end(&xh);
|
||||
exit(rv ? EXIT_FAILURE : EXIT_SUCCESS);
|
||||
}
|
||||
|
@ -119,12 +119,9 @@ remove_obsoletes(struct xbps_handle *xhp, const char *repodir)
|
||||
if (errno != ENOENT) {
|
||||
fprintf(stderr, "xbps-rindex: cannot read `%s': %s\n",
|
||||
plist, strerror(errno));
|
||||
free(plist);
|
||||
return -1;
|
||||
} else {
|
||||
free(plist);
|
||||
} else
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
/* initialize repository index */
|
||||
ri.repod = idx;
|
||||
@ -134,13 +131,11 @@ remove_obsoletes(struct xbps_handle *xhp, const char *repodir)
|
||||
if (chdir(repodir) == -1) {
|
||||
fprintf(stderr, "xbps-rindex: cannot chdir to %s: %s\n",
|
||||
repodir, strerror(errno));
|
||||
prop_object_release(idx);
|
||||
return errno;
|
||||
}
|
||||
if ((dirp = opendir(repodir)) == NULL) {
|
||||
fprintf(stderr, "xbps-rindex: failed to open %s: %s\n",
|
||||
repodir, strerror(errno));
|
||||
prop_object_release(idx);
|
||||
return errno;
|
||||
}
|
||||
while ((dp = readdir(dirp))) {
|
||||
@ -180,9 +175,5 @@ remove_obsoletes(struct xbps_handle *xhp, const char *repodir)
|
||||
for (i = 0; i < maxthreads; i++)
|
||||
pthread_join(thd[i].thread, NULL);
|
||||
|
||||
free(thd);
|
||||
prop_object_release(array);
|
||||
prop_object_release(idx);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
@ -156,10 +156,9 @@ main(int argc, char **argv)
|
||||
usage();
|
||||
|
||||
dict = xbps_pkgdb_get_pkg(&xh, argv[1]);
|
||||
if (dict == NULL) {
|
||||
rv = errno;
|
||||
goto out;
|
||||
}
|
||||
if (dict == NULL)
|
||||
exit(EXIT_FAILURE);
|
||||
|
||||
prop_dictionary_get_cstring_nocopy(dict, "version", &version);
|
||||
printf("%s\n", version);
|
||||
} else if (strcasecmp(argv[0], "sanitize-plist") == 0) {
|
||||
@ -278,7 +277,6 @@ main(int argc, char **argv)
|
||||
} else {
|
||||
usage();
|
||||
}
|
||||
out:
|
||||
xbps_end(&xh);
|
||||
|
||||
exit(rv ? EXIT_FAILURE : EXIT_SUCCESS);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user