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: 15+ 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
2002-07-17 3:36 fdisk azie
2002-07-17 4:29 ` fdisk Ray Olszewski
2002-07-17 9:44 ` fdisk Elias Athanasopoulos
2002-07-17 18:25 ` fdisk Bryan Whitehead
2002-07-18 8:14 ` fdisk azie
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.