ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/dinfo/dinfo.xs
(Generate patch)

Comparing cvsroot/dinfo/dinfo.xs (file contents):
Revision 1.2 by root, Fri Aug 29 14:22:03 2003 UTC vs.
Revision 1.3 by root, Fri Aug 29 20:17:57 2003 UTC

29 bin[3] = (unsigned int)num >> 8; 29 bin[3] = (unsigned int)num >> 8;
30 bin[4] = (unsigned int)num >> 0; 30 bin[4] = (unsigned int)num >> 0;
31 31
32 XPUSHs (sv_2mortal (newSVpvn (bin, 5))); 32 XPUSHs (sv_2mortal (newSVpvn (bin, 5)));
33 33
34SV *
35str2nummer (SV *str)
36 CODE:
37 STRLEN len;
38 int i;
39 unsigned char *bin = (unsigned char *)SvPV (str, len);
40 char nummer[12];
41 unsigned long long num;
42
43 num = (((unsigned long long)(len > 0 ? bin[0] : ' ')) << 32)
44 | (((unsigned long long)(len > 1 ? bin[1] : ' ')) << 24)
45 | (((unsigned long long)(len > 2 ? bin[2] : ' ')) << 16)
46 | (((unsigned long long)(len > 3 ? bin[3] : ' ')) << 8)
47 | (((unsigned long long)(len > 4 ? bin[4] : ' ')) << 0);
48
49 nummer[11] = 0;
50 for (len = 11, i = 11; i--; )
51 {
52 nummer[i] = "0123456789"[num % 11];
53 num /= 11;
54 }
55
56 RETVAL = newSVpv (nummer, 0);
57 OUTPUT:
58 RETVAL

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines