?login_element?

Subversion Repositories NedoOS

Rev

Rev 50 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #include "../_sdk/io.h"
  2. #include "../_sdk/str.h"
  3.  
  4. VAR BYTE psystrk[0x900];
  5.  
  6. FUNC BOOL comparedesc(PCHAR filename, PBYTE desc)
  7. {
  8. VAR CHAR c;
  9. VAR BOOL res;
  10. VAR BYTE i = 0x08;
  11.   res = +FALSE;
  12.   filename = findlastslash(filename);
  13.   loop:
  14.     c = *(PCHAR)filename;
  15.     INC filename;
  16.     IF (c == '.') {
  17.       dot:
  18.       while (i != 0x00) {
  19.         if (*(PCHAR)desc != ' ') {goto quit;};
  20.         INC desc;
  21.         DEC i;
  22.       };
  23.       //desc = (PBYTE)((UINT)desc + (UINT)i);
  24.       res = (*(PCHAR)desc == *(PCHAR)filename);
  25.       goto quit;
  26.     };
  27.     IF (c != *(PCHAR)desc) {goto quit;};
  28.     INC desc;
  29.     DEC i;
  30.     IF (i == 0x00) {
  31.       c = *(PCHAR)filename;
  32.       INC filename;
  33.       IF (c == '.') {goto dot;};
  34.       res = ((c == '\0') && (*(PCHAR)desc == ' ')); //filenam8 (without ext); else filename too long
  35.       goto quit;
  36.     };
  37.     goto loop;
  38.   quit:
  39. RETURN res;
  40. }
  41.  
  42. PROC main(PCHAR fn)
  43. {
  44. VAR BYTE nerased;
  45. //VAR BYTE nfiles;
  46. VAR PBYTE curfiledesc;
  47.   //ўшЄрхь ёшёЄхьэє■ фюЁюцъє
  48.   readsectors((PBYTE)psystrk, 0x0000, 0x09);
  49.   //nfiles = psystrk[0x8e4];
  50.   nerased = psystrk[0x8f4];
  51.  
  52.   //Єхъє∙шщ Їрщыют√щ фхёъЁшяЄюЁ = &psystrk[0x0000]
  53.   curfiledesc = (PBYTE)psystrk;
  54.   loop:
  55.     //ш∙хь эхєфры╕ээ√щ Їрщы
  56.     IF (*(PBYTE)curfiledesc == 0x00) goto quit;
  57.     IF (comparedesc(fn, curfiledesc)) {
  58.       //ъюЁЁхъЄшЁєхь фшЁхъЄюЁш■
  59.       curfiledesc[0] = 0x01; //erased
  60.       //DEC nfiles;
  61.       INC nerased;
  62.     };
  63.     //яхЁхїюфшь ъ ёыхфє■∙хьє фхъёЁшяЄюЁє
  64.     curfiledesc = &curfiledesc[16];
  65.     //яютЄюЁ хь фю 0
  66.   goto loop;
  67.   quit:
  68.  
  69.   //ъюЁЁхъЄшЁєхь ёшёЄхьэ√щ ёхъЄюЁ
  70.   //psystrk[0x8e4] = nfiles; //number of files
  71.   psystrk[0x8f4] = nerased; //number of erased files
  72.   //яш°хь ёшёЄхьэє■ фюЁюцъє
  73.   writesectors((PBYTE)psystrk, 0x0000, 0x09);
  74. }
  75.