summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarel Zak <kzak@redhat.com>2015-02-25 12:35:45 +0100
committerKarel Zak <kzak@redhat.com>2015-03-12 10:13:01 +0100
commit3d3f623dbd30af1d4a1c326e17a40ff756135531 (patch)
treed03ef6a4a9ee70f9668bd9aaa2600d066c418b97
parent805f7b88e233b63493f4aacbe8529e7e3422984c (diff)
downloadutil-linux-3d3f623dbd30af1d4a1c326e17a40ff756135531.tar.gz
sfdisk: add missing --color
The util already support lib/colors.c stuff, but without command line option. Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r--disk-utils/sfdisk.825
-rw-r--r--disk-utils/sfdisk.c18
2 files changed, 40 insertions, 3 deletions
diff --git a/disk-utils/sfdisk.8 b/disk-utils/sfdisk.8
index 4d001de6d..66a8f9955 100644
--- a/disk-utils/sfdisk.8
+++ b/disk-utils/sfdisk.8
@@ -116,6 +116,12 @@ Back up the current partition table sectors before starting the partitioning.
The default backup file name is ~/sfdisk-<device>-<offset>.bak; to use another
name see \fB\-\-backup\-file\fR.
.TP
+.BR "\-\-color"[\fI=when\fR]
+Colorize the output. The optional argument \fIwhen\fP
+can be \fBauto\fR, \fBnever\fR or \fBalways\fR. If the \fIwhen\fR argument is omitted,
+it defaults to \fBauto\fR. The colors can be disabled, for the current built-in default
+see \fB\-\-help\fR output. See also the COLORS section.
+.TP
.BR \-f , " \-\-force"
Disable all consistency checking.
.TP
@@ -349,6 +355,25 @@ restore sectors.
.B dd (1)
provides all necessary functionality.
+.SH COLORS
+Implicit coloring can be disabled by an empty file \fI/etc/terminal-colors.d/sfdisk.disable\fR.
+
+See
+.BR terminal-colors.d (5)
+for more details about colorization configuration. The logical color names
+supported by
+.B sfdisk
+are:
+.TP
+.B header
+The header of the output tables.
+.TP
+.B warn
+The warning messages.
+.TP
+.B welcome
+The welcome message.
+
.SH NOTES
Since version 2.26 \fBsfdisk\fR no longer provides the \fB\-R\fR or
\fB\-\-re\-read\fR option to force the kernel to reread the partition table.
diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
index b7d448005..2e89d9482 100644
--- a/disk-utils/sfdisk.c
+++ b/disk-utils/sfdisk.c
@@ -186,8 +186,6 @@ static void sfdisk_init(struct sfdisk *sf)
fdisk_init_debug(0);
sfdiskprog_init_debug();
- colors_init(UL_COLORMODE_UNDEF, "sfdisk");
-
sf->cxt = fdisk_new_context();
if (!sf->cxt)
err(EXIT_FAILURE, _("failed to allocate libfdisk context"));
@@ -1340,6 +1338,9 @@ static void __attribute__ ((__noreturn__)) usage(FILE *out)
fputs(_(" -b, --backup backup partition table sectors (see -O)\n"), out);
fputs(_(" --bytes print SIZE in bytes rather than in human readable format\n"), out);
fputs(_(" -f, --force disable all consistency checking\n"), out);
+ fputs(_(" --color[=<when>] colorize output (auto, always or never)\n"), out);
+ fprintf(out,
+ " %s\n", USAGE_COLORS_DEFAULT);
fputs(_(" -N, --partno <num> specify partition number\n"), out);
fputs(_(" -n, --no-act do everything except write to device\n"), out);
fputs(_(" --no-reread do not check whether the device is in use\n"), out);
@@ -1367,6 +1368,7 @@ int main(int argc, char *argv[])
{
const char *outarg = NULL;
int rc = -EINVAL, c, longidx = -1, bytes = 0;
+ int colormode = UL_COLORMODE_UNDEF;
struct sfdisk _sf = {
.partno = -1,
.interactive = isatty(STDIN_FILENO) ? 1 : 0,
@@ -1381,7 +1383,8 @@ int main(int argc, char *argv[])
OPT_PARTLABEL,
OPT_PARTTYPE,
OPT_PARTATTRS,
- OPT_BYTES
+ OPT_BYTES,
+ OPT_COLOR
};
static const struct option longopts[] = {
@@ -1390,6 +1393,7 @@ int main(int argc, char *argv[])
{ "backup", no_argument, NULL, 'b' },
{ "backup-file", required_argument, NULL, 'O' },
{ "bytes", no_argument, NULL, OPT_BYTES },
+ { "color", optional_argument, NULL, OPT_COLOR },
{ "dump", no_argument, NULL, 'd' },
{ "help", no_argument, NULL, 'h' },
{ "force", no_argument, NULL, 'f' },
@@ -1526,11 +1530,19 @@ int main(int argc, char *argv[])
case OPT_BYTES:
bytes = 1;
break;
+ case OPT_COLOR:
+ colormode = UL_COLORMODE_AUTO;
+ if (optarg)
+ colormode = colormode_or_err(optarg,
+ _("unsupported color mode"));
+ break;
default:
usage(stderr);
}
}
+ colors_init(colormode, "sfdisk");
+
sfdisk_init(sf);
if (bytes)
fdisk_set_size_unit(sf->cxt, FDISK_SIZEUNIT_BYTES);