Add initial sketch to shill repository

BUG=chromium-os:12066
TEST=command-line

Change-Id: If1d01bf78fca80de4cc8a26e096e1967293d9738

Review URL: http://codereview.chromium.org//6575006
diff --git a/shill_main.cc b/shill_main.cc
new file mode 100644
index 0000000..beb1b04
--- /dev/null
+++ b/shill_main.cc
@@ -0,0 +1,70 @@
+// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <time.h>
+#include <string>
+#include <syslog.h>
+
+#include "shill/shill_logging.h"
+#include "shill/shill_daemon.h"
+#include "shill/dbus_control.h"
+
+using std::string;
+
+  /*
+DEFINE_string(config_dir, "",
+              "Directory to read confguration settings.");
+DEFINE_string(default_config_dir, "",
+              "Directory to read default configuration settings (Read Only).");
+  */
+namespace google {
+class LogSinkSyslog : public google::LogSink {
+ public:
+  LogSinkSyslog() {
+    openlog("shill",
+            LOG_PID,  // Options
+            LOG_LOCAL3);  // 5,6,7 are taken
+  }
+
+  virtual void send(LogSeverity severity, const char* /* full_filename */,
+                    const char* base_filename, int line,
+                    const struct ::tm* /* tm_time */,
+                    const char* message, size_t message_len) {
+    static const int glog_to_syslog[NUM_SEVERITIES] = {
+      LOG_INFO, LOG_WARNING, LOG_ERR, LOG_CRIT};
+    CHECK(severity < NUM_SEVERITIES && severity >= 0);
+
+    syslog(glog_to_syslog[severity],
+           "%s:%d %.*s",
+           base_filename, line, message_len, message);
+  }
+
+  virtual ~LogSinkSyslog() {
+    closelog();
+  }
+};
+}  // namespace google
+
+
+int main(int /* argc */, char** argv) {
+  /*
+  FilePath config_dir(FLAGS_config_dir);
+  FilePath default_config_dir(FLAGS_default_config_dir.empty() ?
+                              shill::Config::kShillDefaultPrefsDir :
+                              FLAGS_default_config_dir);
+  */
+  google::LogSinkSyslog syslog_sink;
+
+  google::InitGoogleLogging(argv[0]);
+  google::AddLogSink(&syslog_sink);
+  shill::Config config; /* (config_dir, default_config_dir) */
+
+  // TODO(pstew): This should be chosen based on config
+  shill::ControlInterface *control_interface = new shill::DBusControl();
+
+  shill::Daemon daemon(&config, control_interface);
+  daemon.Run();
+
+  return 0;
+}