1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
<?xml version='1.0' encoding='iso-8859-1'?>
<!doctype html public '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html xmlns='http://www.w3c.org/1999/xhtml' lang='en-us'>
<head>
<title>
dataspec.c
</title>
<meta http-equiv='content-type' content='text/html;iso-8859-1'/>
<meta name='generator' content='motley-tools 1.9.4 13:40:33 Feb 18 2015'/>
<meta name='author' content='cmaier@cmassoc.net'/>
<meta name='robots' content='noindex,nofollow'/>
<link href='toolkit.css' rel='stylesheet' type='text/css'/>
</head>
<body>
<div class='headerlink'>
[<a href='coqos_rel.c.html' title=' coqos_rel.c '>PREV</a>]
[<a href='toolkit.html' title=' Index '>HOME</a>]
[<a href='debug.c.html' title=' debug.c '>NEXT</a>]
</div>
<pre>
/*====================================================================*
*
* size_t dataspec (char const * string, void * memory, size_t extent);
*
* memory.h
*
* encode a memory region with a variable-length hexadecimal string;
* return the number of bytes encoded or terminate the program on
* error;
*
* the number of octets in string must equal the memory extent or
* an error will occur; octets may be seperated by semi-colons;
* empty octets are illegal;
*
* Motley Tools by Charles Maier <cmaier@cmassoc.net>;
* Copyright (c) 2001-2006 by Charles Maier Associates;
* Licensed under the Internet Software Consortium License;
*
*--------------------------------------------------------------------*/
#ifndef DATASPEC_SOURCE
#define DATASPEC_SOURCE
#include <ctype.h>
#include <errno.h>
#include "../tools/memory.h"
#include "../tools/number.h"
#include "../tools/error.h"
size_t dataspec (char const * string, void * memory, size_t extent)
{
char const * number = string;
byte * origin = (byte *)(memory);
byte * offset = (byte *)(memory);
if (!number)
{
error (1, EFAULT, "dataspec");
}
#ifdef WIN32
while (isspace (*number))
{
number++;
}
#endif
while ((*number) && (extent))
{
unsigned digit = 0;
#ifdef WIN32
if (isspace (*number))
{
break;
}
#endif
if ((offset > origin) && (*number == HEX_EXTENDER))
{
number++;
}
if ((digit = todigit (*number++)) >= RADIX_HEX)
{
error (1, EINVAL, "You said '%s' but I want a hex digit", string);
}
*offset = digit << 4;
if (!*number)
{
error (1, EINVAL, "You said '%s' but I want another hex digit", string);
}
if ((digit = todigit (*number++)) >= 0x10)
{
error (1, EINVAL, "You said '%s' but I want valid hex data", string);
}
*offset |= digit;
offset++;
extent--;
}
#ifdef WIN32
while (isspace (*number))
{
number++;
}
#endif
if (*number && !extent)
{
error (1, EINVAL, "'%s' exceeds %d bytes", string, (unsigned)(offset - origin - extent));
}
if (*number)
{
error (1, EINVAL, "String '%s' contains trash", string);
}
return (offset - origin);
}
#endif
</pre>
<div class='footerlink'>
[<a href='coqos_rel.c.html' title=' coqos_rel.c '>PREV</a>]
[<a href='toolkit.html' title=' Index '>HOME</a>]
[<a href='debug.c.html' title=' debug.c '>NEXT</a>]
</div>
</body>
</html>
|