|
|
1.1 root 1: #include "sam.h"
2:
3: struct Filelist file;
4: ushort tag;
5:
6: File *
7: newfile()
8: {
9: register File *f;
10: inslist((List *)&file, 0, (long)(f=Fopen()));
11: f->tag=tag++;
12: if(downloaded)
13: outTs(Hnewname, f->tag);
14: /* already sorted; file name is "" */
15: return f;
16: }
17: delfile(f)
18: register File *f;
19: {
20: register w=whichmenu(f);
21: if(downloaded)
22: outTs(Hdelname, f->tag);
23: dellist((List *)&file, w);
24: Fclose(f);
25: }
26: sortname(f)
27: register File *f;
28: {
29: register i, cmp;
30: register w=whichmenu(f);
31: register dupwarned=FALSE;
32: dellist((List *)&file, w);
33: if(f==cmd)
34: i=0;
35: else for(i=0; i<file.nused; i++){
36: cmp=strcmp(f->name.s, file.ptr[i]->name.s);
37: if(cmp==0 && !dupwarned){
38: dupwarned=TRUE;
39: warn_s(Wdupname, (char *)f->name.s);
40: }else if(cmp<0 && (i>0 || cmd==0))
41: break;
42: }
43: inslist((List *)&file, i, (long)f);
44: if(downloaded)
45: outTsS(Hmovname, f->tag, f->name.s);
46: }
47: whichmenu(f)
48: File *f;
49: {
50: register i;
51: for(i=0; i<file.nused; i++)
52: if(file.ptr[i]==f)
53: return i;
54: return -1;
55: }
56: state(f, cleandirty)
57: register File *f;
58: enum State cleandirty;
59: {
60: if(f==cmd)
61: return;
62: if(downloaded && whichmenu(f)>=0){ /* else flist or menu */
63: if(f->state==Dirty && cleandirty!=Dirty)
64: outTs(Hclean, f->tag);
65: else if(f->state!=Dirty && cleandirty==Dirty)
66: outTs(Hdirty, f->tag);
67: }
68: f->state=cleandirty;
69: }
70: File *
71: lookfile()
72: {
73: register i;
74: for(i=0; i<file.nused; i++)
75: if(strcmp(file.ptr[i]->name.s, genstr.s)==0)
76: return file.ptr[i];
77: return 0;
78: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.