gnunet-download.c | gnunet-download.c | |||
---|---|---|---|---|
skipping to change at line 91 | skipping to change at line 91 | |||
* and various bits about the event | * and various bits about the event | |||
* @return client-context (for the next progress call | * @return client-context (for the next progress call | |||
* for this operation; should be set to NULL for | * for this operation; should be set to NULL for | |||
* SUSPEND and STOPPED events). The value returned | * SUSPEND and STOPPED events). The value returned | |||
* will be passed to future callbacks in the respective | * will be passed to future callbacks in the respective | |||
* field in the GNUNET_FS_ProgressInfo struct. | * field in the GNUNET_FS_ProgressInfo struct. | |||
*/ | */ | |||
static void * | static void * | |||
progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *info) | progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *info) | |||
{ | { | |||
char *s; | char *s, *s2; | |||
char *t; | char *t; | |||
switch (info->status) | switch (info->status) | |||
{ | { | |||
case GNUNET_FS_STATUS_DOWNLOAD_START: | case GNUNET_FS_STATUS_DOWNLOAD_START: | |||
if (verbose > 1) | if (verbose > 1) | |||
fprintf (stderr, _("Starting download `%s'.\n"), | FPRINTF (stderr, _("Starting download `%s'.\n"), | |||
info->value.download.filename); | info->value.download.filename); | |||
break; | break; | |||
case GNUNET_FS_STATUS_DOWNLOAD_PROGRESS: | case GNUNET_FS_STATUS_DOWNLOAD_PROGRESS: | |||
if (verbose) | if (verbose) | |||
{ | { | |||
s = GNUNET_STRINGS_relative_time_to_string (info->value.download.eta) ; | s = GNUNET_STRINGS_relative_time_to_string (info->value.download.eta) ; | |||
if (info->value.download.specifics.progress.block_download_duration.r | ||||
el_value | ||||
== GNUNET_TIME_UNIT_FOREVER_REL.rel_value) | ||||
s2 = GNUNET_strdup (_("<unknown time>")); | ||||
else | ||||
s2 = GNUNET_STRINGS_relative_time_to_string ( | ||||
info->value.download.specifics.progress.block_download_durati | ||||
on); | ||||
t = GNUNET_STRINGS_byte_size_fancy (info->value.download.completed * | t = GNUNET_STRINGS_byte_size_fancy (info->value.download.completed * | |||
1000LL / | 1000LL / | |||
(info->value.download. | (info->value.download. | |||
duration.rel_value + 1)); | duration.rel_value + 1)); | |||
fprintf (stdout, | FPRINTF (stdout, | |||
_("Downloading `%s' at %llu/%llu (%s remaining, %s/s)\n"), | _("Downloading `%s' at %llu/%llu (%s remaining, %s/s). Block | |||
took %s to download\n"), | ||||
info->value.download.filename, | info->value.download.filename, | |||
(unsigned long long) info->value.download.completed, | (unsigned long long) info->value.download.completed, | |||
(unsigned long long) info->value.download.size, s, t); | (unsigned long long) info->value.download.size, s, t, s2); | |||
GNUNET_free (s); | GNUNET_free (s); | |||
GNUNET_free (s2); | ||||
GNUNET_free (t); | GNUNET_free (t); | |||
} | } | |||
break; | break; | |||
case GNUNET_FS_STATUS_DOWNLOAD_ERROR: | case GNUNET_FS_STATUS_DOWNLOAD_ERROR: | |||
fprintf (stderr, _("Error downloading: %s.\n"), | FPRINTF (stderr, _("Error downloading: %s.\n"), | |||
info->value.download.specifics.error.message); | info->value.download.specifics.error.message); | |||
GNUNET_SCHEDULER_shutdown (); | GNUNET_SCHEDULER_shutdown (); | |||
break; | break; | |||
case GNUNET_FS_STATUS_DOWNLOAD_COMPLETED: | case GNUNET_FS_STATUS_DOWNLOAD_COMPLETED: | |||
s = GNUNET_STRINGS_byte_size_fancy (info->value.download.completed * 10 00 / | s = GNUNET_STRINGS_byte_size_fancy (info->value.download.completed * 10 00 / | |||
(info->value.download. | (info->value.download. | |||
duration.rel_value + 1)); | duration.rel_value + 1)); | |||
fprintf (stdout, _("Downloading `%s' done (%s/s).\n"), | FPRINTF (stdout, _("Downloading `%s' done (%s/s).\n"), | |||
info->value.download.filename, s); | info->value.download.filename, s); | |||
GNUNET_free (s); | GNUNET_free (s); | |||
if (info->value.download.dc == dc) | if (info->value.download.dc == dc) | |||
GNUNET_SCHEDULER_shutdown (); | GNUNET_SCHEDULER_shutdown (); | |||
break; | break; | |||
case GNUNET_FS_STATUS_DOWNLOAD_STOPPED: | case GNUNET_FS_STATUS_DOWNLOAD_STOPPED: | |||
if (info->value.download.dc == dc) | if (info->value.download.dc == dc) | |||
GNUNET_SCHEDULER_add_continuation (&cleanup_task, NULL, | GNUNET_SCHEDULER_add_continuation (&cleanup_task, NULL, | |||
GNUNET_SCHEDULER_REASON_PREREQ_DON E); | GNUNET_SCHEDULER_REASON_PREREQ_DON E); | |||
break; | break; | |||
case GNUNET_FS_STATUS_DOWNLOAD_ACTIVE: | case GNUNET_FS_STATUS_DOWNLOAD_ACTIVE: | |||
case GNUNET_FS_STATUS_DOWNLOAD_INACTIVE: | case GNUNET_FS_STATUS_DOWNLOAD_INACTIVE: | |||
break; | break; | |||
default: | default: | |||
fprintf (stderr, _("Unexpected status: %d\n"), info->status); | FPRINTF (stderr, _("Unexpected status: %d\n"), info->status); | |||
break; | break; | |||
} | } | |||
return NULL; | return NULL; | |||
} | } | |||
/** | /** | |||
* Main function that will be run by the scheduler. | * Main function that will be run by the scheduler. | |||
* | * | |||
* @param cls closure | * @param cls closure | |||
* @param args remaining command-line arguments | * @param args remaining command-line arguments | |||
skipping to change at line 166 | skipping to change at line 173 | |||
static void | static void | |||
run (void *cls, char *const *args, const char *cfgfile, | run (void *cls, char *const *args, const char *cfgfile, | |||
const struct GNUNET_CONFIGURATION_Handle *c) | const struct GNUNET_CONFIGURATION_Handle *c) | |||
{ | { | |||
struct GNUNET_FS_Uri *uri; | struct GNUNET_FS_Uri *uri; | |||
char *emsg; | char *emsg; | |||
enum GNUNET_FS_DownloadOptions options; | enum GNUNET_FS_DownloadOptions options; | |||
if (NULL == args[0]) | if (NULL == args[0]) | |||
{ | { | |||
fprintf (stderr, _("You need to specify a URI argument.\n")); | FPRINTF (stderr, "%s", _("You need to specify a URI argument.\n")); | |||
return; | return; | |||
} | } | |||
uri = GNUNET_FS_uri_parse (args[0], &emsg); | uri = GNUNET_FS_uri_parse (args[0], &emsg); | |||
if (NULL == uri) | if (NULL == uri) | |||
{ | { | |||
fprintf (stderr, _("Failed to parse URI: %s\n"), emsg); | FPRINTF (stderr, _("Failed to parse URI: %s\n"), emsg); | |||
GNUNET_free (emsg); | GNUNET_free (emsg); | |||
ret = 1; | ret = 1; | |||
return; | return; | |||
} | } | |||
if ((!GNUNET_FS_uri_test_chk (uri)) && (!GNUNET_FS_uri_test_loc (uri))) | if ((!GNUNET_FS_uri_test_chk (uri)) && (!GNUNET_FS_uri_test_loc (uri))) | |||
{ | { | |||
fprintf (stderr, _("Only CHK or LOC URIs supported.\n")); | FPRINTF (stderr, "%s", _("Only CHK or LOC URIs supported.\n")); | |||
ret = 1; | ret = 1; | |||
GNUNET_FS_uri_destroy (uri); | GNUNET_FS_uri_destroy (uri); | |||
return; | return; | |||
} | } | |||
if (NULL == filename) | if (NULL == filename) | |||
{ | { | |||
fprintf (stderr, _("Target filename must be specified.\n")); | FPRINTF (stderr, "%s", _("Target filename must be specified.\n")); | |||
ret = 1; | ret = 1; | |||
GNUNET_FS_uri_destroy (uri); | GNUNET_FS_uri_destroy (uri); | |||
return; | return; | |||
} | } | |||
cfg = c; | cfg = c; | |||
ctx = | ctx = | |||
GNUNET_FS_start (cfg, "gnunet-download", &progress_cb, NULL, | GNUNET_FS_start (cfg, "gnunet-download", &progress_cb, NULL, | |||
GNUNET_FS_FLAGS_NONE, | GNUNET_FS_FLAGS_NONE, | |||
GNUNET_FS_OPTIONS_DOWNLOAD_PARALLELISM, parallelism, | GNUNET_FS_OPTIONS_DOWNLOAD_PARALLELISM, parallelism, | |||
GNUNET_FS_OPTIONS_REQUEST_PARALLELISM, | GNUNET_FS_OPTIONS_REQUEST_PARALLELISM, | |||
request_parallelism, GNUNET_FS_OPTIONS_END); | request_parallelism, GNUNET_FS_OPTIONS_END); | |||
if (NULL == ctx) | if (NULL == ctx) | |||
{ | { | |||
fprintf (stderr, _("Could not initialize `%s' subsystem.\n"), "FS"); | FPRINTF (stderr, _("Could not initialize `%s' subsystem.\n"), "FS"); | |||
GNUNET_FS_uri_destroy (uri); | GNUNET_FS_uri_destroy (uri); | |||
ret = 1; | ret = 1; | |||
return; | return; | |||
} | } | |||
options = GNUNET_FS_DOWNLOAD_OPTION_NONE; | options = GNUNET_FS_DOWNLOAD_OPTION_NONE; | |||
if (do_recursive) | if (do_recursive) | |||
options |= GNUNET_FS_DOWNLOAD_OPTION_RECURSIVE; | options |= GNUNET_FS_DOWNLOAD_OPTION_RECURSIVE; | |||
if (local_only) | if (local_only) | |||
options |= GNUNET_FS_DOWNLOAD_OPTION_LOOPBACK_ONLY; | options |= GNUNET_FS_DOWNLOAD_OPTION_LOOPBACK_ONLY; | |||
dc = GNUNET_FS_download_start (ctx, uri, NULL, filename, NULL, 0, | dc = GNUNET_FS_download_start (ctx, uri, NULL, filename, NULL, 0, | |||
skipping to change at line 243 | skipping to change at line 250 | |||
{ | { | |||
static const struct GNUNET_GETOPT_CommandLineOption options[] = { | static const struct GNUNET_GETOPT_CommandLineOption options[] = { | |||
{'a', "anonymity", "LEVEL", | {'a', "anonymity", "LEVEL", | |||
gettext_noop ("set the desired LEVEL of receiver-anonymity"), | gettext_noop ("set the desired LEVEL of receiver-anonymity"), | |||
1, &GNUNET_GETOPT_set_uint, &anonymity}, | 1, &GNUNET_GETOPT_set_uint, &anonymity}, | |||
{'D', "delete-incomplete", NULL, | {'D', "delete-incomplete", NULL, | |||
gettext_noop ("delete incomplete downloads (when aborted with CTRL-C)" ), | gettext_noop ("delete incomplete downloads (when aborted with CTRL-C)" ), | |||
0, &GNUNET_GETOPT_set_one, &delete_incomplete}, | 0, &GNUNET_GETOPT_set_one, &delete_incomplete}, | |||
{'n', "no-network", NULL, | {'n', "no-network", NULL, | |||
gettext_noop ("only search the local peer (no P2P network search)"), | gettext_noop ("only search the local peer (no P2P network search)"), | |||
1, &GNUNET_GETOPT_set_uint, &local_only}, | 0, &GNUNET_GETOPT_set_uint, &local_only}, | |||
{'o', "output", "FILENAME", | {'o', "output", "FILENAME", | |||
gettext_noop ("write the file to FILENAME"), | gettext_noop ("write the file to FILENAME"), | |||
1, &GNUNET_GETOPT_set_string, &filename}, | 1, &GNUNET_GETOPT_set_string, &filename}, | |||
{'p', "parallelism", "DOWNLOADS", | {'p', "parallelism", "DOWNLOADS", | |||
gettext_noop | gettext_noop | |||
("set the maximum number of parallel downloads that is allowed"), | ("set the maximum number of parallel downloads that is allowed"), | |||
1, &GNUNET_GETOPT_set_uint, ¶llelism}, | 1, &GNUNET_GETOPT_set_uint, ¶llelism}, | |||
{'r', "request-parallelism", "REQUESTS", | {'r', "request-parallelism", "REQUESTS", | |||
gettext_noop | gettext_noop | |||
("set the maximum number of parallel requests for blocks that is allow ed"), | ("set the maximum number of parallel requests for blocks that is allow ed"), | |||
End of changes. 15 change blocks. | ||||
14 lines changed or deleted | 24 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |