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); }