Commit | Line | Data |
---|---|---|
584fddaa | 1 | /* |
4c45483e | 2 | * $Id: isofs_util.c,v 1.2 1993/07/20 03:27:33 jkh Exp $ |
584fddaa JH |
3 | */ |
4 | ||
4c45483e GW |
5 | #include "param.h" |
6 | #include "systm.h" | |
7 | ||
15637ed4 RG |
8 | int |
9 | isonum_711 (p) | |
10 | char *p; | |
11 | { | |
12 | return (*p & 0xff); | |
13 | } | |
14 | ||
15 | int | |
16 | isonum_712 (p) | |
17 | char *p; | |
18 | { | |
19 | int val; | |
20 | ||
21 | val = *p; | |
22 | if (val & 0x80) | |
23 | val |= 0xffffff00; | |
24 | return (val); | |
25 | } | |
26 | ||
27 | int | |
28 | isonum_721 (p) | |
29 | char *p; | |
30 | { | |
31 | return ((p[0] & 0xff) | ((p[1] & 0xff) << 8)); | |
32 | } | |
33 | ||
34 | int | |
35 | isonum_722 (p) | |
36 | char *p; | |
37 | { | |
38 | return (((p[0] & 0xff) << 8) | (p[1] & 0xff)); | |
39 | } | |
40 | ||
41 | int | |
42 | isonum_723 (p) | |
43 | char *p; | |
44 | { | |
45 | #if 0 | |
46 | if (p[0] != p[3] || p[1] != p[2]) { | |
47 | fprintf (stderr, "invalid format 7.2.3 number\n"); | |
48 | exit (1); | |
49 | } | |
50 | #endif | |
51 | return (isonum_721 (p)); | |
52 | } | |
53 | ||
54 | int | |
55 | isonum_731 (p) | |
584fddaa | 56 | unsigned char *p; |
15637ed4 RG |
57 | { |
58 | return ((p[0] & 0xff) | |
59 | | ((p[1] & 0xff) << 8) | |
60 | | ((p[2] & 0xff) << 16) | |
61 | | ((p[3] & 0xff) << 24)); | |
62 | } | |
63 | ||
64 | int | |
65 | isonum_732 (p) | |
584fddaa | 66 | unsigned char *p; |
15637ed4 RG |
67 | { |
68 | return (((p[0] & 0xff) << 24) | |
69 | | ((p[1] & 0xff) << 16) | |
70 | | ((p[2] & 0xff) << 8) | |
71 | | (p[3] & 0xff)); | |
72 | } | |
73 | ||
74 | int | |
75 | isonum_733 (p) | |
584fddaa | 76 | unsigned char *p; |
15637ed4 RG |
77 | { |
78 | int i; | |
79 | ||
80 | #if 0 | |
81 | for (i = 0; i < 4; i++) { | |
82 | if (p[i] != p[7-i]) { | |
83 | fprintf (stderr, "bad format 7.3.3 number\n"); | |
84 | exit (1); | |
85 | } | |
86 | } | |
87 | #endif | |
88 | return (isonum_731 (p)); | |
89 | } | |
90 | ||
91 | /* | |
92 | * translate and compare a filename | |
93 | */ | |
4c45483e | 94 | int |
15637ed4 RG |
95 | isofncmp(char *fn, int fnlen, char *isofn, int isolen) { |
96 | int fnidx; | |
97 | ||
98 | fnidx = 0; | |
99 | for (fnidx = 0; fnidx < isolen; fnidx++, fn++) { | |
100 | char c = *isofn++; | |
101 | ||
102 | if (fnidx > fnlen) | |
103 | return (0); | |
104 | ||
105 | if (c >= 'A' && c <= 'Z') { | |
106 | if (c + ('a' - 'A') != *fn) | |
107 | return(0); | |
108 | else | |
109 | continue; | |
110 | } | |
111 | if (c == ';') | |
112 | return ((fnidx == fnlen)); | |
113 | if (c != *fn) | |
114 | return (0); | |
115 | } | |
116 | return (1); | |
117 | } | |
118 | ||
119 | /* | |
120 | * translate a filename | |
121 | */ | |
122 | void | |
123 | isofntrans(char *infn, int infnlen, char *outfn, short *outfnlen) { | |
124 | int fnidx; | |
125 | ||
126 | fnidx = 0; | |
127 | for (fnidx = 0; fnidx < infnlen; fnidx++) { | |
128 | char c = *infn++; | |
129 | ||
130 | if (c >= 'A' && c <= 'Z') | |
131 | *outfn++ = c + ('a' - 'A'); | |
132 | else if (c == ';') { | |
133 | *outfnlen = fnidx; | |
134 | return; | |
135 | } else | |
136 | *outfn++ = c; | |
137 | } | |
138 | *outfnlen = infnlen; | |
139 | } |