?login_element?

Subversion Repositories NedoOS

Rev

Rev 49 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. //// imported
  2. #include "../_sdk/str.h"
  3.  
  4. VAR PCHAR _tword; //Єхъє∙хх ёыютю
  5. VAR UINT _lentword;
  6. VAR CHAR _s0[_STRLEN]; //Єхъє∙хх ёыютю
  7. //VAR PCHAR _tstr; //Єхъє∙р  ёЄЁюър
  8. //VAR UINT _lentstr;
  9. //VAR CHAR _ss[_STRLEN]; //Єхъє∙р  ёЄЁюър
  10.  
  11. EXTERN PBYTE _fin;
  12. EXTERN BOOL _waseof;
  13.  
  14. EXTERN UINT  _curlnbeg; //эюьхЁ ёЄЁюъш эр ьюьхэЄ эрўрыр Єюъхэр
  15.  
  16. FUNC BYTE readfin FORWARD();
  17. //FUNC UINT readfinstr FORWARD(PBYTE pstr);
  18.  
  19. ////
  20.  
  21. VAR UINT  _curline; //Єхъє∙шщ эюьхЁ ёЄЁюъш
  22. VAR CHAR _cnext; //ёыхфє■∙шщ ёшьтюы
  23. VAR CHAR _c; //Єхъє∙шщ ёшьтюы (уыюсры№э√щ, ўЄюс√ эх ёюїЁрэ Є№ т ЁхъєЁёшш)
  24. VAR UINT _spcsize; //ўшёыю яЁюсхыют яюёых яЁюўшЄрээющ ъюьрэф√
  25. VAR UINT _waseols; //ёъюы№ъю с√ыю EOL ё яЁю°ыюую Ёрчр
  26.  
  27. VAR BOOL _doskip; //яЁюяєёърЄ№ ёЄЁюъш, ъЁюьх эрўшэр■∙шїё  ё #
  28.  
  29. PROC rdword FORWARD();
  30. PROC rdaddword FORWARD(); //join next word
  31.  
  32. CONST BOOL _isalphanum[256]={
  33.   +FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE, +FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE, //0X
  34.   +FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE, +FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE, //1X
  35.   +FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE, +FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE, //2X
  36.   +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , +TRUE ,+TRUE ,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE, //3X
  37.   +FALSE,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , //4X
  38.   +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , +TRUE ,+TRUE ,+TRUE ,+FALSE,+FALSE,+FALSE,+FALSE,+TRUE , //5X
  39.   +FALSE,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , //6X
  40.   +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , +TRUE ,+TRUE ,+TRUE ,+FALSE,+FALSE,+FALSE,+FALSE,+FALSE, //7X
  41.  
  42.   +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , //8X..FX
  43.   +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , //8X..FX
  44.   +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , //8X..FX
  45.   +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , //8X..FX
  46.   +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , //8X..FX
  47.   +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , //8X..FX
  48.   +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , //8X..FX
  49.   +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE , +TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE ,+TRUE   //8X..FX
  50. };
  51.  
  52. //эрфю эрўрЄ№ яЁюяєёъ ёЄЁюъ т ЄюЄ ьюьхэЄ, ъюуфр _cnext = яхЁт√щ ёшьтюы ёЄЁюъш, р _waseols!=0
  53. //эр т√їюфх шч яЁюяєёър эрфю Єю цх ёюёЄю эшх: _cnext = яхЁт√щ ёшьтюы ёЄЁюъш, р _waseols!=0
  54.  
  55. PROC skiplines() //яЁюяєёърЄ№ ёЄЁюъш фю # (эр т√їюфх _cnext == '#')
  56. {
  57.  //_curline = _curline; //ёхщўрё _cnext = яхЁт√щ ёшьтюы ёЄЁюъш, р _waseols!=0
  58.   skipline:
  59.  //яЁюяєёЄшЄ№ ёЄЁюъє, хёыш юэр эх эрўшэрхЄё  ё # (шэрўх эр т√їюфх _cnext == '#')
  60.  //ёхщўрё _cnext == яхЁт√щ ёшьтюы ёЄЁюъш
  61.  //хёыш эх #, Єю яЁюяєёЄшЄ№ ёЄЁюъє
  62.   WHILE ((_cnext != '#')&&(!_waseof)) {
  63.     INC _curline;
  64.     INC _waseols;
  65.     loop:
  66.     _cnext = +(CHAR)readfin();
  67.     IF ((+(BYTE)_cnext != 0x0a)&&(!_waseof)) {
  68.       goto loop;
  69.     };
  70.     _cnext = +(CHAR)readfin();
  71.     //ёхщўрё _cnext == яхЁт√щ ёшьтюы ёЄЁюъш
  72.   };
  73.  //_curline = _curline; //ёхщўрё _cnext == '#' шыш EOF
  74. }
  75.  
  76. //яЁюяєёърхЄ яЁюсхы√ ш хэЄхЁ√
  77. PROC rdch()
  78. //ўшЄрхь тё■ уЁєяяє фшхЁхчшёют + ёшьтюы ъръ юфшэ ёшьтюы
  79. //фюсрты хЄ cnext т tword
  80. //ш ўшЄрхЄ тё■ уЁєяяє фшхЁхчшёют + ёшьтюы ъръ юфшэ ёшьтюы cnext
  81. {
  82. //  _lentword = stradd(_tword, _lentword, _cnext);
  83.   IF (_lentword < _STRMAX) {
  84.     _tword[_lentword] = _cnext;
  85.     INC _lentword;
  86.   };
  87.   loop:
  88.     _cnext = +(CHAR)readfin();
  89.     IF (+(BYTE)_cnext < +(BYTE)'!') { //єёъюЁхэшх т√їюфр
  90.       INC _spcsize; //spaces after tword
  91.       IF (+(BYTE)_cnext == 0x0a) {
  92.         INC _curline;
  93.         _spcsize = 0;
  94.         INC _waseols;
  95.       }ELSE IF (_cnext == '\t') {
  96.         _spcsize = _spcsize + 7; //TODO ёт чрЄ№ ё X
  97.       };
  98.       //_wasdieresis = +TRUE;
  99.       IF (!_waseof) goto loop; //todo т тхЄъх 0a
  100.     };
  101.   IF (_doskip)
  102.     IF (_waseols!=0) {
  103.       skiplines();
  104.       //ёхщўрё _cnext == '#'
  105.     };
  106. }
  107.  
  108. //яЁюяєёърхЄ хэЄхЁ√
  109. PROC rdchcmt()
  110. //фюсрты хЄ cnext т tword
  111. //ш ўшЄрхЄ тё■ уЁєяяє фшхЁхчшёют + ёшьтюы ъръ юфшэ ёшьтюы cnext
  112. {
  113. //  _lentword = stradd(_tword, _lentword, _cnext);
  114.   IF (_lentword < _STRMAX) {
  115.     _tword[_lentword] = _cnext;
  116.     INC _lentword;
  117.   };
  118.   loop:
  119.     _cnext = +(CHAR)readfin();
  120.     IF (+(BYTE)_cnext == 0x0a) {
  121.       INC _curline;
  122.       _spcsize = 0;
  123.       INC _waseols;
  124.       IF (!_waseof) goto loop;
  125.     }ELSE IF (+(BYTE)_cnext == 0x0d) {
  126.       IF (!_waseof) goto loop;
  127.     };
  128.   IF (_doskip) //todo эрфю ыш ЄєЄ?
  129.     IF (_waseols!=0) {
  130.       skiplines();
  131.       //ёхщўрё _cnext == '#'
  132.     };
  133. }
  134.  
  135. PROC rdaddword() //яюфъыхшЄ№ ёыхфє■∙є■ ъюьрэфє ъ Єхъє∙хщ
  136. {
  137.     IF (_doskip)
  138.       IF (_waseols!=0) {
  139.         skiplines();
  140.         //ёхщўрё _cnext == '#'
  141.       };
  142.   beg:
  143.   _spcsize = 0; //ўшёыю яЁюсхыют яюёых яЁюўшЄрээющ ъюьрэф√
  144.   _waseols = 0;
  145.   _curlnbeg = _curline;
  146.   IF (_isalphanum[+(BYTE)_cnext] ) {
  147.     loop1: //REPEAT { //цф╕ь эхЎшЇЁюсєътє (EOF эх ЎшЇЁюсєътр)
  148.       IF (_lentword < _STRMAX) {
  149.         _tword[_lentword] = _cnext;
  150.         INC _lentword;
  151.       };
  152.       _cnext = +(CHAR)readfin();
  153.     IF (_isalphanum[+(BYTE)_cnext]) goto loop1; //}UNTIL (!_isalphanum[+(BYTE)_cnext]/** || _waseof*/ );
  154.     goto loopgo;
  155.     loop2: //REPEAT { //цф╕ь эхфшхЁхчшё шыш EOF
  156.       _cnext = +(CHAR)readfin();
  157.     loopgo:
  158.       IF (+(BYTE)_cnext < +(BYTE)'!') { //єёъюЁхэшх т√їюфр
  159.         INC _spcsize; //spaces after tword
  160.         IF (+(BYTE)_cnext == 0x0a) {
  161.           INC _curline;
  162.           _spcsize = 0;
  163.           INC _waseols;
  164.         };
  165.         IF (!_waseof) goto loop2;
  166.       };
  167.     //}UNTIL (_wasdieresis || _waseof );
  168.   }ELSE { //ёыютю шч эхЎшЇЁюсєътхээюую ёшьтюыр
  169.     rdch(); //ўшЄрхь тё■ уЁєяяє фшхЁхчшёют + ёшьтюы ъръ юфшэ ёшьтюы
  170.   }; //эхы№ч  яюфъыхшЄ№ ¤Єю єёыютшх ъ Ўшъыє, Є.ъ. юэю фы  шчэрўры№эюую cnext ш юфшэ Ёрч
  171.  
  172.   _tword[_lentword] = (CHAR)0x00; //strclose(_tword, _lentword); //todo эрЁє°хэр ярЁэюёЄ№ clear..close
  173.  
  174.   IF (_lentword==1) {
  175.     _c = *(PCHAR)_tword;
  176.     IF (+(BYTE)_c < +(BYTE)'<') { //єёъюЁхэшх
  177.       IF (
  178.           (
  179.            ((_c=='/')&&(_cnext=='*'))
  180.          ||((_c=='*')&&(_cnext=='/'))
  181.           )
  182.          ) { //шуэюЁшЁєхь /* ш */
  183.         rdch(); //rdaddword(); //шёяюы№чєхь яхЁт√щ ёшьтюы чэрър ъюььхэЄрЁш , ўшЄрхь ёыхфє■∙шщ ёшьтюы яюёых яЁюсхыют
  184.         IF ( _cnext=='*' ) { ///** */ эрфю ъръ ъюььхэЄрЁшщ
  185.           rdchcmt(); //rdaddword(); //шёяюы№чєхь тЄюЁющ ёшьтюы чэрър ъюььхэЄрЁш 
  186.           WHILE ( !( ( (_cnext=='/')&&(_c=='*') ) || _waseof ) ) {
  187.             _c = _cnext;
  188.             rdchcmt(); //яЁюяєёърхЄ тёх хэЄхЁ√
  189.           };
  190.           rdch(); //шёяюы№чєхь яюёыхфэшщ ёшьтюы ъюььхэЄрЁш , ўшЄрхь ёыхфє■∙шщ ёшьтюы яюёых яЁюсхыют
  191.           _tword[_lentword] = (CHAR)0x00; //strclose(_tword, _lentword); //todo эрЁє°хэр ярЁэюёЄ№ clear..close
  192.   //#ifdef USE_COMMENTS
  193.   ;;        //cmt(';'); cmtstr(_tword); endcmt();
  194.   ;;        IF (_cmts) {writebyte(_fout, +(BYTE)';'); fputs(_tword, _fout); writebyte(_fout, +(BYTE)'\n'); };
  195.   //#endif
  196.         };
  197.         //ўшЄрхь ёыютю яюёых ъюььхэЄрЁш  шыш эхфюъюььхэЄрЁш  /* шыш */
  198.         _lentword = 0/**strclear(_tword)*/; //todo эрЁє°хэр ярЁэюёЄ№ clear..close
  199.         goto beg; //rdaddword();
  200.       }ELSE IF ( //(_lentword==1)&&
  201.                 (
  202.                  (_c=='/')&&(_cnext=='/')
  203. //               ||(_c=='#')
  204.                ||(_c==';')&&(_cnext==';')
  205.                 )
  206.                ) { //
  207.         _waseols = 0; //ўЄюс√ ;; ЁрсюЄрыю яюёых ёЄЁюъш, чрърэўштр■∙хщё  эр ; (TODO эх яюьюурхЄ)
  208.         rdchcmt(); //rdaddword(); //шёяюы№чєхь яхЁт√щ ёшьтюы чэрър ъюььхэЄрЁш , ўшЄрхь ёыхфє■∙шщ ёшьтюы
  209.         WHILE (_waseols==0/** && !_waseof*/ ) {
  210.           rdchcmt(); //яЁюяєёърхЄ тёх хэЄхЁ√
  211.         };
  212.         _tword[_lentword] = (CHAR)0x00; //strclose(_tword, _lentword); //todo эрЁє°хэр ярЁэюёЄ№ clear..close
  213.   //#ifdef USE_COMMENTS
  214.   ;;        //cmt(';'); cmtstr(_tword); endcmt();
  215.   ;;        IF (_cmts) {writebyte(_fout, +(BYTE)';'); fputs(_tword, _fout); writebyte(_fout, +(BYTE)'\n'); };
  216.   //#endif
  217.         IF (+(BYTE)_cnext < +(BYTE)'!') {
  218.           rdch(); //шёяюы№чєхь яюёыхфэшщ ёшьтюы ъюььхэЄрЁш , ўшЄрхь ёыхфє■∙шщ ёшьтюы (TODO єэшЇшЎшЁютрЄ№ ъръ т√°х)
  219.         };
  220.         //ўшЄрхь ёыютю яюёых ъюььхэЄрЁш 
  221.         _lentword = 0/**strclear(_tword)*/; //todo эрЁє°хэр ярЁэюёЄ№ clear..close
  222.         goto beg; //rdaddword();
  223.       };
  224.     }; //єёъюЁхэшх
  225.   }; //check cmt
  226. }
  227.  
  228. PROC rdword()
  229. //ўшЄрхь ёыютю _tword (шч ЄхъёЄр ё фшхЁхчшёрьш тьхёЄю яЁюсхыют, хэЄхЁют, Єрсєы Ўшщ)
  230. //ёыютю чрърэўштрхЄё , ъюуфр фшхЁхчшё шыш эхЎшЇЁюсєътхээ√щ ёшьтюы (юэ яюярф╕Є т cnext, р ъєЁёюЁ т Їрщых яюёых эхую)
  231. {
  232.   _lentword = 0/**strclear(_tword)*/; //todo эрЁє°хэр ярЁэюёЄ№ clear..close
  233.   rdaddword();
  234. }
  235.  
  236. PROC rdquotes(CHAR eol) //ёўшЄ√трхЄ фю ърт√ўъш эхтъы■ўшЄхы№эю
  237. {
  238.   WHILE (_spcsize != 0) { //фюсртшЄ№ ё·хфхээ√х яЁюсхы√
  239.     _lentword = stradd(_tword, _lentword, ' ');
  240.     DEC _spcsize;
  241.   };
  242.   WHILE ( (_cnext!=eol) && !_waseof) {
  243.     IF ( _cnext=='\\' ) {
  244.       _lentword = stradd(_tword, _lentword, _cnext);
  245.       _cnext = +(CHAR)readfin();
  246.     };
  247.     _lentword = stradd(_tword, _lentword, _cnext);
  248.     _cnext = +(CHAR)readfin();
  249.   };
  250.   _tword[_lentword] = (CHAR)0x00; //strclose(_tword, _lentword);
  251. }
  252.  
  253. PROC initrd()
  254. {
  255.   _doskip = +FALSE;
  256.   _tword = (PCHAR)_s0;
  257. //  _tstr = (PCHAR)_ss;
  258.   _waseols = 0;
  259.   _spcsize = 0;
  260.   _lentword = 0/**strclear(_tword)*/; //todo эрЁє°хэр ярЁэюёЄ№ clear..close
  261.   rdch(); //ўшЄрхь тё■ уЁєяяє фшхЁхчшёют + ёшьтюы ъръ юфшэ ёшьтюы
  262. }
  263.  
  264.