示例#1
0
文件: pkg-array.c 项目: smcv/dpkg
/**
 * Initialize a package array from the package database.
 *
 * @param a The array to initialize.
 */
void
pkg_array_init_from_db(struct pkg_array *a)
{
	struct pkgiterator *it;
	struct pkginfo *pkg;
	int i;

	a->n_pkgs = pkg_db_count_pkg();
	a->pkgs = m_malloc(sizeof(a->pkgs[0]) * a->n_pkgs);

	it = pkg_db_iter_new();
	for (i = 0; (pkg = pkg_db_iter_next_pkg(it)); i++)
		a->pkgs[i] = pkg;
	pkg_db_iter_free(it);

	assert(i == a->n_pkgs);
}
示例#2
0
文件: filesdb.c 项目: pexip/os-dpkg
void ensure_allinstfiles_available(void) {
  struct pkg_array array;
  struct pkginfo *pkg;
  struct progress progress;
  int i;

  if (allpackagesdone) return;
  if (saidread<2) {
    int max = pkg_db_count_pkg();

    saidread=1;
    progress_init(&progress, _("(Reading database ... "), max);
  }

  pkg_array_init_from_db(&array);

  pkg_files_optimize_load(&array);

  for (i = 0; i < array.n_pkgs; i++) {
    pkg = array.pkgs[i];
    ensure_packagefiles_available(pkg);

    if (saidread == 1)
      progress_step(&progress);
  }

  pkg_array_destroy(&array);

  allpackagesdone = true;

  if (saidread==1) {
    progress_done(&progress);
    printf(P_("%d file or directory currently installed.)\n",
              "%d files and directories currently installed.)\n", nfiles),
           nfiles);
    saidread=2;
  }
}