sysconf_generic.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. package sysconf
  6. import "os"
  7. func sysconfGeneric(name int) (int64, error) {
  8. // POSIX default values
  9. if sc, err := sysconfPOSIX(name); err == nil {
  10. return sc, nil
  11. }
  12. switch name {
  13. case SC_BC_BASE_MAX:
  14. return _BC_BASE_MAX, nil
  15. case SC_BC_DIM_MAX:
  16. return _BC_DIM_MAX, nil
  17. case SC_BC_SCALE_MAX:
  18. return _BC_SCALE_MAX, nil
  19. case SC_BC_STRING_MAX:
  20. return _BC_STRING_MAX, nil
  21. case SC_COLL_WEIGHTS_MAX:
  22. return _COLL_WEIGHTS_MAX, nil
  23. case SC_EXPR_NEST_MAX:
  24. return _EXPR_NEST_MAX, nil
  25. case SC_HOST_NAME_MAX:
  26. return _HOST_NAME_MAX, nil
  27. case SC_LINE_MAX:
  28. return _LINE_MAX, nil
  29. case SC_LOGIN_NAME_MAX:
  30. return _LOGIN_NAME_MAX, nil
  31. case SC_PAGESIZE: // same as SC_PAGE_SIZE
  32. return int64(os.Getpagesize()), nil
  33. case SC_RE_DUP_MAX:
  34. return _RE_DUP_MAX, nil
  35. case SC_SYMLOOP_MAX:
  36. return _SYMLOOP_MAX, nil
  37. }
  38. return -1, errInvalid
  39. }