kov changed gksu/branches/gksu2/ChangeLog, gksu/branches/gksu2/gksu/gksu.c

Gustavo Noronha kov at costa.debian.org
Sun Jan 29 20:18:50 UTC 2006


Mensagem de log: 
	- removed code moved to libgksu, started porting to
	  libgksu2, misc fixes and cleanup, removed trailing
	  whitespaces


-----


Modified: gksu/branches/gksu2/ChangeLog
===================================================================
--- gksu/branches/gksu2/ChangeLog	2006-01-26 23:43:46 UTC (rev 508)
+++ gksu/branches/gksu2/ChangeLog	2006-01-29 20:18:49 UTC (rev 509)
@@ -1,3 +1,10 @@
+2006-01-29  Gustavo Noronha Silva  <kov at debian.org>
+
+	* gksu/gksu.c:
+	- removed code moved to libgksu, started porting to
+	  libgksu2, misc fixes and cleanup, removed trailing
+	  whitespaces
+
 2006-01-07  Gustavo Noronha Silva  <kov at debian.org>
 
 	* configure.ac:

Modified: gksu/branches/gksu2/gksu/gksu.c
===================================================================
--- gksu/branches/gksu2/gksu/gksu.c	2006-01-26 23:43:46 UTC (rev 508)
+++ gksu/branches/gksu2/gksu/gksu.c	2006-01-29 20:18:49 UTC (rev 509)
@@ -33,7 +33,6 @@
 GConfClient *gconf_client = NULL;
 gboolean print_pass = FALSE;
 gboolean force_grab = FALSE;
-gboolean grab = TRUE;
 gboolean sudo_mode = FALSE;
 gboolean message_changed = FALSE;
 gboolean prompt = FALSE;
@@ -41,7 +40,7 @@
 
 struct option long_opts[] = {
     /*
-     * { name  has_arg  *flag  val } 
+     * { name  has_arg  *flag  val }
      */
     {"help", no_argument, NULL, 'h'},
     {"login", no_argument, NULL, 'l'},
@@ -62,328 +61,9 @@
     {0, 0, 0, 0}
 };
 
-/* 
- * code 'stolen' from gnome-session's logout.c
- *
- * Written by Owen Taylor <otaylor at redhat.com>
- * Copyright (C) Red Hat
- */
-typedef struct {
-  GdkScreen    *screen;
-  int           monitor;
-  GdkRectangle  area;
-  int           rowstride;
-  GdkWindow    *root_window;
-  GdkWindow    *draw_window;
-  GdkPixbuf    *start_pb, *end_pb, *frame;
-  guchar       *start_p, *end_p, *frame_p;
-  GTimeVal      start_time;
-  GdkGC        *gc;
-} FadeoutData;
-
-FadeoutData *fade_data = NULL;
-static GList *fadeout_windows = NULL;
-
-#define FADE_DURATION 500.0
-
-int
-gsm_screen_get_width (GdkScreen *screen,
-		      int        monitor)
-{
-	GdkRectangle geometry;
-
-	gdk_screen_get_monitor_geometry (screen, monitor, &geometry);
-
-	return geometry.width;
-}
-
-int
-gsm_screen_get_height (GdkScreen *screen,
-		       int        monitor)
-{
-	GdkRectangle geometry;
-
-	gdk_screen_get_monitor_geometry (screen, monitor, &geometry);
-
-	return geometry.height;
-}
-
-int
-gsm_screen_get_x (GdkScreen *screen,
-		  int        monitor)
-{
-	GdkRectangle geometry;
-
-	gdk_screen_get_monitor_geometry (screen, monitor, &geometry);
-
-	return geometry.x;
-}
-
-int
-gsm_screen_get_y (GdkScreen *screen,
-		  int        monitor)
-{
-	GdkRectangle geometry;
-
-	gdk_screen_get_monitor_geometry (screen, monitor, &geometry);
-
-	return geometry.y;
-}
-
-static void
-get_current_frame (FadeoutData *fadeout,
-		   double    sat)
-{
-  guchar *sp, *ep, *fp;
-  int i, j, width, offset;
-
-  width = fadeout->area.width * 3;
-  offset = 0;
-  
-  for (i = 0; i < fadeout->area.height; i++)
-    {
-      sp = fadeout->start_p + offset;
-      ep = fadeout->end_p   + offset;
-      fp = fadeout->frame_p + offset;
-
-      for (j = 0; j < width; j += 3)
-	{
-	  guchar r = abs (*(sp++) - ep[0]);
-	  guchar g = abs (*(sp++) - ep[1]);
-	  guchar b = abs (*(sp++) - ep[2]);
-
-	  *(fp++) = *(ep++) + r * sat;
-	  *(fp++) = *(ep++) + g * sat;
-	  *(fp++) = *(ep++) + b * sat;
-	}
-
-      offset += fadeout->rowstride;
-    }
-}
-
-static void
-darken_pixbuf (GdkPixbuf *pb)
-{
-  int width, height, rowstride;
-  int i, j;
-  guchar *p, *pixels;
-  
-  width     = gdk_pixbuf_get_width (pb) * 3;
-  height    = gdk_pixbuf_get_height (pb);
-  rowstride = gdk_pixbuf_get_rowstride (pb);
-  pixels    = gdk_pixbuf_get_pixels (pb);
-  
-  for (i = 0; i < height; i++)
-    {
-      p = pixels + (i * rowstride);
-      for (j = 0; j < width; j++)
-	p [j] >>= 1;
-    }
-}
-
-static gboolean
-fadeout_callback (FadeoutData *fadeout)
-{
-  GTimeVal current_time;
-  double elapsed, percent;
-
-  g_get_current_time (&current_time);
-  elapsed = ((((double)current_time.tv_sec - fadeout->start_time.tv_sec) * G_USEC_PER_SEC +
-	      (current_time.tv_usec - fadeout->start_time.tv_usec))) / 1000.0;
-
-  if (elapsed < 0)
-    {
-      g_warning ("System clock seemed to go backwards?");
-      elapsed = G_MAXDOUBLE;
-    }
-
-  if (elapsed > FADE_DURATION)
-    {
-      gdk_draw_pixbuf (fadeout->draw_window,
-		       fadeout->gc,
-		       fadeout->end_pb,
-		       0, 0,
-		       0, 0,
-		       fadeout->area.width,
-		       fadeout->area.height,
-		       GDK_RGB_DITHER_NONE,
-		       0, 0);
-
-      return FALSE;
-    }
-
-  percent = elapsed / FADE_DURATION;
-
-  get_current_frame (fadeout, 1.0 - percent);
-  gdk_draw_pixbuf (fadeout->draw_window,
-		   fadeout->gc,
-		   fadeout->frame,
-		   0, 0,
-		   0, 0,
-		   fadeout->area.width,
-		   fadeout->area.height,
-		   GDK_RGB_DITHER_NONE,
-		   0, 0);
-
-  gdk_flush ();
-  
-  return TRUE;
-}
-
-static void
-hide_fadeout_windows (void)
-{
-  GList *l;
-
-  for (l = fadeout_windows; l; l = l->next)
-    {
-      gdk_window_hide (GDK_WINDOW (l->data));
-      g_object_unref (l->data);
-    }
-
-  g_list_free (fadeout_windows);
-  fadeout_windows = NULL;
-}
-
-static gboolean
-fadein_callback (FadeoutData *fadeout)
-{
-  GTimeVal current_time;
-  double elapsed, percent;
-
-  g_get_current_time (&current_time);
-  elapsed = ((((double)current_time.tv_sec - fadeout->start_time.tv_sec) * G_USEC_PER_SEC +
-	      (current_time.tv_usec - fadeout->start_time.tv_usec))) / 1000.0;
-
-  if (elapsed < 0)
-    {
-      g_warning ("System clock seemed to go backwards?");
-      elapsed = G_MAXDOUBLE;
-    }
-
-  if (elapsed > FADE_DURATION)
-    {
-      gdk_draw_pixbuf (fadeout->draw_window,
-		       fadeout->gc,
-		       fadeout->end_pb,
-		       0, 0,
-		       0, 0,
-		       fadeout->area.width,
-		       fadeout->area.height,
-		       GDK_RGB_DITHER_NONE,
-		       0, 0);
-
-      g_object_unref (fadeout->gc);
-      g_object_unref (fadeout->start_pb);
-      g_object_unref (fadeout->end_pb);
-      g_object_unref (fadeout->frame);
-
-      g_free (fadeout);
-
-      hide_fadeout_windows ();
-
-      return FALSE;
-    }
-
-  percent = elapsed / FADE_DURATION;
-
-  get_current_frame (fadeout, percent);
-  gdk_draw_pixbuf (fadeout->draw_window,
-		   fadeout->gc,
-		   fadeout->frame,
-		   0, 0,
-		   0, 0,
-		   fadeout->area.width,
-		   fadeout->area.height,
-		   GDK_RGB_DITHER_NONE,
-		   0, 0);
-
-  gdk_flush ();
-  
-  return TRUE;
-}
-  
-static void
-fadeout_screen (GdkScreen *screen,
-		int        monitor)
-{
-  GdkWindowAttr attr;
-  int attr_mask;
-  GdkGCValues values;
-  FadeoutData *fadeout;
-
-  fadeout = g_new (FadeoutData, 1);
-
-  fadeout->screen = screen;
-  fadeout->monitor = monitor;
-
-  fadeout->area.x = gsm_screen_get_x (screen, monitor);
-  fadeout->area.y = gsm_screen_get_y (screen, monitor);
-  fadeout->area.width = gsm_screen_get_width (screen, monitor);
-  fadeout->area.height = gsm_screen_get_height (screen, monitor);
-
-  fadeout->root_window = gdk_screen_get_root_window (screen);
-  attr.window_type = GDK_WINDOW_CHILD;
-  attr.x = fadeout->area.x;
-  attr.y = fadeout->area.y;
-  attr.width = fadeout->area.width;
-  attr.height = fadeout->area.height;
-  attr.wclass = GDK_INPUT_OUTPUT;
-  attr.visual = gdk_screen_get_system_visual (fadeout->screen);
-  attr.colormap = gdk_screen_get_default_colormap (fadeout->screen);
-  attr.override_redirect = TRUE;
-  attr_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP | GDK_WA_NOREDIR;
-
-  fadeout->draw_window = gdk_window_new (fadeout->root_window, &attr, attr_mask);
-  fadeout_windows = g_list_prepend (fadeout_windows, fadeout->draw_window);
-  
-  fadeout->start_pb = gdk_pixbuf_get_from_drawable (NULL,
-						    fadeout->root_window,
-						    NULL,
-						    fadeout->area.x,
-						    fadeout->area.y,
-						    0, 0,
-						    fadeout->area.width,
-						    fadeout->area.height);
-  
-  fadeout->end_pb = gdk_pixbuf_copy (fadeout->start_pb);
-  darken_pixbuf (fadeout->end_pb);
-  
-  fadeout->frame = gdk_pixbuf_copy (fadeout->start_pb);
-  fadeout->rowstride = gdk_pixbuf_get_rowstride (fadeout->start_pb);
-
-  fadeout->start_p = gdk_pixbuf_get_pixels (fadeout->start_pb);
-  fadeout->end_p   = gdk_pixbuf_get_pixels (fadeout->end_pb);
-  fadeout->frame_p = gdk_pixbuf_get_pixels (fadeout->frame);
-  
-  values.subwindow_mode = GDK_INCLUDE_INFERIORS;
-
-  fadeout->gc = gdk_gc_new_with_values (fadeout->root_window, &values, GDK_GC_SUBWINDOW);
-
-  gdk_window_set_back_pixmap (fadeout->draw_window, NULL, FALSE);
-  gdk_window_show (fadeout->draw_window);
-  gdk_draw_pixbuf (fadeout->draw_window,
-		   fadeout->gc,
-		   fadeout->frame,
-		   0, 0,
-		   0, 0,
-		   fadeout->area.width,
-		   fadeout->area.height,
-		   GDK_RGB_DITHER_NONE,
-		   0, 0);
-  
-  g_get_current_time (&fadeout->start_time);
-  g_idle_add ((GSourceFunc) fadeout_callback, fadeout);
-
-  fade_data = fadeout;
-}
-
-/* End of 'stolen' code */
-
-
 /**
  * help:
- * @cmdname:  name of the command which was called by the user 
+ * @cmdname:  name of the command which was called by the user
  * (argv[0])
  *
  * This function is a simple 'usage'-style printing function.
@@ -391,7 +71,7 @@
  */
 void
 help (gchar *cmdname)
-{ 
+{
   g_print (_(
 "GKsu version %s\n\n"
 "Usage: %s [-u <user>] [-k] [-l] <command>\n\n"
@@ -432,7 +112,7 @@
 "  --desktop <file>, -D <file>\n"
 "    Use a .desktop file to get the name of the application"
 "    and the icon from.\n"
-"\n" 
+"\n"
 "  --preserve-env, -k\n"
 "    Preserve the current environments, does not set $HOME\n"
 "    nor $PATH, for example.\n"
@@ -445,131 +125,6 @@
 "\n"), PACKAGE_VERSION, cmdname);
 }
 
-/* copied from gnome-ssh-askpass */
-#define GRAB_TRIES	16
-#define GRAB_WAIT	250 /* milliseconds */
-
-typedef enum
-  {
-    FAILED_GRAB_MOUSE,
-    FAILED_GRAB_KEYBOARD
-  } FailedGrabWhat;
-
-void
-report_failed_grab (FailedGrabWhat what)
-{
-  GtkWidget *dialog;
-
-  dialog = g_object_new (GTK_TYPE_MESSAGE_DIALOG,
-			 "message-type", GTK_MESSAGE_WARNING,
-			 "buttons", GTK_BUTTONS_CLOSE,
-			 NULL);
-
-  switch (what)
-    {
-    case FAILED_GRAB_MOUSE:
-      gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG(dialog),
-				     _("<b>Could not grab your mouse.</b>\n\n"
-				       "A malicious client may be eavesdropping\n"
-				       "on your session or you may have just clicked\n"
-				       "a menu or some application just decided to get\n"
-				       "focus.\n\n"
-				       "Try again."));
-
-      break;
-    case FAILED_GRAB_KEYBOARD:
-      gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG(dialog),
-				     _("Could not grab your keyboard.\n"
-				       "A malicious client may be eavesdropping\n"
-				       "on your session or you may have just clicked\n"
-				       "a menu or some application just decided to get\n"
-				       "focus.\n\n"
-				       "Try again."));
-      break;
-    }
-
-  gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE);
-  gtk_dialog_run (GTK_DIALOG(dialog));
-  gtk_widget_destroy (dialog);
-
-  while (gtk_events_pending ())
-    gtk_main_iteration ();
-
-}
-
-pid_t test_lock(const char* fname)
-{
-   int FD = open(fname, 0);
-   if(FD < 0) {
-      if(errno == ENOENT) {
-	 // File does not exist
-	 return 0; 
-      } else {
-	 perror("open");
-	 return(-1);
-      }
-   }
-   struct flock fl;
-   fl.l_type = F_WRLCK;
-   fl.l_whence = SEEK_SET;
-   fl.l_start = 0;
-   fl.l_len = 0;
-   if (fcntl(FD, F_GETLK, &fl) < 0) {
-      g_critical("fcntl error");
-      close(FD);
-      return(-1);
-   }
-   close(FD);
-   // lock is available
-   if(fl.l_type == F_UNLCK)
-      return(0);
-   // file is locked by another process
-   return (fl.l_pid);
-}
-
-int get_lock(const char *File)
-{
-   int FD = open(File,O_RDWR | O_CREAT | O_TRUNC,0640);
-   if (FD < 0)
-   {
-      // Read only .. cant have locking problems there.
-      if (errno == EROFS)
-      {
-	 g_warning(_("Not using locking for read only lock file %s"),File);
-	 return dup(0);       // Need something for the caller to close
-      }
-      
-      // Feh.. We do this to distinguish the lock vs open case..
-      errno = EPERM;
-      return -1;
-   }
-   fcntl(FD,F_SETFD, FD_CLOEXEC);
-      
-   // Aquire a write lock
-   struct flock fl;
-   fl.l_type = F_WRLCK;
-   fl.l_whence = SEEK_SET;
-   fl.l_start = 0;
-   fl.l_len = 0;
-   if (fcntl(FD,F_SETLK,&fl) == -1)
-   {
-      if (errno == ENOLCK)
-      {
-	 g_warning(_("Not using locking for nfs mounted lock file %s"), File);
-	 unlink(File);
-	 close(FD);
-	 return dup(0);       // Need something for the caller to close	 
-      }      
-      
-      int Tmp = errno;
-      close(FD);
-      errno = Tmp;
-      return -1;
-   }
-
-   return FD;
-}
-
 static void
 keyring_create_item_cb (GnomeKeyringResult result,
                         guint32 id, gpointer keyring_loop)
@@ -605,7 +160,7 @@
   attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
   attribute.value.string = g_strdup ("gksu");
   g_array_append_val (attributes, attribute);
-      
+
   list = g_list_alloc();
   keyring_has_password = FALSE;
 
@@ -631,12 +186,12 @@
       gksu_context_set_command (context, keyring_command);
     }
 
-  if (keyring_has_password) 
+  if (keyring_has_password)
     {
       gchar *password;
 
-      password = g_locale_from_utf8 (keyring_password, 
-				     strlen (keyring_password), 
+      password = g_locale_from_utf8 (keyring_password,
+				     strlen (keyring_password),
 				     NULL, NULL, NULL);
       gksu_context_set_password (context, password);
       return FALSE; /* we do not need a password */
@@ -646,354 +201,6 @@
 }
 
 int
-grab_keyboard_and_mouse (GtkWidget *dialog)
-{
-  GdkGrabStatus status;
-  gint grab_tries = 0;
-  gint lock = -1;
-
-  gchar *fname = g_strdup_printf ("%s/.gksu.lock", getenv ("HOME"));
-  pid_t pid = test_lock (fname);
-
-  if (pid != 0)
-    {
-      g_warning ("Lock taken by pid: %i. Exiting.", pid);
-      exit (0);
-    }
-  
-  lock = get_lock(fname);
-  if( lock < 0)
-    g_warning ("Unable to create lock file.");
-  g_free (fname);
-  
-  fadeout_screen (gdk_screen_get_default (), 0);
-  gtk_widget_show_all (dialog);
-
-  /* reset cursor */
-  gdk_window_set_cursor(dialog->window, gdk_cursor_new(GDK_LEFT_PTR));
-
-  for(;;) 
-    {
-      status = gdk_pointer_grab ((GTK_WIDGET(dialog))->window, TRUE, 0, NULL,
-				 NULL, GDK_CURRENT_TIME);
-      if (status == GDK_GRAB_SUCCESS)
-	break;
-      usleep (GRAB_WAIT * 1000);
-      if (++grab_tries > GRAB_TRIES)
-	{
-	  gtk_widget_hide (dialog);
-	  g_get_current_time (&fade_data->start_time);
-	  while (fadein_callback (fade_data) != FALSE);
-	  report_failed_grab (FAILED_GRAB_MOUSE);
-	  exit (1);
-	  break;
-	}
-    }
-  
-  for(;;) 
-    {
-      status = gdk_keyboard_grab ((GTK_WIDGET(dialog))->window,
-				  FALSE, GDK_CURRENT_TIME);
-      if (status == GDK_GRAB_SUCCESS)
-	break;
-      
-      usleep(GRAB_WAIT * 1000);
-      
-      if (++grab_tries > GRAB_TRIES) 
-	{
-	  gtk_widget_hide (dialog);
-	  g_get_current_time (&fade_data->start_time);
-	  while (fadein_callback (fade_data) != FALSE);
-	  report_failed_grab (FAILED_GRAB_KEYBOARD);
-	  exit (1);
-	  break;
-	}
-    }
-  
-  /* we "raise" the window because there is a race here for
-   * focus-follow-mouse and auto-raise WMs that may put the window 
-   * in the background and confuse users
-   */
-  gtk_window_set_keep_above(GTK_WINDOW(dialog), TRUE);
-
-  while (gtk_events_pending ())
-    gtk_main_iteration ();
-
-  return lock;
-}
-
-void
-ungrab_keyboard_and_mouse (int lock)
-{
-  /* Ungrab */
-  gdk_pointer_ungrab(GDK_CURRENT_TIME);
-  gdk_keyboard_ungrab(GDK_CURRENT_TIME);
-  gdk_flush();
-
-  g_get_current_time (&fade_data->start_time);
-  while (fadein_callback (fade_data) != FALSE);
-
-  close(lock);
-}
-
-void
-get_configuration_options (GksuContext *context)
-{
-  grab = !gconf_client_get_bool (gconf_client, BASE_PATH "disable-grab",
-				 NULL);
-  force_grab = gconf_client_get_bool (gconf_client, BASE_PATH "force-grab",
-				      NULL);
-  sudo_mode = gconf_client_get_bool (gconf_client, BASE_PATH "sudo-mode",
-				     NULL);
-  prompt = gconf_client_get_bool (gconf_client, BASE_PATH "prompt",
-				  NULL);
-  always_ask_pass = gconf_client_get_bool (gconf_client, 
-					   BASE_PATH "always-ask-password",
-					   NULL);
-}
-
-gboolean
-su_ask_password (GksuContext *context, gchar *prompt, 
-		 gpointer data, GError **error)
-{
-  GtkWidget *dialog = GTK_WIDGET(data);
-
-  int retvalue = 0;
-
-  if (prompt)
-    gksuui_dialog_set_prompt (GKSUUI_DIALOG(dialog), prompt);
-
-  if (!message_changed)
-    {
-      gchar *msg;
-
-      if (sudo_mode)
-	msg = g_strdup_printf (_("<b>Please enter your password\n"
-				 "to run %s as user %s</b>"),
-			       gksu_context_get_command (context),
-			       gksu_context_get_user (context));
-      else
-	msg = g_strdup_printf (_("<b>To run the program \"%s\" you need to "
-				 "enter the %s password</b>"),
-			       gksu_context_get_command (context),
-			       gksu_context_get_user (context));
-	  
-      gksuui_dialog_set_message (GKSUUI_DIALOG(dialog), msg);
-      g_free (msg);
-    }
-
-  int lock = 0;
-  if (grab)
-    lock = grab_keyboard_and_mouse (dialog);
-  retvalue = gtk_dialog_run (GTK_DIALOG(dialog));
-  gtk_widget_hide (dialog);
-  if (grab)
-    ungrab_keyboard_and_mouse (lock);
-
-  while (gtk_events_pending ())
-    gtk_main_iteration ();
-
-  if (retvalue != GTK_RESPONSE_OK)
-    return 1;
-
-  {
-    gchar *password, *tmp;
-    tmp = gksuui_dialog_get_password (GKSUUI_DIALOG(dialog));
-    password = g_locale_from_utf8 (tmp, strlen (tmp), NULL, NULL, NULL);
-    g_free (tmp);
-    gksu_context_set_password (context, password);
-  }
-
-  return 0;
-}
-
-void
-set_sensitivity_cb (GtkWidget *button, gpointer data)
-{
-  GtkWidget *widget = (GtkWidget*)data;
-  gboolean sensitive;
-
-  sensitive = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(button));
-  gtk_widget_set_sensitive (widget, sensitive);
-}
-
-void
-cb_toggled_cb (GtkWidget *button, gpointer data)
-{
-  gchar *key;
-  gboolean toggled;
-  gchar *key_name;
-
-  g_return_if_fail (data != NULL);
-
-  key_name = (gchar*)data;
-
-  toggled = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(button));
-
-  key = g_strdup_printf (BASE_PATH "%s", key_name);
-
-  if (!strcmp (key_name, "save-keyring"))
-    {
-      if (toggled)
-	gconf_client_set_string (gconf_client, key, "session", NULL);
-      else
-	gconf_client_set_string (gconf_client, key, "default", NULL);
-    }
-  else if (!strcmp (key_name, "display-no-pass-info"))
-    {
-      /* the meaning of the key is the exact opposite of the meaning
-	 of the answer - when the check button is checked the key must
-	 be off
-      */
-      gconf_client_set_bool (gconf_client, key, !toggled, NULL);
-    }
-  else
-    gconf_client_set_bool (gconf_client, key, toggled, NULL);
-
-  g_free (key);
-}
-
-void
-no_pass (GksuContext *context, gpointer data)
-{
-  GtkWidget *dialog;
-  GtkWidget *alignment;
-  GtkWidget *check_button;
-  gboolean toggled;
-
-  toggled = gconf_client_get_bool (gconf_client, BASE_PATH "display-no-pass-info", NULL);
-
-  /* configuration tells us to not show this message */
-  if (!toggled)
-    return;
-
-  dialog = gtk_message_dialog_new_with_markup (NULL, 0, 
-					       GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE,
-					       _("<b>The \"%s\" program was started with "
-						 "the privileges of the %s user without "
-						 "the need to ask for a password, due to "
-						 "your system's authentication mechanism "
-						 "setup.</b>"
-						 "\n\n"
-						 "It is possible that you are being allowed "
-						 "to run specific programs as user %s "
-						 "without the need for a password, or that "
-						 "the password is cached."
-						 "\n"
-						 "This is not a problem report; it's "
-						 "simply a notification to make sure "
-						 "you are aware of this."),
-					       gksu_context_get_command (context),
-					       gksu_context_get_user (context),
-					       gksu_context_get_user (context));
-
-  alignment = gtk_alignment_new (0.5, 0.5, 0.6, 1);
-  gtk_box_pack_start (GTK_BOX(GTK_DIALOG(dialog)->vbox), alignment, TRUE, TRUE, 2);
-
-  check_button = gtk_check_button_new_with_mnemonic (_("Do _not display this message again"));
-  g_signal_connect (G_OBJECT(check_button), "toggled", 
-		    G_CALLBACK(cb_toggled_cb), "display-no-pass-info");
-  gtk_container_add (GTK_CONTAINER(alignment), check_button);
-
-  gtk_widget_show_all (dialog);
-  gtk_dialog_run (GTK_DIALOG(dialog));
-  gtk_widget_destroy (GTK_WIDGET(dialog));
-  
-  while (gtk_events_pending ())
-    gtk_main_iteration ();
-}
-
-void
-set_dialog_from_desktop (GksuuiDialog *dialog, GksuContext *context, 
-			 gchar *file_name)
-{
-  GKeyFile *desktop;
-  GError *error = NULL;
-  gchar *buffer = NULL;
-
-  desktop = g_key_file_new ();
-
-  g_key_file_load_from_file (desktop, file_name, G_KEY_FILE_NONE, &error);
-  if (error)
-    {
-      gchar *error_msg;
-
-      error_msg = g_strdup_printf ("Could not load desktop file: %s", 
-				   error->message);
-      g_warning (error_msg);
-      g_free (error_msg);
-      g_error_free (error);
-      return;
-    }
-
-  buffer = g_key_file_get_locale_string (desktop, "Desktop Entry", 
-					 "Name", NULL, NULL);
-  if (buffer)
-    {
-      gchar *msg;
-
-      if (sudo_mode)
-	msg = g_strdup_printf (_("<b>Authentication required</b>\n\n"
-				 "You need your password to run:\n\"%s\"."),
-			       buffer);
-      else
-	msg = g_strdup_printf (_("<b>Authentication required</b>\n\n"
-				 "You need to type %s's password to run:\n\"%s\"."),
-			       gksu_context_get_user (context), buffer);
-
-      gksuui_dialog_set_message (dialog, msg);
-
-      g_free (buffer);
-      g_free (msg);
-      message_changed = TRUE;
-    }
-
-  buffer = g_key_file_get_locale_string (desktop, "Desktop Entry", 
-					 "Icon", NULL, NULL);
-  if (buffer)
-    {
-      GdkPixbuf *pixbuf = NULL;
-      gboolean is_absolute = FALSE;
-      gchar *icon_path;
-
-      is_absolute = !(buffer[0] != '/');
-
-      if (is_absolute)
-	{
-	  icon_path = buffer;
-	  buffer = NULL;
-	}
-      else
-	{
-	  icon_path = g_strdup_printf (DATA_DIR"/pixmaps/%s", buffer);
-	  g_free (buffer);
-	}
-
-      pixbuf = gdk_pixbuf_new_from_file (icon_path, &error);
-      if (error)
-	{
-	  gchar *error_msg;
-	  
-	  error_msg = g_strdup_printf ("Could not load icon file: %s", 
-				       error->message);
-	  g_warning (error_msg);
-	  g_free (error_msg);
-	  g_error_free (error);
-
-	  if (!is_absolute)
-	    g_free (icon_path);
-
-	  return;
-	}
-
-      gksuui_dialog_set_icon (dialog, pixbuf);
-
-      if (!is_absolute)
-	g_free (icon_path);
-    }
-}
-
-int
 main (int argc, char **argv)
 {
   GtkWidget *dialog;
@@ -1013,13 +220,13 @@
   int c = 0;
 
   setlocale (LC_ALL, "");
-  bindtextdomain(PACKAGE_NAME, LOCALEDIR);  
+  bindtextdomain(PACKAGE_NAME, LOCALEDIR);
   bind_textdomain_codeset (PACKAGE_NAME, "UTF-8");
   textdomain(PACKAGE_NAME);
 
-  /* 
+  /*
    * bad, bad code... adds a second -- right after the first one,
-   * because gtk_init will remove one of them... 
+   * because gtk_init will remove one of them...
    */
   {
     /* to check whether a -- was already found when parsing arguments */
@@ -1032,7 +239,7 @@
 	    newargv = g_realloc (newargv, sizeof(char*) * (newargc + 2));
 	    newargv[newargc] = g_strdup (argv[c]);
 	    newargv[newargc + 1] = g_strdup (argv[c]);
-	    
+
 	    newargc = newargc + 2;
 	    separator_found = TRUE;
 	  }
@@ -1040,7 +247,7 @@
 	  {
 	    newargv = g_realloc (newargv, sizeof(char*) * (newargc + 1));
 	    newargv[newargc] = g_strdup (argv[c]);
-	    
+
 	    newargc++;
 	  }
       }
@@ -1090,13 +297,13 @@
 	  gksu_context_set_keep_env (context, TRUE);
 	  break;
 	case 'g':
-	  grab = FALSE;
+	  gksu_context_set_grab (context, FALSE);
 
 	  if (optarg != NULL)
 	    {
 	      if (!strcasecmp (optarg, "yes")); /* ignore, already set */
 	      else if (!strcasecmp (optarg, "no"))
-		grab = FALSE;
+		gksu_context_set_grab (context, FALSE);
 	      else
 		{
 		  fprintf (stderr, _("Option not accepted for --disable-grab: %s\n"),
@@ -1163,12 +370,12 @@
   }
 
   if (force_grab)
-    grab = TRUE;
+    gksu_context_set_grab (context, TRUE);
 
   if (prompt)
     {
       GtkWidget *d;
-      
+
       d = gtk_message_dialog_new_with_markup (NULL, 0, GTK_MESSAGE_QUESTION,
 					      GTK_BUTTONS_YES_NO,
 					      _("<b>Would you like your screen to be \"grabbed\"\n"
@@ -1177,22 +384,16 @@
 						"This means all applications will be paused to avoid\n"
 						"the eavesdropping of your password by a a malicious\n"
 						"application while you type it."));
-      
+
       if (gtk_dialog_run (GTK_DIALOG(d)) == GTK_RESPONSE_NO)
-	grab = FALSE;
+	gksu_context_set_grab (context, FALSE);
       else
-	grab = TRUE;
-      
+	gksu_context_set_grab (context, TRUE);
+
       gtk_widget_destroy (d);
     }
 
-  if (grab)
-    dialog = g_object_new (GKSUUI_TYPE_DIALOG,
-			   "type", GTK_WINDOW_POPUP,
-			   NULL);
-  else
-    dialog = gksuui_dialog_new ();
-
+#if 0
   if (desktop_file_name)
     set_dialog_from_desktop (GKSUUI_DIALOG(dialog), context,
 			     desktop_file_name);
@@ -1208,7 +409,7 @@
     {
       if (!gksuui_dialog_get_message (GKSUUI_DIALOG(dialog)))
 	{
-	  gchar *msg = 
+	  gchar *msg =
 	    g_strdup_printf (_("<b>Please enter %s's password</b>"),
 			     gksu_context_get_user (context));
 
@@ -1224,9 +425,9 @@
       if (grab)
 	ungrab_keyboard_and_mouse (lock);
 
-      /* 
+      /*
 	 the user may have pressed cancel or
-	 closed the window 
+	 closed the window
       */
       if (retvalue != GTK_RESPONSE_OK)
 	  return 2;
@@ -1242,6 +443,7 @@
 	printf ("%s\n", password);
       return 0;
     }
+#endif
 
   /* now we can begin to care about a command */
   if (newargc <= optind)
@@ -1299,11 +501,13 @@
 
   if (sudo_mode)
     {
-      gksu_context_sudo_run_full (context, su_ask_password, (gpointer)dialog, 
-				  no_pass, NULL, &error);
+      gksu_sudo_full (context,
+		      NULL, NULL,
+		      NULL, NULL,
+		      &error);
       if (error)
 	{
-	  gk_dialog (GTK_MESSAGE_ERROR, 
+	  gk_dialog (GTK_MESSAGE_ERROR,
 		     _("<b>Failed to run %s as user %s.</b>\n\n%s"),
 		     gksu_context_get_command (context),
 		     gksu_context_get_user (context),
@@ -1313,6 +517,7 @@
     }
   else
     {
+#if 0
       if (!always_ask_pass)
 	{
 	  GtkWidget *vbox;
@@ -1334,7 +539,7 @@
 	  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(check_button), remember_password);
 	  gtk_box_pack_start (GTK_BOX(vbox), check_button, TRUE, TRUE, 0);
 	  gtk_widget_show (check_button);
-      
+
 	  alignment = gtk_alignment_new (0.5, 0.5, 0.6, 1);
 	  gtk_box_pack_start (GTK_BOX(vbox), alignment, TRUE, TRUE, 2);
 	  gtk_widget_show (alignment);
@@ -1363,19 +568,22 @@
 	  if (gksu_context_try_need_password (context))
 	    try_gnome_keyring_password (context);
 	}
+#endif
+      gksu_su_full (context,
+		    NULL, NULL,
+		    NULL, NULL,
+		    &error);
 
-      gksu_context_run_full (context, su_ask_password, (gpointer)dialog, 
-			     no_pass, NULL, &error);
-
-      if (error) 
+      if (error)
 	{
-	  gk_dialog (GTK_MESSAGE_ERROR, 
+	  gk_dialog (GTK_MESSAGE_ERROR,
 		     _("Failed to run %s as user %s:\n %s"),
 		     gksu_context_get_command (context),
 		     gksu_context_get_user (context),
 		     error->message);
 	  return 3;
 	}
+#if 0
       else
 	{
 	  gboolean save_to_keyring;
@@ -1387,17 +595,17 @@
 	      static GMainLoop *keyring_loop = NULL;
 	      GnomeKeyringAttributeList *attributes;
 	      GnomeKeyringAttribute attribute;
-		      
+
 	      gchar *keyring_name;
 	      gchar *key_name;
-		      
+
 	      attributes = gnome_keyring_attribute_list_new ();
-		      
+
 	      attribute.name = g_strdup ("user");
 	      attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
 	      attribute.value.string = g_strdup (gksu_context_get_user (context));
 	      g_array_append_val (attributes, attribute);
-		    
+
 	      attribute.name = g_strdup ("type");
 	      attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
 	      attribute.value.string = g_strdup ("local");
@@ -1407,10 +615,10 @@
 	      attribute.type = GNOME_KEYRING_ATTRIBUTE_TYPE_STRING;
 	      attribute.value.string = g_strdup ("gksu");
 	      g_array_append_val (attributes, attribute);
-      
+
 	      key_name = g_strdup_printf ("Local password for user %s",
 					  gksu_context_get_user (context));
-      
+
 	      keyring_loop = g_main_loop_new (NULL, FALSE);
 
 	      keyring_name = gconf_client_get_string (gconf_client, BASE_PATH"save-keyring", NULL);
@@ -1422,14 +630,15 @@
 					 attributes,
 					 gksu_context_get_password (context),
 					 TRUE,
-					 keyring_create_item_cb, 
+					 keyring_create_item_cb,
 					 keyring_loop, NULL);
 	      gnome_keyring_attribute_list_free (attributes);
 	      g_free (keyring_name);
 	      g_main_loop_run (keyring_loop);
 	    }
 	}
+#endif
     }
-  
+
   return 0;
 }




More information about the gksu-commits mailing list