rev 8331 - in trunk/packages/kdebase/debian: . patches
Fathi Boudra
fabo at alioth.debian.org
Sun Dec 23 14:23:55 UTC 2007
Author: fabo
Date: 2007-12-23 14:23:55 +0000 (Sun, 23 Dec 2007)
New Revision: 8331
Added:
trunk/packages/kdebase/debian/patches/01_kdm-kdmlib_branch_r752071.diff
Modified:
trunk/packages/kdebase/debian/changelog
Log:
* Add kdm and kdmlib branch pull patch:
* You cannot assign a user pic to a group.
* Sort guiStyle and colorScheme combos.
* Select the password when user was clicked, so overwriting it is simpler.
* Support gdm 2.19+.
* Fix SIGTERM handling.
* Make .dmrc loading more robust.
* Make face loading more robust.
* Add -p switch to export cmd in Xsession's csh hack.
Modified: trunk/packages/kdebase/debian/changelog
===================================================================
--- trunk/packages/kdebase/debian/changelog 2007-12-23 13:25:46 UTC (rev 8330)
+++ trunk/packages/kdebase/debian/changelog 2007-12-23 14:23:55 UTC (rev 8331)
@@ -9,8 +9,20 @@
kdebase-kio-plugins dependency on kdesktop as it was only needed due to
'kdeeject' utility.
- -- Debian Qt/KDE Maintainers <debian-qt-kde at lists.debian.org> Tue, 18 Dec 2007 01:32:42 +0200
+ +++ Changes by Fathi Boudra:
+ * Add kdm and kdmlib branch pull patch:
+ * You cannot assign a user pic to a group.
+ * Sort guiStyle and colorScheme combos.
+ * Select the password when user was clicked, so overwriting it is simpler.
+ * Support gdm 2.19+.
+ * Fix SIGTERM handling.
+ * Make .dmrc loading more robust.
+ * Make face loading more robust.
+ * Add -p switch to export cmd in Xsession's csh hack.
+
+ -- Debian Qt/KDE Maintainers <debian-qt-kde at lists.debian.org> Sun, 23 Dec 2007 15:10:28 +0100
+
kdebase (4:3.5.8.dfsg.1-2) unstable; urgency=low
+++ Changes by Fathi Boudra:
Added: trunk/packages/kdebase/debian/patches/01_kdm-kdmlib_branch_r752071.diff
===================================================================
--- trunk/packages/kdebase/debian/patches/01_kdm-kdmlib_branch_r752071.diff (rev 0)
+++ trunk/packages/kdebase/debian/patches/01_kdm-kdmlib_branch_r752071.diff 2007-12-23 14:23:55 UTC (rev 8331)
@@ -0,0 +1,289 @@
+#DPATCHLEVEL=0
+--- kcontrol/kdm/kdm-users.cpp (.../tags/KDE/3.5.8/kdebase) (revision 752071)
++++ kcontrol/kdm/kdm-users.cpp (.../branches/KDE/3.5/kdebase) (revision 752071)
+@@ -418,7 +418,8 @@
+ setOn(selectedUsers.find(*name) != selectedUsers.end());
+ (new QCheckListItem(optoutlv, *name, QCheckListItem::CheckBox))->
+ setOn(hiddenUsers.find(*name) != hiddenUsers.end());
+- usercombo->insertItem(*name);
++ if ((*name)[0] != '@')
++ usercombo->insertItem(*name);
+ }
+ optinlv->sort();
+ optoutlv->sort();
+--- kcontrol/kdm/kdm-appear.cpp (.../tags/KDE/3.5.8/kdebase) (revision 752071)
++++ kcontrol/kdm/kdm-appear.cpp (.../branches/KDE/3.5/kdebase) (revision 752071)
+@@ -172,6 +172,7 @@
+ guicombo = new KBackedComboBox(group);
+ guicombo->insertItem( "", i18n("<default>") );
+ loadGuiStyles(guicombo);
++ guicombo->listBox()->sort();
+ label = new QLabel(guicombo, i18n("GUI s&tyle:"), group);
+ connect(guicombo, SIGNAL(activated(int)), SLOT(changed()));
+ hglay->addWidget(label, 0, 0);
+@@ -184,6 +185,7 @@
+ colcombo = new KBackedComboBox(group);
+ colcombo->insertItem( "", i18n("<default>") );
+ loadColorSchemes(colcombo);
++ colcombo->listBox()->sort();
+ label = new QLabel(colcombo, i18n("&Color scheme:"), group);
+ connect(colcombo, SIGNAL(activated(int)), SLOT(changed()));
+ hglay->addWidget(label, 1, 0);
+--- kdmlib/kgreet_classic.cpp (.../tags/KDE/3.5.8/kdebase) (revision 752071)
++++ kdmlib/kgreet_classic.cpp (.../branches/KDE/3.5/kdebase) (revision 752071)
+@@ -213,6 +213,7 @@
+ curUser = user;
+ loginEdit->setText( user );
+ passwdEdit->setFocus();
++ passwdEdit->selectAll();
+ }
+
+ void // virtual
+--- kdmlib/dmctl.cpp (.../tags/KDE/3.5.8/kdebase) (revision 752071)
++++ kdmlib/dmctl.cpp (.../branches/KDE/3.5/kdebase) (revision 752071)
+@@ -65,21 +65,28 @@
+ if ((fd = ::socket( PF_UNIX, SOCK_STREAM, 0 )) < 0)
+ return;
+ sa.sun_family = AF_UNIX;
+- if (DMType == GDM)
+- strcpy( sa.sun_path, "/tmp/.gdm_socket" );
+- else {
++ if (DMType == GDM) {
++ strcpy( sa.sun_path, "/var/run/gdm_socket" );
++ if (::connect( fd, (struct sockaddr *)&sa, sizeof(sa) )) {
++ strcpy( sa.sun_path, "/tmp/.gdm_socket" );
++ if (::connect( fd, (struct sockaddr *)&sa, sizeof(sa) )) {
++ ::close( fd );
++ fd = -1;
++ break;
++ }
++ }
++ GDMAuthenticate();
++ } else {
+ if ((ptr = strchr( dpy, ':' )))
+ ptr = strchr( ptr, '.' );
+ snprintf( sa.sun_path, sizeof(sa.sun_path),
+ "%s/dmctl-%.*s/socket",
+- ctl, ptr ? ptr - dpy : 512, dpy );
++ ctl, ptr ? int(ptr - dpy) : 512, dpy );
++ if (::connect( fd, (struct sockaddr *)&sa, sizeof(sa) )) {
++ ::close( fd );
++ fd = -1;
++ }
+ }
+- if (::connect( fd, (struct sockaddr *)&sa, sizeof(sa) )) {
+- ::close( fd );
+- fd = -1;
+- }
+- if (DMType == GDM)
+- GDMAuthenticate();
+ break;
+ case OldKDM:
+ {
+--- kdmlib/kgreet_winbind.cpp (.../tags/KDE/3.5.8/kdebase) (revision 752071)
++++ kdmlib/kgreet_winbind.cpp (.../branches/KDE/3.5/kdebase) (revision 752071)
+@@ -293,6 +293,7 @@
+ slotChangedDomain( dom );
+ loginEdit->setText( usr );
+ passwdEdit->setFocus();
++ passwdEdit->selectAll();
+ }
+
+ void // virtual
+--- kdm/backend/client.c (.../tags/KDE/3.5.8/kdebase) (revision 752071)
++++ kdm/backend/client.c (.../branches/KDE/3.5/kdebase) (revision 752071)
+@@ -1623,6 +1623,8 @@
+ int pretc;
+ #endif
+
++ Signal( SIGTERM, SIG_IGN );
++
+ if (removeAuth) {
+ if (source( systemEnviron, td->reset, td_setup ))
+ LogError( "Cannot execute reset script %\"s\n", td->reset );
+--- kdm/backend/inifile.c (.../tags/KDE/3.5.8/kdebase) (revision 752071)
++++ kdm/backend/inifile.c (.../branches/KDE/3.5/kdebase) (revision 752071)
+@@ -37,6 +37,7 @@
+ #include "dm_error.h"
+
+ #include <sys/types.h>
++#include <sys/stat.h>
+ #include <unistd.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -47,17 +48,27 @@
+ {
+ char *data;
+ int fd, len;
++ struct stat st;
+
+ if ((fd = open( fname, O_RDONLY | O_NONBLOCK )) < 0) {
+ Debug( "cannot open ini-file %\"s: %m", fname );
+ return 0;
+ }
+- len = lseek( fd, 0, SEEK_END );
++ if (fstat( fd, &st ) || !S_ISREG( st.st_mode )) {
++ LogWarn( "Ini-file %\"s is no regular file\n", fname );
++ close( fd );
++ return 0;
++ }
++ if (st.st_size >= 0x10000) {
++ LogWarn( "Ini-file %\"s is too big\n", fname );
++ close( fd );
++ return 0;
++ }
++ len = st.st_size;
+ if (!(data = Malloc( len + 2 ))) {
+ close( fd );
+ return 0;
+ }
+- lseek( fd, 0, SEEK_SET );
+ if (read( fd, data, len ) != len) {
+ Debug( "cannot read ini-file %\"s: %m", fname );
+ free( data );
+--- kdm/backend/session.c (.../tags/KDE/3.5.8/kdebase) (revision 752071)
++++ kdm/backend/session.c (.../branches/KDE/3.5/kdebase) (revision 752071)
+@@ -145,7 +145,10 @@
+ ReStr( &curtype, "classic" );
+ cursource = (td->hstent->rLogin == 1) ? PWSRC_RELOGIN : PWSRC_MANUAL;
+ return 1;
+- } else if (*td->autoUser && !td->autoDelay && (tdiff > 0 || td->autoAgain))
++ } else if (*td->autoUser && !td->autoDelay &&
++ ((tdiff > 0 && ((td->displayType & d_lifetime) == dTransient ||
++ !td->hstent->lastExit)) ||
++ td->autoAgain))
+ {
+ unsigned int lmask;
+ Window dummy1, dummy2;
+@@ -487,6 +490,7 @@
+ static void
+ catchTerm( int n ATTR_UNUSED )
+ {
++ Signal( SIGTERM, SIG_IGN );
+ Longjmp( abortSession, EX_AL_RESERVER_DPY );
+ }
+
+--- kdm/kfrontend/kdm_config.c (.../tags/KDE/3.5.8/kdebase) (revision 752071)
++++ kdm/kfrontend/kdm_config.c (.../branches/KDE/3.5/kdebase) (revision 752071)
+@@ -1072,6 +1072,9 @@
+ if (!((**hostPtr)->entry.displayAddress.hostAddress =
+ Malloc( addr_len )))
+ {
++#if defined(IPv6) && defined(AF_INET6)
++ freeaddrinfo( ai );
++#endif
+ free( (char *)(**hostPtr) );
+ return 0;
+ }
+@@ -1165,7 +1168,7 @@
+ h->entry.aliasPattern );
+ }
+ } else if (h->type == HOST_PATTERN && (flags & CHECK_NO_PAT))
+- LogWarn( "XDMCP ACL: wildcarded pattern %'* in host-only context\n",
++ LogWarn( "XDMCP ACL: wildcarded pattern %'s in host-only context\n",
+ h->entry.hostPattern );
+ return 0;
+ }
+@@ -1453,7 +1456,7 @@
+ break;
+ #endif
+ default:
+- Debug( "Unsupported config cathegory %#x\n", what );
++ Debug( "Unsupported config category %#x\n", what );
+ }
+ free( cfgfile );
+ break;
+--- kdm/kfrontend/kgreeter.cpp (.../tags/KDE/3.5.8/kdebase) (revision 752071)
++++ kdm/kfrontend/kgreeter.cpp (.../branches/KDE/3.5/kdebase) (revision 752071)
+@@ -42,6 +42,8 @@
+ #undef Unsorted // x headers suck - make qdir.h work with --enable-final
+ #include <qdir.h>
+ #include <qfile.h>
++#include <qbuffer.h>
++#include <qmemarray.h>
+ #include <qimage.h>
+ #include <qmovie.h>
+ #include <qpopupmenu.h>
+@@ -59,6 +61,7 @@
+ #include <grp.h>
+ #include <stdlib.h>
+ #include <unistd.h>
++#include <fcntl.h>
+ #include <sys/types.h>
+
+ #include <X11/Xlib.h>
+@@ -163,6 +166,9 @@
+ QString login;
+ };
+
++#define FILE_LIMIT_ICON 20
++#define FILE_LIMIT_IMAGE 200
++
+ void
+ KGreeter::insertUser( const QImage &default_pix,
+ const QString &username, struct passwd *ps )
+@@ -181,16 +187,44 @@
+ nd = 1;
+ QImage p;
+ do {
+- QString fn = dp ?
+- QFile::decodeName( ps->pw_dir ) + "/.face" :
+- _faceDir + '/' + username + ".face";
+- if (p.load( fn + ".icon" ) || p.load( fn )) {
+- QSize ns( 48, 48 );
+- if (p.size() != ns)
+- p = p.convertDepth( 32 ).smoothScale( ns, QImage::ScaleMin );
+- goto gotit;
++ dp ^= 1;
++ QCString fn = !dp ?
++ QCString( ps->pw_dir ) + '/' :
++ QFile::encodeName( _faceDir + '/' + username );
++ fn += ".face.icon";
++ int fd, ico;
++ if ((fd = open( fn.data(), O_RDONLY | O_NONBLOCK )) < 0) {
++ fn.truncate( fn.length() - 5 );
++ if ((fd = open( fn.data(), O_RDONLY | O_NONBLOCK )) < 0)
++ continue;
++ ico = 0;
++ } else
++ ico = 1;
++ QFile f;
++ f.open( IO_ReadOnly, fd );
++ int fs = f.size();
++ if (fs > (ico ? FILE_LIMIT_ICON : FILE_LIMIT_IMAGE) * 1000) {
++ LogWarn( "%s exceeds file size limit (%dkB)\n",
++ fn.data(), ico ? FILE_LIMIT_ICON : FILE_LIMIT_IMAGE );
++ continue;
+ }
+- dp = 1 - dp;
++ QByteArray fc( fs );
++ int rfs = f.readBlock( fc.data(), fs );
++ ::close( fd );
++ fc.resize( rfs > 0 ? rfs : 0 );
++ QBuffer buf( fc );
++ buf.open( IO_ReadOnly );
++ QImageIO ir;
++ ir.setIODevice( &buf );
++ if (!ir.read()) {
++ LogInfo( "%s is no valid image\n", fn.data() );
++ continue;
++ }
++ p = ir.image();
++ QSize ns( 48, 48 );
++ if (p.size() != ns)
++ p = p.convertDepth( 32 ).smoothScale( ns, QImage::ScaleMin );
++ goto gotit;
+ } while (--nd >= 0);
+ p = default_pix;
+ gotit:
+--- kdm/kfrontend/genkdmconf.c (.../tags/KDE/3.5.8/kdebase) (revision 752071)
++++ kdm/kfrontend/genkdmconf.c (.../branches/KDE/3.5/kdebase) (revision 752071)
+@@ -673,7 +673,7 @@
+ " xsess_tmp=";
+ static const char def_session2[] =
+ "\n"
+-" $SHELL -c \"if (-f /etc/csh.login) source /etc/csh.login; if (-f ~/.login) source ~/.login; /bin/sh -c export >! $xsess_tmp\"\n"
++" $SHELL -c \"if (-f /etc/csh.login) source /etc/csh.login; if (-f ~/.login) source ~/.login; /bin/sh -c export -p >! $xsess_tmp\"\n"
+ " . $xsess_tmp\n"
+ " rm -f $xsess_tmp\n"
+ " ;;\n"
\ No newline at end of file
More information about the pkg-kde-commits
mailing list