Subversion Repositories Kolibri OS

Rev

Rev 6794 | Rev 7746 | 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 (mode == COMMENT)
  23.                                 {
  24.                                         strcpy(new_buf, "&lt;");
  25.                                         new_buf+=4;
  26.                                         break;
  27.                                 }
  28.                                 if (ESBYTE[i+1]=='!') && (ESBYTE[i+2]=='-') && (ESBYTE[i+3]=='-')
  29.                                 {
  30.                                         strcpy(new_buf, "<font color=#bbb>&lt;");
  31.                                         new_buf+=21;
  32.                                         mode = COMMENT;
  33.                                         break;
  34.                                 }
  35.                                 if (mode != COMMENT)
  36.                                 {
  37.                                         strcpy(new_buf, "<font color=#00f>&lt;");
  38.                                         new_buf+=21;
  39.                                         mode = TAG;
  40.                                         break;
  41.                                 }
  42.                                 break;
  43.                         case '>':
  44.                                 if (mode == OPTION_VALUE) //fix non-closed quote in TAG
  45.                                 {
  46.                                         strcpy(new_buf, "&quot;</font>");
  47.                                         new_buf+=13;                                   
  48.                                         mode = TAG;
  49.                                         break;
  50.                                 }
  51.                                 if (mode == COMMENT) && (ESBYTE[i-1]=='-') && (ESBYTE[i-2]=='-')
  52.                                 {
  53.                                         strcpy(new_buf, "&gt;</font>");
  54.                                         new_buf+=11;
  55.                                         mode = TEXT;
  56.                                         break;
  57.                                 }
  58.                                 if (mode == COMMENT)
  59.                                 {
  60.                                         strcpy(new_buf, "&gt;");
  61.                                         new_buf+=4;
  62.                                         break;                                 
  63.                                 }
  64.                                 if (mode == TAG)
  65.                                 {
  66.                                         strcpy(new_buf, "&gt;</font>");
  67.                                         new_buf+=11;
  68.                                         mode = TEXT;
  69.                                         break;
  70.                                 }
  71.                                 break;
  72.                         case '\"':
  73.                         case '\'':
  74.                                 if (mode == TAG)
  75.                                 {
  76.                                         strcpy(new_buf, "<font color=#f0f>&#39;");
  77.                                         new_buf+=22;
  78.                                         mode = OPTION_VALUE;
  79.                                         break;
  80.                                 }
  81.                                 if (mode == OPTION_VALUE)
  82.                                 {
  83.                                         strcpy(new_buf, "&#39;</font>");
  84.                                         new_buf+=12;
  85.                                         mode = TAG;
  86.                                         break;
  87.                                 }
  88.                         default:
  89.                                 ESBYTE[new_buf] = ww;
  90.                                 new_buf++;
  91.                 }
  92.         }
  93.         ESBYTE[new_buf] = 0;
  94.         bufsize = new_buf - new_buf_start;
  95.         free(bufpointer);
  96.         bufpointer = new_buf_start;
  97. }