henesyinit from p9fce6d0435 years agoHistory
90 lines · 1.4 KB · C
RawDownload
#include "sam.h" List	file;ushort	tag; File *newfile(void){	File *f; 	inslist(&file, 0, (long)(f = Fopen()));	f->tag = tag++;	if(downloaded)		outTs(Hnewname, f->tag);	/* already sorted; file name is "" */	return f;} intwhichmenu(File *f){	int i; 	for(i=0; i<file.nused; i++)		if(file.filepptr[i]==f)			return i;	return -1;} voiddelfile(File *f){	int w = whichmenu(f); 	if(w < 0)	/* e.g. x/./D */		return;	if(downloaded)		outTs(Hdelname, f->tag);	dellist(&file, w);	Fclose(f);} voidsortname(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);} voidstate(File *f, int cleandirty){	if(f == cmd)		return;	if(downloaded && whichmenu(f)>=0){	/* else flist or menu */		if(f->state==Dirty && cleandirty!=Dirty)			outTs(Hclean, f->tag);		else if(f->state!=Dirty && cleandirty==Dirty)			outTs(Hdirty, f->tag);	}	f->state = cleandirty;} 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;}