static int pkg_proc_update_stats(void *data) { struct mem_info info; if(unlikely(_pkg_proc_stats_list==NULL)) return -1; if(unlikely(process_no>=_pkg_proc_stats_no)) return -1; pkg_info(&info); _pkg_proc_stats_list[process_no].available = info.free; _pkg_proc_stats_list[process_no].used = info.used; _pkg_proc_stats_list[process_no].real_used = info.real_used; _pkg_proc_stats_list[process_no].total_frags = info.total_frags; return 0; }
int pkg_proc_stats_myinit(int rank) { struct mem_info info; if(_pkg_proc_stats_list==NULL) return -1; if(process_no>=_pkg_proc_stats_no) return -1; _pkg_proc_stats_list[process_no].pid = (unsigned int)my_pid(); _pkg_proc_stats_list[process_no].rank = rank; /* init pkg usage values */ pkg_info(&info); _pkg_proc_stats_list[process_no].available = info.free; _pkg_proc_stats_list[process_no].used = info.used; _pkg_proc_stats_list[process_no].real_used = info.real_used; _pkg_proc_stats_list[process_no].total_size = info.total_size; _pkg_proc_stats_list[process_no].total_frags = info.total_frags; return 0; }
int main(int argc, char **argv) { struct pkg_info info; int ret; info.match_type = MATCH_GLOB; info.flags = 0; info.pkgs = NULL; info.quiet = 0; info.origin = NULL; info.check_package = NULL; info.seperator = ""; info.use_blocksize = 0; info.search_file = NULL; if (argc == 1) { info.match_type = MATCH_ALL; info.flags = SHOW_INDEX; } else { int ch; int i; while ((ch = getopt(argc, argv, options)) != -1) { switch (ch) { case 'a': info.match_type = MATCH_ALL; break; case 'b': info.use_blocksize = 1; break; case 'c': info.flags |= SHOW_COMMENT; break; case 'd': info.flags |= SHOW_DESC; break; case 'D': info.flags |= SHOW_DISPLAY; break; case 'e': info.check_package = optarg; break; case 'E': info.flags |= SHOW_PKGNAME; break; case 'f': info.flags |= SHOW_PLIST; break; case 'g': info.flags |= SHOW_CKSUM; break; case 'G': info.match_type = MATCH_EXACT; break; case 'i': info.flags |= SHOW_INSTALL; break; case 'I': info.flags |= SHOW_INDEX; break; case 'j': info.flags |= SHOW_REQUIRE; break; case 'k': info.flags |= SHOW_DEINSTALL; break; case 'l': info.seperator = optarg; break; case 'L': info.flags |= SHOW_FILES; break; case 'm': info.flags |= SHOW_MTREE; break; case 'o': info.flags |= SHOW_ORIGIN; break; case 'O': info.origin = optarg; break; case 'p': info.flags |= SHOW_PREFIX; break; case 'P': info.flags |= SHOW_PTREV; break; case 'q': info.quiet = 1; break; case 'Q': info.quiet = 2; break; case 'r': info.flags |= SHOW_DEPEND; break; case 'R': info.flags |= SHOW_REQBY; break; case 's': info.flags |= SHOW_SIZE; break; case 't': errx(1, "Unsupported argument"); break; case 'v': info.flags = SHOW_COMMENT | SHOW_DESC | SHOW_PLIST | SHOW_INSTALL | SHOW_DEINSTALL | SHOW_REQUIRE | SHOW_DISPLAY | SHOW_MTREE; break; case 'V': info.flags |= SHOW_FMTREV; break; case 'W': info.search_file = optarg; break; case 'x': info.match_type = MATCH_REGEX; break; case 'X': info.match_type = MATCH_EREGEX; break; case 'h': default: usage(); break; } } argc -= optind; argv += optind; info.pkgs = malloc(sizeof(char *) * (argc + 1)); for (i=0; i < argc; i++) { info.pkgs[i] = argv[i]; } info.pkgs[i] = NULL; } /* Set the default flags */ if(!info.flags) info.flags = SHOW_COMMENT | SHOW_DESC | SHOW_REQBY; info.db = pkg_db_open_freebsd("/"); if (!info.db) return 1; ret = pkg_info(info); if (info.pkgs != NULL) free(info.pkgs); pkg_db_free(info.db); return ret; }