diff options
-rw-r--r-- | fdisks/Makemodule.am | 2 | ||||
-rw-r--r-- | fdisks/fdisk.c | 14 | ||||
-rw-r--r-- | fdisks/fdisk.h | 4 | ||||
-rw-r--r-- | fdisks/fdiskdoslabel.c | 7 | ||||
-rw-r--r-- | fdisks/fdisksgilabel.c | 6 | ||||
-rw-r--r-- | fdisks/fdisksunlabel.h | 14 | ||||
-rw-r--r-- | libfdisk/src/Makemodule.am | 2 | ||||
-rw-r--r-- | libfdisk/src/ask.c | 15 | ||||
-rw-r--r-- | libfdisk/src/fdiskP.h | 17 | ||||
-rw-r--r-- | libfdisk/src/libfdisk.h | 4 | ||||
-rw-r--r-- | libfdisk/src/sun.c (renamed from fdisks/fdisksunlabel.c) | 28 |
11 files changed, 57 insertions, 56 deletions
diff --git a/fdisks/Makemodule.am b/fdisks/Makemodule.am index ebda3361d..7532d6d23 100644 --- a/fdisks/Makemodule.am +++ b/fdisks/Makemodule.am @@ -17,8 +17,6 @@ fdisk_SOURCES = \ fdisks/fdiskmaclabel.h \ fdisks/fdisksgilabel.c \ fdisks/fdisksgilabel.h \ - fdisks/fdisksunlabel.c \ - fdisks/fdisksunlabel.h \ fdisks/partname.c \ fdisks/common.h diff --git a/fdisks/fdisk.c b/fdisks/fdisk.c index 0149d59f0..1964e4af8 100644 --- a/fdisks/fdisk.c +++ b/fdisks/fdisk.c @@ -35,7 +35,7 @@ #include "strutils.h" #include "closestream.h" -#include "fdisksunlabel.h" +#include "pt-sun.h" /* to toggle flags */ #include "fdisksgilabel.h" #include "fdiskmaclabel.h" #include "fdiskdoslabel.h" @@ -683,18 +683,6 @@ static void verify(struct fdisk_context *cxt) fdisk_verify_disklabel(cxt); } -void print_partition_size(struct fdisk_context *cxt, - int num, sector_t start, sector_t stop, int sysid) -{ - char *str = size_to_human_string(SIZE_SUFFIX_3LETTER | SIZE_SUFFIX_SPACE, - (uint64_t)(stop - start + 1) * cxt->sector_size); - struct fdisk_parttype *t = fdisk_get_parttype_from_code(cxt, sysid); - - printf(_("Partition %d of type %s and of size %s is set\n"), - num, t ? t->name : _("Unknown"), str); - free(str); -} - static void new_partition(struct fdisk_context *cxt) { assert(cxt); diff --git a/fdisks/fdisk.h b/fdisks/fdisk.h index 99ef3255e..45d86c94a 100644 --- a/fdisks/fdisk.h +++ b/fdisks/fdisk.h @@ -84,7 +84,6 @@ extern unsigned int read_int(struct fdisk_context *cxt, unsigned int low, unsigned int dflt, unsigned int high, unsigned int base, char *mesg); extern void print_menu(struct fdisk_context *cxt, enum menutype menu); -extern void print_partition_size(struct fdisk_context *cxt, int num, sector_t start, sector_t stop, int sysid); extern char *partition_type(struct fdisk_context *cxt, unsigned char type); extern char read_chars(struct fdisk_context *cxt, char *mesg); @@ -94,9 +93,6 @@ extern unsigned int read_int_with_suffix(struct fdisk_context *cxt, unsigned int low, unsigned int dflt, unsigned int high, unsigned int base, char *mesg, int *is_suffix_used); -#define PLURAL 0 -#define SINGULAR 1 - extern sector_t get_nr_sects(struct partition *p); extern int nowarn; diff --git a/fdisks/fdiskdoslabel.c b/fdisks/fdiskdoslabel.c index 5fd1da823..44dc40e12 100644 --- a/fdisks/fdiskdoslabel.c +++ b/fdisks/fdiskdoslabel.c @@ -522,9 +522,10 @@ static void set_partition(struct fdisk_context *cxt, set_start_sect(p, start - offset); set_nr_sects(p, stop - start + 1); - if (!doext) - print_partition_size(cxt, i + 1, start, stop, sysid); - + if (!doext) { + struct fdisk_parttype *t = fdisk_get_parttype_from_code(cxt, sysid); + fdisk_info_new_partition(cxt, i + 1, start, stop, t); + } if (is_dos_compatible(cxt) && (start/(cxt->geom.sectors*cxt->geom.heads) > 1023)) start = cxt->geom.heads*cxt->geom.sectors*1024 - 1; set_hsc(p->head, p->sector, p->cyl, start); diff --git a/fdisks/fdisksgilabel.c b/fdisks/fdisksgilabel.c index 796b4580f..15a25c503 100644 --- a/fdisks/fdisksgilabel.c +++ b/fdisks/fdisksgilabel.c @@ -629,8 +629,10 @@ static int sgi_set_partition(struct fdisk_context *cxt, size_t i, if (sgi_gaps(cxt) < 0) /* rebuild freelist */ printf(_("Partition overlap on the disk.\n")); - if (length) - print_partition_size(cxt, i + 1, start, start + length, sys); + if (length) { + struct fdisk_parttype *t = fdisk_get_parttype_from_code(cxt, sys); + fdisk_info_new_partition(cxt, i + 1, start, start + length, t); + } return 0; } diff --git a/fdisks/fdisksunlabel.h b/fdisks/fdisksunlabel.h deleted file mode 100644 index f973725d3..000000000 --- a/fdisks/fdisksunlabel.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef FDISK_SUN_LABEL_H -#define FDISK_SUN_LABEL_H - -#include "pt-sun.h" - -/* public SUN specific functions (TODO: move to libfdisk.h) */ -extern void fdisk_sun_set_alt_cyl(struct fdisk_context *cxt); -extern void fdisk_sun_set_ncyl(struct fdisk_context *cxt, int cyl); -extern void fdisk_sun_set_xcyl(struct fdisk_context *cxt); -extern void fdisk_sun_set_ilfact(struct fdisk_context *cxt); -extern void fdisk_sun_set_rspeed(struct fdisk_context *cxt); -extern void fdisk_sun_set_pcylcount(struct fdisk_context *cxt); - -#endif /* FDISK_SUN_LABEL_H */ diff --git a/libfdisk/src/Makemodule.am b/libfdisk/src/Makemodule.am index 3858e7b09..3ea1fa449 100644 --- a/libfdisk/src/Makemodule.am +++ b/libfdisk/src/Makemodule.am @@ -17,6 +17,8 @@ libfdisk_la_SOURCES = \ libfdisk/src/utils.c \ libfdisk/src/context.c \ libfdisk/src/parttype.c \ + \ + libfdisk/src/sun.c \ libfdisk/src/gpt.c diff --git a/libfdisk/src/ask.c b/libfdisk/src/ask.c index a95d54233..0127d645a 100644 --- a/libfdisk/src/ask.c +++ b/libfdisk/src/ask.c @@ -532,6 +532,21 @@ int fdisk_warnx(struct fdisk_context *cxt, const char *fmt, ...) return rc; } +int fdisk_info_new_partition( + struct fdisk_context *cxt, + int num, sector_t start, sector_t stop, + struct fdisk_parttype *t) +{ + int rc; + char *str = size_to_human_string(SIZE_SUFFIX_3LETTER | SIZE_SUFFIX_SPACE, + (uint64_t)(stop - start + 1) * cxt->sector_size); + + rc = fdisk_info(cxt, _("Partition %d of type %s and of size %s is set\n"), + num, t ? t->name : _("Unknown"), str); + free(str); + return rc; +} + #ifdef TEST_PROGRAM struct fdisk_label *fdisk_new_dos_label(struct fdisk_context *cxt) { return NULL; } struct fdisk_label *fdisk_new_bsd_label(struct fdisk_context *cxt) { return NULL; } diff --git a/libfdisk/src/fdiskP.h b/libfdisk/src/fdiskP.h index 4dd4db6c9..e05bb8628 100644 --- a/libfdisk/src/fdiskP.h +++ b/libfdisk/src/fdiskP.h @@ -327,13 +327,24 @@ extern int fdisk_probe_labels(struct fdisk_context *cxt); extern void fdisk_deinit_label(struct fdisk_label *lb); -/* gpt.c -- temporary bypass library API... */ -extern void gpt_list_table(struct fdisk_context *cxt, int xtra); - /* ask.c */ extern int fdisk_ask_partnum(struct fdisk_context *cxt, size_t *partnum, int wantnew); extern struct tt *fdisk_ask_get_table(struct fdisk_ask *ask); extern int fdisk_print_table(struct fdisk_context *cxt, struct tt *tb); +extern int fdisk_info_new_partition( + struct fdisk_context *cxt, + int num, sector_t start, sector_t stop, + struct fdisk_parttype *t); + +/* sun.h */ +extern void fdisk_sun_set_alt_cyl(struct fdisk_context *cxt); +extern void fdisk_sun_set_ncyl(struct fdisk_context *cxt, int cyl); +extern void fdisk_sun_set_xcyl(struct fdisk_context *cxt); +extern void fdisk_sun_set_ilfact(struct fdisk_context *cxt); +extern void fdisk_sun_set_rspeed(struct fdisk_context *cxt); +extern void fdisk_sun_set_pcylcount(struct fdisk_context *cxt); + + #endif /* _LIBFDISK_PRIVATE_H */ diff --git a/libfdisk/src/libfdisk.h b/libfdisk/src/libfdisk.h index b7c2735d1..b414ff7bc 100644 --- a/libfdisk/src/libfdisk.h +++ b/libfdisk/src/libfdisk.h @@ -88,7 +88,11 @@ extern int fdisk_context_switch_label(struct fdisk_context *cxt, const char *name); extern int fdisk_context_set_unit(struct fdisk_context *cxt, const char *str); + +#define PLURAL 0 +#define SINGULAR 1 extern const char *fdisk_context_get_unit(struct fdisk_context *cxt, int n); + extern unsigned int fdisk_context_get_units_per_sector(struct fdisk_context *cxt); extern int fdisk_context_enable_details(struct fdisk_context *cxt, int enable); diff --git a/fdisks/fdisksunlabel.c b/libfdisk/src/sun.c index 864a8b5a6..e7a1c879e 100644 --- a/fdisks/fdisksunlabel.c +++ b/libfdisk/src/sun.c @@ -1,15 +1,11 @@ /* - * fdisksunlabel.c + * Copyright (C) 2013 Karel Zak <kzak@redhat.com> * - * I think this is mostly, or entirely, due to - * Jakub Jelinek (jj@sunsite.mff.cuni.cz), July 1996 - * - * Merged with fdisk for other architectures, aeb, June 1998. - * - * Sat Mar 20 EST 1999 Arnaldo Carvalho de Melo <acme@conectiva.com.br> - * Internationalization + * Based on original code from fdisk: + * Jakub Jelinek (jj@sunsite.mff.cuni.cz), July 1996 + * Merged with fdisk for other architectures, aeb, June 1998. + * Arnaldo Carvalho de Melo <acme@conectiva.com.br> Mar 1999, Internationalization */ - #include <stdio.h> /* stderr */ #include <stdlib.h> /* qsort */ #include <string.h> /* strstr */ @@ -20,10 +16,9 @@ #include "blkdev.h" #include "bitops.h" -#include "common.h" -#include "fdisk.h" -#include "fdiskdoslabel.h" -#include "fdisksunlabel.h" +#include "fdiskP.h" +#include "pt-sun.h" +#include "all-io.h" /* * in-memory fdisk SUN stuff @@ -77,6 +72,7 @@ static void set_sun_partition(struct fdisk_context *cxt, size_t i, uint32_t start,uint32_t stop, uint16_t sysid) { struct sun_disklabel *sunlabel = self_disklabel(cxt); + struct fdisk_parttype *t = fdisk_get_parttype_from_code(cxt, sysid); sunlabel->vtoc.infos[i].id = cpu_to_be16(sysid); sunlabel->vtoc.infos[i].flags = cpu_to_be16(0); @@ -84,7 +80,8 @@ static void set_sun_partition(struct fdisk_context *cxt, size_t i, cpu_to_be32(start / (cxt->geom.heads * cxt->geom.sectors)); sunlabel->partitions[i].num_sectors = cpu_to_be32(stop - start); fdisk_label_set_changed(cxt->label, 1); - print_partition_size(cxt, i + 1, start, stop, sysid); + + fdisk_info_new_partition(cxt, i + 1, start, stop, t); } static size_t count_used_partitions(struct fdisk_context *cxt) @@ -842,6 +839,7 @@ static int sun_write_disklabel(struct fdisk_context *cxt) struct sun_disklabel *sunlabel; unsigned short *ush; unsigned short csum = 0; + const size_t sz = sizeof(struct sun_disklabel); assert(cxt); assert(cxt->label); @@ -855,7 +853,7 @@ static int sun_write_disklabel(struct fdisk_context *cxt) sunlabel->csum = csum; if (lseek(cxt->dev_fd, 0, SEEK_SET) < 0) return -errno; - if (write(cxt->dev_fd, sunlabel, SECTOR_SIZE) != SECTOR_SIZE) + if (write_all(cxt->dev_fd, sunlabel, sz) != 0) return -errno; return 0; |