C#, 108 characters (partial answer)
reads STDIN, lowercased every char and send it to STDOUT.
using System;class P{static void Main(){while(true)Console.Out.WriteLine(Console.In.ReadLine().ToLower());}} answer, 332 characters (with horrific readebilty)
- takes file list from passed arguments
- read every char in every file than only converts to lower case if and only if the character in the A..Z range than send it to STDOUT
- If there is no file list than reads STDIN, reads every char, converts to lower case if and only if the character in the A..Z range than send it to STDOUT.
using System;using System.IO;using System.Linq;class P { static void Main(string[] a){Actione=C=>{var c=char.ToLower(C);Console.Out.Write(c>='a'&&c<='z'?c:C);};if(a.Length>1)a.ToList().ForEach(f=>File.ReadAllText(f).ToCharArray().ToList().ForEach(e));else while(true)Console.In.ReadLine().ToCharArray().ToList().ForEach(e);}} more readable version
using System; using System.IO; using System.Linq; class P { static void Main(string[] a) { Action<char> e = C => { var c = char.ToLower(C); Console.Out.Write(c >= 'a' && c <= 'z' ? c : C); }; if (a.Length > 0) a.ToList().ForEach(f=> File.ReadAllText(f).ToCharArray().ToList().ForEach(e)); else while (true) Console.In.ReadLine().ToCharArray().ToList().ForEach(e); } }