|
|
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.