sys-utsname.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*
  2. * <sys/sendfile.h> wrapper functions.
  3. *
  4. * Authors:
  5. * Jonathan Pryor ([email protected])
  6. *
  7. * Copyright (C) 2004 Jonathan Pryor
  8. */
  9. #include <sys/types.h>
  10. #include <errno.h>
  11. #include <stdlib.h>
  12. #include "map.h"
  13. #include "mph.h"
  14. #include <sys/utsname.h>
  15. G_BEGIN_DECLS
  16. static const mph_string_offset_t
  17. utsname_offsets[] = {
  18. MPH_STRING_OFFSET(struct utsname, sysname, MPH_STRING_OFFSET_ARRAY),
  19. MPH_STRING_OFFSET(struct utsname, nodename, MPH_STRING_OFFSET_ARRAY),
  20. MPH_STRING_OFFSET(struct utsname, release, MPH_STRING_OFFSET_ARRAY),
  21. MPH_STRING_OFFSET(struct utsname, version, MPH_STRING_OFFSET_ARRAY),
  22. MPH_STRING_OFFSET(struct utsname, machine, MPH_STRING_OFFSET_ARRAY)
  23. };
  24. static const mph_string_offset_t
  25. mph_utsname_offsets[] = {
  26. MPH_STRING_OFFSET(struct Mono_Posix_Syscall__Utsname, sysname, MPH_STRING_OFFSET_PTR),
  27. MPH_STRING_OFFSET(struct Mono_Posix_Syscall__Utsname, nodename, MPH_STRING_OFFSET_PTR),
  28. MPH_STRING_OFFSET(struct Mono_Posix_Syscall__Utsname, release, MPH_STRING_OFFSET_PTR),
  29. MPH_STRING_OFFSET(struct Mono_Posix_Syscall__Utsname, version, MPH_STRING_OFFSET_PTR),
  30. MPH_STRING_OFFSET(struct Mono_Posix_Syscall__Utsname, machine, MPH_STRING_OFFSET_PTR)
  31. };
  32. int
  33. Mono_Posix_Syscall_uname (struct Mono_Posix_Syscall__Utsname *buf)
  34. {
  35. struct utsname _buf;
  36. int r;
  37. if (!buf) {
  38. errno = EFAULT;
  39. return -1;
  40. }
  41. r = uname (&_buf);
  42. if (r == 0) {
  43. buf->_buf_ = _mph_copy_structure_strings (buf, mph_utsname_offsets,
  44. &_buf, utsname_offsets, sizeof(utsname_offsets)/sizeof(utsname_offsets[0]));
  45. buf->domainname = NULL;
  46. if (!buf->_buf_) {
  47. errno = ENOMEM;
  48. return -1;
  49. }
  50. }
  51. return r;
  52. }
  53. G_END_DECLS
  54. /*
  55. * vim: noexpandtab
  56. */