diff options
author | Arch Librarian <arch@canonical.com> | 2004-09-20 16:53:05 +0000 |
---|---|---|
committer | Arch Librarian <arch@canonical.com> | 2004-09-20 16:53:05 +0000 |
commit | b0db36b1ac7a93c147888aa98f9431e8bcc7d36e (patch) | |
tree | 0db564188095f9826ceb47156b1b4740a7fafb96 /cmdline | |
parent | 78b558ca4dab74f113cec91362b055263baa8011 (diff) |
Signal safety
Author: jgg
Date: 1999-03-16 00:43:55 GMT
Signal safety
Diffstat (limited to 'cmdline')
-rw-r--r-- | cmdline/acqprogress.cc | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/cmdline/acqprogress.cc b/cmdline/acqprogress.cc index 190dc5e81..485679c1d 100644 --- a/cmdline/acqprogress.cc +++ b/cmdline/acqprogress.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: acqprogress.cc,v 1.10 1999/02/27 22:29:11 jgg Exp $ +// $Id: acqprogress.cc,v 1.11 1999/03/16 00:43:55 jgg Exp $ /* ###################################################################### Acquire Progress - Command line progress meter @@ -12,7 +12,9 @@ #include <apt-pkg/acquire-item.h> #include <apt-pkg/acquire-worker.h> #include <apt-pkg/strutl.h> + #include <stdio.h> +#include <signal.h> /*}}}*/ // AcqTextStatus::AcqTextStatus - Constructor /*{{{*/ @@ -209,7 +211,13 @@ void AcqTextStatus::Pulse(pkgAcquire *Owner) if (Shown == false) snprintf(S,End-S," [Working]"); - // Put in the ETA and cps meter + /* Put in the ETA and cps meter, block off signals to prevent strangeness + during resizing */ + sigset_t Sigs,OldSigs; + sigemptyset(&Sigs); + sigaddset(&Sigs,SIGWINCH); + sigprocmask(SIG_BLOCK,&Sigs,&OldSigs); + if (CurrentCPS != 0) { char Tmp[300]; @@ -224,7 +232,9 @@ void AcqTextStatus::Pulse(pkgAcquire *Owner) } } Buffer[ScreenWidth] = 0; - + BlankLine[ScreenWidth] = 0; + sigprocmask(SIG_UNBLOCK,&OldSigs,0); + // Draw the current status if (strlen(Buffer) == strlen(BlankLine)) cout << '\r' << Buffer << flush; |