Initial revision
This commit is contained in:
parent
ed7c8e8d02
commit
76193d7cb0
223 changed files with 32479 additions and 0 deletions
123
src/cmd/sam/multi.c
Normal file
123
src/cmd/sam/multi.c
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
#include "sam.h"
|
||||
|
||||
List file;
|
||||
ushort tag;
|
||||
|
||||
File *
|
||||
newfile(void)
|
||||
{
|
||||
File *f;
|
||||
|
||||
f = fileopen();
|
||||
inslist(&file, 0, (long)f);
|
||||
f->tag = tag++;
|
||||
if(downloaded)
|
||||
outTs(Hnewname, f->tag);
|
||||
/* already sorted; file name is "" */
|
||||
return f;
|
||||
}
|
||||
|
||||
int
|
||||
whichmenu(File *f)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i=0; i<file.nused; i++)
|
||||
if(file.filepptr[i]==f)
|
||||
return i;
|
||||
return -1;
|
||||
}
|
||||
|
||||
void
|
||||
delfile(File *f)
|
||||
{
|
||||
int w = whichmenu(f);
|
||||
|
||||
if(w < 0) /* e.g. x/./D */
|
||||
return;
|
||||
if(downloaded)
|
||||
outTs(Hdelname, f->tag);
|
||||
dellist(&file, w);
|
||||
fileclose(f);
|
||||
}
|
||||
|
||||
void
|
||||
fullname(String *name)
|
||||
{
|
||||
if(name->n > 0 && name->s[0]!='/' && name->s[0]!=0)
|
||||
Strinsert(name, &curwd, (Posn)0);
|
||||
}
|
||||
|
||||
void
|
||||
fixname(String *name)
|
||||
{
|
||||
String *t;
|
||||
char *s;
|
||||
|
||||
fullname(name);
|
||||
s = Strtoc(name);
|
||||
if(strlen(s) > 0)
|
||||
s = cleanname(s);
|
||||
t = tmpcstr(s);
|
||||
Strduplstr(name, t);
|
||||
free(s);
|
||||
freetmpstr(t);
|
||||
|
||||
if(Strispre(&curwd, name))
|
||||
Strdelete(name, 0, curwd.n);
|
||||
}
|
||||
|
||||
void
|
||||
sortname(File *f)
|
||||
{
|
||||
int i, cmp, w;
|
||||
int dupwarned;
|
||||
|
||||
w = whichmenu(f);
|
||||
dupwarned = FALSE;
|
||||
dellist(&file, w);
|
||||
if(f == cmd)
|
||||
i = 0;
|
||||
else{
|
||||
for(i=0; i<file.nused; i++){
|
||||
cmp = Strcmp(&f->name, &file.filepptr[i]->name);
|
||||
if(cmp==0 && !dupwarned){
|
||||
dupwarned = TRUE;
|
||||
warn_S(Wdupname, &f->name);
|
||||
}else if(cmp<0 && (i>0 || cmd==0))
|
||||
break;
|
||||
}
|
||||
}
|
||||
inslist(&file, i, (long)f);
|
||||
if(downloaded)
|
||||
outTsS(Hmovname, f->tag, &f->name);
|
||||
}
|
||||
|
||||
void
|
||||
state(File *f, int cleandirty)
|
||||
{
|
||||
if(f == cmd)
|
||||
return;
|
||||
f->unread = FALSE;
|
||||
if(downloaded && whichmenu(f)>=0){ /* else flist or menu */
|
||||
if(f->mod && cleandirty!=Dirty)
|
||||
outTs(Hclean, f->tag);
|
||||
else if(!f->mod && cleandirty==Dirty)
|
||||
outTs(Hdirty, f->tag);
|
||||
}
|
||||
if(cleandirty == Clean)
|
||||
f->mod = FALSE;
|
||||
else
|
||||
f->mod = TRUE;
|
||||
}
|
||||
|
||||
File *
|
||||
lookfile(String *s)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i=0; i<file.nused; i++)
|
||||
if(Strcmp(&file.filepptr[i]->name, s) == 0)
|
||||
return file.filepptr[i];
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue