diff options
-rw-r--r-- | ChangeLog | 41 | ||||
-rw-r--r-- | Makerules | 2 | ||||
-rw-r--r-- | elf/ldd.sh.in | 8 | ||||
-rw-r--r-- | intl/locale.alias | 2 | ||||
-rw-r--r-- | string/Makefile | 3 | ||||
-rw-r--r-- | sunrpc/Makefile | 2 | ||||
-rw-r--r-- | sunrpc/etc.rpc | 44 | ||||
-rw-r--r-- | sunrpc/portmap.c | 480 | ||||
-rw-r--r-- | sysdeps/libm-ieee754/s_finitel.c | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sys/shm_buf.h | 16 |
10 files changed, 101 insertions, 501 deletions
@@ -1,3 +1,42 @@ +Sat Oct 19 17:42:24 1996 Ulrich Drepper <drepper@cygnus.com> + + * intl/locale.alias: Language for entry `czech' is `cs'. + +Fri Oct 17 13:20:35 1996 Thorsten Kukuk <kukuk@weber.uni-paderborn.de> + + * sunrpc/etc.rpc: Update from ti-rpcsvc 2.3. + +Fri Oct 18 22:56:45 1996 Ulrich Drepper <drepper@cygnus.com> + + * sunrpc/Makefile (install-sbin): Remove portmap. This version is + buggy and more competent people work on a usable version which is + distributed separately. + * sunrpc/portmap.c: Removed. + Suggested by Thorsten Kukuk. + +Fri Oct 18 12:17:09 1996 Enrique Melero <justine@iprolink.ch> + + * sysdeps/libm-ieee754/s_finitel.c: Change function name to + `finitel'. + +Fri Oct 18 00:01:10 1996 Ulrich Drepper <drepper@cygnus.com> + + * string/Makefile (tests): Add stratcliff. + * string/stratcliff.c: New file. Test for string function at + the edge of the usable memory. + +Thu Oct 17 22:10:19 1996 Ulrich Drepper <drepper@cygnus.com> + + * Makerules ($(libdir)/libc.so): Fix typo. + + * elf/ldd.sh.in: Test whether given file really exist and give + better message if it is not available. + +Thu Oct 17 04:25:38 1996 Ulrich Drepper <drepper@cygnus.com> + + * sysdeps/unix/sysv/linux/sys/shm_buf.h: Add definition for + SHM_R and SHM_W. + Thu Oct 17 01:55:34 1996 Ulrich Drepper <drepper@cygnus.com> * sunrpc/Makefile ($(objpfx)rpcsvc/%.h, $(objpfx)x%.c): Write @@ -33,7 +72,7 @@ Thu Oct 17 00:26:20 1996 NIIBE Yutaka <gniibe@mri.co.jp> Wed Oct 16 12:26:53 1996 Sven Verdoolaege <skimo@breughel.ufsia.ac.be> - * locale/progams/localedef.c (main): Test with -1 to find out + * locale/programs/localedef.c (main): Test with -1 to find out whether read failed. Wed Oct 16 14:54:59 1996 Ulrich Drepper <drepper@cygnus.com> @@ -621,7 +621,7 @@ ifndef subdir install: $(libdir)/libc.so $(libdir)/libc.so: $(common-objpfx)libc.so$(libc.so-version) \ $(elfobjdir)/$(rtld-installed-name) \ - $(libdir)lib$(libc-name).a + $(libdir)/lib$(libc-name).a (echo '/* Use the shared library, but some functions are only in';\ echo ' the static library, so try that secondarily.'; \ echo ' The dynamic linker defines some functions used by $(<F),';\ diff --git a/elf/ldd.sh.in b/elf/ldd.sh.in index 78fda69..ede1b97 100644 --- a/elf/ldd.sh.in +++ b/elf/ldd.sh.in @@ -17,7 +17,9 @@ case $# in /*) file="$1" ;; *) file="./$1" ;; esac - if ${RTLD} --verify "$file"; then + if test ! -f "$file"; then + echo "$file: no such file" + elif ${RTLD} --verify "$file"; then LD_TRACE_LOADED_OBJECTS=1 exec ${RTLD} "$file" && exit 1 else echo ' not a dynamic executable' @@ -31,7 +33,9 @@ case $# in /*) file="$file" ;; *) file="./$file" ;; esac - if ${RTLD} --verify "$file"; then + if test ! -f "$file"; then + echo "$file: no such file" + elif ${RTLD} --verify "$file"; then LD_TRACE_LOADED_OBJECTS=1 ${RTLD} "$file" else echo ' not a dynamic executable' diff --git a/intl/locale.alias b/intl/locale.alias index cf1f6ee..99ce5d1 100644 --- a/intl/locale.alias +++ b/intl/locale.alias @@ -25,7 +25,7 @@ # your own site which you think might be useful for others too, share it # with the rest of us. Send it to bug-gnu-utils@prep.ai.mit.edu. -czech cz_CZ.ISO-8859-2 +czech cs_CZ.ISO-8859-2 danish da_DK.ISO-8859-1 dansk da_DK.ISO-8859-1 deutsch de_DE.ISO-8859-1 diff --git a/string/Makefile b/string/Makefile index c120b7d..d817d15 100644 --- a/string/Makefile +++ b/string/Makefile @@ -38,7 +38,7 @@ routines := strcat strchr strcmp strcoll strcpy strcspn \ delete extract insert stringify) \ envz basename -tests := tester testcopy test-ffs tst-strlen +tests := tester testcopy test-ffs tst-strlen stratcliff distribute := memcopy.h pagecopy.h @@ -47,3 +47,4 @@ include ../Rules tester-ENV = LANGUAGE=C CFLAGS-tester.c = -fno-builtin CFLAGS-tst-strlen.c = -fno-builtin +CFLAGS-stratcliff.c = -fno-builtin diff --git a/sunrpc/Makefile b/sunrpc/Makefile index 5bd8f9b..943f247 100644 --- a/sunrpc/Makefile +++ b/sunrpc/Makefile @@ -68,7 +68,7 @@ routines := auth_none auth_unix authuxprot bindrsvprt \ others := portmap rpcinfo install-bin := rpcgen -install-sbin := rpcinfo portmap +install-sbin := rpcinfo rpcgen-objs = rpc_main.o rpc_hout.o rpc_cout.o rpc_parse.o \ rpc_scan.o rpc_util.o rpc_svcout.o rpc_clntout.o \ rpc_tblout.o rpc_sample.o diff --git a/sunrpc/etc.rpc b/sunrpc/etc.rpc index 6367ff4..2987459 100644 --- a/sunrpc/etc.rpc +++ b/sunrpc/etc.rpc @@ -1,8 +1,9 @@ +#ident "@(#)rpc 1.11 95/07/14 SMI" /* SVr4.0 1.2 */ # -# rpc 88/08/01 4.0 RPCSRC; from 1.12 88/02/07 SMI +# rpc # -portmapper 100000 portmap sunrpc -rstatd 100001 rstat rstat_svc rup perfmeter +rpcbind 100000 portmap sunrpc rpcbind +rstatd 100001 rstat rup perfmeter rusersd 100002 rusers nfs 100003 nfsprog ypserv 100004 ypprog @@ -25,12 +26,43 @@ nlockmgr 100021 x25.inr 100022 statmon 100023 status 100024 -bootparam 100026 ypupdated 100028 ypupdate keyserv 100029 keyserver -tfsd 100037 +bootparam 100026 +sunlink_mapper 100033 +tfsd 100037 nsed 100038 nsemntd 100039 +showfhd 100043 showfh +ioadmd 100055 rpc.ioadmd +NETlicense 100062 +sunisamd 100065 +debug_svc 100066 dbsrv +ypxfrd 100069 rpc.ypxfrd +bugtraqd 100071 +kerbd 100078 +event 100101 na.event # SunNet Manager +logger 100102 na.logger # SunNet Manager +sync 100104 na.sync +hostperf 100107 na.hostperf +activity 100109 na.activity # SunNet Manager +hostmem 100112 na.hostmem +sample 100113 na.sample +x25 100114 na.x25 +ping 100115 na.ping +rpcnfs 100116 na.rpcnfs +hostif 100117 na.hostif +etherif 100118 na.etherif +iproutes 100120 na.iproutes +layers 100121 na.layers +snmp 100122 na.snmp snmp-cmc snmp-synoptics snmp-unisys snmp-utk +traffic 100123 na.traffic +nfs_acl 100227 +sadmind 100232 +nisd 100300 rpc.nisd +nispasswd 100303 rpc.nispasswdd +ufsd 100233 ufsd pcnfsd 150001 -amd 300019 amq +amd 300019 amq bwnfsd 545580417 +fypxfrd 600100069 freebsd-ypxfrd diff --git a/sunrpc/portmap.c b/sunrpc/portmap.c deleted file mode 100644 index bbe9dbb..0000000 --- a/sunrpc/portmap.c +++ /dev/null @@ -1,480 +0,0 @@ -/* @(#)portmap.c 2.3 88/08/11 4.0 RPCSRC */ -#ifndef lint -static char sccsid[] = "@(#)portmap.c 1.32 87/08/06 Copyr 1984 Sun Micro"; -#endif - -/* - * Copyright (c) 1984 by Sun Microsystems, Inc. - */ - -/* - * portmap.c, Implements the program,version to port number mapping for - * rpc. - */ - -/* - * Sun RPC is a product of Sun Microsystems, Inc. and is provided for - * unrestricted use provided that this legend is included on all tape - * media and as a part of the software program in whole or part. Users - * may copy or modify Sun RPC without charge, but are not authorized - * to license or distribute it to anyone else except as part of a product or - * program developed by the user. - * - * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE - * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR - * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. - * - * Sun RPC is provided with no support and without any obligation on the - * part of Sun Microsystems, Inc. to assist in its use, correction, - * modification or enhancement. - * - * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE - * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC - * OR ANY PART THEREOF. - * - * In no event will Sun Microsystems, Inc. be liable for any lost revenue - * or profits or other special, indirect and consequential damages, even if - * Sun has been advised of the possibility of such damages. - * - * Sun Microsystems, Inc. - * 2550 Garcia Avenue - * Mountain View, California 94043 - */ - -#include <rpc/rpc.h> -#include <rpc/pmap_prot.h> -#include <stdio.h> -#include <netdb.h> -#include <sys/socket.h> -#include <sys/ioctl.h> -#include <sys/wait.h> -#include <sys/signal.h> - -int reg_service(); -void reap(); -struct pmaplist *pmaplist; -static int debugging = 0; - -main() -{ - SVCXPRT *xprt; - int sock, pid, t; - struct sockaddr_in addr; - int len = sizeof(struct sockaddr_in); - register struct pmaplist *pml; - -#ifndef DEBUG - pid = fork(); - if (pid < 0) { - perror("portmap: fork"); - exit(1); - } - if (pid != 0) - exit(0); - for (t = 0; t < 20; t++) - close(t); - open("/", 0); - dup2(0, 1); - dup2(0, 2); - t = open("/dev/tty", 2); - if (t >= 0) { - ioctl(t, TIOCNOTTY, (char *)0); - close(t); - } -#endif - if ((sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) { - perror(_("portmap cannot create socket")); - exit(1); - } - - addr.sin_addr.s_addr = 0; - addr.sin_family = AF_INET; - addr.sin_port = htons(PMAPPORT); - if (bind(sock, (struct sockaddr *)&addr, len) != 0) { - perror(_("portmap cannot bind")); - exit(1); - } - - if ((xprt = svcudp_create(sock)) == (SVCXPRT *)NULL) { - fprintf(stderr, _("couldn't do udp_create\n")); - exit(1); - } - /* make an entry for ourself */ - pml = (struct pmaplist *)malloc((u_int)sizeof(struct pmaplist)); - pml->pml_next = 0; - pml->pml_map.pm_prog = PMAPPROG; - pml->pml_map.pm_vers = PMAPVERS; - pml->pml_map.pm_prot = IPPROTO_UDP; - pml->pml_map.pm_port = PMAPPORT; - pmaplist = pml; - - if ((sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) { - perror(_("portmap cannot create socket")); - exit(1); - } - if (bind(sock, (struct sockaddr *)&addr, len) != 0) { - perror(_("portmap cannot bind")); - exit(1); - } - if ((xprt = svctcp_create(sock, RPCSMALLMSGSIZE, RPCSMALLMSGSIZE)) - == (SVCXPRT *)NULL) { - fprintf(stderr, _("couldn't do tcp_create\n")); - exit(1); - } - /* make an entry for ourself */ - pml = (struct pmaplist *)malloc((u_int)sizeof(struct pmaplist)); - pml->pml_map.pm_prog = PMAPPROG; - pml->pml_map.pm_vers = PMAPVERS; - pml->pml_map.pm_prot = IPPROTO_TCP; - pml->pml_map.pm_port = PMAPPORT; - pml->pml_next = pmaplist; - pmaplist = pml; - - (void)svc_register(xprt, PMAPPROG, PMAPVERS, reg_service, FALSE); - - (void)signal(SIGCHLD, reap); - svc_run(); - fprintf(stderr, _("run_svc returned unexpectedly\n")); - abort(); -} - -static struct pmaplist * -find_service(prog, vers, prot) - u_long prog; - u_long vers; -{ - register struct pmaplist *hit = NULL; - register struct pmaplist *pml; - - for (pml = pmaplist; pml != NULL; pml = pml->pml_next) { - if ((pml->pml_map.pm_prog != prog) || - (pml->pml_map.pm_prot != prot)) - continue; - hit = pml; - if (pml->pml_map.pm_vers == vers) - break; - } - return (hit); -} - -/* - * 1 OK, 0 not - */ -reg_service(rqstp, xprt) - struct svc_req *rqstp; - SVCXPRT *xprt; -{ - struct pmap reg; - struct pmaplist *pml, *prevpml, *fnd; - long ans, port; - caddr_t t; - -#ifdef DEBUG - fprintf(stderr, "server: about do a switch\n"); -#endif - switch (rqstp->rq_proc) { - - case PMAPPROC_NULL: - /* - * Null proc call - */ - if ((!svc_sendreply(xprt, xdr_void, NULL)) && debugging) { - abort(); - } - break; - - case PMAPPROC_SET: - /* - * Set a program,version to port mapping - */ - if (!svc_getargs(xprt, xdr_pmap, ®)) - svcerr_decode(xprt); - else { - /* - * check to see if already used - * find_service returns a hit even if - * the versions don't match, so check for it - */ - fnd = find_service(reg.pm_prog, reg.pm_vers, reg.pm_prot); - if (fnd && fnd->pml_map.pm_vers == reg.pm_vers) { - if (fnd->pml_map.pm_port == reg.pm_port) { - ans = 1; - goto done; - } - else { - ans = 0; - goto done; - } - } else { - /* - * add to END of list - */ - pml = (struct pmaplist *) - malloc((u_int)sizeof(struct pmaplist)); - pml->pml_map = reg; - pml->pml_next = 0; - if (pmaplist == 0) { - pmaplist = pml; - } else { - for (fnd= pmaplist; fnd->pml_next != 0; - fnd = fnd->pml_next); - fnd->pml_next = pml; - } - ans = 1; - } - done: - if ((!svc_sendreply(xprt, xdr_long, (caddr_t)&ans)) && - debugging) { - fprintf(stderr, "svc_sendreply\n"); - abort(); - } - } - break; - - case PMAPPROC_UNSET: - /* - * Remove a program,version to port mapping. - */ - if (!svc_getargs(xprt, xdr_pmap, ®)) - svcerr_decode(xprt); - else { - ans = 0; - for (prevpml = NULL, pml = pmaplist; pml != NULL; ) { - if ((pml->pml_map.pm_prog != reg.pm_prog) || - (pml->pml_map.pm_vers != reg.pm_vers)) { - /* both pml & prevpml move forwards */ - prevpml = pml; - pml = pml->pml_next; - continue; - } - /* found it; pml moves forward, prevpml stays */ - ans = 1; - t = (caddr_t)pml; - pml = pml->pml_next; - if (prevpml == NULL) - pmaplist = pml; - else - prevpml->pml_next = pml; - free(t); - } - if ((!svc_sendreply(xprt, xdr_long, (caddr_t)&ans)) && - debugging) { - fprintf(stderr, "svc_sendreply\n"); - abort(); - } - } - break; - - case PMAPPROC_GETPORT: - /* - * Lookup the mapping for a program,version and return its port - */ - if (!svc_getargs(xprt, xdr_pmap, ®)) - svcerr_decode(xprt); - else { - fnd = find_service(reg.pm_prog, reg.pm_vers, reg.pm_prot); - if (fnd) - port = fnd->pml_map.pm_port; - else - port = 0; - if ((!svc_sendreply(xprt, xdr_long, (caddr_t)&port)) && - debugging) { - fprintf(stderr, "svc_sendreply\n"); - abort(); - } - } - break; - - case PMAPPROC_DUMP: - /* - * Return the current set of mapped program,version - */ - if (!svc_getargs(xprt, xdr_void, NULL)) - svcerr_decode(xprt); - else { - if ((!svc_sendreply(xprt, xdr_pmaplist, - (caddr_t)&pmaplist)) && debugging) { - fprintf(stderr, "svc_sendreply\n"); - abort(); - } - } - break; - - case PMAPPROC_CALLIT: - /* - * Calls a procedure on the local machine. If the requested - * procedure is not registered this procedure does not return - * error information!! - * This procedure is only supported on rpc/udp and calls via - * rpc/udp. It passes null authentication parameters. - */ - callit(rqstp, xprt); - break; - - default: - svcerr_noproc(xprt); - break; - } -} - - -/* - * Stuff for the rmtcall service - */ -#define ARGSIZE 9000 - -typedef struct encap_parms { - u_long arglen; - char *args; -}; - -static bool_t -xdr_encap_parms(xdrs, epp) - XDR *xdrs; - struct encap_parms *epp; -{ - - return (xdr_bytes(xdrs, &(epp->args), &(epp->arglen), ARGSIZE)); -} - -typedef struct rmtcallargs { - u_long rmt_prog; - u_long rmt_vers; - u_long rmt_port; - u_long rmt_proc; - struct encap_parms rmt_args; -}; - -static bool_t -xdr_rmtcall_args(xdrs, cap) - register XDR *xdrs; - register struct rmtcallargs *cap; -{ - - /* does not get a port number */ - if (xdr_u_long(xdrs, &(cap->rmt_prog)) && - xdr_u_long(xdrs, &(cap->rmt_vers)) && - xdr_u_long(xdrs, &(cap->rmt_proc))) { - return (xdr_encap_parms(xdrs, &(cap->rmt_args))); - } - return (FALSE); -} - -static bool_t -xdr_rmtcall_result(xdrs, cap) - register XDR *xdrs; - register struct rmtcallargs *cap; -{ - if (xdr_u_long(xdrs, &(cap->rmt_port))) - return (xdr_encap_parms(xdrs, &(cap->rmt_args))); - return (FALSE); -} - -/* - * only worries about the struct encap_parms part of struct rmtcallargs. - * The arglen must already be set!! - */ -static bool_t -xdr_opaque_parms(xdrs, cap) - XDR *xdrs; - struct rmtcallargs *cap; -{ - - return (xdr_opaque(xdrs, cap->rmt_args.args, cap->rmt_args.arglen)); -} - -/* - * This routine finds and sets the length of incoming opaque paraters - * and then calls xdr_opaque_parms. - */ -static bool_t -xdr_len_opaque_parms(xdrs, cap) - register XDR *xdrs; - struct rmtcallargs *cap; -{ - register u_int beginpos, lowpos, highpos, currpos, pos; - - beginpos = lowpos = pos = xdr_getpos(xdrs); - highpos = lowpos + ARGSIZE; - while ((int)(highpos - lowpos) >= 0) { - currpos = (lowpos + highpos) / 2; - if (xdr_setpos(xdrs, currpos)) { - pos = currpos; - lowpos = currpos + 1; - } else { - highpos = currpos - 1; - } - } - xdr_setpos(xdrs, beginpos); - cap->rmt_args.arglen = pos - beginpos; - return (xdr_opaque_parms(xdrs, cap)); -} - -/* - * Call a remote procedure service - * This procedure is very quiet when things go wrong. - * The proc is written to support broadcast rpc. In the broadcast case, - * a machine should shut-up instead of complain, less the requestor be - * overrun with complaints at the expense of not hearing a valid reply ... - * - * This now forks so that the program & process that it calls can call - * back to the portmapper. - */ -static -callit(rqstp, xprt) - struct svc_req *rqstp; - SVCXPRT *xprt; -{ - struct rmtcallargs a; - struct pmaplist *pml; - u_short port; - struct sockaddr_in me; - int pid, socket = -1; - CLIENT *client; - struct authunix_parms *au = (struct authunix_parms *)rqstp->rq_clntcred; - struct timeval timeout; - char buf[ARGSIZE]; - - timeout.tv_sec = 5; - timeout.tv_usec = 0; - a.rmt_args.args = buf; - if (!svc_getargs(xprt, xdr_rmtcall_args, &a)) - return; - if ((pml = find_service(a.rmt_prog, a.rmt_vers, IPPROTO_UDP)) == NULL) - return; - /* - * fork a child to do the work. Parent immediately returns. - * Child exits upon completion. - */ - if ((pid = fork()) != 0) { - if (debugging && (pid < 0)) { - fprintf(stderr, _("portmap CALLIT: cannot fork.\n")); - } - return; - } - port = pml->pml_map.pm_port; - get_myaddress(&me); - me.sin_port = htons(port); - client = clntudp_create(&me, a.rmt_prog, a.rmt_vers, timeout, &socket); - if (client != (CLIENT *)NULL) { - if (rqstp->rq_cred.oa_flavor == AUTH_UNIX) { - client->cl_auth = authunix_create(au->aup_machname, - au->aup_uid, au->aup_gid, au->aup_len, au->aup_gids); - } - a.rmt_port = (u_long)port; - if (clnt_call(client, a.rmt_proc, xdr_opaque_parms, &a, - xdr_len_opaque_parms, &a, timeout) == RPC_SUCCESS) { - svc_sendreply(xprt, xdr_rmtcall_result, &a); - } - AUTH_DESTROY(client->cl_auth); - clnt_destroy(client); - } - /* (void)close(socket); clnt_destroy already closed it */ - exit(0); -} - -void -reap() -{ - while (wait3(NULL, WNOHANG, NULL) > 0); -} diff --git a/sysdeps/libm-ieee754/s_finitel.c b/sysdeps/libm-ieee754/s_finitel.c index 02487c6..4423726 100644 --- a/sysdeps/libm-ieee754/s_finitel.c +++ b/sysdeps/libm-ieee754/s_finitel.c @@ -27,9 +27,9 @@ static char rcsid[] = "$NetBSD: $"; #include "math_private.h" #ifdef __STDC__ - int __finite(long double x) + int __finitel(long double x) #else - int __finite(x) + int __finitel(x) long double x; #endif { diff --git a/sysdeps/unix/sysv/linux/sys/shm_buf.h b/sysdeps/unix/sysv/linux/sys/shm_buf.h index 048aa64..16cc0c5 100644 --- a/sysdeps/unix/sysv/linux/sys/shm_buf.h +++ b/sysdeps/unix/sysv/linux/sys/shm_buf.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1995 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1996 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995. @@ -23,6 +23,10 @@ Boston, MA 02111-1307, USA. */ #include <features.h> #include <sys/types.h> +/* Permission flag for shmget. */ +#define SHM_R 0400 /* or S_IRUGO from <linux/stat.h> */ +#define SHM_W 0200 /* or S_IWUGO from <linux/stat.h> */ + /* Flags for `shmat'. */ #define SHM_RDONLY 010000 /* attach read-only else read-write */ #define SHM_RND 020000 /* round attach address to SHMLBA */ @@ -62,11 +66,11 @@ struct shmid_ds #define SHM_LOCKED 02000 /* segment will not be swapped */ struct shminfo { - int shmmax; - int shmmin; - int shmmni; - int shmseg; - int shmall; + int shmmax; + int shmmin; + int shmmni; + int shmseg; + int shmall; }; struct shm_info { |