]> rtime.felk.cvut.cz Git - sojka/lightdm.git/commitdiff
Merge with trunk
authorRobert Ancell <robert.ancell@canonical.com>
Mon, 8 Sep 2014 02:59:50 +0000 (14:59 +1200)
committerRobert Ancell <robert.ancell@canonical.com>
Mon, 8 Sep 2014 02:59:50 +0000 (14:59 +1200)
115 files changed:
.bzrignore
NEWS
common/configuration.c
configure.ac
debian/changelog
debian/po/af.po
debian/po/an.po
debian/po/ar.po
debian/po/ast.po
debian/po/az.po
debian/po/be.po
debian/po/bg.po
debian/po/bn.po
debian/po/bo.po
debian/po/br.po
debian/po/bs.po
debian/po/ca.po
debian/po/ca@valencia.po
debian/po/ce.po
debian/po/ckb.po
debian/po/cs.po
debian/po/cy.po
debian/po/da.po
debian/po/de.po
debian/po/el.po
debian/po/en_AU.po
debian/po/en_CA.po
debian/po/en_GB.po
debian/po/eo.po
debian/po/es.po
debian/po/et.po
debian/po/eu.po
debian/po/fa.po
debian/po/fi.po
debian/po/fo.po
debian/po/fr.po
debian/po/fr_CA.po
debian/po/fy.po
debian/po/gd.po
debian/po/gl.po
debian/po/gu.po
debian/po/he.po
debian/po/hi.po
debian/po/hr.po
debian/po/hu.po
debian/po/ia.po
debian/po/id.po
debian/po/is.po
debian/po/it.po
debian/po/ja.po
debian/po/kk.po
debian/po/kl.po
debian/po/km.po
debian/po/kn.po
debian/po/ko.po
debian/po/ku.po
debian/po/lb.po
debian/po/lt.po
debian/po/lv.po
debian/po/mhr.po
debian/po/mi.po
debian/po/ml.po
debian/po/mr.po
debian/po/ms.po
debian/po/my.po
debian/po/nb.po
debian/po/nl.po
debian/po/nn.po
debian/po/oc.po
debian/po/pa.po
debian/po/pl.po
debian/po/pt.po
debian/po/pt_BR.po
debian/po/ro.po
debian/po/ru.po
debian/po/sc.po
debian/po/sd.po
debian/po/shn.po
debian/po/si.po
debian/po/sk.po
debian/po/sl.po
debian/po/sq.po
debian/po/sr.po
debian/po/sv.po
debian/po/ta.po
debian/po/te.po
debian/po/tg.po
debian/po/th.po
debian/po/tl.po
debian/po/tr.po
debian/po/ug.po
debian/po/uk.po
debian/po/uz.po
debian/po/vi.po
debian/po/wae.po
debian/po/zh_CN.po
debian/po/zh_HK.po
debian/po/zh_TW.po
liblightdm-gobject/greeter.c
src/greeter.c
src/lightdm.c
src/login1.c
src/login1.h
src/process.c
src/session-child.c
src/session.c
src/unity-system-compositor.c
tests/Makefile.am
tests/scripts/multi-seat-seat0-non-graphical.conf [new file with mode: 0644]
tests/src/Makefile.am
tests/src/libsystem.c
tests/src/test-gobject-greeter.c
tests/src/test-mir-greeter.c [deleted file]
tests/src/test-runner.c
tests/test-multi-seat-seat0-non-graphical [new file with mode: 0755]

index 0f66e00313026f9b699f081e305b36304be6a078..2d76ad9fecffe4e4e88d24004092ce094d748446 100644 (file)
@@ -65,7 +65,6 @@ tests/src/plymouth
 tests/src/test-gobject-greeter
 tests/src/test-greeter-wrapper
 tests/src/test-guest-wrapper
-tests/src/test-mir-greeter
 tests/src/test-qt4-greeter
 tests/src/test-qt5-greeter
 tests/src/test-runner
diff --git a/NEWS b/NEWS
index e56a4b15b766e472957cf62ce910f4816646c3c5..d2240c5295e2b7b86e0639038295fc76ba4f911c 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,9 @@
+Overview of changes in lightdm 1.11.8
+
+    * Rework logind code that gets session ID. The previous method was racy
+      and a change in lightdm 1.11.7 led to a lockup when this race occurred.
+    * Handle CanGraphical property on logind seats
+
 Overview of changes in lightdm 1.11.7
 
     * Use logind to provide the list of seats to use. Deprecate the old method
index 4453398fe60e2cf6b275f6536293d9792d4e705a..bf08c7d9cad83e3101511e65adad8a291a3f005d 100644 (file)
@@ -168,47 +168,50 @@ load_config_directories (const gchar * const *dirs, GList **messages)
 gboolean
 config_load_from_standard_locations (Configuration *config, const gchar *config_path, GList **messages)
 {
-    gchar *config_d_dir = NULL;
-    gboolean explicit_config = FALSE;
+    gchar *config_d_dir = NULL, *path;
     gboolean success = TRUE;
     GError *error = NULL;
 
+    g_return_val_if_fail (config->priv->dir == NULL, FALSE);
+
     load_config_directories (g_get_system_data_dirs (), messages);
     load_config_directories (g_get_system_config_dirs (), messages);
 
     if (config_path)
     {
+        path = g_strdup (config_path);
         config->priv->dir = path_make_absolute (g_path_get_basename (config_path));
-        explicit_config = TRUE;
     }
     else
     {
         config->priv->dir = g_strdup (CONFIG_DIR);
         config_d_dir = g_build_filename (config->priv->dir, "lightdm.conf.d", NULL);
-        config_path = g_build_filename (config->priv->dir, "lightdm.conf", NULL);
+        path = g_build_filename (config->priv->dir, "lightdm.conf", NULL);
     }
 
     if (config_d_dir)
         load_config_directory (config_d_dir, messages);
-    g_free (config_d_dir);
 
     if (messages)
-        *messages = g_list_append (*messages, g_strdup_printf ("Loading configuration from %s", config_path));
-    if (!config_load_from_file (config, config_path, &error))
+        *messages = g_list_append (*messages, g_strdup_printf ("Loading configuration from %s", path));
+    if (!config_load_from_file (config, path, &error))
     {
         gboolean is_empty;
 
         is_empty = error && g_error_matches (error, G_FILE_ERROR, G_FILE_ERROR_NOENT);
 
-        if (explicit_config || !is_empty)
+        if (config_path || !is_empty)
         {
             if (error)
-                g_printerr ("Failed to load configuration from %s: %s\n", config_path, error->message);
+                g_printerr ("Failed to load configuration from %s: %s\n", path, error->message);
             success = FALSE;
         }
     }
     g_clear_error (&error);
 
+    g_free (config_d_dir);
+    g_free (path);
+
     return success;
 }
 
index a67bfd5d06eb4c4d5673a387cdc4c6c572fd86b8..e2be838f3720fa1d5e13c0f64ed3e66992dac3c5 100644 (file)
@@ -1,6 +1,6 @@
 dnl Process this file with autoconf to produce a configure script.
 
-AC_INIT(lightdm, 1.11.7)
+AC_INIT(lightdm, 1.11.8)
 AC_CONFIG_MACRO_DIR(m4)
 AC_CONFIG_HEADER(config.h)
 AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz foreign])
index 4b3ab0c8ba789f863dcb046f1b798a2836835e70..c7b568e26ee9eff1ea3ebfd4ac37d5416cf5c496 100644 (file)
@@ -1,3 +1,13 @@
+lightdm (1.11.8-0ubuntu1) utopic; urgency=medium
+
+  * New upstream release:
+    - Rework logind code that gets session ID. The previous method was racy
+      and a change in lightdm 1.11.7 led to a lockup when this race occurred.
+      (LP: #1364725)
+    - Handle CanGraphical property on logind seats
+
+ -- Robert Ancell <robert.ancell@canonical.com>  Wed, 03 Sep 2014 17:26:36 +1200
+
 lightdm (1.11.7-0ubuntu1) utopic; urgency=medium
 
   * New upstream release:
index 6da0d130a3ee14fd72f26d0bd6eb61c3d447f04f..6aff8195797c51895fe466d52f141716608d6ef0 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index e49f4393d6ceffa45c436e69cf7c615ddfca54c6..ec30edd001dc2aebee10eae0ab64008c4a82965d 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 96f876cf45ba7e73fee40e3201f2ae1f97d33ac4..582d88740b914d8d1bf94f168b4e72b61d5e252b 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index db46a9ff45addadb416bd95479d3809056dfec31..e631470e5d4cd656da41faf2656755ecaa07f084 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index abb9fda145e07f1978133ae65cf427f653df6b0b..25666b1d690830bafe413a07cfd5b41e7ee10ad2 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 80ae933f7c91b3259fde9229de5d85d16e00d4b8..746321095d815d758a63789814f1f26503b56ae4 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index ff0c0fd5be86ef9c55049d57731b5603b03c46f2..956fa9cddf15c735aef49165d0d347565b7e5129 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 8b74ca02f48f5fdb8706e87ad572760dfa2c21a9..c9c376e4880b3fb87a954a0a0f85c53045f9a7fd 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index a7dcc94a9fc42d356a5504c7d4dc8f58b4e8f9b2..8ab22524a1020fb6baba945256e9f2fdb966912d 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 917fad55c65fcad8c018e0b0e5746b6785ca2a82..5422238fdba12a4c5629e68c710fa25c7d0efa3b 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index b08f9dfd0e33df3ad7ec3fc9c0219c953ea6c6e6..ea31d12f10e2bbdd1b2bebf479de33c65f1d9a1c 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 8a05d76b05473b92bb714991f296840a48f72dfb..cdb61cf97d4272f932b7addbcd0d3f194231efa9 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index e6a7b6dd39e679031acc4c2bd7264bdb53e08b73..ec5c96edfc2d548794becd6bd97de5a135166673 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index aa498266b93f7a1ac7d242f4d4cd888f842a8cd4..0a35fd673e88171c96a3fb2897e82193bb3723b7 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index b67d7a443e5bc83a1316bcb4999e6dfcbc15a1c1..f0fbcf93d2ab0adf1cd51cd2dbefa96d2a4ba34f 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index a8a74bbd7f633f9655b9bae148e9b6af53a01a54..ed14ccccd56bd004c03e9a05ac50a0f5558bdcc1 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index b97b6272c0ab88452a2f7bb44ce0cde6e475c4a7..3d351f1bb09f4e29e66fd236098a2a89f3ca37a5 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 5a1b3ee00aeea0c9ded8e053e430b6281020507b..87f990e73f554a8b2028972c985ff87cac5fcd1b 100644 (file)
@@ -15,8 +15,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index d091dd1464b9fc34f4f920263d597e7bf0c8e0ef..7298f591777be88facfc383f96148f52e78c7406 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 1ec7a89f8394d126b322de452c56da2d25c252b1..dc0890bb55f82e0a98a876c8b6ad5ebca73f5eaf 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 53f5e5436f902118b585312b9c8ac4df0c956ad5..717b3673af24fb157e4acfce54f3573fa6767551 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index be0e441d64a08217efde712624732ef497595ee9..9e1f5309db7f39cad00a0184d7a6c14394ecf4af 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index d1fdc1cff265a39f404cb1fed9c95526753280cb..38a40d60f47a5dce8b333b8f32d73a653e84b3c5 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 4a3d585a1f7416a789f45a97409448480c7dbc80..d57077c644503ffb168f497c2411554e07849bc6 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 8956eadefd572fcc15187362d12eeaadc366b7c6..48315641da4489473c2a524a563d8f8befde7657 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index a3f399ddc5ed0529e4bd5fd052c42bbb3ba37e8b..fc3f1a0fbb4429de2564505f777397fd58abe556 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 1c11cb3e9cf3e78704ea61e6e6848a5268847710..9bdcf1357ea77cfdfd37beb98eb6bb95cd4a3c1a 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index cd7aa35ae2783f72b4f694451b6bb079b5df5207..4f59cb2fed10d39b8650171bef9b05e904b74499 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 505e1064b425ae9f31352397e1f3ab5ee2275fbd..490c80bdc0ffe39e227568cc766efb8b68a87800 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 1fa90a91c175a492ef2892df83bc467544fabc4f..1bf2bb9ba8f052a7e5f62f229e30ce5040398dd8 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index e0d01e5b8a1ecb2785ef28ea35c300427d6c4692..38804a29a1f353b20c8e4c2acbd54fde55bd1d57 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 464bfff71f5959313f29ce85982df320cf510770..d3495d63fea75286116e7f0fcd69c2a9c55b2c99 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index eda8be9c045c900ff4753e7a6f9f15459498fc99..f6bb99b0764f789d78439e639fbdea905e81674c 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 13051892735fb9038327a9ebc7ae41a9c30df939..35a4cf59a3528f22c5da511e17b5edb809d2044c 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 80ebfd3a55c5c60648c2b52448e078c76b410531..b85fda9350cc229f2bc599c84036d7c22d2fb915 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 7166f48165528f122ace944c2e7ff925ba482da4..1b3439143a5549ea84e808302f7eef8d2599d22b 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 2ffc3e95a784d6856e02f98fb00661e4784f9b69..1603b7c5ef1149a2f236b2388dec7436c272df10 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 6f7e08ba7ec48e339a504221f5bd389df793d35a..c262bef41aa0f7da877d00c4239ca82f670efe2c 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index bc8493b979fd986b6e375ed6ef124455a096630a..3ff0a129ce474e4a42de117383ef6e6a8b4ab561 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 4d02a6146856583a429735431c41622882a77ce6..8ca628781f8486561db9053849038c9319420867 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index fc6a0f63e0fc450e63999a6db9467f9dae17419d..7ad3b66a6f3e24221f10ed8ce14b3ac8115c89c4 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 703f9474813002f19f551e525ce3a9788726aea8..67a31ab55fdee6ef6fd82c6c042831d8876e0139 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 93d4a48c3b7c57fb40a734cc7eb245570ae66d0f..7f04a22ecca62738eadbb3d1142f9a30e7b315e0 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 6ae3c5a794d4b197423de23329246ee7d320b3c5..4e5ae45fae7030843d4420c02a5915b1a02db77c 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index d296e0c4f0697ecd806ccb6dc79fbe694ad44094..154c90197c9dc952421375dfcf1c5aec7615cff6 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 602a33f841e958e2998e265b94746a7ee6adf0e0..c0020313162266c8901515f6459b00ddf332df94 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 78ca5f88443bae66cd38482d7dc2b7612c3fa720..0e0305e723f3520adfd3366f39a9af650af684d6 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 7d70344ef3d28853eb1a59e892f5c20abedba793..e1a9450695d875f2e0fbe192cd83e72cf8331aa4 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index a982d4d0928eedf9341df3580ad5186914d81520..b490f39c0e7fdc40875a5b565e06af35cf139fcf 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index f6bf1c31533fa1bea524e52db3d18d93b9e4bba3..654e6babe6f978ea079f751d4796a38b05cb57d5 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 3fd8ee0c87fae84f1cf8e2225b45ee4d2b1af081..2a9c10d31ba73a9a41ea82d706588a7857a26c74 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index e83a2ec53213aff4cd935e9f2e0c531b8fc21cbf..5394f9cdf1a436746a07375a44e5a920deac0532 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 0f6dc015821e0be825aae664a7f4aeb6b5e603ff..6f98aabc79faf4717ac3f28cc075822fb6abff19 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index cfbec9773be05e69c489491474dcb64f8dd70920..1306bcbfa66ea91c02d74c2902286bfec4e93361 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 32f3be3b0e931fc753453c3ca7d617092dc519e4..eca8dc5c426bf64ddc1f54393f099bf117e57e7a 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index a38b45b63bc2eef00900420aba2d3e50555de360..ce949236d04d132720eb75c2a322b81f6f72379d 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index fa760b6bafd13e88de5981a4b2048d317cbca903..978176ff4cdcd6e6487f8c969f9c0f8741e77cfc 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 9dea731d7749a02ed0aa918ce886452eccb69d8e..bb865dac0fb68ca7360a228442dfc32d2cf07821 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 6618f427de4867c8ea732d55581a3602b5ee8615..75a47e887e2100175d6a84eeeedf887703868ad1 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 9af512ae6a2f4139c36b02c851770e6357ed3283..46a315a197b04e774dcc8a73ea23d06344da5963 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index c3fcdedb8e73a07faefa0dd84ca65bd31af01331..6e153db898b194120cd197110a7c0f5949de44df 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 49116ed593f6af7ba78332415bba4e8f9388e30e..a853fc3474cc8d13aa428b897270c85ba20e6619 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 06c402bf89de3daee04dd381b1dac1508cc26be5..638401f3a615cd8c1a0be0bba9e344c036778c20 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index fbbfdfa997333e4754302c49eddba039c4cdb43b..e6db1e549680a21985ad647cfc91fd166ec3e342 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 3d692701f8c6a165e053a9e5a384e6c3e8e5e92a..5bc5a3f6c3ce7e2aab0b4bfaa4ddefeab5fda137 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 1d2f064efc513442eb792902cb17b02a17c117b9..63d1a4c5037a410e8f24ec1d8f25fb090ff8a216 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 077a99c83a5287618907b518d40e3bb58d567a73..587069d7a49b22ff7460b20eb004ef7d7d58e820 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 8ea4f403d52b1eb7713a17e15a986e3e622ccf4e..463e28b61e475f9fc80b99aed4d2f62957379c9d 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index dbc4673dee84763db75a8d5e05535d28db508c9e..d032b4f0ad956106232ff84ab199db5234d823e5 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index affc4941ef314848ea6d8b497f0078a725556b0d..8977982e66374e330c4a0ceac30c26e06e3c7ee5 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 4dcbafc7714bdcbfacb5fa4186bf1a56c0cfed82..9f3b2ede4cd050c0041edb80a3fa9699426071c7 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 4e74d66b34c36de1c82fe3352a76def323af1772..a5a5503006a9f1662f508b0c572ab9f64c97ff40 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 44d34da74f9890e4d5d8edf4c253e2a7757f5567..18b0abacc3b45ea9c706c1c1f6ce1e53b417c5ea 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index abdda6afcf610aac256f8677cdc5900a4abf19de..27420b851e1882e6946b7d45015d18fca52f0ece 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 951341d2b9f609857d8aca98afd3d0d00c925080..38783d564bd3bf60e70467e2103b83094d4f9ee9 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index ca1b7106d7ee1bd731c9811761962d3cda70077e..057ec935bf980705cbdbce70827c4651f6243e26 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index a288f28525cd15cada92f4f2ec0f3fdc08d7b7d9..8cfcbd90c070ce6200d81fb8f9968cdd5e1eb99d 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index ce01da8ce3b820db070b20fba6e350ce935991ff..d187749e439df00c9fea54492a046019c96887be 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:07+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 "Language: sr\n"
 
 #. Type: select
index 1420ccf42b7d261869edf94ff238363cdc7d9393..cda1ab38821154663e447d99ba792c44e6d01c6d 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index c58131038d0289fe1b3100ecc5ee86a1aa9ec1fa..05d377ded5c0180b1fdaa8a9cc9fd52ae02531b3 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index c5074839e74a9e1b67ca97a38bc2218c8b60f44f..d5ae5162b692c7d1d798d099326391e8a65cfc3b 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index b66eba2cd631e1100b649167ccc9e0f966105e39..855e3cc4de9e81340362831d49b2659def957c4a 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 156d35d45b1f40f7f77cb228ffda79f488ef329f..a6d96d0c3cef6709d3a38ee2d5d24fa561da4bd3 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 12dc012802ebb44f241190f2c178d31277179e9f..d2ba27874ae4571e4e0cebf6d98d7a8aa92ef2cc 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 1dff3419fa56098652bb7053aecdec5003e3f000..ead841ed3d60399c9180310add97c4b03e9a8a6d 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index c54afef928f68cd7d2c17eb34c7778de1ec8d99c..b10be54fcf4fc22a259bc006818b5c1086c3b002 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index f320a3e291c3db6b4ff172eedacf3a04195294d2..77abc99d9103016276727f4139b020d2cab1234a 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index d70f6cc0f4148f60ac90861578bf5a22207695e6..2374efd6d9ddd16c7c380af9a1b325453a1e24b6 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 249a5cf8659b62c5d3a4dc57ff49d6e52b21b751..0bb785c07fb2692751615349551671b164f4fd35 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index aa1a196d47367780840d67110669134ffbf924fc..a4392526edd9d78c36e4189b001260982c526040 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index b8e5b2ee7abfcc687384c0edcf72a8fa695e6631..9dcfc47bd6fd5274a070191d98c567a81a636a13 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index c9cab6f6c11bfdf8536d9dcca301de49c7345dfd..c73126e6654c858449a8d5572a4778ea0bb5a135 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index ec45a326608716b17a4b1b52864c381cf789c3b0..f2500266b6dbdb7ea2a2a11d370c0f855da1c718 100644 (file)
@@ -14,8 +14,8 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2014-08-25 07:08+0000\n"
-"X-Generator: Launchpad (build 17163)\n"
+"X-Launchpad-Export-Date: 2014-09-03 06:08+0000\n"
+"X-Generator: Launchpad (build 17196)\n"
 
 #. Type: select
 #. Description
index 13fdada9f7776ea29f6efc2559bc45acf0dba84f..c2d2c6938eccdd3005ca3f5f6d43a27af1842faa 100644 (file)
@@ -314,7 +314,8 @@ static gboolean
 send_message (LightDMGreeter *greeter, guint8 *message, gsize message_length)
 {
     LightDMGreeterPrivate *priv = GET_PRIVATE (greeter);
-    GIOStatus status;
+    gchar *data;
+    gsize data_length;
     GError *error = NULL;
     guint32 stated_length;
 
@@ -333,15 +334,28 @@ send_message (LightDMGreeter *greeter, guint8 *message, gsize message_length)
         return FALSE;
     }
 
-    status = g_io_channel_write_chars (priv->to_server_channel, (gchar *) message, message_length, NULL, &error);
-    if (error)
-        g_warning ("Error writing to daemon: %s", error->message);
-    g_clear_error (&error);
-    if (status != G_IO_STATUS_NORMAL)
-        return FALSE;
+    data = (gchar *) message;
+    data_length = message_length;
+    while (data_length > 0)
+    {
+        GIOStatus status;
+        gsize n_written;
+
+        status = g_io_channel_write_chars (priv->to_server_channel, data, data_length, &n_written, &error);
+        if (error)
+            g_warning ("Error writing to daemon: %s", error->message);
+        g_clear_error (&error);
+        if (status != G_IO_STATUS_NORMAL)
+            return FALSE;
+        data_length -= n_written;
+        data += n_written;
+    }
 
     g_debug ("Wrote %zi bytes to daemon", message_length);
-    g_io_channel_flush (priv->to_server_channel, NULL);
+    g_io_channel_flush (priv->to_server_channel, &error);
+    if (error)
+        g_warning ("Failed to flush data to daemon: %s", error->message);
+    g_clear_error (&error);
 
     return TRUE;
 }
index 9e8829df275bc99ccbe5da512fa1bd75a7181162..bfc77094666160a8c1b13b10a0852e0b46842b65 100644 (file)
@@ -183,13 +183,31 @@ int_length (void)
 static void
 write_message (Greeter *greeter, guint8 *message, gsize message_length)
 {
+    gchar *data;
+    gsize data_length;
     GError *error = NULL;
 
-    g_io_channel_write_chars (greeter->priv->to_greeter_channel, (gchar *) message, message_length, NULL, &error);
+    data = (gchar *) message;
+    data_length = message_length;
+    while (data_length > 0)
+    {
+        GIOStatus status;
+        gsize n_written;
+
+        status = g_io_channel_write_chars (greeter->priv->to_greeter_channel, data, data_length, &n_written, &error);
+        if (error)
+            l_warning (greeter, "Error writing to greeter: %s", error->message);
+        g_clear_error (&error);
+        if (status != G_IO_STATUS_NORMAL)
+            return;
+        data_length -= n_written;
+        data += n_written;
+    }
+
+    g_io_channel_flush (greeter->priv->to_greeter_channel, &error);
     if (error)
-        l_warning (greeter, "Error writing to greeter: %s", error->message);
+        l_warning (greeter, "Failed to flush data to greeter: %s", error->message);
     g_clear_error (&error);
-    g_io_channel_flush (greeter->priv->to_greeter_channel, NULL);
 }
 
 static void
index 3193008b810044d0dd866f6a4f893bfb5c1b3d39..870ff8102db785559291940ad9ddadec7c3661d3 100644 (file)
@@ -68,6 +68,8 @@ typedef struct
 
 #define LIGHTDM_BUS_NAME "org.freedesktop.DisplayManager"
 
+static gboolean update_login1_seat (Login1Seat *login1_seat);
+
 static void
 log_cb (const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer data)
 {
@@ -1013,8 +1015,6 @@ remove_login1_seat (Login1Seat *login1_seat)
         seat_stop (seat);
 }
 
-static gboolean update_login1_seat (Login1Seat *login1_seat);
-
 static void
 seat_stopped_cb (Seat *seat, Login1Seat *login1_seat)
 {
@@ -1057,16 +1057,20 @@ login1_can_graphical_changed_cb (Login1Seat *login1_seat)
 static void
 login1_service_seat_added_cb (Login1Service *service, Login1Seat *login1_seat)
 {
+    if (login1_seat_get_can_graphical (login1_seat))
+        g_debug ("Seat %s added from logind", login1_seat_get_id (login1_seat));
+    else
+        g_debug ("Seat %s added from logind without graphical output", login1_seat_get_id (login1_seat));
+
     g_signal_connect (login1_seat, "can-graphical-changed", G_CALLBACK (login1_can_graphical_changed_cb), NULL);
-    login1_can_graphical_changed_cb (login1_seat);
+    update_login1_seat (login1_seat);
 }
 
 static void
 login1_service_seat_removed_cb (Login1Service *service, Login1Seat *login1_seat)
 {
+    g_debug ("Seat %s removed from logind", login1_seat_get_id (login1_seat));
     g_signal_handlers_disconnect_matched (login1_seat, G_SIGNAL_MATCH_FUNC, 0, 0, NULL, login1_can_graphical_changed_cb, NULL);
-
-    g_debug ("Seat removed from logind: %s", login1_seat_get_id (login1_seat));
     remove_login1_seat (login1_seat);
 }
 
index dd9f3935117f3facb2c41373ec971960df0e2f10..ad922a5a6a892be826f52d04f0cf15a752c15cdf 100644 (file)
@@ -16,6 +16,8 @@
 #include "login1.h"
 
 #define LOGIN1_SERVICE_NAME "org.freedesktop.login1"
+#define LOGIN1_OBJECT_NAME "/org/freedesktop/login1"
+#define LOGIN1_MANAGER_INTERFACE_NAME "org.freedesktop.login1.Manager"
 
 enum {
     SEAT_ADDED,
@@ -71,169 +73,6 @@ G_DEFINE_TYPE (Login1Seat, login1_seat, G_TYPE_OBJECT);
 
 static Login1Service *singleton = NULL;
 
-gchar *
-login1_get_session_id (void)
-{
-    GDBusConnection *bus;
-    GVariant *result;
-    gchar *session_path;
-    GError *error = NULL;
-
-    bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
-    if (error)
-        g_warning ("Failed to get system bus: %s", error->message);
-    g_clear_error (&error);
-    if (!bus)
-        return NULL;
-    result = g_dbus_connection_call_sync (bus,
-                                          LOGIN1_SERVICE_NAME,
-                                          "/org/freedesktop/login1",
-                                          "org.freedesktop.login1.Manager",
-                                          "GetSessionByPID",
-                                          g_variant_new ("(u)", getpid()),
-                                          G_VARIANT_TYPE ("(o)"),
-                                          G_DBUS_CALL_FLAGS_NONE,
-                                          -1,
-                                          NULL,
-                                          &error);
-    g_object_unref (bus);
-
-    if (error)
-        g_warning ("Failed to open login1 session: %s", error->message);
-    g_clear_error (&error);
-    if (!result)
-        return NULL;
-
-    g_variant_get (result, "(o)", &session_path);
-    g_variant_unref (result);
-    g_debug ("Got login1 session id: %s", session_path);
-
-    return session_path;
-}
-
-void
-login1_lock_session (const gchar *session_path)
-{
-    GDBusConnection *bus;
-    GError *error = NULL;
-
-    g_return_if_fail (session_path != NULL);
-
-    g_debug ("Locking login1 session %s", session_path);
-
-    bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
-    if (error)
-        g_warning ("Failed to get system bus: %s", error->message);
-    g_clear_error (&error);
-    if (!bus)
-        return;
-
-    if (session_path)
-    {
-        GVariant *result;
-
-        result = g_dbus_connection_call_sync (bus,
-                                              LOGIN1_SERVICE_NAME,
-                                              session_path,
-                                              "org.freedesktop.login1.Session",
-                                              "Lock",
-                                              g_variant_new ("()"),
-                                              G_VARIANT_TYPE ("()"),
-                                              G_DBUS_CALL_FLAGS_NONE,
-                                              -1,
-                                              NULL,
-                                              &error);
-        if (error)
-            g_warning ("Error locking login1 session: %s", error->message);
-        g_clear_error (&error);
-        if (result)
-            g_variant_unref (result);
-    }
-    g_object_unref (bus);
-}
-
-void
-login1_unlock_session (const gchar *session_path)
-{
-    GDBusConnection *bus;
-    GError *error = NULL;
-
-    g_return_if_fail (session_path != NULL);
-
-    g_debug ("Unlocking login1 session %s", session_path);
-
-    bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
-    if (error)
-        g_warning ("Failed to get system bus: %s", error->message);
-    g_clear_error (&error);
-    if (!bus)
-        return;
-
-    if (session_path)
-    {
-        GVariant *result;
-
-        result = g_dbus_connection_call_sync (bus,
-                                              LOGIN1_SERVICE_NAME,
-                                              session_path,
-                                              "org.freedesktop.login1.Session",
-                                              "Unlock",
-                                              g_variant_new ("()"),
-                                              G_VARIANT_TYPE ("()"),
-                                              G_DBUS_CALL_FLAGS_NONE,
-                                              -1,
-                                              NULL,
-                                              &error);
-        if (error)
-            g_warning ("Error unlocking login1 session: %s", error->message);
-        g_clear_error (&error);
-        if (result)
-            g_variant_unref (result);
-    }
-    g_object_unref (bus);
-}
-
-void
-login1_activate_session (const gchar *session_path)
-{
-    GDBusConnection *bus;
-    GError *error = NULL;
-
-    g_return_if_fail (session_path != NULL);
-
-    g_debug ("Activating login1 session %s", session_path);
-
-    bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
-    if (error)
-        g_warning ("Failed to get system bus: %s", error->message);
-    g_clear_error (&error);
-    if (!bus)
-        return;
-
-    if (session_path)
-    {
-        GVariant *result;
-
-        result = g_dbus_connection_call_sync (bus,
-                                              LOGIN1_SERVICE_NAME,
-                                              session_path,
-                                              "org.freedesktop.login1.Session",
-                                              "Activate",
-                                              g_variant_new ("()"),
-                                              G_VARIANT_TYPE ("()"),
-                                              G_DBUS_CALL_FLAGS_NONE,
-                                              -1,
-                                              NULL,
-                                              &error);
-        if (error)
-            g_warning ("Error activating login1 session: %s", error->message);
-        g_clear_error (&error);
-        if (result)
-            g_variant_unref (result);
-    }
-    g_object_unref (bus);
-}
-
 Login1Service *
 login1_service_get_instance (void)
 {
@@ -417,9 +256,9 @@ login1_service_connect (Login1Service *service)
 
     service->priv->signal_id = g_dbus_connection_signal_subscribe (service->priv->connection,
                                                                    LOGIN1_SERVICE_NAME,
-                                                                   "org.freedesktop.login1.Manager",
+                                                                   LOGIN1_MANAGER_INTERFACE_NAME,
                                                                    NULL,
-                                                                   "/org/freedesktop/login1",
+                                                                   LOGIN1_OBJECT_NAME,
                                                                    NULL,
                                                                    G_DBUS_SIGNAL_FLAGS_NONE,
                                                                    signal_cb,
@@ -428,8 +267,8 @@ login1_service_connect (Login1Service *service)
 
     result = g_dbus_connection_call_sync (service->priv->connection,
                                           LOGIN1_SERVICE_NAME,
-                                          "/org/freedesktop/login1",
-                                          "org.freedesktop.login1.Manager",
+                                          LOGIN1_OBJECT_NAME,
+                                          LOGIN1_MANAGER_INTERFACE_NAME,
                                           "ListSeats",
                                           g_variant_new ("()"),
                                           G_VARIANT_TYPE ("(a(so))"),
@@ -485,6 +324,105 @@ login1_service_get_seat (Login1Service *service, const gchar *id)
     return NULL;
 }
 
+void
+login1_service_lock_session (Login1Service *service, const gchar *session_id)
+{
+    GError *error = NULL;
+
+    g_return_if_fail (service != NULL);
+    g_return_if_fail (session_id != NULL);
+
+    g_debug ("Locking login1 session %s", session_id);
+
+    if (session_id)
+    {
+        GVariant *result;
+
+        result = g_dbus_connection_call_sync (service->priv->connection,
+                                              LOGIN1_SERVICE_NAME,
+                                              LOGIN1_OBJECT_NAME,
+                                              LOGIN1_MANAGER_INTERFACE_NAME,
+                                              "LockSession",
+                                              g_variant_new ("(s)", session_id),
+                                              G_VARIANT_TYPE ("()"),
+                                              G_DBUS_CALL_FLAGS_NONE,
+                                              -1,
+                                              NULL,
+                                              &error);
+        if (error)
+            g_warning ("Error locking login1 session: %s", error->message);
+        g_clear_error (&error);
+        if (result)
+            g_variant_unref (result);
+    }
+}
+
+void
+login1_service_unlock_session (Login1Service *service, const gchar *session_id)
+{
+    GError *error = NULL;
+
+    g_return_if_fail (service != NULL);
+    g_return_if_fail (session_id != NULL);
+
+    g_debug ("Unlocking login1 session %s", session_id);
+
+    if (session_id)
+    {
+        GVariant *result;
+
+        result = g_dbus_connection_call_sync (service->priv->connection,
+                                              LOGIN1_SERVICE_NAME,
+                                              LOGIN1_OBJECT_NAME,
+                                              LOGIN1_MANAGER_INTERFACE_NAME,
+                                              "UnlockSession",
+                                              g_variant_new ("(s)", session_id),
+                                              G_VARIANT_TYPE ("()"),
+                                              G_DBUS_CALL_FLAGS_NONE,
+                                              -1,
+                                              NULL,
+                                              &error);
+        if (error)
+            g_warning ("Error unlocking login1 session: %s", error->message);
+        g_clear_error (&error);
+        if (result)
+            g_variant_unref (result);
+    }
+}
+
+void
+login1_service_activate_session (Login1Service *service, const gchar *session_id)
+{
+    GError *error = NULL;
+
+    g_return_if_fail (service != NULL);
+    g_return_if_fail (session_id != NULL);
+
+    g_debug ("Activating login1 session %s", session_id);
+
+    if (session_id)
+    {
+        GVariant *result;
+
+        result = g_dbus_connection_call_sync (service->priv->connection,
+                                              LOGIN1_SERVICE_NAME,
+                                              LOGIN1_OBJECT_NAME,
+                                              LOGIN1_MANAGER_INTERFACE_NAME,
+                                              "ActivateSession",
+                                              g_variant_new ("(s)", session_id),
+                                              G_VARIANT_TYPE ("()"),
+                                              G_DBUS_CALL_FLAGS_NONE,
+                                              -1,
+                                              NULL,
+                                              &error);
+        if (error)
+            g_warning ("Error activating login1 session: %s", error->message);
+        g_clear_error (&error);
+        if (result)
+            g_variant_unref (result);
+    }
+}
+
 static void
 login1_service_init (Login1Service *service)
 {
index af69ada62333657d6deb02448c176a7213eabe7b..416632f7a840302be68dfb0e046124dab438dae3 100644 (file)
 
 G_BEGIN_DECLS
 
-gchar *login1_get_session_id (void);
-
-void login1_lock_session (const gchar *session_path);
-
-void login1_unlock_session (const gchar *session_path);
-
-void login1_activate_session (const gchar *session_path);
-
 #define LOGIN1_SEAT_TYPE (login1_seat_get_type())
 #define LOGIN1_SEAT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), LOGIN1_SEAT_TYPE, Login1Seat));
 
@@ -73,6 +65,12 @@ GList *login1_service_get_seats (Login1Service *service);
 
 Login1Seat *login1_service_get_seat (Login1Service *service, const gchar *id);
 
+void login1_service_lock_session (Login1Service *service, const gchar *session_id);
+
+void login1_service_unlock_session (Login1Service *service, const gchar *session_id);
+
+void login1_service_activate_session (Login1Service *service, const gchar *session_id);
+
 const gchar *login1_seat_get_id (Login1Seat *seat);
 
 gboolean login1_seat_get_can_graphical (Login1Seat *seat);
index 48811de13c3b12b44020de326aa481f5b5dfb4aa..4328dcd067df19b4a9b6364f6f649c5aebe87c03 100644 (file)
@@ -177,7 +177,7 @@ process_start (Process *process, gboolean block)
     gchar **argv;
     gchar **env_keys, **env_values;
     guint i, env_length;
-    GList *link;
+    GList *keys, *link;
     pid_t pid;
     int log_fd = -1;
     GError *error = NULL;
@@ -211,11 +211,13 @@ process_start (Process *process, gboolean block)
     env_length = g_hash_table_size (process->priv->env);
     env_keys = g_malloc (sizeof (gchar *) * env_length);
     env_values = g_malloc (sizeof (gchar *) * env_length);
-    for (i = 0, link = g_hash_table_get_keys (process->priv->env); i < env_length; i++, link = link->next)
+    keys = g_hash_table_get_keys (process->priv->env);
+    for (i = 0, link = keys; i < env_length; i++, link = link->next)
     {
         env_keys[i] = link->data;
         env_values[i] = g_hash_table_lookup (process->priv->env, env_keys[i]);
     }
+    g_list_free (keys);
 
     pid = fork ();
     if (pid == 0)
index f8fd3eaf3abd3a6189074be6db184f6659827007..98a973c080197f6ef27d84ee514d27d91f82ab96 100644 (file)
@@ -243,8 +243,8 @@ session_child_run (int argc, char **argv)
     XAuthority *x_authority = NULL;
     gchar *x_authority_filename;
     GDBusConnection *bus;
+    const gchar *login1_session = NULL;
     gchar *console_kit_cookie = NULL;
-    gchar *login1_session = NULL;
     const gchar *locale_value;
     gchar *locale_var;
     static const gchar * const locale_var_names[] = {
@@ -545,9 +545,13 @@ session_child_run (int argc, char **argv)
     }
 
     /* Check what logind session we are, or fallback to ConsoleKit */
-    login1_session = login1_get_session_id ();
+    login1_session = pam_getenv (pam_handle, "XDG_SESSION_ID");
     if (login1_session)
+    {
         write_string (login1_session);
+        if (version >= 2)
+            write_string (NULL);
+    }
     else
     {
         g_variant_builder_init (&ck_parameters, G_VARIANT_TYPE ("(a(sv))"));
@@ -569,6 +573,8 @@ session_child_run (int argc, char **argv)
         else
             g_variant_builder_add (&ck_parameters, "(sv)", "is-local", g_variant_new_boolean (TRUE));
         console_kit_cookie = ck_open_session (&ck_parameters);
+        if (version >= 2)
+            write_string (NULL);
         write_string (console_kit_cookie);
         if (console_kit_cookie)
         {
index 4e5060bf601ee7cf4f7b9c40feef932371b6fbbe..5169bbdaa759ad1aa64979750085483fc6f1d48a 100644 (file)
@@ -626,7 +626,7 @@ session_real_start (Session *session)
     close (from_child_input);
 
     /* Indicate what version of the protocol we are using */
-    version = 1;
+    version = 2;
     write_data (session, &version, sizeof (version));
 
     /* Send configuration */
@@ -805,10 +805,8 @@ session_real_run (Session *session)
     for (i = 0; i < argc; i++)
         write_string (session, session->priv->argv[i]);
 
-    if (login1_service_get_is_connected (login1_service_get_instance ()))
-        session->priv->login1_session = read_string_from_child (session);
-    if (!session->priv->login1_session)
-        session->priv->console_kit_cookie = read_string_from_child (session);
+    session->priv->login1_session = read_string_from_child (session);
+    session->priv->console_kit_cookie = read_string_from_child (session);
 }
 
 void
@@ -818,7 +816,7 @@ session_lock (Session *session)
     if (getuid () == 0)
     {
         if (session->priv->login1_session)
-            login1_lock_session (session->priv->login1_session);
+            login1_service_lock_session (login1_service_get_instance (), session->priv->login1_session);
         else if (session->priv->console_kit_cookie)
             ck_lock_session (session->priv->console_kit_cookie);
     }
@@ -831,7 +829,7 @@ session_unlock (Session *session)
     if (getuid () == 0)
     {
         if (session->priv->login1_session)
-            login1_unlock_session (session->priv->login1_session);
+            login1_service_unlock_session (login1_service_get_instance (), session->priv->login1_session);
         else if (session->priv->console_kit_cookie)
             ck_unlock_session (session->priv->console_kit_cookie);
     }
@@ -844,7 +842,7 @@ session_activate (Session *session)
     if (getuid () == 0)
     {
         if (session->priv->login1_session)
-            login1_activate_session (session->priv->login1_session);
+            login1_service_activate_session (login1_service_get_instance (), session->priv->login1_session);
         else if (session->priv->console_kit_cookie)
             ck_activate_session (session->priv->console_kit_cookie);
     }
index eb433612a20226625a9da98b68a391c38dd4cc09..70c5d17abb6c46d432445b790bd01ba4167c3535 100644 (file)
@@ -150,6 +150,8 @@ write_message (UnitySystemCompositor *compositor, guint16 id, const guint8 *payl
     errno = 0;
     if (write (compositor->priv->to_compositor_pipe[1], data, data_length) != data_length)
         l_warning (compositor, "Failed to write to compositor: %s", strerror (errno));
+
+    g_free (data);
 }
 
 void
index 81d1491d74cd40849803e8762adf9df76260bd3b..5f9e4bb44fe8924b313381a5f43abeebe3826e4a 100644 (file)
@@ -181,6 +181,7 @@ TESTS = \
        test-open-file-descriptors \
        test-xdmcp-server-open-file-descriptors \
        test-multi-seat \
+       test-multi-seat-seat0-non-graphical \
        test-multi-seat-non-graphical \
        test-multi-seat-change-graphical \
        test-mir-autologin \
@@ -450,8 +451,9 @@ EXTRA_DIST = \
        scripts/mir-session-compositor-crash.conf \
        scripts/mir-session-crash.conf \
        scripts/multi-seat.conf \
-       scripts/multi-seat-non-graphical.conf \
        scripts/multi-seat-change-graphical.conf \
+       scripts/multi-seat-non-graphical.conf \
+       scripts/multi-seat-seat0-non-graphical.conf \
        scripts/no-accounts-service.conf \
        scripts/no-config.conf \
        scripts/no-console-kit.conf \
diff --git a/tests/scripts/multi-seat-seat0-non-graphical.conf b/tests/scripts/multi-seat-seat0-non-graphical.conf
new file mode 100644 (file)
index 0000000..b392595
--- /dev/null
@@ -0,0 +1,33 @@
+#
+# Check seat0 is started only once it becomes graphical
+#
+
+[test-runner-config]
+seat0-can-graphical=false
+
+#?*START-DAEMON
+#?RUNNER DAEMON-START
+
+# Check no seat is added
+#?*WAIT
+
+# Go graphical
+#?*UPDATE-SEAT ID=seat0 CAN-GRAPHICAL=TRUE
+
+# seat0 starts
+#?XSERVER-0 START VT=7 SEAT=seat0
+#?*XSERVER-0 INDICATE-READY
+#?XSERVER-0 INDICATE-READY
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 START XDG_SEAT=seat0 XDG_VTNR=7 XDG_SESSION_CLASS=greeter
+#?LOGIN1 ACTIVATE-SESSION SESSION=c0
+#?XSERVER-0 ACCEPT-CONNECT
+#?GREETER-X-0 CONNECT-XSERVER
+#?GREETER-X-0 CONNECT-TO-DAEMON
+#?GREETER-X-0 CONNECTED-TO-DAEMON
+
+# Cleanup
+#?*STOP-DAEMON
+#?GREETER-X-0 TERMINATE SIGNAL=15
+#?XSERVER-0 TERMINATE SIGNAL=15
+#?RUNNER DAEMON-EXIT STATUS=0
index d650ba4320199aa996b64cb7f4da1d6ff57315a0..0afdeadb373cba84aff7e7caf167c7c79c8e9e60 100644 (file)
@@ -4,7 +4,6 @@ noinst_PROGRAMS = dbus-env \
                   test-gobject-greeter \
                   test-greeter-wrapper \
                   test-guest-wrapper \
-                  test-mir-greeter \
                   test-runner \
                   test-script-hook \
                   test-session \
@@ -121,18 +120,6 @@ test_gobject_greeter_LDADD = \
        $(GIO_UNIX_LIBS) \
        $(XCB_LIBS)
 
-test_mir_greeter_SOURCES = test-mir-greeter.c status.c status.h
-test_mir_greeter_CFLAGS = \
-       -I$(top_srcdir)/liblightdm-gobject \
-       $(WARN_CFLAGS) \
-       $(GLIB_CFLAGS) \
-       $(GIO_UNIX_CFLAGS)
-test_mir_greeter_LDADD = \
-       -L$(top_builddir)/liblightdm-gobject \
-       -llightdm-gobject-1 \
-       $(GLIB_LIBS) \
-       $(GIO_UNIX_LIBS)
-
 guest_account_SOURCES = guest-account.c status.c status.h
 guest_account_CFLAGS = \
        $(WARN_CFLAGS) \
index 604518c42224723c07389d7dc0df253b3935a3b0..0f1da6ac60e6c3865b636efd435da0da2fd10048 100644 (file)
@@ -1206,6 +1206,9 @@ pam_get_item (const pam_handle_t *pamh, int item_type, const void **item)
 int
 pam_open_session (pam_handle_t *pamh, int flags)
 {
+    GVariant *result;
+    GError *error = NULL;
+
     if (pamh == NULL)
         return PAM_SYSTEM_ERR;
 
@@ -1233,6 +1236,33 @@ pam_open_session (pam_handle_t *pamh, int flags)
         g_mkdir_with_parents (entry->pw_dir, 0755);
     }
 
+    /* Open logind session */
+    result = g_dbus_connection_call_sync (g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL),
+                                          "org.freedesktop.login1",
+                                          "/org/freedesktop/login1",
+                                          "org.freedesktop.login1.Manager",
+                                          "CreateSession",
+                                          g_variant_new ("()", ""),
+                                          G_VARIANT_TYPE ("(so)"),
+                                          G_DBUS_CALL_FLAGS_NONE,
+                                          G_MAXINT,
+                                          NULL,
+                                          &error);
+    if (result)
+    {
+        gchar *e;
+        const gchar *id;
+
+        g_variant_get (result, "(&so)", &id, NULL);
+        e = g_strdup_printf ("XDG_SESSION_ID=%s", id);
+        pam_putenv (pamh, e);
+        g_free (e);
+        g_variant_unref (result);
+    }
+    else
+        g_printerr ("Failed to create logind session: %s\n", error->message);
+    g_clear_error (&error);
+
     return PAM_SUCCESS;
 }
 
index 9c177e858f3ff519c7c0095d26101656eb81a995..76d4df21002e47d7a78ba673e06830fc5b741c0a 100644 (file)
@@ -407,7 +407,7 @@ connect_finished (GObject *object, GAsyncResult *result, gpointer data)
 int
 main (int argc, char **argv)
 {
-    gchar *display, *xdg_seat, *xdg_vtnr, *xdg_session_cookie, *xdg_session_class, *mir_socket, *mir_vt, *mir_id;
+    gchar *display, *xdg_seat, *xdg_vtnr, *xdg_session_cookie, *xdg_session_class, *mir_socket, *mir_vt, *mir_id, *path;
     GString *status_text;
 
 #if !defined(GLIB_VERSION_2_36)
@@ -459,7 +459,9 @@ main (int argc, char **argv)
     g_string_free (status_text, TRUE);
 
     config = g_key_file_new ();
-    g_key_file_load_from_file (config, g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), "script", NULL), G_KEY_FILE_NONE, NULL);
+    path = g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), "script", NULL);
+    g_key_file_load_from_file (config, path, G_KEY_FILE_NONE, NULL);
+    g_free (path);
 
     if (g_key_file_has_key (config, "test-greeter-config", "return-value", NULL))
     {
diff --git a/tests/src/test-mir-greeter.c b/tests/src/test-mir-greeter.c
deleted file mode 100644 (file)
index e005480..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: nil; tab-width: 4 -*- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <lightdm.h>
-
-#include "status.h"
-
-static gchar *greeter_id;
-static GMainLoop *loop;
-static LightDMGreeter *greeter;
-static GKeyFile *config;
-
-static void
-show_message_cb (LightDMGreeter *greeter, const gchar *text, LightDMMessageType type)
-{
-    status_notify ("%s SHOW-MESSAGE TEXT=\"%s\"", greeter_id, text);
-}
-
-static void
-show_prompt_cb (LightDMGreeter *greeter, const gchar *text, LightDMPromptType type)
-{
-    status_notify ("%s SHOW-PROMPT TEXT=\"%s\"", greeter_id, text);
-}
-
-static void
-authentication_complete_cb (LightDMGreeter *greeter)
-{
-    if (lightdm_greeter_get_authentication_user (greeter))
-        status_notify ("%s AUTHENTICATION-COMPLETE USERNAME=%s AUTHENTICATED=%s",
-                       greeter_id,
-                       lightdm_greeter_get_authentication_user (greeter),
-                       lightdm_greeter_get_is_authenticated (greeter) ? "TRUE" : "FALSE");
-    else
-        status_notify ("%s AUTHENTICATION-COMPLETE AUTHENTICATED=%s",
-                       greeter_id,
-                       lightdm_greeter_get_is_authenticated (greeter) ? "TRUE" : "FALSE");
-}
-
-static void
-signal_cb (int signum)
-{
-    status_notify ("%s TERMINATE SIGNAL=%d", greeter_id, signum);
-    exit (EXIT_SUCCESS);
-}
-
-static void
-request_cb (const gchar *name, GHashTable *params)
-{
-    if (!name)
-    {
-        g_main_loop_quit (loop);
-        return;
-    }
-  
-    if (strcmp (name, "AUTHENTICATE") == 0)
-        lightdm_greeter_authenticate (greeter, g_hash_table_lookup (params, "USERNAME"));
-
-    if (strcmp (name, "RESPOND") == 0)
-    {
-        gchar *text = g_strdup (g_hash_table_lookup (params, "TEXT"));
-        text[strlen (text) - 1] = '\0';
-        lightdm_greeter_respond (greeter, text);
-        g_free (text);
-    }
-
-    if (strcmp (name, "CANCEL-AUTHENTICATION") == 0)
-        lightdm_greeter_cancel_authentication (greeter);
-
-    if (strcmp (name, "START-SESSION") == 0)
-    {
-        if (!lightdm_greeter_start_session_sync (greeter, g_hash_table_lookup (params, "SESSION"), NULL))
-            status_notify ("%s SESSION-FAILED", greeter_id); 
-    }
-}
-
-int
-main (int argc, char **argv)
-{
-    signal (SIGINT, signal_cb);
-    signal (SIGTERM, signal_cb);
-
-#if !defined(GLIB_VERSION_2_36)
-    g_type_init ();
-#endif
-
-    greeter_id = g_strdup ("GREETER-MIR");
-
-    loop = g_main_loop_new (NULL, FALSE);
-
-    status_connect (request_cb, greeter_id);
-
-    status_notify ("%s START", greeter_id);
-
-    config = g_key_file_new ();
-    g_key_file_load_from_file (config, g_build_filename (g_getenv ("LIGHTDM_TEST_ROOT"), "script", NULL), G_KEY_FILE_NONE, NULL);
-
-    if (g_key_file_has_key (config, "test-greeter-config", "return-value", NULL))
-    {
-        int return_value = g_key_file_get_integer (config, "test-greeter-config", "return-value", NULL);
-        status_notify ("%s EXIT CODE=%d", greeter_id, return_value);
-        return return_value;
-    }
-
-    greeter = lightdm_greeter_new ();
-    g_signal_connect (greeter, "show-message", G_CALLBACK (show_message_cb), NULL);
-    g_signal_connect (greeter, "show-prompt", G_CALLBACK (show_prompt_cb), NULL);
-    g_signal_connect (greeter, "authentication-complete", G_CALLBACK (authentication_complete_cb), NULL);
-
-    status_notify ("%s CONNECT-TO-DAEMON", greeter_id);
-    if (!lightdm_greeter_connect_to_daemon_sync (greeter, NULL))
-    {
-        status_notify ("%s FAIL-CONNECT-DAEMON", greeter_id);
-        return EXIT_FAILURE;
-    }
-
-    status_notify ("%s CONNECTED-TO-DAEMON", greeter_id);
-
-    g_main_loop_run (loop);
-
-    return EXIT_SUCCESS;
-}
index 8551a2a74a5d17a070b60a0829d9306b386163b5..8136872d2c9985219134e397ec9ffadeb09898f8 100644 (file)
@@ -120,6 +120,7 @@ static void remove_login1_seat (GDBusConnection *connection, const gchar *id);
 
 typedef struct
 {
+    gchar *id;
     gchar *path;
     guint pid;
     gboolean locked;
@@ -1567,45 +1568,12 @@ handle_login1_session_call (GDBusConnection       *connection,
                             GDBusMethodInvocation *invocation,
                             gpointer               user_data)
 {
-    Login1Session *session = user_data;
-
-    if (strcmp (method_name, "Lock") == 0)
-    {
-        if (!session->locked)
-        {
-            gchar *status = g_strdup_printf ("LOGIN1 LOCK-SESSION SESSION=%s", strrchr (object_path, '/') + 1);
-            check_status (status);
-            g_free (status);
-        }
-        session->locked = TRUE;
-        g_dbus_method_invocation_return_value (invocation, g_variant_new ("()"));
-    }
-    else if (strcmp (method_name, "Unlock") == 0)
-    {
-        if (session->locked)
-        {
-            gchar *status = g_strdup_printf ("LOGIN1 UNLOCK-SESSION SESSION=%s", strrchr (object_path, '/') + 1);
-            check_status (status);
-            g_free (status);
-        }
-        session->locked = FALSE;
-        g_dbus_method_invocation_return_value (invocation, g_variant_new ("()"));
-    }
-    else if (strcmp (method_name, "Activate") == 0)
-    {
-        gchar *status = g_strdup_printf ("LOGIN1 ACTIVATE-SESSION SESSION=%s", strrchr (object_path, '/') + 1);
-        check_status (status);
-        g_free (status);
-
-        g_dbus_method_invocation_return_value (invocation, g_variant_new ("()"));
-    }
-    else
-        g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "No such method: %s", method_name);
+    /*Login1Session *session = user_data;*/
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "No such method: %s", method_name);
 }
 
 static Login1Session *
-open_login1_session (GDBusConnection *connection,
-                     GVariant *params)
+create_login1_session (GDBusConnection *connection)
 {
     Login1Session *session;
     GError *error = NULL;
@@ -1614,9 +1582,6 @@ open_login1_session (GDBusConnection *connection,
     const gchar *login1_session_interface =
         "<node>"
         "  <interface name='org.freedesktop.login1.Session'>"
-        "    <method name='Lock'/>"
-        "    <method name='Unlock'/>"
-        "    <method name='Activate'/>"
         "  </interface>"
         "</node>";
     static const GDBusInterfaceVTable login1_session_vtable =
@@ -1627,7 +1592,8 @@ open_login1_session (GDBusConnection *connection,
     session = g_malloc0 (sizeof (Login1Session));
     login1_sessions = g_list_append (login1_sessions, session);
 
-    session->path = g_strdup_printf ("/org/freedesktop/login1/Session/c%d", login1_session_index++);
+    session->id = g_strdup_printf ("c%d", login1_session_index++);
+    session->path = g_strdup_printf ("/org/freedesktop/login1/Session/%s", session->id);
 
     login1_session_info = g_dbus_node_info_new_for_xml (login1_session_interface, &error);
     if (error)
@@ -1651,6 +1617,21 @@ open_login1_session (GDBusConnection *connection,
     return session;
 }
 
+static Login1Session *
+find_login1_session (const gchar *id)
+{
+    GList *link;
+
+    for (link = login1_sessions; link; link = link->next)
+    {
+        Login1Session *session = link->data;
+        if (strcmp (session->id, id) == 0)
+            return session;
+    }
+
+    return NULL;
+}
+
 static void
 handle_login1_call (GDBusConnection       *connection,
                     const gchar           *sender,
@@ -1674,32 +1655,76 @@ handle_login1_call (GDBusConnection       *connection,
         }
         g_dbus_method_invocation_return_value (invocation, g_variant_new ("(a(so))", &seats));
     }
-    else if (strcmp (method_name, "GetSessionByPID") == 0)
+    else if (strcmp (method_name, "CreateSession") == 0)
     {
-        /* Look for a session with our PID, and create one if we don't have one already. */
-        GList *link;
-        guint pid;
-        Login1Session *ret = NULL;
+        /* Note: this is not the full CreateSession as used by logind, we just
+           need one so our fake PAM stack can communicate with this service */
+        Login1Session *session = create_login1_session (connection);
+        g_dbus_method_invocation_return_value (invocation, g_variant_new ("(so)", session->id, session->path));
 
-        g_variant_get (parameters, "(u)", &pid);
+    }
+    else if (strcmp (method_name, "LockSession") == 0)
+    {
+        const gchar *id;
+        Login1Session *session;
 
-        for (link = login1_sessions; link; link = link->next)
+        g_variant_get (parameters, "(&s)", &id);
+        session = find_login1_session (id);
+        if (!session)
         {
-            Login1Session *session;
-            session = link->data;
-            if (session->pid == pid)
-            {
-                ret = session;
-                break;
-            }
+            g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "No such session: %s", id);
+            return;
+        }
+
+        if (!session->locked)
+        {
+            gchar *status = g_strdup_printf ("LOGIN1 LOCK-SESSION SESSION=%s", id);
+            check_status (status);
+            g_free (status);
+        }
+        session->locked = TRUE;
+        g_dbus_method_invocation_return_value (invocation, g_variant_new ("()"));
+    }
+    else if (strcmp (method_name, "UnlockSession") == 0)
+    {
+        const gchar *id;
+        Login1Session *session;
+
+        g_variant_get (parameters, "(&s)", &id);
+        session = find_login1_session (id);
+        if (!session)
+        {
+            g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "No such session: %s", id);
+            return;
+        }
+
+        if (session->locked)
+        {
+            gchar *status = g_strdup_printf ("LOGIN1 UNLOCK-SESSION SESSION=%s", id);
+            check_status (status);
+            g_free (status);
+        }
+        session->locked = FALSE;
+        g_dbus_method_invocation_return_value (invocation, g_variant_new ("()"));
+    }
+    else if (strcmp (method_name, "ActivateSession") == 0)
+    {
+        const gchar *id;
+        Login1Session *session;
+
+        g_variant_get (parameters, "(&s)", &id);
+        session = find_login1_session (id);
+        if (!session)
+        {
+            g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_FAILED, "No such session: %s", id);
+            return;
         }
-        /* Not found */
-        if (!ret)
-            ret = open_login1_session (connection, parameters);
 
-        g_dbus_method_invocation_return_value (invocation,
-                                               g_variant_new("(o)", ret->path));
+        gchar *status = g_strdup_printf ("LOGIN1 ACTIVATE-SESSION SESSION=%s", id);
+        check_status (status);
+        g_free (status);
 
+        g_dbus_method_invocation_return_value (invocation, g_variant_new ("()"));
     }
     else if (strcmp (method_name, "CanReboot") == 0)
     {
@@ -1764,9 +1789,18 @@ login1_name_acquired_cb (GDBusConnection *connection,
         "    <method name='ListSeats'>"
         "      <arg name='seats' type='a(so)' direction='out'/>"
         "    </method>"
-        "    <method name='GetSessionByPID'>"
-        "      <arg name='pid' type='u' direction='in'/>"
-        "      <arg name='session' type='o' direction='out'/>"
+        "    <method name='CreateSession'>"
+        "      <arg name='id' type='s' direction='out'/>"
+        "      <arg name='path' type='o' direction='out'/>"
+        "    </method>"
+        "    <method name='LockSession'>"
+        "      <arg name='id' type='s' direction='in'/>"
+        "    </method>"
+        "    <method name='UnlockSession'>"
+        "      <arg name='id' type='s' direction='in'/>"
+        "    </method>"
+        "    <method name='ActivateSession'>"
+        "      <arg name='id' type='s' direction='in'/>"
         "    </method>"
         "    <method name='CanReboot'>"
         "      <arg name='result' direction='out' type='s'/>"
@@ -1805,6 +1839,7 @@ login1_name_acquired_cb (GDBusConnection *connection,
         handle_login1_call,
     };
     GDBusNodeInfo *login1_info;
+    Login1Seat *seat0;
     GError *error = NULL;
 
     login1_info = g_dbus_node_info_new_for_xml (login1_interface, &error);
@@ -1825,7 +1860,11 @@ login1_name_acquired_cb (GDBusConnection *connection,
     g_dbus_node_info_unref (login1_info);
 
     /* We always have seat0 */
-    add_login1_seat (connection, "seat0", FALSE);
+    seat0 = add_login1_seat (connection, "seat0", FALSE);
+    if (g_key_file_has_key (config, "test-runner-config", "seat0-can-graphical", NULL))
+        seat0->can_graphical = g_key_file_get_boolean (config, "test-runner-config", "seat0-can-graphical", NULL);
+    if (g_key_file_has_key (config, "test-runner-config", "seat0-can-multi-session", NULL))
+        seat0->can_multi_session = g_key_file_get_boolean (config, "test-runner-config", "seat0-can-multi-session", NULL);
 
     service_count--;
     if (service_count == 0)
diff --git a/tests/test-multi-seat-seat0-non-graphical b/tests/test-multi-seat-seat0-non-graphical
new file mode 100755 (executable)
index 0000000..3f16c91
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+./src/dbus-env ./src/test-runner multi-seat-seat0-non-graphical test-gobject-greeter