Subversion Repositories Kolibri OS

Rev

Rev 3043 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3043 Rev 3157
Line 22... Line 22...
22
}
22
}
Line 23... Line 23...
23
 
23
 
24
 
24
	
25
void Sort_by_Type(int a, b)   // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1
-
 
26
{                                        
-
 
27
	int jst, ist=a;
25
void Sort_by_Type(int a, b)   // äëÿ ïåðâîãî âûçîâà: a = 0, b = <ýëåìåíòîâ â ìàññèâå> - 1
28
	int n;
26
{               
29
	unsigned char filename1[256], filename2[256];
-
 
30
	unsigned char ext1[256], ext2[256];
27
	dword filename1, filename2, ext1, ext2;
31
	
28
	int n, isn = a;
32
	IF (a >= b) return;
29
	IF (a >= b) return;
33
	for (jst = a; jst <= b; jst++)
-
 
34
	{
30
	for (j = a; j <= b; j++)
35
		ext1[0]=ext2[0]=filename1[0]=filename2[0]=NULL;
31
	{
-
 
32
		filename1 = file_mas[j]*304 + buf+72;
36
		copystr(file_mas[jst]*304 + buf+72, #filename1);
33
		filename2 = file_mas[b]*304 + buf+72;
37
		copystr(file_mas[b]*304 + buf+72, #filename2);
34
 
38
		n=strlen(#filename1)-1;
35
		n=strlen(filename1)-1;
39
		WHILE (filename1[n]<>'.') && (n>0) n--;
36
		WHILE (n>0) && (ESBYTE[filename1+n]<>'.') n--;
40
		IF (n) copystr(#filename1+n+1, #ext1);
37
		IF (n) ext1 = filename1+n+1; else ext1=0;
41
		n=strlen(#filename2)-1;
38
		n=strlen(filename2)-1;
42
		WHILE (filename2[n]<>'.') && (n>0) n--;
39
		WHILE (n>0) && (ESBYTE[filename2+n]<>'.') n--;
43
		IF (n) copystr(#filename2+n+1, #ext2);
40
		IF (n) ext2 = filename2+n+1; else ext2=0;
44
 
41
 
45
		n=strcmp(#ext1, #ext2);
42
		n=strcmp(ext1, ext2);
46
		IF (n<0) { file_mas[ist] >< file_mas[jst];   ist++;} 
43
		IF (n<0) { file_mas[isn] >< file_mas[j];   isn++;} 
47
		IF (n==0) && (strcmp(#filename1, #filename2)<=0) { file_mas[ist] >< file_mas[jst];   ist++;}
44
		IF (n==0) && (strcmp(filename1, filename2)<=0) { file_mas[isn] >< file_mas[j];   isn++;}
48
	}
45
	}
49
	Sort_by_Type(a, ist-2);
46
	Sort_by_Type(a, isn-2);