-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRATEFILE.PAS
108 lines (104 loc) · 2.92 KB
/
RATEFILE.PAS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
{$I DIRECT.INC}
Program RateFile;
Uses GenTypes, ConfigRT, GenSubs, Crt, FileLock;
Type ConfRec = Record
Name,Password:Lstr;
Flags:String[26];
Minlevel,Maxlevel:integer;
OpenTime,CloseTime:Sstr;
End;
Var Ch : Char;
AllConf, AllFree : Boolean;
Area, Conf : String[3];
Kb, Min : Word;
U : UDREC;
I : UDINDEXREC;
UFILE : FILE of UDREC;
IFILE : FILE of UDINDEXREC;
CFILE : FILE of CONFREC;
AFILE : FILE of AREAREC;
Y, Z : Word;
Procedure RateFiles(C,A : String);
Var X: Word;
Begin
Assign(UFILE,CFG.DATADIR+'AREA'+A+'.'+C);
Reset(UFILE);
IF FileSize(UFile)=0 Then Begin
Close(UFile);
Exit;
End;
Assign(IFILE,CFG.DATADIR+'AREAINDX.'+C);
Reset(IFILE);
For X := 1 to FileSize(UFILE) Do Begin
FillChar(U,SizeOf(U),0);
FillChar(I,SizeOf(I),0);
Seek(UFILE,X-1);
NRead(UFILE,U);
Seek(IFILE,U.INDEXPTR);
NRead(IFILE,I);
If AllFree Then I.Points:=0 Else
I.Points:=Round((U.FileSize Div KB) Div 1000);
If (Not AllFree) AND (I.Points<Min) Then I.Points:=Min;
Seek(UFILE,X-1);
NWrite(UFILE,U);
Seek(IFILE,U.IndexPtr);
NWrite(IFILE,I);
End;
Close(IFILE);
Close(UFILE);
End;
Begin
FileMode:=66;
textcolor(13);
writeln('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ');
textcolor(15);
writeln(' PiPELiNE File Point Re-Rater - v1.0 - (c)1994 Propaganda Software');
textcolor(13);
writeln('ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ');
writeln;
textcolor(7);
write(' Make All Files Free [Y/N]: ');
Ch:=ReadKey;
If UpCase(Ch)='Y' Then AllFree:=True Else AllFree:=False;
If Not AllFree Then Begin
writeln;
write(' How many Kilobytes per FilePoint [EXAMPLE 10 = 1 FP PER 10k]: ');
readln(kb);
writeln;
write(' Minimum amount charged [For files under the above limit]: ');
readln(min);
End;
writeln;
write(' Do ALL areas in ALL conferences [Y/N]: ');
Ch:=ReadKey;
If UpCase(Ch)='Y' Then AllConf:=True Else AllConf:=False;
If Not AllConf Then Begin
writeln;
write(' Which Conference: ');
readln(conf);
writeln;
write(' Which Area in Conference ',conf,': ');
readln(area);
end;
writeln;
write(' Press [S] to start or any other key to quit.');
Ch:=ReadKey;
If UpCase(Ch)<>'S' Then Exit;
ReadCfg(False);
If Not AllConf Then Begin
If Exist(Cfg.DataDir+'AREA'+AREA+'.'+CONF) Then RateFiles(Conf,Area);
Exit;
End;
Assign(CFILE,CFG.DATADIR+'XFERCONF.DAT');
Reset(CFILE);
For Y := 1 To FileSize(CFILE) Do Begin
Assign(AFILE,CFG.DATADIR+'AREADIR.'+Strr(Y));
Reset(AFILE);
If IORESULT=0 Then
For Z := 1 To FileSize(AFILE) Do
If Exist(CFG.DATADIR+'AREA'+Strr(Z)+'.'+Strr(Y)) Then
RateFiles(Strr(Y),Strr(Z));
Close(AFILE);
End;
Close(CFILE);
end.