# HG changeset patch # User Michael Spacefalcon # Date 1393643350 0 # Node ID 3aa03b9519c0beecf3474eb7da28b65db1cd4954 # Parent 69e8ae2b5ba2af77aad38b741deca7c6a94cc06f fc-fsio: fwrite hex string implemented diff -r 69e8ae2b5ba2 -r 3aa03b9519c0 rvinterf/etmsync/fswrite.c --- a/rvinterf/etmsync/fswrite.c Sat Mar 01 02:36:25 2014 +0000 +++ b/rvinterf/etmsync/fswrite.c Sat Mar 01 03:09:10 2014 +0000 @@ -3,6 +3,7 @@ */ #include +#include #include #include #include @@ -99,11 +100,41 @@ return(0); } +hexdigit(c) +{ + if (isdigit(c)) + return(c - '0'); + else if (isupper(c)) + return(c - 'A' + 10); + else + return(c - 'a' + 10); +} + fwrite_hex_string(pathname, strarg) char *pathname, *strarg; { - fprintf(stderr, "This function is not yet implemented\n"); - return(ERROR_BUG); + u_char buf[256]; + int maxlen, len; + char *cp; + + maxlen = max_short_file_write(pathname); + for (cp = strarg, len = 0; ; cp += 2) { + while (isspace(*cp)) + cp++; + if (!*cp) + break; + if (!isxdigit(cp[0]) || !isxdigit(cp[1])) { + fprintf(stderr, "error: invalid hex string argument\n"); + return(ERROR_USAGE); + } + if (len >= maxlen) { + fprintf(stderr, + "error: hex string exceeds write packet limit\n"); + return(ERROR_USAGE); + } + buf[len++] = hexdigit(cp[0]) << 4 | hexdigit(cp[1]); + } + return do_short_fwrite(pathname, buf, len); } fwrite_from_file(pathname, srcfile)