77 lines
1.6 KiB
C
77 lines
1.6 KiB
C
/****************************************************************
|
|
* *
|
|
* Copyright 2001, 2009 Fidelity Information Services, Inc *
|
|
* *
|
|
* This source code contains the intellectual property *
|
|
* of its copyright holder(s), and is made available *
|
|
* under a license. If you do not know the terms of *
|
|
* the license, please stop and do not read further. *
|
|
* *
|
|
****************************************************************/
|
|
|
|
#include "mdef.h"
|
|
#include "gdsroot.h"
|
|
#include "gtm_facility.h"
|
|
#include "fileinfo.h"
|
|
#include "gdsbt.h"
|
|
#include "gdsfhead.h"
|
|
#include "cli.h"
|
|
#include "dse.h"
|
|
|
|
int dse_data(char *dst, int *len)
|
|
{
|
|
|
|
unsigned short cli_len;
|
|
char buf[MAX_LINE],*src,*bot,*top;
|
|
|
|
cli_len = SIZEOF(buf);
|
|
if (!cli_get_str("DATA",buf,&cli_len))
|
|
return FALSE;
|
|
bot = dst;
|
|
top = &buf[cli_len - 1];
|
|
src = &buf[0];
|
|
|
|
#ifdef VMS
|
|
if (buf[0] == '"')
|
|
src = &buf[1];
|
|
#endif
|
|
|
|
for (; src <= top ;src++)
|
|
{
|
|
#ifdef VMS
|
|
if (src == top && *src == '"')
|
|
break;
|
|
#endif
|
|
if (*src == '\\')
|
|
{
|
|
src++;
|
|
if (*src == '\\')
|
|
{
|
|
*dst++ = '\\';
|
|
continue;
|
|
}
|
|
if (*src >= '0' && *src <= '9')
|
|
*dst = *src - '0';
|
|
else if (*src >= 'a' && *src <= 'f')
|
|
*dst = *src - 'a' + 10;
|
|
else if (*src >= 'A' && *src <= 'F')
|
|
*dst = *src - 'A' +10;
|
|
else
|
|
continue;
|
|
src++;
|
|
if (*src >= '0' && *src <= '9')
|
|
*dst = (*dst << 4) + *src - '0';
|
|
else if (*src >= 'a' && *src <= 'f')
|
|
*dst = (*dst << 4) + *src - 'a' + 10;
|
|
else if (*src >= 'A' && *src <= 'F')
|
|
*dst = (*dst << 4) + *src - 'A' +10;
|
|
dst++;
|
|
}
|
|
else
|
|
*dst++ = *src;
|
|
}
|
|
*len = (int)(dst - bot);
|
|
return TRUE;
|
|
|
|
}
|