Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
Arquivo: ftdump.c Projeto: xahgo/tama
  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" );
      }
    }
  }