?login_element?

Subversion Repositories NedoOS

Rev

Rev 8 | Go to most recent revision | 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.   filename = findlastslash(filename);
  12.   loop:
  13.     c = *(PCHAR)filename;
  14.     INC filename;
  15.     IF (c == '.') { //todo test '\0', descbuf all spaces
  16.       dot:
  17.       //desc = (PBYTE)((UINT)desc + (UINT)i);
  18.       res = (*(PCHAR)((UINT)desc + (UINT)i) == *(PCHAR)filename);
  19.       goto quit;
  20.     };
  21.     IF (c != *(PCHAR)desc) {
  22.       res = +FALSE;
  23.       goto quit;
  24.     };
  25.     INC desc;
  26.     DEC i;
  27.     IF (i == 0x00) {
  28.       c = *(PCHAR)filename;
  29.       INC filename;
  30.       //IF (c == '.')
  31.               goto dot;
  32.       //res = (*(PCHAR)desc == ' '); //filenam8 (without ext) //TODO
  33.       //goto quit;
  34.     };
  35.     goto loop;
  36.   quit:
  37. RETURN res;
  38. }
  39.  
  40. PROC main(PCHAR fn)
  41. {
  42. VAR BYTE nerased;
  43. //VAR BYTE nfiles;
  44. VAR PBYTE curfiledesc;
  45.   //ўшЄрхь ёшёЄхьэє■ фюЁюцъє
  46.   readsectors((PBYTE)psystrk, 0x0000, 0x09);
  47.   //nfiles = psystrk[0x8e4];
  48.   nerased = psystrk[0x8f4];
  49.  
  50.   //Єхъє∙шщ Їрщыют√щ фхёъЁшяЄюЁ = &psystrk[0x0000]
  51.   curfiledesc = (PBYTE)psystrk;
  52.   loop:
  53.     //ш∙хь эхєфры╕ээ√щ Їрщы
  54.     IF (*(PBYTE)curfiledesc == 0x00) goto quit;
  55.     IF (comparedesc(fn, curfiledesc)) {
  56.       //ъюЁЁхъЄшЁєхь фшЁхъЄюЁш■
  57.       curfiledesc[0] = 0x01; //erased
  58.       //DEC nfiles;
  59.       INC nerased;
  60.     };
  61.     //яхЁхїюфшь ъ ёыхфє■∙хьє фхъёЁшяЄюЁє
  62.     curfiledesc = &curfiledesc[16];
  63.     //яютЄюЁ хь фю 0
  64.   goto loop;
  65.   quit:
  66.  
  67.   //ъюЁЁхъЄшЁєхь ёшёЄхьэ√щ ёхъЄюЁ
  68.   //psystrk[0x8e4] = nfiles; //number of files
  69.   psystrk[0x8f4] = nerased; //number of erased files
  70.   //яш°хь ёшёЄхьэє■ фюЁюцъє
  71.   writesectors((PBYTE)psystrk, 0x0000, 0x09);
  72. }
  73.