|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 5259 (0x148b)
Types: TextFile
Names: »strings.h«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit
└─⟦2fafebccf⟧ »EurOpenD3/mail/smail3.1.19.tar.Z«
└─⟦bcd2bc73f⟧
└─⟦this⟧ »pd/strlib/strings.h«
/* @(#)strings.h 1.4 12/18/88 21:48:54 */
/*
* File : strings.h
* Author : Richard A. O'Keefe.
* Updated: 1 June 1984
* Purpose: Header file for the "string(3C)" package.
*
* All the routines in this package are the original work of
* R.A.O'Keefe. Any resemblance between them and any routines in
* licensed software is due entirely to these routines having been
* written using the "man 3 string" UNIX manual page, or in some cases
* the "man 1 sort" manual page as a specification. See the README to
* find the conditions under which these routines may be used & copied.
*/
#ifndef NullS
#define NullS (char*)0
#define NUL '\0'
/* MAKE SURE THE RIGHT VERSION OF THE FOLLOWING MACRO IS INSTALLED! */
#ifndef M_XENIX
# if '\377' < 0
# define CharsAreSigned 1 /* default is unsigned */
# endif
#else
# define CharsAreSigned 1 /* force this for MS Xenix -- foriley@masa.com */
#endif
#if CharsAreSigned
#define int2char(i) (((i)<<((sizeof (int) -1)*8))>>((sizeof (int) -1)*8))
#else
#define int2char(i) ((i)&255)
#endif
/* If characters are signed, but the above doesn't work,
try ((127-(255&~(i)))^(-128))
*/
#ifndef _AlphabetSize
#define _AlphabetSize 128
#endif
#if _AlphabetSize == 128
typedef char _char_;
#endif
#if _AlphabetSize == 256
typedef unsigned char _char_;
#endif
/*
* NullS is the "nil" character pointer. NULL would work in most
* cases, but in some C compilers pointers and integers may be of
* different sizes, so it is handy to have a nil pointer that one can
* pass to a function as well as compare pointers against.
*
* NUL is the ASCII name for the character with code 0. Its use to end
* strings is a convention of the C programming language. There are in
* fact three different end of string conventions supported by routines
* in this package:
* str<opn> : end at the first NUL character
* strn<opn> : end at the first NUL character, or when the
* extra "len" parameter runs out.
* mem<opn>,b<opn> : length determined solely by "len" parameter.
* Unfortunately, the VAX hardware only supports the last convention, a
* pity really. Fortran 77 users BEWARE: Fortran 77's convention is an
* entirely different one, and there are NO routines in this package as
* yet which support it. (But see section 3F of the 4.2 BSD manual.)
*
* The routines which move characters around don't care whether they
* are signed or unsigned. But the routines which compare a character
* in a string with an argument, or use a character from a string as an
* index into an array, do care. I have assumed that
* _AlphabetSize = 128 => only 0..127 appear in strings
* _AlphabetSize = 256 => only 0..255 appear in strings
* The files _str2set.c and _str2map.c declare character vectors using
* this size. If you don't have unsigned char, your machine may treat
* char as unsigned anyway.
*
* Some string operations (*cmp, *chr) are explicitly defined in various
* UNIX manuals to use "native" comparison, so I have not used _char_ in
* them. This package is meant to be compatible, not rational!
*/
extern char *strcat(/*char^,char^*/);
extern char *strncat(/*char^,char^,int*/);
extern int strcmp(/*char^,char^*/);
extern int strncmp(/*char^,char^,int*/);
#define streql !strcmp
#define strneql !strncmp /* (str-N)-eql not str-(neq-l)! */
extern char *strcpy(/*char^,char^*/);
extern char *strncpy(/*char^,char^,int*/);
extern int strlen(/*char^*/);
extern int strnlen(/*char^,int*/);
extern char *strchr(/*char^,_char_*/);
extern char *strrchr(/*char^,_char_*/);
#define index strchr
#define rindex strrchr
extern char *strmov(/*char^,char^*/);
extern char *strnmov(/*char^,char^,int*/);
extern void strrev(/*char^,char^*/);
extern void strnrev(/*char^,char^,int*/);
extern char *strend(/*char^*/);
extern char *strnend(/*char^*/);
extern char *strpbrk(/*char^,char^*/);
extern char *strcpbrk(/*char^,char^*/);
extern int strspn(/*char^,char^*/);
extern int strcspn(/*char^,char^*/);
extern char *strtok(/*char^,char^*/);
extern void istrtok(/*char^,char^*/);
extern char *strpack(/*_char_^,_char_^,char^,int*/);
extern char *strcpack(/*_char_^,_char_^,char^,int*/);
extern int strrpt(/*char^,char^,int*/);
extern int strnrpt(/*char^,int,char^,int*/);
extern void strtrans(/*_char_^,_char_^,_char_^,_char_^*/);
extern void strntrans(/*_char_^,_char_^,int,_char_^,_char_^*/);
extern char *strtrim(/*char^,char^,char^,int*/);
extern char *strctrim(/*char^,char^,char^,int*/);
extern char *strfield(/*char^,int,int,int,int*/);
extern char *strkey(/*char^,char^,char^,char^*/);
extern char *strfind(/*char^,char^*/);
extern char *strrepl(/*char^,char^,char^,char^*/);
extern void bcopy(/*char^,char^,int*/);
extern void bmove(/*char^,char^,int*/);
extern void bfill(/*char^,int,char*/);
extern void bzero(/*char^,int*/);
extern int bcmp(/*char^,char^,int*/);
#define beql !bcmp
extern int ffs(/*int*/);
extern int ffc(/*int*/);
extern char *substr(/*char^,char^,int,int*/);
extern char *strxcat(/*VARARGS*/);
extern char *strxcpy(/*VARARGS*/);
extern char *strxmov(/*VARARGS*/);
extern char *strxncat(/*VARARGS*/);
extern char *strxncpy(/*VARARGS*/);
extern char *strxnmov(/*VARARGS*/);
#endif /* NullS */