Commit Graph

2238 Commits

Author SHA1 Message Date
Phillip Susi 89de9a5026 Add proper cancel support (#601239)
Interested operations can now connect a signal to their OperationDetail
to be notified of a cancelation request.  The internal copy/move code
will now cleanly stop on cancelation, allowing the partition to be
rolled back to its previous state.  This makes canceling a move
perfectly safe.

After clicking cancel, the button changes to "Force Cancel" and is
disabled for 5 seconds.  Operations that are safe to cancel will do so
and those that are not will continue to run.  Clicking force cancel
asks operations to cancel, even if doing so is unsafe.  For the
internal copy/move algorithm, canceling is always safe because an
error results in a rollback operation.  Canceling the rollback is
unsafe.  For external commands, filesystem modules may indicate
that the command is safe to cancel or not.  Canceled commands will
be terminated with SIGINT.

As a result of the new safe cancel vs force cancel distinction, the
scary warning about cancl causing corruption has been moved to
after clicking the force cancel button.

Part of Bug #601239 - Please allow 'Cancel after current operation'
2013-03-11 18:40:31 -06:00
Phillip Susi bd9e16f22f Thread the internal copy algorithm (#685740)
Have the copy code create a background thread to do the actual copying so
that it won't block the main loop.

Part of Bug 685740 - Refactor to use asynchronous command execution
2013-03-11 18:40:31 -06:00
Phillip Susi 52a2a9b00a Reduce threading (#685740)
Win_Gparted and Dialog_Progress were creating threads to perform most
functions in the background.  Most of the time, the only reason the
threads blocked was to execute an external command.  The external command
execution has been changed to spawn the command asynchronously and wait
for completion with a nested main loop.  While waiting for completion,
the pipe output is captured via events.  In the future, this will allow
for it to be parsed in real time to obtain progress information.

Those tasks in GParted_Core that still block now spawn a background thread
and wait for it to complete with a nested main loop to avoid hanging the
gui.

Part of Bug #685740 - Refactor to use asynchronous command execution
2013-03-11 18:40:31 -06:00
Phillip Susi 2706f0174a Remove mtoolsrc file
fat16 and fat32 were creating a temp mtoolsrc file to configure the
command to reference a drive letter and ignore certain errors.  They have
been changed to pass this information via the command line and environment
instead.
2013-03-11 18:40:31 -06:00
Phillip Susi ddd92cf86a Switch Dialog_Progress to use Glib thread instead of pthread (#601239)
Dialog_Progress was using pthread_create() so that it could later
pthread_cancel() the thread.  pthread_cancel() is wildly unsafe and full
of errors.  Changed to use Glib's threads like the rest, and only cancel
between operations.  Because it can take some time to cancel, disable
the cancel button once it has been clicked once.

Bug 601239 - Please allow 'Cancel after current operation'
2013-03-11 18:40:31 -06:00
Phillip Susi 124342e979 Use a full fledged nested main loop while waiting and pulsing progress bars (#685740)
Win_Gparted and Dialog_Progress were looping on Gtk::Main::events_pending()
and iteration() with usleeps in between.  Use a full mainloop instead and
a proper timeout to trigger pulsebar updates instead of usleeps.

Part of Bug 685740 - Refactor to use asynchronous command execution
2013-03-11 18:40:31 -06:00
Phillip Susi f5a5c9cdb9 Remove gdk_threads_enter/exit (#685740)
Use of these functions is depreciated and making gtk calls in a background
thread still sometimes causes deadlocks or crashes.  Change ped exception
handler to instead use an idle function to force the main thread to display
the dialog box.

Part of Bug 685740 - Refactor to use asynchronous command execution
2013-03-11 18:40:31 -06:00
Dušan Kazik 08924d3796 Updated slovak translation 2013-03-05 17:15:58 +01:00
Curtis Gedak 34da790ef3 Fix move partition right to left shrinks partition 1 MiB (#695078)
When moving a MiB aligned primary partition from right to left, the
resulting partition was unexpectedly 1 MiB smaller in size.

From further testing, this occurred only if the move boundaries
overlapped the original partition boundaries.

In cases where the move did not overlap the original partition
boundaries, then the size remained the same.

Closes Bug #695078 - Move of MiB aligned partition right to left
                     yields unexpected shrink of 1 MiB
2013-03-04 18:32:01 +00:00
Christian Kirbach ff1612cce5 Updated German translation 2013-03-03 00:19:49 +01:00
Curtis Gedak ed236a325c Add docbook style sheets to README to speed up build time
The w3C has implemented measures to discourage excessive DTD traffic
and to encourage caching the XML.  See,

The W3C servers are slow to return DTDs. Is the delay intentional?
http://www.w3.org/Help/Webmaster.html#slowdtd

Caching XML data at install time
http://www.w3.org/QA/2008/09/caching_xml_data_at_install_ti.html

Many GNU/Linux distributions conveniently include these docbook
style sheets in a package.  This package has been added to the
dependencies for building from source.

Also added and updated are commands related to installation on
OpenSUSE.
2013-02-24 11:47:14 -07:00
Curtis Gedak a0e0f1c5d9 Update copyright year 2013-02-21 10:43:14 -07:00
Curtis Gedak 0fa00277fc Update AUTHORS
Provide credit for patch by Jan Claeys
2013-02-21 10:40:02 -07:00
Jan Claeys cdb6cbfa80 Work around faulty "complete disks" detection in mkdosfs (#693955)
Add -I option to 'mkdosfs' command to work around faulty detection of
"complete disks" vs. "partitions".

Bug #693955 - mkdosfs detects "complete disk" vs. "partition" incorrectly

Thanks to Kano for reporting this!

(This will also be needed if GParted ever allows formatting a device without
partitioning it.)
2013-02-21 10:29:01 -07:00
Piotr Drąg 140b4953ba Updated Polish translation 2013-02-17 19:09:27 +01:00
Muhammet Kara 9d0d44d54a [l10n] Updated Turkish translation 2013-02-06 23:10:47 +02:00
Reinout van Schouwen 2970f68f8b Updated Dutch translation by Paulus Santané (laudaka)
<laudaka@xs4all.nl>
2013-01-22 01:01:14 +01:00
Mike Fleetwood 75eba94a6c Prevent crash when using an unknown locale (#692049)
When GParted is run with a locale the OS doesn't know it crashes.
Reapply original fix.

    # LANG=xx_XX.UTF-8 ~mike/bin/gpartedbin

    (process:20385): Gtk-WARNING **: Locale not supported by C library.
            Using the fallback 'C' locale.
    ======================
    libparted : 3.1
    ======================

    (gpartedbin:20385): glibmm-ERROR **:
    unhandled exception (type std::exception) in signal handler:
    what: locale::facet::_S_create_c_locale name not valid

    Trace/breakpoint trap (core dumped)

Original bug:
    Bug #157871 - gparted 0.0.6 segfaults on start
First fix:
    commit a98126d69b
    quick 'fix' for crashers in some locales (#157871) basicly the same +
Accidentally reintroduced by:
    commit a739afc9a1
    Update String::ucompose library to version 1.0.5

Bug #692049 - Troubles with some locales
2013-01-20 11:02:41 -07:00
Curtis Gedak 90337f157a Update AUTHORS
Provide credit for patch by Mathieu Dupuy
2013-01-12 14:16:13 -07:00
Mathieu Dupuy b7393be268 Argument vector usage improvement (#689689)
Minor change to filling user_devices vector.

Closes Bug #689689 - argument vector filling improvement proposal
2013-01-12 14:07:48 -07:00
Curtis Gedak 81682eaf29 Provide credit in About dialog for contributions
Recognize contributions by Sinlu Bes.
2013-01-02 11:53:50 -07:00
Curtis Gedak a6e16ec606 Update AUTHORS
Provide credit for patches by Sinlu Bes and Mike Fleetwood
2013-01-02 11:49:34 -07:00
Mike Fleetwood d0fec5e26f Remove redundant code trimming labels to length before use (#689318)
No longer need to trim fat16, fat32 and xfs labels as all labels are
limited to their maximum lengths during entry.

Bug #689318 - filesystem type specific support for partition name
              maximum length
2013-01-02 11:33:32 -07:00
Mike Fleetwood 18941e24d3 Avoid reading trailing junk for a reiser4 label (#689318)
For a reiser4 file system with exactly the maximum size 16 character
label, debugfs.reiser4 may include junk at the end of the label it
prints.  (It reads the label into a 16 character array and prints it as
a string, but there isn't a nul terminating character).

    # mkfs.reiser4 --yes --label abcdefghij123456 /dev/sda13
    # debugfs.reiser4 /dev/sda13 2> /dev/null | grep label:
    label:          abcdefghij123456!

Trim the read label to at most 16 characters.

Bug #689318 - filesystem type specific support for partition name
              maximum length
2013-01-02 11:33:32 -07:00
Pau Iranzo aed5ef2b6f [l10n] Updated Catalan translation 2012-12-31 14:07:12 +01:00
sinlu bes ecb1f57594 Make the partition label length dependent from the file system (#689318)
fixes Bug #689318 - filesystem type specific support for partition name
                    maximum length
2012-12-30 16:55:03 +00:00
Yaron Shahrabani 2eb50f9590 Updated Hebrew translation. 2012-12-28 14:33:58 +02:00
Yuri Myasoedov 6edf9d7000 Updated Russian translation 2012-12-14 22:35:02 +04:00
Curtis Gedak c9e6dca42e Append -git to version for continuing development 2012-12-12 11:19:14 -07:00
Curtis Gedak 42705496a6 ========== gparted-0.14.1 ========== 2012-12-12 10:02:48 -07:00
Dušan Kazik 70be3961f2 Updated slovak translation 2012-12-11 23:11:45 +01:00
Curtis Gedak de99c530d4 Remove SWRaid method as it is no longer needed (#678379)
Active Linux software RAID devices are detected in the
Proc_Partitions_Info method.  Hence the SWRaid method is no longer
required.

Removal of the SWRaid method fixes the problem with the error message:

  Could not stat device /dev/md/0 - No such file or directory

This fixes the problem because we no longer use "mdadm --examine
--scan" in an attempt to detect Linux software RAID devices.  The
mdadm command was returning device names such as /dev/md/0, which are
incorrect for GParted.

NOTE:  With this change, GParted no longer requires the mdadm command
       to detect Linux software RAID devices.

Closes Bug #678379 - Could not stat device /dev/md/0 - No such file or
                     directory
2012-12-05 09:51:50 -07:00
Curtis Gedak c600095912 Add regexp for Linux SW RAID devices in /proc/partitions (#678379)
Add regular expression to detect the device entry only (e.g., md127)
and not the partitions (e.g., md127p1).

Linux software RAID devices are listed in /proc/partitions as follows:

# cat /proc/partitions
major minor  #blocks  name
   9   127     523968 md127
 259     0     131072 md127p1
 259     1     262144 md127p2

Part of Bug #678379 - Could not stat device /dev/md/0 - No such file
                      or directory
2012-12-05 09:51:50 -07:00
Curtis Gedak f003b3c4f2 Tighten up regexp for HP Smart Array Devices
HP Smart Array Devices are listed in /proc/partitions as follows:

major minor  #blocks  name
 104     0  143338560 cciss/c0d0
 104     1     104391 cciss/c0d0p1
 104     2      24097 cciss/c0d0p2
 104     3  143203410 cciss/c0d0p3

The previous regular expression was too broad, and would match many
other forms, including Linux software RAID devices such as md127.

Linux software RAID devices are listed in /proc/partitions as follows:

major minor  #blocks  name
   9   127     523968 md127
 259     0     131072 md127p1
 259     1     262144 md127p2

This problem with the regexp was discovered while investigating a
problem with Linux software RAID device detection.

The regular expression has been tightened up to match the following
hardware RAID controllers:

  Compaq/HP Smartarray RAID controller
    E.g., device = /dev/cciss/c0d0, partition = /dev/cciss/c0d0p1
    (linux-x.y.z/Documentation/blockdev/cciss.txt)

  Compaq SMART2 Intelligent Disk Array controller
    E.g., device = /dev/ida/c0d0, partition = /dev/ida/c0d0p1
    (linux-x.y.z/Documentation/blockdev/cpqarray.txt)

  Mylex DAC960/AcceleRAID/eXtremeRAID PCI RAID Controllers
    E.g., device = /dev/rd/c0d0,  partition = /dev/rd/c0d0p1
    (linux-x.y.z/Documentation/blockdev/README.DAC960)

Related to Bug #678379 - Could not stat device /dev/md/0 - No such
                         file or directory
2012-12-05 09:51:50 -07:00
Curtis Gedak 83ccbce199 Fix logical partition grow overlaps extended partition end (#686668)
In certain situations with a mixture of partition alignments, the MiB
alignment option would try to set the end of a logical partition
beyond the end of the extended partition.  This, of course, is an
invalid partition geometry and the libparted library correctly reports
failure when this is attempted.

This enhancement to MiB alignment adds a check to see if the end of
the logical partition would be beyond the extended partition, and
adjusts the end of the logical partition if required.

Closes Bug #686668 - Growing logical partition overlaps end of
                     extended partition
2012-12-03 13:07:53 +00:00
Curtis Gedak fd96328920 Prevent file system grow when partition grow fails (#686668)
Prior to this enhancement, GParted ignored the status of the partition
grow operation, and attempted to grow the file system.

Now we check the status of the partition grow operation prior to
growing the file system.

Part of Bug #686668 - Growing logical partition overlaps end of
                      extended partition
2012-12-03 13:07:53 +00:00
Curtis Gedak c17959e200 Provide credit in About dialog for contributions
Recognize contributions by Matthias Gehre.
2012-11-30 13:32:31 -07:00
Curtis Gedak c22dec619b Update AUTHORS
Provide credit for patches by Matthias Gehre to clean up GParted Core
global variables.
2012-11-30 13:26:28 -07:00
Curtis Gedak cffe5c0626 Add *.mo to .gitignore file 2012-11-30 13:13:54 -07:00
Mike Fleetwood f5c153099b Treat reiser4 label "<none>" as meaning blank (#688760)
A reiser4 file system with a blank label is displayed as "<none>" by
debugfs.reiser4 and therefore GParted too.

    # mkfs.reiser4 -y -L "" -f /dev/sda14
    # debugfs.reiser4 /dev/sda14 2> /dev/null | grep label:
    label:		<none>

Additionally when displaying the Partition Information the following
warning is written to the terminal:

    (gpartedbin:19609): Gtk-WARNING **: Failed to set text from markup
    due to error parsing markup: Error on line 1 char 23: Element
    'markup' was closed, but the currently open element is 'none'

Fix by just assuming "<none>" always means blank.  If someone really
does set the label to "<none>" it won't be displayed.  This is equlivant
to how btrfs and nilfs2 are already handled.

Closes bug 688760 - GParted displays blank resier4 label as <none>
2012-11-21 10:45:44 -07:00
Dimitris Spingos d9ddd2c0f5 Updated Greek translation 2012-11-15 12:35:48 +02:00
Curtis Gedak 88a2939880 Use gksudo, if available, in gparted.desktop
If gksu was installed on a KDE system (tested with kubuntu 12.04 LTS),
then gksu would prompt for the password three times and always fail to
load gparted.  In a prior version of kubuntu 8.04 LTS, gksu would
properly invoke gparted from the "K --> System --> GParted" menu
entry.

Since gksudo also works on KDE (and kubuntu 12.04 LTS), add gksudo to
the root privilege invocation search list ahead of gksu.

Note that gksu has been kept for backwards compatibility with systems
that provide only gksu and not gksudo.

Related to Bug #687813 - Use kdesudo on KDE, as gksu is not
                         installed by default
2012-11-11 12:19:39 +00:00
Curtis Gedak ec4a2ac09b Use kdesudo in gparted.desktop when gksu is not installed (#687813)
Normally gksu is not installed by default on KDE systems.  When
compiling and installing gparted on a KDE system without gksu, the
desktop menu entry would try to run gparted as the user, and not with
root privileges.

To fix this, add kdesudo to the search list of root privilege
invocation programs.

Closes Bug #687813 - Use kdesudo on KDE, as gksu is not installed by
                     default
2012-11-11 12:19:39 +00:00
Matthias Gehre 1f3b11748e Remove GParted_Core::p_filesystem (#683149)
Bug #683149 - Cleanup(?): Remove lp_device and lp_disk from GParted_Core
2012-11-11 11:47:59 +00:00
Matthias Gehre 52af838df2 Remove GParted_Core::fs (#683149)
Bug #683149 - Cleanup(?): Remove lp_device and lp_disk from GParted_Core
2012-11-11 11:47:59 +00:00
Matthias Gehre d2ced08355 Remove GParted_Core::partition_temp (#683149)
Bug #683149 - Cleanup(?): Remove lp_device and lp_disk from GParted_Core
2012-11-11 11:47:59 +00:00
Matthias Gehre a13bed6424 Remove GParted_Core::temp (#683149)
Bug #683149 - Cleanup(?): Remove lp_device and lp_disk from GParted_Core
2012-11-11 11:47:59 +00:00
Matthias Gehre 6a3b17adc0 Remove lp_partition from GParted_Core (#683149)
Bug #683149 - Cleanup(?): Remove lp_device and lp_disk from GParted_Core
2012-11-11 11:47:59 +00:00
Matthias Gehre 7dd46df954 Remove unnecessary close_device_and_disk()
1) lp_disk is not used and assigned NULL so doesn't need closing.
2) lp_device is already ped_device_open()ed and ped_device_close()d
within the above while loop.  lp_device will be set to NULL when the
while loop ends so this doesn't need closing either.  Hence
close_device_and_disk() is always passed with two NULL pointers and is a
no operation so can be removed.
2012-11-11 11:47:59 +00:00
Matthias Gehre 500f1bcd9b Remove lp_device and lp_disk from GParted_Core (#683149)
They were used like global variables.  Now they are moved to the
functions that actually use them to make clearer how the data flow is.

Bug #683149 - Cleanup(?): Remove lp_device and lp_disk from GParted_Core
2012-11-11 11:47:59 +00:00