Path: news.funet.fi!fuug!mcsun!uunet!elroy.jpl.nasa.gov!usc!pollux.usc.edu!kjh
From: kjh@pollux.usc.edu (Kenneth J. Hendrickson)
Newsgroups: comp.os.minix
Subject: memory.h
Message-ID: <35289@usc.edu>
Date: 24 Aug 91 07:27:57 GMT
Sender: news@usc.edu
Organization: EE-Systems, USC, Los Angeles
Lines: 174
Nntp-Posting-Host: pollux.usc.edu

Why doesn't Minix have a /usr/include/memory.h ?
(Ok.  Ok.  I know it's supposed to be version 7.)

However, some software requires memory.h, and it wouldn't hurt.
Currently, the routines in memory.h are defined in string.h.
This is bad, since these routines *really* aren't string routines.
In addition, as stated above, their declarations belong in
/usr/include/memory.h.

I propose that we create memory.h.  It will have the same declarations
for the mem* routines as string.h.  These declarations will continue to
exist in string.h.  They will be bracketed by #ifndef _MEMORY_H in both
include files.  This way, Minix software which doesn't yet include
memory.h will not be broken.  We can, and should, fix the Minix software
regarding this matter.

The cdif file for string.h was larger than the new string.h.  Hence,
both string.h and memory.h are included directly here.  They also follow
uuencoded for the poor BITnet :-( folks.  Here are the new modified
include files:

-----------------------------------------------------------------------
/* The <memory.h> header contains prototypes for the memory handling 
 * functions.
 */

#ifndef _MEMORY_H
#define _MEMORY_H

#define NULL    ((void *)0)

#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned int size_t;	/* type returned by sizeof */
#endif

/* Function Prototypes. */
#ifndef _ANSI_H
#include <ansi.h>
#endif

_PROTOTYPE( void *memccpy, (char *_dst, const char *_src, int _ucharstop,
						    size_t _size)	);
_PROTOTYPE( void *memchr, (const void *_s, int _c, size_t _n)		);
_PROTOTYPE( int memcmp, (const void *_s1, const void *_s2, size_t _n)	);
_PROTOTYPE( void *memcpy, (void *_s1, const void *_s2, size_t _n)	);
_PROTOTYPE( void *memmove, (void *_s1, const void *_s2, size_t _n)	);
_PROTOTYPE( void *memset, (void *_s, int _c, size_t _n)			);

#endif /* _MEMORY_H */
-----------------------------------------------------------------------
/* The <string.h> header contains prototypes for the string handling 
 * functions.
 */

#ifndef _STRING_H
#define _STRING_H

#define NULL    ((void *)0)

#ifndef _SIZE_T
#define _SIZE_T
typedef unsigned int size_t;	/* type returned by sizeof */
#endif

/* Function Prototypes. */
#ifndef _ANSI_H
#include <ansi.h>
#endif

_PROTOTYPE( char *strcpy, (char *_s1, const char *_s2)			);
_PROTOTYPE( char *strncpy, (char *_s1, const char *_s2, size_t _n)	);
_PROTOTYPE( char *strcat, (char *_s1, const char *_s2)			);
_PROTOTYPE( char *strncat, (char *_s1, const char *_s2, size_t _n)	);
_PROTOTYPE( int strcmp, (const char *_s1, const char *_s2)		);
_PROTOTYPE( int strcoll, (const char *_s1, const char *_s2)		);
_PROTOTYPE( int strncmp, (const char *_s1, const char *_s2, size_t _n)	);
_PROTOTYPE( size_t strxfrm, (char *_s1, const char *_s2, size_t _n)	);
_PROTOTYPE( char *strchr, (const char *_s, int _c)			);
_PROTOTYPE( size_t strcspn, (const char *_s1, const char *_s2)		);
_PROTOTYPE( char *strpbrk, (const char *_s1, const char *_s2)		);
_PROTOTYPE( char *strrchr, (const char *_s, int _c)			);
_PROTOTYPE( size_t strspn, (const char *_s1, const char *_s2)		);
_PROTOTYPE( char *strstr, (const char *_s1, const char *_s2)		);
_PROTOTYPE( char *strtok, (char *_s1, const char *_s2)			);
_PROTOTYPE( char *strerror, ( int _errnum)				);
_PROTOTYPE( size_t strlen, (const char *_s)				);

#ifdef _MINIX
/* For backward compatibility. */
_PROTOTYPE( char *index, (const char *_s, int _charwanted)		);
_PROTOTYPE( char *rindex, (const char *_s, int _charwanted)		);
_PROTOTYPE( void bcopy, (const char *_src, char *_dst, int _length)	);
_PROTOTYPE( int bcmp, (const char *_s1, const char *_s2, int _length)	);
_PROTOTYPE( void bzero, (char *_dst, int _length)			);
#endif

#ifndef _MEMORY_H
#include <memory.h>
#endif

#endif /* _STRING_H */
-----------------------------------------------------------------------

begin 644 memory.h
M+RH@5&AE(#QM96UO<GDN:#X@:&5A9&5R(&-O;G1A:6YS('!R;W1O='EP97,@
M9F]R('1H92!M96UO<GD@:&%N9&QI;F<@"B`J(&9U;F-T:6]N<RX*("HO"@HC
M:69N9&5F(%]-14U/4EE?2`HC9&5F:6YE(%]-14U/4EE?2`H*(V1E9FEN92!.
M54Q,("`@("@H=F]I9"`J*3`I"@HC:69N9&5F(%]325I%7U0*(V1E9FEN92!?
M4TE:15]4"G1Y<&5D968@=6YS:6=N960@:6YT('-I>F5?=#L)+RH@='EP92!R
M971U<FYE9"!B>2!S:7IE;V8@*B\*(V5N9&EF"@HO*B!&=6YC=&EO;B!0<F]T
M;W1Y<&5S+B`J+PHC:69N9&5F(%]!3E-)7T@*(VEN8VQU9&4@/&%N<VDN:#X*
M(V5N9&EF"@I?4%)/5$]465!%*"!V;VED("IM96UC8W!Y+"`H8VAA<B`J7V1S
M="P@8V]N<W0@8VAA<B`J7W-R8RP@:6YT(%]U8VAA<G-T;W`L"@D)"0D)"2`@
M("!S:7IE7W0@7W-I>F4I"2D["E]04D]43U194$4H('9O:60@*FUE;6-H<BP@
M*&-O;G-T('9O:60@*E]S+"!I;G0@7V,L('-I>F5?="!?;BD)"2D["E]04D]4
M3U194$4H(&EN="!M96UC;7`L("AC;VYS="!V;VED("I?<S$L(&-O;G-T('9O
M:60@*E]S,BP@<VEZ95]T(%]N*0DI.PI?4%)/5$]465!%*"!V;VED("IM96UC
M<'DL("AV;VED("I?<S$L(&-O;G-T('9O:60@*E]S,BP@<VEZ95]T(%]N*0DI
M.PI?4%)/5$]465!%*"!V;VED("IM96UM;W9E+"`H=F]I9"`J7W,Q+"!C;VYS
M="!V;VED("I?<S(L('-I>F5?="!?;BD)*3L*7U!23U1/5%E012@@=F]I9"`J
M;65M<V5T+"`H=F]I9"`J7W,L(&EN="!?8RP@<VEZ95]T(%]N*0D)"2D["@HC
696YD:68@+RH@7TU%34]265](("HO"B!?
`
end

begin 644 string.h
M+RH@5&AE(#QS=')I;F<N:#X@:&5A9&5R(&-O;G1A:6YS('!R;W1O='EP97,@
M9F]R('1H92!S=')I;F<@:&%N9&QI;F<@"B`J(&9U;F-T:6]N<RX*("HO"@HC
M:69N9&5F(%]35%))3D=?2`HC9&5F:6YE(%]35%))3D=?2`H*(V1E9FEN92!.
M54Q,("`@("@H=F]I9"`J*3`I"@HC:69N9&5F(%]325I%7U0*(V1E9FEN92!?
M4TE:15]4"G1Y<&5D968@=6YS:6=N960@:6YT('-I>F5?=#L)+RH@='EP92!R
M971U<FYE9"!B>2!S:7IE;V8@*B\*(V5N9&EF"@HO*B!&=6YC=&EO;B!0<F]T
M;W1Y<&5S+B`J+PHC:69N9&5F(%]!3E-)7T@*(VEN8VQU9&4@/&%N<VDN:#X*
M(V5N9&EF"@I?4%)/5$]465!%*"!C:&%R("IS=')C<'DL("AC:&%R("I?<S$L
M(&-O;G-T(&-H87(@*E]S,BD)"0DI.PI?4%)/5$]465!%*"!C:&%R("IS=')N
M8W!Y+"`H8VAA<B`J7W,Q+"!C;VYS="!C:&%R("I?<S(L('-I>F5?="!?;BD)
M*3L*7U!23U1/5%E012@@8VAA<B`J<W1R8V%T+"`H8VAA<B`J7W,Q+"!C;VYS
M="!C:&%R("I?<S(I"0D)*3L*7U!23U1/5%E012@@8VAA<B`J<W1R;F-A="P@
M*&-H87(@*E]S,2P@8V]N<W0@8VAA<B`J7W,R+"!S:7IE7W0@7VXI"2D["E]0
M4D]43U194$4H(&EN="!S=')C;7`L("AC;VYS="!C:&%R("I?<S$L(&-O;G-T
M(&-H87(@*E]S,BD)"2D["E]04D]43U194$4H(&EN="!S=')C;VQL+"`H8V]N
M<W0@8VAA<B`J7W,Q+"!C;VYS="!C:&%R("I?<S(I"0DI.PI?4%)/5$]465!%
M*"!I;G0@<W1R;F-M<"P@*&-O;G-T(&-H87(@*E]S,2P@8V]N<W0@8VAA<B`J
M7W,R+"!S:7IE7W0@7VXI"2D["E]04D]43U194$4H('-I>F5?="!S=')X9G)M
M+"`H8VAA<B`J7W,Q+"!C;VYS="!C:&%R("I?<S(L('-I>F5?="!?;BD)*3L*
M7U!23U1/5%E012@@8VAA<B`J<W1R8VAR+"`H8V]N<W0@8VAA<B`J7W,L(&EN
M="!?8RD)"0DI.PI?4%)/5$]465!%*"!S:7IE7W0@<W1R8W-P;BP@*&-O;G-T
M(&-H87(@*E]S,2P@8V]N<W0@8VAA<B`J7W,R*0D)*3L*7U!23U1/5%E012@@
M8VAA<B`J<W1R<&)R:RP@*&-O;G-T(&-H87(@*E]S,2P@8V]N<W0@8VAA<B`J
M7W,R*0D)*3L*7U!23U1/5%E012@@8VAA<B`J<W1R<F-H<BP@*&-O;G-T(&-H
M87(@*E]S+"!I;G0@7V,I"0D)*3L*7U!23U1/5%E012@@<VEZ95]T('-T<G-P
M;BP@*&-O;G-T(&-H87(@*E]S,2P@8V]N<W0@8VAA<B`J7W,R*0D)*3L*7U!2
M3U1/5%E012@@8VAA<B`J<W1R<W1R+"`H8V]N<W0@8VAA<B`J7W,Q+"!C;VYS
M="!C:&%R("I?<S(I"0DI.PI?4%)/5$]465!%*"!C:&%R("IS=')T;VLL("AC
M:&%R("I?<S$L(&-O;G-T(&-H87(@*E]S,BD)"0DI.PI?4%)/5$]465!%*"!C
M:&%R("IS=')E<G)O<BP@*"!I;G0@7V5R<FYU;2D)"0D)*3L*7U!23U1/5%E0
M12@@<VEZ95]T('-T<FQE;BP@*&-O;G-T(&-H87(@*E]S*0D)"0DI.PH*(VEF
M9&5F(%]-24Y)6`HO*B!&;W(@8F%C:W=A<F0@8V]M<&%T:6)I;&ET>2X@*B\*
M7U!23U1/5%E012@@8VAA<B`J:6YD97@L("AC;VYS="!C:&%R("I?<RP@:6YT
M(%]C:&%R=V%N=&5D*0D)*3L*7U!23U1/5%E012@@8VAA<B`J<FEN9&5X+"`H
M8V]N<W0@8VAA<B`J7W,L(&EN="!?8VAA<G=A;G1E9"D)"2D["E]04D]43U19
M4$4H('9O:60@8F-O<'DL("AC;VYS="!C:&%R("I?<W)C+"!C:&%R("I?9'-T
M+"!I;G0@7VQE;F=T:"D)*3L*7U!23U1/5%E012@@:6YT(&)C;7`L("AC;VYS
M="!C:&%R("I?<S$L(&-O;G-T(&-H87(@*E]S,BP@:6YT(%]L96YG=&@I"2D[
M"E]04D]43U194$4H('9O:60@8GIE<F\L("AC:&%R("I?9'-T+"!I;G0@7VQE
M;F=T:"D)"0DI.PHC96YD:68*"B-I9FYD968@7TU%34]265]("B-I;F-L=61E
K(#QM96UO<GDN:#X*(V5N9&EF"@HC96YD:68@+RH@7U-44DE.1U](("HO"F1E
`
end

-- 
favourite oxymorons:   student athlete, military justice, mercy killing
Ken Hendrickson N8DGN/6       kjh@usc.edu      ...!uunet!usc!pollux!kjh
