- From: Richard Atterer <libwww@list02.atterer.net>
- Date: Wed, 16 Oct 2002 21:02:54 +0200
- To: www-lib@w3.org
On Wed, Oct 16, 2002 at 11:30:44AM -0500, Tanmay Patwardhan wrote:
> When I disable notification, it bypasses the input from user, and as
> seen in HTSChunk.c - it defauts to exiting before receiving the
> entire data. (Basically it does not extend the bufferring of the
> incoming large message.)
>
> What can I do to pass back a "y" automatically without user
> intervention to the HT_A_CONFIRM callback function? Is there any
> other workaround ? (Other than changing the code in HTSChunk.c)
That all sounds very familiar, but it's been a while since I went
through this myself...
IIRC, you *must* use HTAlert_setInteractive(YES); or things just
break. I /think/ my solution involved not calling one of those *Init()
functions directly, but instead doing most of its work manually. I
don't remember why exactly it doesn't print the messages anymore with
my code, but I can assure you it doesn't! :-)
Anyway, below is how I initialize libwww. The nonono() function avoids
that libwww prints messages like "save this data to file
/tmp/foobar?", by always answering NO. Download::alertCallback()
handles the progress messages as appropriate for the application; in
my case, it updates the GUI elements.
// Initialize (g)libwww
void Download::init() {
HTAlertInit();
# if DEBUG_DOWNLOAD
HTSetTraceMessageMask("flbtspuhox");
HTTrace_setCallback(tracer);
# endif
HTEventInit(); // Necessary on Windows to initialize WinSock
HTNet_setMaxSocket (32);
/* These calls are necessary for redirections to work. (Why? Don't
ask why - this is libwww, after all...) */
HTList* converters = HTList_new();
HTConverterInit(converters); // Register the default set of converters
HTFormat_setConversion(converters); // Global converters for all requests
HTAlert_setInteractive(YES);
// HTPrint_setCallback(printer);
glibwww_init("jigdo", JIGDO_VERSION);
HTAlert_add(Download::alertCallback, HT_A_PROGRESS); // Progress reports
HTAlert_add(nonono, static_cast<HTAlertOpcode>(
HT_A_CONFIRM | HT_A_PROMPT | HT_A_SECRET | HT_A_USER_PW));
// To get notified of errors, redirects etc.
HTNet_addAfter(Download::afterFilter, NULL /*template*/, 0 /*param*/,
HT_ALL, HT_FILTER_MIDDLE);
}
BOOL nonono(HTRequest*, HTAlertOpcode, int, const char*, void*,
HTAlertPar*) {
return NO;
}
In case this doesn't yet make a difference, additionally check whether
glibwww_init() does (it makes an immense number of calls to
libwww...). It's a bit large, so I'm not attaching it - see
glibwww-init.cc in the jigdo tarball on
<http://atterer.net/jigdo/#source>. glibwww should also be available
somewhere on gnome.org.
HTH,
Richard
--
__ _
|_) /| Richard Atterer | CS student at the Technische | GnuPG key:
| \/¯| http://atterer.net | Universität München, Germany | 0x888354F7
¯ '` ¯
Received on Wednesday, 16 October 2002 16:29:46 UTC