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