Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
[linux-2.6] / arch / powerpc / lib / e2a.c
1 /*
2  *  EBCDIC to ASCII conversion
3  *
4  * This function moved here from arch/powerpc/platforms/iseries/viopath.c 
5  *
6  * (C) Copyright 2000-2004 IBM Corporation
7  *
8  * This program is free software;  you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License as
10  * published by the Free Software Foundation; either version 2 of the
11  * License, or (at your option) anyu later version.
12  *
13  * This program is distributed in the hope that it will be useful, but
14  * WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software Foundation,
20  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21  *
22  */
23
24 #include <linux/module.h>
25
26 unsigned char e2a(unsigned char x)
27 {
28         switch (x) {
29         case 0xF0:
30                 return '0';
31         case 0xF1:
32                 return '1';
33         case 0xF2:
34                 return '2';
35         case 0xF3:
36                 return '3';
37         case 0xF4:
38                 return '4';
39         case 0xF5:
40                 return '5';
41         case 0xF6:
42                 return '6';
43         case 0xF7:
44                 return '7';
45         case 0xF8:
46                 return '8';
47         case 0xF9:
48                 return '9';
49         case 0xC1:
50                 return 'A';
51         case 0xC2:
52                 return 'B';
53         case 0xC3:
54                 return 'C';
55         case 0xC4:
56                 return 'D';
57         case 0xC5:
58                 return 'E';
59         case 0xC6:
60                 return 'F';
61         case 0xC7:
62                 return 'G';
63         case 0xC8:
64                 return 'H';
65         case 0xC9:
66                 return 'I';
67         case 0xD1:
68                 return 'J';
69         case 0xD2:
70                 return 'K';
71         case 0xD3:
72                 return 'L';
73         case 0xD4:
74                 return 'M';
75         case 0xD5:
76                 return 'N';
77         case 0xD6:
78                 return 'O';
79         case 0xD7:
80                 return 'P';
81         case 0xD8:
82                 return 'Q';
83         case 0xD9:
84                 return 'R';
85         case 0xE2:
86                 return 'S';
87         case 0xE3:
88                 return 'T';
89         case 0xE4:
90                 return 'U';
91         case 0xE5:
92                 return 'V';
93         case 0xE6:
94                 return 'W';
95         case 0xE7:
96                 return 'X';
97         case 0xE8:
98                 return 'Y';
99         case 0xE9:
100                 return 'Z';
101         }
102         return ' ';
103 }
104 EXPORT_SYMBOL(e2a);
105
106 unsigned char* strne2a(unsigned char *dest, const unsigned char *src, size_t n)
107 {
108         int i;
109
110         n = strnlen(src, n);
111
112         for (i = 0; i < n; i++)
113                 dest[i] = e2a(src[i]);
114
115         return dest;
116 }