sysconf_generic.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // Copyright 2021 Tobias Klauser. All rights reserved.
  2. // Use of this source code is governed by a BSD-style
  3. // license that can be found in the LICENSE file.
  4. //go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd
  5. // +build darwin dragonfly freebsd linux netbsd openbsd
  6. package sysconf
  7. import "os"
  8. func sysconfGeneric(name int) (int64, error) {
  9. // POSIX default values
  10. if sc, err := sysconfPOSIX(name); err == nil {
  11. return sc, nil
  12. }
  13. switch name {
  14. case SC_BC_BASE_MAX:
  15. return _BC_BASE_MAX, nil
  16. case SC_BC_DIM_MAX:
  17. return _BC_DIM_MAX, nil
  18. case SC_BC_SCALE_MAX:
  19. return _BC_SCALE_MAX, nil
  20. case SC_BC_STRING_MAX:
  21. return _BC_STRING_MAX, nil
  22. case SC_COLL_WEIGHTS_MAX:
  23. return _COLL_WEIGHTS_MAX, nil
  24. case SC_EXPR_NEST_MAX:
  25. return _EXPR_NEST_MAX, nil
  26. case SC_HOST_NAME_MAX:
  27. return _HOST_NAME_MAX, nil
  28. case SC_LINE_MAX:
  29. return _LINE_MAX, nil
  30. case SC_LOGIN_NAME_MAX:
  31. return _LOGIN_NAME_MAX, nil
  32. case SC_PAGESIZE: // same as SC_PAGE_SIZE
  33. return int64(os.Getpagesize()), nil
  34. case SC_RE_DUP_MAX:
  35. return _RE_DUP_MAX, nil
  36. case SC_SYMLOOP_MAX:
  37. return _SYMLOOP_MAX, nil
  38. }
  39. return -1, errInvalid
  40. }