1 76193d7c 2003-09-30 devnull #include "sam.h"
3 76193d7c 2003-09-30 devnull List file;
4 76193d7c 2003-09-30 devnull ushort tag;
7 76193d7c 2003-09-30 devnull newfile(void)
11 76193d7c 2003-09-30 devnull f = fileopen();
12 76193d7c 2003-09-30 devnull inslist(&file, 0, (long)f);
13 76193d7c 2003-09-30 devnull f->tag = tag++;
14 76193d7c 2003-09-30 devnull if(downloaded)
15 76193d7c 2003-09-30 devnull outTs(Hnewname, f->tag);
16 76193d7c 2003-09-30 devnull /* already sorted; file name is "" */
17 76193d7c 2003-09-30 devnull return f;
21 76193d7c 2003-09-30 devnull whichmenu(File *f)
25 76193d7c 2003-09-30 devnull for(i=0; i<file.nused; i++)
26 76193d7c 2003-09-30 devnull if(file.filepptr[i]==f)
27 76193d7c 2003-09-30 devnull return i;
28 76193d7c 2003-09-30 devnull return -1;
32 76193d7c 2003-09-30 devnull delfile(File *f)
34 76193d7c 2003-09-30 devnull int w = whichmenu(f);
36 76193d7c 2003-09-30 devnull if(w < 0) /* e.g. x/./D */
38 76193d7c 2003-09-30 devnull if(downloaded)
39 76193d7c 2003-09-30 devnull outTs(Hdelname, f->tag);
40 76193d7c 2003-09-30 devnull dellist(&file, w);
41 76193d7c 2003-09-30 devnull fileclose(f);
45 76193d7c 2003-09-30 devnull fullname(String *name)
47 76193d7c 2003-09-30 devnull if(name->n > 0 && name->s[0]!='/' && name->s[0]!=0)
48 76193d7c 2003-09-30 devnull Strinsert(name, &curwd, (Posn)0);
52 76193d7c 2003-09-30 devnull fixname(String *name)
54 76193d7c 2003-09-30 devnull String *t;
57 76193d7c 2003-09-30 devnull fullname(name);
58 76193d7c 2003-09-30 devnull s = Strtoc(name);
59 76193d7c 2003-09-30 devnull if(strlen(s) > 0)
60 76193d7c 2003-09-30 devnull s = cleanname(s);
61 76193d7c 2003-09-30 devnull t = tmpcstr(s);
62 76193d7c 2003-09-30 devnull Strduplstr(name, t);
64 76193d7c 2003-09-30 devnull freetmpstr(t);
66 76193d7c 2003-09-30 devnull if(Strispre(&curwd, name))
67 76193d7c 2003-09-30 devnull Strdelete(name, 0, curwd.n);
71 76193d7c 2003-09-30 devnull sortname(File *f)
73 76193d7c 2003-09-30 devnull int i, cmp, w;
74 76193d7c 2003-09-30 devnull int dupwarned;
76 76193d7c 2003-09-30 devnull w = whichmenu(f);
77 76193d7c 2003-09-30 devnull dupwarned = FALSE;
78 76193d7c 2003-09-30 devnull dellist(&file, w);
79 76193d7c 2003-09-30 devnull if(f == cmd)
82 76193d7c 2003-09-30 devnull for(i=0; i<file.nused; i++){
83 76193d7c 2003-09-30 devnull cmp = Strcmp(&f->name, &file.filepptr[i]->name);
84 76193d7c 2003-09-30 devnull if(cmp==0 && !dupwarned){
85 76193d7c 2003-09-30 devnull dupwarned = TRUE;
86 76193d7c 2003-09-30 devnull warn_S(Wdupname, &f->name);
87 76193d7c 2003-09-30 devnull }else if(cmp<0 && (i>0 || cmd==0))
91 76193d7c 2003-09-30 devnull inslist(&file, i, (long)f);
92 76193d7c 2003-09-30 devnull if(downloaded)
93 76193d7c 2003-09-30 devnull outTsS(Hmovname, f->tag, &f->name);
97 76193d7c 2003-09-30 devnull state(File *f, int cleandirty)
99 76193d7c 2003-09-30 devnull if(f == cmd)
101 76193d7c 2003-09-30 devnull f->unread = FALSE;
102 76193d7c 2003-09-30 devnull if(downloaded && whichmenu(f)>=0){ /* else flist or menu */
103 76193d7c 2003-09-30 devnull if(f->mod && cleandirty!=Dirty)
104 76193d7c 2003-09-30 devnull outTs(Hclean, f->tag);
105 76193d7c 2003-09-30 devnull else if(!f->mod && cleandirty==Dirty)
106 76193d7c 2003-09-30 devnull outTs(Hdirty, f->tag);
108 76193d7c 2003-09-30 devnull if(cleandirty == Clean)
109 76193d7c 2003-09-30 devnull f->mod = FALSE;
111 76193d7c 2003-09-30 devnull f->mod = TRUE;
115 76193d7c 2003-09-30 devnull lookfile(String *s)
119 76193d7c 2003-09-30 devnull for(i=0; i<file.nused; i++)
120 76193d7c 2003-09-30 devnull if(Strcmp(&file.filepptr[i]->name, s) == 0)
121 76193d7c 2003-09-30 devnull return file.filepptr[i];
122 76193d7c 2003-09-30 devnull return 0;