[arch-commits] Commit in lxdm/trunk (PKGBUILD git-fixes.patch)
Balló György
bgyorgy at archlinux.org
Sun Nov 8 06:50:21 UTC 2015
Date: Sunday, November 8, 2015 @ 07:50:21
Author: bgyorgy
Revision: 146392
upgpkg: lxdm 0.5.2-1
Update to version 0.5.2
Modified:
lxdm/trunk/PKGBUILD
Deleted:
lxdm/trunk/git-fixes.patch
-----------------+
PKGBUILD | 11 -
git-fixes.patch | 429 ------------------------------------------------------
2 files changed, 3 insertions(+), 437 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2015-11-08 06:49:01 UTC (rev 146391)
+++ PKGBUILD 2015-11-08 06:50:21 UTC (rev 146392)
@@ -5,8 +5,8 @@
# Contributor: kiefer <jorgelmadrid at gmail.com>
pkgname=lxdm
-pkgver=0.5.1
-pkgrel=4
+pkgver=0.5.2
+pkgrel=1
pkgdesc='Lightweight X11 Display Manager'
arch=('i686' 'x86_64')
url="https://sourceforge.net/projects/lxdm/"
@@ -22,12 +22,10 @@
'etc/lxdm/PreLogin' 'etc/lxdm/LoginReady' 'etc/lxdm/PostLogin'
'etc/lxdm/PostLogout' 'etc/lxdm/PreReboot' 'etc/lxdm/PreShutdown')
source=(http://downloads.sourceforge.net/lxdm/$pkgname-$pkgver.tar.xz
- git-fixes.patch
default-config.patch
lxdm.pam
Xsession)
-md5sums=('9e03ce5f6d303bc9b689732401934dc6'
- '1290d9f6e1863fc69407a07be89d9f7e'
+md5sums=('7806aeb11d4565c88dca2b05c9f7c44b'
'f0ae6c072f151104c53a030fd7757821'
'c941ef896248bc7c03901b513490425c'
'6ff73570368501a06ee7badc8e415d0a')
@@ -35,9 +33,6 @@
prepare(){
cd "$srcdir/$pkgname-$pkgver"
- # Apply fixes from git
- patch -Np1 -i ../git-fixes.patch
-
# Adjust Arch-specific settings
patch -Np1 -i ../default-config.patch
Deleted: git-fixes.patch
===================================================================
--- git-fixes.patch 2015-11-08 06:49:01 UTC (rev 146391)
+++ git-fixes.patch 2015-11-08 06:50:21 UTC (rev 146392)
@@ -1,429 +0,0 @@
-diff --git a/data/themes/Industrial/gtk.css b/data/themes/Industrial/gtk.css
-index 7621345..179f0d6 100644
---- a/data/themes/Industrial/gtk.css
-+++ b/data/themes/Industrial/gtk.css
-@@ -1,6 +1,6 @@
- #lxdm {
- background-image: url("wave.svg");
-- background-size: 100%;
-+ background-repeat: round;
- }
-
- #bottom_pane {
-@@ -12,10 +12,12 @@
- color: #ffffff;
- }
-
--#user_list, #login_entry {
-- background-image: none;
-+#prompt {
-+ font: Sans 14;
-+ color: #000000;
- }
-
--#prompt, #bottom_pane GtkLabel {
-- color: #ffffff;
-+#bottom_pane GtkLabel {
-+ font: Sans 12;
-+ color: #9E9D9B;
- }
-diff --git a/src/lxdm.c b/src/lxdm.c
-index 507189d..43a98c7 100644
---- a/src/lxdm.c
-+++ b/src/lxdm.c
-@@ -886,26 +886,57 @@ static void put_lock(void)
- g_free(lockfile);
- }
-
-+static int get_run_level(void)
-+{
-+#if defined(HAVE_UTMPX_H) && defined(RUN_LVL)
-+ int res;
-+ struct utmpx *ut,tmp;
-+
-+ setutxent();
-+ tmp.ut_type=RUN_LVL;
-+ ut=getutxid(&tmp);
-+ if(!ut)
-+ {
-+ endutxent();
-+ return '5';
-+ }
-+ res=ut->ut_pid & 0xff;
-+ endutxent();
-+ //g_message("runlevel %c\n",res);
-+ return res;
-+#else
-+ return '5';
-+#endif
-+}
-+
- static void on_xserver_stop(void *data,int pid, int status)
- {
- LXSession *s=data;
- LXSession *greeter;
--
-- g_message("xserver stop, restart. return status %x\n",status);
-+ int level;
-
- stop_pid(pid);
- s->server = -1;
- lxsession_stop(s);
-+
-+ level=get_run_level();
-+ if(level=='6' || level=='0')
-+ {
-+ return;
-+ }
-+
-+ g_message("xserver stop, restart. return status %x\n",status);
-+
- greeter=lxsession_find_greeter();
- if(s->greeter || !greeter)
- {
- s->greeter=TRUE;
- xconn_close(s->dpy);
- s->dpy=NULL;
-- lxdm_startx(s);
- ui_drop();
-+ lxdm_startx(s);
- ui_prepare();
-- lxsession_set_active(greeter);
-+ lxsession_set_active(s);
- }
- else
- {
-@@ -914,7 +945,7 @@ static void on_xserver_stop(void *data,int pid, int status)
- }
- }
-
--void lxdm_startx(LXSession *s)
-+static void lxdm_startx(LXSession *s)
- {
- char *arg;
- char **args;
-@@ -997,27 +1028,32 @@ static void exit_cb(void)
- g_key_file_free(config);
- }
-
--static int get_run_level(void)
-+static gboolean delayed_restart_greeter(LXSession *s)
- {
--#if defined(HAVE_UTMPX_H) && defined(RUN_LVL)
-- int res=0;
-- struct utmpx *ut,tmp;
--
-- setutxent();
-- tmp.ut_type=RUN_LVL;
-- ut=getutxid(&tmp);
-- if(!ut)
-+ int level;
-+
-+ level=get_run_level();
-+ if(level=='0' || level=='6')
- {
-- endutxent();
-- return 5;
-+ if(level=='0')
-+ g_spawn_command_line_sync("/etc/lxdm/PreShutdown",0,0,0,0);
-+ else
-+ g_spawn_command_line_sync("/etc/lxdm/PreReboot",0,0,0,0);
-+ g_message("run level %c\n",level);
-+ lxdm_quit_self(0);
-+ return FALSE;
- }
-- res=ut->ut_pid & 0xff;
-- endutxent();
-- //g_message("runlevel %c\n",res);
-- return res;
--#else
-- return 5;
--#endif
-+
-+ if(s && s!=lxsession_greeter())
-+ {
-+ lxsession_free(s);
-+ }
-+ else if(!s)
-+ {
-+ lxsession_greeter();
-+ }
-+
-+ return FALSE;
- }
-
- static void on_session_stop(void *data,int pid, int status)
-@@ -1047,15 +1083,9 @@ static void on_session_stop(void *data,int pid, int status)
- g_spawn_command_line_sync("/etc/lxdm/PreReboot",0,0,0,0);
- g_message("run level %c\n",level);
- lxdm_quit_self(0);
-+ return;
- }
-- if(s && s!=lxsession_greeter())
-- {
-- lxsession_free(s);
-- }
-- else if(!s)
-- {
-- lxsession_greeter();
-- }
-+ g_timeout_add(300,(GSourceFunc)delayed_restart_greeter,s);
- }
-
- gboolean lxdm_get_session_info(const char *session,char **pname,char **pexec,char **pdesktop_names)
-@@ -1269,6 +1299,9 @@ void lxdm_do_login(struct passwd *pw, char *session, char *lang, char *option)
- {
- if(s) lxsession_free(s);
- lxsession_set_active(prev);
-+ g_free(session_name);
-+ g_free(session_exec);
-+ g_free(session_desktop_names);
- return;
- }
- if(!s) s=lxsession_find_idle();
-@@ -1514,7 +1547,7 @@ static void lxdm_signal_handler(void *data,int sig)
- switch(sig){
- case SIGTERM:
- case SIGINT:
-- g_critical("QUIT BY SIGNAL\n");
-+ g_critical("QUIT BY SIGNAL %d\n",sig);
- lxdm_quit_self(0);
- break;
- default:
-@@ -1650,6 +1683,7 @@ static GString *lxdm_user_cmd(void *data,int user,int arc,char **arg)
- if(p)
- {
- res=g_string_new_len(p,len);
-+ g_free(p);
- }
- g_key_file_free(kf);
- }
-diff --git a/src/pam.c b/src/pam.c
-index 43bd687..a377157 100644
---- a/src/pam.c
-+++ b/src/pam.c
-@@ -42,6 +42,7 @@
- #include <errno.h>
- #include <poll.h>
- #include <sys/stat.h>
-+#include <sys/wait.h>
-
- #include <pwd.h>
- #include <grp.h>
-@@ -300,12 +301,72 @@ int lxdm_auth_session_begin(LXDM_AUTH *a,const char *name,int tty,int display,ch
- }
- err = pam_open_session(a->handle, 0); /* FIXME pam session failed */
- if( err != PAM_SUCCESS )
-+ {
- g_warning( "pam open session error \"%s\"\n", pam_strerror(a->handle, err));
-+ }
- else
-+ {
- a->in_session=1;
-+ }
- return 0;
- }
-
-+static int proc_filter(const struct dirent *d)
-+{
-+ int c=d->d_name[0];
-+ return c>='1' && c<='9';
-+}
-+
-+static int check_process_sid(int pid,const char *sid)
-+{
-+ char path[128];
-+ FILE *fp;
-+ gchar *env_data,*p;
-+ gsize env_len;
-+ int res=0;
-+
-+ sprintf(path,"/proc/%d/environ",pid);
-+ if(!g_file_get_contents(path,&env_data,&env_len,NULL))
-+ {
-+ return 0;
-+ }
-+ for(p=env_data;p!=NULL && p-env_data<env_len;)
-+ {
-+ if(!strncmp(p,"XDG_SESSION_ID=",15))
-+ {
-+ if(!strcmp(sid,p+15))
-+ res=1;
-+ break;
-+ }
-+ p=strchr(p,'\0');
-+ if(!p) break;p++;
-+ }
-+ g_free(env_data);
-+
-+ return res;
-+}
-+
-+static void kill_left_process(const char *sid)
-+{
-+ int self=getpid();
-+ struct dirent **list;
-+ int i,n;
-+
-+ n=scandir("/proc",&list,proc_filter,0);
-+ if(n<0) return;
-+ for(i=0;i<n;i++)
-+ {
-+ int pid=atoi(list[i]->d_name);
-+ if(pid==self || pid<=1)
-+ continue;
-+ if(check_process_sid(pid,sid))
-+ {
-+ kill(pid,SIGKILL);
-+ }
-+ }
-+ free(list);
-+}
-+
- int lxdm_auth_session_end(LXDM_AUTH *a)
- {
- int err;
-@@ -313,8 +374,20 @@ int lxdm_auth_session_end(LXDM_AUTH *a)
- return 0;
- if(a->in_session)
- {
-+ char xdg_session_id[32]={0};
-+ const char *p=pam_getenv(a->handle,"XDG_SESSION_ID");
-+ if(p!=NULL) snprintf(xdg_session_id,32,"%s",p);
- err = pam_close_session(a->handle, 0);
-+ if( err != PAM_SUCCESS )
-+ {
-+ g_warning( "pam close session error \"%s\"\n", pam_strerror(a->handle, err));
-+ }
- a->in_session=0;
-+ if(p!=NULL)
-+ {
-+ usleep(100*1000);
-+ kill_left_process(xdg_session_id);
-+ }
- }
- pam_end(a->handle, err);
- a->handle = NULL;
-@@ -400,8 +473,10 @@ void switch_user(struct passwd *pw, const char *run, char **env)
- g_spawn_command_line_sync ("/etc/lxdm/PreLogin",NULL,NULL,NULL,NULL);
-
- if( !pw || initgroups(pw->pw_name, pw->pw_gid) ||
-- setgid(pw->pw_gid) || setuid(pw->pw_uid)/* || setsid() == -1 */)
-+ setgid(pw->pw_gid) || setuid(pw->pw_uid) || setsid()==-1)
-+ {
- exit(EXIT_FAILURE);
-+ }
- chdir(pw->pw_dir);
- fd=open(".xsession-errors",O_WRONLY|O_CREAT|O_TRUNC,S_IRUSR|S_IWUSR);
- if(fd!=-1)
-@@ -426,7 +501,6 @@ void switch_user(struct passwd *pw, const char *run, char **env)
-
- void run_session(LXDM_AUTH *a,const char *run)
- {
-- setsid();
- a->child=fork();
- if(a->child==0)
- {
-@@ -505,7 +579,7 @@ int main(int arc,char *arg[])
-
- setvbuf(stdout, NULL, _IOLBF, 0 );
- signal(SIGCHLD,sig_handler);
--
-+
- lxdm_auth_init(&a);
- while(file_get_line(cmd,sizeof(cmd),stdin)>=0)
- {
-diff --git a/src/xconn.c b/src/xconn.c
-index 5c62d4b..7e040b7 100644
---- a/src/xconn.c
-+++ b/src/xconn.c
-@@ -172,7 +172,7 @@ void xconn_close(xconn_t c)
- free(c);
- }
-
--#if 0
-+#if 1
- static xcb_window_t xconn_get_root(xconn_t c)
- {
- const xcb_setup_t *setup;
-@@ -181,11 +181,71 @@ static xcb_window_t xconn_get_root(xconn_t c)
- xcb_screen_t *screen = iter.data;
- return screen->root;
- }
-+
-+static char *xconn_atom_name(xcb_connection_t *c,xcb_atom_t atom)
-+{
-+ xcb_get_atom_name_cookie_t cookie;
-+ xcb_get_atom_name_reply_t *reply;
-+ char *buf;
-+ int len;
-+ char *res=NULL;
-+ cookie=xcb_get_atom_name(c,atom);
-+ reply=xcb_get_atom_name_reply(c,cookie,NULL);
-+ if(!reply)
-+ return NULL;
-+ buf=xcb_get_atom_name_name(reply);
-+ len=xcb_get_atom_name_name_length(reply);
-+ if(buf && len>0)
-+ {
-+ res=malloc(len+1);
-+ memcpy(res,buf,len);
-+ res[len]=0;
-+ }
-+ free(reply);
-+ return res;
-+}
-+
-+static void xconn_clear_props(xcb_connection_t *c,xcb_window_t w)
-+{
-+ xcb_list_properties_cookie_t cookie;
-+ xcb_list_properties_reply_t *reply;
-+ xcb_atom_t *atoms;
-+ int i,len;
-+ xcb_atom_t temp[16];
-+ int temp_len=0;
-+ cookie=xcb_list_properties(c,w);
-+ reply=xcb_list_properties_reply(c,cookie,NULL);
-+ if(!reply)
-+ return;
-+ len=xcb_list_properties_atoms_length(reply);
-+ atoms=xcb_list_properties_atoms(reply);
-+ for(i=0;i<len;i++)
-+ {
-+ int prop=atoms[i];
-+ //if(prop<=68)
-+ // continue;
-+ char *name=xconn_atom_name(c,prop);
-+ if(!name)
-+ break;
-+ if(!strcmp(name,"PULSE_SERVER") ||
-+ !strcmp(name,"PULSE_COOKIE"))
-+ {
-+ temp[temp_len++]=prop;
-+ }
-+ free(name);
-+ }
-+ free(reply);
-+ for(i=0;i<temp_len;i++)
-+ {
-+ xcb_delete_property_checked(c,w,temp[i]);
-+ }
-+}
-+
- #endif
-
- void xconn_clean(xconn_t c)
- {
--#if 0
-+#if 1
- xcb_query_tree_cookie_t wintree;
- xcb_query_tree_reply_t *rep;
- xcb_window_t *children;
-@@ -201,6 +261,7 @@ void xconn_clean(xconn_t c)
- for(i=0;i<len;i++)
- xcb_kill_client(c->c,children[i]);
- free(rep);
-+ xconn_clear_props(c->c,root);
- xcb_flush(c->c);
- #endif
- }
More information about the arch-commits
mailing list