/* ** STR27SEG.C - Convert numeric strings to 7-segment strings. ** ** Public domain by Bob Stout ** ** Input: A string (NUL-delimited char array) containing only digits ** ('0' - '9' chars). ** ** Output: The same string with each digit converted to a 7-segment ** representation. Returns NULL on error. */ #include #include #define CAST(new_type,old_object) (*((new_type *)&old_object)) #define DISP(str) fputs((str), stdout) /* ** Define the bit significance ** ** a ** --- ** | | ** f| |b ** | g | ** --- ** | | ** e| |c ** | | ** --- ** d */ struct Seg7disp { unsigned seg_a : 1; unsigned seg_b : 1; unsigned seg_c : 1; unsigned seg_d : 1; unsigned seg_e : 1; unsigned seg_f : 1; unsigned seg_g : 1; } Seg7digits[10] = { { 1, 1, 1, 1, 1, 1, 0 }, /* 0 */ { 0, 1, 1, 0, 0, 0, 0 }, /* 1 */ { 1, 1, 0, 1, 1, 0, 1 }, /* 2 */ { 1, 1, 1, 1, 0, 0, 1 }, /* 3 */ { 0, 1, 1, 0, 0, 1, 1 }, /* 4 */ { 1, 0, 1, 1, 0, 1, 1 }, /* 5 */ { 1, 0, 1, 1, 1, 1, 1 }, /* 6 */ { 1, 1, 1, 0, 0, 0, 0 }, /* 7 */ { 1, 1, 1, 1, 1, 1, 1 }, /* 8 */ { 1, 1, 1, 1, 0, 1, 1 } /* 9 */ }; char *str27seg(char *string) { char *str; int ch; for (str = string ; *str; ++str) { if (!isdigit(*str)) return NULL; ch = CAST(int, Seg7digits[*str - '0']); *str = (char)(ch & 0xff); } return string; } #ifdef TEST main() { char tstrng[] = "0123456789", *segs; printf("str27seg() returned %p", segs = str27seg(tstrng)); if (segs) { char *ptr; struct Seg7disp ch; int i; puts(" & produced:\n"); for (ptr = segs ; *ptr; ++ptr) { ch = CAST(struct Seg7disp, *ptr); if (ch.seg_a) DISP(" --- "); else DISP(" "); DISP(" "); } puts(""); for (i = 0; i < 3; ++i) { for (ptr = segs ; *ptr; ++ptr) { ch = CAST(struct Seg7disp, *ptr); if (ch.seg_f) DISP("| "); else DISP(" "); if (ch.seg_b) DISP("|"); else DISP(" "); DISP(" "); } puts(""); } for (ptr = segs ; *ptr; ++ptr) { ch = CAST(struct Seg7disp, *ptr); if (ch.seg_g) DISP(" --- "); else DISP(" "); DISP(" "); } puts(""); for (i = 0; i < 3; ++i) { for (ptr = segs ; *ptr; ++ptr) { ch = CAST(struct Seg7disp, *ptr); if (ch.seg_e) DISP("| "); else DISP(" "); if (ch.seg_c) DISP("|"); else DISP(" "); DISP(" "); } puts(""); } for (ptr = segs ; *ptr; ++ptr) { ch = CAST(struct Seg7disp, *ptr); if (ch.seg_d) DISP(" --- "); else DISP(" "); DISP(" "); } puts(""); } else puts("\n"); return 0; } #endif nchange='this.form.submit();'>mode:
authorStanislaw Gruszka <sgruszka@redhat.com>2017-01-29 12:40:52 +0100
committerKalle Valo <kvalo@codeaurora.org>2017-01-31 09:08:52 +0200
commit33e962c8871f015f5c8978384553dddcf5b81b22 (patch)
tree43aff96c2ee21d9e0fa2018457778a4de52053cd /net/mac80211/mesh_ps.c
parent575ddce0507789bf9830d089557d2199d2f91865 (diff)
rt2x00: fix clk_get call
clk_get() takes two arguments and might return ERR_PTR(), so we have to nullify pointer on that case, to do not break further call to clk_get_rate(). Reported-by: Felix Fietkau <nbd@nbd.name> Fixes: 34db70b92fae ("rt2x00: add copy of clk for soc devices") Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'net/mac80211/mesh_ps.c')