diff options
Diffstat (limited to 'lib/ZFmtNotice.c')
-rw-r--r-- | lib/ZFmtNotice.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/lib/ZFmtNotice.c b/lib/ZFmtNotice.c index d7876d7..0b9ca39 100644 --- a/lib/ZFmtNotice.c +++ b/lib/ZFmtNotice.c @@ -41,3 +41,29 @@ Code_t ZFormatNotice(notice, buffer, ret_len, cert_routine) return (ZERR_NONE); } + +Code_t ZNewFormatNotice(notice, buffer, ret_len, cert_routine) + register ZNotice_t *notice; + char **buffer; + int *ret_len; + Z_AuthProc cert_routine; +{ + char header[Z_MAXHEADERLEN]; + int hdrlen; + Code_t retval; + + if ((retval = Z_NewFormatHeader(notice, header, sizeof(header), &hdrlen, + cert_routine)) != ZERR_NONE) + return (retval); + + *ret_len = hdrlen+notice->z_message_len; + + /* Length can never be zero, don't have to worry about malloc(0). */ + if (!(*buffer = (char *) malloc((unsigned)*ret_len))) + return (ENOMEM); + + (void) memcpy(*buffer, header, hdrlen); + (void) memcpy(*buffer+hdrlen, notice->z_message, notice->z_message_len); + + return (ZERR_NONE); +} |