/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation. All rights reserved. */
/* time: February 21, 1992 11:44:58 pm PST */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: UnixDirectoryImpl, module: UnixDirectoryImpl */
/* switches: bcfhklnouw */
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [3733482609,980103212] UnixDirectoryImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {W8 f; W8 r;} W16;
#define SOURCE(p, l) /* source p, l */
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
static void NoName←Q480();
static void UnixDirectoryImpl←P0();
static word OpenDir←P60();
static word CloseDir←P120();
static word ReadDir←P180();
static word TellDir←P240();
static void SeekDir←P300();
static void RewindDir←P360();
static word NameFromDirEntP←P420();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\336\210\154\161\300\072\153\060\054\100\200\000\000"};
static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\336\210lq\300:k0,@t\000\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\211\056\077\074\300\127\047\310\242\100\150\000\000"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\220\270\074\115\300\121\012\115\357\100\150\000\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\177\003\016\022\300\223\057\020\003\100\150\000\000"};
static struct {unsigned f; char r[20];} string6 = {1245204, "\211\007\006\104\151\162\122\145\160\300\177\003\016\022\300\223\057\020\003"};
static struct {
word f0[5]; word f5; word f6; word f7;
word f8; word f9; word f10; word f11;
word f12; word f13; word f14; word f15;
word f16; word f17; word f18; word f19;
word f20[4];
} globalframe = {
{0}, (word) NameFromDirEntP←P420, 0, (word) RewindDir←P360,
0, (word) SeekDir←P300, 0, (word) TellDir←P240,
0, (word) ReadDir←P180, 0, (word) CloseDir←P120,
0, (word) OpenDir←P60, 0, (word) UnixDirectoryImpl←P0,
{0}
};
static void NoName←Q480()
{
register ptr gf←c048 = (ptr) &globalframe;
word var←c9480;
(* (( (ptr) gf←c048)+4) ) = (word) XR←GetTypeIndexS((word) (&string1));
(void) XR←DeclareGlobalFrame((word) "UnixDirectoryImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string2)), (word) (
( (bPt) gf←c048)+76)/* var←c9160 */ );
var←c9480 = (word) XR←ImportInterface((word) "UnixSysCalls", (word) XR←GetTypeIndexS((word) (&string3)), 77);
(* (( (ptr) gf←c048)+21)/* var←c9192 */ ) = var←c9480;
(void) XR←ImportProcS(var←c9480, 67904515);
(void) XR←ImportProcS(var←c9480, 67897859);
(void) XR←ImportProcS(var←c9480, 67372289);
(void) XR←ImportProcS(var←c9480, 67650050);
(void) XR←ImportProcS(var←c9480, 67906563);
var←c9480 = (word) XR←ImportInterface((word) "UXStrings", (word) XR←GetTypeIndexS((word) (&string4)), 9);
(* (( (ptr) gf←c048)+22)/* var←c9352 */ ) = var←c9480;
(void) XR←ImportProcS(var←c9480, 67633922);
(void) XR←ImportProcS(var←c9480, 67371521);
var←c9480 = (word) XR←ExportInterface((word) "UnixDirectory", (word) XR←GetTypeIndexS((word) (&string5)), 8);
(* (( (ptr) gf←c048)+23)/* var←c9512 */ ) = var←c9480;
(void) XR←ExportType((word) "DirRep", (word) XR←GetTypeIndexS((word) (&string6)), (word) XR←GetTypeIndexS((word) (&string1))
);
(void) XR←ExportProcS(var←c9480, (word) (( (bPt) gf←c048)+68)/* var←c9128 */ , 67371265);
(void) XR←ExportProcS(var←c9480, (word) (( (bPt) gf←c048)+52)/* var←c9064 */ , 67371521);
(void) XR←ExportProcS(var←c9480, (word) (( (bPt) gf←c048)+44)/* var←c9032 */ , 67371777);
(void) XR←ExportProcS(var←c9480, (word) (( (bPt) gf←c048)+36)/* var←c9000 */ , 525314);
(void) XR←ExportProcS(var←c9480, (word) (( (bPt) gf←c048)+28)/* var←c8968 */ , 263425);
(void) XR←ExportProcS(var←c9480, (word) (( (bPt) gf←c048)+60)/* var←c9096 */ , 67372545);
(void) XR←ExportProcS(var←c9480, (word) (( (bPt) gf←c048)+20)/* var←c8936 */ , 67372801);
}
static void UnixDirectoryImpl←P0(formal←c015, formal←c014)
word formal←c015;
word formal←c014;
{
/* UnixDirectoryImpl: */
}
static word OpenDir←P60(fileName←v3344)
word fileName←v3344;
{
register ptr gf←c9544 = (ptr) &globalframe;
word dirp←v3388;
word mode←v4008 = 0;
word fd←v4036;
W16 stat←v4064;
word buf←v4092;
/* OpenDir: */
SOURCE(768, 638)
SOURCE(768, 638)
dirp←v3388 = 0;
SOURCE(913, 68)
{
word pd7;
pd7 = (* (( (ptr) (* (( (ptr) gf←c9544)+21)/* var←c9192 */ ))+48) );
fd←v4036 = (word) ( *( (fPt) ((* (ptr) pd7 ))))(fileName←v3344, 0, mode←v4008, pd7);
};
SOURCE(983, 20)
XR←FillWords(&stat←v4064, 16, 0);
SOURCE(1005, 30)
buf←v4092 = (word) &stat←v4064;
SOURCE(1037, 31)
if ((fd←v4036 == (word) -1)) {
SOURCE(1056, 12)
return(0);
};
SOURCE(1070, 89)
{
word pd8;
pd8 = (* (( (ptr) (* (( (ptr) gf←c9544)+21)/* var←c9192 */ ))+70) );
if (((word) ( *( (fPt) ((* (ptr) pd8 ))))(fd←v4036, buf←v4092, pd8) == (word) -1)) {
SOURCE(1118, 27)
{
word var←c9256;
word pd9;
pd9 = (* (( (ptr) (* (( (ptr) gf←c9544)+21)/* var←c9192 */ ))+9) );
var←c9256 = (word) ( *( (fPt) ((* (ptr) pd9 ))))(fd←v4036, pd9);
};
SOURCE(1147, 12)
return(0);
};
};
SOURCE(1164, 99)
if ((( * (bPt) (( (bPt) buf←v4092)+8) >> 4) != 4)) {
SOURCE(1193, 27)
(void) XR←SetErrno(20);
SOURCE(1222, 27)
{
word var←c9288;
word pd10;
pd10 = (* (( (ptr) (* (( (ptr) gf←c9544)+21)/* var←c9192 */ ))+9) );
var←c9288 = (word) ( *( (fPt) ((* (ptr) pd10 ))))(fd←v4036, pd10);
};
SOURCE(1251, 12)
return(0);
};
SOURCE(1268, 123)
{
word var←c9320;
word var←c9384;
{
word pd11;
word idx12;
pd11 = (* (( (ptr) (* (( (ptr) gf←c9544)+22)/* var←c9352 */ ))+6) );
var←c9320 = (word) ( *( (fPt) ((* (ptr) pd11 ))))((
idx12 = (* (( (ptr) buf←v4092)+12) ),
SGNCK(idx12)
), pd11);
};
var←c9384 = XR←NewObject(24, (* (( (ptr) gf←c9544)+4) ));
(* (ptr) var←c9384 ) = var←c9320;
{
word idx13;
(* (( (ptr) var←c9384)+1) ) = (
idx13 = (* (( (ptr) buf←v4092)+12) ),
SGNCK(idx13)
);
};
(* (( (ptr) var←c9384)+2) ) = fd←v4036;
dirp←v3388 = var←c9384;
};
SOURCE(1393, 13)
return(dirp←v3388);
}
static word CloseDir←P120(dirp←v3448)
word dirp←v3448;
{
register ptr gf←c9576 = (ptr) &globalframe;
word var←c3492;
word fd←v4136;
/* CloseDir: */
SOURCE(1411, 135)
SOURCE(1466, 16)
fd←v4136 = (* (( (ptr) dirp←v3448)+2) );
SOURCE(1484, 15)
(* (( (ptr) dirp←v3448)+2) ) = (word) -1;
SOURCE(1501, 12)
(* (( (ptr) dirp←v3448)+3) ) = 0;
SOURCE(1515, 31)
{
word pd14;
pd14 = (* (( (ptr) (* (( (ptr) gf←c9576)+21)/* var←c9192 */ ))+9) );
return((word) ( *( (fPt) ((* (ptr) pd14 ))))(fd←v4136, pd14));
};
}
static word ReadDir←P180(dirp←v3552)
word dirp←v3552;
{
register ptr gf←c9608 = (ptr) &globalframe;
word var←c3596;
word dp←v4180;
word fd←v4208;
word buffer←v4236;
word bsize←v4264;
word saveloc←v4292 = 0;
word recLen←v4320;
word fileNo←v4348;
/* ReadDir: */
SOURCE(1552, 783)
SOURCE(1627, 16)
fd←v4208 = (* (( (ptr) dirp←v3552)+2) );
SOURCE(1645, 29)
buffer←v4236 = (* (ptr) dirp←v3552 );
SOURCE(1676, 23)
bsize←v4264 = (* (( (ptr) dirp←v3552)+1) );
SOURCE(1747, 526)
lab←L100002: ;
SOURCE(1761, 137)
if (( (int)(* (( (ptr) dirp←v3552)+4) ) != (int)0)) {
SOURCE(1785, 18)
saveloc←v4292 = (* (( (ptr) dirp←v3552)+3) );
SOURCE(1813, 55)
SOURCE(1815, 31)
dp←v4180 = (buffer←v4236 + saveloc←v4292);
SOURCE(1848, 18)
recLen←v4320 = (* (( (hPt) dp←v4180)+4) );
SOURCE(1871, 27)
(* (( (ptr) dirp←v3552)+3) ) = (saveloc←v4292 + recLen←v4320);
};
SOURCE(1903, 56)
if (( (int)(* (( (ptr) dirp←v3552)+3) ) >= (int)(* (( (ptr) dirp←v3552)+4) ))) {
SOURCE(1935, 24)
(* (( (ptr) dirp←v3552)+4) ) = 0;
(* (( (ptr) dirp←v3552)+3) ) = 0;
};
SOURCE(1964, 164)
if (( (int)(* (( (ptr) dirp←v3552)+4) ) == (int)0)) {
SOURCE(1996, 53)
SOURCE(1997, 52)
{
word pd15;
pd15 = (* (( (ptr) (* (( (ptr) gf←c9608)+21)/* var←c9192 */ ))+14) );
(* (( (ptr) dirp←v3552)+4) ) = (word) ( *( (fPt) ((* (ptr) pd15 ))))(fd←v4208, buffer←v4236, bsize←v4264, pd15);
};
SOURCE(2052, 40)
if (( (int)(* (( (ptr) dirp←v3552)+4) ) == (int)0)) {
SOURCE(2074, 18)
(* (( (ptr) dirp←v3552)+3) ) = saveloc←v4292;
};
SOURCE(2094, 34)
if (( (int)(* (( (ptr) dirp←v3552)+4) ) <= (int)0)) {
SOURCE(2116, 12)
return(0);
};
};
SOURCE(2141, 76)
SOURCE(2143, 32)
dp←v4180 = (buffer←v4236 + (* (( (ptr) dirp←v3552)+3) ));
SOURCE(2177, 18)
recLen←v4320 = (* (( (hPt) dp←v4180)+4) );
SOURCE(2197, 18)
fileNo←v4348 = (* (( (ptr) dp←v4180)+1) );
SOURCE(2220, 32)
if ((recLen←v4320 <= 0)) {
SOURCE(2240, 12)
return(0);
};
SOURCE(2254, 19)
if ((fileNo←v4348 != 0)) {
SOURCE(2273, 4)
goto lab←L100001;
};
goto lab←L100002;
lab←L100001: ;
SOURCE(2296, 24)
SOURCE(2297, 23)
(* (( (ptr) dirp←v3552)+5) ) = (* (ptr) dp←v4180 );
SOURCE(2324, 11)
return(dp←v4180);
}
static word TellDir←P240(dirp←v3656)
word dirp←v3656;
{
word var←c3700;
/* TellDir: */
SOURCE(2341, 74)
SOURCE(2395, 20)
return((* (( (ptr) dirp←v3656)+5) ));
}
static void SeekDir←P300(dirp←v3760, loc←v3788)
word dirp←v3760;
word loc←v3788;
{
register ptr gf←c9640 = (ptr) &globalframe;
word currentLocation←v4392;
word fd←v4420;
/* SeekDir: */
SOURCE(2421, 248)
SOURCE(2471, 34)
currentLocation←v4392 = (* (( (ptr) dirp←v3760)+5) );
SOURCE(2507, 16)
fd←v4420 = (* (( (ptr) dirp←v3760)+2) );
SOURCE(2525, 38)
if (( (int)currentLocation←v4392 == (int)loc←v3788)) {
SOURCE(2557, 6)
return;
};
SOURCE(2565, 12)
(* (( (ptr) dirp←v3760)+3) ) = 0;
SOURCE(2579, 13)
(* (( (ptr) dirp←v3760)+4) ) = 0;
SOURCE(2594, 56)
{
word var←c9448;
word pd16;
pd16 = (* (( (ptr) (* (( (ptr) gf←c9640)+21)/* var←c9192 */ ))+40) );
var←c9448 = (word) ( *( (fPt) ((* (ptr) pd16 ))))(fd←v4420, loc←v3788, 0, pd16);
};
SOURCE(2652, 17)
(* (( (ptr) dirp←v3760)+5) ) = loc←v3788;
}
static void RewindDir←P360(dirp←v3848)
word dirp←v3848;
{
/* RewindDir: */
SOURCE(2675, 90)
SOURCE(2739, 26)
(void) SeekDir←P300(dirp←v3848, 0);
}
static word NameFromDirEntP←P420(dp←v3908)
word dp←v3908;
{
register ptr gf←c9672 = (ptr) &globalframe;
word name←v3952;
/* NameFromDirEntP: */
SOURCE(2771, 123)
SOURCE(2771, 123)
name←v3952 = 0;
SOURCE(2849, 45)
{
word pd17;
pd17 = (* (( (ptr) (* (( (ptr) gf←c9672)+22)/* var←c9352 */ ))+7) );
name←v3952 = (word) ( *( (fPt) ((* (ptr) pd17 ))))((word) (( (bPt) dp←v3908)+12), 2147483647, pd17);
};
SOURCE(2771, 123)
return(name←v3952);
}
/* file: UnixDirectoryImpl, module: UnixDirectoryImpl, compiled at: February 21, 1992 11:44:57 pm PST */
extern void XR←install←UnixDirectoryImpl() {
NoName←Q480();
}
extern void XR←run←UnixDirectoryImpl() { XR←Start(&globalframe); }