// 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); }
// 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); }
// 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); }
// 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); }
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); //성적순 정렬을 하는 함수를 호출 }
// 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; }
// 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 }
// 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); }
// 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); }
// 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); }