1: /*-
   2:  * Copyright (c) 1993
   3:  *	The Regents of the University of California.  All rights reserved.
   4:  *
   5:  * Redistribution and use in source and binary forms, with or without
   6:  * modification, are permitted provided that the following conditions
   7:  * are met:
   8:  * 1. Redistributions of source code must retain the above copyright
   9:  *    notice, this list of conditions and the following disclaimer.
  10:  * 2. Redistributions in binary form must reproduce the above copyright
  11:  *    notice, this list of conditions and the following disclaimer in the
  12:  *    documentation and/or other materials provided with the distribution.
  13:  * 3. All advertising materials mentioning features or use of this software
  14:  *    must display the following acknowledgement:
  15:  *	This product includes software developed by the University of
  16:  *	California, Berkeley and its contributors.
  17:  * 4. Neither the name of the University nor the names of its contributors
  18:  *    may be used to endorse or promote products derived from this software
  19:  *    without specific prior written permission.
  20:  *
  21:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31:  * SUCH DAMAGE.
  32:  */
  33: 
  34: #if defined(LIBC_SCCS) && !defined(lint)
  35: static char sccsid[] = "@(#)sysctl.c	8.2.2 (2.11BSD GTE) 1996/11/27";
  36: #endif /* LIBC_SCCS and not lint */
  37: 
  38: #include <sys/param.h>
  39: #include <sys/sysctl.h>
  40: #include <errno.h>
  41: #include <paths.h>
  42: 
  43: extern  int errno;
  44: static
  45: char _PATH_STDPATH[]="/usr/bin:/bin:/usr/ucb:/sbin:/usr/sbin:/usr/local:/usr/new";
  46: 
  47: 
  48: int
  49: sysctl(name, namelen, oldp, oldlenp, newp, newlen)
  50:     int *name;
  51:     u_int namelen;
  52:     void *oldp, *newp;
  53:     size_t *oldlenp, newlen;
  54: {
  55:     if (name[0] != CTL_USER)
  56:         return (__sysctl(name, namelen, oldp, oldlenp, newp, newlen));
  57: 
  58:     if (newp != NULL) {
  59:         errno = EPERM;
  60:         return (-1);
  61:     }
  62:     if (namelen != 2) {
  63:         errno = EINVAL;
  64:         return (-1);
  65:     }
  66: 
  67: /*
  68:  * This idea behind this section is silly.  Other than 'bc' who cares about
  69:  * half of these?  A 3/4 hearted attempt is made however to return numbers
  70:  * that are not totally bogus.
  71:  *
  72:  * Rather than port over the raft of include files with the attendant plethora
  73:  * of #define statements we just plug in the numbers from 4.4-Lite.
  74:  */
  75: 
  76:     switch (name[1]) {
  77:     case USER_CS_PATH:
  78:         if (oldp && *oldlenp < sizeof(_PATH_STDPATH))
  79:             return (ENOMEM);
  80:         *oldlenp = sizeof(_PATH_STDPATH);
  81:         if (oldp != NULL)
  82:             strcpy(oldp, _PATH_STDPATH);
  83:         return (0);
  84:     }
  85: 
  86:     if (oldp && *oldlenp < sizeof(int))
  87:         return (ENOMEM);
  88:     *oldlenp = sizeof(int);
  89:     if (oldp == NULL)
  90:         return (0);
  91: 
  92:     switch (name[1]) {
  93:     case USER_BC_BASE_MAX:
  94:     case USER_BC_SCALE_MAX:
  95:         *(int *)oldp = 99;
  96:         return (0);
  97:     case USER_BC_DIM_MAX:
  98:         *(int *)oldp = 2048;
  99:         return (0);
 100:     case USER_BC_STRING_MAX:
 101:         *(int *)oldp = 1000;
 102:         return (0);
 103:     case USER_EXPR_NEST_MAX:
 104:         *(int *)oldp = 32;
 105:         return (0);
 106:     case USER_LINE_MAX:
 107:         *(int *)oldp = 1024;
 108:         return (0);
 109:     case USER_RE_DUP_MAX:
 110:         *(int *)oldp = 255;
 111:         return (0);
 112:     case USER_COLL_WEIGHTS_MAX:
 113:     case USER_POSIX2_VERSION:
 114:     case USER_POSIX2_C_BIND:
 115:     case USER_POSIX2_C_DEV:
 116:     case USER_POSIX2_CHAR_TERM:
 117:     case USER_POSIX2_FORT_DEV:
 118:     case USER_POSIX2_FORT_RUN:
 119:     case USER_POSIX2_LOCALEDEF:
 120:     case USER_POSIX2_SW_DEV:
 121:     case USER_POSIX2_UPE:
 122:         *(int *)oldp = 0;
 123:         return (0);
 124:     case USER_STREAM_MAX:
 125:         *(int *)oldp = 20;
 126:         return (0);
 127:     case USER_TZNAME_MAX:
 128:         *(int *)oldp = 63;
 129:         return (0);
 130:     default:
 131:         errno = EINVAL;
 132:         return (-1);
 133:     }
 134:     /* NOTREACHED */
 135: }
Last modified: 1996-11-28
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 2699
Valid CSS Valid XHTML 1.0 Strict