/* this function is intended to encapsulate the basic swupd * initializations for the majority of commands, that is: * - Make sure root is the user running the code * - Initialize log facility * - Get the lock * - initialize mounted directories * - Initialize curl */ int swupd_init(int *lock_fd) { int ret = 0; check_root(); *lock_fd = p_lockfile(); if (*lock_fd < 0) { ret = ELOCK_FILE; goto out_fds; } get_mounted_directories(); if (swupd_curl_init() != 0) { ret = ECURL_INIT; goto out_close_lock; } return ret; out_close_lock: v_lockfile(*lock_fd); out_fds: dump_file_descriptor_leaks(); return ret; }
/* this function is intended to encapsulate the basic swupd * initializations for the majority of commands, that is: * - Make sure root is the user running the code * - Initialize globals * - initialize mounted directories * - Create necessary directories * - Get the lock * - Initialize curl * - Initialize signature checking */ int swupd_init(void) { int ret = 0; check_root(); record_fds(); /* Check that our system time is reasonably valid before continuing, * or the certificate verification will fail with invalid time */ if (timecheck) { if (!verify_time()) { ret = EBADTIME; goto out_fds; } } if (!init_globals()) { ret = EINIT_GLOBALS; goto out_fds; } get_mounted_directories(); if (create_required_dirs()) { ret = EREQUIRED_DIRS; goto out_fds; } if (p_lockfile() < 0) { ret = ELOCK_FILE; goto out_fds; } if (swupd_curl_init() != 0) { ret = ECURL_INIT; goto out_close_lock; } /* If --nosigcheck, we do not attempt any signature checking */ if (sigcheck && !initialize_signature()) { ret = ESIGNATURE; terminate_signature(); goto out_close_lock; } return ret; out_close_lock: v_lockfile(); out_fds: dump_file_descriptor_leaks(); return ret; }
/* * list_installable_bundles() * Parse the full manifest for the current version of the OS and print * all available bundles. */ int list_installable_bundles() { struct list *list; struct file *file; struct manifest *MoM = NULL; int current_version; int lock_fd; int ret; if (!init_globals()) { return EINIT_GLOBALS; } current_version = read_version_from_subvol_file(path_prefix); if (swupd_init(&lock_fd) != 0) { printf("Error: Failed updater initialization. Exiting now\n"); return ECURL_INIT; } ret = create_required_dirs(); if (ret != 0) { printf("State directory %s cannot be recreated, aborting removal\n", STATE_DIR); v_lockfile(lock_fd); return EXIT_FAILURE; } get_mounted_directories(); if (!check_network()) { printf("Error: Network issue, unable to download manifest\n"); v_lockfile(lock_fd); return EXIT_FAILURE; } swupd_curl_set_current_version(current_version); ret = load_manifests(current_version, current_version, "MoM", NULL, &MoM); if (ret != 0) { v_lockfile(lock_fd); return ret; } list = MoM->manifests; while (list) { file = list->data; list = list->next; printf("%s\n", file->filename); } free_manifest(MoM); v_lockfile(lock_fd); return 0; }
/* this function is intended to encapsulate the basic swupd * initializations for the majority of commands, that is: * - Make sure root is the user running the code * - Initialize log facility * - Get the lock * - initialize mounted directories * - Initialize curl */ int swupd_init(int *lock_fd) { int ret = 0; check_root(); if (!init_globals()) { ret = EINIT_GLOBALS; goto out_fds; } get_mounted_directories(); if (create_required_dirs()) { ret = EREQUIRED_DIRS; goto out_fds; } *lock_fd = p_lockfile(); if (*lock_fd < 0) { ret = ELOCK_FILE; goto out_fds; } if (swupd_curl_init() != 0) { ret = ECURL_INIT; goto out_close_lock; } if (!initialize_signature()) { ret = ESIGNATURE; terminate_signature(); goto out_close_lock; } return ret; out_close_lock: v_lockfile(*lock_fd); out_fds: dump_file_descriptor_leaks(); return ret; }