1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-23 10:29:58 +01:00

* filter.h: Remove const from WHAT.

* progress.c (handle_progress): Store a copy of NAME.
(progress_filter): Release WHAT, make sure not to print a NULL WHAT.
* openfile.c (open_sigfile): Adjust free for new progress semantics.
* plaintext.c (ask_for_detached_datafile): Don't dealloc pfx->WHAT.
This commit is contained in:
Werner Koch 2003-04-29 07:15:25 +00:00
parent e30006a769
commit d174920691
5 changed files with 25 additions and 12 deletions

View File

@ -1,3 +1,11 @@
2003-04-28 Werner Koch <wk@gnupg.org>
* filter.h: Remove const from WHAT.
* progress.c (handle_progress): Store a copy of NAME.
(progress_filter): Release WHAT, make sure not to print a NULL WHAT.
* openfile.c (open_sigfile): Adjust free for new progress semantics.
* plaintext.c (ask_for_detached_datafile): Don't dealloc pfx->WHAT.
2003-04-28 David Shaw <dshaw@jabberwocky.com> 2003-04-28 David Shaw <dshaw@jabberwocky.com>
* build-packet.c (build_sig_subpkt): Comments. * build-packet.c (build_sig_subpkt): Comments.

View File

@ -110,7 +110,7 @@ typedef struct {
typedef struct { typedef struct {
const char *what; /* description */ char *what; /* description */
u32 last_time; /* last time reported */ u32 last_time; /* last time reported */
unsigned long last; /* last amount reported */ unsigned long last; /* last amount reported */
unsigned long offset; /* current amount */ unsigned long offset; /* current amount */

View File

@ -284,7 +284,6 @@ open_sigfile( const char *iname, progress_filter_context_t *pfx )
log_info(_("assuming signed data in `%s'\n"), buf ); log_info(_("assuming signed data in `%s'\n"), buf );
if (a && pfx) if (a && pfx)
handle_progress (pfx, a, buf); handle_progress (pfx, a, buf);
else
m_free(buf); m_free(buf);
} }
} }

View File

@ -328,14 +328,11 @@ ask_for_detached_datafile( MD_HANDLE md, MD_HANDLE md2,
const char *inname, int textmode ) const char *inname, int textmode )
{ {
progress_filter_context_t pfx; progress_filter_context_t pfx;
int dealloc_pfx_name = 1;
char *answer = NULL; char *answer = NULL;
IOBUF fp; IOBUF fp;
int rc = 0; int rc = 0;
fp = open_sigfile( inname, &pfx ); /* open default file */ fp = open_sigfile( inname, &pfx ); /* open default file */
if (!fp)
dealloc_pfx_name = 0;
if( !fp && !opt.batch ) { if( !fp && !opt.batch ) {
int any=0; int any=0;
@ -370,8 +367,6 @@ ask_for_detached_datafile( MD_HANDLE md, MD_HANDLE md2,
} }
do_hash( md, md2, fp, textmode ); do_hash( md, md2, fp, textmode );
iobuf_close(fp); iobuf_close(fp);
if (dealloc_pfx_name)
m_free ((void *)pfx.what);
leave: leave:
m_free(answer); m_free(answer);
@ -398,7 +393,6 @@ hash_datafiles( MD_HANDLE md, MD_HANDLE md2, STRLIST files,
if( fp ) { if( fp ) {
do_hash( md, md2, fp, textmode ); do_hash( md, md2, fp, textmode );
iobuf_close(fp); iobuf_close(fp);
m_free ((void *)pfx.what);
return 0; return 0;
} }
log_error (_("no signed data\n")); log_error (_("no signed data\n"));

View File

@ -45,7 +45,9 @@ progress_filter (void *opaque, int control,
pfx->offset = 0; pfx->offset = 0;
pfx->last_time = make_timestamp (); pfx->last_time = make_timestamp ();
sprintf (buffer, "%.20s ? %lu %lu", pfx->what, pfx->offset, sprintf (buffer, "%.20s ? %lu %lu",
pfx->what? pfx->what : "?",
pfx->offset,
pfx->total); pfx->total);
write_status_text (STATUS_PROGRESS, buffer); write_status_text (STATUS_PROGRESS, buffer);
} }
@ -69,7 +71,9 @@ progress_filter (void *opaque, int control,
{ {
char buffer[50]; char buffer[50];
sprintf (buffer, "%.20s ? %lu %lu", pfx->what, pfx->offset, sprintf (buffer, "%.20s ? %lu %lu",
pfx->what? pfx->what : "?",
pfx->offset,
pfx->total); pfx->total);
write_status_text (STATUS_PROGRESS, buffer); write_status_text (STATUS_PROGRESS, buffer);
@ -77,6 +81,14 @@ progress_filter (void *opaque, int control,
pfx->last_time = timestamp; pfx->last_time = timestamp;
} }
} }
else if (control == IOBUFCTRL_FREE)
{
/* Note, that we must always dealloc resources of a filter
within the filter handler and not anywhere else. (We set it
to NULL and check all uses just in case.) */
m_free (pfx->what);
pfx->what = NULL;
}
else if (control == IOBUFCTRL_DESC) else if (control == IOBUFCTRL_DESC)
*(char**)buf = "progress_filter"; *(char**)buf = "progress_filter";
return rc; return rc;
@ -99,7 +111,7 @@ handle_progress (progress_filter_context_t *pfx, IOBUF inp, const char *name)
filesize = opt.set_filesize; filesize = opt.set_filesize;
/* register the progress filter */ /* register the progress filter */
pfx->what = name ? name : "stdin"; pfx->what = m_strdup (name ? name : "stdin");
pfx->total = filesize; pfx->total = filesize;
iobuf_push_filter (inp, progress_filter, pfx); iobuf_push_filter (inp, progress_filter, pfx);
} }