Subversion Repositories Kolibri OS

Rev

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

  1. enum { TAG, OPTION_VALUE, TEXT, COMMENT };
  2.  
  3. //you are butifull, you are butifull
  4. dword ShowSource()
  5. {
  6.         dword new_buf, new_buf_start, i;
  7.         byte ww, mode;
  8.  
  9.         if (souce_mode) return;
  10.         souce_mode = true;
  11.         new_buf = malloc(bufsize*5);
  12.         new_buf_start = new_buf;
  13.         header[strrchr(#header, '-')-2]=0;
  14.         sprintf(new_buf,"<html><head><title>Source: %s</title><body><pre>",#header);
  15.         new_buf += strlen(new_buf);
  16.         for (i=bufpointer; i<bufpointer+bufsize; i++)
  17.         {
  18.                 ww = ESBYTE[i];
  19.                 switch (ww)
  20.                 {
  21.                         case '<':
  22.                                 if (ESBYTE[i+1]=='!') && (ESBYTE[i+2]=='-') && (ESBYTE[i+3]=='-')
  23.                                 {
  24.                                         strcpy(new_buf, "<font color=#bbb>&lt;");
  25.                                         new_buf+=21;
  26.                                         mode = COMMENT;
  27.                                 }
  28.                                 if (mode != COMMENT)
  29.                                 {
  30.                                         strcpy(new_buf, "<font color=#00f>&lt;");
  31.                                         new_buf+=21;
  32.                                         mode = TAG;
  33.                                 }
  34.                                 break;
  35.                         case '>':
  36.                                 if (mode == OPTION_VALUE) //fix non-closed quote in TAG
  37.                                 {
  38.                                         strcpy(new_buf, "&quot;</font>");
  39.                                         new_buf+=13;                                   
  40.                                         mode = TAG;
  41.                                 }
  42.                                 if (mode == COMMENT) && (ESBYTE[i-1]=='-') && (ESBYTE[i-2]=='-')
  43.                                 {
  44.                                         strcpy(new_buf, "&gt;</font>");
  45.                                         new_buf+=11;
  46.                                         mode = TEXT;
  47.                                 }
  48.                                 if (mode == TAG)
  49.                                 {
  50.                                         strcpy(new_buf, "&gt;</font>");
  51.                                         new_buf+=11;
  52.                                         mode = TEXT;
  53.                                 }
  54.                                 break;
  55.                         case '\"':
  56.                         case '\'':
  57.                                 if (mode == TAG)
  58.                                 {
  59.                                         strcpy(new_buf, "<font color=#f0f>&#39;");
  60.                                         new_buf+=22;
  61.                                         mode = OPTION_VALUE;
  62.                                         break;
  63.                                 }
  64.                                 if (mode == OPTION_VALUE)
  65.                                 {
  66.                                         strcpy(new_buf, "&#39;</font>");
  67.                                         new_buf+=12;
  68.                                         mode = TAG;
  69.                                         break;
  70.                                 }
  71.                         default:
  72.                                 ESBYTE[new_buf] = ww;
  73.                                 new_buf++;
  74.                 }
  75.         }
  76.         ESBYTE[new_buf] = 0;
  77.         bufsize = new_buf - new_buf_start;
  78.         free(bufpointer);
  79.         bufpointer = new_buf_start;
  80. }