Exemplo n.º 1
0
// Compare two entries for sort by group
int ASM buffer_sort_entries_group(
	REG(a0, DirEntry *entry1),
	REG(a1, DirEntry *entry2))
{
	register NetworkInfo *network1=0,*network2=0;

	// Get network pointers
	if (entry1->de_Flags&ENTF_NETWORK)
		network1=(NetworkInfo *)GetTagData(DE_NetworkInfo,0,entry1->de_Tags);
	if (entry2->de_Flags&ENTF_NETWORK)
		network2=(NetworkInfo *)GetTagData(DE_NetworkInfo,0,entry2->de_Tags);

	// Compare groups
	if (network1 && network1->group &&
		network2 && network2->group)
	{
		register short ret;

		// If groups are equal, do name sort
		if ((ret=stricmp(network1->group,network2->group))==0)
			return namesort(entry1->de_Node.dn_Name,entry2->de_Node.dn_Name);
		return ret;
	}

	// No group on one file
	else
	if (network1 && network1->group) return 1;
	else
	if (network2 && network2->group) return -1;

	// No groups on either, do name sort
	return namesort(entry1->de_Node.dn_Name,entry2->de_Node.dn_Name);
}
Exemplo n.º 2
0
// Compare two entries for sort by description
int ASM buffer_sort_entries_description(
	REG(a0, DirEntry *entry1),
	REG(a1, DirEntry *entry2))
{
	char *type1,*type2;

	// Get filetypes
	type1=(char *)GetTagData(DE_Filetype,0,entry1->de_Tags);
	type2=(char *)GetTagData(DE_Filetype,0,entry2->de_Tags);

	// Compare descriptions
	if (type1 && type2)
	{
		register short ret;

		// If descriptions are equal, do name sort
		if ((ret=stricmp(type1,type2))==0)
			return namesort(entry1->de_Node.dn_Name,entry2->de_Node.dn_Name);
		return ret;
	}

	// No description on one file
	else
	if (type1) return 1;
	else
	if (type2) return -1;

	// No descriptions on either, do name sort
	return namesort(entry1->de_Node.dn_Name,entry2->de_Node.dn_Name);
}
Exemplo n.º 3
0
// Compare two entries for sort by comment
int ASM buffer_sort_entries_comment(
	REG(a0, DirEntry *entry1),
	REG(a1, DirEntry *entry2))
{
	char *comment1,*comment2;

	// Get comments
	comment1=(char *)GetTagData(DE_Comment,0,entry1->de_Tags);
	comment2=(char *)GetTagData(DE_Comment,0,entry2->de_Tags);

	// Compare comments
	if (comment1 && comment2)
	{
		register short ret;

		// If comments are equal, do name sort
		if ((ret=stricmp(comment1,comment2))==0)
			return namesort(entry1->de_Node.dn_Name,entry2->de_Node.dn_Name);
		return ret;
	}

	// No comment on one file
	else
	if (comment1) return 1;
	else
	if (comment2) return -1;

	// No comments on either, do name sort
	return namesort(entry1->de_Node.dn_Name,entry2->de_Node.dn_Name);
}
Exemplo n.º 4
0
// Compare two entries for sort by version
int ASM buffer_sort_entries_version(
	REG(a0, DirEntry *entry1),
	REG(a1, DirEntry *entry2))
{
	VersionInfo *info1=0,*info2=0;

	// Get version info
	if (entry1->de_Flags&ENTF_VERSION)
		info1=(VersionInfo *)GetTagData(DE_VersionInfo,0,entry1->de_Tags);
	if (entry2->de_Flags&ENTF_VERSION)
		info2=(VersionInfo *)GetTagData(DE_VersionInfo,0,entry2->de_Tags);

	// Do both files have version info?
	if (info1 && info2)
	{
		// Compare version numbers
		if (info1->vi_Version==info2->vi_Version)
		{
			// Same revision?
			if (info1->vi_Revision==info2->vi_Revision)
			{
				// Same version, compare version dates
				if (info1->vi_Days==info2->vi_Days)
				{
					// Same dates too, do name sort
					return namesort(entry1->de_Node.dn_Name,entry2->de_Node.dn_Name);
				}

				// Return difference in dates
				return info1->vi_Days-info2->vi_Days;
			}

			// Return difference in revision
			return info1->vi_Revision-info2->vi_Revision;
		}

		// Return difference in version
		return info1->vi_Version-info2->vi_Version;
	}

	// No version on one file
	else
	if (info1) return 1;
	else
	if (info2) return -1;

	// No versions on either, do name sort
	return namesort(entry1->de_Node.dn_Name,entry2->de_Node.dn_Name);
}
Exemplo n.º 5
0
int PrintStudent(FILE *file, int count)
{
	int PrintNum;

	printf("이름순으로 출력은 1, 학번순으로 출력은 2, 성적순으로 출력은 3을 입력해주세요. ");
	PrintNum = getch();

	if (PrintNum == '1')	//num이 1이면 이름순 정렬
		namesort(file, count);	//이름순 정렬을 하는 함수를	호출
	else if (PrintNum == '2')	//num이 2이면 학번순 정렬
		studentidsort(file, count);	//학번순 정렬을 하는 함수를 호출
	else if (PrintNum == '3')	//num이 3이면 성적순 정렬
		scoresort(file, count);	//성적순 정렬을 하는 함수를 호출
}
Exemplo n.º 6
0
// Compare two entries for sort by date
int ASM buffer_sort_entries_date(
	REG(a0, DirEntry *entry1),
	REG(a1, DirEntry *entry2))
{
	register int ret;

	// Compare dates
	if ((ret=CompareDates(&entry2->de_Date,&entry1->de_Date))==0)
	{
		// If values are equal, do name sort
		return namesort(entry1->de_Node.dn_Name,entry2->de_Node.dn_Name);
	}

	return ret;
}
Exemplo n.º 7
0
// Compare two entries for sort by size
int ASM buffer_sort_entries_size(
	REG(a0, DirEntry *entry1),
	REG(a1, DirEntry *entry2))
{
	// If sizes are equal, do name sort
	if (entry1->de_Size==entry2->de_Size)
		return namesort(entry1->de_Node.dn_Name,entry2->de_Node.dn_Name);

	// Otherwise, return difference in sizes
#ifdef USE_64BIT
	return (entry1->de_Size<entry2->de_Size) ? -1 : 1;
#else
	return (long)((long)entry1->de_Size-(long)entry2->de_Size);
#endif
}
Exemplo n.º 8
0
// Compare two entries for sort by network protection bits
int ASM buffer_sort_entries_netprot(
	REG(a0, DirEntry *entry1),
	REG(a1, DirEntry *entry2))
{
	register LONG prot,sort_prot;

	// Get network protection values
	prot=entry1->de_Protection&(~255);
	sort_prot=entry2->de_Protection&(~255);

	// If values are equal, do name sort
	if (prot==sort_prot)
		return namesort(entry1->de_Node.dn_Name,entry2->de_Node.dn_Name);

	// Return difference in values
	return (prot-sort_prot);
}
Exemplo n.º 9
0
// Compare two entries for sort by protection
int ASM buffer_sort_entries_protection(
	REG(a0, DirEntry *entry1),
	REG(a1, DirEntry *entry2))
{
	register LONG prot,sort_prot;

	// If values are equal, do name sort
	if (entry1->de_Protection==entry2->de_Protection)
		return namesort(entry1->de_Node.dn_Name,entry2->de_Node.dn_Name);

	// Get real protection values
	prot=(entry1->de_Protection&255)^15;
	sort_prot=(entry2->de_Protection&255)^15;

	// Return difference in values
	return (prot-sort_prot);
}
Exemplo n.º 10
0
// Compare two entries for sort by name
int ASM buffer_sort_entries_name(
	REG(a0, DirEntry *entry1),
	REG(a1, DirEntry *entry2))
{
	return namesort(entry1->de_Node.dn_Name,entry2->de_Node.dn_Name);
}