File kdm-sysconfig-values.diff of Package kdebase4-workspace
--- kdm/config.def.sav 2009-08-27 10:17:39.000000000 +0200
+++ kdm/config.def 2010-08-31 14:24:02.948540554 +0200
@@ -166,6 +166,9 @@
Core config for 1st local display
[X-:0-Core]
+ Core config for Xgl display
+[X-:93-Core]
+
Greeter config for 1st local display
[X-:0-Greeter]
</kdmrc>
@@ -791,6 +794,21 @@ Description:
<emphasis>Do not</emphasis> change it, you may interfere with future
upgrades and this could result in &kdm; failing to run.
+Key: SUSEConfigVersion
+Type: string
+Default: ""
+CDefault: -
+User: dummy
+# will be overwritten
+Instance:
+Comment:
+ This option exists solely for the purpose of a clean automatic upgrade.
+ Do not even think about changing it!
+Description:
+ This option exists solely for the purpose of clean automatic upgrades.
+ <emphasis>Do not</emphasis> change it, you may interfere with future
+ upgrades and this could result in &kdm; failing to run.
+
Key: PAMService
If: defined(USE_PAM)
Type: string
@@ -873,10 +891,10 @@ Description:
Key: PidFile
Type: string
-Default: ""
+Default: "/var/run/kdm.pid"
User: core
-Instance: "/var/run/kdm.pid"
-Merge: xdm
+Instance: ""
+Update: reset_sec_0_1
Comment:
Where &kdm; should store its PID (do not store if empty).
Description:
@@ -900,10 +918,10 @@ Description:
Key: AuthDir
Type: path
# differs from XDM
-Default: "/var/run/xauth"
+Default: "/var/lib/xdm/authdir/authfiles"
User: core
-Instance: #"/tmp"
-Merge: xdm(P_authDir)
+Instance: #""
+Update: reset_sec_0_1
Comment:
Where to store authorization files.
Description:
@@ -929,7 +947,7 @@ Description:
Key: ExportList
Type: list
-Default: ""
+Default: "LANG,XCURSOR_THEME"
User: core
Instance: #"LD_LIBRARY_PATH,ANOTHER_IMPORTANT_VAR"
Merge: xdm(P_list)
@@ -1062,9 +1080,10 @@ Description:
Key: Enable
Type: bool
-Default: true
+Default: false
User: dep(xdmcpEnable)
Instance: false
+Update: reset_sec_0_1
Comment: &
Description:
Whether &kdm; should listen to incoming &XDMCP; requests.
@@ -1085,7 +1104,7 @@ Description:
Key: KeyFile
Type: string
-Default: ""
+Default: "su nobody -c /etc/X11/xdm/Xwilling"
User: core
Instance: #KDMCONF "/kdmkeys"
Update: cp_keyfile
@@ -1101,11 +1120,10 @@ Description:
Key: Xaccess
Type: string
# differs from xdm
-Default: *KDMCONF "/Xaccess"
+Default: *"/etc/X11/xdm/Xaccess"
User: config(Xaccess)
-Instance: #""
-Update: mk_xaccess
-Merge: xdm:accessFile
+Instance: #
+Update: reset_sec_0_1
Comment:
&XDMCP; access control file in the usual XDM-Xaccess format.
Description:
@@ -1163,13 +1181,11 @@ Description:
Key: Willing
Type: string
-Default: ""
+Default: "/etc/X11/xdm/Xwilling"
User: core
# will be overwritten
Instance: #
-Update: mk_willing
-Merge: xdm
-Merge: kdm:Xwilling
+Update: reset_sec_0_1
Comment:
The program which is invoked to dynamically generate replies to &XDMCP;
DirectQuery or BroadcastQuery requests.
@@ -1243,7 +1259,7 @@ Type: enum
None/BO_NONE: no boot manager
Grub/BO_GRUB: Grub boot manager
Lilo/BO_LILO: Lilo boot manager (Linux on i386 & x86-64 only)
-Default: None
+Default: Grub
User: core
User: greeter
Instance: #Grub
@@ -1345,7 +1361,7 @@ Type: string
Default: DEF_SERVER_CMD
DDefault: -
User: core
-Instance: :*/DEF_SERVER_CMD
+Instance: #:*/DEF_SERVER_CMD
Update: upd_servercmd
Comment:
The command line to start the &X-Server;, without display number and VT spec.
@@ -1355,13 +1371,13 @@ Description:
This string is subject to word splitting.
</para><para>
The default is something reasonable for the system on which &kdm; was built,
- like <command>/usr/X11R6/bin/X</command>.
+ like <command>/usr/bin/X</command>.
Key: ServerArgsLocal
Type: string
Default: ""
User: core
-Instance: :*/"-nolisten tcp"
+Instance: #:*/"-nolisten tcp"
Comment: &
Description:
Additional arguments for the &X-Server;s for local sessions.
@@ -1451,6 +1467,8 @@ Type: bool
Default: false
User: core
Instance: #:*/!
+Instance: :0/!
+Instance: :93/!
Merge: xdm
Comment:
Restart instead of resetting the local &X-Server; after session exit.
@@ -1549,11 +1567,10 @@ Description:
Key: Resources
# XXX strictly speaking this is supposed to be a string list, i think.
Type: string
-Default: ""
+Default: "/etx/X11/xdm/Xresources"
User: core
Instance: #*/""
-Update: cp_resources
-Merge: xdm
+Update: reset_sec_0_1
Comment:
Specify a file with X-resources for the greeter, chooser and background.
The KDE frontend does not use this file, so you do not need it unless you
@@ -1581,12 +1598,11 @@ Description:
Key: Setup
Type: string
-Default: ""
+Default: "/etc/X11/xdm/Xsetup"
User: core
# will be overwritten
Instance: #*/""
-Update: mk_setup
-Merge: xdm
+Update: reset_sec_0_1
Comment:
A program to run before the greeter is shown. Can be used to start an
xconsole or an alternative background generator. Subject to word splitting.
@@ -1602,12 +1618,11 @@ Description:
Key: Startup
Type: string
-Default: ""
+Default: "/etc/X11/xdm/Xstartup"
User: core
# will be overwritten
Instance: #*/""
-Update: mk_startup
-Merge: xdm
+Update: reset_sec_0_1
Comment:
A program to run before a user session starts. Subject to word splitting.
Description:
@@ -1620,12 +1635,11 @@ Description:
Key: Reset
Type: string
-Default: ""
+Default: "/etc/X11/xdm/Xreset"
User: core
# will be overwritten
Instance: #*/""
-Update: mk_reset
-Merge: xdm
+Update: reset_sec_0_1
Comment:
A program to run after a user session exits. Subject to word splitting.
Description:
@@ -1638,12 +1652,12 @@ Description:
Key: Session
Type: string
-Default: XBINDIR "/xterm -ls -T"
+Default: "/etc/X11/xdm/Xsession"
#Merge: xdm - incompatible!
User: core
# will be overwritten
Instance: #*/""
-Update: mk_session
+Update: reset_sec_0_1
Comment:
The program which is run as the user which logs in. It is supposed to
interpret the session argument (see SessionsDirs) and start an appropriate
@@ -1755,10 +1769,11 @@ Description:
Key: AllowRootLogin
Type: bool
-Default: true
+Default: false
User: core
User: greeter(showRoot)
-Instance: */false
+Instance: #*/false
+Update: reset_sec_1_2
Merge: xdm
Comment:
Allow root logins?
@@ -1773,6 +1788,7 @@ User: core
# sensible?
Instance: */false
Instance: :*/true
+Update: reset_sec_0_1
Merge: xdm
Comment:
Allow to log in, when user has set an empty password?
@@ -1784,12 +1800,13 @@ Type: enum
None/SHUT_NONE: no <guilabel>Shutdown...</guilabel> menu entry is shown at all
Root/SHUT_ROOT: the <systemitem class="username">root</systemitem> password must be entered to shut down
All/SHUT_ALL: everybody can shut down the machine
-Default: All
+Default: Root
User: core
User: greeter
Instance: */Root
-Instance: :*/All
-Merge: kdm:-Greeter/
+Instance: #:*/All
+Update: reset_sec_0_1
+#Merge: kdm:-Greeter/
Comment: &
Description:
Who is allowed to shut down the system. This applies both to the
@@ -1866,6 +1883,7 @@ Type: bool
Default: false
User: dep
Instance: #:0/true
+Update: reset_sec_0_1
Comment: &
Description:
Enable automatic login. <emphasis>Use with extreme care!</emphasis>
@@ -1899,7 +1917,7 @@ Default: ""
PostProc: PautoLoginX
User: core(autoUser)
User: greeter
-Instance: #:0/"fred"
+Instance: #:0/""
Merge: xdm:autoUser(P_autoUser)
Comment: &
Description:
@@ -1930,10 +1948,10 @@ Description:
Key: SessionsDirs
Type: list
-Default: *KDMDATA "/sessions"
+Default: *"/etc/X11/session," KDMDATA "/sessions,/usr/share/xsessions"
User: core
User: greeter-c
-Instance: */KDMCONF "/sessions," KDMDATA "/sessions"
+Instance: #*/KDMCONF "/sessions," KDMDATA "/sessions"
Update: upd_sessionsdirs
Comment:
The directories containing session type definitions in .desktop format,
@@ -2002,7 +2020,7 @@ Description:
Key: UseSessReg
Type: bool
-Default: true
+Default: false
User: core
Instance: #*/!
Comment:
@@ -2048,7 +2066,8 @@ Type: enum
Clock/LOGO_CLOCK: a neat analog clock
Default: Clock
User: greeter
-Instance: */Logo
+Instance: */Clock
+Update: reset_sec_0_1
Comment:
What should be shown in the greeter's logo are:
Description:
@@ -2264,7 +2283,7 @@ Description:
Key: HiddenUsers
Type: list
-Default: ""
+Default: "root"
User: greeter-c(noUsers)
Instance: #*/"root"
# depends on {Min,Max}ShowUID
@@ -2408,7 +2427,7 @@ Description:
Key: UseBackground
Type: bool
-Default: true
+Default: false
User: greeter
Instance: #*/!
Comment:
@@ -2546,6 +2565,7 @@ Type: bool
Default: false
User: greeter
Instance: :0/true
+Update: reset_sec_0_1
Comment:
Enable &kdm;'s built-in xconsole. Note that this can be enabled for only
one display at a time.
@@ -2634,9 +2654,9 @@ Description:
Key: Preloader
Type: string
-Default: ""
+Default: KDE_BINDIR "/preloadkde"
User: greeter-c
-Instance: */KDE_BINDIR "/preloadkde"
+Instance: #*/KDE_BINDIR "/preloadkde"
Update: upd_preloader
Comment: &
Description:
@@ -2646,7 +2666,7 @@ Description:
Key: UseTheme
Type: bool
-Default: false
+Default: true
User: greeter
Instance: */true
Comment: &
@@ -2655,9 +2675,10 @@ Description:
Key: Theme
Type: string
-Default: ""
+Default: KDMDATA "/themes/SUSE"
User: greeter
-Instance: */KDMDATA "/themes/oxygen-air"
+Instance: */""
+Update: reset_sec_0_1
Comment: &
Description:
The theme to use for the greeter. Can point to either a directory or an XML
--- kdm/kfrontend/CMakeLists.txt
+++ kdm/kfrontend/CMakeLists.txt
@@ -120,3 +120,5 @@
install(CODE "
exec_program(\"${CMAKE_CURRENT_BINARY_DIR}/genkdmconf\" ARGS --in \\\"\\\$DESTDIR${CONFIG_INSTALL_DIR}/kdm\\\" --no-in-notice --face-src \\\"${CMAKE_CURRENT_SOURCE_DIR}/pics\\\" \\\$GENKDMCONF_FLAGS)
")
+
+install( PROGRAMS ${CMAKE_CURRENT_SOURCE_DIR}/read_sysconfig.sh DESTINATION ${DATA_INSTALL_DIR}/kdm )
--- kdm/kfrontend/genkdmconf.c
+++ kdm/kfrontend/genkdmconf.c
@@ -53,6 +53,7 @@
#include <config.ci>
#define RCVERSTR stringify(RCVERMAJOR) "." stringify(RCVERMINOR)
+#define SUSERCVERSTR "2"
static int old_scripts, no_old_scripts, old_confs, no_old,
no_backup, no_in_notice, use_destdir, mixed_scripts;
@@ -60,7 +61,7 @@
*oldxdm, *oldkde, *oldkdepfx;
static int oldver;
-
+static int oldsusever;
typedef struct StrList {
struct StrList *next;
@@ -542,6 +543,7 @@
const char *cmt;
putFqVal("General", "ConfigVersion", RCVERSTR);
+ putFqVal( "General", "SUSEConfigVersion", SUSERCVERSTR );
for (cs = config; cs; cs = cs->next) {
fprintf_(f, "%s[%s]\n",
cs->comment ? cs->comment : "\n", cs->name);
@@ -1628,6 +1630,26 @@
ce->written = True;
}
+static void
+reset_sec_0_1( Entry *ce, Section *cs ATTR_UNUSED )
+{
+ if (oldsusever < 1 || !ce->written )
+ {
+ ce->active = 0;
+ }
+ return;
+}
+
+static void
+reset_sec_1_2( Entry *ce, Section *cs ATTR_UNUSED )
+{
+ if (oldsusever < 2 || !ce->written )
+ {
+ ce->active = 0;
+ }
+ return;
+}
+
#ifdef XDMCP
static void
cp_keyfile(Entry *ce, Section *cs ATTR_UNUSED)
@@ -2620,7 +2642,7 @@
mergeKdmRcNewer(const char *path, int obsRet)
{
char *p;
- const char *cp, *sec, *key;
+ const char *cp, *sec, *key, *susever;
RSection *rootsect, *cs;
REntry *ce;
int i, j, ma, mi;
@@ -2646,6 +2668,9 @@
p, ma, mi);
free(p);
+ susever = getFqVal( "General", "SUSEConfigVersion", "" );
+ if (sscanf( susever, "%u", &oldsusever ) != 1)
+ oldsusever = 0;
for (cs = rootsect; cs; cs = cs->next) {
cp = strrchr(cs->name, '-');
if (!cp)
@@ -2691,7 +2716,7 @@
;
}
- applyDefs(kdmdefs_all, as(kdmdefs_all), path);
+ /* applyDefs(kdmdefs_all, as(kdmdefs_all), path); */
return True;
}
--- kdm/kfrontend/kdm_config.c
+++ kdm/kfrontend/kdm_config.c
@@ -396,7 +396,7 @@
static Section *rootsec;
static void
-readConfig()
+readConfFile(const char* rcfile)
{
const char *nstr, *dstr, *cstr, *dhost, *dnum, *dclass;
char *s, *e, *st, *en, *ek, *sl, *pt;
@@ -406,14 +406,9 @@
int nlen, dlen, clen, dhostl, dnuml, dclassl;
int i, line, sectmoan, restl;
File file;
- static int confread;
- if (confread)
- return;
- confread = True;
-
- debug("reading config %s ...\n", kdmrc);
- if (!readFile(&file, kdmrc, "master configuration"))
+ debug("reading config %s ...\n", rcfile);
+ if (!readFile(&file, rcfile, "master configuration"))
return;
for (s = file.buf, line = 0, cursec = 0, sectmoan = 1; s < file.eof; s++) {
@@ -439,7 +434,7 @@
e--;
if (*e != ']') {
cursec = 0;
- logError("Invalid section header at %s:%d\n", kdmrc, line);
+ logError("Invalid section header at %s:%d\n", rcfile, line);
continue;
}
nstr = sl + 1;
@@ -449,7 +444,7 @@
!memcmp(nstr, cursec->name, nlen))
{
logInfo("Multiple occurrences of section [%.*s] in %s. "
- "Consider merging them.\n", nlen, nstr, kdmrc);
+ "Consider merging them.\n", nlen, nstr, rcfile);
goto secfnd;
}
if (nstr[0] == 'X' && nstr[1] == '-') {
@@ -505,7 +500,7 @@
illsec:
cursec = 0;
logError("Unrecognized section name [%.*s] at %s:%d\n",
- nlen, nstr, kdmrc, line);
+ nlen, nstr, rcfile, line);
continue;
newsec:
if (!(cursec = Malloc(sizeof(*cursec))))
@@ -533,7 +528,7 @@
if (!cursec) {
if (sectmoan) {
sectmoan = False;
- logError("Entry outside any section at %s:%d", kdmrc, line);
+ logError("Entry outside any section at %s:%d", rcfile, line);
}
goto sktoeol;
}
@@ -541,13 +536,13 @@
for (; (s < file.eof) && (*s != '\n'); s++)
if (*s == '=')
goto haveeq;
- logError("Invalid entry (missing '=') at %s:%d\n", kdmrc, line);
+ logError("Invalid entry (missing '=') at %s:%d\n", rcfile, line);
continue;
haveeq:
for (ek = s - 1; ; ek--) {
if (ek < sl) {
- logError("Invalid entry (empty key) at %s:%d\n", kdmrc, line);
+ logError("Invalid entry (empty key) at %s:%d\n", rcfile, line);
goto sktoeol;
}
if (!isspace(*ek))
@@ -561,7 +556,7 @@
if (*s == '\\') {
s++;
if (s >= file.eof || *s == '\n') {
- logError("Trailing backslash at %s:%d\n", kdmrc, line);
+ logError("Trailing backslash at %s:%d\n", rcfile, line);
break;
}
switch (*s) {
@@ -590,13 +585,13 @@
goto keyok;
}
logError("Unrecognized key '%.*s' in section [%.*s] at %s:%d\n",
- nlen, nstr, cursec->nlen, cursec->name, kdmrc, line);
+ nlen, nstr, cursec->nlen, cursec->name, rcfile, line);
continue;
keyok:
for (curent = cursec->entries; curent; curent = curent->next)
if (ce == curent->ent) {
logError("Multiple occurrences of key '%s' in section [%.*s] of %s\n",
- ce->name, cursec->nlen, cursec->name, kdmrc);
+ ce->name, cursec->nlen, cursec->name, rcfile);
goto keyfnd;
}
if (!(curent = Malloc(sizeof(*curent))))
@@ -612,6 +607,20 @@
}
}
+static void readConfig()
+{
+ static int confread = 0;
+
+ if (confread)
+ return;
+
+ confread++;
+
+ system("/usr/share/kde4/apps/kdm/read_sysconfig.sh");
+ readConfFile("/var/adm/kdm/kdmrc.sysconfig");
+ readConfFile(kdmrc);
+}
+
static Entry *
findGEnt(int id)
{
--- kdm/kfrontend/read_sysconfig.sh.sav 2010-08-31 14:24:02.949538639 +0200
+++ kdm/kfrontend/read_sysconfig.sh 2010-08-31 17:32:11.866195161 +0200
@@ -0,0 +1,160 @@
+#!/bin/bash
+#
+# Copyright (c) 2006 SUSE Linux Products GmbH Nuernberg, Germany.
+#
+# Author: Stephan Kulow <coolo@suse.de>
+#
+
+#
+# check if we are started as root
+# only one of UID and USER must be set correctly
+#
+if test "$UID" != 0 -a "$USER" != root; then
+ echo "You must be root to start $0."
+ exit 1
+fi
+
+#
+# check for sysconfig/displaymanager or rc.config
+#
+test -f /etc/sysconfig/displaymanager && source /etc/sysconfig/displaymanager
+test -f /etc/sysconfig/security && source /etc/sysconfig/security
+test -f /etc/sysconfig/language && source /etc/sysconfig/language
+
+#
+# source /etc/profile to get $kdedir
+#
+kdedir="/usr"
+kdmdir="/var/adm/kdm"
+
+# check for write permissions
+[ -w ${kdmdir} ] || mkdir -p ${kdmdir}
+[ -w ${kdmdir} ] || exit
+
+#
+# Set Style of Shutdown
+#
+ECHO_MODE="OneStar"
+if test "$DISPLAYMANAGER_ROOT_LOGIN_LOCAL" = "yes"; then
+ ALLOW_ROOT_LOGIN="true"
+else
+ ALLOW_ROOT_LOGIN="false"
+fi
+
+case "$DISPLAYMANAGER_SHUTDOWN" in
+ all|ALL|All)
+ DISPLAYMANAGER_SHUTDOWN=All;;
+ none|NONE|None)
+ DISPLAYMANAGER_SHUTDOWN=None;;
+ auto|Auto|AUTO)
+ case "$PERMISSION_SECURITY" in
+ *easy*)
+ DISPLAYMANAGER_SHUTDOWN=All
+ ;;
+ *paranoid*)
+ ECHO_MODE="NoEcho"
+ ALLOW_ROOT_LOGIN="false"
+ DISPLAYMANAGER_SHUTDOWN=Root
+ ;;
+ *)
+ DISPLAYMANAGER_SHUTDOWN=Root
+ ;;
+ esac
+ ;;
+ * )
+ DISPLAYMANAGER_SHUTDOWN=Root;;
+esac
+
+(
+echo "[X-*-Greeter]"
+if [ -n "$KDM_USERS" ]; then
+ echo "ShowUsers=Selected"
+ echo -n "SelectedUsers="
+ echo ${KDM_USERS}|sed -e 's@ [ ]*@ @g' -e 's@ @,@g'
+else
+ echo "ShowUsers=NotHidden"
+fi
+if [ "$DISPLAYMANAGER_AD_INTEGRATION" = "yes" ]; then
+ echo "PluginsLogin=winbind"
+else
+ if [ "$(/usr/sbin/pam-config -q --fp)" = "auth:" ]; then
+ echo "PluginsLogin=generic"
+ fi
+fi
+if [ -n "$DISPLAYMANAGER_KDM_THEME" -a -d "/usr/share/kde4/apps/kdm/themes/$DISPLAYMANAGER_KDM_THEME" ]; then
+ echo "Theme=/usr/share/kde4/apps/kdm/themes/$DISPLAYMANAGER_KDM_THEME"
+ echo "UseTheme=true"
+ echo "UseBackground=false"
+else
+ echo "UseTheme=false"
+ echo "UseBackground=true"
+fi
+# kdm has en_US as default instead of simply reading LC_LANG :(
+echo "Language="
+
+echo "[Xdmcp]"
+if [ "$DISPLAYMANAGER_REMOTE_ACCESS" = "yes" ]; then
+ echo "Enable=true"
+else
+ echo "Enable=false"
+fi
+
+echo "[X-:0-Core]"
+if [ "$DISPLAYMANAGER_AUTOLOGIN" ]; then
+ echo "AutoLoginEnable=true"
+ echo "AutoLoginUser=${DISPLAYMANAGER_AUTOLOGIN}"
+else
+ echo "AutoLoginEnable=false"
+fi
+if [ "$DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN" = "yes" ]; then
+ echo "ServerArgsLocal=${DISPLAYMANAGER_KDM_LOCALARGS}"
+else
+ echo "ServerArgsLocal=-nolisten tcp ${DISPLAYMANAGER_KDM_LOCALARGS}"
+fi
+if [ "$DISPLAYMANAGER_PASSWORD_LESS_LOGIN" = "yes" ]; then
+ echo "NoPassEnable=true"
+ echo "NoPassAllUsers=true"
+else
+ echo "NoPassEnable=false"
+ echo "NoPassAllUsers=false"
+fi
+
+echo "[X-:*-Core]"
+echo "AllowShutdown=${DISPLAYMANAGER_SHUTDOWN}"
+echo "AllowRootLogin=${ALLOW_ROOT_LOGIN}"
+echo "AllowNullPasswd=${ALLOW_ROOT_LOGIN}"
+
+echo "[X-*-Core]"
+
+if test "$DISPLAYMANAGER_ROOT_LOGIN_REMOTE" = "yes"; then
+ echo "AllowRootLogin=true"
+else
+ echo "AllowRootLogin=false"
+fi
+
+case "x$DISPLAYMANAGER_XSERVER" in
+ xXgl)
+ xgl=`type -p Xgl`
+ echo "ServerCmd=$xgl $DISPLAYMANAGER_XGL_OPTS -br"
+ echo "ServerTimeout=50"
+ ;;
+ xXorg)
+ xorg=`type -p Xorg`
+ echo "ServerCmd=$xorg -br"
+ ;;
+ x)
+ # empty value - younger than 11.0
+ echo "ServerCmd=/usr/bin/X -br"
+ ;;
+ *)
+ echo "#Unknown X server - leaving X"
+ ;;
+esac
+
+echo "[General]"
+if [ "$DISPLAYMANAGER_STARTS_XSERVER" != "yes" ]; then
+ echo "StaticServers="
+fi
+
+) > ${kdmdir}/kdmrc.sysconfig
+