dynloadfd.c 496 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include "lib9.h"
  2. #include <a.out.h>
  3. #include <dynld.h>
  4. typedef struct Fd Fd;
  5. struct Fd {
  6. int fd;
  7. };
  8. static long
  9. readfd(void *a, void *buf, long nbytes)
  10. {
  11. return read(((Fd*)a)->fd, buf, nbytes);
  12. }
  13. static vlong
  14. seekfd(void *a, vlong off, int t)
  15. {
  16. return seek(((Fd*)a)->fd, off, t);
  17. }
  18. static void
  19. errfd(char *s)
  20. {
  21. werrstr("%s", s);
  22. }
  23. Dynobj*
  24. dynloadfd(int fd, Dynsym *sym, int nsym, ulong maxsize)
  25. {
  26. Fd f;
  27. f.fd = fd;
  28. return dynloadgen(&f, readfd, seekfd, errfd, sym, nsym, maxsize);
  29. }