/* ======================================================================== * Copyright 1988-2006 University of Washington * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * * ======================================================================== */ /* * Program: Windows/TOPS-20 newline routines * * Author: Mark Crispin * Networks and Distributed Computing * Computing & Communications * University of Washington * Administration Building, AG-44 * Seattle, WA 98195 * Internet: MRC@CAC.Washington.EDU * * Date: 1 August 1988 * Last Edited: 30 August 2006 */ /* Copy string with CRLF newlines * Accepts: destination string * pointer to size of destination string buffer * source string * length of source string * Returns: length of copied string */ unsigned long strcrlfcpy (unsigned char **dst,unsigned long *dstl, unsigned char *src,unsigned long srcl) { /* flush destination buffer if too small */ if (*dst && (srcl > *dstl)) fs_give ((void **) dst); if (!*dst) { /* make a new buffer if needed */ *dst = (char *) fs_get ((size_t) (*dstl = srcl) + 1); if (dstl) *dstl = srcl; /* return new buffer length to main program */ } /* copy strings */ if (srcl) memcpy (*dst,src,(size_t) srcl); *(*dst + srcl) = '\0'; /* tie off destination */ return srcl; /* return length */ } /* Length of string after strcrlfcpy applied * Accepts: source string * Returns: length of string */ unsigned long strcrlflen (STRING *s) { return SIZE (s); /* no-brainer on DOS! */ }