int readpdb(char *buf, psh_struct *psh, pdb_struct *pdb, int zflag, int bufsz ) { int iret=0; unsigned char b1,b2; unsigned long lval; int wmocnt, i, ioff; char *wbuf; char res_string[8]; char ldmname[256]; wmocnt = 0; memset(psh->pname,0,1024); memset(ldmname,0,sizeof(ldmname)); while((wmocnt<512)&&(buf[wmocnt] != '\n')) { if((unsigned char)buf[wmocnt] >= 32) { if((unsigned char)buf[wmocnt] > 32) strncat(psh->pname,buf+wmocnt,1); else strncat(psh->pname," ",1); } wmocnt++; } if(wmocnt > 0) nplInfo("%s %d\0",psh->pname, bufsz); if ( zflag ) { nplDebug ("compressed file %d\0",wmocnt+1); if( npunz ( buf + wmocnt + 1, &i, &ioff ) != 0) { pdb->platform = 0; pdb->channel = 0; pdb->year = 0; pdb->month = 0; pdb->day = 0; pdb->hour = 0; pdb->minute = 0; pdb->sector = 0; pdb->res = 0; sprintf(ldmname,"satz/ch%d/%s/%s/%04d%02d%02d %02d%02d/%s/%dkm/ %s\0", psh->ptype, (char *)platform_id((unsigned char)pdb->platform), (char *)channel_id((unsigned char)pdb->channel), pdb->year,pdb->month,pdb->day,pdb->hour,pdb->minute, (char *)sector_id((unsigned char)pdb->sector), pdb->res, psh->pname); strcpy(psh->pname, ldmname); pdb->len = -1; return ( -1 ); } else wbuf = (char *)(uncompr + ioff); } else wbuf = buf + wmocnt + 1; b1 = (unsigned char)wbuf[0]; pdb->source = b1; b1 = (unsigned char)wbuf[1]; pdb->platform = b1; b1 = (unsigned char)wbuf[2]; pdb->sector = b1; b1 = (unsigned char)wbuf[3]; pdb->channel = b1; b1 = (unsigned char)wbuf[4]; b2 = (unsigned char)wbuf[5]; lval = (b1 << 8) + b2; pdb->nrec = lval; b1 = (unsigned char)wbuf[6]; b2 = (unsigned char)wbuf[7]; lval = (b1 << 8) + b2; pdb->recsize = lval; b1 = (unsigned char)wbuf[8]; pdb->year = b1; if(pdb->year > 70) { pdb->year += 1900; } else pdb->year += 2000; b1 = (unsigned char)wbuf[9]; pdb->month = b1; b1 = (unsigned char)wbuf[10]; pdb->day = b1; b1 = (unsigned char)wbuf[11]; pdb->hour = b1; b1 = (unsigned char)wbuf[12]; pdb->minute = b1; b1 = (unsigned char)wbuf[13]; pdb->second = b1; b1 = (unsigned char)wbuf[14]; pdb->sechunds = b1; nplDebug("look time %04d%02d%02d %02d%02d %02d.%02d\0", pdb->year,pdb->month,pdb->day,pdb->hour,pdb->minute,pdb->second,pdb->sechunds); b1 = (unsigned char)wbuf[16]; b2 = (unsigned char)wbuf[17]; lval = (b1 << 8) + b2; pdb->nx = lval; if(pdb->nx < 1) iret = -1; b1 = (unsigned char)wbuf[18]; b2 = (unsigned char)wbuf[19]; lval = (b1 << 8) + b2; pdb->ny = lval; if(pdb->ny < 1) iret = -1; pdb->res = (unsigned char)wbuf[41]; memset(res_string,0,sizeof(res_string)); /* sprintf(res_string," %dkm\0",pdb->res); strcat(psh->pname,res_string); */ if ( zflag ) sprintf(ldmname,"satz\0"); else { sprintf(ldmname,"sat\0"); /* set Octet 43 to "128" since we will encode the data block with png */ wbuf[42] = 128; } sprintf(ldmname,"%s/ch%d/%s/%s/%04d%02d%02d %02d%02d/%s/%dkm/ %s\0", ldmname, psh->ptype, (char *)platform_id((unsigned char)pdb->platform), (char *)channel_id((unsigned char)pdb->channel), pdb->year,pdb->month,pdb->day,pdb->hour,pdb->minute, (char *)sector_id((unsigned char)pdb->sector), pdb->res, psh->pname); strcpy(psh->pname,ldmname); pdb->len = 512 + wmocnt; return(iret); }
void Print_Sfnt_Names( FT_Face face ) { FT_SfntName name; FT_UInt num_names, i; printf( "font string entries\n" ); num_names = FT_Get_Sfnt_Name_Count( face ); for ( i = 0; i < num_names; i++ ) { error = FT_Get_Sfnt_Name( face, i, &name ); if ( error == FT_Err_Ok ) { printf( " %-15s [%s]", name_id( name.name_id ), platform_id( name.platform_id ) ); switch ( name.platform_id ) { case TT_PLATFORM_APPLE_UNICODE: switch ( name.encoding_id ) { case TT_APPLE_ID_DEFAULT: case TT_APPLE_ID_UNICODE_1_1: case TT_APPLE_ID_ISO_10646: case TT_APPLE_ID_UNICODE_2_0: put_unicode_be16( name.string, name.string_len, 6 ); break; default: printf( "{unsupported encoding %d}", name.encoding_id ); break; } break; case TT_PLATFORM_MACINTOSH: if ( name.language_id != TT_MAC_LANGID_ENGLISH ) printf( " (language=%d)", name.language_id ); fputs( ":\n", stdout ); switch ( name.encoding_id ) { case TT_MAC_ID_ROMAN: /* FIXME: convert from MacRoman to ASCII/ISO8895-1/whatever */ /* (MacRoman is mostly like ISO8895-1 but there are */ /* differences) */ put_ascii( name.string, name.string_len, 6 ); break; default: printf( "{unsupported encoding %d}", name.encoding_id ); break; } break; case TT_PLATFORM_ISO: switch ( name.encoding_id ) { case TT_ISO_ID_7BIT_ASCII: case TT_ISO_ID_8859_1: put_ascii( name.string, name.string_len, 6 ); break; case TT_ISO_ID_10646: put_unicode_be16( name.string, name.string_len, 6 ); break; default: printf( "{unsupported encoding %d}", name.encoding_id ); break; } break; case TT_PLATFORM_MICROSOFT: if ( name.language_id != TT_MS_LANGID_ENGLISH_UNITED_STATES ) printf( " (language=0x%04x)", name.language_id ); fputs( ":\n", stdout ); switch ( name.encoding_id ) { /* TT_MS_ID_SYMBOL_CS is supposed to be Unicode, according to */ /* information from the MS font development team */ case TT_MS_ID_SYMBOL_CS: case TT_MS_ID_UNICODE_CS: put_unicode_be16( name.string, name.string_len, 6 ); break; default: printf( "{unsupported encoding %d}", name.encoding_id ); break; } break; default: printf( "{unsupported platform}" ); break; } printf( "\n" ); } } }