From 7ea0060e3b5c0f4d261cf4291bcd160ec94164c2 Mon Sep 17 00:00:00 2001 From: graham.gower Date: Thu, 26 Nov 2009 23:09:44 -0500 Subject: Remove enum opkg_error. The return codes aren't particularly useful and trying to have a useful one for every error scenario would be like extending errno. Good error messages via opkg_message() are far more appropriate. git-svn-id: http://opkg.googlecode.com/svn/trunk@395 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358 --- diff --git a/libopkg/opkg.c b/libopkg/opkg.c index 437beb1..50f8752 100644 --- a/libopkg/opkg.c +++ b/libopkg/opkg.c @@ -513,18 +513,7 @@ opkg_install_package (opkg_t *opkg, const char *package_name, opkg_progress_call if (err) { opkg_package_free (pdata.package); - switch (err) - { - case OPKG_INSTALL_ERR_NOT_TRUSTED: return OPKG_GPG_ERROR; - case OPKG_INSTALL_ERR_DOWNLOAD: return OPKG_DOWNLOAD_FAILED; - case OPKG_INSTALL_ERR_DEPENDENCIES: - case OPKG_INSTALL_ERR_CONFLICTS: return OPKG_DEPENDENCIES_FAILED; - case OPKG_INSTALL_ERR_ALREADY_INSTALLED: return OPKG_PACKAGE_ALREADY_INSTALLED; - case OPKG_INSTALL_ERR_SIGNATURE: return OPKG_GPG_ERROR; - case OPKG_INSTALL_ERR_MD5: return OPKG_MD5_ERROR; - case OPKG_INSTALL_ERR_SHA256: return OPKG_SHA256_ERROR; - default: return OPKG_UNKNOWN_ERROR; - } + return OPKG_UNKNOWN_ERROR; } progress (pdata, 75); @@ -651,20 +640,8 @@ opkg_upgrade_package (opkg_t *opkg, const char *package_name, opkg_progress_call /* opkg_upgrade_pkg returns the error codes of opkg_install_pkg */ if (err) { - opkg_package_free (pdata.package); - switch (err) - { - case OPKG_INSTALL_ERR_NOT_TRUSTED: return OPKG_GPG_ERROR; - case OPKG_INSTALL_ERR_DOWNLOAD: return OPKG_DOWNLOAD_FAILED; - case OPKG_INSTALL_ERR_DEPENDENCIES: - case OPKG_INSTALL_ERR_CONFLICTS: return OPKG_DEPENDENCIES_FAILED; - case OPKG_INSTALL_ERR_ALREADY_INSTALLED: return OPKG_PACKAGE_ALREADY_INSTALLED; - case OPKG_INSTALL_ERR_SIGNATURE: return OPKG_GPG_ERROR; - case OPKG_INSTALL_ERR_MD5: return OPKG_MD5_ERROR; - case OPKG_INSTALL_ERR_SHA256: return OPKG_SHA256_ERROR; - default: return OPKG_UNKNOWN_ERROR; - } + return OPKG_UNKNOWN_ERROR; } progress (pdata, 75); diff --git a/libopkg/opkg_cmd.c b/libopkg/opkg_cmd.c index c9489d3..82a623e 100644 --- a/libopkg/opkg_cmd.c +++ b/libopkg/opkg_cmd.c @@ -546,10 +546,8 @@ static int opkg_install_cmd(opkg_conf_t *conf, int argc, char **argv) for (i=0; i < argc; i++) { arg = argv[i]; err = opkg_install_by_name(conf, arg); - if (err == OPKG_PKG_HAS_NO_CANDIDATE) { - opkg_message(conf, OPKG_ERROR, - "Cannot find package %s.\n", - arg); + if (err) { + opkg_message(conf, OPKG_ERROR, "Cannot find package %s.\n", arg); } } diff --git a/libopkg/opkg_conf.c b/libopkg/opkg_conf.c index df5b7b4..7405b48 100644 --- a/libopkg/opkg_conf.c +++ b/libopkg/opkg_conf.c @@ -149,7 +149,7 @@ int opkg_conf_init(opkg_conf_t *conf, const args_t *args) if (opkg_conf_parse_file(conf, args->conf_file, &conf->pkg_src_list, &tmp_dest_nv_pair_list)<0) { /* Memory leakage from opkg_conf_parse-file */ - return OPKG_CONF_ERR_PARSE; + return -1; } } @@ -177,14 +177,14 @@ int opkg_conf_init(opkg_conf_t *conf, const args_t *args) if ( opkg_conf_parse_file(conf, globbuf.gl_pathv[i], &conf->pkg_src_list, &tmp_dest_nv_pair_list)<0) { /* Memory leakage from opkg_conf_parse-file */ - return OPKG_CONF_ERR_PARSE; + return -1; } if (offline_root != conf->offline_root) { opkg_message(conf, OPKG_ERROR, "Config file %s, within an offline " "root contains option offline_root.\n", globbuf.gl_pathv[i]); - return OPKG_CONF_ERR_PARSE; + return -1; } } } @@ -215,7 +215,7 @@ int opkg_conf_init(opkg_conf_t *conf, const args_t *args) opkg_message (conf, OPKG_ERROR, "Could not lock %s: %s\n", lock_file, strerror(errno_copy)); free(lock_file); - return OPKG_CONF_ERR_LOCK; + return -1; } free(lock_file); @@ -233,7 +233,7 @@ int opkg_conf_init(opkg_conf_t *conf, const args_t *args) opkg_message(conf, OPKG_ERROR, "%s: Creating temp dir %s failed: %s\n", __FUNCTION__, tmp2, strerror(errno)); - return OPKG_CONF_ERR_TMP_DIR; + return -1; } pkg_hash_init("pkg-hash", &conf->pkg_hash, OPKG_CONF_DEFAULT_HASH_LEN); @@ -338,7 +338,7 @@ int opkg_conf_init(opkg_conf_t *conf, const args_t *args) err = opkg_conf_set_default_dest(conf, args->dest); if (err) { nv_pair_list_deinit(&tmp_dest_nv_pair_list); - return OPKG_CONF_ERR_DEFAULT_DEST; + return -1; } } } diff --git a/libopkg/opkg_error.h b/libopkg/opkg_error.h index ec0d1c2..c40e635 100644 --- a/libopkg/opkg_error.h +++ b/libopkg/opkg_error.h @@ -16,37 +16,6 @@ #ifndef OPKG_ERROR_H #define OPKG_ERROR_H -enum opkg_error { - OPKG_ERR_UNKNOWN = -1, - OPKG_ERR_NONE = 0, - - OPKG_CONF_ERR_DEFAULT_DEST, /* could not set default dest */ - OPKG_CONF_ERR_PARSE, /* error parsing config file */ - OPKG_CONF_ERR_TMP_DIR, /* could not create temporary directory */ - OPKG_CONF_ERR_LOCK, /* could not get opkg lock */ - - OPKG_PKG_DEPS_UNSATISFIED, - OPKG_PKG_IS_ESSENTIAL, - OPKG_PKG_HAS_DEPENDENTS, - OPKG_PKG_HAS_NO_CANDIDATE, - OPKG_PKG_HAS_NO_AVAILABLE_ARCH, - - OPKG_INSTALL_ERR_NOT_TRUSTED, - OPKG_INSTALL_ERR_DOWNLOAD, - OPKG_INSTALL_ERR_CONFLICTS, - OPKG_INSTALL_ERR_ALREADY_INSTALLED, - OPKG_INSTALL_ERR_DEPENDENCIES, - OPKG_INSTALL_ERR_NO_DOWNGRADE, - OPKG_INSTALL_ERR_NO_SPACE, - OPKG_INSTALL_ERR_SIGNATURE, - OPKG_INSTALL_ERR_MD5, - OPKG_INSTALL_ERR_INTERNAL, - OPKG_INSTALL_ERR_SHA256, - -}; -typedef enum opkg_error opkg_error_t; - - struct errlist { char * errmsg; struct errlist * next; diff --git a/libopkg/opkg_install.c b/libopkg/opkg_install.c index 819410f..303877e 100644 --- a/libopkg/opkg_install.c +++ b/libopkg/opkg_install.c @@ -70,7 +70,7 @@ satisfy_dependencies_for(opkg_conf_t *conf, pkg_t *pkg) "mentioned above do not yet exist (try 'opkg update'). To proceed in spite\n" "of this problem try again with the '-force-depends' option.\n"); pkg_vec_free(depends); - return OPKG_PKG_DEPS_UNSATISFIED; + return -1; } } @@ -138,7 +138,7 @@ check_conflicts_for(opkg_conf_t *conf, pkg_t *pkg) opkg_message(conf, level, " %s", conflicts->pkgs[i++]->name); opkg_message(conf, level, "\n"); pkg_vec_free(conflicts); - return OPKG_PKG_DEPS_UNSATISFIED; + return -1; } return 0; } @@ -1186,42 +1186,25 @@ resolve_conffiles(opkg_conf_t *conf, pkg_t *pkg) } -opkg_error_t +int opkg_install_by_name(opkg_conf_t *conf, const char *pkg_name) { int cmp, err = 0; pkg_t *old, *new; char *old_version, *new_version; - opkg_message(conf, OPKG_DEBUG2, " Getting old from pkg_hash_fetch \n" ); old = pkg_hash_fetch_installed_by_name(&conf->pkg_hash, pkg_name); - if ( old ) - opkg_message(conf, OPKG_DEBUG2, " Old versions from pkg_hash_fetch %s \n", old->version ); + if (old) + opkg_message(conf, OPKG_DEBUG2, "Old versions from pkg_hash_fetch %s \n", old->version); - opkg_message(conf, OPKG_DEBUG2, " Getting new from pkg_hash_fetch \n" ); new = pkg_hash_fetch_best_installation_candidate_by_name(conf, pkg_name, &err); - if ( new ) - opkg_message(conf, OPKG_DEBUG2, " New versions from pkg_hash_fetch %s \n", new->version ); - -/* Pigi Basically here is broken the version stuff. - What's happening is that nothing provide the version to differents - functions, so the returned struct is always the latest. - That's why the install by name don't work. -*/ - opkg_message(conf, OPKG_DEBUG2, " Versions from pkg_hash_fetch in %s ", __FUNCTION__ ); + if (new == NULL || err) + return -1; + opkg_message(conf, OPKG_DEBUG2, "Versions from pkg_hash_fetch in %s ", __FUNCTION__); if ( old ) - opkg_message(conf, OPKG_DEBUG2, " old %s ", old->version ); - if ( new ) - opkg_message(conf, OPKG_DEBUG2, " new %s ", new->version ); - opkg_message(conf, OPKG_DEBUG2, " \n"); - - if (new == NULL) { - if (err) - return err; - else - return OPKG_PKG_HAS_NO_CANDIDATE; - } + opkg_message(conf, OPKG_DEBUG2, " old %s ", old->version); + opkg_message(conf, OPKG_DEBUG2, " new %s\n", new->version); new->state_flag |= SF_USER; if (old) { @@ -1263,13 +1246,7 @@ opkg_install_by_name(opkg_conf_t *conf, const char *pkg_name) free(new_version); } - /* XXX: CLEANUP: The error code of opkg_install_by_name is really - supposed to be an opkg_error_t, but opkg_install_pkg could - return any kind of integer, (might be errno from a syscall, - etc.). This is a real mess and will need to be cleaned up if - anyone ever wants to make a nice libopkg. */ - - opkg_message(conf, OPKG_DEBUG2,"Function: %s calling opkg_install_pkg \n",__FUNCTION__); + opkg_message(conf, OPKG_DEBUG2,"%s: calling opkg_install_pkg \n",__FUNCTION__); return opkg_install_pkg(conf, new,0); } @@ -1289,6 +1266,7 @@ opkg_install_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade) #ifdef HAVE_SHA256 char* file_sha256; #endif + sigset_t newset, oldset; if ( from_upgrade ) message = 1; /* Coming from an upgrade, and should change the output message */ @@ -1296,7 +1274,7 @@ opkg_install_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade) if (!pkg) { opkg_message(conf, OPKG_ERROR, "INTERNAL ERROR: null pkg passed to opkg_install_pkg\n"); - return OPKG_INSTALL_ERR_INTERNAL; + return -1; } opkg_message(conf, OPKG_DEBUG2, "Function: %s calling pkg_arch_supported %s \n", __FUNCTION__, __FUNCTION__); @@ -1304,11 +1282,12 @@ opkg_install_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade) if (!pkg_arch_supported(conf, pkg)) { opkg_message(conf, OPKG_ERROR, "INTERNAL ERROR: architecture %s for pkg %s is unsupported.\n", pkg->architecture, pkg->name); - return OPKG_INSTALL_ERR_INTERNAL; + return -1; } if (pkg->state_status == SS_INSTALLED && conf->force_reinstall == 0 && conf->nodeps == 0) { err = satisfy_dependencies_for(conf, pkg); - if (err) { return OPKG_INSTALL_ERR_DEPENDENCIES; } + if (err) + return -1; opkg_message(conf, OPKG_NOTICE, "Package %s is already installed in %s.\n", @@ -1323,27 +1302,28 @@ opkg_install_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade) old_pkg = pkg_hash_fetch_installed_by_name(&conf->pkg_hash, pkg->name); err = opkg_install_check_downgrade(conf, pkg, old_pkg, message); - if (err) { return OPKG_INSTALL_ERR_NO_DOWNGRADE; } + if (err) + return -1; pkg->state_want = SW_INSTALL; if (old_pkg){ old_pkg->state_want = SW_DEINSTALL; /* needed for check_data_file_clashes of dependences */ } - - /* Abhaya: conflicts check */ err = check_conflicts_for(conf, pkg); - if (err) { return OPKG_INSTALL_ERR_CONFLICTS; } + if (err) + return -1; /* this setup is to remove the upgrade scenario in the end when installing pkg A, A deps B & B deps on A. So both B and A are installed. Then A's installation is started resulting in an uncecessary upgrade */ - if (pkg->state_status == SS_INSTALLED - && conf->force_reinstall == 0) return 0; + if (pkg->state_status == SS_INSTALLED && conf->force_reinstall == 0) + return 0; err = verify_pkg_installable(conf, pkg); - if (err) { return OPKG_INSTALL_ERR_NO_SPACE; } + if (err) + return -1; if (pkg->local_filename == NULL) { err = opkg_download_pkg(conf, pkg, conf->tmp_dir); @@ -1351,7 +1331,7 @@ opkg_install_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade) opkg_message(conf, OPKG_ERROR, "Failed to download %s. Perhaps you need to run 'opkg update'?\n", pkg->name); - return OPKG_INSTALL_ERR_DOWNLOAD; + return -1; } } @@ -1374,12 +1354,12 @@ opkg_install_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade) if (opkg_verify_file (conf, list_file_name, sig_file_name)){ opkg_message(conf, OPKG_ERROR, "Failed to verify the signature of: %s\n", list_file_name); - return OPKG_INSTALL_ERR_SIGNATURE; + return -1; } }else{ opkg_message(conf, OPKG_ERROR, "Signature file is missing. " "Perhaps you need to run 'opkg update'?\n"); - return OPKG_INSTALL_ERR_SIGNATURE; + return -1; } free (lists_dir); @@ -1398,7 +1378,7 @@ opkg_install_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade) "Package %s md5sum mismatch. Either the opkg or the package index are corrupt. Try 'opkg update'.\n", pkg->name); free(file_md5); - return OPKG_INSTALL_ERR_MD5; + return -1; } if (file_md5) free(file_md5); @@ -1415,7 +1395,7 @@ opkg_install_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade) "Package %s sha256sum mismatch. Either the opkg or the package index are corrupt. Try 'opkg update'.\n", pkg->name); free(file_sha256); - return OPKG_INSTALL_ERR_SHA256; + return -1; } if (file_sha256) free(file_sha256); @@ -1434,22 +1414,22 @@ opkg_install_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade) /* Pigi: check if it will pass from here when replacing. It seems to fail */ /* That's rather strange that files don't change owner. Investigate !!!!!!*/ err = update_file_ownership(conf, pkg, old_pkg); - if (err) { return OPKG_ERR_UNKNOWN; } + if (err) + return -1; if (conf->nodeps == 0) { err = satisfy_dependencies_for(conf, pkg); - if (err) { return OPKG_INSTALL_ERR_DEPENDENCIES; } + if (err) + return -1; if (pkg->state_status == SS_UNPACKED) /* Circular dependency has installed it for us. */ - return 0; + return 0; } replacees = pkg_vec_alloc(); pkg_get_installed_replacees(conf, pkg, replacees); /* this next section we do with SIGINT blocked to prevent inconsistency between opkg database and filesystem */ - { - sigset_t newset, oldset; sigemptyset(&newset); sigaddset(&newset, SIGINT); @@ -1465,27 +1445,35 @@ opkg_install_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade) * Instead, we're going to remove the replacees */ err = pkg_remove_installed_replacees(conf, replacees); - if (err) goto UNWIND_REMOVE_INSTALLED_REPLACEES; + if (err) + goto UNWIND_REMOVE_INSTALLED_REPLACEES; err = prerm_upgrade_old_pkg(conf, pkg, old_pkg); - if (err) goto UNWIND_PRERM_UPGRADE_OLD_PKG; + if (err) + goto UNWIND_PRERM_UPGRADE_OLD_PKG; err = prerm_deconfigure_conflictors(conf, pkg, replacees); - if (err) goto UNWIND_PRERM_DECONFIGURE_CONFLICTORS; + if (err) + goto UNWIND_PRERM_DECONFIGURE_CONFLICTORS; err = preinst_configure(conf, pkg, old_pkg); - if (err) goto UNWIND_PREINST_CONFIGURE; + if (err) + goto UNWIND_PREINST_CONFIGURE; err = backup_modified_conffiles(conf, pkg, old_pkg); - if (err) goto UNWIND_BACKUP_MODIFIED_CONFFILES; + if (err) + goto UNWIND_BACKUP_MODIFIED_CONFFILES; err = check_data_file_clashes(conf, pkg, old_pkg); - if (err) goto UNWIND_CHECK_DATA_FILE_CLASHES; + if (err) + goto UNWIND_CHECK_DATA_FILE_CLASHES; err = postrm_upgrade_old_pkg(conf, pkg, old_pkg); - if (err) goto UNWIND_POSTRM_UPGRADE_OLD_PKG; + if (err) + goto UNWIND_POSTRM_UPGRADE_OLD_PKG; - if (conf->noaction) return 0; + if (conf->noaction) + return 0; /* point of no return: no unwinding after this */ if (old_pkg && !conf->force_reinstall) { @@ -1588,6 +1576,5 @@ pkg_is_hosed: sigprocmask(SIG_UNBLOCK, &newset, &oldset); pkg_vec_free (replacees); - return OPKG_ERR_UNKNOWN; - } + return -1; } diff --git a/libopkg/opkg_install.h b/libopkg/opkg_install.h index d6d074f..13d43d0 100644 --- a/libopkg/opkg_install.h +++ b/libopkg/opkg_install.h @@ -22,7 +22,7 @@ #include "opkg_conf.h" #include "opkg_error.h" -opkg_error_t opkg_install_by_name(opkg_conf_t *conf, const char *pkg_name); +int opkg_install_by_name(opkg_conf_t *conf, const char *pkg_name); int opkg_install_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrading); #endif diff --git a/libopkg/opkg_remove.c b/libopkg/opkg_remove.c index f53ef00..a2ef09c 100644 --- a/libopkg/opkg_remove.c +++ b/libopkg/opkg_remove.c @@ -244,7 +244,7 @@ opkg_remove_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade) "\tyou enjoy that kind of pain, you can force opkg to proceed against\n" "\tits will with the option: --force-removal-of-essential-packages\n", pkg->name); - return OPKG_PKG_IS_ESSENTIAL; + return -1; } } @@ -270,7 +270,7 @@ opkg_remove_pkg(opkg_conf_t *conf, pkg_t *pkg, int from_upgrade) if (!conf->force_removal_of_dependent_packages) { print_dependents_warning(conf, parent_pkg, pkg, dependents); free(dependents); - return OPKG_PKG_HAS_DEPENDENTS; + return -1; } /* remove packages depending on this package - Karthik */ diff --git a/libopkg/pkg_hash.c b/libopkg/pkg_hash.c index e02e1f2..3259eef 100644 --- a/libopkg/pkg_hash.c +++ b/libopkg/pkg_hash.c @@ -256,7 +256,7 @@ pkg_hash_fetch_best_installation_candidate(opkg_conf_t *conf, { opkg_message (conf, OPKG_ERROR, "Packages were found, but none compatible with the architectures configured\n"); if (err) - *err = OPKG_PKG_HAS_NO_AVAILABLE_ARCH; + *err = -1; } } } -- cgit v0.9.1