static void ShowPackages(FILE *out, Seq *package_entries) { for (size_t i = 0; i < SeqLength(package_entries); i++) { fprintf(out, "%s\n", SerializePackage(SeqAt(package_entries, i))); } }
static void ShowPackages(FILE *out, Rlist *package_entries) { Rlist *rp = NULL; for (rp = package_entries; rp != NULL; rp = rp->next) { fprintf(out, "%s\n", SerializePackage((Package *) rp->item)); } }
static void SavePackages(const char *database_filename, Seq *package_entries) { FILE *packages_file = fopen(database_filename, "w"); for (size_t i = 0; i < SeqLength(package_entries); i++) { fprintf(packages_file, "%s\n", SerializePackage(SeqAt(package_entries, i))); } fclose(packages_file); }
static void SavePackages(const char *database_filename, Rlist *package_entries) { Rlist *rp = NULL; FILE *packages_file = fopen(database_filename, "w"); for (rp = package_entries; rp != NULL; rp = rp->next) { fprintf(packages_file, "%s\n", SerializePackage((Package *) rp->item)); } fclose(packages_file); }
static void AddPackage(PackagePattern *pattern) { fprintf(stderr, "Trying to install all packages matching pattern %s\n", SerializePackagePattern(pattern)); Rlist *matching_available = FindPackages(AVAILABLE_PACKAGES_FILE_NAME, pattern); if (matching_available == NULL) { fprintf(stderr, "Unable to find any package matching %s\n", SerializePackagePattern(pattern)); exit(1); } Rlist *rp; for (rp = matching_available; rp; rp = rp->next) { Package *p = (Package *) rp->item; PackagePattern *pat = MatchAllVersions((Package *) rp->item); if (FindPackages(INSTALLED_PACKAGES_FILE_NAME, pat) != NULL) { fprintf(stderr, "Package %s is already installed.\n", SerializePackage(p)); exit(1); } } Rlist *installed_packages = ReadPackageEntries(INSTALLED_PACKAGES_FILE_NAME); for (rp = matching_available; rp; rp = rp->next) { Package *p = (Package *) rp->item; RlistAppendAlien(&installed_packages, p); fprintf(stderr, "Succesfully installed package %s\n", SerializePackage(p)); } SavePackages(INSTALLED_PACKAGES_FILE_NAME, installed_packages); exit(0); }
static void AddPackage(PackagePattern *pattern) { fprintf(stderr, "Trying to install all packages matching pattern %s\n", SerializePackagePattern(pattern)); Seq *matching_available = FindPackages(AVAILABLE_PACKAGES_FILE_NAME, pattern); if (SeqLength(matching_available) == 0) { fprintf(stderr, "Unable to find any package matching %s\n", SerializePackagePattern(pattern)); exit(EXIT_FAILURE); } for (size_t i = 0; i < SeqLength(matching_available); i++) { Package *p = SeqAt(matching_available, i); PackagePattern *pat = MatchAllVersions(p); if (SeqLength(FindPackages(INSTALLED_PACKAGES_FILE_NAME, pat)) > 0) { fprintf(stderr, "Package %s is already installed.\n", SerializePackage(p)); exit(EXIT_FAILURE); } } Seq *installed_packages = ReadPackageEntries(INSTALLED_PACKAGES_FILE_NAME); for (size_t i = 0; i < SeqLength(matching_available); i++) { Package *p = SeqAt(matching_available, i); SeqAppend(installed_packages, p); fprintf(stderr, "Successfully installed package %s\n", SerializePackage(p)); } SavePackages(INSTALLED_PACKAGES_FILE_NAME, installed_packages); exit(EXIT_SUCCESS); }
static void PopulateAvailable(const char *arg) { Package *p = DeserializePackage(arg); PackagePattern *pattern = MatchSame(p); if (FindPackages(AVAILABLE_PACKAGES_FILE_NAME, pattern) != NULL) { fprintf(stderr, "Skipping already available package %s\n", SerializePackage(p)); return; } Rlist *available_packages = ReadPackageEntries(AVAILABLE_PACKAGES_FILE_NAME); RlistAppendAlien(&available_packages, p); SavePackages(AVAILABLE_PACKAGES_FILE_NAME, available_packages); }