1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
//
// ImLogViewer.cs
//
// Lukas Lipka <lukas@pmad.net>
// Raphael Slinckx <rslinckx@gmail.com>
//
// Copyright (C) 2005 Novell, Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
//
using System;
using Mono.Unix;
using Beagle.Util;
namespace ImLogViewer {
public class ImLogViewer {
private static string highlight;
private static string search;
private static string path;
private static string client;
public static void Main (string[] args)
{
// I18N
Catalog.Init ("beagle", Beagle.Util.ExternalStringsHack.LocaleDir);
SystemInformation.SetProcessName ("beagle-imlogviewer");
ParseArgs (args);
ImClient imclient;
try {
imclient = (ImClient) Enum.Parse (typeof (ImClient), client, true);
} catch (Exception) {
Console.WriteLine ("ERROR: '{0}' is not a valid client name.", client);
Environment.Exit (3);
return;
}
new ImLogWindow (imclient, path, search, highlight);
}
private static void PrintUsageAndExit ()
{
Console.WriteLine ("USAGE: beagle-imlogviewer --client <CLIENT> [OPTIONS] <log file or directory>\n" +
"Options:\n" +
" --client\t\t\tClient that the log belongs to (e.g. gaim).\n" +
" --highlight-search\t\tWords to highlight in the buffer.\n" +
" --search\t\t\tSearch query to filter hits on.");
Environment.Exit (0);
}
private static void ParseArgs (string [] args)
{
if (args.Length < 1)
PrintUsageAndExit ();
for (int i = 0; i < args.Length; i++) {
switch (args [i]) {
case "-h":
case "--help":
PrintUsageAndExit ();
break;
case "--highlight-search":
highlight = args [i + 1];
i++;
break;
case "--search":
search = args [i + 1];
i++;
break;
case "--client":
client = args [i + 1];
i++;
break;
default:
if (args [i].StartsWith ("--")) {
Console.WriteLine ("WARN: Invalid option {0}", args [i]);
} else {
path = args [i];
}
break;
}
}
if (path == null) {
Console.WriteLine ("ERROR: Please specify a valid log path or log directory.");
Environment.Exit (1);
}
if (client == null) {
Console.WriteLine ("ERROR: Please specify a valid client name.");
Environment.Exit (2);
}
}
}
}
|