pathconf.rs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. use header::errno;
  2. use platform;
  3. use platform::types::*;
  4. pub const _PC_LINK_MAX: c_int = 0;
  5. pub const _PC_MAX_CANON: c_int = 1;
  6. pub const _PC_MAX_INPUT: c_int = 2;
  7. pub const _PC_NAME_MAX: c_int = 3;
  8. pub const _PC_PATH_MAX: c_int = 4;
  9. pub const _PC_PIPE_BUF: c_int = 5;
  10. pub const _PC_CHOWN_RESTRICTED: c_int = 6;
  11. pub const _PC_NO_TRUNC: c_int = 7;
  12. pub const _PC_VDISABLE: c_int = 8;
  13. pub const _PC_SYNC_IO: c_int = 9;
  14. pub const _PC_ASYNC_IO: c_int = 10;
  15. pub const _PC_PRIO_IO: c_int = 11;
  16. pub const _PC_SOCK_MAXBUF: c_int = 12;
  17. pub const _PC_FILESIZEBITS: c_int = 13;
  18. pub const _PC_REC_INCR_XFER_SIZE: c_int = 14;
  19. pub const _PC_REC_MAX_XFER_SIZE: c_int = 15;
  20. pub const _PC_REC_MIN_XFER_SIZE: c_int = 16;
  21. pub const _PC_REC_XFER_ALIGN: c_int = 17;
  22. pub const _PC_ALLOC_SIZE_MIN: c_int = 18;
  23. pub const _PC_SYMLINK_MAX: c_int = 19;
  24. pub const _PC_2_SYMLINKS: c_int = 20;
  25. fn pc(name: c_int) -> c_long {
  26. // Settings from musl, some adjusted
  27. match name {
  28. _PC_LINK_MAX => 127,
  29. _PC_MAX_CANON => 255,
  30. _PC_MAX_INPUT => 255,
  31. _PC_NAME_MAX => 255,
  32. _PC_PATH_MAX => 4096,
  33. _PC_PIPE_BUF => 4096,
  34. _PC_CHOWN_RESTRICTED => 1,
  35. _PC_NO_TRUNC => 1,
  36. _PC_VDISABLE => 0,
  37. _PC_SYNC_IO => 1,
  38. _PC_ASYNC_IO => -1,
  39. _PC_PRIO_IO => -1,
  40. _PC_SOCK_MAXBUF => -1,
  41. _PC_FILESIZEBITS => 64,
  42. _PC_REC_INCR_XFER_SIZE => -1,
  43. _PC_REC_MAX_XFER_SIZE => -1,
  44. _PC_REC_MIN_XFER_SIZE => 4096,
  45. _PC_REC_XFER_ALIGN => 4096,
  46. _PC_ALLOC_SIZE_MIN => 4096,
  47. _PC_SYMLINK_MAX => -1,
  48. _PC_2_SYMLINKS => 1,
  49. _ => {
  50. unsafe { platform::errno = errno::EINVAL; }
  51. -1
  52. }
  53. }
  54. }
  55. #[no_mangle]
  56. pub extern "C" fn fpathconf(_fildes: c_int, name: c_int) -> c_long {
  57. pc(name)
  58. }
  59. #[no_mangle]
  60. pub extern "C" fn pathconf(_path: *const c_char, name: c_int) -> c_long {
  61. pc(name)
  62. }