diff options
author | 3 <mkp@mkp.net> | 1999-09-23 00:30:48 +0000 |
---|---|---|
committer | Martin Peterson <mkp@src.gnome.org> | 1999-09-23 00:30:48 +0000 |
commit | ed25a765864cefb053d7fe719f0d2da30c704173 (patch) | |
tree | ed7f96d678a8b81b5757e81e07da759bbb4b2dbc | |
parent | 79b4d46e9054e12261947585f2cd8e41723a00fb (diff) | |
download | gdm-ed25a765864cefb053d7fe719f0d2da30c704173.tar.gz |
Ripped out some work-in-progress code that didn't make it in time for
1999-09-23 <mkp@mkp.net>
* Ripped out some work-in-progress code that didn't make it in
time for beta3. Postponed for beta4.
* Loads of fixes. Thanks to Elliot.
* daemon/filecheck.c (gdm_file_check): Log warning if critical
files are missing.
1999-09-21 <mkp@mkp.net>
* daemon/verify.c (gdm_verify_user): Avoid exposing usernames on
getpwent() failure. GdmAllowRoot is now used for non-PAM
configurations only.
1999-09-13 <mkp@mkp.net>
* daemon/verify.c (gdm_verify_user): Fix root logins.
1999-09-07 <mkp@mkp.net>
* gui/gdmlogin.c (gdm_login_browser_select): Fixed the obscure
curuser==NULL on doubleclick bug reported by Nils/Elliot.
-rw-r--r-- | ChangeLog | 26 | ||||
-rw-r--r-- | README | 2 | ||||
-rw-r--r-- | config/Makefile.am | 1 | ||||
-rw-r--r-- | config/gdm.conf.in | 8 | ||||
-rw-r--r-- | config/locale.alias | 7 | ||||
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | daemon/auth.c | 6 | ||||
-rw-r--r-- | daemon/choose.c | 70 | ||||
-rw-r--r-- | daemon/filecheck.c | 15 | ||||
-rw-r--r-- | daemon/gdm.c | 23 | ||||
-rw-r--r-- | daemon/gdm.h | 24 | ||||
-rw-r--r-- | daemon/server.c | 5 | ||||
-rw-r--r-- | daemon/slave.c | 2 | ||||
-rw-r--r-- | daemon/verify.c | 58 | ||||
-rw-r--r-- | daemon/xdmcp.c | 70 | ||||
-rw-r--r-- | docs/C/gdm.sgml | 152 | ||||
-rw-r--r-- | gui/gdmchooser.c | 15 | ||||
-rw-r--r-- | gui/gdmlogin.c | 65 | ||||
-rw-r--r-- | po/da.po | 262 | ||||
-rw-r--r-- | po/de.po | 264 | ||||
-rw-r--r-- | po/fr.po | 264 |
21 files changed, 753 insertions, 588 deletions
@@ -1,7 +1,27 @@ -1999-09-13 Jaka Mocnik <jaka.mocnik@kiss.uni-lj.si> +1999-09-23 <mkp@mkp.net> - * gui/gdmlogin.c (gdm_login_browser_select): set curuser on - double click. + * Ripped out some work-in-progress code that didn't make it in + time for beta3. Postponed for beta4. + + * Loads of fixes. Thanks to Elliot. + + * daemon/filecheck.c (gdm_file_check): Log warning if critical + files are missing. + +1999-09-21 <mkp@mkp.net> + + * daemon/verify.c (gdm_verify_user): Avoid exposing usernames on + getpwent() failure. GdmAllowRoot is now used for non-PAM + configurations only. + +1999-09-13 <mkp@mkp.net> + + * daemon/verify.c (gdm_verify_user): Fix root logins. + +1999-09-07 <mkp@mkp.net> + + * gui/gdmlogin.c (gdm_login_browser_select): Fixed the obscure + curuser==NULL on doubleclick bug reported by Nils/Elliot. 1999-09-03 Zbigniew Chyla <chyla@alice.ci.pwr.wroc.pl> @@ -6,7 +6,7 @@ The Gnome Display Manager is a re-implementation of the well known xdm program. -gdm 2.0beta2 implements all significant features required for managing +gdm 2.0beta3 implements all significant features required for managing local and remote displays. gdm daemon: diff --git a/config/Makefile.am b/config/Makefile.am index c7a03e58..4844c487 100644 --- a/config/Makefile.am +++ b/config/Makefile.am @@ -27,7 +27,6 @@ gnomerc: gnomerc.in Makefile < $(srcdir)/gnomerc.in > gnomerc.tmp \ && mv -f gnomerc.tmp gnomerc -noinst_SCRIPTS = Gnome gnomerc noinst_DATA = gdm.conf EXTRA_DIST = \ diff --git a/config/gdm.conf.in b/config/gdm.conf.in index c8e3fcd1..ecc7b67f 100644 --- a/config/gdm.conf.in +++ b/config/gdm.conf.in @@ -1,8 +1,8 @@ [daemon] -Chooser=@bindir@/gdmchooser --disable-sound -DefaultPath=/bin:/usr/bin:/usr/bin/X11:/usr/local/bin +Chooser=@bindir@/gdmchooser --disable-sound --disable-crash-dialog +DefaultPath=/bin:/usr/bin:/usr/bin/X11:/usr/local/bin:@bindir@ DisplayInitDir=@sysconfdir@/gdm/Init -Greeter=@bindir@/gdmlogin --disable-sound +Greeter=@bindir@/gdmlogin --disable-sound --disable-crash-dialog Group=gdm HaltCommand=/sbin/shutdown -h now KillInitClients=1 @@ -11,7 +11,7 @@ PidFile=/var/run/gdm.pid PostSessionScriptDir=@sysconfdir@/gdm/PostSession/ PreSessionScriptDir=@sysconfdir@/gdm/PreSession/ RebootCommand=/sbin/shutdown -r now -RootPath=/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11:/usr/local/bin +RootPath=/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11:/usr/local/bin:@bindir@ ServAuthDir=@authdir@ SessionDir=@sysconfdir@/gdm/Sessions/ User=gdm diff --git a/config/locale.alias b/config/locale.alias index b3148a4a..18b3d511 100644 --- a/config/locale.alias +++ b/config/locale.alias @@ -26,11 +26,10 @@ # with the rest of us. Send it to bug-gnu-utils@prep.ai.mit.edu. czech cs_CZ.ISO-8859-2 -danish da_DK.ISO-8859-1 dansk da_DK.ISO-8859-1 deutsch de_DE.ISO-8859-1 dutch nl_NL.ISO-8859-1 -english en.ISO-8859-1 +english en_US.ISO-8859-1 finnish fi_FI.ISO-8859-1 français fr_FR.ISO-8859-1 french fr_FR.ISO-8859-1 @@ -41,10 +40,10 @@ hungarian hu_HU.ISO-8859-2 icelandic is_IS.ISO-8859-1 italian it_CH.ISO-8859-1 japanese ja_JP.EUC -norwegian no_NO.ISO-8859-1 +norsk no_NO.ISO-8859-1 polish pl_PL.ISO-8859-2 portuguese pt_PT.ISO-8859-1 -rumanian ro_RO.ISO-8859-2 +romanian ro_RO.ISO-8859-2 russian ru_SU.ISO-8859-5 slovak sk_SK.ISO-8859-2 slovene sl_CS.ISO-8859-2 diff --git a/configure.in b/configure.in index 1793bc4b..10d51b6c 100644 --- a/configure.in +++ b/configure.in @@ -1,7 +1,7 @@ AC_INIT(daemon/gdm.h) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(gdm,2.0beta2) +AM_INIT_AUTOMAKE(gdm,2.0beta3) AM_MAINTAINER_MODE AM_ACLOCAL_INCLUDE(macros) diff --git a/daemon/auth.c b/daemon/auth.c index 308cbe4f..9c76f01d 100644 --- a/daemon/auth.c +++ b/daemon/auth.c @@ -85,7 +85,7 @@ gdm_auth_secure_display (GdmDisplay *d) * have to eat up old authentication cookies before baking new * ones... */ - if (d->type == DISPLAY_LOCAL && d->auths) { + if (d->type == TYPE_LOCAL && d->auths) { GSList *alist = d->auths; while (alist && alist->data) { @@ -114,7 +114,7 @@ gdm_auth_secure_display (GdmDisplay *d) } /* Local access */ - if (d->type == DISPLAY_LOCAL) { + if (d->type == TYPE_LOCAL) { gdm_debug ("gdm_auth_secure_display: Setting up socket access"); xa = g_new0 (Xauth, 1); @@ -189,7 +189,7 @@ gdm_auth_user_add (GdmDisplay *d, uid_t user, gchar *homedir) FILE *af; GSList *auths = NULL; - if (!d || !user) + if (!d) return (FALSE); gdm_debug ("gdm_auth_user_add: Adding cookie for %d", user); diff --git a/daemon/choose.c b/daemon/choose.c index 5ba46085..062964dd 100644 --- a/daemon/choose.c +++ b/daemon/choose.c @@ -54,8 +54,8 @@ extern gint GdmMaxIndirectWait; /* Maximum age before a pending session is remov extern void gdm_debug (gchar *, ...); -static GdmIndirectDisplay *gdm_choose_indirect_alloc (struct in_addr *); -static GdmIndirectDisplay *gdm_choose_indirect_lookup (struct in_addr *); +GdmIndirectDisplay *gdm_choose_indirect_alloc (struct sockaddr_in *clnt_sa); +GdmIndirectDisplay *gdm_choose_indirect_lookup (struct sockaddr_in *clnt_sa); static void gdm_choose_indirect_dispose (GdmIndirectDisplay *); gboolean gdm_choose_socket_handler (GIOChannel *source, GIOCondition cond, gint fd); @@ -74,78 +74,80 @@ gdm_choose_socket_handler (GIOChannel *source, GIOCondition cond, gint fd) gdm_debug ("gdm_choose_socket_handler: Read `%s'", buf); + /* gdm_choose_indirect_alloc (); */ + return (TRUE); } -static GdmIndirectDisplay * -gdm_choose_indirect_alloc (struct in_addr *addr) +GdmIndirectDisplay * +gdm_choose_indirect_alloc (struct sockaddr_in *clnt_sa) { - GdmIndirectDisplay *i; + GdmIndirectDisplay *id; - if (!addr) + if (!clnt_sa) return (NULL); - i = g_new0 (GdmIndirectDisplay, 1); + id = g_new0 (GdmIndirectDisplay, 1); - if (!i) + if (!id) return (NULL); - i->addr->s_addr = addr->s_addr; - i->dispnum = -1; - i->manager = NULL; - i->acctime = time (NULL); + id->dsp_sa = g_new0 (struct sockaddr_in, 1); + memcpy (id->dsp_sa, clnt_sa, sizeof (struct sockaddr_in)); + id->acctime = time (NULL); - indirect = g_slist_append (indirect, i); + indirect = g_slist_append (indirect, id); ipending++; gdm_debug ("gdm_choose_display_alloc: display=%s, pending=%d ", - inet_ntoa (*i->addr), ipending); - - return (i); + inet_ntoa (id->dsp_sa->sin_addr), ipending); + + return (id); } -static GdmIndirectDisplay * -gdm_choose_indirect_lookup (struct in_addr *addr) +GdmIndirectDisplay * +gdm_choose_indirect_lookup (struct sockaddr_in *clnt_sa) { GSList *ilist = indirect; - GdmIndirectDisplay *i; + GdmIndirectDisplay *id; while (ilist) { - i = (GdmIndirectDisplay *) ilist->data; + id = (GdmIndirectDisplay *) ilist->data; - if (i && time (NULL) > i->acctime + GdmMaxIndirectWait) { + if (id && time (NULL) > id->acctime + GdmMaxIndirectWait) { gdm_debug ("gdm_choose_indirect_check: Disposing stale INDIRECT query from %s", - inet_ntoa (*i->addr)); - gdm_choose_indirect_dispose (i); + inet_ntoa (clnt_sa->sin_addr)); + gdm_choose_indirect_dispose (id); } - if (i && i->addr->s_addr == addr->s_addr) - return (i); + if (id && id->dsp_sa->sin_addr.s_addr == clnt_sa->sin_addr.s_addr) + return (id); ilist = ilist->next; } - + gdm_debug ("gdm_choose_indirect_lookup: Host %s not found", - inet_ntoa (*addr)); + inet_ntoa (clnt_sa->sin_addr)); return (NULL); } static void -gdm_choose_indirect_dispose (GdmIndirectDisplay *i) +gdm_choose_indirect_dispose (GdmIndirectDisplay *id) { - gdm_debug ("gdm_choose_indirect_dispose: Disposing %s", inet_ntoa (*i->addr)); + if (!id) + return; - if (i->addr) - g_free (i->addr); + gdm_debug ("gdm_choose_indirect_dispose: Disposing %d", + inet_ntoa (id->dsp_sa->sin_addr)); - if (i->manager) - g_free (i->manager); + if (id->dsp_sa) + g_free (id->dsp_sa); - g_free (i); + g_free (id); ipending--; } diff --git a/daemon/filecheck.c b/daemon/filecheck.c index 1289a8e5..28015b2b 100644 --- a/daemon/filecheck.c +++ b/daemon/filecheck.c @@ -81,18 +81,21 @@ gdm_file_check (gchar *caller, uid_t user, gchar *dir, gchar *file, /* Stat file */ if (stat (fullpath, &statbuf) == -1) { - g_free (fullpath); - - /* Return true if file does not exist and that is ok */ - if (absentok) + /* Return true if file does not exist and that is ok */ + if (absentok) { + g_free (fullpath); return (TRUE); - else + } + else { + syslog (LOG_WARNING,_("%s: does not exist and must."), caller, fullpath); + g_free (fullpath); return (FALSE); + } } /* Check that it is a regular file ... */ if (! S_ISREG (statbuf.st_mode)) { - syslog (LOG_WARNING,_("%s: %s is not a regular file."), caller, fullpath); + syslog (LOG_WARNING, _("%s: %s is not a regular file."), caller, fullpath); g_free (fullpath); return (FALSE); } diff --git a/daemon/gdm.c b/daemon/gdm.c index cfed6732..2a58bc8a 100644 --- a/daemon/gdm.c +++ b/daemon/gdm.c @@ -45,7 +45,6 @@ extern void gdm_error (const gchar *, ...); extern GdmDisplay *gdm_server_alloc (gint id, gchar *command); extern void gdm_server_start (GdmDisplay *d); extern void gdm_server_stop (GdmDisplay *d); -extern void gdm_server_restart (GdmDisplay *d); extern void gdm_debug (const gchar *format, ...); extern int gdm_xdmcp_init (void); extern void gdm_xdmcp_run (void); @@ -109,7 +108,7 @@ gdm_display_dispose (GdmDisplay *d) if (!d) return; - if (d->type == DISPLAY_XDMCP) { + if (d->type == TYPE_XDMCP) { displays = g_slist_remove (displays, d); sessions--; } @@ -313,7 +312,7 @@ gdm_config_parse (void) static void gdm_local_servers_start (GdmDisplay *d) { - if (d && d->type == DISPLAY_LOCAL) { + if (d && d->type == TYPE_LOCAL) { gdm_debug ("gdm_local_servers_start: Starting %s", d->name); gdm_server_start (d); } @@ -352,10 +351,10 @@ gdm_display_manage (GdmDisplay *d) if (GdmXdmcp) gdm_xdmcp_close(); - if (d->type == DISPLAY_LOCAL && d->servstat == SERVER_RUNNING) + if (d->type == TYPE_LOCAL && d->servstat == SERVER_RUNNING) gdm_slave_start (d); - if (d->type == DISPLAY_XDMCP && d->dispstat == XDMCP_MANAGED) + if (d->type == TYPE_XDMCP && d->dispstat == XDMCP_MANAGED) gdm_slave_start (d); break; @@ -429,12 +428,12 @@ gdm_child_handler (gint sig) case DISPLAY_REMANAGE: - if (d->type == DISPLAY_LOCAL && d->dispstat != DISPLAY_ABORT) { + if (d->type == TYPE_LOCAL && d->dispstat != DISPLAY_ABORT) { d->dispstat = DISPLAY_DEAD; - gdm_server_restart (d); + gdm_server_start (d); } - if (d->type == DISPLAY_XDMCP) + if (d->type == TYPE_XDMCP) gdm_display_unmanage (d); break; @@ -468,12 +467,12 @@ gdm_child_handler (gint sig) default: gdm_debug ("gdm_child_action: Slave process returned %d", status); - if (d->type == DISPLAY_LOCAL && d->dispstat != DISPLAY_ABORT) { + if (d->type == TYPE_LOCAL && d->dispstat != DISPLAY_ABORT) { d->dispstat = DISPLAY_DEAD; gdm_server_start (d); } - if (d->type == DISPLAY_XDMCP) + if (d->type == TYPE_XDMCP) gdm_display_unmanage (d); break; @@ -494,7 +493,7 @@ gdm_display_unmanage (GdmDisplay *d) gdm_debug ("gdm_display_unmanage: Stopping %s", d->name); - if (d->type == DISPLAY_LOCAL) { + if (d->type == TYPE_LOCAL) { /* Kill slave and all its children */ if (d->slavepid) { @@ -509,7 +508,7 @@ gdm_display_unmanage (GdmDisplay *d) d->dispstat = DISPLAY_DEAD; } - else { /* DISPLAY_XDMCP */ + else { /* TYPE_XDMCP */ if (d->slavepid) { kill (d->slavepid, SIGTERM); waitpid (d->slavepid, 0, 0); diff --git a/daemon/gdm.h b/daemon/gdm.h index 97899bda..3c129c06 100644 --- a/daemon/gdm.h +++ b/daemon/gdm.h @@ -19,8 +19,8 @@ #ifndef __GDM_H__ #define __GDM_H__ -#define DISPLAY_LOCAL 1 /* Local X server */ -#define DISPLAY_XDMCP 2 /* Remote display */ +#define TYPE_LOCAL 1 /* Local X server */ +#define TYPE_XDMCP 2 /* Remote display */ #define SERVER_SUCCESS 0 /* X server default */ #define SERVER_FAILURE 1 /* X server default */ @@ -141,10 +141,10 @@ struct _GdmDisplay { gchar *bcookie; gchar *name; gchar *hostname; - gint dispstat; - gint dispnum; - gint servstat; - gint type; + guint8 dispstat; + guint16 dispnum; + guint8 servstat; + guint8 type; pid_t greetpid; pid_t servpid; pid_t sesspid; @@ -156,8 +156,16 @@ struct _GdmDisplay { typedef struct _GdmIndirectDisplay GdmIndirectDisplay; struct _GdmIndirectDisplay { - struct in_addr *addr; - gint dispnum; + struct sockaddr_in* dsp_sa; + time_t acctime; +}; + + +typedef struct _GdmChooserDisplay GdmChooserDisplay; + +struct _GdmChooserDisplay { + struct sockaddr_in* dsp_sa; + guint16 dispnum; gchar *manager; time_t acctime; }; diff --git a/daemon/server.c b/daemon/server.c index c3a62608..e7f177b8 100644 --- a/daemon/server.c +++ b/daemon/server.c @@ -192,6 +192,7 @@ gdm_server_restart (GdmDisplay *d) gdm_debug ("gdm_server_restart: Old server for %s still alive. Killing!", d->name); gdm_server_stop (d); gdm_server_start (d); + return; } /* Create new cookie */ @@ -218,7 +219,7 @@ gdm_server_restart (GdmDisplay *d) gdm_debug ("gdm_server_restart: Servpid=%d", d->servpid); kill (d->servpid, SIGHUP); - d->servstat=SERVER_STARTED; + d->servstat = SERVER_STARTED; /* We add a timeout in case the X server fails to start. This * might happen because X servers take a while to die, close their @@ -307,7 +308,7 @@ gdm_server_alloc (gint id, gchar *command) d->sessionid = 0; d->sesspid = 0; d->slavepid = 0; - d->type = DISPLAY_LOCAL; + d->type = TYPE_LOCAL; d->sessionid = 0; d->acctime = 0; d->dsp = NULL; diff --git a/daemon/slave.c b/daemon/slave.c index 15a307a3..75256bee 100644 --- a/daemon/slave.c +++ b/daemon/slave.c @@ -304,7 +304,7 @@ gdm_slave_session_start (gchar *login, gchar *session, gboolean savesess, gchar setenv ("HOME", pwent->pw_dir, TRUE); setenv ("GDMSESSION", session, TRUE); setenv ("SHELL", pwent->pw_shell, TRUE); - unsetenv ("MAIL"); /* New project: setenv() and unsetenv() for lame systems */ + putenv ("MAIL"); /* Special PATH for root */ if(pwent->pw_uid == 0) diff --git a/daemon/verify.c b/daemon/verify.c index fa5187e6..db395eba 100644 --- a/daemon/verify.c +++ b/daemon/verify.c @@ -125,33 +125,12 @@ gdm_verify_user (gchar *display) gint pamerr, i; gchar *login; gchar **pamenv; - struct passwd *pwent; login = gdm_slave_greeter_ctl (GDM_PROMPT, _("Login:")); if (!login) return (NULL); - pwent = getpwnam (login); - - if (!pwent) { - gdm_error (_("Couldn't authenticate %s"), login); - - if (GdmVerboseAuth) - gdm_slave_greeter_ctl (GDM_MSGERR, _("User unknown")); - - return (NULL); - } - - if (GdmAllowRoot && pwent->pw_uid == 0) { - gdm_error (_("Root login disallowed on display '%s'"), display); - - if (GdmVerboseAuth) - gdm_slave_greeter_ctl (GDM_MSGERR, _("Root login disallowed")); - - return (NULL); - } - if ((pamerr = pam_start ("gdm", login, &pamc, &pamh)) != PAM_SUCCESS) { gdm_error (_("Can't find /etc/pam.d/gdm!")); goto pamerr; @@ -221,25 +200,7 @@ gdm_verify_user (gchar *display) login = gdm_slave_greeter_ctl (GDM_PROMPT, _("Login:")); pwent = getpwnam (login); - - if (!pwent) { - gdm_error (_("Couldn't authenticate %s"), login); - - if (GdmVerboseAuth) - gdm_slave_greeter_ctl (GDM_MSGERR, _("User unknown")); - - return (NULL); - } - - if (GdmAllowRoot && pwent->pw_uid == 0) { - gdm_error (_("Root login disallowed on display '%s'"), display); - - if (GdmVerboseAuth) - gdm_slave_greeter_ctl (GDM_MSGERR, _("Root login disallowed")); - - return (NULL); - } - + ppasswd = !pwent ? NULL : pwent->pw_passwd; #ifdef HAVE_SHADOW @@ -254,9 +215,24 @@ gdm_verify_user (gchar *display) #endif /* HAVE_SHADOW */ passwd = gdm_slave_greeter_ctl (GDM_NOECHO, _("Password:")); + + if (GdmVerboseAuth) { + + if (!pwent) { + gdm_error (_("Couldn't authenticate %s"), login); + gdm_slave_greeter_ctl (GDM_MSGERR, _("User unknown")); + return (NULL); + } + if (pwent->pw_uid == 0) { + gdm_error (_("Root login disallowed on display '%s'"), display); + gdm_slave_greeter_ctl (GDM_MSGERR, _("Root login disallowed")); + return (NULL); + } + } + if (!passwd || !ppasswd || strcmp (crypt (passwd, ppasswd), ppasswd)) { - + if (GdmVerboseAuth) gdm_slave_greeter_ctl (GDM_MSGERR, _("Incorrect password")); diff --git a/daemon/xdmcp.c b/daemon/xdmcp.c index 70d7e67f..7ae8061a 100644 --- a/daemon/xdmcp.c +++ b/daemon/xdmcp.c @@ -109,6 +109,7 @@ extern gint GdmMaxManageWait; /* Dispose sessions not responding with MANAGE aft extern gint GdmMaxSessions; /* Maximum number of remote sessions */ extern gint GdmPort; /* UDP port number */ extern gint GdmIndirect; /* Honor XDMCP_INDIRECT, i.e. choosing */ +extern gint GdmMaxIndirectWait; /* Max wait between INDIRECT_QUERY and MANAGE */ /* * We don't support XDM-AUTHENTICATION-1 and XDM-AUTHORIZATION-1. @@ -141,12 +142,16 @@ extern gboolean gdm_auth_secure_display (GdmDisplay *d); extern gint gdm_display_manage (GdmDisplay *d); extern void gdm_display_dispose (GdmDisplay *d); extern gboolean gdm_choose_socket_handler (GIOChannel *source, GIOCondition cond, gint fd); +extern GdmIndirectDisplay *gdm_choose_indirect_alloc (struct sockaddr_in *clnt_sa); +extern GdmIndirectDisplay *gdm_choose_indirect_lookup (struct sockaddr_in *clnt_sa); + int gdm_xdmcp_init (void); void gdm_xdmcp_run (void); void gdm_xdmcp_close (void); static void gdm_xdmcp_decode_packet (void); static void gdm_xdmcp_handle_query (struct sockaddr_in *clnt_sa, gint len, gint type); +static void gdm_xdmcp_send_forward_query (GdmIndirectDisplay *id, ARRAYofARRAY8Ptr authlist); static void gdm_xdmcp_handle_forward_query (struct sockaddr_in *clnt_sa, gint len); static void gdm_xdmcp_handle_request (struct sockaddr_in *clnt_sa, gint len); static void gdm_xdmcp_handle_manage (struct sockaddr_in *clnt_sa, gint len); @@ -268,6 +273,12 @@ gdm_xdmcp_decode_packet (void) struct sockaddr_in clnt_sa; gint sa_len = sizeof (clnt_sa); XdmcpHeader header; + static const char * const opcode_names[] = { + NULL, + "BROADCAST_QUERY", "QUERY", "INDIRECT_QUERY", "FORWARD_QUERY", + "WILLING", "UNWILLING", "REQUEST", "ACCEPT", "DECLINE", "MANAGE", "REFUSE", + "FAILED", "KEEPALIVE", "ALIVE" + }; if (!XdmcpFill (xdmcpfd, &buf, &clnt_sa, &sa_len)) { gdm_error (_("gdm_xdmcp_decode: Could not create XDMCP buffer!")); @@ -283,7 +294,10 @@ gdm_xdmcp_decode_packet (void) gdm_error (_("gdm_xdmcp_decode: Incorrect XDMCP version!")); return; } - + + gdm_debug ("gdm_xdmcp_decode: Received opcode %s from client %s", + opcode_names[header.opcode], inet_ntoa (clnt_sa.sin_addr)); + switch (header.opcode) { case BROADCAST_QUERY: @@ -349,14 +363,54 @@ gdm_xdmcp_handle_query (struct sockaddr_in *clnt_sa, gint len, gint type) return; } - /* Don't negotiate authentication - Unsupported */ - XdmcpDisposeARRAYofARRAY8 (&clnt_authlist); - /* Check with tcp_wrappers if client is allowed to access */ - if (gdm_xdmcp_host_allow (clnt_sa)) + if (gdm_xdmcp_host_allow (clnt_sa)) { + + /* If this is an INDIRECT_QUERY, try to look up the display in + * the pending list. If found send a FORWARD_QUERY to the + * chosen manager. Otherwise alloc a new indirect display. */ + + if (GdmIndirect && type==INDIRECT_QUERY) { + GdmIndirectDisplay *id = gdm_choose_indirect_lookup (clnt_sa); + + if (id) + if (id->acctime + GdmMaxIndirectWait < time (NULL)) /* Expired? */ + gdm_xdmcp_send_forward_query (id, &clnt_authlist); + else + gdm_xdmcp_send_unwilling (clnt_sa, type); + else + gdm_choose_indirect_alloc (clnt_sa); + } + gdm_xdmcp_send_willing (clnt_sa); + } else gdm_xdmcp_send_unwilling (clnt_sa, type); + + /* Dispose authlist from remote display */ + XdmcpDisposeARRAYofARRAY8 (&clnt_authlist); +} + + +static void +gdm_xdmcp_send_forward_query (GdmIndirectDisplay *id, ARRAYofARRAY8Ptr authlist) +{ + ARRAY8 status; + XdmcpHeader header; + + status.data = sysid; + status.length = strlen (sysid); + + header.opcode = (CARD16) WILLING; + header.length = 6 + serv_authlist.authentication.length; + header.length += servhost.length + status.length; + header.version = XDM_PROTOCOL_VERSION; + XdmcpWriteHeader (&buf, &header); + + XdmcpWriteARRAY8 (&buf, &serv_authlist.authentication); /* Hardcoded authentication */ + XdmcpWriteARRAY8 (&buf, &servhost); + XdmcpWriteARRAY8 (&buf, &status); + /* XdmcpFlush (xdmcpfd, &buf, clnt_sa, sizeof (struct sockaddr_in));*/ } @@ -649,7 +703,7 @@ gdm_xdmcp_send_decline (struct sockaddr_in *clnt_sa) authendata.data = (CARD8 *) 0; authendata.length = (CARD16) 0; - status.data = "Service refused"; + status.data = "Session refused"; status.length = strlen (status.data); header.version = XDM_PROTOCOL_VERSION; @@ -873,7 +927,7 @@ gdm_xdmcp_display_alloc (struct sockaddr_in *clnt_sa, gint displaynum) d->sessionid = 0; d->sesspid = 0; d->slavepid = 0; - d->type = DISPLAY_XDMCP; + d->type = TYPE_XDMCP; d->dispstat = XDMCP_PENDING; d->sessionid = globsessid++; d->acctime = time (NULL); @@ -967,7 +1021,7 @@ gdm_xdmcp_displays_check (void) d = (GdmDisplay *) dlist->data; if (d && - d->type == DISPLAY_XDMCP && + d->type == TYPE_XDMCP && d->dispstat == XDMCP_PENDING && time (NULL) > d->acctime + GdmMaxManageWait) { diff --git a/docs/C/gdm.sgml b/docs/C/gdm.sgml index d28d276f..e4f83be8 100644 --- a/docs/C/gdm.sgml +++ b/docs/C/gdm.sgml @@ -70,7 +70,7 @@ <para> Paths without a leading '/' are relative to the installation - prefix. I.e. <filename>share/pixmaps/</filename> refer to + prefix. I.e. <filename>share/pixmaps/</filename> refers to <filename>/usr/share/pixmaps</filename> if GDM was configured with <filename>--prefix=/usr</filename>. </para> @@ -87,7 +87,7 @@ </para> <sect1 id="overview"> - <title>Theory of Operation</title> + <title>Daemon Overview</title> <para> GDM was written with simplicity and security in mind. The @@ -96,14 +96,14 @@ <para> Upon startup the <filename>gdm</filename> daemon parses its config file - <filename>gdm.conf</filename>. For each of the local displays gdm - forks an Xserver and a slave process. The main gdm process + <filename>gdm.conf</filename>. For each of the local displays <filename /gdm/ + forks an Xserver and a slave process. The main <filename /gdm/ process will then listen to XDMCP requests from remote displays and monitor the local display sessions. </para> <para> - The gdm slave process opens the display and starts + The <filename /gdm/ slave process opens the display and starts <filename>gdmlogin</filename>, the graphical login program. <filename>gdmlogin</filename> runs as a dedicated user and communicates asynchronously with the slave process @@ -113,13 +113,55 @@ <para> GDM relies heavily on the presence of PAM, Pluggable Authentication Modules, but supports regular crypt() - and shadow passwords. + and shadow passwords on legacy systems. + </para> + + <para> + Remote displays can connect to the XDMCP port on the GDM + host. <filename /gdm/ will grant access to hosts specified in + the gdm service section in your TCP Wrappers configuration + file. GDM does not support remote display access control on + systems without TCP Wrappers. XDMCP support can be turned off + completely, however. + </para> + + <para> + GDM includes several measures making it more resistant to + denial of service attacks on the XDMCP service. A lot of the + protocol parameters, handshaking timeouts etc. can be fine + tuned. The defaults should work for most systems, however. + Don't change them unless you know what you're doing. + </para> + + <para> + In general GDM is very reluctant regarding reading/writing of + user files. For instance it refuses to touch anything but + regular files. Links, sockets and devices are ignored. The + value of the RelaxPermissions parameter determines whether GDM + should accept files writable by the user's group or others. + These are ignored by default. + </para> + + <para> + All operations on user files are done with the effective + userid of the user. If the sanity check fails on the user's + <filename /.Xauthority/ file, a fallback cookie is created in + <filename>/tmp</filename>. + </para> + + <para> + Finally, the sysadmin can specify the maximum file size GDM + should accept, and, if the face browser is enabled, a tunable + maximum icon size is also enforced. On large systems it is + still advised to turn off the face browser for performance + reasons. Looking up icons in homedirs, scaling and rendering + face icons can take quite a long time. YMMV. </para> </sect1> </chapter> - <chapter id="Configuration"> + <chapter id="ConfigurationOverview"> <title>The Configuration Directory</title> <para> @@ -144,28 +186,37 @@ options will be described later in this chapter. </para> + <para> + <filename /gdm.conf/ is configuration file for both <filename + /gdm/, <filename /gdmlogin/, and <filename /gdmchooser/ since a + lot of parameters overlap. + </para> + <para> The remaining configuration is done by dropping scripts in the subdirectories of the <filename>etc/gdm</filename> folder. This approach makes it easy for package management systems to install window managers and different session types without requiring - the sysadmin/user to edit files. + the sysadmin to edit files. </para> <sect1> <title>The Script Directories</title> <para> - In this section we will explain the Init, PreRoot and PostRoot - directories as they are very similar. + In this section we will explain the <filename /Init/, + <filename /PreRoot/ and <filename /PostRoot/ directories as + they are very similar. </para> <para> When the X server has been successfully started, GDM will try - to run the script called Init/<displayname>. I.e. Init/:0 for - the first local display. If this file is not found, GDM will - attempt to to run Init/Default. The script will be run as root - and GDM blocks until it terminates. Use the Init/* script for + to run the script called + <filename>Init/<displayname></filename>. I.e. <filename>Init/:0</filename> + for the first local display. If this file is not found, GDM + will attempt to to run <filename>Init/Default</filename>. The + script will be run as root and GDM blocks until it + terminates. Use the <filename>Init/*</filename> script for programs that are supposed to run alongside with the GDM login window. xconsole for instance. Commands to set the background etc. goes in this file too. @@ -174,43 +225,46 @@ <para> It is up to the sysadmin to decide whether clients started by the Init script should be killed before starting the user - session. This is controlled with the KillInitClient option in + session. This is controlled with the KillInitClients option in <filename>gdm.conf</filename>. </para> <para> When the user has been successfully authenticated, GDM tries to run the PreSession script. Similar to the Init-scripts, - PreSession/<displayname> will be executed first, if that is - not found GDM will attempt to run PreSession/Default. The - script will be run as root and GDM blocks until it - terminates. Use this script for local session management or - accounting stuff. The USER environment variable contains the - login of the authenticated user. The script should return 0 on - success. Any other value will cause GDM to terminate the - current login process. + <filename>PreSession/<displayname></filename> will be + executed, if this file doesn't exist, GDM will attempt to run + <filename>PreSession/Default</filename>. The script will be + run as root and GDM blocks until it terminates. Use this + script for local session management or accounting stuff. The + $USER environment variable contains the login of the + authenticated user. The script should return 0 on success. Any + other value will cause GDM to terminate the current login + process. </para> <para> Then the session script is run. Session scripts are located in the <filename>etc/gdm/Session</filename> directory. Which one - GDM runs depends on the session the user chose in the - Sessions-menu in the GDM greeter. If no session is selected - and the user has no last session stored in his + GDM runs, depends on the session the user chose in the + Sessions-menu in the greeter. If no session is selected and + the user has no last session stored in his <filename>~/.gnome/gdm</filename> file, the system will choose or first script found or -- if <filename>Sessions/Default</filename> exists -- this will be - run. For instance you can create a symlink from <filename>Gnome</filename> to <filename>Default</filename> to make Gnome the default - desktop environment. + run. For instance you can create a symlink from + <filename>Gnome</filename> to <filename>Default</filename> to + make Gnome the default desktop environment. </para> <para> - When the user terminates his session the PostSession script + When the user terminates his session, the PostSession script will be run. Operation is similar to Init and PreSession. That is, GDM will attempt to execute the script - PostSession/<displayname> and if that doesn't exist: - PostSession/Default. Again the script will be run with root - priviledges, the slave daemon will block and the USER + <filename>PostSession/<displayname></filename> and if + that doesn't exist <filename>PostSession/Default</filename> + will be run. Again the script will be run with root + priviledges, the slave daemon will block and the $USER environment variable will contain the name of the user who just logged out. </para> @@ -472,7 +526,7 @@ <listitem> <synopsis>UserAuthFile=.Xauthority</synopsis> <para> - Name of the file used for storing user cookies in. + Name of the file used for storing user cookies. </para> </listitem> </varlistentry> @@ -494,6 +548,11 @@ Graphical root logins are disallowed by default. Set this value to 1 to enable priviledged user logins. </para> + <para> + On systems that support PAM, this parameter is + ignored. It's up to the PAM libraries to determine + whether the user is on a local display or not. + </para> </listitem> </varlistentry> @@ -657,8 +716,8 @@ <listitem> <synopsis>MaxPendingIndirect=4</synopsis> <para> - Specifies the number of remote displays that can be in - choose mode simultaneously. FIXME! + GDM will only provide MaxPendingIndirect displays with + host choosers simultaneously. </para> </listitem> </varlistentry> @@ -704,7 +763,12 @@ <listitem> <synopsis>MaxWaitIndirect=30</synopsis> <para> - FIXME + The MaxWaitIndirect parameter determines the maximum + number of seconds between the time where a display + requests a chooser and completion of protocol + negotiation. If the timeout is exceeded, GDM will + remove the display from the pending list freeing up + the slot for other displays. </para> </listitem> </varlistentry> @@ -749,7 +813,7 @@ <para> Specifies the maximum icon width (in pixels) that the face browser will display. Icons larger than this will - be scaled down. + be scaled. </para> </listitem> </varlistentry> @@ -761,7 +825,7 @@ <para> Specifies the maximum icon height (in pixels) that the face browser will display. Icons larger than this will - be scaled down. + be scaled. </para> </listitem> </varlistentry> @@ -926,7 +990,7 @@ <varlistentry> <term>Welcome</term> <listitem> - <synopsis>Welcome=Welcome to %s</synopsis> + <synopsis>Welcome=Welcome to %n</synopsis> <para> Controls which text to display next to the logo image in the greeter. The following control chars are supported: @@ -945,6 +1009,10 @@ </para> <para> + %m machine (processor type) + </para> + + <para> %n Nodename (i.e. hostname without .domain) </para> @@ -955,11 +1023,7 @@ <para> %s sysname (i.e. OS) </para> - - <para> - %m machine (processor type) - </para> - + </listitem> </varlistentry> </variablelist> diff --git a/gui/gdmchooser.c b/gui/gdmchooser.c index c961c8c9..7f4de0c2 100644 --- a/gui/gdmchooser.c +++ b/gui/gdmchooser.c @@ -658,13 +658,24 @@ gdm_chooser_host_dispose (GdmChooserHost *host) int main (int argc, char *argv[]) { + gchar **fixedargv; + gint fixedargc, i; + /* Avoid creating ~gdm/.gnome stuff */ gnome_do_not_create_directories = TRUE; openlog ("gdmchooser", LOG_PID, LOG_DAEMON); - gnome_init ("gdmchooser", VERSION, argc, argv); - gnome_sound_shutdown(); + fixedargc = argc + 1; + fixedargv = g_new0 (gchar *, fixedargc); + + for (i=0; i < argc; i++) + fixedargv[i] = argv[i]; + + fixedargv[fixedargc-1] = "--disable-sound"; + gnome_init ("gdmchooser", VERSION, fixedargc, fixedargv); + g_free (fixedargv); + gnome_preferences_set_dialog_position(GTK_WIN_POS_CENTER); gdm_chooser_parse_config(); diff --git a/gui/gdmlogin.c b/gui/gdmlogin.c index ea390c51..00d0db1e 100644 --- a/gui/gdmlogin.c +++ b/gui/gdmlogin.c @@ -94,12 +94,7 @@ gint maxwidth; static void gdm_login_done (void) { - gdk_keyboard_ungrab (CurrentTime); - - closelog(); - gtk_main_quit(); - - exit (DISPLAY_SUCCESS); + _exit (DISPLAY_SUCCESS); } @@ -274,7 +269,7 @@ gdm_parse_enriched_string (gchar *s) if (strlen (s) > 1023) { syslog (LOG_ERR, _("gdm_parse_enriched_string: String too long!")); - return (g_strconcat (_("Welcome to "), hostname, NULL)); + return (g_strdup_printf (_("Welcome to %s"), hostname)); } if (!(buffer = g_malloc (4096))) { @@ -464,7 +459,7 @@ gdm_login_sesslang_lookup (void) /* Input validation sucks */ if(!curuser) gdm_login_abort("gdm_login_sesslang_lookup: curuser==NULL. Mail <mkp@mkp.net> with " \ - "information on your PAM setup"); + "information on your PAM and user database setup"); gtk_widget_set_sensitive (GTK_WIDGET (sessmenu), FALSE); gtk_widget_set_sensitive (GTK_WIDGET (langmenu), FALSE); @@ -472,6 +467,10 @@ gdm_login_sesslang_lookup (void) /* Input validation sucks */ /* Lookup verified user */ pwent = getpwnam (curuser); + if(!pwent) + gdm_login_abort("gdm_login_sesslang_lookup: pwent==NULL. Mail <mkp@mkp.net> with " \ + "information on your PAM and user database setup"); + dir = g_strconcat (pwent->pw_dir, "/.gnome", NULL); fileok = gdm_file_check ("gdm_login_sesslang_lookup", pwent->pw_uid, dir, "gdm", TRUE, GdmUserMaxFile, GdmRelaxPerms); g_free (dir); @@ -989,6 +988,7 @@ gdm_login_browser_select (GtkWidget *widget, gint selected, GdkEvent *event) if (!curuser) curuser = g_strdup (gtk_entry_get_text (GTK_ENTRY (entry))); + gtk_widget_set_sensitive (GTK_WIDGET (entry), FALSE); gtk_widget_set_sensitive (GTK_WIDGET (browser), FALSE); g_print ("%s\n", gtk_entry_get_text (GTK_ENTRY (entry))); break; @@ -1187,6 +1187,11 @@ gdm_login_gui_init (void) gtk_box_pack_start (GTK_BOX (bbox), GTK_WIDGET (bframe), 1, 1, 0); gtk_box_pack_start (GTK_BOX (bbox), GTK_WIDGET (scrollbar), 0, 0, 0); gtk_widget_show_all (GTK_WIDGET (bbox)); + + /* FIXME */ + gtk_widget_set_usize (GTK_WIDGET (bbox), + (gint) gdk_screen_width () * 0.5, + (gint) gdk_screen_height () * 0.25); } if (GdmLogo && !access (GdmLogo, R_OK)) { @@ -1322,17 +1327,7 @@ gdm_login_gui_init (void) gtk_window_set_policy (GTK_WINDOW (login), 1, 1, 1); gtk_window_position (GTK_WINDOW (login), GTK_WIN_POS_CENTER); - if (GdmBrowser) - gtk_widget_set_usize (GTK_WIDGET (login), - (gint) gdk_screen_width() * 0.6, - (gint) gdk_screen_height() * 0.8); - else - gtk_widget_set_usize (GTK_WIDGET (login), - (gint) gdk_screen_width() * 0.5, - 0); - gtk_widget_show_all (GTK_WIDGET (login)); - gdk_keyboard_grab (rootwin, TRUE, CurrentTime); } @@ -1418,18 +1413,24 @@ gdm_login_user_alloc (gchar *logname, uid_t uid, gchar *homedir) static gint -gdm_login_check_exclude (gchar *logname) +gdm_login_check_exclude (struct passwd *pwent) { + const char * const lockout_passes[] = { "*", "!!", NULL }; GSList *list = exclude; + gint i; - while (list && list->data) { - if (! strcasecmp (logname, (gchar *) list->data)) + for (i=0 ; lockout_passes[i] ; i++) + if(! strcmp (lockout_passes[i], pwent->pw_passwd)) return (TRUE); + + while (list && list->data) { + if (! strcasecmp (pwent->pw_name, (gchar *) list->data)) + return (TRUE); - list = list->next; - } + list = list->next; + } - return (FALSE); + return (FALSE); } @@ -1479,7 +1480,7 @@ gdm_login_users_init (void) if (pwent->pw_shell && gdm_login_check_shell (pwent->pw_shell) && - !gdm_login_check_exclude (pwent->pw_name)) { + !gdm_login_check_exclude (pwent)) { user = gdm_login_user_alloc(pwent->pw_name, pwent->pw_uid, @@ -1499,6 +1500,8 @@ gdm_login_users_init (void) int main (int argc, char *argv[]) { + gchar **fixedargv; + gint fixedargc, i; struct sigaction hup; sigset_t mask; GIOChannel *ctrlch; @@ -1508,8 +1511,16 @@ main (int argc, char *argv[]) openlog ("gdmlogin", LOG_PID, LOG_DAEMON); - gnome_init ("gdmlogin", VERSION, argc, argv); - gnome_sound_shutdown(); + fixedargc = argc + 1; + fixedargv = g_new0 (gchar *, fixedargc); + + for (i=0; i < argc; i++) + fixedargv[i] = argv[i]; + + fixedargv[fixedargc-1] = "--disable-sound"; + gnome_init ("gdmlogin", VERSION, fixedargc, fixedargv); + g_free (fixedargv); + gnome_preferences_set_dialog_position (GTK_WIN_POS_CENTER); gdm_login_parse_config(); @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: gdm-0.7.1\n" -"POT-Creation-Date: 1999-09-01 23:49+0200\n" +"POT-Creation-Date: 1999-09-23 01:59+0200\n" "PO-Revision-Date: 1999-08-15 23:00+0100\n" "Last-Translator: Birger langkjer <birger.langkjer@image.dk>\n" "Language-Team: Danish <dltp@lists.wiktor.dk>\n" @@ -13,117 +13,117 @@ msgstr "" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -#: daemon/gdm.c:167 +#: daemon/gdm.c:166 #, c-format msgid "gdm_config_parse: No configuration file: %s. Aborting." msgstr "" -#: daemon/gdm.c:218 +#: daemon/gdm.c:217 msgid "gdm_config_parse: No greeter specified and default not found." msgstr "" -#: daemon/gdm.c:230 +#: daemon/gdm.c:229 msgid "gdm_config_parse: No authdir specified and default not found." msgstr "" -#: daemon/gdm.c:248 +#: daemon/gdm.c:247 msgid "" "gdm_config_parse: No sessions directory specified and default not found." msgstr "" -#: daemon/gdm.c:260 +#: daemon/gdm.c:259 msgid "gdm_config_parse: Invalid server line in config file. Ignoring!" msgstr "" -#: daemon/gdm.c:266 +#: daemon/gdm.c:265 msgid "" "gdm_config_parse: Xdmcp disabled and no local servers defined. Aborting!" msgstr "" -#: daemon/gdm.c:271 +#: daemon/gdm.c:270 #, c-format msgid "gdm_config_parse: Can't find the gdm user (%s). Aborting!" msgstr "" -#: daemon/gdm.c:276 +#: daemon/gdm.c:275 msgid "gdm_config_parse: The gdm user should not be root. Aborting!" msgstr "" -#: daemon/gdm.c:281 +#: daemon/gdm.c:280 #, c-format msgid "gdm_config_parse: Can't find the gdm group (%s). Aborting!" msgstr "" -#: daemon/gdm.c:286 +#: daemon/gdm.c:285 msgid "gdm_config_parse: The gdm group should not be root. Aborting!" msgstr "" -#: daemon/gdm.c:293 +#: daemon/gdm.c:292 #, c-format msgid "gdm_config_parse: Authdir %s does not exist. Aborting." msgstr "" -#: daemon/gdm.c:296 +#: daemon/gdm.c:295 #, c-format msgid "gdm_config_parse: Authdir %s is not a directory. Aborting." msgstr "" -#: daemon/gdm.c:299 +#: daemon/gdm.c:298 #, c-format msgid "" "gdm_config_parse: Authdir %s is not owned by user %s, group %s. Aborting." msgstr "" -#: daemon/gdm.c:303 +#: daemon/gdm.c:302 #, c-format msgid "" "gdm_config_parse: Authdir %s has wrong permissions. Should be 750. Aborting." msgstr "" -#: daemon/gdm.c:364 +#: daemon/gdm.c:363 #, c-format msgid "gdm_display_manage: Failed forking gdm slave process for %d" msgstr "" -#: daemon/gdm.c:443 +#: daemon/gdm.c:442 #, c-format msgid "gdm_child_action: Aborting display %s" msgstr "" -#: daemon/gdm.c:448 +#: daemon/gdm.c:447 msgid "gdm_child_action: Master rebooting..." msgstr "gdm_child_action: Master genstarter..." -#: daemon/gdm.c:454 +#: daemon/gdm.c:453 #, c-format msgid "gdm_child_action: Reboot failed: %s" msgstr "gdm_child_action: Genstart mislykkedes: %s" -#: daemon/gdm.c:458 +#: daemon/gdm.c:457 msgid "gdm_child_action: Master halting..." msgstr "gdm_child_action: Master slukker..." -#: daemon/gdm.c:464 +#: daemon/gdm.c:463 #, c-format msgid "gdm_child_action: Halt failed: %s" msgstr "gdm_child_action: Sluk mislykkedes: %s" -#: daemon/gdm.c:561 +#: daemon/gdm.c:560 msgid "gdm_daemonify: fork() failed!" msgstr "" -#: daemon/gdm.c:564 +#: daemon/gdm.c:563 #, c-format msgid "gdm_daemonify: setsid() failed: %s!" msgstr "" #. XDM compliant error message -#: daemon/gdm.c:590 +#: daemon/gdm.c:589 #, fuzzy msgid "Only root wants to run x^hgdm\n" msgstr "Kun root må køre gdm\n" -#: daemon/gdm.c:611 +#: daemon/gdm.c:610 msgid "" "gdm already running. Aborting!\n" "\n" @@ -131,7 +131,7 @@ msgstr "" "gdm kører allerede. Afbryder!\n" "\n" -#: daemon/gdm.c:617 +#: daemon/gdm.c:616 #, fuzzy, c-format msgid "" "According to %s, gdm was already running (%d),\n" @@ -140,15 +140,15 @@ msgstr "" "gdm kørte allerede (%d) men ser ud til at være blevet myrdet på mystisk " "vis.\n" -#: daemon/gdm.c:639 +#: daemon/gdm.c:638 msgid "gdm_main: Error setting up TERM signal handler" msgstr "" -#: daemon/gdm.c:642 +#: daemon/gdm.c:641 msgid "gdm_main: Error setting up INT signal handler" msgstr "" -#: daemon/gdm.c:650 +#: daemon/gdm.c:649 msgid "gdm_main: Error setting up CHLD signal handler" msgstr "" @@ -173,12 +173,12 @@ msgstr "" msgid "%s: Directory %s does not exist." msgstr "" -#: daemon/filecheck.c:64 daemon/filecheck.c:102 +#: daemon/filecheck.c:64 daemon/filecheck.c:105 #, c-format msgid "%s: %s is not owned by uid %d." msgstr "" -#: daemon/filecheck.c:70 daemon/filecheck.c:109 +#: daemon/filecheck.c:70 daemon/filecheck.c:112 #, c-format msgid "%s: %s is writable by group." msgstr "" @@ -188,17 +188,22 @@ msgstr "" msgid "%s: %s is writable by other." msgstr "" -#: daemon/filecheck.c:95 +#: daemon/filecheck.c:90 +#, c-format +msgid "%s: does not exist and must." +msgstr "" + +#: daemon/filecheck.c:98 #, c-format msgid "%s: %s is not a regular file." msgstr "" -#: daemon/filecheck.c:116 +#: daemon/filecheck.c:119 #, c-format msgid "%s: %s is writable by group/other." msgstr "" -#: daemon/filecheck.c:123 +#: daemon/filecheck.c:126 #, c-format msgid "%s: %s is bigger than sysadmin specified maximum file size." msgstr "" @@ -212,7 +217,7 @@ msgstr "" msgid "gdm_exec_script: Can't fork script process!" msgstr "" -#: daemon/server.c:84 daemon/server.c:207 +#: daemon/server.c:84 daemon/server.c:208 msgid "gdm_server_start: Error setting up USR1 signal handler" msgstr "" @@ -239,7 +244,7 @@ msgstr "" msgid "gdm_server_stop: Could not unlink auth file: %s!" msgstr "" -#: daemon/server.c:233 +#: daemon/server.c:234 msgid "gdm_server_restart: Error setting up ALARM signal handler" msgstr "" @@ -318,209 +323,209 @@ msgstr "" msgid "gdm_slave_xsync_ping: Error setting up ALARM signal handler" msgstr "" -#: daemon/verify.c:130 daemon/verify.c:222 gui/gdmlogin.c:1238 +#: daemon/verify.c:129 daemon/verify.c:201 gui/gdmlogin.c:1246 msgid "Login:" msgstr "" -#: daemon/verify.c:138 daemon/verify.c:166 daemon/verify.c:226 -#, c-format -msgid "Couldn't authenticate %s" -msgstr "" - -#: daemon/verify.c:141 daemon/verify.c:229 -msgid "User unknown" +#: daemon/verify.c:135 +msgid "Can't find /etc/pam.d/gdm!" msgstr "" -#: daemon/verify.c:147 daemon/verify.c:235 +#: daemon/verify.c:140 #, c-format -msgid "Root login disallowed on display '%s'" -msgstr "" - -#: daemon/verify.c:150 daemon/verify.c:238 -msgid "Root login disallowed" -msgstr "" - -#: daemon/verify.c:156 -msgid "Can't find /etc/pam.d/gdm!" +msgid "Can't set PAM_TTY=%s" msgstr "" -#: daemon/verify.c:161 +#: daemon/verify.c:145 daemon/verify.c:222 #, c-format -msgid "Can't set PAM_TTY=%s" +msgid "Couldn't authenticate %s" msgstr "" -#: daemon/verify.c:171 +#: daemon/verify.c:150 #, c-format msgid "Couldn't set acct. mgmt for %s" msgstr "" -#: daemon/verify.c:176 +#: daemon/verify.c:155 #, c-format msgid "Couldn't set credentials for %s" msgstr "" -#: daemon/verify.c:181 +#: daemon/verify.c:160 #, c-format msgid "Couldn't open session for %s" msgstr "" -#: daemon/verify.c:256 +#: daemon/verify.c:217 msgid "Password:" msgstr "Adgangskode:" -#: daemon/verify.c:261 +#: daemon/verify.c:223 +msgid "User unknown" +msgstr "" + +#: daemon/verify.c:228 +#, c-format +msgid "Root login disallowed on display '%s'" +msgstr "" + +#: daemon/verify.c:229 +msgid "Root login disallowed" +msgstr "" + +#: daemon/verify.c:237 msgid "Incorrect password" msgstr "" -#: daemon/verify.c:280 +#: daemon/verify.c:256 msgid "gdm_verify_check: Can't find PAM configuration file for gdm" msgstr "" -#: daemon/xdmcp.c:179 +#: daemon/xdmcp.c:184 #, c-format msgid "gdm_xdmcp_init: Could not get server hostname: %s!" msgstr "" -#: daemon/xdmcp.c:193 +#: daemon/xdmcp.c:198 msgid "gdm_xdmcp_init: Could not create socket!" msgstr "" -#: daemon/xdmcp.c:200 +#: daemon/xdmcp.c:205 msgid "gdm_xdmcp_init: Could not bind to XDMCP socket!" msgstr "" -#: daemon/xdmcp.c:209 +#: daemon/xdmcp.c:214 msgid "gdm_xdmcp_init: Can't alloc fifopath" msgstr "" -#: daemon/xdmcp.c:214 +#: daemon/xdmcp.c:219 msgid "gdm_xdmcp_init: Could not make FIFO for chooser" msgstr "" -#: daemon/xdmcp.c:219 +#: daemon/xdmcp.c:224 msgid "gdm_xdmcp_init: Could not open FIFO for chooser" msgstr "" -#: daemon/xdmcp.c:273 +#: daemon/xdmcp.c:284 msgid "gdm_xdmcp_decode: Could not create XDMCP buffer!" msgstr "" -#: daemon/xdmcp.c:278 +#: daemon/xdmcp.c:289 msgid "gdm_xdmcp_decode: Could not read XDMCP header!" msgstr "" -#: daemon/xdmcp.c:283 +#: daemon/xdmcp.c:294 msgid "gdm_xdmcp_decode: Incorrect XDMCP version!" msgstr "" -#: daemon/xdmcp.c:319 +#: daemon/xdmcp.c:333 #, c-format msgid "gdm_xdmcp_decode_packet: Unknown opcode from host %s" msgstr "" -#: daemon/xdmcp.c:337 +#: daemon/xdmcp.c:351 msgid "gdm_xdmcp_handle_query: Could not extract authlist from packet" msgstr "" -#: daemon/xdmcp.c:348 +#: daemon/xdmcp.c:362 msgid "gdm_xdmcp_handle_query: Error in checksum" msgstr "" -#: daemon/xdmcp.c:379 +#: daemon/xdmcp.c:433 msgid "gdm_xdmcp_handle_forward_query: Could not read display address" msgstr "" -#: daemon/xdmcp.c:385 +#: daemon/xdmcp.c:439 msgid "gdm_xdmcp_handle_forward_query: Could not read display port number" msgstr "" -#: daemon/xdmcp.c:391 +#: daemon/xdmcp.c:445 msgid "gdm_xdmcp_handle_forward_query: Could not extract authlist from packet" msgstr "" -#: daemon/xdmcp.c:406 +#: daemon/xdmcp.c:460 msgid "gdm_xdmcp_handle_forward_query: Error in checksum" msgstr "" -#: daemon/xdmcp.c:469 +#: daemon/xdmcp.c:523 #, c-format msgid "Denied XDMCP query from host %s" msgstr "" -#: daemon/xdmcp.c:471 +#: daemon/xdmcp.c:525 msgid "Display not authorized to connect" msgstr "" -#: daemon/xdmcp.c:504 +#: daemon/xdmcp.c:558 #, c-format msgid "gdm_xdmcp_handle_request: Got REQUEST from banned host %s" msgstr "" -#: daemon/xdmcp.c:511 +#: daemon/xdmcp.c:565 msgid "gdm_xdmcp_handle_request: Could not read Display Number" msgstr "" -#: daemon/xdmcp.c:517 +#: daemon/xdmcp.c:571 msgid "gdm_xdmcp_handle_request: Could not read Connection Type" msgstr "" -#: daemon/xdmcp.c:523 +#: daemon/xdmcp.c:577 msgid "gdm_xdmcp_handle_request: Could not read Client Address" msgstr "" -#: daemon/xdmcp.c:529 +#: daemon/xdmcp.c:583 msgid "gdm_xdmcp_handle_request: Could not read Authentication Names" msgstr "" -#: daemon/xdmcp.c:535 +#: daemon/xdmcp.c:589 msgid "gdm_xdmcp_handle_request: Could not read Authentication Data" msgstr "" -#: daemon/xdmcp.c:541 +#: daemon/xdmcp.c:595 msgid "gdm_xdmcp_handle_request: Could not read Authorization List" msgstr "" -#: daemon/xdmcp.c:552 +#: daemon/xdmcp.c:606 msgid "gdm_xdmcp_handle_request: Could not read Manufacturer ID" msgstr "" -#: daemon/xdmcp.c:570 +#: daemon/xdmcp.c:624 #, c-format msgid "gdm_xdmcp_handle_request: Failed checksum from %s" msgstr "" -#: daemon/xdmcp.c:683 +#: daemon/xdmcp.c:737 #, c-format msgid "gdm_xdmcp_handle_manage: Got Manage from banned host %s" msgstr "" -#: daemon/xdmcp.c:690 +#: daemon/xdmcp.c:744 msgid "gdm_xdmcp_handle_manage: Could not read Session ID" msgstr "" -#: daemon/xdmcp.c:696 +#: daemon/xdmcp.c:750 msgid "gdm_xdmcp_handle_manage: Could not read Display Number" msgstr "" -#: daemon/xdmcp.c:705 +#: daemon/xdmcp.c:759 msgid "gdm_xdmcp_manage: Could not read Display Class" msgstr "" -#: daemon/xdmcp.c:726 +#: daemon/xdmcp.c:780 #, c-format msgid "gdm_xdmcp_handle_manage: Could not open logfile for display %s!" msgstr "" -#: daemon/xdmcp.c:798 +#: daemon/xdmcp.c:852 #, c-format msgid "gdm_xdmcp_handle_keepalive: Got KEEPALIVE from banned host %s" msgstr "" -#: daemon/xdmcp.c:805 +#: daemon/xdmcp.c:859 msgid "gdm_xdmcp_handle_keepalive: Could not read Display Number" msgstr "" -#: daemon/xdmcp.c:811 +#: daemon/xdmcp.c:865 msgid "gdm_xdmcp_handle_keepalive: Could not read Session ID" msgstr "" @@ -559,137 +564,138 @@ msgstr "" msgid "gdm_signals_init: Error setting up TERM signal handler" msgstr "" -#: gui/gdmchooser.c:596 gui/gdmlogin.c:1541 +#: gui/gdmchooser.c:596 gui/gdmlogin.c:1555 msgid "Could not set signal mask!" msgstr "" -#: gui/gdmlogin.c:276 +#: gui/gdmlogin.c:271 msgid "gdm_parse_enriched_string: String too long!" msgstr "" -#: gui/gdmlogin.c:277 -msgid "Welcome to " +#: gui/gdmlogin.c:272 +#, fuzzy, c-format +msgid "Welcome to %s" msgstr "Velkommen til " -#: gui/gdmlogin.c:281 +#: gui/gdmlogin.c:276 msgid "gdm_parse_enriched_string: Could not malloc temporary buffer!" msgstr "" -#: gui/gdmlogin.c:363 +#: gui/gdmlogin.c:358 msgid "Are you sure you want to reboot the machine?" msgstr "Er du sikker på at du vil genstarte maskinen?" -#: gui/gdmlogin.c:376 +#: gui/gdmlogin.c:371 msgid "Are you sure you want to halt the machine?" msgstr "Er du sikker på at du vil slukke maskinen?" -#: gui/gdmlogin.c:393 +#: gui/gdmlogin.c:388 #, fuzzy, c-format msgid "gdm_login_parse_config: No configuration file: %s. Aborting." msgstr "gdm_greeter_parse_config: Ingen konfigurationsfil: %s. Afbryder." -#: gui/gdmlogin.c:525 +#: gui/gdmlogin.c:524 #, c-format msgid "" "Your preferred session type %s is not installed on this machine.\n" "Do you wish to make %s the default for future sessions?" msgstr "" -#: gui/gdmlogin.c:544 gui/gdmlogin.c:574 +#: gui/gdmlogin.c:543 gui/gdmlogin.c:573 #, c-format msgid "" "You have chosen %s for this session, but your default setting is %s.\n" "Do you wish to make %s the default for future sessions?" msgstr "" -#: gui/gdmlogin.c:632 +#: gui/gdmlogin.c:631 #, c-format msgid "%s session selected" msgstr "" -#: gui/gdmlogin.c:648 gui/gdmlogin.c:751 +#: gui/gdmlogin.c:647 gui/gdmlogin.c:750 msgid "Last" msgstr "" -#: gui/gdmlogin.c:663 +#: gui/gdmlogin.c:662 msgid "gdm_login_session_init: Session script directory not found!" msgstr "" -#: gui/gdmlogin.c:716 +#: gui/gdmlogin.c:715 msgid "No session scripts found. Aborting!" msgstr "Ingen sessionsskript fundet. Afbryder!" -#: gui/gdmlogin.c:720 +#: gui/gdmlogin.c:719 #, c-format msgid "No default session link found. Using %s.\n" msgstr "" -#: gui/gdmlogin.c:734 +#: gui/gdmlogin.c:733 #, c-format msgid "%s language selected" msgstr "" -#: gui/gdmlogin.c:766 +#: gui/gdmlogin.c:765 msgid "A-M" msgstr "" -#: gui/gdmlogin.c:772 +#: gui/gdmlogin.c:771 msgid "N-Z" msgstr "" -#: gui/gdmlogin.c:778 +#: gui/gdmlogin.c:777 msgid "Other" msgstr "" -#: gui/gdmlogin.c:1077 +#: gui/gdmlogin.c:1080 #, fuzzy msgid "Session" msgstr "Sessioner" -#: gui/gdmlogin.c:1084 +#: gui/gdmlogin.c:1087 #, fuzzy msgid "Language" msgstr "Sprog" -#: gui/gdmlogin.c:1091 +#: gui/gdmlogin.c:1094 msgid "Reboot..." msgstr "Genstart..." -#: gui/gdmlogin.c:1098 +#: gui/gdmlogin.c:1101 msgid "Halt..." msgstr "Sluk..." -#: gui/gdmlogin.c:1105 +#: gui/gdmlogin.c:1108 msgid "System" msgstr "" -#: gui/gdmlogin.c:1113 +#: gui/gdmlogin.c:1116 #, c-format msgid "Can't open icon file: %s. Suspending iconify feature!" msgstr "Kan ikke åbne ikonfil: %s. Afbryder ikonificerings-feature!" -#: gui/gdmlogin.c:1116 +#: gui/gdmlogin.c:1119 msgid "Iconify" msgstr "Ikonificer" -#: gui/gdmlogin.c:1273 +#: gui/gdmlogin.c:1281 msgid "Please enter your login" msgstr "" -#: gui/gdmlogin.c:1458 +#: gui/gdmlogin.c:1462 #, fuzzy, c-format msgid "Can't open DefaultImage: %s. Suspending face browser!" msgstr "Kan ikke åbne ikonfil: %s. Afbryder ikonificerings-feature!" -#: gui/gdmlogin.c:1527 +#: gui/gdmlogin.c:1541 msgid "main: Error setting up HUP signal handler" msgstr "" -#: gui/gdmlogin.c:1530 +#: gui/gdmlogin.c:1544 msgid "main: Error setting up INT signal handler" msgstr "" -#: gui/gdmlogin.c:1533 +#: gui/gdmlogin.c:1547 msgid "main: Error setting up TERM signal handler" msgstr "" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gdm2 \n" -"POT-Creation-Date: 1999-09-01 23:49+0200\n" +"POT-Creation-Date: 1999-09-23 01:59+0200\n" "PO-Revision-Date: 1999-08-25 19:33+02:00\n" "Last-Translator: Karsten Weiss <karsten@addx.au.s.shuttle.de>\n" "Language-Team: de <de@li.org>\n" @@ -14,71 +14,71 @@ msgstr "" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8-bit\n" -#: daemon/gdm.c:167 +#: daemon/gdm.c:166 #, c-format msgid "gdm_config_parse: No configuration file: %s. Aborting." msgstr "gdm_config_parse: Keine Konfigurationsdatei: %s. Breche ab." -#: daemon/gdm.c:218 +#: daemon/gdm.c:217 msgid "gdm_config_parse: No greeter specified and default not found." msgstr "" "gdm_config_parse: Es wurde kein Greeter angegeben und die Voreinstellung " "nicht gefunden." -#: daemon/gdm.c:230 +#: daemon/gdm.c:229 msgid "gdm_config_parse: No authdir specified and default not found." msgstr "" "gdm_config_parse: Es wurde kein authdir angegeben und die Voreinstellung " "nicht gefunden." -#: daemon/gdm.c:248 +#: daemon/gdm.c:247 msgid "" "gdm_config_parse: No sessions directory specified and default not found." msgstr "" "gdm_config_parse: Kein Sitzungsverzeichnis angegeben und die Voreinstellung " "nicht gefunden." -#: daemon/gdm.c:260 +#: daemon/gdm.c:259 msgid "gdm_config_parse: Invalid server line in config file. Ignoring!" msgstr "" "gdm_config_parse: Ungültige Server-Zeile in Konfigurationsdatei. Ignoriere." -#: daemon/gdm.c:266 +#: daemon/gdm.c:265 msgid "" "gdm_config_parse: Xdmcp disabled and no local servers defined. Aborting!" msgstr "" "gdm_config_parse: Xdmcp abgeschalten und keine lokalen Server definiert. " "Breche ab!" -#: daemon/gdm.c:271 +#: daemon/gdm.c:270 #, c-format msgid "gdm_config_parse: Can't find the gdm user (%s). Aborting!" msgstr "gdm_config_parse: Kann den gdm-Benutzer (%s) nicht finden. Breche ab!" -#: daemon/gdm.c:276 +#: daemon/gdm.c:275 msgid "gdm_config_parse: The gdm user should not be root. Aborting!" msgstr "gdm_config_parse: Der gdm-Benutzer sollte nicht root sein. Breche ab." -#: daemon/gdm.c:281 +#: daemon/gdm.c:280 #, c-format msgid "gdm_config_parse: Can't find the gdm group (%s). Aborting!" msgstr "gdm_config_parse: Kann die gdm-Gruppe (%s) nicht finden. Breche ab!" -#: daemon/gdm.c:286 +#: daemon/gdm.c:285 msgid "gdm_config_parse: The gdm group should not be root. Aborting!" msgstr "gdm_config_parse: Die gdm-Gruppe sollte nicht root sein. Breche ab." -#: daemon/gdm.c:293 +#: daemon/gdm.c:292 #, c-format msgid "gdm_config_parse: Authdir %s does not exist. Aborting." msgstr "gdm_config_parse: Authdir %s existiert nicht. Breche ab." -#: daemon/gdm.c:296 +#: daemon/gdm.c:295 #, c-format msgid "gdm_config_parse: Authdir %s is not a directory. Aborting." msgstr "gdm_config_parse: Authdir %s ist kein Verzeichnis. Breche ab." -#: daemon/gdm.c:299 +#: daemon/gdm.c:298 #, c-format msgid "" "gdm_config_parse: Authdir %s is not owned by user %s, group %s. Aborting." @@ -86,7 +86,7 @@ msgstr "" "gdm_config_parse: Authdir %s gehört nicht Benutzer %s und Gruppe %s. Breche " "ab." -#: daemon/gdm.c:303 +#: daemon/gdm.c:302 #, c-format msgid "" "gdm_config_parse: Authdir %s has wrong permissions. Should be 750. Aborting." @@ -94,50 +94,50 @@ msgstr "" "gdm_config_parse: Authdir %s hat falsche Zugriffsrechte. Sollte 750 sein. " "Breche ab." -#: daemon/gdm.c:364 +#: daemon/gdm.c:363 #, c-format msgid "gdm_display_manage: Failed forking gdm slave process for %d" msgstr "" "gdm_display_manage: Forken des gdm-Slave-Prozesses für %d fehlgeschlagen" -#: daemon/gdm.c:443 +#: daemon/gdm.c:442 #, c-format msgid "gdm_child_action: Aborting display %s" msgstr "gdm_child_action: Breche Display %s ab" -#: daemon/gdm.c:448 +#: daemon/gdm.c:447 msgid "gdm_child_action: Master rebooting..." msgstr "gdm_child_action: Master bootet neu..." -#: daemon/gdm.c:454 +#: daemon/gdm.c:453 #, c-format msgid "gdm_child_action: Reboot failed: %s" msgstr "gdm_child_action: Neustart fehlgeschlagen: %s" -#: daemon/gdm.c:458 +#: daemon/gdm.c:457 msgid "gdm_child_action: Master halting..." msgstr "gdm_child_action: Master hält an..." -#: daemon/gdm.c:464 +#: daemon/gdm.c:463 #, c-format msgid "gdm_child_action: Halt failed: %s" msgstr "gdm_child_action: Anhalten fehlgeschlagen: %s" -#: daemon/gdm.c:561 +#: daemon/gdm.c:560 msgid "gdm_daemonify: fork() failed!" msgstr "gdm_daemonify: fork() fehlgeschlagen!" -#: daemon/gdm.c:564 +#: daemon/gdm.c:563 #, c-format msgid "gdm_daemonify: setsid() failed: %s!" msgstr "gdm_daemonify: setsid() fehlgeschlagen: %s!" #. XDM compliant error message -#: daemon/gdm.c:590 +#: daemon/gdm.c:589 msgid "Only root wants to run x^hgdm\n" msgstr "Nur root darf x^Hgdm starten\n" -#: daemon/gdm.c:611 +#: daemon/gdm.c:610 msgid "" "gdm already running. Aborting!\n" "\n" @@ -145,7 +145,7 @@ msgstr "" "gdm läuft schon. Breche ab!\n" "\n" -#: daemon/gdm.c:617 +#: daemon/gdm.c:616 #, c-format msgid "" "According to %s, gdm was already running (%d),\n" @@ -154,15 +154,15 @@ msgstr "" "Laut %s lief gdm schon (%d),\n" "scheint aber auf geheimnisvolle Art und Weise getötet worden zu sein.\n" -#: daemon/gdm.c:639 +#: daemon/gdm.c:638 msgid "gdm_main: Error setting up TERM signal handler" msgstr "gdm_main: Fehler beim Einrichten des TERM-Signalhandlers" -#: daemon/gdm.c:642 +#: daemon/gdm.c:641 msgid "gdm_main: Error setting up INT signal handler" msgstr "gdm_main: Fehler beim Einrichten des INT-Signalhandlers" -#: daemon/gdm.c:650 +#: daemon/gdm.c:649 msgid "gdm_main: Error setting up CHLD signal handler" msgstr "gdm_main: Fehler beim Einrichten des CHLD-Signalhandlers" @@ -187,12 +187,12 @@ msgstr "gdm_auth_user_remove: Ignoriere verdächtig wirkende Cookiedatei %s" msgid "%s: Directory %s does not exist." msgstr "%s: Verzeichnis %s existiert nicht." -#: daemon/filecheck.c:64 daemon/filecheck.c:102 +#: daemon/filecheck.c:64 daemon/filecheck.c:105 #, c-format msgid "%s: %s is not owned by uid %d." msgstr "%s: %s gehört nicht der UID %d." -#: daemon/filecheck.c:70 daemon/filecheck.c:109 +#: daemon/filecheck.c:70 daemon/filecheck.c:112 #, c-format msgid "%s: %s is writable by group." msgstr "%s: %s ist beschreibbar durch Gruppe." @@ -202,17 +202,22 @@ msgstr "%s: %s ist beschreibbar durch Gruppe." msgid "%s: %s is writable by other." msgstr "%s: %s ist beschreibbar durch Andere." -#: daemon/filecheck.c:95 +#: daemon/filecheck.c:90 +#, fuzzy, c-format +msgid "%s: does not exist and must." +msgstr "%s: Verzeichnis %s existiert nicht." + +#: daemon/filecheck.c:98 #, c-format msgid "%s: %s is not a regular file." msgstr "%s: %s ist keine reguläre Datei." -#: daemon/filecheck.c:116 +#: daemon/filecheck.c:119 #, c-format msgid "%s: %s is writable by group/other." msgstr "%s: %s ist beschreibbar durch Gruppe/Andere." -#: daemon/filecheck.c:123 +#: daemon/filecheck.c:126 #, c-format msgid "%s: %s is bigger than sysadmin specified maximum file size." msgstr "" @@ -228,7 +233,7 @@ msgstr "gdm_exec_script: Start fehlgeschlagen: %s" msgid "gdm_exec_script: Can't fork script process!" msgstr "gdm_exec_script: Kann Skriptprozeß nicht forken!" -#: daemon/server.c:84 daemon/server.c:207 +#: daemon/server.c:84 daemon/server.c:208 msgid "gdm_server_start: Error setting up USR1 signal handler" msgstr "gdm_server_start: Fehler beim Einrichten des USR1-Signalhandlers" @@ -255,7 +260,7 @@ msgstr "gdm_server_start: Kann X-Serverprozeß nicht forken!" msgid "gdm_server_stop: Could not unlink auth file: %s!" msgstr "gdm_server_stop: Konnte auth-Datei nicht entfernen: %s!" -#: daemon/server.c:233 +#: daemon/server.c:234 msgid "gdm_server_restart: Error setting up ALARM signal handler" msgstr "gdm_server_restart: Fehler beim Einrichten des ALARM-Signalhandlers" @@ -338,213 +343,213 @@ msgstr "" msgid "gdm_slave_xsync_ping: Error setting up ALARM signal handler" msgstr "gdm_slave_xsync_ping: Fehler beim Einrichten des ALARM-Signalhandlers" -#: daemon/verify.c:130 daemon/verify.c:222 gui/gdmlogin.c:1238 +#: daemon/verify.c:129 daemon/verify.c:201 gui/gdmlogin.c:1246 msgid "Login:" msgstr "Login:" -#: daemon/verify.c:138 daemon/verify.c:166 daemon/verify.c:226 -#, c-format -msgid "Couldn't authenticate %s" -msgstr "Konnte %s nicht beglaubigen" - -#: daemon/verify.c:141 daemon/verify.c:229 -msgid "User unknown" -msgstr "Benutzer unbekannt" - -#: daemon/verify.c:147 daemon/verify.c:235 -#, c-format -msgid "Root login disallowed on display '%s'" -msgstr "Root-Login auf Display '%s' verboten" - -#: daemon/verify.c:150 daemon/verify.c:238 -msgid "Root login disallowed" -msgstr "Root-Login verboten" - -#: daemon/verify.c:156 +#: daemon/verify.c:135 msgid "Can't find /etc/pam.d/gdm!" msgstr "Kann /etc/pam.d/gdm nicht finden!" -#: daemon/verify.c:161 +#: daemon/verify.c:140 #, c-format msgid "Can't set PAM_TTY=%s" msgstr "Kann PAM_TTY=%s nicht setzen" -#: daemon/verify.c:171 +#: daemon/verify.c:145 daemon/verify.c:222 +#, c-format +msgid "Couldn't authenticate %s" +msgstr "Konnte %s nicht beglaubigen" + +#: daemon/verify.c:150 #, c-format msgid "Couldn't set acct. mgmt for %s" msgstr "Konnte Accountverwaltung für %s nicht setzen" -#: daemon/verify.c:176 +#: daemon/verify.c:155 #, c-format msgid "Couldn't set credentials for %s" msgstr "Konnte Berechtigungsnachweise für %s nicht setzen" -#: daemon/verify.c:181 +#: daemon/verify.c:160 #, c-format msgid "Couldn't open session for %s" msgstr "Konnte Session für %s nicht öffnen" -#: daemon/verify.c:256 +#: daemon/verify.c:217 msgid "Password:" msgstr "Passwort:" -#: daemon/verify.c:261 +#: daemon/verify.c:223 +msgid "User unknown" +msgstr "Benutzer unbekannt" + +#: daemon/verify.c:228 +#, c-format +msgid "Root login disallowed on display '%s'" +msgstr "Root-Login auf Display '%s' verboten" + +#: daemon/verify.c:229 +msgid "Root login disallowed" +msgstr "Root-Login verboten" + +#: daemon/verify.c:237 msgid "Incorrect password" msgstr "Falsches Passwort" -#: daemon/verify.c:280 +#: daemon/verify.c:256 msgid "gdm_verify_check: Can't find PAM configuration file for gdm" msgstr "" -#: daemon/xdmcp.c:179 +#: daemon/xdmcp.c:184 #, c-format msgid "gdm_xdmcp_init: Could not get server hostname: %s!" msgstr "gdm_xdmcp_init: Konnte Server-Rechnername nicht ermitteln: %s!" -#: daemon/xdmcp.c:193 +#: daemon/xdmcp.c:198 msgid "gdm_xdmcp_init: Could not create socket!" msgstr "gdm_xdmcp_init: Konnte keinen Socket erzeugen!" -#: daemon/xdmcp.c:200 +#: daemon/xdmcp.c:205 msgid "gdm_xdmcp_init: Could not bind to XDMCP socket!" msgstr "gdm_xdmcp_init: Konnte nicht an XDMCP-Socket binden!" -#: daemon/xdmcp.c:209 +#: daemon/xdmcp.c:214 #, fuzzy msgid "gdm_xdmcp_init: Can't alloc fifopath" msgstr "gdm_xdmcp_init: Konnte keinen Socket erzeugen!" -#: daemon/xdmcp.c:214 +#: daemon/xdmcp.c:219 #, fuzzy msgid "gdm_xdmcp_init: Could not make FIFO for chooser" msgstr "gdm_xdmcp_init: Konnte keinen Socket erzeugen!" -#: daemon/xdmcp.c:219 +#: daemon/xdmcp.c:224 #, fuzzy msgid "gdm_xdmcp_init: Could not open FIFO for chooser" msgstr "gdm_xdmcp_init: Konnte keinen Socket erzeugen!" -#: daemon/xdmcp.c:273 +#: daemon/xdmcp.c:284 msgid "gdm_xdmcp_decode: Could not create XDMCP buffer!" msgstr "gdm_xdmcp_decode: Konnte keine XDMCP-Puffer erzeugen!" -#: daemon/xdmcp.c:278 +#: daemon/xdmcp.c:289 msgid "gdm_xdmcp_decode: Could not read XDMCP header!" msgstr "gdm_xdmcp_decode: Konnte XDMCP-Header nicht lesen!" -#: daemon/xdmcp.c:283 +#: daemon/xdmcp.c:294 msgid "gdm_xdmcp_decode: Incorrect XDMCP version!" msgstr "gdm_xdmcp_decode: Falsche XDMCP-Version!" -#: daemon/xdmcp.c:319 +#: daemon/xdmcp.c:333 #, c-format msgid "gdm_xdmcp_decode_packet: Unknown opcode from host %s" msgstr "gdm_xdmcp_decode_packet: Unbekannter Opcode von Host %s" -#: daemon/xdmcp.c:337 +#: daemon/xdmcp.c:351 msgid "gdm_xdmcp_handle_query: Could not extract authlist from packet" msgstr "gdm_xdmcp_handle_query: Konnte authlist nicht aus Paket entnehmen" -#: daemon/xdmcp.c:348 +#: daemon/xdmcp.c:362 msgid "gdm_xdmcp_handle_query: Error in checksum" msgstr "gdm_xdmcp_handle_query: Fehler in Prüfsumme" -#: daemon/xdmcp.c:379 +#: daemon/xdmcp.c:433 msgid "gdm_xdmcp_handle_forward_query: Could not read display address" msgstr "gdm_xdmcp_handle_forward_query: Konnte Displayadresse nicht lesen" -#: daemon/xdmcp.c:385 +#: daemon/xdmcp.c:439 msgid "gdm_xdmcp_handle_forward_query: Could not read display port number" msgstr "gdm_xdmcp_handle_forward_query: Konnte Display-Portnummer nicht lesen" -#: daemon/xdmcp.c:391 +#: daemon/xdmcp.c:445 msgid "gdm_xdmcp_handle_forward_query: Could not extract authlist from packet" msgstr "" "gdm_xdmcp_handle_forward_query: Konnte authlist nicht aus Paket entnehmen" -#: daemon/xdmcp.c:406 +#: daemon/xdmcp.c:460 msgid "gdm_xdmcp_handle_forward_query: Error in checksum" msgstr "gdm_xdmcp_handle_forward_query: Fehler in Prüfsumme" -#: daemon/xdmcp.c:469 +#: daemon/xdmcp.c:523 #, c-format msgid "Denied XDMCP query from host %s" msgstr "XDMCP-Anfrage von Rechner %s abgelehnt" -#: daemon/xdmcp.c:471 +#: daemon/xdmcp.c:525 msgid "Display not authorized to connect" msgstr "Display ist nicht autorisiert zu verbinden" -#: daemon/xdmcp.c:504 +#: daemon/xdmcp.c:558 #, c-format msgid "gdm_xdmcp_handle_request: Got REQUEST from banned host %s" msgstr "gdm_xdmcp_handle_request: REQUEST von gesperrtem Host %s bekommen" -#: daemon/xdmcp.c:511 +#: daemon/xdmcp.c:565 msgid "gdm_xdmcp_handle_request: Could not read Display Number" msgstr "gdm_xdmcp_handle_request: Konnte Displaynummer nicht lesen" -#: daemon/xdmcp.c:517 +#: daemon/xdmcp.c:571 msgid "gdm_xdmcp_handle_request: Could not read Connection Type" msgstr "gdm_xdmcp_handle_request: Konnte Verbindungstyp nicht lesen" -#: daemon/xdmcp.c:523 +#: daemon/xdmcp.c:577 msgid "gdm_xdmcp_handle_request: Could not read Client Address" msgstr "gdm_xdmcp_handle_request: Konnte Clientadresse nicht lesen" -#: daemon/xdmcp.c:529 +#: daemon/xdmcp.c:583 msgid "gdm_xdmcp_handle_request: Could not read Authentication Names" msgstr "gdm_xdmcp_handle_request: Konnte Authentikationsnamen nicht lesen" -#: daemon/xdmcp.c:535 +#: daemon/xdmcp.c:589 msgid "gdm_xdmcp_handle_request: Could not read Authentication Data" msgstr "gdm_xdmcp_handle_request: Konnte Authentikationsdaten nicht lesen" -#: daemon/xdmcp.c:541 +#: daemon/xdmcp.c:595 msgid "gdm_xdmcp_handle_request: Could not read Authorization List" msgstr "gdm_xdmcp_handle_request: Konnte Autorisationsliste nicht lesen" -#: daemon/xdmcp.c:552 +#: daemon/xdmcp.c:606 msgid "gdm_xdmcp_handle_request: Could not read Manufacturer ID" msgstr "gdm_xdmcp_handle_request: Konnte Manufacturer ID nicht lesen" -#: daemon/xdmcp.c:570 +#: daemon/xdmcp.c:624 #, c-format msgid "gdm_xdmcp_handle_request: Failed checksum from %s" msgstr "gdm_xdmcp_handle_request: Falsche Prüfsumme von %s" -#: daemon/xdmcp.c:683 +#: daemon/xdmcp.c:737 #, c-format msgid "gdm_xdmcp_handle_manage: Got Manage from banned host %s" msgstr "gdm_xdmcp_handle_manage: Manage von gesperrtem Host %s erhalten" -#: daemon/xdmcp.c:690 +#: daemon/xdmcp.c:744 msgid "gdm_xdmcp_handle_manage: Could not read Session ID" msgstr "gdm_xdmcp_handle_manage: Konnte Session ID nicht lesen" -#: daemon/xdmcp.c:696 +#: daemon/xdmcp.c:750 msgid "gdm_xdmcp_handle_manage: Could not read Display Number" msgstr "gdm_xdmcp_handle_manage: Konnte Displaynummer nicht lesen" -#: daemon/xdmcp.c:705 +#: daemon/xdmcp.c:759 msgid "gdm_xdmcp_manage: Could not read Display Class" msgstr "gdm_xdmcp_manage: Konnte Displayklasse nicht lesen" -#: daemon/xdmcp.c:726 +#: daemon/xdmcp.c:780 #, c-format msgid "gdm_xdmcp_handle_manage: Could not open logfile for display %s!" msgstr "gdm_xdmcp_handle_manage: Konnte Logdatei für Display %s nicht öffnen!" -#: daemon/xdmcp.c:798 +#: daemon/xdmcp.c:852 #, c-format msgid "gdm_xdmcp_handle_keepalive: Got KEEPALIVE from banned host %s" msgstr "gdm_xdmcp_handle_keepalive: KEEPALIVE von gesperrtem Host %s bekommen" -#: daemon/xdmcp.c:805 +#: daemon/xdmcp.c:859 msgid "gdm_xdmcp_handle_keepalive: Could not read Display Number" msgstr "gdm_xdmcp_handle_keepalive: Konnte Displaynummer nicht lesen" -#: daemon/xdmcp.c:811 +#: daemon/xdmcp.c:865 msgid "gdm_xdmcp_handle_keepalive: Could not read Session ID" msgstr "gdm_xdmcp_handle_keepalive: Konnte Session ID nicht lesen" @@ -583,36 +588,37 @@ msgstr "gdm_signals_init: Fehler beim Einrichten des INT-Signalhandlers" msgid "gdm_signals_init: Error setting up TERM signal handler" msgstr "gdm_signals_init: Fehler beim Einrichten des TERM-Signalhandlers" -#: gui/gdmchooser.c:596 gui/gdmlogin.c:1541 +#: gui/gdmchooser.c:596 gui/gdmlogin.c:1555 msgid "Could not set signal mask!" msgstr "Konnte Signalmaske nicht setzen!" -#: gui/gdmlogin.c:276 +#: gui/gdmlogin.c:271 msgid "gdm_parse_enriched_string: String too long!" msgstr "gdm_parse_enriched_string: String ist zu lang!" -#: gui/gdmlogin.c:277 -msgid "Welcome to " +#: gui/gdmlogin.c:272 +#, fuzzy, c-format +msgid "Welcome to %s" msgstr "Willkommen auf " -#: gui/gdmlogin.c:281 +#: gui/gdmlogin.c:276 msgid "gdm_parse_enriched_string: Could not malloc temporary buffer!" msgstr "gdm_parse_enriched_string: Konnte temporären Buffer nicht allozieren!" -#: gui/gdmlogin.c:363 +#: gui/gdmlogin.c:358 msgid "Are you sure you want to reboot the machine?" msgstr "Sind Sie sicher, daß Sie den Rechner neu starten möchten?" -#: gui/gdmlogin.c:376 +#: gui/gdmlogin.c:371 msgid "Are you sure you want to halt the machine?" msgstr "Sind Sie sicher, daß Sie den Rechner anhalten möchten?" -#: gui/gdmlogin.c:393 +#: gui/gdmlogin.c:388 #, c-format msgid "gdm_login_parse_config: No configuration file: %s. Aborting." msgstr "gdm_login_parse_config: Keine Konfigurationsdatei: %s. Breche ab." -#: gui/gdmlogin.c:525 +#: gui/gdmlogin.c:524 #, c-format msgid "" "Your preferred session type %s is not installed on this machine.\n" @@ -621,7 +627,7 @@ msgstr "" "Ihr bevorzugter Sitzungstyp %s ist auf diesem Rechner nicht installiert.\n" "Möchten Sie %s zu Ihrer Voreinstellung für zukünftige Sitzungen machen?" -#: gui/gdmlogin.c:544 gui/gdmlogin.c:574 +#: gui/gdmlogin.c:543 gui/gdmlogin.c:573 #, c-format msgid "" "You have chosen %s for this session, but your default setting is %s.\n" @@ -630,91 +636,91 @@ msgstr "" "Sie haben %s für diese Sitzung ausgewählt. Ihre Voreinstellung ist aber %s.\n" "Möchten Sie %s zu Ihrer Voreinstellung für zukünftige Sitzungen machen?" -#: gui/gdmlogin.c:632 +#: gui/gdmlogin.c:631 #, c-format msgid "%s session selected" msgstr "Sitzung %s ausgewählt" -#: gui/gdmlogin.c:648 gui/gdmlogin.c:751 +#: gui/gdmlogin.c:647 gui/gdmlogin.c:750 msgid "Last" msgstr "Letzte" -#: gui/gdmlogin.c:663 +#: gui/gdmlogin.c:662 msgid "gdm_login_session_init: Session script directory not found!" msgstr "gdm_login_session_init: Sitzungsskript-Verzeichnis nicht gefunden!" -#: gui/gdmlogin.c:716 +#: gui/gdmlogin.c:715 msgid "No session scripts found. Aborting!" msgstr "Keine Sitzungs-Skripte gefunden. Breche ab!" -#: gui/gdmlogin.c:720 +#: gui/gdmlogin.c:719 #, c-format msgid "No default session link found. Using %s.\n" msgstr "Keinen Link zur voreingestellten Sitzung gefunden. Benutze %s.\n" -#: gui/gdmlogin.c:734 +#: gui/gdmlogin.c:733 #, c-format msgid "%s language selected" msgstr "Sprache %s ausgewählt" -#: gui/gdmlogin.c:766 +#: gui/gdmlogin.c:765 msgid "A-M" msgstr "A-M" -#: gui/gdmlogin.c:772 +#: gui/gdmlogin.c:771 msgid "N-Z" msgstr "N-Z" -#: gui/gdmlogin.c:778 +#: gui/gdmlogin.c:777 msgid "Other" msgstr "Andere" -#: gui/gdmlogin.c:1077 +#: gui/gdmlogin.c:1080 msgid "Session" msgstr "Sitzung" -#: gui/gdmlogin.c:1084 +#: gui/gdmlogin.c:1087 msgid "Language" msgstr "Sprache" -#: gui/gdmlogin.c:1091 +#: gui/gdmlogin.c:1094 msgid "Reboot..." msgstr "Neustart..." -#: gui/gdmlogin.c:1098 +#: gui/gdmlogin.c:1101 msgid "Halt..." msgstr "Herunterfahren..." -#: gui/gdmlogin.c:1105 +#: gui/gdmlogin.c:1108 msgid "System" msgstr "System" -#: gui/gdmlogin.c:1113 +#: gui/gdmlogin.c:1116 #, c-format msgid "Can't open icon file: %s. Suspending iconify feature!" msgstr "Kann Icondatei nicht öffnen: %s. Minimierung nicht möglich!" -#: gui/gdmlogin.c:1116 +#: gui/gdmlogin.c:1119 msgid "Iconify" msgstr "Minimieren" -#: gui/gdmlogin.c:1273 +#: gui/gdmlogin.c:1281 msgid "Please enter your login" msgstr "Bitte geben Sie Ihr Login ein" -#: gui/gdmlogin.c:1458 +#: gui/gdmlogin.c:1462 #, c-format msgid "Can't open DefaultImage: %s. Suspending face browser!" msgstr "Kann DefaultImage nicht öffnen: %s. Gesichterliste abgeschaltet!" -#: gui/gdmlogin.c:1527 +#: gui/gdmlogin.c:1541 msgid "main: Error setting up HUP signal handler" msgstr "main: Fehler beim Einrichten des HUP-Signalhandlers" -#: gui/gdmlogin.c:1530 +#: gui/gdmlogin.c:1544 msgid "main: Error setting up INT signal handler" msgstr "main: Fehler beim Einrichten des INT-Signalhandlers" -#: gui/gdmlogin.c:1533 +#: gui/gdmlogin.c:1547 msgid "main: Error setting up TERM signal handler" msgstr "main: Fehler beim Einrichten des TERM-Signalhandlers" @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gdm VERSION\n" -"POT-Creation-Date: 1999-09-01 23:49+0200\n" +"POT-Creation-Date: 1999-09-23 01:59+0200\n" "PO-Revision-Date: 1998-09-12 21:08+0200\n" "Last-Translator: Vincent Renardias <vincent@debian.org>\n" "Language-Team: GNOME French Team <gnomefr@gnomefr.traduc.org>\n" @@ -14,68 +14,68 @@ msgstr "" "Content-Type: text/plain; charset=iso-8859-1\n" "Content-Transfer-Encoding: 8bit\n" -#: daemon/gdm.c:167 +#: daemon/gdm.c:166 #, c-format msgid "gdm_config_parse: No configuration file: %s. Aborting." msgstr "gdm_config_parse: Pas de fichier de configuration: %s. Abandon." -#: daemon/gdm.c:218 +#: daemon/gdm.c:217 msgid "gdm_config_parse: No greeter specified and default not found." msgstr "" -#: daemon/gdm.c:230 +#: daemon/gdm.c:229 msgid "gdm_config_parse: No authdir specified and default not found." msgstr "gdm_config_parse: authdir non défini et valeur par défaut inconnue" -#: daemon/gdm.c:248 +#: daemon/gdm.c:247 msgid "" "gdm_config_parse: No sessions directory specified and default not found." msgstr "" "gdm_config_parse: Répertoire de sessions non défini et valeur par défaut " "inconnue." -#: daemon/gdm.c:260 +#: daemon/gdm.c:259 msgid "gdm_config_parse: Invalid server line in config file. Ignoring!" msgstr "" "gdm_config_parse: Ligne du server invalide dans le fichier de configuration. " "Ignore." -#: daemon/gdm.c:266 +#: daemon/gdm.c:265 msgid "" "gdm_config_parse: Xdmcp disabled and no local servers defined. Aborting!" msgstr "" "gdm_config_parse: Xdmcp désactivé et pas de serveurs locaux définis. Abandon!" -#: daemon/gdm.c:271 +#: daemon/gdm.c:270 #, c-format msgid "gdm_config_parse: Can't find the gdm user (%s). Aborting!" msgstr "" "gdm_config_parse: Impossible de trouver l'utilisateur gdm (%s). Abandon!" -#: daemon/gdm.c:276 +#: daemon/gdm.c:275 msgid "gdm_config_parse: The gdm user should not be root. Aborting!" msgstr "gdm_config_parse: L'utilisateur gdm ne doit pas être root. Abandon!" -#: daemon/gdm.c:281 +#: daemon/gdm.c:280 #, c-format msgid "gdm_config_parse: Can't find the gdm group (%s). Aborting!" msgstr "gdm_config_parse: Impossible de trouver le groupe gdm (%s). Abandon!" -#: daemon/gdm.c:286 +#: daemon/gdm.c:285 msgid "gdm_config_parse: The gdm group should not be root. Aborting!" msgstr "gdm_config_parse: Le groupe gdm ne doit pas être root. Abandon!" -#: daemon/gdm.c:293 +#: daemon/gdm.c:292 #, c-format msgid "gdm_config_parse: Authdir %s does not exist. Aborting." msgstr "gdm_config_parse: Le répertoire Authdir %s n'existe pas. Abandon." -#: daemon/gdm.c:296 +#: daemon/gdm.c:295 #, c-format msgid "gdm_config_parse: Authdir %s is not a directory. Aborting." msgstr "gdm_config_parse: Authdir %s n'est pas un répertoire. Abandon." -#: daemon/gdm.c:299 +#: daemon/gdm.c:298 #, c-format msgid "" "gdm_config_parse: Authdir %s is not owned by user %s, group %s. Aborting." @@ -83,7 +83,7 @@ msgstr "" "gdm_config_parse: Le répertoire Authdir %s n'appartient pas à l'utilisateur " "%s, du groupe %s. Abandon." -#: daemon/gdm.c:303 +#: daemon/gdm.c:302 #, c-format msgid "" "gdm_config_parse: Authdir %s has wrong permissions. Should be 750. Aborting." @@ -91,51 +91,51 @@ msgstr "" "gdm_config_parse: Authdir %s a de mauvais droits d'accès. Les permissions " "devraient être fixées à 750. Abandon." -#: daemon/gdm.c:364 +#: daemon/gdm.c:363 #, c-format msgid "gdm_display_manage: Failed forking gdm slave process for %d" msgstr "" "gdm_display_manage: Échec à la création du processus esclave gdm pour %d" -#: daemon/gdm.c:443 +#: daemon/gdm.c:442 #, c-format msgid "gdm_child_action: Aborting display %s" msgstr "gdm_child_action: Abandon affichage %s" -#: daemon/gdm.c:448 +#: daemon/gdm.c:447 msgid "gdm_child_action: Master rebooting..." msgstr "gdm_child_action: Redémarrage du maître..." -#: daemon/gdm.c:454 +#: daemon/gdm.c:453 #, c-format msgid "gdm_child_action: Reboot failed: %s" msgstr "gdm_child_action: Échec du redémarrage: %s" -#: daemon/gdm.c:458 +#: daemon/gdm.c:457 msgid "gdm_child_action: Master halting..." msgstr "gdm_child_action: Arrêt du maître..." -#: daemon/gdm.c:464 +#: daemon/gdm.c:463 #, c-format msgid "gdm_child_action: Halt failed: %s" msgstr "gdm_child_action: Échec de l'arrêt: %s" -#: daemon/gdm.c:561 +#: daemon/gdm.c:560 msgid "gdm_daemonify: fork() failed!" msgstr "gdm_daemonify: échec du fork()!" -#: daemon/gdm.c:564 +#: daemon/gdm.c:563 #, c-format msgid "gdm_daemonify: setsid() failed: %s!" msgstr "gdm_daemonify: échec de setid(): %s!" #. XDM compliant error message -#: daemon/gdm.c:590 +#: daemon/gdm.c:589 #, fuzzy msgid "Only root wants to run x^hgdm\n" msgstr "gdm fonctionne uniquement sous root\n" -#: daemon/gdm.c:611 +#: daemon/gdm.c:610 msgid "" "gdm already running. Aborting!\n" "\n" @@ -143,7 +143,7 @@ msgstr "" "gdm est déjà lancé. Abandon!\n" "\n" -#: daemon/gdm.c:617 +#: daemon/gdm.c:616 #, c-format msgid "" "According to %s, gdm was already running (%d),\n" @@ -152,19 +152,19 @@ msgstr "" "Selon to %s, gdm est déjà lancé (%d),\n" "mais semble avoir été mystérieusement supprimé.\n" -#: daemon/gdm.c:639 +#: daemon/gdm.c:638 msgid "gdm_main: Error setting up TERM signal handler" msgstr "" "gdm_main: Erreur lors de la configuration de la procédure de prise en charge " "du signal TERM" -#: daemon/gdm.c:642 +#: daemon/gdm.c:641 msgid "gdm_main: Error setting up INT signal handler" msgstr "" "gdm_main: Erreur lors de la configuration de la procédure de prise en charge " "du signal INT" -#: daemon/gdm.c:650 +#: daemon/gdm.c:649 msgid "gdm_main: Error setting up CHLD signal handler" msgstr "" "gdm_main: Erreur lors de la configuration de la procédure de prise en charge " @@ -191,12 +191,12 @@ msgstr "gdm_auth_user_remove: Erreur au démarrage du processus xauth: %s" msgid "%s: Directory %s does not exist." msgstr "" -#: daemon/filecheck.c:64 daemon/filecheck.c:102 +#: daemon/filecheck.c:64 daemon/filecheck.c:105 #, c-format msgid "%s: %s is not owned by uid %d." msgstr "%s: %s n'appartient pas à l'uid %d. Ignore." -#: daemon/filecheck.c:70 daemon/filecheck.c:109 +#: daemon/filecheck.c:70 daemon/filecheck.c:112 #, c-format msgid "%s: %s is writable by group." msgstr "" @@ -210,19 +210,24 @@ msgstr "" "%s: %s peut être modifié par d'autres utilisateurs. Les droits d'accès " "devraient être 755. Ignore." -#: daemon/filecheck.c:95 +#: daemon/filecheck.c:90 +#, c-format +msgid "%s: does not exist and must." +msgstr "" + +#: daemon/filecheck.c:98 #, c-format msgid "%s: %s is not a regular file." msgstr "%s: %s n'est pas un fichier. Ignore." -#: daemon/filecheck.c:116 +#: daemon/filecheck.c:119 #, c-format msgid "%s: %s is writable by group/other." msgstr "" "%s: %s peut être modifié par d'autres utilisateurs. Les droits d'accès " "devraient être 755. Ignore." -#: daemon/filecheck.c:123 +#: daemon/filecheck.c:126 #, c-format msgid "%s: %s is bigger than sysadmin specified maximum file size." msgstr "" @@ -238,7 +243,7 @@ msgstr "gdm_exec_script: Échec du lancement: %s" msgid "gdm_exec_script: Can't fork script process!" msgstr "gdm_exec_script: Impossible de créer le processus de script!" -#: daemon/server.c:84 daemon/server.c:207 +#: daemon/server.c:84 daemon/server.c:208 msgid "gdm_server_start: Error setting up USR1 signal handler" msgstr "" "gdm_server_start: Erreur lors de la configuration de la procédure de prise " @@ -269,7 +274,7 @@ msgstr "gdm_server_start: Impossible de créer le processus du server X!" msgid "gdm_server_stop: Could not unlink auth file: %s!" msgstr "gdm_server_stop: Impossible d'effacer le fichier d'autorisations: %s!" -#: daemon/server.c:233 +#: daemon/server.c:234 msgid "gdm_server_restart: Error setting up ALARM signal handler" msgstr "" "gdm_server_restart: Erreur lors de la configuration de la procédure de prise " @@ -362,225 +367,225 @@ msgstr "" "gdm_slave_xsync_ping: Erreur lors de la configuration de la procédure de " "prise en charge du signal ALARM" -#: daemon/verify.c:130 daemon/verify.c:222 gui/gdmlogin.c:1238 +#: daemon/verify.c:129 daemon/verify.c:201 gui/gdmlogin.c:1246 msgid "Login:" msgstr "Login:" -#: daemon/verify.c:138 daemon/verify.c:166 daemon/verify.c:226 -#, c-format -msgid "Couldn't authenticate %s" -msgstr "Impossible d'identifier %s" - -#: daemon/verify.c:141 daemon/verify.c:229 -msgid "User unknown" -msgstr "Utilisateur inconnu" - -#: daemon/verify.c:147 daemon/verify.c:235 -#, c-format -msgid "Root login disallowed on display '%s'" -msgstr "" - -#: daemon/verify.c:150 daemon/verify.c:238 -msgid "Root login disallowed" -msgstr "" - -#: daemon/verify.c:156 +#: daemon/verify.c:135 msgid "Can't find /etc/pam.d/gdm!" msgstr "Impossible de trouver /etc/pam.d/gdm!" -#: daemon/verify.c:161 +#: daemon/verify.c:140 #, c-format msgid "Can't set PAM_TTY=%s" msgstr "Impossible d'affecter PAM_TTY=%s" -#: daemon/verify.c:171 +#: daemon/verify.c:145 daemon/verify.c:222 +#, c-format +msgid "Couldn't authenticate %s" +msgstr "Impossible d'identifier %s" + +#: daemon/verify.c:150 #, c-format msgid "Couldn't set acct. mgmt for %s" msgstr "Impossible d'obtenir l'acct. mgmt de pam pour %s" -#: daemon/verify.c:176 +#: daemon/verify.c:155 #, c-format msgid "Couldn't set credentials for %s" msgstr "Impossible d'obtenir les autorisations pam (credentials) pour %s" -#: daemon/verify.c:181 +#: daemon/verify.c:160 #, c-format msgid "Couldn't open session for %s" msgstr "Impossible d'ouvrir la session pour %s" -#: daemon/verify.c:256 +#: daemon/verify.c:217 msgid "Password:" msgstr "Mot de passe:" -#: daemon/verify.c:261 +#: daemon/verify.c:223 +msgid "User unknown" +msgstr "Utilisateur inconnu" + +#: daemon/verify.c:228 +#, c-format +msgid "Root login disallowed on display '%s'" +msgstr "" + +#: daemon/verify.c:229 +msgid "Root login disallowed" +msgstr "" + +#: daemon/verify.c:237 msgid "Incorrect password" msgstr "Mot de passe incorrect" -#: daemon/verify.c:280 +#: daemon/verify.c:256 msgid "gdm_verify_check: Can't find PAM configuration file for gdm" msgstr "" -#: daemon/xdmcp.c:179 +#: daemon/xdmcp.c:184 #, c-format msgid "gdm_xdmcp_init: Could not get server hostname: %s!" msgstr "gdm_xdmcp_init: Impossible d'obtenir le nom du serveur: %s!" -#: daemon/xdmcp.c:193 +#: daemon/xdmcp.c:198 msgid "gdm_xdmcp_init: Could not create socket!" msgstr "gdm_xdmcp_init: Impossible de créer la socket!" -#: daemon/xdmcp.c:200 +#: daemon/xdmcp.c:205 msgid "gdm_xdmcp_init: Could not bind to XDMCP socket!" msgstr "gdm_xdmcp_init: Impossible de se rattacher à la socket XDMCP!" -#: daemon/xdmcp.c:209 +#: daemon/xdmcp.c:214 #, fuzzy msgid "gdm_xdmcp_init: Can't alloc fifopath" msgstr "gdm_xdmcp_init: Impossible de créer la socket!" -#: daemon/xdmcp.c:214 +#: daemon/xdmcp.c:219 #, fuzzy msgid "gdm_xdmcp_init: Could not make FIFO for chooser" msgstr "gdm_xdmcp_init: Impossible de créer la socket!" -#: daemon/xdmcp.c:219 +#: daemon/xdmcp.c:224 #, fuzzy msgid "gdm_xdmcp_init: Could not open FIFO for chooser" msgstr "gdm_xdmcp_init: Impossible de créer la socket!" -#: daemon/xdmcp.c:273 +#: daemon/xdmcp.c:284 msgid "gdm_xdmcp_decode: Could not create XDMCP buffer!" msgstr "gdm_xdmcp_decode: Impossible de créer le buffer XDMCP!" -#: daemon/xdmcp.c:278 +#: daemon/xdmcp.c:289 msgid "gdm_xdmcp_decode: Could not read XDMCP header!" msgstr "gdm_xdmcp_decode: Impossible de lire l'entête XDMCP!" -#: daemon/xdmcp.c:283 +#: daemon/xdmcp.c:294 msgid "gdm_xdmcp_decode: Incorrect XDMCP version!" msgstr "gdm_xdmcp_decode: Version de XDMCP incorrecte!" -#: daemon/xdmcp.c:319 +#: daemon/xdmcp.c:333 #, c-format msgid "gdm_xdmcp_decode_packet: Unknown opcode from host %s" msgstr "gdm_xdmcp_decode_packet: opcode inconnu pour la machine %s" -#: daemon/xdmcp.c:337 +#: daemon/xdmcp.c:351 msgid "gdm_xdmcp_handle_query: Could not extract authlist from packet" msgstr "" "gdm_xdmcp_query: Impossible d'extraire la liste des machines autorisées " "à partir des données du paquet" -#: daemon/xdmcp.c:348 +#: daemon/xdmcp.c:362 msgid "gdm_xdmcp_handle_query: Error in checksum" msgstr "gdm_xdmcp_query: Erreur dans la somme de contrôle" -#: daemon/xdmcp.c:379 +#: daemon/xdmcp.c:433 msgid "gdm_xdmcp_handle_forward_query: Could not read display address" msgstr "gdm_xdmcp_handle_request: Impossible de lire le numéro de l'écran" -#: daemon/xdmcp.c:385 +#: daemon/xdmcp.c:439 msgid "gdm_xdmcp_handle_forward_query: Could not read display port number" msgstr "gdm_xdmcp_handle_request: Impossible de lire le numéro de l'écran" -#: daemon/xdmcp.c:391 +#: daemon/xdmcp.c:445 msgid "gdm_xdmcp_handle_forward_query: Could not extract authlist from packet" msgstr "" "gdm_xdmcp_query: Impossible d'extraire la liste des machines autorisées " "à partir des données du paquet" -#: daemon/xdmcp.c:406 +#: daemon/xdmcp.c:460 msgid "gdm_xdmcp_handle_forward_query: Error in checksum" msgstr "gdm_xdmcp_query: Erreur dans la somme de contrôle" -#: daemon/xdmcp.c:469 +#: daemon/xdmcp.c:523 #, c-format msgid "Denied XDMCP query from host %s" msgstr "Demande XDMCP non autorisée par la machine %s" -#: daemon/xdmcp.c:471 +#: daemon/xdmcp.c:525 msgid "Display not authorized to connect" msgstr "Pas d'autorisation pour se connecter à cet écran" -#: daemon/xdmcp.c:504 +#: daemon/xdmcp.c:558 #, c-format msgid "gdm_xdmcp_handle_request: Got REQUEST from banned host %s" msgstr "" "gdm_xdmcp_handle_request: Réception de REQUEST d'une machine interdite %s" -#: daemon/xdmcp.c:511 +#: daemon/xdmcp.c:565 msgid "gdm_xdmcp_handle_request: Could not read Display Number" msgstr "gdm_xdmcp_handle_request: Impossible de lire le numéro de l'écran" -#: daemon/xdmcp.c:517 +#: daemon/xdmcp.c:571 msgid "gdm_xdmcp_handle_request: Could not read Connection Type" msgstr "gdm_xdmcp_handle_request: Impossible de lire le type de connection" -#: daemon/xdmcp.c:523 +#: daemon/xdmcp.c:577 msgid "gdm_xdmcp_handle_request: Could not read Client Address" msgstr "gdm_xdmcp_handle_request: Impossible de lire l'adresse du client" -#: daemon/xdmcp.c:529 +#: daemon/xdmcp.c:583 msgid "gdm_xdmcp_handle_request: Could not read Authentication Names" msgstr "" "gdm_xdmcp_handle_request: Impossible de lire les noms de l'authentification" -#: daemon/xdmcp.c:535 +#: daemon/xdmcp.c:589 msgid "gdm_xdmcp_handle_request: Could not read Authentication Data" msgstr "" "gdm_xdmcp_handle_request: Impossible de lire les données de " "l'authentification" -#: daemon/xdmcp.c:541 +#: daemon/xdmcp.c:595 msgid "gdm_xdmcp_handle_request: Could not read Authorization List" msgstr "" "gdm_xdmcp_handle_request: Impossible de lire la liste de l'authentification" -#: daemon/xdmcp.c:552 +#: daemon/xdmcp.c:606 msgid "gdm_xdmcp_handle_request: Could not read Manufacturer ID" msgstr "gdm_xdmcp_handle_request: Impossible de lire l'ID du fabricant" -#: daemon/xdmcp.c:570 +#: daemon/xdmcp.c:624 #, c-format msgid "gdm_xdmcp_handle_request: Failed checksum from %s" msgstr "gdm_xdmcp_handle_request: Erreur de la somme de contrôle pour %s" -#: daemon/xdmcp.c:683 +#: daemon/xdmcp.c:737 #, c-format msgid "gdm_xdmcp_handle_manage: Got Manage from banned host %s" msgstr "" "gdm_xdmcp_handle_manage: Réception de \"Manage\" d'une machine interdite %s" -#: daemon/xdmcp.c:690 +#: daemon/xdmcp.c:744 msgid "gdm_xdmcp_handle_manage: Could not read Session ID" msgstr "gdm_xdmcp_handle_manage: Impossible de lire l'ID de session" -#: daemon/xdmcp.c:696 +#: daemon/xdmcp.c:750 msgid "gdm_xdmcp_handle_manage: Could not read Display Number" msgstr "gdm_xdmcp_handle_manage: Impossible de lire le numéro de l'écran" -#: daemon/xdmcp.c:705 +#: daemon/xdmcp.c:759 msgid "gdm_xdmcp_manage: Could not read Display Class" msgstr "gdm_xdmcp_manage: Impossible de lire le classe de l'écran" -#: daemon/xdmcp.c:726 +#: daemon/xdmcp.c:780 #, c-format msgid "gdm_xdmcp_handle_manage: Could not open logfile for display %s!" msgstr "" "gdm_xdmcp_handle_manage: Impossible d'ouvrir le fichier d'historique pour " "l'écran %s!" -#: daemon/xdmcp.c:798 +#: daemon/xdmcp.c:852 #, c-format msgid "gdm_xdmcp_handle_keepalive: Got KEEPALIVE from banned host %s" msgstr "" "gdm_xdmcp_handle_keepalive: Réception de KEEPALIVE d'une machine interdite %s" -#: daemon/xdmcp.c:805 +#: daemon/xdmcp.c:859 msgid "gdm_xdmcp_handle_keepalive: Could not read Display Number" msgstr "gdm_xdmcp_handle_keepalive: Impossible de lire de numéro de l'écran" -#: daemon/xdmcp.c:811 +#: daemon/xdmcp.c:865 msgid "gdm_xdmcp_handle_keepalive: Could not read Session ID" msgstr "gdm_xdmcp_handle_keepalive: Impossible de lire l'ID de session" @@ -629,36 +634,37 @@ msgstr "" "gdm_main: Erreur lors de la configuration de la procédure de prise en charge " "du signal TERM" -#: gui/gdmchooser.c:596 gui/gdmlogin.c:1541 +#: gui/gdmchooser.c:596 gui/gdmlogin.c:1555 msgid "Could not set signal mask!" msgstr "" -#: gui/gdmlogin.c:276 +#: gui/gdmlogin.c:271 msgid "gdm_parse_enriched_string: String too long!" msgstr "gdm_parse_enriched_string: Chaîne trop longue!" -#: gui/gdmlogin.c:277 -msgid "Welcome to " +#: gui/gdmlogin.c:272 +#, fuzzy, c-format +msgid "Welcome to %s" msgstr "Bienvenue sur " -#: gui/gdmlogin.c:281 +#: gui/gdmlogin.c:276 msgid "gdm_parse_enriched_string: Could not malloc temporary buffer!" msgstr "gdm_parse_enriched_string: Impossible d'allouer un buffer temporaire!" -#: gui/gdmlogin.c:363 +#: gui/gdmlogin.c:358 msgid "Are you sure you want to reboot the machine?" msgstr "Voulez-vous vraiment redémarrer le système?" -#: gui/gdmlogin.c:376 +#: gui/gdmlogin.c:371 msgid "Are you sure you want to halt the machine?" msgstr "Voulez-vous vraiment arrêter le système?" -#: gui/gdmlogin.c:393 +#: gui/gdmlogin.c:388 #, c-format msgid "gdm_login_parse_config: No configuration file: %s. Aborting." msgstr "gdm_login_parse_config: Pas de fichier de configuration: %s. Abandon." -#: gui/gdmlogin.c:525 +#: gui/gdmlogin.c:524 #, c-format msgid "" "Your preferred session type %s is not installed on this machine.\n" @@ -667,7 +673,7 @@ msgstr "" "Votre type favori de session %s n'est pas installé sur cette machine.\n" "Souhaitez-vous que %s devienne le type par défaut de vos futures sessions?" -#: gui/gdmlogin.c:544 gui/gdmlogin.c:574 +#: gui/gdmlogin.c:543 gui/gdmlogin.c:573 #, c-format msgid "" "You have chosen %s for this session, but your default setting is %s.\n" @@ -678,102 +684,102 @@ msgstr "" "Souhaitez-vous faire de %s votre configuration par défaut pour vos futures " "sessions?" -#: gui/gdmlogin.c:632 +#: gui/gdmlogin.c:631 #, c-format msgid "%s session selected" msgstr "session %s sélectionnée" -#: gui/gdmlogin.c:648 gui/gdmlogin.c:751 +#: gui/gdmlogin.c:647 gui/gdmlogin.c:750 msgid "Last" msgstr "Précédente" -#: gui/gdmlogin.c:663 +#: gui/gdmlogin.c:662 msgid "gdm_login_session_init: Session script directory not found!" msgstr "" "gdm_login_session_init: Impossible de trouver le répertoire des scripts de " "session!" -#: gui/gdmlogin.c:716 +#: gui/gdmlogin.c:715 msgid "No session scripts found. Aborting!" msgstr "Aucun script de session. Abandon!" -#: gui/gdmlogin.c:720 +#: gui/gdmlogin.c:719 #, c-format msgid "No default session link found. Using %s.\n" msgstr "Pas de lien vers une session par défaut. Utilisation de %s.\n" -#: gui/gdmlogin.c:734 +#: gui/gdmlogin.c:733 #, c-format msgid "%s language selected" msgstr "langage %s sélectionné" -#: gui/gdmlogin.c:766 +#: gui/gdmlogin.c:765 msgid "A-M" msgstr "A-M" -#: gui/gdmlogin.c:772 +#: gui/gdmlogin.c:771 msgid "N-Z" msgstr "N-Z" -#: gui/gdmlogin.c:778 +#: gui/gdmlogin.c:777 msgid "Other" msgstr "Autre" -#: gui/gdmlogin.c:1077 +#: gui/gdmlogin.c:1080 msgid "Session" msgstr "Session" -#: gui/gdmlogin.c:1084 +#: gui/gdmlogin.c:1087 msgid "Language" msgstr "Langage" -#: gui/gdmlogin.c:1091 +#: gui/gdmlogin.c:1094 msgid "Reboot..." msgstr "Redémarrage..." -#: gui/gdmlogin.c:1098 +#: gui/gdmlogin.c:1101 msgid "Halt..." msgstr "Arrêt..." -#: gui/gdmlogin.c:1105 +#: gui/gdmlogin.c:1108 msgid "System" msgstr "Système" -#: gui/gdmlogin.c:1113 +#: gui/gdmlogin.c:1116 #, c-format msgid "Can't open icon file: %s. Suspending iconify feature!" msgstr "" "Impossible d'ouvrir le fichier icône: %s. L'utilisation des icônes est " "suspendue!" -#: gui/gdmlogin.c:1116 +#: gui/gdmlogin.c:1119 msgid "Iconify" msgstr "Iconifier" -#: gui/gdmlogin.c:1273 +#: gui/gdmlogin.c:1281 msgid "Please enter your login" msgstr "" -#: gui/gdmlogin.c:1458 +#: gui/gdmlogin.c:1462 #, fuzzy, c-format msgid "Can't open DefaultImage: %s. Suspending face browser!" msgstr "" "Impossible d'ouvrir NofaceImageFile: %s. L'utilisation de l'outils de " "sélection des visages est suspendue!" -#: gui/gdmlogin.c:1527 +#: gui/gdmlogin.c:1541 msgid "main: Error setting up HUP signal handler" msgstr "" "main: Erreur lors de la configuration de la procédure de prise en charge du " "signal HUP" -#: gui/gdmlogin.c:1530 +#: gui/gdmlogin.c:1544 msgid "main: Error setting up INT signal handler" msgstr "" "main: Erreur lors de la configuration de la procédure de prise en charge du " "signal INT" -#: gui/gdmlogin.c:1533 +#: gui/gdmlogin.c:1547 msgid "main: Error setting up TERM signal handler" msgstr "" "main: Erreur lors de la configuration de la procédure de prise en charge du " |