create_dep_tar.c 909 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include "tools.h"
  2. #include <err.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include "ccan/string/string.h"
  7. #include "ccan/talloc/talloc.h"
  8. #define TAR_CMD "tar cvvf "
  9. static void create_tar(char **deps, const char *dir)
  10. {
  11. FILE *p;
  12. char *cmd_args, *cmd, *module, *buffer;
  13. /* getting module name*/
  14. module = strrchr(dir, '/');
  15. module++;
  16. cmd_args = strjoin(NULL, deps, " ");
  17. cmd = talloc_asprintf(NULL, TAR_CMD "%s/%s_dep.tar %s", dir, module, cmd_args);
  18. p = popen(cmd, "r");
  19. if (!p)
  20. err(1, "Executing '%s'", cmd);
  21. buffer = grab_fd(NULL, fileno(p));
  22. if (!buffer)
  23. err(1, "Reading from '%s'", cmd);
  24. pclose(p);
  25. }
  26. int main(int argc, char *argv[])
  27. {
  28. char **deps;
  29. if (argc != 2)
  30. errx(1, "Usage: create_dep_tar <dir>\n"
  31. "Create tar of all the ccan dependencies");
  32. deps = get_deps(NULL, argv[1]);
  33. if(deps != NULL)
  34. create_tar(deps, argv[1]);
  35. return 0;
  36. }