From 8f73f5e8d01fab77ba14083ae30f4ae859a6ecc1 Mon Sep 17 00:00:00 2001 From: Thomas Osterried Date: Mon, 4 Jul 2016 10:14:57 +0200 Subject: added "-d a" option to mheard: Display the data from c and s combined in one view. Requires wide screen. Patch by Folkert van Heusden Signed-off-by: Thomas Osterried --- ax25/mheard.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 63 insertions(+), 8 deletions(-) (limited to 'ax25/mheard.c') diff --git a/ax25/mheard.c b/ax25/mheard.c index 2370a46..92fcf75 100644 --- a/ax25/mheard.c +++ b/ax25/mheard.c @@ -41,16 +41,19 @@ static void PrintHeader(int data) { switch (data) { case 0: - printf("Callsign Port Packets Last Heard\n"); + printf("Callsign Port Packets Last Heard\n"); break; case 1: - printf("Callsign Port\n"); + printf("Callsign Port\n"); break; case 2: - printf("Callsign Port #I #S #U First Heard Last Heard\n"); + printf("Callsign Port #I #S #U First Heard Last Heard\n"); break; case 3: - printf("Callsign Port Packets Type PIDs\n"); + printf("Callsign Port Packets Type PIDs\n"); + break; + case 4: + printf("Callsign Port #I #S #U First Heard Last Heard Packets Type PIDs Targets\n"); break; } } @@ -68,7 +71,7 @@ static void PrintPortEntry(struct PortRecord *pr, int data) call = ax25_ntoa(&pr->entry.from_call); if ((s = strstr(call, "-0")) != NULL) *s = '\0'; - printf("%-10s %-5s %5d %s\n", + printf("%-9s %-5s %5d %s\n", call, pr->entry.portname, pr->entry.count, lh); break; case 1: @@ -102,14 +105,14 @@ static void PrintPortEntry(struct PortRecord *pr, int data) call = ax25_ntoa(&pr->entry.from_call); if ((s = strstr(call, "-0")) != NULL) *s = '\0'; - printf("%-10s %-5s %5d %5d %5d %s %s\n", + printf("%-9s %-5s %5d %5d %5d %s %s\n", call, pr->entry.portname, pr->entry.iframes, pr->entry.sframes, pr->entry.uframes, fh, lh); break; case 3: call = ax25_ntoa(&pr->entry.from_call); if ((s = strstr(call, "-0")) != NULL) *s = '\0'; - printf("%-10s %-5s %5d %5s ", + printf("%-9s %-5s %5d %5s ", call, pr->entry.portname, pr->entry.count, types[pr->entry.type]); if (pr->entry.mode & MHEARD_MODE_ARP) printf(" ARP"); @@ -137,6 +140,55 @@ static void PrintPortEntry(struct PortRecord *pr, int data) printf(" Unknown"); printf("\n"); break; + case 4: + strcpy(lh, ctime(&pr->entry.last_heard)); + lh[19] = 0; + strcpy(fh, ctime(&pr->entry.first_heard)); + fh[19] = 0; + call = ax25_ntoa(&pr->entry.from_call); + if ((s = strstr(call, "-0")) != NULL) + *s = '\0'; + printf("%-9s %-5s %5d %5d %5d %s %s", + call, pr->entry.portname, pr->entry.iframes, pr->entry.sframes, pr->entry.uframes, fh, lh); + printf("%5d %5s ", pr->entry.count, types[pr->entry.type]); + if (pr->entry.mode & MHEARD_MODE_ARP) + printf(" ARP "); + if (pr->entry.mode & MHEARD_MODE_FLEXNET) + printf(" FlexNet "); + if (pr->entry.mode & MHEARD_MODE_IP_DG) + printf(" IP-DG "); + if (pr->entry.mode & MHEARD_MODE_IP_VC) + printf(" IP-VC "); + if (pr->entry.mode & MHEARD_MODE_NETROM) + printf(" NET/ROM "); + if (pr->entry.mode & MHEARD_MODE_ROSE) + printf(" Rose "); + if (pr->entry.mode & MHEARD_MODE_SEGMENT) + printf(" Segment "); + if (pr->entry.mode & MHEARD_MODE_TEXNET) + printf(" TexNet "); + if (pr->entry.mode & MHEARD_MODE_TEXT) + printf(" Text "); + if (pr->entry.mode & MHEARD_MODE_PSATFT) + printf(" PacsatFT "); + if (pr->entry.mode & MHEARD_MODE_PSATPB) + printf(" PacsatPB "); + if (pr->entry.mode & MHEARD_MODE_UNKNOWN) + printf(" Unknown "); + if (pr->entry.mode == 0) + printf(" "); + + buffer[0] = '\0'; + for (i = 0; i < pr->entry.ndigis; i++) { + if (i) + strcat(buffer, ","); + call = ax25_ntoa(&pr->entry.digis[i]); + if ((s = strstr(call, "-0")) != NULL) + *s = '\0'; + strcat(buffer, call); + } + printf("%s\n", buffer); + break; } } @@ -310,6 +362,9 @@ int main(int argc, char *argv[]) case 's': data = 2; break; + case 'a': + data = 4; /* s + c */ + break; default: fprintf(stderr, "mheard: invalid display type '%s'\n", optarg); return 1; @@ -342,7 +397,7 @@ int main(int argc, char *argv[]) return 0; case '?': case ':': - fprintf(stderr, "Usage: %s [-d cmns] [-n] [-o cfpt] [-v] [port ...]\n", argv[0]); + fprintf(stderr, "Usage: %s [-d cmnsa] [-n] [-o cfpt] [-v] [port ...]\n", argv[0]); return 1; } } -- cgit v1.2.3