1
/* ========================================================================
2
* Copyright 1988-2006 University of Washington
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
8
* http://www.apache.org/licenses/LICENSE-2.0
11
* ========================================================================
15
* Program: Windows/TOPS-20 newline routines
17
* Author: Mark Crispin
18
* Networks and Distributed Computing
19
* Computing & Communications
20
* University of Washington
21
* Administration Building, AG-44
23
* Internet: MRC@CAC.Washington.EDU
26
* Last Edited: 30 August 2006
29
/* Copy string with CRLF newlines
30
* Accepts: destination string
31
* pointer to size of destination string buffer
33
* length of source string
34
* Returns: length of copied string
37
unsigned long strcrlfcpy (unsigned char **dst,unsigned long *dstl,
38
unsigned char *src,unsigned long srcl)
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 */
47
if (srcl) memcpy (*dst,src,(size_t) srcl);
48
*(*dst + srcl) = '\0'; /* tie off destination */
49
return srcl; /* return length */
53
/* Length of string after strcrlfcpy applied
54
* Accepts: source string
55
* Returns: length of string
58
unsigned long strcrlflen (STRING *s)
60
return SIZE (s); /* no-brainer on DOS! */