# HG changeset patch # User reimar # Date 1282383616 0 # Node ID 5f57e2bd697f2ba0c3763150d6dce71952c8cf7b # Parent 349f13e9d27b229ecf3ef4797182bd5e6b3a146b Simplify/fix printing of disc id/VUK diff -r 349f13e9d27b -r 5f57e2bd697f stream/stream_bd.c --- a/stream/stream_bd.c Sat Aug 21 09:27:15 2010 +0000 +++ b/stream/stream_bd.c Sat Aug 21 09:40:16 2010 +0000 @@ -131,6 +131,15 @@ return 1; } +#define ID_STR_LEN 41 +static void id2str(const uint8_t *id, int idlen, char dst[ID_STR_LEN]) +{ + int i; + idlen = FFMIN(idlen, 20); + for (i = 0; i < idlen; i++) + snprintf(dst + 2*i, 3, "%02"PRIx8, id[i]); +} + static int find_vuk(struct bd_priv *bd, const uint8_t discid[20]) { char filename[PATH_MAX]; @@ -197,12 +206,13 @@ unsigned char *buf; size_t file_size; int pos; - int i, j; + int i; struct AVAES *a; struct AVSHA *asha; stream_t *file; char filename[PATH_MAX]; uint8_t discid[20]; + char idstr[ID_STR_LEN]; snprintf(filename, sizeof(filename), BD_UKF_PATH, bd->device); file = open_stream(filename, NULL, NULL); @@ -229,10 +239,9 @@ av_free(asha); if (!find_vuk(bd, discid)) { + id2str(discid, 20, idstr); mp_msg(MSGT_OPEN, MSGL_ERR, - "No Volume Unique Key (VUK) found for this Disc: "); - for (j = 0; j < 20; j++) mp_msg(MSGT_OPEN, MSGL_ERR, "%02x", discid[j]); - mp_msg(MSGT_OPEN, MSGL_ERR, "\n"); + "No Volume Unique Key (VUK) found for this Disc: %s\n", idstr); av_free(buf); return 0; } @@ -253,14 +262,10 @@ a = av_malloc(av_aes_size); av_aes_init(a, bd->vuk.u8, 128, 1); - mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_BD_DISCID="); - for (j = 0; j < 20; j++) - mp_msg(MSGT_IDENTIFY, MSGL_INFO, "%02x", discid[j]); - mp_msg(MSGT_IDENTIFY, MSGL_INFO, "\n"); - mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_BD_VUK="); - for (j = 0; j < 20; j++) - mp_msg(MSGT_IDENTIFY, MSGL_INFO, "%02x", discid[j]); - mp_msg(MSGT_IDENTIFY, MSGL_INFO, "\n"); + id2str(discid, 20, idstr); + mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_BD_DISCID=%s\n", idstr); + id2str(bd->vuk.u8, 16, idstr); + mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_BD_VUK=%s\n", idstr); for (i = 0; i < bd->uks.count; i++) { av_aes_crypt(a, bd->uks.keys[i].u8, &buf[key_pos], 1, NULL, 1); // decrypt unit key