#include "/Demo/ToHtmlToTXTDemo/ToHtml.HC.Z" U8 *FilenameToURL(U8 *filename, I64 line) { filename[StrLen(filename) - 2] = NULL; return MStrPrint("/Wb%s.HTML#l%d", filename + 2, line); } U8 *LinkCvt(U8 *link_st) { U8 *res = NULL, *filename, *needle; I64 i, num; if (link_st) { i = EdLinkCvt(link_st, &filename, &needle, &num); switch (i) { case LK_FILE_LINE: case LK_PLAIN_LINE: case LK_FILE: res = FilenameToURL(filename, num); break; case LK_DEF: case LK_HELP_INDEX: case LK_DOC: case LK_DOC_ANCHOR: case LK_DOC_FIND: case LK_DOC_LINE: break; case LK_BIBLE_FIND: res = TOSLinkCvt1(link_st); break; default: if (DocFileEd(i, filename, needle, &num, EDF_UNCOLLAPSE | EDF_BAIL)) res = FilenameToURL(filename, num); } } Free(filename); Free(needle); return res; } CDirEntry *start_entry = FilesFind( "/*.HC.Z;*.HH.Z;*.DD.Z;!/Home/*", FUF_RECURSE | FUF_JUST_FILES ); CDirEntry *entry = start_entry; U8 *html_header = "\n" "\n" "\n" "\n" "\n" "\n" "\n" "\n"; U8 *body_header = "\n" "
\n";

//Del("C:/Home/Src", FALSE, TRUE);

do {
  
  U8 *new_name = MAlloc(2 *StrLen(entry->full_name));
  StrPrint(new_name, "/Home/Src%s", entry->full_name + 2);
  
  new_name[StrLen(new_name) - 2] = NULL;
  CatPrint(new_name, ".HTML");

  //if (StrMatch(".DD", entry->full_name)) {
    ToHtml(
      entry->full_name,
      new_name,
      html_header,
      body_header,
      NULL,
      NULL,
      80,
      TRUE,
      &LinkCvt,
    );

    Print("%s -> %s\n", entry->full_name, new_name);
  //} else {
  //  Copy(entry->full_name, new_name);
  //}

} while (entry = entry->next);

DirTreeDel(start_entry);