void opkg_test (void) { int err; pkg_t *pkg; err = opkg_update_package_lists (progress_callback, "Updating..."); printf ("\nopkg_update_package_lists returned %d\n", err); opkg_list_packages (package_list_callback, NULL); printf ("\n"); if (find_pkg) { printf ("Finding package \"%s\"\n", find_pkg->name); pkg = opkg_find_package (find_pkg->name, find_pkg->version, find_pkg->architecture, find_pkg->src->name); if (pkg) { print_package (pkg); } else printf ("Package \"%s\" not found!\n", find_pkg->name); } else printf ("No package available to test find_package.\n"); err = opkg_install_package (TEST_PACKAGE, progress_callback, "Installing..."); printf ("\nopkg_install_package returned %d\n", err); err = opkg_upgrade_package (TEST_PACKAGE, progress_callback, "Upgrading..."); printf ("\nopkg_upgrade_package returned %d\n", err); err = opkg_remove_package (TEST_PACKAGE, progress_callback, "Removing..."); printf ("\nopkg_remove_package returned %d\n", err); printf ("Listing upgradable packages...\n"); opkg_list_upgradable_packages (package_list_upgradable_callback, NULL); err = opkg_upgrade_all (progress_callback, "Upgrading all..."); printf ("\nopkg_upgrade_all returned %d\n", err); }
bool service_retrieve_package_info_cb(LSHandle *handle, LSMessage *message, void *user_data) { jvalue_ref reply_obj; jvalue_ref parsed_obj; jvalue_ref name_obj; jvalue_ref depends_obj; jvalue_ref recommends_obj; jvalue_ref conflicts_obj; pkg_t *package = NULL; const char *payload = NULL; const char *pkgname = NULL; raw_buffer name_buf; int n; payload = LSMessageGetPayload(message); parsed_obj = luna_service_message_parse_and_validate(payload); if (jis_null(parsed_obj)) { luna_service_message_reply_error_bad_json(handle, message); return true; } if (!jobject_get_exists(parsed_obj, J_CSTR_TO_BUF("name"), &name_obj)) { luna_service_message_reply_error_bad_json(handle, message); return true; } if (opkg_new()) { luna_service_message_reply_error_internal(handle, message); return true; } name_buf = jstring_get(name_obj); package = opkg_find_package(name_buf.m_str, NULL, NULL, NULL); if (!package) { luna_service_message_reply_custom_error(handle, message, "Package does not exist"); goto cleanup; } set_flags_from_control(package); reply_obj = jobject_create(); jobject_put(reply_obj, J_CSTR_TO_JVAL("returnValue"), jboolean_create(true)); jobject_put(reply_obj, J_CSTR_TO_JVAL("version"), jstring_create(package->version ? package->version : "")); jobject_put(reply_obj, J_CSTR_TO_JVAL("revision"), jstring_create(package->revision ? package->revision : "")); jobject_put(reply_obj, J_CSTR_TO_JVAL("architecture"), jstring_create(package->architecture ? package->architecture : "")); jobject_put(reply_obj, J_CSTR_TO_JVAL("section"), jstring_create(package->section ? package->section : "")); jobject_put(reply_obj, J_CSTR_TO_JVAL("maintainer"), jstring_create(package->maintainer ? package->maintainer : "")); jobject_put(reply_obj, J_CSTR_TO_JVAL("description"), jstring_create(package->description ? package->description : "")); jobject_put(reply_obj, J_CSTR_TO_JVAL("tags"), jstring_create(package->tags ? package->tags : "")); jobject_put(reply_obj, J_CSTR_TO_JVAL("size"), jnumber_create_i32(package->size)); jobject_put(reply_obj, J_CSTR_TO_JVAL("installed_size"), jnumber_create_i32(package->installed_size)); jobject_put(reply_obj, J_CSTR_TO_JVAL("auto_installed"), jboolean_create(package->auto_installed > 0 ? true : false)); if (!luna_service_message_validate_and_send(handle, message, reply_obj)) { luna_service_message_reply_error_internal(handle, message); goto cleanup; } cleanup: opkg_free(); return true; }
int main (int argc, char **argv) { pkg_t *pkg; int err; if (argc < 2) { printf ("Usage: %s command\n" "\nCommands:\n" "\tupdate - Update package lists\n" "\tfind [package] - Print details of the specified package\n" "\tinstall [package] - Install the specified package\n" "\tupgrade [package] - Upgrade the specified package\n" "\tlist upgrades - List the available upgrades\n" "\tlist all - List all available packages\n" "\tlist installed - List all the installed packages\n" "\tremove [package] - Remove the specified package\n" "\trping - Reposiroties ping, check the accessibility of repositories\n" "\ttest - Run test script\n" , basename (argv[0])); exit (0); } setenv("OFFLINE_ROOT", "/tmp", 0); if (opkg_new ()) { printf("opkg_new() failed. This sucks.\n"); print_error_list(); return 1; } switch (argv[1][0]) { case 'f': pkg = opkg_find_package (argv[2], NULL, NULL, NULL); if (pkg) { print_package (pkg); } else printf ("Package \"%s\" not found!\n", find_pkg->name); break; case 'i': err = opkg_install_package (argv[2], progress_callback, "Installing..."); printf ("\nopkg_install_package returned %d\n", err); break; case 'u': if (argv[1][2] == 'd') { err = opkg_update_package_lists (progress_callback, "Updating..."); printf ("\nopkg_update_package_lists returned %d\n", err); break; } else { if (argc < 3) { err = opkg_upgrade_all (progress_callback, "Upgrading all..."); printf ("\nopkg_upgrade_all returned %d\n", err); } else { err = opkg_upgrade_package (argv[2], progress_callback, "Upgrading..."); printf ("\nopkg_upgrade_package returned %d\n", err); } } break; case 'l': if (argc < 3) { printf ("Please specify one either all, installed or upgrades\n"); } else { switch (argv[2][0]) { case 'u': printf ("Listing upgradable packages...\n"); opkg_list_upgradable_packages (package_list_upgradable_callback, NULL); break; case 'a': printf ("Listing all packages...\n"); opkg_list_packages (package_list_callback, NULL); printf ("\n"); break; case 'i': printf ("Listing installed packages...\n"); opkg_list_packages (package_list_installed_callback, NULL); break; default: printf ("Unknown list option \"%s\"\n", argv[2]); } } break; case 'r': if (argv[1][1] == 'e') { err = opkg_remove_package (argv[2], progress_callback, "Removing..."); printf ("\nopkg_remove_package returned %d\n", err); break; }else if (argv[1][1] == 'p') { err = opkg_repository_accessibility_check(); printf("\nopkg_repository_accessibility_check returned (%d)\n", err); break; } default: printf ("Unknown command \"%s\"\n", argv[1]); } opkg_free (); return 0; }