56
56
#include "brasero-drive.h"
57
57
#include "brasero-track-disc.h"
58
58
#include "brasero-track-image.h"
59
#include "brasero-tags.h"
60
61
BRASERO_PLUGIN_BOILERPLATE (BraseroChecksumImage, brasero_checksum_image, BRASERO_TYPE_JOB, BraseroJob);
354
355
brasero_job_start_progress (BRASERO_JOB (self), FALSE);
355
356
brasero_job_get_current_track (BRASERO_JOB (self), &track);
357
/* see if another plugin is sending us data to checksum */
358
/* see if another plugin is sending us data to checksum
359
* or if we do it ourself (and then that must be from an
360
* image file only). */
358
361
if (brasero_job_get_fd_in (BRASERO_JOB (self), NULL) == BRASERO_BURN_OK) {
359
362
BraseroMedium *medium;
363
GValue *value = NULL;
360
364
BraseroDrive *drive;
369
brasero_track_tag_lookup (track,
370
BRASERO_TRACK_MEDIUM_ADDRESS_START_TAG,
373
/* we were given an address to start */
374
start = g_value_get_uint64 (value);
376
/* get the length now */
378
brasero_track_tag_lookup (track,
379
BRASERO_TRACK_MEDIUM_ADDRESS_END_TAG,
382
end = g_value_get_uint64 (value);
384
priv->total = end - start;
362
386
/* we're only able to checksum ISO format at the moment so that
363
387
* means we can only handle last session */
364
388
drive = brasero_track_disc_get_drive (BRASERO_TRACK_DISC (track));
365
389
medium = brasero_drive_get_medium (drive);
366
390
brasero_medium_get_last_data_track_space (medium,
394
/* That's the only way to get the sector size */
395
priv->total *= bytes / sectors;
370
397
return brasero_checksum_image_checksum_fd_input (self, checksum_type, error);
409
433
priv = BRASERO_CHECKSUM_IMAGE_PRIVATE (self);
411
435
priv->checksum_type = brasero_checksum_get_checksum_type ();
412
if (priv->checksum_type == BRASERO_CHECKSUM_NONE)
413
checksum_type = G_CHECKSUM_MD5;
414
else if (priv->checksum_type & BRASERO_CHECKSUM_MD5)
437
if (priv->checksum_type & BRASERO_CHECKSUM_MD5)
415
438
checksum_type = G_CHECKSUM_MD5;
416
439
else if (priv->checksum_type & BRASERO_CHECKSUM_SHA1)
417
440
checksum_type = G_CHECKSUM_SHA1;
418
441
else if (priv->checksum_type & BRASERO_CHECKSUM_SHA256)
419
442
checksum_type = G_CHECKSUM_SHA256;
421
444
checksum_type = G_CHECKSUM_MD5;
445
priv->checksum_type = BRASERO_CHECKSUM_MD5;
423
448
brasero_job_set_current_action (BRASERO_JOB (self),
424
449
BRASERO_BURN_ACTION_CHECKSUM,