* Copyright (c) 1991, 1993
* The Regents of the University of California. All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
static char sccsid
[] = "@(#)str.c 8.1 (Berkeley) 5/31/93";
* tc.str.c: Short string package
* This has been a lesson of how to write buggy code!
register Char
**sdst
, **dst
;
for (n
= 0; src
[n
] != NULL
; n
++)
sdst
= dst
= (Char
**) xmalloc((size_t) ((n
+ 1) * sizeof(Char
*)));
for (; *src
!= NULL
; src
++)
register char **sdst
, **dst
;
for (n
= 0; src
[n
] != NULL
; n
++)
sdst
= dst
= (char **) xmalloc((size_t) ((n
+ 1) * sizeof(char *)));
for (; *src
!= NULL
; src
++)
*dst
++ = strsave(short2str(*src
));
static size_t dstsize
= 0;
register Char
*dst
, *edst
;
sdst
= (Char
*) xmalloc((size_t) dstsize
* sizeof(Char
));
*dst
++ = (Char
) ((unsigned char) *src
++);
sdst
= (Char
*) xrealloc((ptr_t
) sdst
,
(size_t) dstsize
* sizeof(Char
));
dst
= &edst
[-MALLOC_INCR
];
static char *sdst
= NULL
;
static size_t dstsize
= 0;
register char *dst
, *edst
;
sdst
= (char *) xmalloc((size_t) dstsize
* sizeof(char));
sdst
= (char *) xrealloc((ptr_t
) sdst
,
(size_t) dstsize
* sizeof(char));
dst
= &edst
[-MALLOC_INCR
];
register Char
*dst
, *src
;
while ((*dst
++ = *src
++) != '\0')
register Char
*dst
, *src
;
if ((*dst
++ = *src
++) == '\0') {
register Char
*dst
, *src
;
while ((*dst
++ = *src
++) != '\0')
register Char
*dst
, *src
;
if ((*dst
++ = *src
++) == '\0')
register Char
*str1
, *str2
;
for (; *str1
&& *str1
== *str2
; str1
++, str2
++)
* The following case analysis is necessary so that characters which look
* negative collate low against normal characters but high against the
if (*str1
== '\0' && *str2
== '\0')
register Char
*str1
, *str2
;
* The following case analysis is necessary so that characters
* which look negative collate low against normal characters
* but high against the end-of-string NUL.
n
= p
= (Char
*) xmalloc((size_t) ((p
- s
) * sizeof(Char
)));
while ((*p
++ = *s
++) != '\0')
ep
= (Char
*) xmalloc((size_t)
(((p
- cp
) + (q
- dp
) - 1) * sizeof(Char
)));
for (p
= ep
, q
= cp
; (*p
++ = *q
++) != '\0';)
for (p
--, q
= dp
; (*p
++ = *q
++) != '\0';)
#endif /* SHORT_STRINGS */
static char *sdst
= NULL
;
static size_t dstsize
= 0;
register char *dst
, *edst
;
sdst
= (char *) xmalloc((size_t) dstsize
* sizeof(char));
sdst
= (char *) xrealloc((ptr_t
) sdst
,
(size_t) dstsize
* sizeof(char));
dst
= &edst
[-MALLOC_INCR
];
sdst
= (char *) xrealloc((ptr_t
) sdst
,
(size_t) dstsize
* sizeof(char));
dst
= &edst
[-MALLOC_INCR
];
* XXX: Should we worry about QUOTE'd chars?
static char *sdst
= NULL
;
static size_t dstsize
= 0;
n
= ((dp
- cp
) << 2) + 1; /* 4 times + NULL */
sdst
= (char *) (dstsize
?
xrealloc(sdst
, (size_t) n
* sizeof(char)) :
xmalloc((size_t) n
* sizeof(char)));
* XXX: When we are in AsciiOnly we want all characters >= 0200 to
* be encoded, but currently there is no way in vis to do that.
(void) strvis(sdst
, short2str(cp
), VIS_NOSLASH
);