int main(int argc, char *argv[]) { int num; struct control *c; struct control_dependency *cd; struct control_source *cs; if ((num = parse_params(argc, argv)) < 0) { fprintf(stderr, "Usage: pkgcontrol [COMMAND] FILES...\n"); fprintf(stderr, "Commands:\n"); fprintf(stderr, " -n: Dump package name\n"); fprintf(stderr, " -v: Dump package version\n"); fprintf(stderr, " -r: Dump package runtime dependencies\n"); fprintf(stderr, " -b: Dump package build dependencies\n"); fprintf(stderr, " -s: Dump package sources\n"); return EXIT_FAILURE; } for (; num < argc; num++) { if (control_parse(argv[num], &c) != 0) { fprintf(stderr, "Error parsing '%s'\n", argv[num]); return EXIT_FAILURE; } switch (field) { case FIELD_NAME: puts(c->package); break; case FIELD_VERSION: puts(c->version); break; case FIELD_DEP_RUN: for (cd = c->run_depend; cd != NULL; cd = cd->next) { puts(cd->package); } break; case FIELD_DEP_BUILD: for (cd = c->build_depend; cd != NULL; cd = cd->next) { puts(cd->package); } break; case FIELD_SRCS: for (cs = c->sources; cs != NULL; cs = cs->next) { puts(cs->source); } break; default: break; } control_destroy(c); } return 0; }
/* -------------------------------------------------------------------------- * * control fd got readable, handle data * * -------------------------------------------------------------------------- */ static void control_readable(int fd, void *ptr) { char buf[1024]; if(io_list[fd].status.closed || io_list[fd].status.err) servauth_shutdown(); if(io_list[fd].recvq.lines) { while(io_gets(fd, buf, 1024) > 0) { if(control_parse(ptr, buf) == -1) { servauth_shutdown(); return; } } } return; }