Date: Thu, 27 Jun 2013 00:09:03 GMT From: mattbw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r253581 - soc2013/mattbw/backend Message-ID: <201306270009.r5R093gR007950@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: mattbw Date: Thu Jun 27 00:09:03 2013 New Revision: 253581 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=253581 Log: stop the screaming if a repository that does not exist is asked for, amongst other things Modified: soc2013/mattbw/backend/db.c soc2013/mattbw/backend/iterate.c Modified: soc2013/mattbw/backend/db.c ============================================================================== --- soc2013/mattbw/backend/db.c Wed Jun 26 23:53:54 2013 (r253580) +++ soc2013/mattbw/backend/db.c Thu Jun 27 00:09:03 2013 (r253581) @@ -95,27 +95,25 @@ int load_flags, pkg_func_ptr emitter) { - gboolean success; - gchar **strv; - const gchar *name; - const gchar *version; + gboolean query_success; + gboolean split_success; const gchar *arch; const gchar *data; + const gchar *name; + const gchar *version; + gchar **strv; - success = FALSE; + query_success = FALSE; + split_success = FALSE; strv = NULL; - success = split_id(id, &strv, &name, &version, &arch, &data); - if (success == FALSE) + split_success = split_id(id, &strv, &name, &version, &arch, &data); + if (split_success == FALSE) pk_backend_error_code(backend, PK_ERROR_ENUM_PACKAGE_ID_INVALID, "invalid package id"); else { /* - * If we got a repository name, then we want to make sure it - * corresponds to a real repository. - */ - /* * If the PackageID has a repository specified (even if it's * "installed" i.e. currently installed package), running * "get_details_query" directly should handle remote/local @@ -127,29 +125,29 @@ */ if (data == NULL) /* Try local database first. */ - success = db_query_split(name, - version, - arch, - "installed", - backend, - db, - load_flags, - emitter); - if (success == FALSE) - success = db_query_split(name, version, arch, data, + query_success = db_query_split(name, + version, + arch, + "installed", + backend, + db, + load_flags, + emitter); + if (query_success == FALSE) + query_success = db_query_split(name, version, arch, data, backend, db, load_flags, emitter); /* * Assume any error is due to not finding packages. At time * of writing this is true, but may change. */ - if (success == FALSE) + if (query_success == FALSE) pk_backend_error_code(backend, PK_ERROR_ENUM_PACKAGE_NOT_FOUND, "package not found"); g_strfreev(strv); } - return success; + return query_success; } /* @@ -174,13 +172,24 @@ gboolean success; success = FALSE; + it = NULL; /* Are we doing a local query? */ + /* + * If we got a repository name, then we want to make sure it + * corresponds to a real repository. + */ if (g_strcmp0(reponame, "installed") == 0) it = pkgdb_query(db, name, MATCH_EXACT); - else + else if (pkg_repo_find_ident(reponame) != NULL) it = pkgdb_rquery(db, name, MATCH_EXACT, reponame); - if (it) + else + pk_backend_error_code(backend, + PK_ERROR_ENUM_PACKAGE_NOT_FOUND, + "no such repository"); + + + if (it != NULL) success = iterate_id_matches(it, backend, name, Modified: soc2013/mattbw/backend/iterate.c ============================================================================== --- soc2013/mattbw/backend/iterate.c Wed Jun 26 23:53:54 2013 (r253580) +++ soc2013/mattbw/backend/iterate.c Thu Jun 27 00:09:03 2013 (r253581) @@ -67,12 +67,12 @@ err = EPKG_FATAL; } else { for (HASH_FOR(err, pkgdb_it_next, iterator, &pkg, fetch_flags)) { - if (err == EPKG_OK && try_id_match(pkg, - name, - version, - arch, - data, - &match_id) == TRUE) { + if (try_id_match(pkg, + name, + version, + arch, + data, + &match_id) == TRUE) { found = TRUE; iterate_f(pkg, match_id, backend); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201306270009.r5R093gR007950>