<<>> <> <> <> DIRECTORY Basics USING [RawChars]; CStrings: CEDAR DEFINITIONS ~ BEGIN <> CString: TYPE = POINTER TO Basics.RawChars ¬ NIL; <> Strcat: UNSAFE PROC[s1, s2: CString] RETURNS[CString] ~ TRUSTED MACHINE CODE { "strcat" }; Strncat: UNSAFE PROC[s1, s2: CString, n: INT] RETURNS[CString] ~ TRUSTED MACHINE CODE { "strncat" }; Strdup: PROC[s1: CString] RETURNS[CString] ~ TRUSTED MACHINE CODE { "strdup" }; Strcmp: PROC[s1, s2: CString] RETURNS[INT] ~ TRUSTED MACHINE CODE { "strcmp" }; Strncmp: PROC[s1, s2: CString, max: INT] RETURNS[INT] ~ TRUSTED MACHINE CODE { "strncmp" }; Strcpy: UNSAFE PROC[s1, s2: CString] RETURNS[CString] ~ TRUSTED MACHINE CODE { "strcpyt" }; Strncpy: UNSAFE PROC[s1, s2: CString, n: INT] RETURNS[CString] ~ TRUSTED MACHINE CODE { "strncpy" }; Strlen: PROC[s: CString] RETURNS[INT] ~ TRUSTED MACHINE CODE { "strlen" }; Strchr: PROC[s1: CString, c: INT] RETURNS[CString] ~ TRUSTED MACHINE CODE { "strchr" }; Strrchr: PROC[s1: CString, c: INT] RETURNS[CString] ~ TRUSTED MACHINE CODE { "strrchr" }; Strpbrk: PROC[s1, s2: CString] RETURNS[CString] ~ TRUSTED MACHINE CODE { "strpbrk" }; Strspn: PROC[s1, s2: CString] RETURNS[INT] ~ TRUSTED MACHINE CODE { "strspn" }; Strcspn: PROC[s1, s2: CString] RETURNS[INT] ~ TRUSTED MACHINE CODE { "strcspn" }; <> <<>> Index: PROC[s1: CString, c: CHAR] RETURNS[CString] ~ TRUSTED MACHINE CODE { "index" }; RIndex: PROC[s1: CString, c: CHAR] RETURNS[CString] ~ TRUSTED MACHINE CODE { "rindex" }; END.