ToLower - A HTML Compatibility Tool

Environment: VC6 SP4, Win9x NT4 SP5, Win2k

In General How It Works Usage
Source Code Full Version Credits

ToLower was created when I tried to port a website from a Windows to an LINUX/UNIX platform and experienced some annoying compatibility problems.

This is due to the Windows file system's habit, not to distinguish between lower and upper case file names (it's "case insensitive") and that it allows characters (e. g. "?", "!" and "-") that have a special function in UNIX and are therefore reserved.

ToLower parses one or more HTML-files that are specified on its command-line for regular expressions (regex courtesy of Henry Spencer, some slight cosmetic changes to the code done by me) that contain <a href="filename.htm"> Text </a>, <img src="filename.htm"> or <body backgound="filename.htm"> Text </body> - tags, corrects the case and other extras that could affect compatibility.

After that, all referenced files (respective their names) are adapted according to the changes done in the HTML file.

Finally, all other files in the path of the specified HTML-file(s) are renamed to their lower-case (compatibility) file names to avoid ambiguities.

The ToLower source code contains some interesting and recyleable bits of code that I thought I should share with you:

  • CStrList Class for generating a list of strings. Has various insertion, appending, sorting, searching and deleting functions. Files: cstrlist.h, cstrlist.cpp
  • regex
  • A full featured regular expression searcher. Necessary files: cclass.h, cname.h, engine.c, regcomp.c, regerror.c, regex.h, regex2.h, regexec.c, regfree.c, utils.h. Usage is pretty self-explaining (take a look at the
    // search for regular expression that

    -section of tolower.cpp.

  • str2list
  • Converts a delimited string to a list of elements. Useful when parsing command lines. Files: str2list.h, str2list.cpp and the CStrList-class.
  • TempNamA
  • Creates unique temporary file name. Files: tempnama.h, tempnama.cpp.
The usage of ToLower is simple:

Just list every HTML-file that has to be checked/changed on the command line. To change all files in the path, we would do a

dir /s /b *.htm *.html > tolower.bat

and insert a

tolower

prior to each file name (don't forget the space char after "ToLower"). A call to

ToLower.bat

does the trick!

Of course, ToLower supports absolute and relative paths.

Credits: My credits go to Henry Spencer for the regular expression search engine, to Chris Windmüller for CStrList and all the other open source programmers that are never mentioned in any commercial projects.

If you have any comments, improvements or complaints - feel free to send me an email. Have fun!

Volker.

Downloads

Complete VC6 project: ToLowerSrc.zip (50 kBytes)
Compiled executable: ToLowerExe.zip (80 kBytes)


Comments

  • There are no comments yet. Be the first to comment!

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Live Event Date: May 11, 2015 @ 1:00 p.m. ET / 10:00 a.m. PT One of the languages that have always been supported with the Intel® RealSense™ SDK (Software Developer Kit) is JavaScript, specifically so that web-enabled apps could be created. Come hear from Intel Expert Bob Duffy as he reviews his own little "space shooting" game where the orientation of your face controls the aiming reticle to help teach developers how to write apps and games in JavaScript that can use facial and gesture …

  • Live Event Date: May 6, 2015 @ 1:00 p.m. ET / 10:00 a.m. PT Where are you in your plans to adopt Disaster Recovery-as-a-Service? Are you just getting started? Fighting an uphill battle with management? At Cisco, Zerto and iland, we've seen it all – from the early adopters who excitedly rushed to implement DRaaS with us nine years ago to the IT folks dragging their business leaders into the future. With our years of experience, we've learned there are six types of DRaaS leaders – but which type …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date