|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T b
Length: 8792 (0x2258) Types: TextFile Names: »bin2ascii.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0 └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« └─⟦e5a54fb17⟧ └─⟦this⟧ »pp-5.0/Tools/bin2ascii/bin2ascii.c«
/* bin2ascii: converts a Binary file to a ascii one */ # ifndef lint static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Tools/bin2ascii/RCS/bin2ascii.c,v 5.0 90/09/20 16:23:59 pp Exp Locker: pp $"; # endif /* * $Header: /cs/research/pp/hubris/pp-beta/Tools/bin2ascii/RCS/bin2ascii.c,v 5.0 90/09/20 16:23:59 pp Exp Locker: pp $ * * $Log: bin2ascii.c,v $ * Revision 5.0 90/09/20 16:23:59 pp * rcsforce : 5.0 public release * */ #include <stdio.h> #define ASC_HT 0x09 #define ASC_CR 0x0D #define ASC_DC1 0x11 #define ASC_DC3 0x13 #define ASC_0 0x30 #define ASC_1 0x31 #define ASC_2 0x32 #define ASC_3 0x33 #define ASC_4 0x34 #define ASC_5 0x35 #define ASC_6 0x36 #define ASC_7 0x37 #define ASC_8 0x38 #define ASC_9 0x39 #define ASC_A 0x41 #define ASC_B 0x42 #define ASC_C 0x43 #define ASC_D 0x44 #define ASC_E 0x45 #define ASC_F 0x46 #define ASC_X 0x58 #define ASC_DOLLAR 0x24 #define ASC_TILDE 0x7E #define ASC_CTL 0x01 #define ASC_NUM 0x02 #define ASC_UPP 0x04 #define ASC_LOW 0x08 #define ASC_SPA 0x10 #define ASC_PUN 0x20 #define ASC_ISCTL(chr) ( Asc_class[chr] & ASC_CTL ) #define ASC_ISNUMER(chr) ( Asc_class[chr] & ASC_NUM ) #define ASC_ISUPPER(chr) ( Asc_class[chr] & ASC_UPP ) #define ASC_ISLOWER(chr) ( Asc_class[chr] & ASC_LOW ) #define ASC_ISPUNCT(chr) ( Asc_class[chr] & ASC_PUN ) #define ASC_ISSPACE(chr) ( Asc_class[chr] & ASC_SPA ) #define ASC_ISALPHA(chr) ( Asc_class[chr] & (ASC_UPP|ASC_LOW) ) #define ASC_ISALPHANUM(chr) ( Asc_class[chr] & (ASC_UPP|ASC_LOW|ASC_NUM) ) #define ASC_ISPRINT(chr) \ ( Asc_class[chr] & (ASC_UPP|ASC_LOW|ASC_NUM|ASC_PUN|ASC_SPA) ) #define ASC_ISDEC(chr) ( Asc_value[chr] < 10 ) #define ASC_ISHEX(chr) ( Asc_value[chr] < 16 ) #define ASC_ISBIN(chr) ( Asc_value[chr] < 2 ) #define ASC_ISOCT(chr) ( Asc_value[chr] < 8 ) #define ASC_TOUPPER(chr) ( ASC_ISLOWER(chr) ? (chr)&~0x20 : (chr) ) #define ASC_TOLOWER(chr) ( ASC_ISUPPER(chr) ? (chr)| 0x20 : (chr) ) extern char Asc_class[]; extern char Asc_value[]; extern char Asc_digit[]; #define ILG 64 char Asc_class[256] = { ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_SPA, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_CTL, ASC_SPA, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_NUM, ASC_NUM, ASC_NUM, ASC_NUM, ASC_NUM, ASC_NUM, ASC_NUM, ASC_NUM, ASC_NUM, ASC_NUM, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_UPP, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_LOW, ASC_PUN, ASC_PUN, ASC_PUN, ASC_PUN, ASC_CTL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; char Asc_value[256] = { ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,ILG,ILG, ILG,ILG,ILG,ILG, ILG, 10, 11, 12, 13, 14, 15,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG, 10, 11, 12, 13, 14, 15,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG, ILG,ILG,ILG,ILG }; char Asc_digit[16] = { ASC_0, ASC_1, ASC_2, ASC_3, ASC_4, ASC_5, ASC_6, ASC_7, ASC_8, ASC_9, ASC_A, ASC_B, ASC_C, ASC_D, ASC_E, ASC_F }; #define NUM 16 /* --------------------- Begin Routines -------------------------------- */ main (argc, argv) int argc; char **argv; { FILE *fd; int c, i=0, flag=0; char hex[80], ascii[80]; if (argc != 2) return (printf ("\n\nUsage: bin2ascii file-name\n\n")); fd = fopen (argv[1], "r"); while ((c = getc(fd)) != EOF) { if (i == NUM) { sprbin (&ascii[0], &hex[0], NUM); printf ("%s\n", &ascii[0]); i=0; } hex[i] = c; i++; flag++; } if (flag) { sprbin (&ascii[0], &hex[0], NUM); printf ("%s\n", &ascii[0]); } fclose (fd); return; } /* --------------------- Static Routines ------------------------------- */ static sprbin (line, buf, max) unsigned char* line; unsigned char* buf; int max; { unsigned char *chrs, *nums; int c, i; chrs = line; nums = line + NUM; if (max > NUM) max = NUM; for (i=0; i<max; ++i) { if ((i&3) == 0) *nums++ = ' '; c = *buf++; *nums++ = Asc_digit[c>>4]; *nums++ = Asc_digit[c&0xF]; c &= 0x7F; *chrs++ = ASC_ISPRINT(c) && c!=ASC_HT ? c : '.'; } while (i++ < NUM) *chrs++ = ' '; *nums = '\0'; }