void ascii_art(AVFrame *pFrame) { if(!initialized) { printf("warning: screen not initilized\n"); init_screen(TERM_W,TERM_H); } int y; uint8_t *lineptr; memset(sc_buf,32,buf_size); /* convert line by line */ for(y=0; y<h; y++) { lineptr = pFrame->data[0]+y*pFrame->linesize[0]; convert2ascii(sc_buf+w*y,lineptr,w); } display_buffer(); }
/* ARGSUSED */ char * inet_ntop(int af, const void *addr, char *buf, int addrlen) { static char local_buf[INET6_ADDRSTRLEN]; static char *err_buf1 = "<badaddr>"; static char *err_buf2 = "<badfamily>"; in6_addr_t *v6addr; uchar_t *v4addr; char *caddr; /* * We don't allow thread unsafe inet_ntop calls, they * must pass a non-null buffer pointer. For DEBUG mode * we use the ASSERT() and for non-debug kernel it will * silently allow it for now. Someday we should remove * the static buffer from this function. */ ASSERT(buf != NULL); if (buf == NULL) buf = local_buf; buf[0] = '\0'; /* Let user know politely not to send NULL or unaligned addr */ if (addr == NULL || !(OK_32PTR(addr))) { #ifdef DEBUG cmn_err(CE_WARN, "inet_ntop: addr is <null> or unaligned"); #endif return (err_buf1); } #define UC(b) (((int)b) & 0xff) switch (af) { case AF_INET: ASSERT(addrlen >= INET_ADDRSTRLEN); v4addr = (uchar_t *)addr; (void) sprintf(buf, "%03d.%03d.%03d.%03d", UC(v4addr[0]), UC(v4addr[1]), UC(v4addr[2]), UC(v4addr[3])); return (buf); case AF_INET6: ASSERT(addrlen >= INET6_ADDRSTRLEN); v6addr = (in6_addr_t *)addr; if (IN6_IS_ADDR_V4MAPPED(v6addr)) { caddr = (char *)addr; (void) sprintf(buf, "::ffff:%d.%d.%d.%d", UC(caddr[12]), UC(caddr[13]), UC(caddr[14]), UC(caddr[15])); } else if (IN6_IS_ADDR_V4COMPAT(v6addr)) { caddr = (char *)addr; (void) sprintf(buf, "::%d.%d.%d.%d", UC(caddr[12]), UC(caddr[13]), UC(caddr[14]), UC(caddr[15])); } else if (IN6_IS_ADDR_UNSPECIFIED(v6addr)) { (void) sprintf(buf, "::"); } else { convert2ascii(buf, v6addr); } return (buf); default: return (err_buf2); } #undef UC }