1 /* ========================================================================
2  * Copyright 1988-2006 University of Washington
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *
11  * ========================================================================
12  */
13 
14 /*
15  * Program:	Windows/TOPS-20 newline routines
16  *
17  * Author:	Mark Crispin
18  *		Networks and Distributed Computing
19  *		Computing & Communications
20  *		University of Washington
21  *		Administration Building, AG-44
22  *		Seattle, WA  98195
23  *		Internet: MRC@CAC.Washington.EDU
24  *
25  * Date:	1 August 1988
26  * Last Edited:	30 August 2006
27  */
28 
29 /* Copy string with CRLF newlines
30  * Accepts: destination string
31  *	    pointer to size of destination string buffer
32  *	    source string
33  *	    length of source string
34  * Returns: length of copied string
35  */
36 
strcrlfcpy(unsigned char ** dst,unsigned long * dstl,unsigned char * src,unsigned long srcl)37 unsigned long strcrlfcpy (unsigned char **dst,unsigned long *dstl,
38 			  unsigned char *src,unsigned long srcl)
39 {
40 				/* flush destination buffer if too small */
41   if (*dst && (srcl > *dstl)) fs_give ((void **) dst);
42   if (!*dst) {			/* make a new buffer if needed */
43     *dst = (char *) fs_get ((size_t) (*dstl = srcl) + 1);
44     if (dstl) *dstl = srcl;	/* return new buffer length to main program */
45   }
46 				/* copy strings */
47   if (srcl) memcpy (*dst,src,(size_t) srcl);
48   *(*dst + srcl) = '\0';	/* tie off destination */
49   return srcl;			/* return length */
50 }
51 
52 
53 /* Length of string after strcrlfcpy applied
54  * Accepts: source string
55  * Returns: length of string
56  */
57 
strcrlflen(STRING * s)58 unsigned long strcrlflen (STRING *s)
59 {
60   return SIZE (s);		/* no-brainer on DOS! */
61 }
62