Index: gnome-cups-manager-0.33/libgnomecups/gnome-cups-permission.c =================================================================== --- gnome-cups-manager-0.33.orig/libgnomecups/gnome-cups-permission.c +++ gnome-cups-manager-0.33/libgnomecups/gnome-cups-permission.c @@ -28,12 +28,30 @@ #include #include #include +#include static char *gnome_cups_app_path = NULL; gboolean gnome_cups_can_admin () { + gid_t groups[NGROUPS_MAX]; + int numgrp, i; + struct group *lpadm_grp; + + /* find group id of lpadmin */ + lpadm_grp = getgrnam( "lpadmin" ); + + if( lpadm_grp ) { + /* find out whether user is in group lpadmin */ + numgrp = getgroups( sizeof( groups ) / sizeof( gid_t ), groups ); + if( numgrp >= 0 ) + for( i = 0; i < numgrp; ++i ) { + if( groups[i] == lpadm_grp->gr_gid ) + return 1; + } + } + return (geteuid () == 0); }