From: Isaac Dunham <ibid.ag@gmail.com>
To: Karel Zak <kzak@redhat.com>
Cc: Bruce Dubbs <bruce.dubbs@gmail.com>, util-linux@vger.kernel.org
Subject: Re: fdisk
Date: Tue, 1 Sep 2015 19:07:34 -0700 [thread overview]
Message-ID: <20150902020733.GB1910@newbook> (raw)
In-Reply-To: <20150831100648.GG2726@ws.net.home>
On Mon, Aug 31, 2015 at 12:06:48PM +0200, Karel Zak wrote:
> On Sun, Aug 30, 2015 at 09:04:48PM -0500, Bruce Dubbs wrote:
> > I have a question about (or a enhancement request) running fdisk. When
> > asking to list known partition types, I get about 70 lines of output.
> > Generally that would not be a problem, but I was running in a Debian
> > install/rescue iso that uses busybox in a 25 line terminal. I do not have a
> > way to scroll up and thus cannot see the first 40 or so partition types.
> >
> > Is there a way to use a pager for this? In this situation 'more' is
> > available but 'less' is not. Otherwise I think an automatic pause every 20
> > lines or so would be appropriate to build into the partition type listing.
>
> We have lib/pager.c and setup_pager(), but it assumes that the pager
> is running all time and maintain stdout until parent process
> terminate.
>
> Maybe we can implement something like
>
> pid = setup_temporary_pager();
> <list partition types>
> close_pager(pid);
>
> as I don't think we want to use pager all time for fdisk.
>
> Volunteers?:-)
>
> Karel
I'm tempted to volunteer, but I'd like to run something by you first.
I presume that setup_temporary_pager() needs to spawn a pager, with
the pager inheriting stdout/stderr and stdout temporarily redirected
to the pipe, and then close_pager() needs to close the pipe and swap
the old stdout/stderr back in, then wait for pid to exit.
Thus, I'm thinking that the following prototypes would be better:
/* create a pipe, spawn a temporary pager,
* dup()s fd 1 and possibly fd 2 before redirecting to the pipe
* if an fd is not dup()'d, set the corresponding duplicate to -1
*/
pid_t setup_temporary_pager(int *dupout, int *duperr);
/* close the pipe, dup2() the saved fds back over fds 1/2,
* close the duplicates, and wait for the temporary pager to exit
* if either fd is -1, skip it.
*/
void close_pager(pid, int dupout, int duperr);
setup_temporary_pager will return -1 if it does not spawn the pager
(whether by failure or by PAGER=cat), or if there are problems during
the redirection dance.
It will refuse to spawn a pager if (!isatty(STDOUT_FILENO)).
Does this sound sensible?
Thanks,
Isaac Dunham
next prev parent reply other threads:[~2015-09-02 2:07 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-31 2:04 fdisk Bruce Dubbs
2015-08-31 6:56 ` fdisk Bernhard Voelker
2015-08-31 16:20 ` fdisk Bruce Dubbs
2015-09-02 1:29 ` fdisk Isaac Dunham
2015-08-31 10:06 ` fdisk Karel Zak
2015-09-02 2:07 ` Isaac Dunham [this message]
2015-09-02 8:01 ` fdisk Karel Zak
-- strict thread matches above, loose matches on Subject: below --
2011-06-24 18:25 fdisk Bruce Dubbs
2011-06-27 14:21 ` fdisk Karel Zak
2011-06-27 19:27 ` fdisk Mike Frysinger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150902020733.GB1910@newbook \
--to=ibid.ag@gmail.com \
--cc=bruce.dubbs@gmail.com \
--cc=kzak@redhat.com \
--cc=util-linux@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox