dict.c
changeset 8 09ec33061ff3
parent 6 bc41369f4587
child 10 188a0e3b3fb4
equal deleted inserted replaced
7:c815840c5b65 8:09ec33061ff3
   105         case '6': return 58;
   105         case '6': return 58;
   106         case '7': return 59;
   106         case '7': return 59;
   107         case '8': return 60;
   107         case '8': return 60;
   108         case '9': return 61;
   108         case '9': return 61;
   109         case '+': return 62;
   109         case '+': return 62;
   110         case '-': return 63;
   110         case '/': return 63;
   111         default:
   111         default:
   112                   return 0;
   112                   return 0;
   113     }
   113     }
   114 }
   114 }
   115 
   115 
   116 static int str2int(const char *str)
   116 int str2int(const char *str)
   117 {
   117 {
   118     int i = 0;
   118     int i = 0;
   119     int length;
   119     int length;
   120     int val = 0;
   120     int val = 0;
   121 
   121 
   153 
   153 
   154     out = (char *) malloc(length);
   154     out = (char *) malloc(length);
   155     fread(out, length, 1, fdefs);
   155     fread(out, length, 1, fdefs);
   156     return out;
   156     return out;
   157 }
   157 }
       
   158 
       
   159 static char num_to_ia5char(int n)
       
   160 {
       
   161     /* From RFC 1421 */
       
   162     if (n >= 0 && n <= 25)
       
   163         return 'A' + n;
       
   164     else if (n >= 26 && n <= 51)
       
   165         return 'a' + (n - 26);
       
   166     else if (n >= 52 && n <= 61)
       
   167         return '0' + (n - 52);
       
   168     else if (n == 62)
       
   169         return '+';
       
   170     else if (n == 63)
       
   171         return '/';
       
   172     else
       
   173         return '!'; /* Error */
       
   174 }
       
   175 
       
   176 int num_to_ia5(char *dest, int n)
       
   177 {
       
   178     char tmp[20];
       
   179 
       
   180     int i, max;
       
   181    
       
   182     for(i =0; i <= 10; ++i)
       
   183     {
       
   184         tmp[i] = num_to_ia5char(n % 64);
       
   185         if (n < 64)
       
   186             break;
       
   187         n /= 64;
       
   188     }
       
   189 
       
   190     max = i;
       
   191 
       
   192     /* reverse the number */
       
   193     for (i=0; i<=max; ++i)
       
   194         dest[i] = tmp[max-i];
       
   195 
       
   196     /* Ending '\0' */
       
   197     dest[max+1] = '\0';
       
   198     return max;
       
   199 }