mirror of
https://gitlab.com/mishakmak/pam-fprint-grosshack.git
synced 2026-04-08 20:03:34 +02:00
Compare commits
57 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c0ba475fbf | |||
| 704c19b87a | |||
| 8f90390c6b | |||
| e061990fa9 | |||
| 011310e30c | |||
| 3274a31153 | |||
| d6c4e8ba64 | |||
| 48976d0031 | |||
| cbf4a47af3 | |||
| bfbac18606 | |||
| 09529c396b | |||
| 94a9815362 | |||
| 9ed8767cb3 | |||
| 8ae7abc6c2 | |||
| dd9d7cc35d | |||
| dbeeb95756 | |||
| 5e76441210 | |||
| 8de9164be0 | |||
| 267e6b3238 | |||
| 51f4dce4e7 | |||
| 0c76397a6e | |||
| 815256717b | |||
| 9e32cd5257 | |||
| 32b9f1b056 | |||
| 12ef09a1c9 | |||
| 596172e42d | |||
| d37d8a233a | |||
| 3550ac5f05 | |||
| 111681c57d | |||
| 6eed9f1244 | |||
| 04bd6bab46 | |||
| fa4af3ee67 | |||
| 31b985f547 | |||
| 661684b1f5 | |||
| 2322244c5a | |||
| 8e0c030f62 | |||
| 4234902671 | |||
| 78ffe68426 | |||
| 2704e72308 | |||
| f39f28830a | |||
| e6d291b248 | |||
| a2f2526df6 | |||
| 2f78c46dcf | |||
| 8eba309920 | |||
| 6494efa94e | |||
| e55ad52ded | |||
| 0d28678118 | |||
| 051eb0427d | |||
| f54a90ea80 | |||
| da87d1d7ee | |||
| 3d2d73d615 | |||
| 06ea385260 | |||
| 8fa3dcd5cd | |||
| 32307570fe | |||
| 7ae196a0dd | |||
| 36d3d9d749 | |||
| b3c1ed0d2a |
36
.gitlab-ci.yml
Normal file
36
.gitlab-ci.yml
Normal file
@ -0,0 +1,36 @@
|
||||
image: fedora:rawhide
|
||||
|
||||
variables:
|
||||
DEPENDENCIES: dbus-glib-devel pam-devel polkit-devel
|
||||
gtk-doc meson intltool autoconf automake libtool
|
||||
gcc gcc-c++ glibc-devel make
|
||||
DEPENDENCIES_STABLE: $DEPENDENCIES libfprint-devel
|
||||
DEPENDENCIES_DEV: $DEPENDENCIES git
|
||||
# Sync'ed up with https://gitlab.freedesktop.org/libfprint/libfprint/blob/master/.gitlab-ci.yml
|
||||
DEPENDENCIES_LIBFPRINT: libusb1-devel glib2-devel nss-devel pixman-devel systemd
|
||||
meson gtk-doc gcc gcc-c++ glibc-devel libX11-devel
|
||||
libXv-devel
|
||||
|
||||
build_stable:
|
||||
before_script:
|
||||
- dnf update -y --nogpgcheck && dnf install -y --nogpgcheck $DEPENDENCIES_STABLE
|
||||
script:
|
||||
- ./autogen.sh --disable-dependency-tracking
|
||||
- make
|
||||
- make install
|
||||
|
||||
build_dev:
|
||||
before_script:
|
||||
- dnf update -y --nogpgcheck && dnf install -y --nogpgcheck $DEPENDENCIES_LIBFPRINT $DEPENDENCIES_DEV
|
||||
- git clone https://gitlab.freedesktop.org/libfprint/libfprint.git
|
||||
- cd libfprint
|
||||
- meson . _build --prefix=/usr
|
||||
- ninja -C _build
|
||||
- ninja -C _build install
|
||||
- cd ..
|
||||
# So we don't get error about this libfprint file
|
||||
- echo "libfprint/demo/gtk-libfprint-test.ui" >> po/POTFILES.skip
|
||||
script:
|
||||
- ./autogen.sh --disable-dependency-tracking
|
||||
- make
|
||||
- make install
|
||||
@ -23,7 +23,7 @@ check-translations:
|
||||
|
||||
update-translations: create-pot check-translations
|
||||
@tx -r $(srcdir) pull --all --force --skip
|
||||
@if [ ! -d .tx ] ; then mkdir .tx ; fi ; cp -f $(srcdir)/.tx/config .tx/
|
||||
@if [ ! -d .tx ] ; then mkdir .tx ; fi ; if [ x$(srcdir) != x$(builddir) ] ; then cp -f $(srcdir)/.tx/config .tx/ ; fi
|
||||
@tx push --source
|
||||
|
||||
-include $(top_srcdir)/git.mk
|
||||
|
||||
21
NEWS
21
NEWS
@ -1,6 +1,27 @@
|
||||
This file lists notable changes in each release. For the full history of all
|
||||
changes, see ChangeLog.
|
||||
|
||||
version 0.9.0:
|
||||
- Fix hangs when there the verification error was "retry"
|
||||
- Update for fp_get_pollfds() changes
|
||||
- Fix "client_username" memory leak, fix memory leak when saving a file
|
||||
- Create the fingerprint storage directory at install time,
|
||||
the storage path is now hard-coded as /var/lib/fprint and created by
|
||||
systemd when the service is started
|
||||
|
||||
version 0.8.1:
|
||||
- Fix build when builddir != srcdir
|
||||
- Fix possible crash on exit
|
||||
- Avoid warnings in copy/paste header
|
||||
- Sandbox fprintd daemon more
|
||||
- Update website address
|
||||
- Minimise debug output
|
||||
- Updated translations
|
||||
|
||||
version 0.8.0:
|
||||
- Lockdown the daemon to minimise potential security issues
|
||||
- Don't wake up readers when there's no enrolled fingerprints
|
||||
|
||||
version 0.7.0:
|
||||
- Fix crash in the daemon when cancelling PAM conversation
|
||||
- Fix build warnings and update translations
|
||||
|
||||
2
README
2
README
@ -1,7 +1,7 @@
|
||||
fprintd
|
||||
=======
|
||||
|
||||
http://www.reactivated.net/fprint/wiki/Fprintd
|
||||
https://fprint.freedesktop.org/
|
||||
|
||||
Daemon to offer libfprint functionality over D-Bus
|
||||
Might eat your kangaroo.
|
||||
|
||||
@ -4,7 +4,7 @@ Transifex.net Token Verification
|
||||
The list of tokens bellow guarantee the respective users to be able to enable
|
||||
submission on components using the following repository url:
|
||||
|
||||
ssh://git.freedesktop.org/git/libfprint/fprintd
|
||||
https://gitlab.freedesktop.org/libfprint/fprintd/
|
||||
|
||||
Tokens:
|
||||
|
||||
|
||||
12
TODO
12
TODO
@ -1,17 +1,5 @@
|
||||
Identification
|
||||
Image transfer
|
||||
|
||||
Verify PAM messages fit with GDM/gnome-screensaver
|
||||
|
||||
Register fprintd' po file with Transifex, Rosetta or the Translation Project
|
||||
|
||||
Support insertion/removal of devices
|
||||
|
||||
Add some hardware protection by making sure devices aren't opened and
|
||||
reading for more than a certain amount of time.
|
||||
|
||||
Add POS use case
|
||||
|
||||
Automatically show the fingerprint registration when logged in and
|
||||
not having any registered prints?
|
||||
http://uk.youtube.com/watch?v=F_x_vwCltbc
|
||||
|
||||
@ -3,7 +3,8 @@
|
||||
srcdir=`dirname $0`
|
||||
test -z "$srcdir" && srcdir=.
|
||||
|
||||
pushd $srcdir
|
||||
olddir=`pwd`
|
||||
cd "$srcdir"
|
||||
|
||||
aclocal || exit 1
|
||||
autoheader || exit 1
|
||||
@ -13,7 +14,8 @@ intltoolize -c -f || exit 1
|
||||
libtoolize -c || exit 1
|
||||
autoconf || exit 1
|
||||
automake -a -c || exit 1
|
||||
popd
|
||||
|
||||
cd "$olddir"
|
||||
|
||||
if test -z "$NOCONFIGURE"; then
|
||||
$srcdir/configure --enable-maintainer-mode $*
|
||||
|
||||
3
code-of-conduct.md
Normal file
3
code-of-conduct.md
Normal file
@ -0,0 +1,3 @@
|
||||
This project and its community follow the [Freedesktop.org code of conduct]
|
||||
|
||||
[Freedesktop.org code of conduct]: https://www.freedesktop.org/wiki/CodeOfConduct/
|
||||
@ -1,4 +1,4 @@
|
||||
AC_INIT([fprintd], [0.7.0])
|
||||
AC_INIT([fprintd], [0.9.0])
|
||||
AM_INIT_AUTOMAKE([1.11 dist-xz no-dist-gzip check-news])
|
||||
AC_CONFIG_SRCDIR([src/main.c])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
@ -60,6 +60,8 @@ AC_ARG_WITH([systemdsystemunitdir],
|
||||
[],
|
||||
[with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
|
||||
AS_IF([test "x$with_systemdsystemunitdir" != "xno"], [
|
||||
# StateDirectory was introduced in systemd 235
|
||||
PKG_CHECK_MODULES(SYSTEMD, systemd >= 235)
|
||||
AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
|
||||
])
|
||||
AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$systemdsystemunitdir"])
|
||||
@ -70,7 +72,8 @@ DBUS_SERVICES_DIR="$DATADIR/dbus-1/services"
|
||||
AC_SUBST(DBUS_SERVICES_DIR)
|
||||
AC_DEFINE_UNQUOTED(DBUS_SERVICES_DIR, "$DBUS_SERVICES_DIR", [Where services dir for DBUS is])
|
||||
|
||||
AC_DEFINE_UNQUOTED(SYSCONFDIR, "$sysconfdir", [Where the configuration file will be located])
|
||||
AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
|
||||
AC_DEFINE_UNQUOTED(SYSCONFDIR, "$SYSCONFDIR", [Where the configuration file will be located])
|
||||
|
||||
GNOME_COMPILE_WARNINGS
|
||||
|
||||
|
||||
@ -6,3 +6,28 @@ Documentation=man:fprintd(1)
|
||||
Type=dbus
|
||||
BusName=net.reactivated.Fprint
|
||||
ExecStart=@libexecdir@/fprintd
|
||||
|
||||
# Filesystem lockdown
|
||||
ProtectSystem=strict
|
||||
ProtectKernelTunables=true
|
||||
ProtectControlGroups=true
|
||||
# This always corresponds to /var/lib/fprint
|
||||
StateDirectory=fprint
|
||||
ProtectHome=true
|
||||
PrivateTmp=true
|
||||
|
||||
# Network
|
||||
PrivateNetwork=true
|
||||
RestrictAddressFamilies=AF_UNIX AF_LOCAL AF_NETLINK
|
||||
|
||||
# Execute Mappings
|
||||
MemoryDenyWriteExecute=true
|
||||
|
||||
# Modules
|
||||
ProtectKernelModules=true
|
||||
|
||||
# Real-time
|
||||
RestrictRealtime=true
|
||||
|
||||
# Privilege escalation
|
||||
NoNewPrivileges=true
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
<policyconfig>
|
||||
|
||||
<vendor>The FPrint Project</vendor>
|
||||
<vendor_url>http://reactivated.net/fprint/</vendor_url>
|
||||
<vendor_url>https://fprint.freedesktop.org/</vendor_url>
|
||||
<icon_name>fprint</icon_name>
|
||||
|
||||
<action id="net.reactivated.fprint.device.verify">
|
||||
|
||||
@ -88,7 +88,7 @@ struct {
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
|
||||
|
||||
static char *finger_str_to_msg(const char *finger_name, const char *driver_name, gboolean is_swipe)
|
||||
G_GNUC_UNUSED static char *finger_str_to_msg(const char *finger_name, const char *driver_name, gboolean is_swipe)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -121,7 +121,7 @@ static char *finger_str_to_msg(const char *finger_name, const char *driver_name,
|
||||
* verify-match
|
||||
* verify-unknown-error
|
||||
*/
|
||||
static const char *verify_result_str_to_msg(const char *result, gboolean is_swipe)
|
||||
G_GNUC_UNUSED static const char *verify_result_str_to_msg(const char *result, gboolean is_swipe)
|
||||
{
|
||||
if (result == NULL)
|
||||
return NULL;
|
||||
@ -147,7 +147,7 @@ static const char *verify_result_str_to_msg(const char *result, gboolean is_swip
|
||||
* enroll-failed
|
||||
* enroll-unknown-error
|
||||
*/
|
||||
static const char *enroll_result_str_to_msg(const char *result, gboolean is_swipe)
|
||||
G_GNUC_UNUSED static const char *enroll_result_str_to_msg(const char *result, gboolean is_swipe)
|
||||
{
|
||||
if (result == NULL)
|
||||
return NULL;
|
||||
|
||||
@ -183,7 +183,7 @@ static void unref_loop (GMainLoop *loop)
|
||||
|
||||
#define DBUS_TYPE_G_OBJECT_PATH_ARRAY (dbus_g_type_get_collection ("GPtrArray", DBUS_TYPE_G_OBJECT_PATH))
|
||||
|
||||
static DBusGProxy *open_device(pam_handle_t *pamh, DBusGConnection *connection, DBusGProxy *manager, const char *username, gboolean *has_multiple_devices)
|
||||
static DBusGProxy *open_device(pam_handle_t *pamh, DBusGConnection *connection, DBusGProxy *manager, gboolean *has_multiple_devices)
|
||||
{
|
||||
GError *error = NULL;
|
||||
const char *path;
|
||||
@ -217,13 +217,6 @@ static DBusGProxy *open_device(pam_handle_t *pamh, DBusGConnection *connection,
|
||||
path,
|
||||
"net.reactivated.Fprint.Device");
|
||||
|
||||
if (!dbus_g_proxy_call (dev, "Claim", &error, G_TYPE_STRING, username, G_TYPE_INVALID, G_TYPE_INVALID)) {
|
||||
D(pamh, "failed to claim device '%s': %s\n", path, error->message);
|
||||
g_error_free (error);
|
||||
g_object_unref (dev);
|
||||
dev = NULL;
|
||||
}
|
||||
|
||||
g_ptr_array_free (paths_array, TRUE);
|
||||
|
||||
return dev;
|
||||
@ -363,7 +356,7 @@ static int do_verify(GMainLoop *loop, pam_handle_t *pamh, DBusGProxy *dev, gbool
|
||||
g_free (data->result);
|
||||
break;
|
||||
} else {
|
||||
send_info_msg (data->pamh, "An unknown error occured");
|
||||
send_info_msg (data->pamh, "An unknown error occurred");
|
||||
ret = PAM_AUTH_ERR;
|
||||
g_free (data->result);
|
||||
break;
|
||||
@ -383,6 +376,26 @@ static int do_verify(GMainLoop *loop, pam_handle_t *pamh, DBusGProxy *dev, gbool
|
||||
return ret;
|
||||
}
|
||||
|
||||
static gboolean user_has_prints(DBusGProxy *dev, const char *username)
|
||||
{
|
||||
char **fingers;
|
||||
gboolean have_prints;
|
||||
|
||||
if (!dbus_g_proxy_call (dev, "ListEnrolledFingers", NULL,
|
||||
G_TYPE_STRING, username, G_TYPE_INVALID,
|
||||
G_TYPE_STRV, &fingers, G_TYPE_INVALID)) {
|
||||
/* If ListEnrolledFingers fails then verification should
|
||||
* also fail (both use the same underlying call), so we
|
||||
* report FALSE here and bail out early. */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
have_prints = fingers != NULL && g_strv_length (fingers) > 0;
|
||||
g_strfreev (fingers);
|
||||
|
||||
return have_prints;
|
||||
}
|
||||
|
||||
static void release_device(pam_handle_t *pamh, DBusGProxy *dev)
|
||||
{
|
||||
GError *error = NULL;
|
||||
@ -392,30 +405,52 @@ static void release_device(pam_handle_t *pamh, DBusGProxy *dev)
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean claim_device(pam_handle_t *pamh, DBusGProxy *dev, const char *username)
|
||||
{
|
||||
GError *error = NULL;
|
||||
|
||||
if (!dbus_g_proxy_call (dev, "Claim", &error, G_TYPE_STRING, username, G_TYPE_INVALID, G_TYPE_INVALID)) {
|
||||
D(pamh, "failed to claim device %s\n", error->message);
|
||||
g_error_free (error);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int do_auth(pam_handle_t *pamh, const char *username)
|
||||
{
|
||||
DBusGProxy *manager;
|
||||
DBusGConnection *connection;
|
||||
DBusGProxy *dev;
|
||||
GMainLoop *loop;
|
||||
gboolean have_prints;
|
||||
gboolean has_multiple_devices;
|
||||
int ret;
|
||||
int ret = PAM_AUTHINFO_UNAVAIL;
|
||||
|
||||
manager = create_manager (pamh, &connection, &loop);
|
||||
if (manager == NULL)
|
||||
return PAM_AUTHINFO_UNAVAIL;
|
||||
|
||||
dev = open_device(pamh, connection, manager, username, &has_multiple_devices);
|
||||
dev = open_device(pamh, connection, manager, &has_multiple_devices);
|
||||
g_object_unref (manager);
|
||||
if (!dev) {
|
||||
unref_loop (loop);
|
||||
close_and_unref (connection);
|
||||
return PAM_AUTHINFO_UNAVAIL;
|
||||
}
|
||||
ret = do_verify(loop, pamh, dev, has_multiple_devices);
|
||||
|
||||
have_prints = user_has_prints(dev, username);
|
||||
D(pamh, "prints registered: %s\n", have_prints ? "yes" : "no");
|
||||
|
||||
if (have_prints) {
|
||||
if (claim_device (pamh, dev, username)) {
|
||||
ret = do_verify (loop, pamh, dev, has_multiple_devices);
|
||||
release_device (pamh, dev);
|
||||
}
|
||||
}
|
||||
|
||||
unref_loop (loop);
|
||||
release_device(pamh, dev);
|
||||
g_object_unref (dev);
|
||||
close_and_unref (connection);
|
||||
|
||||
@ -433,14 +468,21 @@ PAM_EXTERN int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc,
|
||||
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
|
||||
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
|
||||
|
||||
g_type_init ();
|
||||
#if !GLIB_CHECK_VERSION (2, 36, 0)
|
||||
g_type_init();
|
||||
#endif
|
||||
|
||||
dbus_g_object_register_marshaller (fprintd_marshal_VOID__STRING_BOOLEAN,
|
||||
G_TYPE_NONE, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_INVALID);
|
||||
|
||||
pam_get_item(pamh, PAM_RHOST, (const void **)(const void*) &rhost);
|
||||
if (rhost != NULL && strlen(rhost) > 0) {
|
||||
/* remote login (e.g. over SSH) */
|
||||
|
||||
/* NULL or empty rhost if the host information is not available or set.
|
||||
* "localhost" if the host is local.
|
||||
* We want to not run for known remote hosts */
|
||||
if (rhost != NULL &&
|
||||
rhost != '\0' &&
|
||||
strcmp (rhost, "localhost") != 0) {
|
||||
return PAM_AUTHINFO_UNAVAIL;
|
||||
}
|
||||
|
||||
|
||||
11
po/LINGUAS
11
po/LINGUAS
@ -1,7 +1,9 @@
|
||||
ar
|
||||
as
|
||||
ast
|
||||
az
|
||||
bg_BG
|
||||
be
|
||||
bg
|
||||
bn_IN
|
||||
ca
|
||||
ca@valencia
|
||||
@ -15,10 +17,11 @@ eo
|
||||
es
|
||||
et
|
||||
eu
|
||||
fa_IR
|
||||
fa
|
||||
fi
|
||||
fr
|
||||
fo
|
||||
fr
|
||||
fur
|
||||
ga
|
||||
gl
|
||||
gu
|
||||
@ -26,6 +29,7 @@ he
|
||||
hi
|
||||
hr
|
||||
hu
|
||||
ia
|
||||
id
|
||||
it
|
||||
ja
|
||||
@ -45,6 +49,7 @@ oc
|
||||
or
|
||||
pa
|
||||
pl
|
||||
pt
|
||||
pt_BR
|
||||
ro
|
||||
ru
|
||||
|
||||
4
po/ar.po
4
po/ar.po
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: hadess <hadess@hadess.net>\n"
|
||||
"Language-Team: Arabic (http://www.transifex.com/freedesktop/fprintd/language/ar/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
2
po/as.po
2
po/as.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Assamese (http://www.transifex.com/freedesktop/fprintd/language/as/)\n"
|
||||
|
||||
270
po/ast.po
Normal file
270
po/ast.po
Normal file
@ -0,0 +1,270 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-08-27 03:15+0000\n"
|
||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||
"Language-Team: Asturian (http://www.transifex.com/freedesktop/fprintd/language/ast/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ast\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Verify a fingerprint"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:2
|
||||
msgid "Privileges are required to verify fingerprints."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:3
|
||||
msgid "Enroll new fingerprints"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:4
|
||||
msgid "Privileges are required to enroll new fingerprints."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:5
|
||||
msgid "Select a user to enroll"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:6
|
||||
msgid "Privileges are required to enroll new fingerprints for other users."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/device.c:385
|
||||
#, c-format
|
||||
msgid "Device was not claimed before use"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/device.c:395
|
||||
#, c-format
|
||||
msgid "Device already in use by another user"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:31
|
||||
msgid "Place your finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:32
|
||||
#, c-format
|
||||
msgid "Place your finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:33
|
||||
msgid "Swipe your finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:34
|
||||
#, c-format
|
||||
msgid "Swipe your finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:36
|
||||
msgid "Place your left thumb on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:37
|
||||
#, c-format
|
||||
msgid "Place your left thumb on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:38
|
||||
msgid "Swipe your left thumb across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:39
|
||||
#, c-format
|
||||
msgid "Swipe your left thumb across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:41
|
||||
msgid "Place your left index finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:42
|
||||
#, c-format
|
||||
msgid "Place your left index finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:43
|
||||
msgid "Swipe your left index finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:44
|
||||
#, c-format
|
||||
msgid "Swipe your left index finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:46
|
||||
msgid "Place your left middle finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:47
|
||||
#, c-format
|
||||
msgid "Place your left middle finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:48
|
||||
msgid "Swipe your left middle finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:49
|
||||
#, c-format
|
||||
msgid "Swipe your left middle finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:51
|
||||
msgid "Place your left ring finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:52
|
||||
#, c-format
|
||||
msgid "Place your left ring finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:53
|
||||
msgid "Swipe your left ring finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:54
|
||||
#, c-format
|
||||
msgid "Swipe your left ring finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:56
|
||||
msgid "Place your left little finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:57
|
||||
#, c-format
|
||||
msgid "Place your left little finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:58
|
||||
msgid "Swipe your left little finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:59
|
||||
#, c-format
|
||||
msgid "Swipe your left little finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:61
|
||||
msgid "Place your right thumb on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:62
|
||||
#, c-format
|
||||
msgid "Place your right thumb on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:63
|
||||
msgid "Swipe your right thumb across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:64
|
||||
#, c-format
|
||||
msgid "Swipe your right thumb across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:66
|
||||
msgid "Place your right index finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:67
|
||||
#, c-format
|
||||
msgid "Place your right index finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:68
|
||||
msgid "Swipe your right index finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:69
|
||||
#, c-format
|
||||
msgid "Swipe your right index finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:71
|
||||
msgid "Place your right middle finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:72
|
||||
#, c-format
|
||||
msgid "Place your right middle finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:73
|
||||
msgid "Swipe your right middle finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:74
|
||||
#, c-format
|
||||
msgid "Swipe your right middle finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:76
|
||||
msgid "Place your right ring finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:77
|
||||
#, c-format
|
||||
msgid "Place your right ring finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:78
|
||||
msgid "Swipe your right ring finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:79
|
||||
#, c-format
|
||||
msgid "Swipe your right ring finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:81
|
||||
msgid "Place your right little finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:82
|
||||
#, c-format
|
||||
msgid "Place your right little finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:83
|
||||
msgid "Swipe your right little finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:84
|
||||
#, c-format
|
||||
msgid "Swipe your right little finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:131 ../pam/fingerprint-strings.h:157
|
||||
msgid "Place your finger on the reader again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:133 ../pam/fingerprint-strings.h:159
|
||||
msgid "Swipe your finger again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:136 ../pam/fingerprint-strings.h:162
|
||||
msgid "Swipe was too short, try again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:138 ../pam/fingerprint-strings.h:164
|
||||
msgid "Your finger was not centered, try swiping your finger again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:140 ../pam/fingerprint-strings.h:166
|
||||
msgid "Remove your finger, and try swiping your finger again"
|
||||
msgstr ""
|
||||
2
po/az.po
2
po/az.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Azerbaijani (http://www.transifex.com/freedesktop/fprintd/language/az/)\n"
|
||||
|
||||
270
po/be.po
Normal file
270
po/be.po
Normal file
@ -0,0 +1,270 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2018-04-08 18:46+0000\n"
|
||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||
"Language-Team: Belarusian (http://www.transifex.com/freedesktop/fprintd/language/be/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: be\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Verify a fingerprint"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:2
|
||||
msgid "Privileges are required to verify fingerprints."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:3
|
||||
msgid "Enroll new fingerprints"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:4
|
||||
msgid "Privileges are required to enroll new fingerprints."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:5
|
||||
msgid "Select a user to enroll"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:6
|
||||
msgid "Privileges are required to enroll new fingerprints for other users."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/device.c:385
|
||||
#, c-format
|
||||
msgid "Device was not claimed before use"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/device.c:395
|
||||
#, c-format
|
||||
msgid "Device already in use by another user"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:31
|
||||
msgid "Place your finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:32
|
||||
#, c-format
|
||||
msgid "Place your finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:33
|
||||
msgid "Swipe your finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:34
|
||||
#, c-format
|
||||
msgid "Swipe your finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:36
|
||||
msgid "Place your left thumb on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:37
|
||||
#, c-format
|
||||
msgid "Place your left thumb on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:38
|
||||
msgid "Swipe your left thumb across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:39
|
||||
#, c-format
|
||||
msgid "Swipe your left thumb across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:41
|
||||
msgid "Place your left index finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:42
|
||||
#, c-format
|
||||
msgid "Place your left index finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:43
|
||||
msgid "Swipe your left index finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:44
|
||||
#, c-format
|
||||
msgid "Swipe your left index finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:46
|
||||
msgid "Place your left middle finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:47
|
||||
#, c-format
|
||||
msgid "Place your left middle finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:48
|
||||
msgid "Swipe your left middle finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:49
|
||||
#, c-format
|
||||
msgid "Swipe your left middle finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:51
|
||||
msgid "Place your left ring finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:52
|
||||
#, c-format
|
||||
msgid "Place your left ring finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:53
|
||||
msgid "Swipe your left ring finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:54
|
||||
#, c-format
|
||||
msgid "Swipe your left ring finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:56
|
||||
msgid "Place your left little finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:57
|
||||
#, c-format
|
||||
msgid "Place your left little finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:58
|
||||
msgid "Swipe your left little finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:59
|
||||
#, c-format
|
||||
msgid "Swipe your left little finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:61
|
||||
msgid "Place your right thumb on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:62
|
||||
#, c-format
|
||||
msgid "Place your right thumb on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:63
|
||||
msgid "Swipe your right thumb across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:64
|
||||
#, c-format
|
||||
msgid "Swipe your right thumb across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:66
|
||||
msgid "Place your right index finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:67
|
||||
#, c-format
|
||||
msgid "Place your right index finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:68
|
||||
msgid "Swipe your right index finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:69
|
||||
#, c-format
|
||||
msgid "Swipe your right index finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:71
|
||||
msgid "Place your right middle finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:72
|
||||
#, c-format
|
||||
msgid "Place your right middle finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:73
|
||||
msgid "Swipe your right middle finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:74
|
||||
#, c-format
|
||||
msgid "Swipe your right middle finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:76
|
||||
msgid "Place your right ring finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:77
|
||||
#, c-format
|
||||
msgid "Place your right ring finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:78
|
||||
msgid "Swipe your right ring finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:79
|
||||
#, c-format
|
||||
msgid "Swipe your right ring finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:81
|
||||
msgid "Place your right little finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:82
|
||||
#, c-format
|
||||
msgid "Place your right little finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:83
|
||||
msgid "Swipe your right little finger across the fingerprint reader"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:84
|
||||
#, c-format
|
||||
msgid "Swipe your right little finger across %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:131 ../pam/fingerprint-strings.h:157
|
||||
msgid "Place your finger on the reader again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:133 ../pam/fingerprint-strings.h:159
|
||||
msgid "Swipe your finger again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:136 ../pam/fingerprint-strings.h:162
|
||||
msgid "Swipe was too short, try again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:138 ../pam/fingerprint-strings.h:164
|
||||
msgid "Your finger was not centered, try swiping your finger again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:140 ../pam/fingerprint-strings.h:166
|
||||
msgid "Remove your finger, and try swiping your finger again"
|
||||
msgstr ""
|
||||
11
po/bg.po
11
po/bg.po
@ -4,13 +4,14 @@
|
||||
#
|
||||
# Translators:
|
||||
# Alexander Shopov <ash@kambanaria.org>, 2011
|
||||
# Tony Ivanov <duskull88@fastmail.fm>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"Last-Translator: hadess <hadess@hadess.net>\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-12-26 22:04+0000\n"
|
||||
"Last-Translator: Tony Ivanov <duskull88@fastmail.fm>\n"
|
||||
"Language-Team: Bulgarian (http://www.transifex.com/freedesktop/fprintd/language/bg/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -54,12 +55,12 @@ msgstr "Устройството е заето от друг потребите
|
||||
|
||||
#: ../pam/fingerprint-strings.h:31
|
||||
msgid "Place your finger on the fingerprint reader"
|
||||
msgstr ""
|
||||
msgstr "Поставете вашия пръст на четеца за пръстови отпечатъци"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:32
|
||||
#, c-format
|
||||
msgid "Place your finger on %s"
|
||||
msgstr ""
|
||||
msgstr "Поставете вашият пръст на %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:33
|
||||
msgid "Swipe your finger across the fingerprint reader"
|
||||
|
||||
172
po/bg_BG.po
172
po/bg_BG.po
@ -1,172 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?product=libfprint\n"
|
||||
"POT-Creation-Date: 2011-04-18 17:52+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Bulgarian (Bulgaria) (http://www.transifex.net/projects/p/freedesktop/language/bg_BG/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: bg_BG\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Enroll new fingerprints"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:2
|
||||
msgid "Privileges are required to enroll new fingerprints for other users."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:3
|
||||
msgid "Privileges are required to enroll new fingerprints."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:4
|
||||
msgid "Privileges are required to verify fingerprints."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:5
|
||||
msgid "Select a user to enroll"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:6
|
||||
msgid "Verify a fingerprint"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/device.c:385
|
||||
#, c-format
|
||||
msgid "Device was not claimed before use"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/device.c:395
|
||||
#, c-format
|
||||
msgid "Device already in use by another user"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:28
|
||||
#, c-format
|
||||
msgid "Place your left thumb on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:28
|
||||
#, c-format
|
||||
msgid "Swipe your left thumb on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:29
|
||||
#, c-format
|
||||
msgid "Place your left index finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:29
|
||||
#, c-format
|
||||
msgid "Swipe your left index finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:30
|
||||
#, c-format
|
||||
msgid "Place your left middle finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:30
|
||||
#, c-format
|
||||
msgid "Swipe your left middle finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:31
|
||||
#, c-format
|
||||
msgid "Place your left ring finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:31
|
||||
#, c-format
|
||||
msgid "Swipe your left ring finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:32
|
||||
#, c-format
|
||||
msgid "Place your left little finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:32
|
||||
#, c-format
|
||||
msgid "Swipe your left little finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:33
|
||||
#, c-format
|
||||
msgid "Place your right thumb on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:33
|
||||
#, c-format
|
||||
msgid "Swipe your right thumb on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:34
|
||||
#, c-format
|
||||
msgid "Place your right index finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:34
|
||||
#, c-format
|
||||
msgid "Swipe your right index finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:35
|
||||
#, c-format
|
||||
msgid "Place your right middle finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:35
|
||||
#, c-format
|
||||
msgid "Swipe your right middle finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:36
|
||||
#, c-format
|
||||
msgid "Place your right ring finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:36
|
||||
#, c-format
|
||||
msgid "Swipe your right ring finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:37
|
||||
#, c-format
|
||||
msgid "Place your right little finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:37
|
||||
#, c-format
|
||||
msgid "Swipe your right little finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:72 ../pam/fingerprint-strings.h:98
|
||||
msgid "Place your finger on the reader again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:74 ../pam/fingerprint-strings.h:100
|
||||
msgid "Swipe your finger again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:77 ../pam/fingerprint-strings.h:103
|
||||
msgid "Swipe was too short, try again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:79 ../pam/fingerprint-strings.h:105
|
||||
msgid "Your finger was not centered, try swiping your finger again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:81 ../pam/fingerprint-strings.h:107
|
||||
msgid "Remove your finger, and try swiping your finger again"
|
||||
msgstr ""
|
||||
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-08-03 17:23+0000\n"
|
||||
"Last-Translator: hadess <hadess@hadess.net>\n"
|
||||
"Language-Team: Bengali (India) (http://www.transifex.com/freedesktop/fprintd/language/bn_IN/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
4
po/ca.po
4
po/ca.po
@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2015-10-11 18:50+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:46+0000\n"
|
||||
"Last-Translator: Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>\n"
|
||||
"Language-Team: Catalan (http://www.transifex.com/freedesktop/fprintd/language/ca/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
@ -7,10 +7,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-08-03 17:23+0000\n"
|
||||
"Last-Translator: hadess <hadess@hadess.net>\n"
|
||||
"Language-Team: Catalan (Valencian) (http://www.transifex.com/freedesktop/fprintd/language/ca@valencia/)\n"
|
||||
"Language-Team: Catalan (Valencian) (http://www.transifex.com/freedesktop/fprintd/language/ca%40valencia/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
6
po/cs.po
6
po/cs.po
@ -8,15 +8,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
|
||||
"Language-Team: Czech (http://www.transifex.com/freedesktop/fprintd/language/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Verify a fingerprint"
|
||||
|
||||
2
po/cy.po
2
po/cy.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Welsh (http://www.transifex.com/freedesktop/fprintd/language/cy/)\n"
|
||||
|
||||
4
po/da.po
4
po/da.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-12-21 18:41+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 21:51+0000\n"
|
||||
"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
|
||||
"Language-Team: Danish (http://www.transifex.com/freedesktop/fprintd/language/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
4
po/de.po
4
po/de.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2014-09-22 15:28+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: Ettore Atalan <atalanttore@googlemail.com>\n"
|
||||
"Language-Team: German (http://www.transifex.com/freedesktop/fprintd/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
4
po/el.po
4
po/el.po
@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:46+0000\n"
|
||||
"Last-Translator: thanos <tomtryf@gmail.com>\n"
|
||||
"Language-Team: Greek (http://www.transifex.com/freedesktop/fprintd/language/el/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
|
||||
"Language-Team: English (United Kingdom) (http://www.transifex.com/freedesktop/fprintd/language/en_GB/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
4
po/eo.po
4
po/eo.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 10:24+0000\n"
|
||||
"Last-Translator: hadess <hadess@hadess.net>\n"
|
||||
"Language-Team: Esperanto (http://www.transifex.com/freedesktop/fprintd/language/eo/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
10
po/es.po
10
po/es.po
@ -3,16 +3,16 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Adolfo Jayme-Barrientos, 2015
|
||||
# Adolfo Jayme-Barrientos, 2014
|
||||
# Adolfo Jayme Barrientos, 2015
|
||||
# Adolfo Jayme Barrientos, 2014
|
||||
# Daniel Mustieles <inactive+leo@transifex.com>, 2012
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2015-03-14 20:15+0000\n"
|
||||
"Last-Translator: Adolfo Jayme-Barrientos\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: Adolfo Jayme Barrientos\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/freedesktop/fprintd/language/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
||||
2
po/et.po
2
po/et.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Estonian (http://www.transifex.com/freedesktop/fprintd/language/et/)\n"
|
||||
|
||||
2
po/eu.po
2
po/eu.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Basque (http://www.transifex.com/freedesktop/fprintd/language/eu/)\n"
|
||||
|
||||
4
po/fa.po
4
po/fa.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Persian (http://www.transifex.com/freedesktop/fprintd/language/fa/)\n"
|
||||
@ -15,7 +15,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fa\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Verify a fingerprint"
|
||||
|
||||
172
po/fa_IR.po
172
po/fa_IR.po
@ -1,172 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?product=libfprint\n"
|
||||
"POT-Creation-Date: 2011-04-18 17:52+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Persian (Iran) (http://www.transifex.net/projects/p/freedesktop/language/fa_IR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fa_IR\n"
|
||||
"Plural-Forms: nplurals=1; plural=0\n"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Enroll new fingerprints"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:2
|
||||
msgid "Privileges are required to enroll new fingerprints for other users."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:3
|
||||
msgid "Privileges are required to enroll new fingerprints."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:4
|
||||
msgid "Privileges are required to verify fingerprints."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:5
|
||||
msgid "Select a user to enroll"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:6
|
||||
msgid "Verify a fingerprint"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/device.c:385
|
||||
#, c-format
|
||||
msgid "Device was not claimed before use"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/device.c:395
|
||||
#, c-format
|
||||
msgid "Device already in use by another user"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:28
|
||||
#, c-format
|
||||
msgid "Place your left thumb on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:28
|
||||
#, c-format
|
||||
msgid "Swipe your left thumb on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:29
|
||||
#, c-format
|
||||
msgid "Place your left index finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:29
|
||||
#, c-format
|
||||
msgid "Swipe your left index finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:30
|
||||
#, c-format
|
||||
msgid "Place your left middle finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:30
|
||||
#, c-format
|
||||
msgid "Swipe your left middle finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:31
|
||||
#, c-format
|
||||
msgid "Place your left ring finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:31
|
||||
#, c-format
|
||||
msgid "Swipe your left ring finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:32
|
||||
#, c-format
|
||||
msgid "Place your left little finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:32
|
||||
#, c-format
|
||||
msgid "Swipe your left little finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:33
|
||||
#, c-format
|
||||
msgid "Place your right thumb on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:33
|
||||
#, c-format
|
||||
msgid "Swipe your right thumb on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:34
|
||||
#, c-format
|
||||
msgid "Place your right index finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:34
|
||||
#, c-format
|
||||
msgid "Swipe your right index finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:35
|
||||
#, c-format
|
||||
msgid "Place your right middle finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:35
|
||||
#, c-format
|
||||
msgid "Swipe your right middle finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:36
|
||||
#, c-format
|
||||
msgid "Place your right ring finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:36
|
||||
#, c-format
|
||||
msgid "Swipe your right ring finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:37
|
||||
#, c-format
|
||||
msgid "Place your right little finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:37
|
||||
#, c-format
|
||||
msgid "Swipe your right little finger on %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:72 ../pam/fingerprint-strings.h:98
|
||||
msgid "Place your finger on the reader again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:74 ../pam/fingerprint-strings.h:100
|
||||
msgid "Swipe your finger again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:77 ../pam/fingerprint-strings.h:103
|
||||
msgid "Swipe was too short, try again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:79 ../pam/fingerprint-strings.h:105
|
||||
msgid "Your finger was not centered, try swiping your finger again"
|
||||
msgstr ""
|
||||
|
||||
#: ../pam/fingerprint-strings.h:81 ../pam/fingerprint-strings.h:107
|
||||
msgid "Remove your finger, and try swiping your finger again"
|
||||
msgstr ""
|
||||
10
po/fi.po
10
po/fi.po
@ -3,15 +3,15 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Jiri Grönroos <jiri.gronroos@iki.fi>, 2013
|
||||
# Jiri Grönroos <jiri.gronroos@iki.fi>, 2013,2018
|
||||
# Ville Skyttä <ville.skytta@iki.fi>, 2011,2016
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2016-08-04 21:07+0000\n"
|
||||
"Last-Translator: Ville Skyttä <ville.skytta@iki.fi>\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2018-01-25 07:36+0000\n"
|
||||
"Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n"
|
||||
"Language-Team: Finnish (http://www.transifex.com/freedesktop/fprintd/language/fi/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -21,7 +21,7 @@ msgstr ""
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Verify a fingerprint"
|
||||
msgstr "Tarkista sormenjälki"
|
||||
msgstr "Vahvista sormenjälki"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:2
|
||||
msgid "Privileges are required to verify fingerprints."
|
||||
|
||||
4
po/fo.po
4
po/fo.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: hadess <hadess@hadess.net>\n"
|
||||
"Language-Team: Faroese (http://www.transifex.com/freedesktop/fprintd/language/fo/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
4
po/fr.po
4
po/fr.po
@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:42+0000\n"
|
||||
"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
|
||||
"Language-Team: French (http://www.transifex.com/freedesktop/fprintd/language/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
271
po/fur.po
Normal file
271
po/fur.po
Normal file
@ -0,0 +1,271 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Fabio Tomat <f.t.public@gmail.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-11-30 14:32+0000\n"
|
||||
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
|
||||
"Language-Team: Friulian (http://www.transifex.com/freedesktop/fprintd/language/fur/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: fur\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Verify a fingerprint"
|
||||
msgstr "Verifiche une impronte digjitâl"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:2
|
||||
msgid "Privileges are required to verify fingerprints."
|
||||
msgstr "I privileçs a son necessaris par verificâ lis improntis digjitâls."
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:3
|
||||
msgid "Enroll new fingerprints"
|
||||
msgstr "Regjistre gnovis improntis digjitâls"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:4
|
||||
msgid "Privileges are required to enroll new fingerprints."
|
||||
msgstr "I privileçs a son necessaris par regjistrâ gnovis improntis digjitâls."
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:5
|
||||
msgid "Select a user to enroll"
|
||||
msgstr "Selezione un utent di regjistrâ"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:6
|
||||
msgid "Privileges are required to enroll new fingerprints for other users."
|
||||
msgstr "I privileçs a son necessaris par regjistrâ gnovis improntis digjitâls par altris utents."
|
||||
|
||||
#: ../src/device.c:385
|
||||
#, c-format
|
||||
msgid "Device was not claimed before use"
|
||||
msgstr "Il dispositîf nol è stât rivendicât prime jessi doprât"
|
||||
|
||||
#: ../src/device.c:395
|
||||
#, c-format
|
||||
msgid "Device already in use by another user"
|
||||
msgstr "Il dispositîf al è za doprât di un altri utent"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:31
|
||||
msgid "Place your finger on the fingerprint reader"
|
||||
msgstr "Met il to dêt sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:32
|
||||
#, c-format
|
||||
msgid "Place your finger on %s"
|
||||
msgstr "Met il to dêt su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:33
|
||||
msgid "Swipe your finger across the fingerprint reader"
|
||||
msgstr "Fâs cori il to dêt sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:34
|
||||
#, c-format
|
||||
msgid "Swipe your finger across %s"
|
||||
msgstr "Fâs cori il to dêt su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:36
|
||||
msgid "Place your left thumb on the fingerprint reader"
|
||||
msgstr "Met il poleâr de man çampe sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:37
|
||||
#, c-format
|
||||
msgid "Place your left thumb on %s"
|
||||
msgstr "Met il poleâr de man çampe su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:38
|
||||
msgid "Swipe your left thumb across the fingerprint reader"
|
||||
msgstr "Fâs cori il poleâr de man çampe sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:39
|
||||
#, c-format
|
||||
msgid "Swipe your left thumb across %s"
|
||||
msgstr "Fâs cori il poleâr de man çampe su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:41
|
||||
msgid "Place your left index finger on the fingerprint reader"
|
||||
msgstr "Met l'indiç de man çampe sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:42
|
||||
#, c-format
|
||||
msgid "Place your left index finger on %s"
|
||||
msgstr "Met l'indiç de man çampe su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:43
|
||||
msgid "Swipe your left index finger across the fingerprint reader"
|
||||
msgstr "Fâs cori l'indiç de man çampe sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:44
|
||||
#, c-format
|
||||
msgid "Swipe your left index finger across %s"
|
||||
msgstr "Fâs cori l'indiç de man çampe su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:46
|
||||
msgid "Place your left middle finger on the fingerprint reader"
|
||||
msgstr "Met il dêt di mieç de man çampe sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:47
|
||||
#, c-format
|
||||
msgid "Place your left middle finger on %s"
|
||||
msgstr "Met il dêt di mieç de man çampe su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:48
|
||||
msgid "Swipe your left middle finger across the fingerprint reader"
|
||||
msgstr "Fâs cori il dêt di mieç de man çampe sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:49
|
||||
#, c-format
|
||||
msgid "Swipe your left middle finger across %s"
|
||||
msgstr "Fâs cori il dêt di mieç de man çampe su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:51
|
||||
msgid "Place your left ring finger on the fingerprint reader"
|
||||
msgstr "Met il dêt dal anel de man çampe sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:52
|
||||
#, c-format
|
||||
msgid "Place your left ring finger on %s"
|
||||
msgstr "Met il dêt dal anel de man çampe su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:53
|
||||
msgid "Swipe your left ring finger across the fingerprint reader"
|
||||
msgstr "Fâs cori il dêt dal anel de man çampe sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:54
|
||||
#, c-format
|
||||
msgid "Swipe your left ring finger across %s"
|
||||
msgstr "Fâs cori il dêt dal anel de man çampe su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:56
|
||||
msgid "Place your left little finger on the fingerprint reader"
|
||||
msgstr "Met il dêt piçul de man çampe su letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:57
|
||||
#, c-format
|
||||
msgid "Place your left little finger on %s"
|
||||
msgstr "Met il dêt piçul de man çampe su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:58
|
||||
msgid "Swipe your left little finger across the fingerprint reader"
|
||||
msgstr "Fâs cori il dêt piçul de man çampe su letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:59
|
||||
#, c-format
|
||||
msgid "Swipe your left little finger across %s"
|
||||
msgstr "Fâs cori il dêt piçul de man çampe su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:61
|
||||
msgid "Place your right thumb on the fingerprint reader"
|
||||
msgstr "Met il poleâr de man drete sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:62
|
||||
#, c-format
|
||||
msgid "Place your right thumb on %s"
|
||||
msgstr "Met il poleâr de man drete su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:63
|
||||
msgid "Swipe your right thumb across the fingerprint reader"
|
||||
msgstr "Fâs cori il poleâr de man drete sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:64
|
||||
#, c-format
|
||||
msgid "Swipe your right thumb across %s"
|
||||
msgstr "Fâs cori il poleâr de man drete su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:66
|
||||
msgid "Place your right index finger on the fingerprint reader"
|
||||
msgstr "Met l'indiç de man drete sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:67
|
||||
#, c-format
|
||||
msgid "Place your right index finger on %s"
|
||||
msgstr "Met l'indiç de man drete su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:68
|
||||
msgid "Swipe your right index finger across the fingerprint reader"
|
||||
msgstr "Fâs cori l'indiç de man drete sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:69
|
||||
#, c-format
|
||||
msgid "Swipe your right index finger across %s"
|
||||
msgstr "Fâs cori l'indiç de man drete su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:71
|
||||
msgid "Place your right middle finger on the fingerprint reader"
|
||||
msgstr "Met il dêt di mieç de man drete sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:72
|
||||
#, c-format
|
||||
msgid "Place your right middle finger on %s"
|
||||
msgstr "Met il dêt di mieç de man drete su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:73
|
||||
msgid "Swipe your right middle finger across the fingerprint reader"
|
||||
msgstr "Fâs cori il dêt di mieç de man drete sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:74
|
||||
#, c-format
|
||||
msgid "Swipe your right middle finger across %s"
|
||||
msgstr "Fâs cori il dêt di mieç de man drete su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:76
|
||||
msgid "Place your right ring finger on the fingerprint reader"
|
||||
msgstr "Met il dêt dal anel de man drete sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:77
|
||||
#, c-format
|
||||
msgid "Place your right ring finger on %s"
|
||||
msgstr "Met il dêt dal anel de man drete su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:78
|
||||
msgid "Swipe your right ring finger across the fingerprint reader"
|
||||
msgstr "Fâs cori il dêt dal anel de man drete sul letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:79
|
||||
#, c-format
|
||||
msgid "Swipe your right ring finger across %s"
|
||||
msgstr "Fâs cori il dêt dal anel de man drete su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:81
|
||||
msgid "Place your right little finger on the fingerprint reader"
|
||||
msgstr "Met il dêt piçul de man drete su letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:82
|
||||
#, c-format
|
||||
msgid "Place your right little finger on %s"
|
||||
msgstr "Met il dêt piçul de man drete su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:83
|
||||
msgid "Swipe your right little finger across the fingerprint reader"
|
||||
msgstr "Fâs cori il dêt piçul de man drete su letôr di improntis digjitâls"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:84
|
||||
#, c-format
|
||||
msgid "Swipe your right little finger across %s"
|
||||
msgstr "Fâs cori il dêt piçul de man drete su %s"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:131 ../pam/fingerprint-strings.h:157
|
||||
msgid "Place your finger on the reader again"
|
||||
msgstr "Torne met il dêt sul letôr"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:133 ../pam/fingerprint-strings.h:159
|
||||
msgid "Swipe your finger again"
|
||||
msgstr "Torne fâs cori il dêt"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:136 ../pam/fingerprint-strings.h:162
|
||||
msgid "Swipe was too short, try again"
|
||||
msgstr "La passade e jere masse curte, torne prove"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:138 ../pam/fingerprint-strings.h:164
|
||||
msgid "Your finger was not centered, try swiping your finger again"
|
||||
msgstr "Il dêt nol jere centrât, prove a tornâ a fâ cori il dêt di gnûf"
|
||||
|
||||
#: ../pam/fingerprint-strings.h:140 ../pam/fingerprint-strings.h:166
|
||||
msgid "Remove your finger, and try swiping your finger again"
|
||||
msgstr "Gjave il dêt e prove a tornâ a fâ cori il dêt di gnûf"
|
||||
4
po/ga.po
4
po/ga.po
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-08-03 17:23+0000\n"
|
||||
"Last-Translator: hadess <hadess@hadess.net>\n"
|
||||
"Language-Team: Irish (http://www.transifex.com/freedesktop/fprintd/language/ga/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
4
po/gl.po
4
po/gl.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-23 18:02+0000\n"
|
||||
"Last-Translator: Fran Diéguez <frandieguez@ubuntu.com>\n"
|
||||
"Language-Team: Galician (http://www.transifex.com/freedesktop/fprintd/language/gl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
2
po/gu.po
2
po/gu.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Gujarati (http://www.transifex.com/freedesktop/fprintd/language/gu/)\n"
|
||||
|
||||
6
po/he.po
6
po/he.po
@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-08-03 17:23+0000\n"
|
||||
"Last-Translator: hadess <hadess@hadess.net>\n"
|
||||
"Language-Team: Hebrew (http://www.transifex.com/freedesktop/fprintd/language/he/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: he\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Verify a fingerprint"
|
||||
|
||||
4
po/hi.po
4
po/hi.po
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-08-03 17:23+0000\n"
|
||||
"Last-Translator: hadess <hadess@hadess.net>\n"
|
||||
"Language-Team: Hindi (http://www.transifex.com/freedesktop/fprintd/language/hi/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
4
po/hr.po
4
po/hr.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 14:12+0000\n"
|
||||
"Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
|
||||
"Language-Team: Croatian (http://www.transifex.com/freedesktop/fprintd/language/hr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
4
po/hu.po
4
po/hu.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: kelemeng <kelemeng@ubuntu.com>\n"
|
||||
"Language-Team: Hungarian (http://www.transifex.com/freedesktop/fprintd/language/hu/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
4
po/ia.po
4
po/ia.po
@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2015-10-18 19:57+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 14:10+0000\n"
|
||||
"Last-Translator: Martijn Dekker <mcdutchie@hotmail.com>\n"
|
||||
"Language-Team: Interlingua (http://www.transifex.com/freedesktop/fprintd/language/ia/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
4
po/id.po
4
po/id.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
|
||||
"Language-Team: Indonesian (http://www.transifex.com/freedesktop/fprintd/language/id/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
4
po/it.po
4
po/it.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: Milo Casagrande <milo@ubuntu.com>\n"
|
||||
"Language-Team: Italian (http://www.transifex.com/freedesktop/fprintd/language/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
8
po/ja.po
8
po/ja.po
@ -3,14 +3,14 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Tomoyuki KATO <tomo@dream.daynight.jp>, 2011, 2012
|
||||
# Tomoyuki KATO <inactive+katomo@transifex.com>, 2011, 2012
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"Last-Translator: Tomoyuki KATO <tomo@dream.daynight.jp>\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 10:41+0000\n"
|
||||
"Last-Translator: Tomoyuki KATO <inactive+katomo@transifex.com>\n"
|
||||
"Language-Team: Japanese (http://www.transifex.com/freedesktop/fprintd/language/ja/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
||||
4
po/ka.po
4
po/ka.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Georgian (http://www.transifex.com/freedesktop/fprintd/language/ka/)\n"
|
||||
@ -15,7 +15,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: ka\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Verify a fingerprint"
|
||||
|
||||
6
po/kk.po
6
po/kk.po
@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-08-03 17:23+0000\n"
|
||||
"Last-Translator: hadess <hadess@hadess.net>\n"
|
||||
"Language-Team: Kazakh (http://www.transifex.com/freedesktop/fprintd/language/kk/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: kk\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Verify a fingerprint"
|
||||
|
||||
4
po/kn.po
4
po/kn.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Kannada (http://www.transifex.com/freedesktop/fprintd/language/kn/)\n"
|
||||
@ -15,7 +15,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: kn\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Verify a fingerprint"
|
||||
|
||||
4
po/ko.po
4
po/ko.po
@ -13,8 +13,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2015-01-17 11:53+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:46+0000\n"
|
||||
"Last-Translator: Shinjo Park <kde@peremen.name>\n"
|
||||
"Language-Team: Korean (http://www.transifex.com/freedesktop/fprintd/language/ko/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
6
po/lt.po
6
po/lt.po
@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-08-03 17:23+0000\n"
|
||||
"Last-Translator: hadess <hadess@hadess.net>\n"
|
||||
"Language-Team: Lithuanian (http://www.transifex.com/freedesktop/fprintd/language/lt/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: lt\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Verify a fingerprint"
|
||||
|
||||
4
po/lv.po
4
po/lv.po
@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 10:32+0000\n"
|
||||
"Last-Translator: Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>\n"
|
||||
"Language-Team: Latvian (http://www.transifex.com/freedesktop/fprintd/language/lv/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
2
po/ml.po
2
po/ml.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Malayalam (http://www.transifex.com/freedesktop/fprintd/language/ml/)\n"
|
||||
|
||||
2
po/mr.po
2
po/mr.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Marathi (http://www.transifex.com/freedesktop/fprintd/language/mr/)\n"
|
||||
|
||||
2
po/ms.po
2
po/ms.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Malay (http://www.transifex.com/freedesktop/fprintd/language/ms/)\n"
|
||||
|
||||
2
po/nb.po
2
po/nb.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Norwegian Bokmål (http://www.transifex.com/freedesktop/fprintd/language/nb/)\n"
|
||||
|
||||
4
po/nl.po
4
po/nl.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 10:52+0000\n"
|
||||
"Last-Translator: Richard E. van der Luit <nippur@fedoraproject.org>\n"
|
||||
"Language-Team: Dutch (http://www.transifex.com/freedesktop/fprintd/language/nl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
2
po/nn.po
2
po/nn.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Norwegian Nynorsk (http://www.transifex.com/freedesktop/fprintd/language/nn/)\n"
|
||||
|
||||
4
po/oc.po
4
po/oc.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2016-02-26 17:03+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-23 20:04+0000\n"
|
||||
"Last-Translator: Cédric Valmary <cvalmary@yahoo.fr>\n"
|
||||
"Language-Team: Occitan (post 1500) (http://www.transifex.com/freedesktop/fprintd/language/oc/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
2
po/or.po
2
po/or.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Oriya (http://www.transifex.com/freedesktop/fprintd/language/or/)\n"
|
||||
|
||||
8
po/pa.po
8
po/pa.po
@ -3,14 +3,14 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# A S Alam <apreet.alam@gmail.com>, 2012-2013
|
||||
# A S Alam <alam.yellow@gmail.com>, 2012-2013
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"Last-Translator: A S Alam <apreet.alam@gmail.com>\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:46+0000\n"
|
||||
"Last-Translator: A S Alam <alam.yellow@gmail.com>\n"
|
||||
"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/freedesktop/fprintd/language/pa/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
||||
6
po/pl.po
6
po/pl.po
@ -8,15 +8,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2016-08-29 15:56+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||
"Language-Team: Polish (http://www.transifex.com/freedesktop/fprintd/language/pl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: pl\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Verify a fingerprint"
|
||||
|
||||
4
po/pt.po
4
po/pt.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2015-12-01 10:12+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 21:51+0000\n"
|
||||
"Last-Translator: Pedro Albuquerque <palbuquerque73@gmail.com>\n"
|
||||
"Language-Team: Portuguese (http://www.transifex.com/freedesktop/fprintd/language/pt/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 11:53+0000\n"
|
||||
"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>\n"
|
||||
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/freedesktop/fprintd/language/pt_BR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
4
po/ro.po
4
po/ro.po
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: hadess <hadess@hadess.net>\n"
|
||||
"Language-Team: Romanian (http://www.transifex.com/freedesktop/fprintd/language/ro/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
4
po/ru.po
4
po/ru.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:46+0000\n"
|
||||
"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
|
||||
"Language-Team: Russian (http://www.transifex.com/freedesktop/fprintd/language/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
10
po/sk.po
10
po/sk.po
@ -3,21 +3,21 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# pavolzetor <pavol@klacansky.com>, 2012
|
||||
# pavolzetor <inactive+pavolzetor@transifex.com>, 2012
|
||||
# Pavol Šimo <palo.simo@gmail.com>, 2011
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"Last-Translator: pavolzetor <pavol@klacansky.com>\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:37+0000\n"
|
||||
"Last-Translator: pavolzetor <inactive+pavolzetor@transifex.com>\n"
|
||||
"Language-Team: Slovak (http://www.transifex.com/freedesktop/fprintd/language/sk/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: sk\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Verify a fingerprint"
|
||||
|
||||
4
po/sl.po
4
po/sl.po
@ -9,8 +9,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: Matej Urbančič <>\n"
|
||||
"Language-Team: Slovenian (http://www.transifex.com/freedesktop/fprintd/language/sl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
2
po/sq.po
2
po/sq.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Albanian (http://www.transifex.com/freedesktop/fprintd/language/sq/)\n"
|
||||
|
||||
4
po/sr.po
4
po/sr.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2014-11-22 10:45+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
|
||||
"Language-Team: Serbian (http://www.transifex.com/freedesktop/fprintd/language/sr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
@ -7,10 +7,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-08-03 17:23+0000\n"
|
||||
"Last-Translator: hadess <hadess@hadess.net>\n"
|
||||
"Language-Team: Serbian (Latin) (http://www.transifex.com/freedesktop/fprintd/language/sr@latin/)\n"
|
||||
"Language-Team: Serbian (Latin) (http://www.transifex.com/freedesktop/fprintd/language/sr%40latin/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
4
po/sv.po
4
po/sv.po
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2014-11-12 22:15+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: Anders Jonsson <transifex@norsjovallen.se>\n"
|
||||
"Language-Team: Swedish (http://www.transifex.com/freedesktop/fprintd/language/sv/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
2
po/ta.po
2
po/ta.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Tamil (http://www.transifex.com/freedesktop/fprintd/language/ta/)\n"
|
||||
|
||||
4
po/te.po
4
po/te.po
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-08-03 17:23+0000\n"
|
||||
"Last-Translator: hadess <hadess@hadess.net>\n"
|
||||
"Language-Team: Telugu (http://www.transifex.com/freedesktop/fprintd/language/te/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
2
po/th.po
2
po/th.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Thai (http://www.transifex.com/freedesktop/fprintd/language/th/)\n"
|
||||
|
||||
6
po/tr.po
6
po/tr.po
@ -3,13 +3,13 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Caner Başaran <basaran.caner@gmail.com>, 2014
|
||||
# Caner Başaran <basaran.caner@protonmail.com>, 2014
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2014-11-11 23:12+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:46+0000\n"
|
||||
"Last-Translator: Necdet Yücel <necdetyucel@gmail.com>\n"
|
||||
"Language-Team: Turkish (http://www.transifex.com/freedesktop/fprintd/language/tr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
6
po/uk.po
6
po/uk.po
@ -9,15 +9,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
|
||||
"Language-Team: Ukrainian (http://www.transifex.com/freedesktop/fprintd/language/uk/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Language: uk\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
|
||||
|
||||
#: ../data/net.reactivated.fprint.device.policy.in.h:1
|
||||
msgid "Verify a fingerprint"
|
||||
|
||||
2
po/vi.po
2
po/vi.po
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Vietnamese (http://www.transifex.com/freedesktop/fprintd/language/vi/)\n"
|
||||
|
||||
4
po/wa.po
4
po/wa.po
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-08-03 17:23+0000\n"
|
||||
"Last-Translator: hadess <hadess@hadess.net>\n"
|
||||
"Language-Team: Walloon (http://www.transifex.com/freedesktop/fprintd/language/wa/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
@ -10,8 +10,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2015-11-09 14:46+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:46+0000\n"
|
||||
"Last-Translator: Mingye Wang <arthur200126@gmail.com>\n"
|
||||
"Language-Team: Chinese (China) (http://www.transifex.com/freedesktop/fprintd/language/zh_CN/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2010-11-30 07:44+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Chinese (Hong Kong) (http://www.transifex.com/freedesktop/fprintd/language/zh_HK/)\n"
|
||||
|
||||
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: fprintd\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-13 17:12+0200\n"
|
||||
"PO-Revision-Date: 2013-11-20 10:37+0000\n"
|
||||
"POT-Creation-Date: 2018-02-06 14:07+0100\n"
|
||||
"PO-Revision-Date: 2017-09-19 09:08+0000\n"
|
||||
"Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
|
||||
"Language-Team: Chinese (Taiwan) (http://www.transifex.com/freedesktop/fprintd/language/zh_TW/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
@ -7,7 +7,13 @@ EXTRA_DIST = manager.xml device.xml fprintd-marshal.list
|
||||
libexec_PROGRAMS = fprintd
|
||||
noinst_LTLIBRARIES = libfprintd.la
|
||||
|
||||
AM_CFLAGS = $(WARN_CFLAGS) $(FPRINT_CFLAGS) $(DAEMON_CFLAGS) -DLOCALEDIR=\""$(datadir)/locale"\" -DPLUGINDIR=\""$(libdir)/fprintd/modules"\"
|
||||
AM_CFLAGS = \
|
||||
$(WARN_CFLAGS) \
|
||||
$(FPRINT_CFLAGS) \
|
||||
$(DAEMON_CFLAGS) \
|
||||
-DG_LOG_DOMAIN=\""fprintd"\" \
|
||||
-DLOCALEDIR=\""$(datadir)/locale"\" \
|
||||
-DPLUGINDIR=\""$(libdir)/fprintd/modules"\"
|
||||
|
||||
libfprintd_la_SOURCES = \
|
||||
manager.c device.c \
|
||||
@ -18,6 +24,7 @@ libfprintd_la_LDFLAGS = -no-undefined
|
||||
|
||||
fprintd_SOURCES = \
|
||||
main.c \
|
||||
loop.c loop.h \
|
||||
file_storage.c file_storage.h storage.h
|
||||
fprintd_LDADD = libfprintd.la
|
||||
|
||||
@ -42,3 +49,7 @@ fprintd-marshal.h: fprintd-marshal.list
|
||||
fprintd-marshal.c: fprintd-marshal.h
|
||||
( $(GLIB_GENMARSHAL) --prefix=fprintd_marshal $(srcdir)/fprintd-marshal.list --body --header > fprintd-marshal.c )
|
||||
|
||||
install-data-hook:
|
||||
if test -w $(DESTDIR)$(prefix)/; then \
|
||||
mkdir -p $(DESTDIR)$(localstatedir)/lib/fprint; \
|
||||
fi
|
||||
|
||||
159
src/device.c
159
src/device.c
@ -402,7 +402,7 @@ static gboolean
|
||||
_fprint_device_check_polkit_for_action (FprintDevice *rdev, DBusGMethodInvocation *context, const char *action, GError **error)
|
||||
{
|
||||
FprintDevicePrivate *priv = DEVICE_GET_PRIVATE(rdev);
|
||||
const char *sender;
|
||||
char *sender;
|
||||
PolkitSubject *subject;
|
||||
PolkitAuthorizationResult *result;
|
||||
GError *_error = NULL;
|
||||
@ -410,6 +410,7 @@ _fprint_device_check_polkit_for_action (FprintDevice *rdev, DBusGMethodInvocatio
|
||||
/* Check that caller is privileged */
|
||||
sender = dbus_g_method_get_sender (context);
|
||||
subject = polkit_system_bus_name_new (sender);
|
||||
g_free (sender);
|
||||
|
||||
result = polkit_authority_check_authorization_sync (priv->auth,
|
||||
subject,
|
||||
@ -468,7 +469,6 @@ _fprint_device_check_for_username (FprintDevice *rdev,
|
||||
char *sender;
|
||||
unsigned long uid;
|
||||
struct passwd *user;
|
||||
char *client_username;
|
||||
|
||||
/* Get details about the current sender, and username/uid */
|
||||
conn = dbus_g_connection_get_connection (fprintd_dbus_conn);
|
||||
@ -489,17 +489,16 @@ _fprint_device_check_for_username (FprintDevice *rdev,
|
||||
"Failed to get information about user UID %lu", uid);
|
||||
return NULL;
|
||||
}
|
||||
client_username = g_strdup (user->pw_name);
|
||||
|
||||
/* The current user is usually allowed to access their
|
||||
* own data, this should be followed by PolicyKit checks
|
||||
* anyway */
|
||||
if (username == NULL || *username == '\0' || g_str_equal (username, client_username)) {
|
||||
if (username == NULL || *username == '\0' || g_str_equal (username, user->pw_name)) {
|
||||
if (ret_sender != NULL)
|
||||
*ret_sender = sender;
|
||||
else
|
||||
g_free (sender);
|
||||
return client_username;
|
||||
return g_strdup (user->pw_name);
|
||||
}
|
||||
|
||||
/* If we're not allowed to set a different username,
|
||||
@ -557,7 +556,12 @@ _fprint_device_client_vanished (GDBusConnection *connection,
|
||||
|
||||
/* Close the claimed device as well */
|
||||
if (priv->dev) {
|
||||
fp_async_dev_close (priv->dev, action_stop_cb, &done);
|
||||
struct fp_dev *dev;
|
||||
|
||||
dev = priv->dev;
|
||||
priv->dev = NULL;
|
||||
|
||||
fp_async_dev_close (dev, action_stop_cb, &done);
|
||||
while (done == FALSE)
|
||||
g_main_context_iteration (NULL, TRUE);
|
||||
}
|
||||
@ -600,10 +604,10 @@ static void dev_open_cb(struct fp_dev *dev, int status, void *user_data)
|
||||
FprintDevicePrivate *priv = DEVICE_GET_PRIVATE(rdev);
|
||||
struct session_data *session = priv->session;
|
||||
|
||||
g_message("device %d claim status %d", priv->id, status);
|
||||
g_debug("device %d claim status %d", priv->id, status);
|
||||
|
||||
if (status != 0) {
|
||||
GError *error;
|
||||
GError *error = NULL;
|
||||
|
||||
g_free (priv->sender);
|
||||
priv->sender = NULL;
|
||||
@ -611,6 +615,7 @@ static void dev_open_cb(struct fp_dev *dev, int status, void *user_data)
|
||||
g_set_error(&error, FPRINT_ERROR, FPRINT_ERROR_INTERNAL,
|
||||
"Open failed with error %d", status);
|
||||
dbus_g_method_return_error(session->context_claim_device, error);
|
||||
g_error_free(error);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -632,6 +637,7 @@ static void fprint_device_claim(FprintDevice *rdev,
|
||||
g_set_error(&error, FPRINT_ERROR, FPRINT_ERROR_ALREADY_IN_USE,
|
||||
"Device was already claimed");
|
||||
dbus_g_method_return_error(context, error);
|
||||
g_error_free(error);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -658,6 +664,7 @@ static void fprint_device_claim(FprintDevice *rdev,
|
||||
g_free (sender);
|
||||
g_free (user);
|
||||
dbus_g_method_return_error (context, error);
|
||||
g_error_free (error);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -666,7 +673,7 @@ static void fprint_device_claim(FprintDevice *rdev,
|
||||
priv->username = user;
|
||||
priv->sender = sender;
|
||||
|
||||
g_message ("user '%s' claiming the device: %d", priv->username, priv->id);
|
||||
g_debug ("user '%s' claiming the device: %d", priv->username, priv->id);
|
||||
|
||||
priv->session = g_slice_new0(struct session_data);
|
||||
priv->session->context_claim_device = context;
|
||||
@ -684,6 +691,7 @@ static void fprint_device_claim(FprintDevice *rdev,
|
||||
g_set_error(&error, FPRINT_ERROR, FPRINT_ERROR_INTERNAL,
|
||||
"Could not attempt device open, error %d", r);
|
||||
dbus_g_method_return_error(context, error);
|
||||
g_error_free(error);
|
||||
}
|
||||
}
|
||||
|
||||
@ -704,7 +712,7 @@ static void dev_close_cb(struct fp_dev *dev, void *user_data)
|
||||
g_free (priv->username);
|
||||
priv->username = NULL;
|
||||
|
||||
g_message("released device %d", priv->id);
|
||||
g_debug("released device %d", priv->id);
|
||||
dbus_g_method_return(context);
|
||||
}
|
||||
|
||||
@ -717,6 +725,7 @@ static void fprint_device_release(FprintDevice *rdev,
|
||||
|
||||
if (_fprint_device_check_claimed(rdev, context, &error) == FALSE) {
|
||||
dbus_g_method_return_error (context, error);
|
||||
g_error_free(error);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -726,16 +735,44 @@ static void fprint_device_release(FprintDevice *rdev,
|
||||
"net.reactivated.fprint.device.enroll",
|
||||
&error) == FALSE) {
|
||||
dbus_g_method_return_error (context, error);
|
||||
g_error_free(error);
|
||||
return;
|
||||
}
|
||||
|
||||
session->context_release_device = context;
|
||||
if (priv->dev)
|
||||
fp_async_dev_close(priv->dev, dev_close_cb, rdev);
|
||||
if (priv->dev) {
|
||||
struct fp_dev *dev;
|
||||
|
||||
dev = priv->dev;
|
||||
priv->dev = NULL;
|
||||
fp_async_dev_close(dev, dev_close_cb, rdev);
|
||||
}
|
||||
}
|
||||
|
||||
static void verify_cb(struct fp_dev *dev, int r, struct fp_img *img,
|
||||
void *user_data)
|
||||
static void verify_cb(struct fp_dev *dev,
|
||||
int r,
|
||||
struct fp_img *img,
|
||||
void *user_data);
|
||||
|
||||
static void
|
||||
verify_restart_cb(struct fp_dev *dev,
|
||||
void *user_data)
|
||||
{
|
||||
struct FprintDevice *rdev = user_data;
|
||||
FprintDevicePrivate *priv = DEVICE_GET_PRIVATE(rdev);
|
||||
|
||||
if (priv->current_action != ACTION_VERIFY)
|
||||
return;
|
||||
|
||||
g_debug("verify_restart_cb: restarting verification");
|
||||
fp_async_verify_start(priv->dev, priv->verify_data, verify_cb, rdev);
|
||||
}
|
||||
|
||||
static void
|
||||
verify_cb(struct fp_dev *dev,
|
||||
int r,
|
||||
struct fp_img *img,
|
||||
void *user_data)
|
||||
{
|
||||
struct FprintDevice *rdev = user_data;
|
||||
FprintDevicePrivate *priv = DEVICE_GET_PRIVATE(rdev);
|
||||
@ -744,10 +781,22 @@ static void verify_cb(struct fp_dev *dev, int r, struct fp_img *img,
|
||||
if (priv->action_done != FALSE)
|
||||
return;
|
||||
|
||||
g_message("verify_cb: result %s (%d)", name, r);
|
||||
g_debug("verify_cb: result %s (%d)", name, r);
|
||||
|
||||
if (r == FP_VERIFY_NO_MATCH || r == FP_VERIFY_MATCH || r < 0)
|
||||
priv->action_done = TRUE;
|
||||
if (r == FP_VERIFY_RETRY ||
|
||||
r == FP_VERIFY_RETRY_TOO_SHORT ||
|
||||
r == FP_VERIFY_RETRY_CENTER_FINGER ||
|
||||
r == FP_VERIFY_RETRY_REMOVE_FINGER) {
|
||||
g_debug ("verify_cb: stopping current verification to retry");
|
||||
fp_img_free(img);
|
||||
if (fp_async_verify_stop(priv->dev, verify_restart_cb, user_data) == 0) {
|
||||
g_signal_emit(rdev, signals[SIGNAL_VERIFY_STATUS], 0, name, priv->action_done);
|
||||
return;
|
||||
}
|
||||
/* fallthrough to error out if restarting failed */
|
||||
}
|
||||
|
||||
priv->action_done = TRUE;
|
||||
set_disconnected (priv, name);
|
||||
g_signal_emit(rdev, signals[SIGNAL_VERIFY_STATUS], 0, name, priv->action_done);
|
||||
fp_img_free(img);
|
||||
@ -758,8 +807,32 @@ static void verify_cb(struct fp_dev *dev, int r, struct fp_img *img,
|
||||
}
|
||||
}
|
||||
|
||||
static void identify_cb(struct fp_dev *dev, int r,
|
||||
size_t match_offset, struct fp_img *img, void *user_data)
|
||||
static void identify_cb(struct fp_dev *dev,
|
||||
int r,
|
||||
size_t match_offset,
|
||||
struct fp_img *img,
|
||||
void *user_data);
|
||||
|
||||
static void
|
||||
identify_restart_cb(struct fp_dev *dev,
|
||||
void *user_data)
|
||||
{
|
||||
struct FprintDevice *rdev = user_data;
|
||||
FprintDevicePrivate *priv = DEVICE_GET_PRIVATE(rdev);
|
||||
|
||||
if (priv->current_action != ACTION_IDENTIFY)
|
||||
return;
|
||||
|
||||
g_debug("identify_restart_cb: restarting identification");
|
||||
fp_async_identify_start (priv->dev, priv->identify_data, identify_cb, rdev);
|
||||
}
|
||||
|
||||
static void
|
||||
identify_cb(struct fp_dev *dev,
|
||||
int r,
|
||||
size_t match_offset,
|
||||
struct fp_img *img,
|
||||
void *user_data)
|
||||
{
|
||||
struct FprintDevice *rdev = user_data;
|
||||
FprintDevicePrivate *priv = DEVICE_GET_PRIVATE(rdev);
|
||||
@ -768,10 +841,22 @@ static void identify_cb(struct fp_dev *dev, int r,
|
||||
if (priv->action_done != FALSE)
|
||||
return;
|
||||
|
||||
g_message("identify_cb: result %s (%d)", name, r);
|
||||
g_debug("identify_cb: result %s (%d)", name, r);
|
||||
|
||||
if (r == FP_VERIFY_NO_MATCH || r == FP_VERIFY_MATCH || r < 0)
|
||||
priv->action_done = TRUE;
|
||||
if (r == FP_VERIFY_RETRY ||
|
||||
r == FP_VERIFY_RETRY_TOO_SHORT ||
|
||||
r == FP_VERIFY_RETRY_CENTER_FINGER ||
|
||||
r == FP_VERIFY_RETRY_REMOVE_FINGER) {
|
||||
g_debug ("identify_cb: stopping current identification to retry");
|
||||
fp_img_free(img);
|
||||
if (fp_async_identify_stop(priv->dev, identify_restart_cb, user_data) == 0) {
|
||||
g_signal_emit(rdev, signals[SIGNAL_VERIFY_STATUS], 0, name, priv->action_done);
|
||||
return;
|
||||
}
|
||||
/* fallthrough to error out if restarting failed */
|
||||
}
|
||||
|
||||
priv->action_done = TRUE;
|
||||
set_disconnected (priv, name);
|
||||
g_signal_emit(rdev, signals[SIGNAL_VERIFY_STATUS], 0, name, priv->action_done);
|
||||
fp_img_free(img);
|
||||
@ -829,6 +914,7 @@ static void fprint_device_verify_start(FprintDevice *rdev,
|
||||
g_set_error(&error, FPRINT_ERROR, FPRINT_ERROR_NO_ENROLLED_PRINTS,
|
||||
"No fingerprints enrolled");
|
||||
dbus_g_method_return_error(context, error);
|
||||
g_error_free(error);
|
||||
return;
|
||||
}
|
||||
if (fp_dev_supports_identification(priv->dev)) {
|
||||
@ -838,7 +924,7 @@ static void fprint_device_verify_start(FprintDevice *rdev,
|
||||
array = g_ptr_array_new ();
|
||||
|
||||
for (l = prints; l != NULL; l = l->next) {
|
||||
g_message ("adding finger %d to the gallery", GPOINTER_TO_INT (l->data));
|
||||
g_debug ("adding finger %d to the gallery", GPOINTER_TO_INT (l->data));
|
||||
r = store.print_data_load(priv->dev, GPOINTER_TO_INT (l->data),
|
||||
&data, priv->username);
|
||||
if (r == 0)
|
||||
@ -868,12 +954,12 @@ static void fprint_device_verify_start(FprintDevice *rdev,
|
||||
}
|
||||
priv->current_action = ACTION_IDENTIFY;
|
||||
|
||||
g_message ("start identification device %d", priv->id);
|
||||
g_debug ("start identification device %d", priv->id);
|
||||
r = fp_async_identify_start (priv->dev, gallery, identify_cb, rdev);
|
||||
} else {
|
||||
priv->current_action = ACTION_VERIFY;
|
||||
|
||||
g_message("start verification device %d finger %d", priv->id, finger_num);
|
||||
g_debug("start verification device %d finger %d", priv->id, finger_num);
|
||||
|
||||
r = store.print_data_load(priv->dev, (enum fp_finger)finger_num,
|
||||
&data, priv->username);
|
||||
@ -882,6 +968,7 @@ static void fprint_device_verify_start(FprintDevice *rdev,
|
||||
g_set_error(&error, FPRINT_ERROR, FPRINT_ERROR_INTERNAL,
|
||||
"No such print %d", finger_num);
|
||||
dbus_g_method_return_error(context, error);
|
||||
g_error_free(error);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -906,6 +993,7 @@ static void fprint_device_verify_start(FprintDevice *rdev,
|
||||
g_set_error(&error, FPRINT_ERROR, FPRINT_ERROR_INTERNAL,
|
||||
"Verify start failed with error %d", r);
|
||||
dbus_g_method_return_error(context, error);
|
||||
g_error_free(error);
|
||||
return;
|
||||
}
|
||||
priv->verify_data = data;
|
||||
@ -933,11 +1021,13 @@ static void fprint_device_verify_stop(FprintDevice *rdev,
|
||||
|
||||
if (_fprint_device_check_claimed(rdev, context, &error) == FALSE) {
|
||||
dbus_g_method_return_error (context, error);
|
||||
g_error_free(error);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_fprint_device_check_polkit_for_action (rdev, context, "net.reactivated.fprint.device.verify", &error) == FALSE) {
|
||||
dbus_g_method_return_error (context, error);
|
||||
g_error_free(error);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -970,6 +1060,13 @@ static void fprint_device_verify_stop(FprintDevice *rdev,
|
||||
return;
|
||||
}
|
||||
|
||||
if (r == -EINPROGRESS) {
|
||||
g_debug ("%s stop already in progress",
|
||||
priv->current_action == ACTION_VERIFY ? "verification" : "identification");
|
||||
dbus_g_method_return(context);
|
||||
r = 0;
|
||||
}
|
||||
|
||||
if (r < 0) {
|
||||
g_set_error(&error, FPRINT_ERROR, FPRINT_ERROR_INTERNAL,
|
||||
"Verify stop failed with error %d", r);
|
||||
@ -995,7 +1092,7 @@ static void enroll_stage_cb(struct fp_dev *dev, int result,
|
||||
if (priv->action_done != FALSE)
|
||||
return;
|
||||
|
||||
g_message("enroll_stage_cb: result %d", result);
|
||||
g_debug("enroll_stage_cb: result %d", result);
|
||||
if (result == FP_ENROLL_COMPLETE) {
|
||||
r = store.print_data_save(print, session->enroll_finger, priv->username);
|
||||
if (r < 0)
|
||||
@ -1031,11 +1128,13 @@ static void fprint_device_enroll_start(FprintDevice *rdev,
|
||||
|
||||
if (_fprint_device_check_claimed(rdev, context, &error) == FALSE) {
|
||||
dbus_g_method_return_error (context, error);
|
||||
g_error_free (error);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_fprint_device_check_polkit_for_action (rdev, context, "net.reactivated.fprint.device.enroll", &error) == FALSE) {
|
||||
dbus_g_method_return_error (context, error);
|
||||
g_error_free (error);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1052,7 +1151,7 @@ static void fprint_device_enroll_start(FprintDevice *rdev,
|
||||
return;
|
||||
}
|
||||
|
||||
g_message("start enrollment device %d finger %d", priv->id, finger_num);
|
||||
g_debug("start enrollment device %d finger %d", priv->id, finger_num);
|
||||
session->enroll_finger = finger_num;
|
||||
priv->action_done = FALSE;
|
||||
|
||||
@ -1061,6 +1160,7 @@ static void fprint_device_enroll_start(FprintDevice *rdev,
|
||||
g_set_error(&error, FPRINT_ERROR, FPRINT_ERROR_INTERNAL,
|
||||
"Enroll start failed with error %d", r);
|
||||
dbus_g_method_return_error(context, error);
|
||||
g_error_free(error);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1083,11 +1183,13 @@ static void fprint_device_enroll_stop(FprintDevice *rdev,
|
||||
|
||||
if (_fprint_device_check_claimed(rdev, context, &error) == FALSE) {
|
||||
dbus_g_method_return_error (context, error);
|
||||
g_error_free (error);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_fprint_device_check_polkit_for_action (rdev, context, "net.reactivated.fprint.device.enroll", &error) == FALSE) {
|
||||
dbus_g_method_return_error (context, error);
|
||||
g_error_free (error);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1140,6 +1242,7 @@ static void fprint_device_list_enrolled_fingers(FprintDevice *rdev,
|
||||
if (_fprint_device_check_polkit_for_action (rdev, context, "net.reactivated.fprint.device.verify", &error) == FALSE) {
|
||||
g_free (user);
|
||||
dbus_g_method_return_error (context, error);
|
||||
g_error_free (error);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1153,6 +1256,7 @@ static void fprint_device_list_enrolled_fingers(FprintDevice *rdev,
|
||||
g_set_error(&error, FPRINT_ERROR, FPRINT_ERROR_NO_ENROLLED_PRINTS,
|
||||
"Failed to discover prints");
|
||||
dbus_g_method_return_error(context, error);
|
||||
g_error_free (error);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1191,6 +1295,7 @@ static void fprint_device_delete_enrolled_fingers(FprintDevice *rdev,
|
||||
if (_fprint_device_check_polkit_for_action (rdev, context, "net.reactivated.fprint.device.enroll", &error) == FALSE) {
|
||||
g_free (user);
|
||||
dbus_g_method_return_error (context, error);
|
||||
g_error_free (error);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -39,12 +39,9 @@
|
||||
|
||||
#include "file_storage.h"
|
||||
|
||||
#define FILE_STORAGE_PATH "/var/lib/fprint"
|
||||
#define DIR_PERMS 0700
|
||||
|
||||
#ifndef FILE_STORAGE_PATH
|
||||
#define FILE_STORAGE_PATH "/var/lib/fprint/"
|
||||
#endif
|
||||
|
||||
#define FP_FINGER_IS_VALID(finger) \
|
||||
((finger) >= LEFT_THUMB && (finger) <= RIGHT_LITTLE)
|
||||
|
||||
@ -86,12 +83,9 @@ static char *get_path_to_print_dscv(struct fp_dscv_dev *dev, enum fp_finger fing
|
||||
fp_dscv_dev_get_devtype(dev), finger, base_store);
|
||||
}
|
||||
|
||||
static int file_storage_get_basestore_for_username(const char *username, char **base_store)
|
||||
static char *file_storage_get_basestore_for_username(const char *username)
|
||||
{
|
||||
char *dirpath = FILE_STORAGE_PATH;
|
||||
|
||||
*base_store = g_build_filename(dirpath, username, NULL);
|
||||
return 0;
|
||||
return g_build_filename(FILE_STORAGE_PATH, username, NULL);
|
||||
}
|
||||
|
||||
/* if username == NULL function will use current username */
|
||||
@ -99,16 +93,13 @@ int file_storage_print_data_save(struct fp_print_data *data,
|
||||
enum fp_finger finger, const char *username)
|
||||
{
|
||||
GError *err = NULL;
|
||||
char *path, *dirpath, *buf;
|
||||
char *path, *dirpath;
|
||||
size_t len;
|
||||
int r;
|
||||
char *base_store = NULL;
|
||||
char *buf = NULL;
|
||||
|
||||
r = file_storage_get_basestore_for_username(username, &base_store);
|
||||
|
||||
if (r < 0) {
|
||||
return r;
|
||||
}
|
||||
base_store = file_storage_get_basestore_for_username(username);
|
||||
|
||||
len = fp_print_data_get_data(data, (guchar **) &buf);
|
||||
if (!len) {
|
||||
@ -120,26 +111,30 @@ int file_storage_print_data_save(struct fp_print_data *data,
|
||||
dirpath = g_path_get_dirname(path);
|
||||
r = g_mkdir_with_parents(dirpath, DIR_PERMS);
|
||||
if (r < 0) {
|
||||
g_free(base_store);
|
||||
g_free(path);
|
||||
g_debug("file_storage_print_data_save(): could not mkdir(\"%s\"): %s",
|
||||
dirpath, g_strerror(r));
|
||||
g_free(dirpath);
|
||||
return r;
|
||||
g_free(path);
|
||||
goto out;
|
||||
}
|
||||
g_free(dirpath);
|
||||
|
||||
//fp_dbg("saving to %s", path);
|
||||
g_file_set_contents(path, buf, len, &err);
|
||||
free(buf);
|
||||
g_free(dirpath);
|
||||
g_free(path);
|
||||
if (err) {
|
||||
r = err->code;
|
||||
//fp_err("save failed: %s", err->message);
|
||||
g_debug("file_storage_print_data_save(): could not save '%s': %s",
|
||||
path, err->message);
|
||||
g_error_free(err);
|
||||
/* FIXME interpret error codes */
|
||||
return r;
|
||||
goto out;
|
||||
}
|
||||
|
||||
return 0;
|
||||
out:
|
||||
g_clear_pointer(&buf, free);
|
||||
g_clear_pointer(&base_store, g_free);
|
||||
return r;
|
||||
}
|
||||
|
||||
static int load_from_file(char *path, struct fp_print_data **data)
|
||||
@ -177,14 +172,12 @@ int file_storage_print_data_load(struct fp_dev *dev,
|
||||
int r;
|
||||
char *base_store = NULL;
|
||||
|
||||
r = file_storage_get_basestore_for_username(username, &base_store);
|
||||
|
||||
if (r < 0) {
|
||||
return r;
|
||||
}
|
||||
base_store = file_storage_get_basestore_for_username(username);
|
||||
|
||||
path = get_path_to_print(dev, finger, base_store);
|
||||
r = load_from_file(path, &fdata);
|
||||
g_debug ("file_storage_print_data_load(): loaded '%s' %s",
|
||||
path, g_strerror(r));
|
||||
g_free(path);
|
||||
g_free(base_store);
|
||||
if (r)
|
||||
@ -203,17 +196,14 @@ int file_storage_print_data_delete(struct fp_dscv_dev *dev,
|
||||
enum fp_finger finger, const char *username)
|
||||
{
|
||||
int r;
|
||||
char *base_store;
|
||||
char *base_store, *path;
|
||||
|
||||
r = file_storage_get_basestore_for_username(username, &base_store);
|
||||
|
||||
if (r < 0) {
|
||||
return r;
|
||||
}
|
||||
|
||||
gchar *path = get_path_to_print_dscv(dev, finger, base_store);
|
||||
base_store = file_storage_get_basestore_for_username(username);
|
||||
path = get_path_to_print_dscv(dev, finger, base_store);
|
||||
|
||||
r = g_unlink(path);
|
||||
g_debug("file_storage_print_data_delete(): unlink(\"%s\") %s",
|
||||
path, g_strerror(r));
|
||||
g_free(path);
|
||||
g_free(base_store);
|
||||
|
||||
@ -229,7 +219,7 @@ static GSList *scan_dev_storedir(char *devpath, uint16_t driver_id,
|
||||
|
||||
GDir *dir = g_dir_open(devpath, 0, &err);
|
||||
if (!dir) {
|
||||
//fp_err("opendir %s failed: %s", devpath, err->message);
|
||||
g_debug("scan_dev_storedir(): opendir(\"%s\") failed: %s", devpath, err->message);
|
||||
g_error_free(err);
|
||||
return list;
|
||||
}
|
||||
@ -244,7 +234,7 @@ static GSList *scan_dev_storedir(char *devpath, uint16_t driver_id,
|
||||
|
||||
val = g_ascii_strtoull(ent, &endptr, 16);
|
||||
if (endptr == ent || !FP_FINGER_IS_VALID(val)) {
|
||||
//fp_dbg("skipping print file %s", ent);
|
||||
g_debug("scan_dev_storedir(): skipping print file '%s'", ent);
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -260,18 +250,15 @@ GSList *file_storage_discover_prints(struct fp_dscv_dev *dev, const char *userna
|
||||
GSList *list = NULL;
|
||||
char *base_store = NULL;
|
||||
char *storedir = NULL;
|
||||
int r;
|
||||
|
||||
|
||||
r = file_storage_get_basestore_for_username(username, &base_store);
|
||||
|
||||
if (r < 0) {
|
||||
return NULL;
|
||||
}
|
||||
base_store = file_storage_get_basestore_for_username(username);
|
||||
|
||||
storedir = get_path_to_storedir(fp_driver_get_driver_id(fp_dscv_dev_get_driver(dev)),
|
||||
fp_dscv_dev_get_devtype(dev), base_store);
|
||||
|
||||
g_debug ("file_storage_discover_prints() for user '%s' in '%s'",
|
||||
username, storedir);
|
||||
|
||||
list = scan_dev_storedir(storedir, fp_driver_get_driver_id(fp_dscv_dev_get_driver(dev)),
|
||||
fp_dscv_dev_get_devtype(dev), list);
|
||||
|
||||
|
||||
196
src/loop.c
Normal file
196
src/loop.c
Normal file
@ -0,0 +1,196 @@
|
||||
/*
|
||||
* fprint D-Bus daemon
|
||||
* Copyright (C) 2008 Daniel Drake <dsd@gentoo.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <glib.h>
|
||||
#include <libfprint/fprint.h>
|
||||
|
||||
#include <poll.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "loop.h"
|
||||
|
||||
struct fdsource {
|
||||
GSource source;
|
||||
GSList *pollfds;
|
||||
};
|
||||
|
||||
static gboolean source_prepare(GSource *source, gint *timeout)
|
||||
{
|
||||
int r;
|
||||
struct timeval tv;
|
||||
|
||||
r = fp_get_next_timeout(&tv);
|
||||
if (r == 0) {
|
||||
*timeout = -1;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!timerisset(&tv))
|
||||
return TRUE;
|
||||
|
||||
*timeout = (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean source_check(GSource *source)
|
||||
{
|
||||
struct fdsource *_fdsource = (struct fdsource *) source;
|
||||
GSList *l;
|
||||
struct timeval tv;
|
||||
int r;
|
||||
|
||||
if (!_fdsource->pollfds)
|
||||
return FALSE;
|
||||
|
||||
for (l = _fdsource->pollfds; l != NULL; l = l->next) {
|
||||
GPollFD *pollfd = l->data;
|
||||
|
||||
if (pollfd->revents)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
r = fp_get_next_timeout(&tv);
|
||||
if (r == 1 && !timerisset(&tv))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean source_dispatch(GSource *source, GSourceFunc callback,
|
||||
gpointer data)
|
||||
{
|
||||
struct timeval zerotimeout = {
|
||||
.tv_sec = 0,
|
||||
.tv_usec = 0,
|
||||
};
|
||||
|
||||
/* FIXME error handling */
|
||||
fp_handle_events_timeout(&zerotimeout);
|
||||
|
||||
/* FIXME whats the return value used for? */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void source_finalize(GSource *source)
|
||||
{
|
||||
struct fdsource *_fdsource = (struct fdsource *) source;
|
||||
GSList *l;
|
||||
|
||||
if (!_fdsource->pollfds)
|
||||
return;
|
||||
|
||||
for (l = _fdsource->pollfds; l != NULL; l = l->next) {
|
||||
GPollFD *pollfd = l->data;
|
||||
|
||||
g_source_remove_poll((GSource *) _fdsource, pollfd);
|
||||
g_slice_free(GPollFD, pollfd);
|
||||
_fdsource->pollfds = g_slist_delete_link(_fdsource->pollfds, l);
|
||||
}
|
||||
|
||||
g_slist_free(_fdsource->pollfds);
|
||||
}
|
||||
|
||||
static GSourceFuncs sourcefuncs = {
|
||||
.prepare = source_prepare,
|
||||
.check = source_check,
|
||||
.dispatch = source_dispatch,
|
||||
.finalize = source_finalize,
|
||||
};
|
||||
|
||||
static struct fdsource *fdsource = NULL;
|
||||
|
||||
static void pollfd_add(int fd, short events)
|
||||
{
|
||||
GPollFD *pollfd;
|
||||
|
||||
pollfd = g_slice_new(GPollFD);
|
||||
pollfd->fd = fd;
|
||||
pollfd->events = 0;
|
||||
pollfd->revents = 0;
|
||||
if (events & POLLIN)
|
||||
pollfd->events |= G_IO_IN;
|
||||
if (events & POLLOUT)
|
||||
pollfd->events |= G_IO_OUT;
|
||||
|
||||
fdsource->pollfds = g_slist_prepend(fdsource->pollfds, pollfd);
|
||||
g_source_add_poll((GSource *) fdsource, pollfd);
|
||||
}
|
||||
|
||||
static void pollfd_added_cb(int fd, short events)
|
||||
{
|
||||
g_debug("now monitoring fd %d", fd);
|
||||
pollfd_add(fd, events);
|
||||
}
|
||||
|
||||
static void pollfd_removed_cb(int fd)
|
||||
{
|
||||
GSList *l;
|
||||
|
||||
g_debug("no longer monitoring fd %d", fd);
|
||||
|
||||
if (!fdsource->pollfds) {
|
||||
g_debug("cannot remove from list as list is empty?");
|
||||
return;
|
||||
}
|
||||
|
||||
for (l = fdsource->pollfds; l != NULL; l = l->next) {
|
||||
GPollFD *pollfd = l->data;
|
||||
|
||||
if (pollfd->fd != fd)
|
||||
continue;
|
||||
|
||||
g_source_remove_poll((GSource *) fdsource, pollfd);
|
||||
g_slice_free(GPollFD, pollfd);
|
||||
fdsource->pollfds = g_slist_delete_link(fdsource->pollfds, l);
|
||||
return;
|
||||
}
|
||||
|
||||
g_error("couldn't find fd %d in list\n", fd);
|
||||
}
|
||||
|
||||
int setup_pollfds(void)
|
||||
{
|
||||
ssize_t numfds;
|
||||
size_t i;
|
||||
struct fp_pollfd *fpfds;
|
||||
GSource *gsource;
|
||||
|
||||
gsource = g_source_new(&sourcefuncs, sizeof(struct fdsource));
|
||||
fdsource = (struct fdsource *) gsource;
|
||||
fdsource->pollfds = NULL;
|
||||
|
||||
numfds = fp_get_pollfds(&fpfds);
|
||||
if (numfds < 0) {
|
||||
if (fpfds)
|
||||
free(fpfds);
|
||||
return (int) numfds;
|
||||
} else if (numfds > 0) {
|
||||
for (i = 0; i < numfds; i++) {
|
||||
struct fp_pollfd *fpfd = &fpfds[i];
|
||||
pollfd_add(fpfd->fd, fpfd->events);
|
||||
}
|
||||
}
|
||||
|
||||
free(fpfds);
|
||||
fp_set_pollfd_notifiers(pollfd_added_cb, pollfd_removed_cb);
|
||||
g_source_attach(gsource, NULL);
|
||||
return 0;
|
||||
}
|
||||
27
src/loop.h
Normal file
27
src/loop.h
Normal file
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Copyright (C) 2008 Daniel Drake <dsd@gentoo.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef POLL_H
|
||||
|
||||
#define POLL_H
|
||||
|
||||
int setup_pollfds(void);
|
||||
|
||||
#endif
|
||||
|
||||
170
src/main.c
170
src/main.c
@ -30,6 +30,7 @@
|
||||
#include <gmodule.h>
|
||||
|
||||
#include "fprintd.h"
|
||||
#include "loop.h"
|
||||
#include "storage.h"
|
||||
#include "file_storage.h"
|
||||
|
||||
@ -37,165 +38,6 @@ extern DBusGConnection *fprintd_dbus_conn;
|
||||
static gboolean no_timeout = FALSE;
|
||||
static gboolean g_fatal_warnings = FALSE;
|
||||
|
||||
struct fdsource {
|
||||
GSource source;
|
||||
GSList *pollfds;
|
||||
};
|
||||
|
||||
static gboolean source_prepare(GSource *source, gint *timeout)
|
||||
{
|
||||
int r;
|
||||
struct timeval tv;
|
||||
|
||||
r = fp_get_next_timeout(&tv);
|
||||
if (r == 0) {
|
||||
*timeout = -1;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!timerisset(&tv))
|
||||
return TRUE;
|
||||
|
||||
*timeout = (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean source_check(GSource *source)
|
||||
{
|
||||
struct fdsource *_fdsource = (struct fdsource *) source;
|
||||
GSList *elem = _fdsource->pollfds;
|
||||
struct timeval tv;
|
||||
int r;
|
||||
|
||||
if (!elem)
|
||||
return FALSE;
|
||||
|
||||
do {
|
||||
GPollFD *pollfd = elem->data;
|
||||
if (pollfd->revents)
|
||||
return TRUE;
|
||||
} while ((elem = g_slist_next(elem)));
|
||||
|
||||
r = fp_get_next_timeout(&tv);
|
||||
if (r == 1 && !timerisset(&tv))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean source_dispatch(GSource *source, GSourceFunc callback,
|
||||
gpointer data)
|
||||
{
|
||||
struct timeval zerotimeout = {
|
||||
.tv_sec = 0,
|
||||
.tv_usec = 0,
|
||||
};
|
||||
|
||||
/* FIXME error handling */
|
||||
fp_handle_events_timeout(&zerotimeout);
|
||||
|
||||
/* FIXME whats the return value used for? */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void source_finalize(GSource *source)
|
||||
{
|
||||
struct fdsource *_fdsource = (struct fdsource *) source;
|
||||
GSList *elem = _fdsource->pollfds;
|
||||
|
||||
if (elem)
|
||||
do {
|
||||
GPollFD *pollfd = elem->data;
|
||||
g_source_remove_poll((GSource *) _fdsource, pollfd);
|
||||
g_slice_free(GPollFD, pollfd);
|
||||
_fdsource->pollfds = g_slist_delete_link(_fdsource->pollfds, elem);
|
||||
} while ((elem = g_slist_next(elem)));
|
||||
|
||||
g_slist_free(_fdsource->pollfds);
|
||||
}
|
||||
|
||||
static GSourceFuncs sourcefuncs = {
|
||||
.prepare = source_prepare,
|
||||
.check = source_check,
|
||||
.dispatch = source_dispatch,
|
||||
.finalize = source_finalize,
|
||||
};
|
||||
|
||||
static struct fdsource *fdsource = NULL;
|
||||
|
||||
static void pollfd_add(int fd, short events)
|
||||
{
|
||||
GPollFD *pollfd = g_slice_new(GPollFD);
|
||||
pollfd->fd = fd;
|
||||
pollfd->events = 0;
|
||||
pollfd->revents = 0;
|
||||
if (events & POLLIN)
|
||||
pollfd->events |= G_IO_IN;
|
||||
if (events & POLLOUT)
|
||||
pollfd->events |= G_IO_OUT;
|
||||
|
||||
fdsource->pollfds = g_slist_prepend(fdsource->pollfds, pollfd);
|
||||
g_source_add_poll((GSource *) fdsource, pollfd);
|
||||
}
|
||||
|
||||
static void pollfd_added_cb(int fd, short events)
|
||||
{
|
||||
g_message("now monitoring fd %d", fd);
|
||||
pollfd_add(fd, events);
|
||||
}
|
||||
|
||||
static void pollfd_removed_cb(int fd)
|
||||
{
|
||||
GSList *elem = fdsource->pollfds;
|
||||
g_message("no longer monitoring fd %d", fd);
|
||||
|
||||
if (!elem) {
|
||||
g_warning("cannot remove from list as list is empty?");
|
||||
return;
|
||||
}
|
||||
|
||||
do {
|
||||
GPollFD *pollfd = elem->data;
|
||||
if (pollfd->fd != fd)
|
||||
continue;
|
||||
|
||||
g_source_remove_poll((GSource *) fdsource, pollfd);
|
||||
g_slice_free(GPollFD, pollfd);
|
||||
fdsource->pollfds = g_slist_delete_link(fdsource->pollfds, elem);
|
||||
return;
|
||||
} while ((elem = g_slist_next(elem)));
|
||||
|
||||
g_error("couldn't find fd %d in list\n", fd);
|
||||
}
|
||||
|
||||
static int setup_pollfds(void)
|
||||
{
|
||||
size_t numfds;
|
||||
size_t i;
|
||||
struct fp_pollfd *fpfds;
|
||||
GSource *gsource = g_source_new(&sourcefuncs, sizeof(struct fdsource));
|
||||
|
||||
fdsource = (struct fdsource *) gsource;
|
||||
fdsource->pollfds = NULL;
|
||||
|
||||
numfds = fp_get_pollfds(&fpfds);
|
||||
if (numfds < 0) {
|
||||
if (fpfds)
|
||||
free(fpfds);
|
||||
return (int) numfds;
|
||||
} else if (numfds > 0) {
|
||||
for (i = 0; i < numfds; i++) {
|
||||
struct fp_pollfd *fpfd = &fpfds[i];
|
||||
pollfd_add(fpfd->fd, fpfd->events);
|
||||
}
|
||||
}
|
||||
|
||||
free(fpfds);
|
||||
fp_set_pollfd_notifiers(pollfd_added_cb, pollfd_removed_cb);
|
||||
g_source_attach(gsource, NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
set_storage_file (void)
|
||||
{
|
||||
@ -245,8 +87,9 @@ load_conf (void)
|
||||
|
||||
filename = g_build_filename (SYSCONFDIR, "fprintd.conf", NULL);
|
||||
file = g_key_file_new ();
|
||||
g_debug("About to load configuration file '%s'", filename);
|
||||
if (!g_key_file_load_from_file (file, filename, G_KEY_FILE_NONE, &error)) {
|
||||
g_print ("Could not open fprintd.conf: %s\n", error->message);
|
||||
g_warning ("Could not open \"%s\": %s\n", filename, error->message);
|
||||
goto bail;
|
||||
}
|
||||
|
||||
@ -300,10 +143,13 @@ int main(int argc, char **argv)
|
||||
|
||||
context = g_option_context_new ("Fingerprint handler daemon");
|
||||
g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE);
|
||||
|
||||
#if !GLIB_CHECK_VERSION (2, 36, 0)
|
||||
g_type_init();
|
||||
#endif
|
||||
|
||||
if (g_option_context_parse (context, &argc, &argv, &error) == FALSE) {
|
||||
g_print ("couldn't parse command-line options: %s\n", error->message);
|
||||
g_warning ("couldn't parse command-line options: %s\n", error->message);
|
||||
g_error_free (error);
|
||||
return 1;
|
||||
}
|
||||
@ -354,7 +200,7 @@ int main(int argc, char **argv)
|
||||
|
||||
r = setup_pollfds();
|
||||
if (r < 0) {
|
||||
g_print("pollfd setup failed\n");
|
||||
g_warning("pollfd setup failed\n");
|
||||
goto err;
|
||||
}
|
||||
|
||||
|
||||
@ -114,7 +114,10 @@ static void process_devices(char **argv)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
#if !GLIB_CHECK_VERSION (2, 36, 0)
|
||||
g_type_init();
|
||||
#endif
|
||||
|
||||
create_manager();
|
||||
|
||||
if (argc < 2) {
|
||||
|
||||
@ -159,7 +159,9 @@ int main(int argc, char **argv)
|
||||
GError *err = NULL;
|
||||
DBusGProxy *dev;
|
||||
|
||||
#if !GLIB_CHECK_VERSION (2, 36, 0)
|
||||
g_type_init();
|
||||
#endif
|
||||
|
||||
dbus_g_object_register_marshaller (fprintd_marshal_VOID__STRING_BOOLEAN,
|
||||
G_TYPE_NONE, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_INVALID);
|
||||
|
||||
@ -130,7 +130,10 @@ static void process_devices(char **argv)
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
#if !GLIB_CHECK_VERSION (2, 36, 0)
|
||||
g_type_init();
|
||||
#endif
|
||||
|
||||
create_manager();
|
||||
|
||||
if (argc < 2) {
|
||||
|
||||
@ -172,7 +172,9 @@ int main(int argc, char **argv)
|
||||
DBusGProxy *dev;
|
||||
char *username;
|
||||
|
||||
#if !GLIB_CHECK_VERSION (2, 36, 0)
|
||||
g_type_init();
|
||||
#endif
|
||||
|
||||
dbus_g_object_register_marshaller (fprintd_marshal_VOID__STRING_BOOLEAN,
|
||||
G_TYPE_NONE, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_INVALID);
|
||||
|
||||
Reference in New Issue
Block a user