]> git.sur5r.net Git - bacula/bacula/commitdiff
- Add 'Dir Status' button to the gnome console.
authorKern Sibbald <kern@sibbald.com>
Sun, 23 Apr 2006 08:16:02 +0000 (08:16 +0000)
committerKern Sibbald <kern@sibbald.com>
Sun, 23 Apr 2006 08:16:02 +0000 (08:16 +0000)
- More work on migration.
- Restore non-compatible base64 coding to permit compatibility.
- Display heap stats in Storage daemon without debug level.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@2959 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/kernstodo
bacula/kes-1.39
bacula/scripts/.cvsignore
bacula/src/console2.glade
bacula/src/dird/migrate.c
bacula/src/lib/base64.c
bacula/src/stored/status.c
bacula/src/version.h

index b752edd3a14aa85472dbf82afe3fd5072d1aa040..b74009a813736123f21c72129917a9916a7cbe55 100644 (file)
@@ -49,6 +49,20 @@ pool specified.
 
 Here's how I'd define Migration Selection Types: 
 
+With Regexes:
+Client  -- Migrate data from selected client only. Migration Selection
+Pattern regexp provides pattern to select client names, eg ^FS00* makes
+all client names starting with FS00 eligible for migration. 
+
+Jobname -- Migration all jobs matching name. Migration Selection Pattern
+regexp provides pattern to select jobnames existing in pool. 
+
+Volume -- Migrate all data on specified volumes. Migration Selection
+Pattern regexp provides selection criteria for volumes to be migrated.
+Volumes must exist in pool to be eligible for migration. 
+
+
+With Regex optional:
 LowestUtil -- Identify the volume in the pool with the least data on it
 and empty it. No Migration Selection Pattern required. 
 
@@ -60,25 +74,17 @@ PoolOccupancy -- if pool occupancy exceeds <highmig>, migrate volumes
 <lowmig>. Pool highmig and lowmig values are in pool definition, no
 Migration Selection Pattern required.
 
-Client  -- Migrate data from selected client only. Migration Selection
-Pattern regexp provides pattern to select client names, eg ^FS00* makes
-all client names starting with FS00 eligible for migration. 
+
+No regex:
+SQLQuery -- Migrate all jobuids returned by the supplied SQL query.
+Migration Selection Pattern contains SQL query to execute; should return
+a list of 1 or more jobuids to migrate.
 
 PoolResidence -- Migrate data sitting in pool for longer than
 PoolResidence value in pool definition. Migration Selection Pattern
 optional; if specified, override value in pool definition (value in
 minutes). 
 
-Volume -- Migrate all data on specified volumes. Migration Selection
-Pattern regexp provides selection criteria for volumes to be migrated.
-Volumes must exist in pool to be eligible for migration. 
-
-Jobname -- Migration all jobs matching name. Migration Selection Pattern
-regexp provides pattern to select jobnames existing in pool. 
-
-SQLQuery -- Migrate all jobuids returned by the supplied SQL query.
-Migration Selection Pattern contains SQL query to execute; should return
-a list of 1 or more jobuids to migrate.
 
 [ possibly a Python event -- kes ]
 ===
index 6e80941f73bd7298ed0bd8912dd0a230cc218b5b..0b204e2fab8f61398340e250bff28d762283f12e 100644 (file)
@@ -2,6 +2,11 @@
                         Kern Sibbald
 
 General:
+23Apr06
+- Add 'Dir Status' button to the gnome console.
+- More work on migration.
+- Restore non-compatible base64 coding to permit compatibility.
+- Display heap stats in Storage daemon without debug level.
 22Apr06
 - Integrate most of the MinGW changes -- more to do.
 21Apr06
index 38595022c1cbc33fd5bab7a0e9f071a6703bad14..588d20d72fa7b634a1d6e9354a2167ee3dd894e4 100644 (file)
@@ -1,3 +1,6 @@
+wxconsole.console_apps
+wxconsole.desktop.consolehelper
+wxconsole.desktop.xsu
 disk-changer
 bacula-tray-monitor.desktop
 bacula-tray-monior.desktop
index c915357c07f9d2d8a08d89eab20d360818774457..c843426e46033edf91988a4b9135d7bf3feaa688 100644 (file)
   <property name="default_height">600</property>
   <property name="resizable">True</property>
   <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
   <signal name="delete_event" handler="on_console_delete_event" last_modification_time="Tue, 16 Mar 2004 12:30:54 GMT"/>
 
   <child>
              <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
              <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
              <property name="tooltips">True</property>
+             <property name="show_arrow">True</property>
 
              <child>
-               <widget class="button" id="connect_button1">
+               <widget class="GtkToolButton" id="connect_button1">
                  <property name="visible">True</property>
                  <property name="tooltip" translatable="yes">Connect to Director</property>
                  <property name="label" translatable="yes">Connect</property>
                  <property name="use_underline">True</property>
-                 <property name="stock_pixmap">gtk-new</property>
+                 <property name="stock_id">gtk-disconnect</property>
+                 <property name="visible_horizontal">True</property>
+                 <property name="visible_vertical">True</property>
+                 <property name="is_important">False</property>
                  <signal name="clicked" handler="on_connect_button_clicked"/>
                </widget>
+               <packing>
+                 <property name="expand">False</property>
+                 <property name="homogeneous">True</property>
+               </packing>
              </child>
 
              <child>
-               <widget class="button" id="run_button1">
+               <widget class="GtkToolButton" id="run_button1">
                  <property name="visible">True</property>
                  <property name="tooltip" translatable="yes">Run a Job</property>
                  <property name="label" translatable="yes">Run</property>
                  <property name="use_underline">True</property>
-                 <property name="stock_pixmap">gtk-execute</property>
+                 <property name="stock_id">gtk-execute</property>
+                 <property name="visible_horizontal">True</property>
+                 <property name="visible_vertical">True</property>
+                 <property name="is_important">False</property>
                  <signal name="clicked" handler="on_run_button_clicked"/>
                </widget>
+               <packing>
+                 <property name="expand">False</property>
+                 <property name="homogeneous">True</property>
+               </packing>
              </child>
 
              <child>
-               <widget class="button" id="msgs_button">
+               <widget class="GtkToolButton" id="dir_button">
                  <property name="visible">True</property>
-                 <property name="tooltip" translatable="yes">Display Messages</property>
-                 <property name="label" translatable="yes">Msgs</property>
+                 <property name="label" translatable="yes">Dir Status</property>
                  <property name="use_underline">True</property>
-                 <property name="stock_pixmap">gtk-find</property>
-                 <signal name="clicked" handler="on_msgs_button_clicked"/>
+                 <property name="stock_id">gnome-stock-text-bulleted-list</property>
+                 <property name="visible_horizontal">True</property>
+                 <property name="visible_vertical">True</property>
+                 <property name="is_important">False</property>
+                 <signal name="clicked" handler="on_dir_button_clicked" last_modification_time="Sun, 23 Apr 2006 07:52:39 GMT"/>
                </widget>
+               <packing>
+                 <property name="expand">False</property>
+                 <property name="homogeneous">True</property>
+               </packing>
              </child>
 
              <child>
-               <widget class="button" id="restore_button">
+               <widget class="GtkToolButton" id="restore_button">
                  <property name="visible">True</property>
                  <property name="label" translatable="yes">Restore</property>
                  <property name="use_underline">True</property>
-                 <property name="stock_pixmap">gtk-revert-to-saved</property>
+                 <property name="stock_id">gtk-revert-to-saved</property>
+                 <property name="visible_horizontal">True</property>
+                 <property name="visible_vertical">True</property>
+                 <property name="is_important">False</property>
                  <signal name="clicked" handler="on_restore_button_clicked"/>
                </widget>
+               <packing>
+                 <property name="expand">False</property>
+                 <property name="homogeneous">True</property>
+               </packing>
              </child>
 
              <child>
-               <widget class="button" id="label_button">
+               <widget class="GtkToolButton" id="label_button">
                  <property name="visible">True</property>
                  <property name="label" translatable="yes">Label</property>
                  <property name="use_underline">True</property>
-                 <property name="stock_pixmap">gtk-save-as</property>
+                 <property name="stock_id">gtk-save-as</property>
+                 <property name="visible_horizontal">True</property>
+                 <property name="visible_vertical">True</property>
+                 <property name="is_important">False</property>
                  <signal name="clicked" handler="on_label_button_clicked"/>
                </widget>
+               <packing>
+                 <property name="expand">False</property>
+                 <property name="homogeneous">True</property>
+               </packing>
+             </child>
+
+             <child>
+               <widget class="GtkToolButton" id="msgs_button">
+                 <property name="visible">True</property>
+                 <property name="tooltip" translatable="yes">Display Messages</property>
+                 <property name="label" translatable="yes">Msgs</property>
+                 <property name="use_underline">True</property>
+                 <property name="stock_id">gtk-find</property>
+                 <property name="visible_horizontal">True</property>
+                 <property name="visible_vertical">True</property>
+                 <property name="is_important">False</property>
+                 <signal name="clicked" handler="on_msgs_button_clicked"/>
+               </widget>
+               <packing>
+                 <property name="expand">False</property>
+                 <property name="homogeneous">True</property>
+               </packing>
              </child>
            </widget>
          </child>
                <widget class="GtkTextView" id="text1">
                  <property name="visible">True</property>
                  <property name="editable">False</property>
+                 <property name="overwrite">False</property>
+                 <property name="accepts_tab">True</property>
                  <property name="justification">GTK_JUSTIFY_LEFT</property>
                  <property name="wrap_mode">GTK_WRAP_WORD</property>
                  <property name="cursor_visible">True</property>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">0</property>
                  <property name="max_length">150</property>
                  <property name="text" translatable="yes"></property>
                  <property name="has_frame">True</property>
-                 <property name="invisible_char" translatable="yes">*</property>
+                 <property name="invisible_char">*</property>
                  <property name="activates_default">False</property>
                  <signal name="key_press_event" handler="on_entry1_key_press_event"/>
                  <signal name="key_release_event" handler="on_entry1_key_release_event"/>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                  </child>
                </widget>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                  </child>
                </widget>
   <property name="modal">True</property>
   <property name="resizable">True</property>
   <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
   <property name="has_separator">True</property>
 
   <child internal-child="vbox">
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">0</property>
                  <property name="label">gtk-ok</property>
                  <property name="use_stock">True</property>
                  <property name="relief">GTK_RELIEF_NORMAL</property>
+                 <property name="focus_on_click">True</property>
                  <signal name="clicked" handler="on_about_button_clicked"/>
                </widget>
                <packing>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">0</property>
                  <property name="justify">GTK_JUSTIFY_LEFT</property>
                  <property name="wrap">False</property>
                  <property name="selectable">False</property>
-                 <property name="xalign">0.1</property>
+                 <property name="xalign">0.10000000149</property>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">0</property>
                  <property name="justify">GTK_JUSTIFY_LEFT</property>
                  <property name="wrap">False</property>
                  <property name="selectable">False</property>
-                 <property name="xalign">0.0400001</property>
+                 <property name="xalign">0.0400000996888</property>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">0</property>
                  <property name="justify">GTK_JUSTIFY_LEFT</property>
                  <property name="wrap">False</property>
                  <property name="selectable">False</property>
-                 <property name="xalign">0.15</property>
+                 <property name="xalign">0.15000000596</property>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">0</property>
   <property name="modal">True</property>
   <property name="resizable">True</property>
   <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
   <property name="has_separator">True</property>
 
   <child internal-child="vbox">
                  <property name="label">gtk-ok</property>
                  <property name="use_stock">True</property>
                  <property name="relief">GTK_RELIEF_NORMAL</property>
+                 <property name="focus_on_click">True</property>
                  <signal name="clicked" handler="on_select_director_OK_clicked"/>
                </widget>
                <packing>
                  <property name="yalign">0.5</property>
                  <property name="xpad">2</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">0</property>
                  <property name="label">gtk-cancel</property>
                  <property name="use_stock">True</property>
                  <property name="relief">GTK_RELIEF_NORMAL</property>
+                 <property name="focus_on_click">True</property>
                  <signal name="clicked" handler="on_select_director_cancel_clicked"/>
                </widget>
                <packing>
              <property name="justify">GTK_JUSTIFY_CENTER</property>
              <property name="wrap">False</property>
              <property name="selectable">False</property>
-             <property name="xalign">0.48</property>
-             <property name="yalign">0.46</property>
+             <property name="xalign">0.479999989271</property>
+             <property name="yalign">0.460000008345</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">0</property>
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">0</property>
                  <property name="max_length">0</property>
                  <property name="text" translatable="yes"></property>
                  <property name="has_frame">True</property>
-                 <property name="invisible_char" translatable="yes">*</property>
+                 <property name="invisible_char">*</property>
                  <property name="activates_default">False</property>
                </widget>
              </child>
                          <property name="yalign">0.5</property>
                          <property name="xpad">0</property>
                          <property name="ypad">0</property>
+                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                      </child>
                    </widget>
   <property name="modal">False</property>
   <property name="resizable">True</property>
   <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
   <property name="has_separator">True</property>
 
   <child internal-child="vbox">
                  <property name="label">gtk-ok</property>
                  <property name="use_stock">True</property>
                  <property name="relief">GTK_RELIEF_NORMAL</property>
+                 <property name="focus_on_click">True</property>
                  <signal name="clicked" handler="on_run_ok_clicked"/>
                </widget>
              </child>
                  <property name="label">gtk-cancel</property>
                  <property name="use_stock">True</property>
                  <property name="relief">GTK_RELIEF_NORMAL</property>
+                 <property name="focus_on_click">True</property>
                  <signal name="clicked" handler="on_run_cancel_clicked"/>
                </widget>
              </child>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">9</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">2</property>
                  <property name="yalign">0.5</property>
                  <property name="xscale">1</property>
                  <property name="yscale">1</property>
+                 <property name="top_padding">0</property>
+                 <property name="bottom_padding">0</property>
+                 <property name="left_padding">0</property>
+                 <property name="right_padding">0</property>
 
                  <child>
                    <widget class="GtkHBox" id="hbox28">
                              <property name="yalign">0.5</property>
                              <property name="xpad">0</property>
                              <property name="ypad">0</property>
+                             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                             <property name="width_chars">-1</property>
+                             <property name="single_line_mode">False</property>
+                             <property name="angle">0</property>
                            </widget>
                            <packing>
                              <property name="padding">0</property>
                                  <property name="max_length">0</property>
                                  <property name="text" translatable="yes"></property>
                                  <property name="has_frame">True</property>
-                                 <property name="invisible_char" translatable="yes">*</property>
+                                 <property name="invisible_char">*</property>
                                  <property name="activates_default">False</property>
                                  <signal name="changed" handler="on_entry_job_changed"/>
                                </widget>
                                          <property name="yalign">0.5</property>
                                          <property name="xpad">0</property>
                                          <property name="ypad">0</property>
+                                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                         <property name="width_chars">-1</property>
+                                         <property name="single_line_mode">False</property>
+                                         <property name="angle">0</property>
                                        </widget>
                                      </child>
                                    </widget>
                              <property name="yalign">0.5</property>
                              <property name="xpad">0</property>
                              <property name="ypad">0</property>
+                             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                             <property name="width_chars">-1</property>
+                             <property name="single_line_mode">False</property>
+                             <property name="angle">0</property>
                            </widget>
                            <packing>
                              <property name="padding">0</property>
                                  <property name="max_length">0</property>
                                  <property name="text" translatable="yes"></property>
                                  <property name="has_frame">True</property>
-                                 <property name="invisible_char" translatable="yes">*</property>
+                                 <property name="invisible_char">*</property>
                                  <property name="activates_default">False</property>
                                </widget>
                              </child>
                                          <property name="yalign">0.5</property>
                                          <property name="xpad">0</property>
                                          <property name="ypad">0</property>
+                                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                         <property name="width_chars">-1</property>
+                                         <property name="single_line_mode">False</property>
+                                         <property name="angle">0</property>
                                        </widget>
                                      </child>
                                    </widget>
                          <property name="yalign">0.5</property>
                          <property name="xpad">0</property>
                          <property name="ypad">0</property>
+                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                        <packing>
                          <property name="padding">30</property>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
                          <property name="max_length">0</property>
                          <property name="text" translatable="yes"></property>
                          <property name="has_frame">True</property>
-                         <property name="invisible_char" translatable="yes">*</property>
+                         <property name="invisible_char">*</property>
                          <property name="activates_default">False</property>
                        </widget>
                      </child>
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                              </child>
                            </widget>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">123</property>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
                          <property name="max_length">0</property>
                          <property name="text" translatable="yes"></property>
                          <property name="has_frame">True</property>
-                         <property name="invisible_char" translatable="yes">*</property>
+                         <property name="invisible_char">*</property>
                          <property name="activates_default">False</property>
                        </widget>
                      </child>
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                              </child>
                            </widget>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
                          <property name="max_length">0</property>
                          <property name="text" translatable="yes"></property>
                          <property name="has_frame">True</property>
-                         <property name="invisible_char" translatable="yes">*</property>
+                         <property name="invisible_char">*</property>
                          <property name="activates_default">False</property>
                        </widget>
                      </child>
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                              </child>
                            </widget>
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                              </child>
                            </widget>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">100</property>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
                          <property name="max_length">0</property>
                          <property name="text" translatable="yes"></property>
                          <property name="has_frame">True</property>
-                         <property name="invisible_char" translatable="yes">*</property>
+                         <property name="invisible_char">*</property>
                          <property name="activates_default">False</property>
                        </widget>
                      </child>
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                              </child>
                            </widget>
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                              </child>
                            </widget>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">120</property>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
                          <property name="max_length">0</property>
                          <property name="text" translatable="yes"></property>
                          <property name="has_frame">True</property>
-                         <property name="invisible_char" translatable="yes">*</property>
+                         <property name="invisible_char">*</property>
                          <property name="activates_default">False</property>
                        </widget>
                      </child>
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                              </child>
                            </widget>
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                              </child>
                            </widget>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">120</property>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
                          <property name="max_length">0</property>
                          <property name="text" translatable="yes"></property>
                          <property name="has_frame">True</property>
-                         <property name="invisible_char" translatable="yes">*</property>
+                         <property name="invisible_char">*</property>
                          <property name="activates_default">False</property>
                        </widget>
                      </child>
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                              </child>
                            </widget>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">120</property>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
                      <property name="max_length">0</property>
                      <property name="text" translatable="yes"></property>
                      <property name="has_frame">True</property>
-                     <property name="invisible_char" translatable="yes">*</property>
+                     <property name="invisible_char">*</property>
                      <property name="activates_default">False</property>
                    </widget>
                    <packing>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">120</property>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">0</property>
                  <property name="max_length">0</property>
                  <property name="text" translatable="yes"></property>
                  <property name="has_frame">True</property>
-                 <property name="invisible_char" translatable="yes">*</property>
+                 <property name="invisible_char">*</property>
                  <property name="activates_default">False</property>
                </widget>
                <packing>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">120</property>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">0</property>
                  <property name="max_length">0</property>
                  <property name="text" translatable="yes"></property>
                  <property name="has_frame">True</property>
-                 <property name="invisible_char" translatable="yes">*</property>
+                 <property name="invisible_char">*</property>
                  <property name="activates_default">False</property>
                </widget>
                <packing>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">36</property>
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">0</property>
   <property name="default_height">450</property>
   <property name="resizable">True</property>
   <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
   <signal name="delete_event" handler="on_restore_files_delete_event" last_modification_time="Tue, 16 Mar 2004 11:41:52 GMT"/>
 
   <child>
              <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
              <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
              <property name="tooltips">True</property>
+             <property name="show_arrow">True</property>
 
              <child>
-               <widget class="button" id="restore_up_button">
+               <widget class="GtkToolButton" id="restore_up_button">
                  <property name="visible">True</property>
-                 <property name="label">gtk-go-up</property>
-                 <property name="use_stock">True</property>
+                 <property name="stock_id">gtk-go-up</property>
+                 <property name="visible_horizontal">True</property>
+                 <property name="visible_vertical">True</property>
+                 <property name="is_important">False</property>
                  <signal name="clicked" handler="on_restore_up_button_clicked" last_modification_time="Tue, 16 Mar 2004 11:44:40 GMT"/>
                </widget>
+               <packing>
+                 <property name="expand">False</property>
+                 <property name="homogeneous">True</property>
+               </packing>
              </child>
 
              <child>
-               <widget class="button" id="restore_add_button">
+               <widget class="GtkToolButton" id="restore_add_button">
                  <property name="visible">True</property>
-                 <property name="label">gtk-add</property>
-                 <property name="use_stock">True</property>
+                 <property name="stock_id">gtk-add</property>
+                 <property name="visible_horizontal">True</property>
+                 <property name="visible_vertical">True</property>
+                 <property name="is_important">False</property>
                  <signal name="clicked" handler="on_restore_add_button_clicked" last_modification_time="Tue, 16 Mar 2004 11:44:49 GMT"/>
                </widget>
+               <packing>
+                 <property name="expand">False</property>
+                 <property name="homogeneous">True</property>
+               </packing>
              </child>
 
              <child>
-               <widget class="button" id="restore_remove_button">
+               <widget class="GtkToolButton" id="restore_remove_button">
                  <property name="visible">True</property>
-                 <property name="label">gtk-remove</property>
-                 <property name="use_stock">True</property>
+                 <property name="stock_id">gtk-remove</property>
+                 <property name="visible_horizontal">True</property>
+                 <property name="visible_vertical">True</property>
+                 <property name="is_important">False</property>
                  <signal name="clicked" handler="on_restore_remove_button_clicked" last_modification_time="Tue, 16 Mar 2004 11:45:02 GMT"/>
                </widget>
+               <packing>
+                 <property name="expand">False</property>
+                 <property name="homogeneous">True</property>
+               </packing>
              </child>
 
              <child>
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">0</property>
              <property name="max_length">0</property>
              <property name="text" translatable="yes"></property>
              <property name="has_frame">True</property>
-             <property name="invisible_char" translatable="yes">*</property>
+             <property name="invisible_char">*</property>
              <property name="activates_default">False</property>
            </widget>
            <packing>
              <property name="justify">GTK_JUSTIFY_LEFT</property>
              <property name="wrap">False</property>
              <property name="selectable">False</property>
-             <property name="xalign">0.02</property>
+             <property name="xalign">0.019999999553</property>
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">0</property>
              <property name="label">gtk-ok</property>
              <property name="use_stock">True</property>
              <property name="relief">GTK_RELIEF_NORMAL</property>
+             <property name="focus_on_click">True</property>
              <signal name="clicked" handler="on_restore_select_ok_clicked" last_modification_time="Tue, 16 Mar 2004 11:52:07 GMT"/>
            </widget>
            <packing>
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">0</property>
              <property name="label">gtk-cancel</property>
              <property name="use_stock">True</property>
              <property name="relief">GTK_RELIEF_NORMAL</property>
+             <property name="focus_on_click">True</property>
              <signal name="clicked" handler="on_restore_select_cancel_clicked" last_modification_time="Tue, 16 Mar 2004 11:52:22 GMT"/>
            </widget>
            <packing>
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">8</property>
   <property name="modal">True</property>
   <property name="resizable">True</property>
   <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
   <property name="has_separator">True</property>
 
   <child internal-child="vbox">
                  <property name="label">gtk-ok</property>
                  <property name="use_stock">True</property>
                  <property name="relief">GTK_RELIEF_NORMAL</property>
+                 <property name="focus_on_click">True</property>
                  <signal name="clicked" handler="on_label_ok_clicked"/>
                </widget>
              </child>
                  <property name="label">gtk-cancel</property>
                  <property name="use_stock">True</property>
                  <property name="relief">GTK_RELIEF_NORMAL</property>
+                 <property name="focus_on_click">True</property>
                  <signal name="clicked" handler="on_label_cancel_clicked"/>
                </widget>
              </child>
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">9</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">0</property>
                  <property name="justify">GTK_JUSTIFY_CENTER</property>
                  <property name="wrap">False</property>
                  <property name="selectable">False</property>
-                 <property name="xalign">0.15</property>
+                 <property name="xalign">0.15000000596</property>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">0</property>
                      <property name="max_length">0</property>
                      <property name="text" translatable="yes"></property>
                      <property name="has_frame">True</property>
-                     <property name="invisible_char" translatable="yes">*</property>
+                     <property name="invisible_char">*</property>
                      <property name="activates_default">False</property>
                    </widget>
                  </child>
                              <property name="yalign">0.5</property>
                              <property name="xpad">0</property>
                              <property name="ypad">0</property>
+                             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                             <property name="width_chars">-1</property>
+                             <property name="single_line_mode">False</property>
+                             <property name="angle">0</property>
                            </widget>
                          </child>
                        </widget>
                              <property name="yalign">0.5</property>
                              <property name="xpad">0</property>
                              <property name="ypad">0</property>
+                             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                             <property name="width_chars">-1</property>
+                             <property name="single_line_mode">False</property>
+                             <property name="angle">0</property>
                            </widget>
                          </child>
                        </widget>
                  <property name="justify">GTK_JUSTIFY_LEFT</property>
                  <property name="wrap">False</property>
                  <property name="selectable">False</property>
-                 <property name="xalign">0.12</property>
+                 <property name="xalign">0.119999997318</property>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">0</property>
                      <property name="max_length">0</property>
                      <property name="text" translatable="yes"></property>
                      <property name="has_frame">True</property>
-                     <property name="invisible_char" translatable="yes">*</property>
+                     <property name="invisible_char">*</property>
                      <property name="activates_default">False</property>
                    </widget>
                  </child>
                              <property name="yalign">0.5</property>
                              <property name="xpad">0</property>
                              <property name="ypad">0</property>
+                             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                             <property name="width_chars">-1</property>
+                             <property name="single_line_mode">False</property>
+                             <property name="angle">0</property>
                            </widget>
                          </child>
                        </widget>
                              <property name="yalign">0.5</property>
                              <property name="xpad">0</property>
                              <property name="ypad">0</property>
+                             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                             <property name="width_chars">-1</property>
+                             <property name="single_line_mode">False</property>
+                             <property name="angle">0</property>
                            </widget>
                          </child>
                        </widget>
                  <property name="justify">GTK_JUSTIFY_LEFT</property>
                  <property name="wrap">False</property>
                  <property name="selectable">False</property>
-                 <property name="xalign">0.17</property>
+                 <property name="xalign">0.170000001788</property>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">0</property>
                  <property name="max_length">0</property>
                  <property name="text" translatable="yes"></property>
                  <property name="has_frame">True</property>
-                 <property name="invisible_char" translatable="yes">*</property>
+                 <property name="invisible_char">*</property>
                  <property name="activates_default">False</property>
                </widget>
                <packing>
                  <property name="justify">GTK_JUSTIFY_LEFT</property>
                  <property name="wrap">False</property>
                  <property name="selectable">False</property>
-                 <property name="xalign">0.09</property>
+                 <property name="xalign">0.0900000035763</property>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">0</property>
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">0</property>
   <property name="default_height">200</property>
   <property name="resizable">True</property>
   <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
   <property name="has_separator">True</property>
 
   <child internal-child="vbox">
              <property name="label">gtk-help</property>
              <property name="use_stock">True</property>
              <property name="relief">GTK_RELIEF_NORMAL</property>
+             <property name="focus_on_click">True</property>
              <property name="response_id">-11</property>
            </widget>
          </child>
              <property name="can_default">True</property>
              <property name="can_focus">True</property>
              <property name="relief">GTK_RELIEF_NORMAL</property>
+             <property name="focus_on_click">True</property>
              <property name="response_id">0</property>
              <signal name="clicked" handler="on_select_files_button_clicked" last_modification_time="Wed, 17 Mar 2004 18:15:26 GMT"/>
 
                  <property name="yalign">0.5</property>
                  <property name="xscale">0</property>
                  <property name="yscale">0</property>
+                 <property name="top_padding">0</property>
+                 <property name="bottom_padding">0</property>
+                 <property name="left_padding">0</property>
+                 <property name="right_padding">0</property>
 
                  <child>
                    <widget class="GtkHBox" id="hbox49">
                          <property name="yalign">0.5</property>
                          <property name="xpad">0</property>
                          <property name="ypad">0</property>
+                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                         <property name="width_chars">-1</property>
+                         <property name="single_line_mode">False</property>
+                         <property name="angle">0</property>
                        </widget>
                        <packing>
                          <property name="padding">0</property>
              <property name="label">gtk-cancel</property>
              <property name="use_stock">True</property>
              <property name="relief">GTK_RELIEF_NORMAL</property>
+             <property name="focus_on_click">True</property>
              <property name="response_id">-6</property>
              <signal name="clicked" handler="on_restore_cancel_clicked" last_modification_time="Wed, 17 Mar 2004 18:17:10 GMT"/>
            </widget>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">9</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">2</property>
                  <property name="yalign">0.5</property>
                  <property name="xscale">1</property>
                  <property name="yscale">1</property>
+                 <property name="top_padding">0</property>
+                 <property name="bottom_padding">0</property>
+                 <property name="left_padding">0</property>
+                 <property name="right_padding">0</property>
 
                  <child>
                    <widget class="GtkHBox" id="hbox50">
                              <property name="yalign">0.5</property>
                              <property name="xpad">0</property>
                              <property name="ypad">0</property>
+                             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                             <property name="width_chars">-1</property>
+                             <property name="single_line_mode">False</property>
+                             <property name="angle">0</property>
                            </widget>
                            <packing>
                              <property name="padding">0</property>
                                  <property name="max_length">0</property>
                                  <property name="text" translatable="yes"></property>
                                  <property name="has_frame">True</property>
-                                 <property name="invisible_char" translatable="yes">*</property>
+                                 <property name="invisible_char">*</property>
                                  <property name="activates_default">False</property>
                                  <signal name="changed" handler="on_restore_job_entry_changed" last_modification_time="Wed, 17 Mar 2004 18:21:48 GMT"/>
                                </widget>
                                          <property name="yalign">0.5</property>
                                          <property name="xpad">0</property>
                                          <property name="ypad">0</property>
+                                         <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                         <property name="width_chars">-1</property>
+                                         <property name="single_line_mode">False</property>
+                                         <property name="angle">0</property>
                                        </widget>
                                      </child>
                                    </widget>
                              <property name="yalign">0.5</property>
                              <property name="xpad">0</property>
                              <property name="ypad">0</property>
+                             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                             <property name="width_chars">-1</property>
+                             <property name="single_line_mode">False</property>
+                             <property name="angle">0</property>
                            </widget>
                            <packing>
                              <property name="padding">27</property>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
                          <property name="max_length">0</property>
                          <property name="text" translatable="yes"></property>
                          <property name="has_frame">True</property>
-                         <property name="invisible_char" translatable="yes">*</property>
+                         <property name="invisible_char">*</property>
                          <property name="activates_default">False</property>
                        </widget>
                      </child>
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                              </child>
                            </widget>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">25</property>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
                          <property name="max_length">0</property>
                          <property name="text" translatable="yes"></property>
                          <property name="has_frame">True</property>
-                         <property name="invisible_char" translatable="yes">*</property>
+                         <property name="invisible_char">*</property>
                          <property name="activates_default">False</property>
                        </widget>
                      </child>
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                              </child>
                            </widget>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">23</property>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
                          <property name="max_length">0</property>
                          <property name="text" translatable="yes"></property>
                          <property name="has_frame">True</property>
-                         <property name="invisible_char" translatable="yes">*</property>
+                         <property name="invisible_char">*</property>
                          <property name="activates_default">False</property>
                        </widget>
                      </child>
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                              </child>
                            </widget>
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                              </child>
                            </widget>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">21</property>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">0</property>
                          <property name="max_length">0</property>
                          <property name="text" translatable="yes"></property>
                          <property name="has_frame">True</property>
-                         <property name="invisible_char" translatable="yes">*</property>
+                         <property name="invisible_char">*</property>
                          <property name="activates_default">False</property>
                        </widget>
                      </child>
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                              </child>
                            </widget>
                                  <property name="yalign">0.5</property>
                                  <property name="xpad">0</property>
                                  <property name="ypad">0</property>
+                                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                                 <property name="width_chars">-1</property>
+                                 <property name="single_line_mode">False</property>
+                                 <property name="angle">0</property>
                                </widget>
                              </child>
                            </widget>
                      <property name="yalign">0.5</property>
                      <property name="xpad">0</property>
                      <property name="ypad">0</property>
+                     <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                     <property name="width_chars">-1</property>
+                     <property name="single_line_mode">False</property>
+                     <property name="angle">0</property>
                    </widget>
                    <packing>
                      <property name="padding">21</property>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">0</property>
                  <property name="max_length">0</property>
                  <property name="text" translatable="yes"></property>
                  <property name="has_frame">True</property>
-                 <property name="invisible_char" translatable="yes">*</property>
+                 <property name="invisible_char">*</property>
                  <property name="activates_default">False</property>
                </widget>
                <packing>
                  <property name="yalign">0.5</property>
                  <property name="xpad">0</property>
                  <property name="ypad">0</property>
+                 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+                 <property name="width_chars">-1</property>
+                 <property name="single_line_mode">False</property>
+                 <property name="angle">0</property>
                </widget>
                <packing>
                  <property name="padding">53</property>
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">0</property>
   <property name="modal">False</property>
   <property name="resizable">True</property>
   <property name="destroy_with_parent">False</property>
+  <property name="decorated">True</property>
+  <property name="skip_taskbar_hint">False</property>
+  <property name="skip_pager_hint">False</property>
+  <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+  <property name="focus_on_map">True</property>
   <property name="has_separator">True</property>
 
   <child internal-child="vbox">
              <property name="label">gtk-close</property>
              <property name="use_stock">True</property>
              <property name="relief">GTK_RELIEF_NORMAL</property>
+             <property name="focus_on_click">True</property>
              <property name="response_id">-7</property>
            </widget>
          </child>
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">0</property>
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">0</property>
              <property name="visible">True</property>
              <property name="orientation">GTK_PROGRESS_LEFT_TO_RIGHT</property>
              <property name="fraction">0</property>
-             <property name="pulse_step">0.1</property>
+             <property name="pulse_step">0.10000000149</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
            </widget>
            <packing>
              <property name="padding">0</property>
              <property name="yalign">0.5</property>
              <property name="xpad">0</property>
              <property name="ypad">0</property>
+             <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+             <property name="width_chars">-1</property>
+             <property name="single_line_mode">False</property>
+             <property name="angle">0</property>
            </widget>
            <packing>
              <property name="padding">0</property>
index ac8f8f0ac0b70821592fab6c69ca0f42d3572549..95e94414167d2d70c42efb314c40d43813e137e2 100644 (file)
@@ -40,6 +40,9 @@
 
 static char OKbootstrap[] = "3000 OK bootstrap\n";
 static bool get_job_to_migrate(JCR *jcr);
+struct jobitems;
+static bool regex_find_jobids(JCR *jcr, jobitems *ji, const char *query1,
+                 const char *query2, const char *type);
 
 /* 
  * Called here before the job is run to do the job
@@ -295,17 +298,25 @@ bool do_migration(JCR *jcr)
    return false;
 }
 
+struct jobitems {
+   POOLMEM *JobIds;
+   uint32_t count;
+};
+
 /*
  * Callback handler make list of JobIds
  */
 static int jobid_handler(void *ctx, int num_fields, char **row)
 {
-   POOLMEM *JobIds = (POOLMEM *)ctx;
+   jobitems *ji = (jobitems *)ctx;
 
-   if (JobIds[0] != 0) {
-      pm_strcat(JobIds, ",");
+   if (ji->count == 0) {
+      ji->JobIds[0] = 0;
+   } else {
+      pm_strcat(ji->JobIds, ",");
    }
-   pm_strcat(JobIds, row[0]);
+   pm_strcat(ji->JobIds, row[0]);
+   ji->count++;
    return 0;
 }
 
@@ -341,6 +352,47 @@ static int unique_name_handler(void *ctx, int num_fields, char **row)
    return 0;
 }
 
+/* Get Job names in Pool */
+const char *sql_job =
+   "SELECT DISTINCT Job.Name from Job,Pool"
+   " WHERE Pool.Name='%s' AND Job.PoolId=Pool.PoolId";
+
+/* Get JobIds from regex'ed Job names */
+const char *sql_jobids_from_job =
+   "SELECT DISTINCT Job.JobId FROM Job,Pool"
+   " WHERE Job.Name='%s' AND Pool.Name='%s' AND Job.PoolId=Pool.PoolId"
+   " ORDER by Job.StartTime";
+
+/* Get Client names in Pool */
+const char *sql_client =
+   "SELECT DISTINCT Client.Name from Client,Pool,Job"
+   " WHERE Pool.Name='%s' AND Job.ClientId=Client.ClientId AND"
+   " Job.PoolId=Pool.PoolId";
+
+/* Get JobIds from regex'ed Client names */
+const char *sql_jobids_from_client =
+   "SELECT DISTINCT Job.JobId FROM Job,Pool"
+   " WHERE Client.Name='%s' AND Pool.Name='%s' AND Job.PoolId=Pool.PoolId"
+   " AND Job.ClientId=Client.ClientId "
+   " ORDER by Job.StartTime";
+
+/* Get Volume names in Pool */
+const char *sql_vol = 
+   "SELECT DISTINCT VolumeName FROM Media,Pool WHERE"
+   " VolStatus in ('Full','Used','Error') AND"
+   " Media.PoolId=Pool.PoolId AND Pool.Name='%s'";
+
+/* Get JobIds from regex'ed Volume names */
+const char *sql_jobids_from_vol =
+   "SELECT DISTINCT Job.JobId FROM Media,JobMedia,Job"
+   " WHERE Media.VolumeName='%s' AND Media.MediaId=JobMedia.MediaId"
+   " AND JobMedia.JobId=Job.JobId" 
+   " ORDER by Job.StartTime";
+   
+
+
+
+
 const char *sql_smallest_vol = 
    "SELECT MediaId FROM Media,Pool WHERE"
    " VolStatus in ('Full','Used','Error') AND"
@@ -369,31 +421,12 @@ const char *sql_vol_bytes =
    " Media.PoolId=Pool.PoolId AND Pool.Name='%s' AND"
    " VolBytes<%s ORDER BY LastWritten ASC LIMIT 1";
 
-const char *sql_client =
-   "SELECT DISTINCT Client.Name from Client,Pool,Media,Job,JobMedia "
-   " WHERE Media.PoolId=Pool.PoolId AND Pool.Name='%s' AND"
-   " JobMedia.JobId=Job.JobId AND Job.ClientId=Client.ClientId AND"
-   " Job.PoolId=Media.PoolId";
-
-const char *sql_job =
-   "SELECT DISTINCT Job.Name from Job,Pool"
-   " WHERE Pool.Name='%s' AND Job.PoolId=Pool.PoolId";
-
-const char *sql_jobids_from_job =
-   "SELECT DISTINCT Job.JobId FROM Job,Pool"
-   " WHERE Job.Name='%s' AND Pool.Name='%s' AND Job.PoolId=Pool.PoolId"
-   " ORDER by Job.StartTime";
-
 
 const char *sql_ujobid =
    "SELECT DISTINCT Job.Job from Client,Pool,Media,Job,JobMedia "
    " WHERE Media.PoolId=Pool.PoolId AND Pool.Name='%s' AND"
    " JobMedia.JobId=Job.JobId AND Job.PoolId=Media.PoolId";
 
-const char *sql_vol = 
-   "SELECT DISTINCT VolumeName FROM Media,Pool WHERE"
-   " VolStatus in ('Full','Used','Error') AND"
-   " Media.PoolId=Pool.PoolId AND Pool.Name='%s'";
 
 
 /*
@@ -404,245 +437,76 @@ static bool get_job_to_migrate(JCR *jcr)
 {
    char ed1[30];
    POOL_MEM query(PM_MESSAGE);
-   POOLMEM *JobIds = get_pool_memory(PM_MESSAGE);
    JobId_t JobId;
-   int stat, rc;
+   int stat;
    char *p;
-   dlist *item_chain;
-   uitem *item = NULL;
-   uitem *last_item = NULL;
-   char prbuf[500];
-   regex_t preg;
+   jobitems ji;
+
+   ji.JobIds = get_pool_memory(PM_MESSAGE);
 
-   JobIds[0] = 0;
+   ji.count = 0;
    if (jcr->MigrateJobId != 0) {
       jcr->previous_jr.JobId = jcr->MigrateJobId;
       Dmsg1(000, "previous jobid=%u\n", jcr->MigrateJobId);
    } else {
       switch (jcr->job->selection_type) {
       case MT_JOB:
-         if (!jcr->job->selection_pattern) {
-            Jmsg(jcr, M_FATAL, 0, _("No Migration Job selection pattern specified.\n"));
+         if (!regex_find_jobids(jcr, &ji, sql_job, sql_jobids_from_job, "Job")) {
             goto bail_out;
-         }
-         Dmsg1(000, "Job regex=%s\n", jcr->job->selection_pattern);
-         /* Complie regex expression */
-         rc = regcomp(&preg, jcr->job->selection_pattern, REG_EXTENDED);
-         if (rc != 0) {
-            regerror(rc, &preg, prbuf, sizeof(prbuf));
-            Jmsg(jcr, M_FATAL, 0, _("Could not compile regex pattern \"%s\" ERR=%s\n"),
-                 jcr->job->selection_pattern, prbuf);
+         } 
+         break;
+      case MT_CLIENT:
+         if (!regex_find_jobids(jcr, &ji, sql_client, 
+              sql_jobids_from_client, "Client")) {
             goto bail_out;
-         }
-         item_chain = New(dlist(item, &item->link));
-         /* Basic query for Job names */
-         Mmsg(query, sql_job, jcr->pool->hdr.name);
-         Dmsg1(000, "query=%s\n", query.c_str());
-         if (!db_sql_query(jcr->db, query.c_str(), unique_name_handler, 
-              (void *)item_chain)) {
-            Jmsg(jcr, M_FATAL, 0,
-                 _("SQL to get Job failed. ERR=%s\n"), db_strerror(jcr->db));
+         } 
+         break;
+      case MT_VOLUME:
+         if (!regex_find_jobids(jcr, &ji, sql_vol, 
+             sql_jobids_from_vol, "Volume")) {
             goto bail_out;
-         }
-         /* Now apply the regex to the job names and remove any item not matched */
-         foreach_dlist(item, item_chain) {
-            const int nmatch = 30;
-            regmatch_t pmatch[nmatch];
-            if (last_item) {
-               Dmsg1(000, "Remove item %s\n", last_item->item);
-               free(last_item->item);
-               item_chain->remove(last_item);
-            }
-            Dmsg1(000, "Jobitem=%s\n", item->item);
-            rc = regexec(&preg, item->item, nmatch, pmatch,  0);
-            if (rc == 0) {
-               last_item = NULL;   /* keep this one */
-            } else {   
-               last_item = item;
-            }
-         }
-         if (last_item) {
-            free(last_item->item);
-            Dmsg1(000, "Remove item %s\n", last_item->item);
-            item_chain->remove(last_item);
-         }
-         regfree(&preg);
-         /* 
-          * At this point, we have a list of items in item_chain
-          *  that have been matched by the regex, so now we need
-          *  to look up their jobids.
-          */
-         JobIds[0] = 0;
-         foreach_dlist(item, item_chain) {
-            Dmsg1(000, "Got Job: %s\n", item->item);
-            Mmsg(query, sql_jobids_from_job, item->item, jcr->pool->hdr.name);
-            if (!db_sql_query(jcr->db, query.c_str(), jobid_handler, (void *)JobIds)) {
-               Jmsg(jcr, M_FATAL, 0,
-                    _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
-               goto bail_out;
-            }
-         }
-         if (JobIds[0] == 0) {
-            Jmsg(jcr, M_INFO, 0, _("No jobs found to migrate.\n"));
-            goto ok_out;
-         }
-         Dmsg1(000, "Job Jobids=%s\n", JobIds);
-         delete item_chain;
+         } 
          break;
-      case MT_SMALLEST_VOL:
-         Mmsg(query, sql_smallest_vol, jcr->pool->hdr.name);
-         JobIds[0] = 0;
-         if (!db_sql_query(jcr->db, query.c_str(), jobid_handler, (void *)JobIds)) {
-            Jmsg(jcr, M_FATAL, 0,
-                 _("SQL to get Volume failed. ERR=%s\n"), db_strerror(jcr->db));
+      case MT_SQLQUERY:
+         if (!jcr->job->selection_pattern) {
+            Jmsg(jcr, M_FATAL, 0, _("No Migration SQL selection pattern specified.\n"));
             goto bail_out;
          }
-         if (JobIds[0] == 0) {
-            Jmsg(jcr, M_INFO, 0, _("No Volumes found to migrate.\n"));
-            goto ok_out;
-         }
-         /* ***FIXME*** must loop over JobIds */
-         Mmsg(query, sql_jobids_from_mediaid, JobIds);
-         JobIds[0] = 0;
-         if (!db_sql_query(jcr->db, query.c_str(), jobid_handler, (void *)JobIds)) {
+         Dmsg1(000, "SQL=%s\n", jcr->job->selection_pattern);
+         if (!db_sql_query(jcr->db, jcr->job->selection_pattern,
+              jobid_handler, (void *)&ji)) {
             Jmsg(jcr, M_FATAL, 0,
-                 _("SQL to get Volume failed. ERR=%s\n"), db_strerror(jcr->db));
+                 _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
             goto bail_out;
          }
-         Dmsg1(000, "Smallest Vol Jobids=%s\n", JobIds);
+         break;
+
+
+/***** Below not implemented yet *********/
+      case MT_SMALLEST_VOL:
+         Mmsg(query, sql_smallest_vol, jcr->pool->hdr.name);
+//       Mmsg(query2, sql_jobids_from_mediaid, JobIds);
+//       Dmsg1(000, "Smallest Vol Jobids=%s\n", JobIds);
          break;
       case MT_OLDEST_VOL:
          Mmsg(query, sql_oldest_vol, jcr->pool->hdr.name);
-         JobIds[0] = 0;
-         if (!db_sql_query(jcr->db, query.c_str(), jobid_handler, (void *)JobIds)) {
-            Jmsg(jcr, M_FATAL, 0,
-                 _("SQL to get Volume failed. ERR=%s\n"), db_strerror(jcr->db));
-            goto bail_out;
-         }
-         if (JobIds[0] == 0) {
-            Jmsg(jcr, M_INFO, 0, _("No Volume found to migrate.\n"));
-            goto ok_out;
-         }
-         Mmsg(query, sql_jobids_from_mediaid, JobIds);
-         JobIds[0] = 0;
-         if (!db_sql_query(jcr->db, query.c_str(), jobid_handler, (void *)JobIds)) {
-            Jmsg(jcr, M_FATAL, 0,
-                 _("SQL to get Volume failed. ERR=%s\n"), db_strerror(jcr->db));
-            goto bail_out;
-         }
-         Dmsg1(000, "Oldest Vol Jobids=%s\n", JobIds);
+//       Mmsg(query2, sql_jobids_from_mediaid, JobIds);
+//       Dmsg1(000, "Oldest Vol Jobids=%s\n", JobIds);
          break;
       case MT_POOL_OCCUPANCY:
          Mmsg(query, sql_pool_bytes, jcr->pool->hdr.name);
-         JobIds[0] = 0;
-         if (!db_sql_query(jcr->db, query.c_str(), jobid_handler, (void *)JobIds)) {
-            Jmsg(jcr, M_FATAL, 0,
-                 _("SQL to get Volume failed. ERR=%s\n"), db_strerror(jcr->db));
-            goto bail_out;
-         }
-         if (JobIds[0] == 0) {
-            Jmsg(jcr, M_INFO, 0, _("No jobs found to migrate.\n"));
-            goto ok_out;
-         }
-         Dmsg1(000, "Pool Occupancy Jobids=%s\n", JobIds);
+//       Dmsg1(000, "Pool Occupancy Jobids=%s\n", JobIds);
          break;
       case MT_POOL_TIME:
          Dmsg0(000, "Pool time not implemented\n");
          break;
-      case MT_CLIENT:
-         if (!jcr->job->selection_pattern) {
-            Jmsg(jcr, M_FATAL, 0, _("No Migration Client selection pattern specified.\n"));
-            goto bail_out;
-         }
-         Dmsg1(000, "Client regex=%s\n", jcr->job->selection_pattern);
-         rc = regcomp(&preg, jcr->job->selection_pattern, REG_EXTENDED);
-         if (rc != 0) {
-            regerror(rc, &preg, prbuf, sizeof(prbuf));
-            Jmsg(jcr, M_FATAL, 0, _("Could not compile regex pattern \"%s\" ERR=%s\n"),
-                 jcr->job->selection_pattern, prbuf);
-         }
-         item_chain = New(dlist(item, &item->link));
-         Mmsg(query, sql_client, jcr->pool->hdr.name);
-         Dmsg1(100, "query=%s\n", query.c_str());
-         if (!db_sql_query(jcr->db, query.c_str(), unique_name_handler, 
-              (void *)item_chain)) {
-            Jmsg(jcr, M_FATAL, 0,
-                 _("SQL to get Client failed. ERR=%s\n"), db_strerror(jcr->db));
-            goto bail_out;
-         }
-         /* Now apply the regex and create the jobs */
-         foreach_dlist(item, item_chain) {
-            const int nmatch = 30;
-            regmatch_t pmatch[nmatch];
-            rc = regexec(&preg, item->item, nmatch, pmatch,  0);
-            if (rc == 0) {
-               Dmsg1(000, "Do Client=%s\n", item->item);
-            }
-            free(item->item);
-         }
-         regfree(&preg);
-         delete item_chain;
-         break;
-      case MT_VOLUME:
-         if (!jcr->job->selection_pattern) {
-            Jmsg(jcr, M_FATAL, 0, _("No Migration Volume selection pattern specified.\n"));
-            goto bail_out;
-         }
-         Dmsg1(000, "Volume regex=%s\n", jcr->job->selection_pattern);
-         rc = regcomp(&preg, jcr->job->selection_pattern, REG_EXTENDED);
-         if (rc != 0) {
-            regerror(rc, &preg, prbuf, sizeof(prbuf));
-            Jmsg(jcr, M_FATAL, 0, _("Could not compile regex pattern \"%s\" ERR=%s\n"),
-                 jcr->job->selection_pattern, prbuf);
-         }
-         item_chain = New(dlist(item, &item->link));
-         Mmsg(query, sql_vol, jcr->pool->hdr.name);
-         Dmsg1(100, "query=%s\n", query.c_str());
-         if (!db_sql_query(jcr->db, query.c_str(), unique_name_handler, 
-              (void *)item_chain)) {
-            Jmsg(jcr, M_FATAL, 0,
-                 _("SQL to get Job failed. ERR=%s\n"), db_strerror(jcr->db));
-            goto bail_out;
-         }
-         /* Now apply the regex and create the jobs */
-         foreach_dlist(item, item_chain) {
-            const int nmatch = 30;
-            regmatch_t pmatch[nmatch];
-            rc = regexec(&preg, item->item, nmatch, pmatch,  0);
-            if (rc == 0) {
-               Dmsg1(000, "Do Vol=%s\n", item->item);
-            }
-            free(item->item);
-         }
-         regfree(&preg);
-         delete item_chain;
-         break;
-      case MT_SQLQUERY:
-         JobIds[0] = 0;
-         if (!jcr->job->selection_pattern) {
-            Jmsg(jcr, M_FATAL, 0, _("No Migration SQL selection pattern specified.\n"));
-            goto bail_out;
-         }
-         Dmsg1(000, "SQL=%s\n", jcr->job->selection_pattern);
-         if (!db_sql_query(jcr->db, query.c_str(), jobid_handler, (void *)JobIds)) {
-            Jmsg(jcr, M_FATAL, 0,
-                 _("SQL to get Volume failed. ERR=%s\n"), db_strerror(jcr->db));
-            goto bail_out;
-         }
-         if (JobIds[0] == 0) {
-            Jmsg(jcr, M_INFO, 0, _("No jobs found to migrate.\n"));
-            goto ok_out;
-         }
-         Dmsg1(000, "Jobids=%s\n", JobIds);
-         goto bail_out;
-         break;
       default:
          Jmsg(jcr, M_FATAL, 0, _("Unknown Migration Selection Type.\n"));
          goto bail_out;
       }
    }
 
-   p = JobIds;
+   p = ji.JobIds;
    JobId = 0;
    stat = get_next_jobid_from_list(&p, &JobId);
    Dmsg2(000, "get_next_jobid stat=%d JobId=%u\n", stat, JobId);
@@ -667,15 +531,98 @@ static bool get_job_to_migrate(JCR *jcr)
       jcr->previous_jr.JobId, jcr->previous_jr.Job);
 
 ok_out:
-   free_pool_memory(JobIds);
+   free_pool_memory(ji.JobIds);
    return true;
 
 bail_out:
-   free_pool_memory(JobIds);
+   free_pool_memory(ji.JobIds);
    return false;
 }
 
 
+static bool regex_find_jobids(JCR *jcr, jobitems *ji, const char *query1,
+                 const char *query2, const char *type) {
+   dlist *item_chain;
+   uitem *item = NULL;
+   uitem *last_item = NULL;
+   regex_t preg;
+   char prbuf[500];
+   int rc;
+   bool ok = false;
+   POOL_MEM query(PM_MESSAGE);
+
+   item_chain = New(dlist(item, &item->link));
+   if (!jcr->job->selection_pattern) {
+      Jmsg(jcr, M_FATAL, 0, _("No Migration %s selection pattern specified.\n"),
+         type);
+      goto bail_out;
+   }
+   Dmsg1(000, "regex=%s\n", jcr->job->selection_pattern);
+   /* Compile regex expression */
+   rc = regcomp(&preg, jcr->job->selection_pattern, REG_EXTENDED);
+   if (rc != 0) {
+      regerror(rc, &preg, prbuf, sizeof(prbuf));
+      Jmsg(jcr, M_FATAL, 0, _("Could not compile regex pattern \"%s\" ERR=%s\n"),
+           jcr->job->selection_pattern, prbuf);
+      goto bail_out;
+   }
+   /* Basic query for names */
+   Mmsg(query, query1, jcr->pool->hdr.name);
+   if (!db_sql_query(jcr->db, query.c_str(), unique_name_handler, 
+        (void *)item_chain)) {
+      Jmsg(jcr, M_FATAL, 0,
+           _("SQL to get %s failed. ERR=%s\n"), type, db_strerror(jcr->db));
+      goto bail_out;
+   }
+   /* Now apply the regex to the names and remove any item not matched */
+   foreach_dlist(item, item_chain) {
+      const int nmatch = 30;
+      regmatch_t pmatch[nmatch];
+      if (last_item) {
+         Dmsg1(000, "Remove item %s\n", last_item->item);
+         free(last_item->item);
+         item_chain->remove(last_item);
+      }
+      Dmsg1(000, "Jobitem=%s\n", item->item);
+      rc = regexec(&preg, item->item, nmatch, pmatch,  0);
+      if (rc == 0) {
+         last_item = NULL;   /* keep this one */
+      } else {   
+         last_item = item;
+      }
+   }
+   if (last_item) {
+      free(last_item->item);
+      Dmsg1(000, "Remove item %s\n", last_item->item);
+      item_chain->remove(last_item);
+   }
+   regfree(&preg);
+   /* 
+    * At this point, we have a list of items in item_chain
+    *  that have been matched by the regex, so now we need
+    *  to look up their jobids.
+    */
+   ji->count = 0;
+   foreach_dlist(item, item_chain) {
+      Dmsg1(000, "Got Job: %s\n", item->item);
+      Mmsg(query, query2, item->item, jcr->pool->hdr.name);
+      if (!db_sql_query(jcr->db, query.c_str(), jobid_handler, (void *)&ji)) {
+         Jmsg(jcr, M_FATAL, 0,
+              _("SQL failed. ERR=%s\n"), db_strerror(jcr->db));
+         goto bail_out;
+      }
+   }
+   if (ji->count == 0) {
+      Jmsg(jcr, M_INFO, 0, _("No %ss found to migrate.\n"), type);
+      ok = true;
+   }
+bail_out:
+   Dmsg1(000, "Job Jobids=%s\n", ji->JobIds);
+   delete item_chain;
+   return ok;
+}
+
+
 /*
  * Release resources allocated during backup.
  */
index b59411dfb4ca6f4b03e5d68178cc60952dc7b959..08b95d485194dd35d49b4f7afe0e1e16035a7611 100644 (file)
@@ -23,7 +23,7 @@
 
 #include "bacula.h"
 
-const bool compatible = true;
+const bool compatible = false;
 
 #ifdef TEST_MODE
 #include <glob.h>
index eff170455ee0d65fe1e22cdfdfa4d8b5437ac7be..46a72d95d6ae4a46f9006cdeebdb6138a0347bf0 100644 (file)
@@ -61,7 +61,7 @@ bool status_cmd(JCR *jcr)
    DEVICE *dev;
    BSOCK *user = jcr->dir_bsock;
    char dt[MAX_TIME_LENGTH];
-   char b1[30], b2[30], b3[30];
+   char b1[35], b2[35], b3[35], b4[35];
    int bpb;
 
    bnet_fsend(user, _("\n%s Version: %s (%s) %s %s %s\n"), my_name,
@@ -73,14 +73,11 @@ bool status_cmd(JCR *jcr)
    else {
       bnet_fsend(user, _("Daemon started %s, %d Jobs run since started.\n"), dt, num_jobs_run);
    }
-   if (debug_level > 0) {
-      char b1[35], b2[35], b3[35], b4[35];
-      bnet_fsend(user, _(" Heap: bytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"),
-            edit_uint64_with_commas(sm_bytes, b1),
-            edit_uint64_with_commas(sm_max_bytes, b2),
-            edit_uint64_with_commas(sm_buffers, b3),
-            edit_uint64_with_commas(sm_max_buffers, b4));
-   }
+   bnet_fsend(user, _(" Heap: bytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"),
+         edit_uint64_with_commas(sm_bytes, b1),
+         edit_uint64_with_commas(sm_max_bytes, b2),
+         edit_uint64_with_commas(sm_buffers, b3),
+         edit_uint64_with_commas(sm_max_buffers, b4));
 
    /*
     * List running jobs
index 703fd04794797a63c4acf2e3770a68577bc0ae1a..d56476dcc82e17fe60643959df8878f11bbba82f 100644 (file)
@@ -3,9 +3,9 @@
  */
 
 #undef  VERSION
-#define VERSION "1.39.9"
-#define BDATE   "22 April 2006"
-#define LSMDATE "22Apr06"
+#define VERSION "1.39.10"
+#define BDATE   "23 April 2006"
+#define LSMDATE "23Apr06"
 
 /* Debug flags */
 #undef  DEBUG