Put in proper address information for Poul-Henning Kamp.
[unix-history] / sys / isofs / isofs_util.c
CommitLineData
584fddaa 1/*
fde1aeb2 2 * $Id: isofs_util.c,v 1.3 1993/11/25 01:32:28 wollman Exp $
584fddaa
JH
3 */
4
4c45483e
GW
5#include "param.h"
6#include "systm.h"
7
15637ed4
RG
8int
9isonum_711 (p)
10char *p;
11{
12 return (*p & 0xff);
13}
14
15int
16isonum_712 (p)
fde1aeb2 17 char *p;
15637ed4
RG
18{
19 int val;
20
21 val = *p;
22 if (val & 0x80)
fde1aeb2 23 val |= ~0xff;
15637ed4
RG
24 return (val);
25}
26
27int
28isonum_721 (p)
fde1aeb2 29 char *p;
15637ed4
RG
30{
31 return ((p[0] & 0xff) | ((p[1] & 0xff) << 8));
32}
33
34int
35isonum_722 (p)
36char *p;
37{
38 return (((p[0] & 0xff) << 8) | (p[1] & 0xff));
39}
40
41int
42isonum_723 (p)
43char *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
54int
55isonum_731 (p)
584fddaa 56unsigned 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
64int
65isonum_732 (p)
584fddaa 66unsigned 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
74int
75isonum_733 (p)
584fddaa 76unsigned 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 94int
15637ed4
RG
95isofncmp(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 */
122void
123isofntrans(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}