#include int ceph_armor(char *dst, const char *src, const char *end); int ceph_unarmor(char *dst, const char *src, const char *end); /* * base64 encode/decode. */ static const char *pem_key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; static int encode_bits(int c) { return pem_key[c]; } static int decode_bits(char c) { if (c >= 'A' && c <= 'Z') return c - 'A'; if (c >= 'a' && c <= 'z') return c - 'a' + 26; if (c >= '0' && c <= '9') return c - '0' + 52; if (c == '+') return 62; if (c == '/') return 63; if (c == '=') return 0; /* just non-negative, please */ return -EINVAL; } int ceph_armor(char *dst, const char *src, const char *end) { int olen = 0; int line = 0; while (src < end) { unsigned char a, b, c; a = *src++; *dst++ = encode_bits(a >> 2); if (src < end) { b = *src++; *dst++ = encode_bits(((a & 3) << 4) | (b >> 4)); if (src < end) { c = *src++; *dst++ = encode_bits(((b & 15) << 2) | (c >> 6)); *dst++ = encode_bits(c & 63); } else { *dst++ = encode_bits((b & 15) << 2); *dst++ = '='; } } else { *dst++ = encode_bits(((a & 3) << 4)); *dst++ = '='; *dst++ = '='; } olen += 4; line += 4; if (line == 64) { line = 0; *(dst++) = '\n'; olen++; } } return olen; } int ceph_unarmor(char *dst, const char *src, const char *end) { int olen = 0; while (src < end) { int a, b, c, d; if (src[0] == '\n') { src++; continue; } if (src + 4 > end) return -EINVAL; a = decode_bits(src[0]); b = decode_bits(src[1]); c = decode_bits(src[2]); d = decode_bits(src[3]); if (a < 0 || b < 0 || c < 0 || d < 0) return -EINVAL; *dst++ = (a << 2) | (b >> 4); if (src[2] == '=') return olen + 1; *dst++ = ((b & 15) << 4) | (c >> 2); if (src[3] == '=') return olen + 2; *dst++ = ((c & 3) << 6) | d; olen += 3; src += 4; } return olen; } h=nds-private-remove&id=1bae6c99decf9137069646b593d3439171a8a8e2'>treecommitdiff
path: root/include/trace/define_trace.h
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2017-01-30 22:05:52 -0500
committerDavid S. Miller <davem@davemloft.net>2017-01-30 22:05:52 -0500
commit1bae6c99decf9137069646b593d3439171a8a8e2 (patch)
tree431604a568cd2303973470de326bd9731370a025 /include/trace/define_trace.h
parent63c190429020a9701b42887ac22c28f287f1762f (diff)
parent2b2d3eb41c920b47df2fcedd1489cf748bd09466 (diff)
Merge branch 'sh_eth-E-DMAC-interrupt-mask-cleanups'
Sergei Shtylyov says: ==================== sh_eth: E-DMAC interrupt mask cleanups Here's a set of 3 patches against DaveM's 'net-next.git' repo. The main goal of this set is to stop using the bare numbers for the E-DMAC interrupt masks. [1/3] sh_eth: rename EESIPR bits [2/3] sh_eth: add missing EESIPR bits [3/3] sh_eth: stop using bare numbers for EESIPR values ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/trace/define_trace.h')