char *tr_strlsize(char *buf, guint64 bytes, size_t buflen) { if (!bytes) g_strlcpy(buf, Q_("None"), buflen); else tr_formatter_size_B(buf, bytes, buflen); return buf; }
static void showInfo (const tr_info * inf) { unsigned int i; char buf[128]; tr_file ** files; int prevTier = -1; /** *** General Info **/ printf ("GENERAL\n\n"); printf (" Name: %s\n", inf->name); printf (" Hash: %s\n", inf->hashString); printf (" Created by: %s\n", inf->creator ? inf->creator : "Unknown"); if (!inf->dateCreated) { printf (" Created on: Unknown\n"); } else { struct tm tm = *localtime (&inf->dateCreated); printf (" Created on: %s", asctime (&tm)); } if (inf->comment && *inf->comment) printf (" Comment: %s\n", inf->comment); printf (" Piece Count: %d\n", inf->pieceCount); printf (" Piece Size: %s\n", tr_formatter_mem_B (buf, inf->pieceSize, sizeof (buf))); printf (" Total Size: %s\n", tr_formatter_size_B (buf, inf->totalSize, sizeof (buf))); printf (" Privacy: %s\n", inf->isPrivate ? "Private torrent" : "Public torrent"); /** *** Trackers **/ printf ("\nTRACKERS\n"); for (i=0; i<inf->trackerCount; ++i) { if (prevTier != inf->trackers[i].tier) { prevTier = inf->trackers[i].tier; printf ("\n Tier #%d\n", prevTier + 1); } printf (" %s\n", inf->trackers[i].announce); } /** *** **/ if (inf->webseedCount > 0) { printf ("\nWEBSEEDS\n\n"); for (i=0; i<inf->webseedCount; ++i) printf (" %s\n", inf->webseeds[i]); } /** *** Files **/ printf ("\nFILES\n\n"); files = tr_new (tr_file*, inf->fileCount); for (i=0; i<inf->fileCount; ++i) files[i] = &inf->files[i]; qsort (files, inf->fileCount, sizeof (tr_file*), compare_files_by_name); for (i=0; i<inf->fileCount; ++i) printf (" %s (%s)\n", files[i]->name, tr_formatter_size_B (buf, files[i]->length, sizeof (buf))); tr_free (files); }