亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ftrfork.c

?? 智能設備中PDF閱讀器的源碼!用于windows mobile2003或者WM5以上
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************/
/*                                                                         */
/*  ftrfork.c                                                              */
/*                                                                         */
/*    Embedded resource forks accessor (body).                             */
/*                                                                         */
/*  Copyright 2004, 2005, 2006 by                                          */
/*  Masatake YAMATO and Redhat K.K.                                        */
/*                                                                         */
/*  FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are     */
/*  derived from ftobjs.c.                                                 */
/*                                                                         */
/*  This file is part of the FreeType project, and may only be used,       */
/*  modified, and distributed under the terms of the FreeType project      */
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
/*  this file you indicate that you have read the license and              */
/*  understand and accept it fully.                                        */
/*                                                                         */
/***************************************************************************/

/***************************************************************************/
/* Development of the code in this file is support of                      */
/* Information-technology Promotion Agency, Japan.                         */
/***************************************************************************/


#include <ft2build.h>
#include FT_INTERNAL_DEBUG_H
#include FT_INTERNAL_STREAM_H
#include FT_INTERNAL_RFORK_H


#undef  FT_COMPONENT
#define FT_COMPONENT  trace_raccess


  /*************************************************************************/
  /*************************************************************************/
  /*************************************************************************/
  /****                                                                 ****/
  /****                                                                 ****/
  /****               Resource fork directory access                    ****/
  /****                                                                 ****/
  /****                                                                 ****/
  /*************************************************************************/
  /*************************************************************************/
  /*************************************************************************/

  FT_BASE_DEF( FT_Error )
  FT_Raccess_Get_HeaderInfo( FT_Library  library,
                             FT_Stream   stream,
                             FT_Long     rfork_offset,
                             FT_Long    *map_offset,
                             FT_Long    *rdata_pos )
  {
    FT_Error       error;
    unsigned char  head[16], head2[16];
    FT_Long        map_pos, rdata_len;
    int            allzeros, allmatch, i;
    FT_Long        type_list;

    FT_UNUSED( library );


    error = FT_Stream_Seek( stream, rfork_offset );
    if ( error )
      return error;

    error = FT_Stream_Read( stream, (FT_Byte *)head, 16 );
    if ( error )
      return error;

    *rdata_pos = rfork_offset + ( ( head[0] << 24 ) |
                                  ( head[1] << 16 ) |
                                  ( head[2] <<  8 ) |
                                    head[3]         );
    map_pos    = rfork_offset + ( ( head[4] << 24 ) |
                                  ( head[5] << 16 ) |
                                  ( head[6] <<  8 ) |
                                    head[7]         );
    rdata_len = ( head[ 8] << 24 ) |
                ( head[ 9] << 16 ) |
                ( head[10] <<  8 ) |
                  head[11];

    /* map_len = head[12] .. head[15] */

    if ( *rdata_pos + rdata_len != map_pos || map_pos == rfork_offset )
      return FT_Err_Unknown_File_Format;

    error = FT_Stream_Seek( stream, map_pos );
    if ( error )
      return error;

    head2[15] = (FT_Byte)( head[15] + 1 );       /* make it be different */

    error = FT_Stream_Read( stream, (FT_Byte*)head2, 16 );
    if ( error )
      return error;

    allzeros = 1;
    allmatch = 1;
    for ( i = 0; i < 16; ++i )
    {
      if ( head2[i] != 0 )
        allzeros = 0;
      if ( head2[i] != head[i] )
        allmatch = 0;
    }
    if ( !allzeros && !allmatch )
      return FT_Err_Unknown_File_Format;

    /* If we have reached this point then it is probably a mac resource */
    /* file.  Now, does it contain any interesting resources?           */
    /* Skip handle to next resource map, the file resource number, and  */
    /* attributes.                                                      */
    (void)FT_STREAM_SKIP( 4        /* skip handle to next resource map */
                          + 2      /* skip file resource number */
                          + 2 );   /* skip attributes */

    if ( FT_READ_USHORT( type_list ) )
      return error;
    if ( type_list == -1 )
      return FT_Err_Unknown_File_Format;

    error = FT_Stream_Seek( stream, map_pos + type_list );
    if ( error )
      return error;

    *map_offset = map_pos + type_list;
    return FT_Err_Ok;
  }


  FT_BASE_DEF( FT_Error )
  FT_Raccess_Get_DataOffsets( FT_Library  library,
                              FT_Stream   stream,
                              FT_Long     map_offset,
                              FT_Long     rdata_pos,
                              FT_Long     tag,
                              FT_Long   **offsets,
                              FT_Long    *count )
  {
    FT_Error   error;
    int        i, j, cnt, subcnt;
    FT_Long    tag_internal, rpos;
    FT_Memory  memory = library->memory;
    FT_Long    temp;
    FT_Long    *offsets_internal;


    error = FT_Stream_Seek( stream, map_offset );
    if ( error )
      return error;

    if ( FT_READ_USHORT( cnt ) )
      return error;
    cnt++;

    for ( i = 0; i < cnt; ++i )
    {
      if ( FT_READ_LONG( tag_internal ) ||
           FT_READ_USHORT( subcnt )     ||
           FT_READ_USHORT( rpos )       )
        return error;

      FT_TRACE2(( "Resource tags: %c%c%c%c\n",
                  (char)( 0xff & ( tag_internal >> 24 ) ),
                  (char)( 0xff & ( tag_internal >> 16 ) ),
                  (char)( 0xff & ( tag_internal >>  8 ) ),
                  (char)( 0xff & ( tag_internal >>  0 ) ) ));

      if ( tag_internal == tag )
      {
        *count = subcnt + 1;
        rpos  += map_offset;

        error = FT_Stream_Seek( stream, rpos );
        if ( error )
          return error;

        if ( FT_NEW_ARRAY( offsets_internal, *count ) )
          return error;

        for ( j = 0; j < *count; ++j )
        {
          (void)FT_STREAM_SKIP( 2 ); /* resource id */
          (void)FT_STREAM_SKIP( 2 ); /* rsource name */

          if ( FT_READ_LONG( temp ) )
          {
            FT_FREE( offsets_internal );
            return error;
          }

          offsets_internal[j] = rdata_pos + ( temp & 0xFFFFFFL );

          (void)FT_STREAM_SKIP( 4 ); /* mbz */
        }

        *offsets = offsets_internal;

        return FT_Err_Ok;
      }
    }

    return FT_Err_Cannot_Open_Resource;
  }


#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK

  /*************************************************************************/
  /*************************************************************************/
  /*************************************************************************/
  /****                                                                 ****/
  /****                                                                 ****/
  /****                     Guessing functions                          ****/
  /****                                                                 ****/
  /****            When you add a new guessing function,                ****/
  /****           update FT_RACCESS_N_RULES in ftrfork.h.               ****/
  /****                                                                 ****/
  /*************************************************************************/
  /*************************************************************************/
  /*************************************************************************/

  typedef FT_Error
  (*raccess_guess_func)( FT_Library  library,
                         FT_Stream   stream,
                         char *      base_file_name,
                         char      **result_file_name,
                         FT_Long    *result_offset );


  static FT_Error
  raccess_guess_apple_double( FT_Library  library,
                              FT_Stream   stream,
                              char *      base_file_name,
                              char      **result_file_name,
                              FT_Long    *result_offset );

  static FT_Error
  raccess_guess_apple_single( FT_Library  library,
                              FT_Stream   stream,
                              char *      base_file_name,
                              char      **result_file_name,
                              FT_Long    *result_offset );

  static FT_Error
  raccess_guess_darwin_ufs_export( FT_Library  library,
                                   FT_Stream   stream,
                                   char *      base_file_name,
                                   char      **result_file_name,
                                   FT_Long    *result_offset );

  static FT_Error
  raccess_guess_darwin_hfsplus( FT_Library  library,
                                FT_Stream   stream,
                                char *      base_file_name,
                                char      **result_file_name,
                                FT_Long    *result_offset );

  static FT_Error
  raccess_guess_vfat( FT_Library  library,
                      FT_Stream   stream,
                      char *      base_file_name,
                      char      **result_file_name,
                      FT_Long    *result_offset );

  static FT_Error
  raccess_guess_linux_cap( FT_Library  library,
                           FT_Stream   stream,
                           char *      base_file_name,
                           char      **result_file_name,
                           FT_Long    *result_offset );

  static FT_Error
  raccess_guess_linux_double( FT_Library  library,
                              FT_Stream   stream,
                              char *      base_file_name,
                              char      **result_file_name,
                              FT_Long    *result_offset );

  static FT_Error
  raccess_guess_linux_netatalk( FT_Library  library,
                                FT_Stream   stream,
                                char *      base_file_name,
                                char      **result_file_name,
                                FT_Long    *result_offset );


  /*************************************************************************/
  /****                                                                 ****/
  /****                       Helper functions                          ****/
  /****                                                                 ****/
  /*************************************************************************/

  static FT_Error
  raccess_guess_apple_generic( FT_Library  library,
                               FT_Stream   stream,
                               char *      base_file_name,
                               FT_Int32    magic,
                               FT_Long    *result_offset );

  static FT_Error
  raccess_guess_linux_double_from_file_name( FT_Library  library,
                                             char *      file_name,
                                             FT_Long    *result_offset );

  static char *
  raccess_make_file_name( FT_Memory    memory,
                          const char  *original_name,
                          const char  *insertion );


  FT_BASE_DEF( void )
  FT_Raccess_Guess( FT_Library  library,
                    FT_Stream   stream,
                    char*       base_name,
                    char      **new_names,
                    FT_Long    *offsets,
                    FT_Error   *errors )
  {
    FT_Long  i;


    raccess_guess_func  funcs[FT_RACCESS_N_RULES] =
    {
      raccess_guess_apple_double,
      raccess_guess_apple_single,
      raccess_guess_darwin_ufs_export,
      raccess_guess_darwin_hfsplus,
      raccess_guess_vfat,
      raccess_guess_linux_cap,
      raccess_guess_linux_double,
      raccess_guess_linux_netatalk,
    };

    for ( i = 0; i < FT_RACCESS_N_RULES; i++ )
    {
      new_names[i] = NULL;
      errors[i] = FT_Stream_Seek( stream, 0 );
      if ( errors[i] )
        continue ;

      errors[i] = (funcs[i])( library, stream, base_name,
                              &(new_names[i]), &(offsets[i]) );
    }

    return;
  }


  static FT_Error
  raccess_guess_apple_double( FT_Library  library,
                              FT_Stream   stream,
                              char *      base_file_name,
                              char      **result_file_name,
                              FT_Long    *result_offset )
  {
    FT_Int32  magic = ( 0x00 << 24 | 0x05 << 16 | 0x16 << 8 | 0x07 );


    *result_file_name = NULL;
    return raccess_guess_apple_generic( library, stream, base_file_name,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品在线三区| 欧美午夜片在线看| 美国一区二区三区在线播放| 亚洲成人激情综合网| 一区二区三区精品| 一区二区三区久久| 午夜激情久久久| 午夜精品久久久久影视| 亚洲不卡一区二区三区| 日韩福利电影在线观看| 婷婷丁香久久五月婷婷| 爽爽淫人综合网网站| 亚洲一区二区高清| 日韩在线观看一区二区| 久久国产精品色| 国产成人综合在线观看| 成人永久aaa| 91麻豆免费看片| 欧美日韩国产一级片| 欧美成人官网二区| 国产农村妇女毛片精品久久麻豆| 国产欧美一区视频| 亚洲在线成人精品| 美女任你摸久久| 国产成人av电影在线播放| 91麻豆国产福利精品| 欧美日韩综合一区| www日韩大片| 亚洲日本在线a| 日韩电影在线观看网站| 国产一区二区成人久久免费影院| jlzzjlzz欧美大全| 91精品国产aⅴ一区二区| 久久久蜜臀国产一区二区| 亚洲欧洲成人av每日更新| 午夜av一区二区三区| 成人性生交大片免费看视频在线| 欧美性xxxxxx少妇| 国产欧美日韩在线| 日韩成人免费电影| 99这里都是精品| 欧美精品一级二级| 国产精品久久久久久久裸模| 日韩国产欧美一区二区三区| 成人性生交大片免费看视频在线 | 麻豆精品视频在线观看| 高清国产一区二区| 欧美高清视频www夜色资源网| 国产三级一区二区三区| 视频在线观看一区| 91在线国产福利| 亚洲精品一区二区三区在线观看| 亚洲卡通欧美制服中文| 国产一区视频导航| 337p亚洲精品色噜噜| 亚洲美女视频在线| 国产精品亚洲一区二区三区妖精 | 日韩欧美国产系列| 亚洲一区二区三区四区五区黄| 国产99精品国产| 精品久久99ma| 五月天一区二区| 成+人+亚洲+综合天堂| 久久久久久久久久电影| 毛片av一区二区| 欧美日韩一区视频| 亚洲第一av色| 欧美日韩一区三区四区| 亚洲一区二三区| 欧洲精品一区二区| 玉米视频成人免费看| 972aa.com艺术欧美| 中文字幕在线观看不卡| 成人午夜在线播放| 国产欧美日韩中文久久| 成人免费视频一区二区| 欧美高清在线精品一区| 丰满少妇在线播放bd日韩电影| 久久久久青草大香线综合精品| 韩国成人福利片在线播放| www一区二区| 国产米奇在线777精品观看| 26uuu色噜噜精品一区| 国产一区视频网站| 国产精品久久久久久一区二区三区 | 国产性色一区二区| 高清成人在线观看| 亚洲男人的天堂在线观看| 99视频在线观看一区三区| 亚洲人成小说网站色在线| 在线视频综合导航| 天天av天天翘天天综合网| 日韩天堂在线观看| 韩国欧美国产1区| 亚洲国产高清在线| 色狠狠色噜噜噜综合网| 午夜电影一区二区| 久久综合精品国产一区二区三区| 黄页视频在线91| 国产精品色呦呦| 欧美日韩精品久久久| 日本成人在线一区| 久久人人超碰精品| 一本在线高清不卡dvd| 视频一区欧美日韩| 国产亚洲va综合人人澡精品 | 亚洲一区二区欧美| 精品国内二区三区| 91久久精品国产91性色tv| 青草av.久久免费一区| 欧美国产精品专区| 在线播放中文一区| 风间由美性色一区二区三区| 亚洲电影一区二区| 久久精品一区二区三区av| 欧美综合欧美视频| 国产精品一区在线观看你懂的| 亚洲老司机在线| 久久精品网站免费观看| 欧美精品在线一区二区三区| 99国产精品一区| 国内成人免费视频| 亚洲v日本v欧美v久久精品| 欧美韩国一区二区| 欧美一区二区大片| 欧美色综合网站| www.亚洲免费av| 狠狠狠色丁香婷婷综合久久五月| 亚洲免费在线播放| 亚洲国产精品成人综合色在线婷婷| 欧美日韩中文字幕一区| 99免费精品在线| 国内外成人在线| 日韩影视精彩在线| 亚洲一卡二卡三卡四卡无卡久久| 欧美国产乱子伦| 久久噜噜亚洲综合| 日韩精品一区二区三区中文精品| 欧美日韩一级视频| 欧美综合视频在线观看| 色久综合一二码| 不卡的看片网站| 成人小视频在线| 成人激情综合网站| 懂色av一区二区在线播放| 九九**精品视频免费播放| 午夜精品久久久久久久久久久 | 福利一区在线观看| 激情综合色综合久久综合| 热久久久久久久| 日本欧美一区二区三区| 午夜伊人狠狠久久| 首页亚洲欧美制服丝腿| 石原莉奈一区二区三区在线观看| 亚洲成人你懂的| 免费高清在线一区| 久久国产精品一区二区| 国产一区视频导航| 成人在线视频首页| 97se亚洲国产综合在线| 不卡av在线网| 色综合色综合色综合色综合色综合| 波多野结衣精品在线| av中文字幕在线不卡| 色哟哟在线观看一区二区三区| 一本久久a久久精品亚洲| 欧美网站大全在线观看| 91精品综合久久久久久| 日韩欧美视频一区| 久久久久久**毛片大全| 中文字幕精品三区| 亚洲人成在线播放网站岛国| 午夜久久久久久久久| 秋霞影院一区二区| 高潮精品一区videoshd| 在线观看一区日韩| 日韩欧美美女一区二区三区| 日本一区二区免费在线观看视频| 成人欧美一区二区三区小说| 亚洲亚洲精品在线观看| 美脚の诱脚舐め脚责91| 国产suv精品一区二区三区| 91亚洲精品乱码久久久久久蜜桃 | 日韩一区二区精品葵司在线| 国产情人综合久久777777| 亚洲最色的网站| 国产自产v一区二区三区c| 91无套直看片红桃| 日韩一级成人av| 亚洲欧美日韩久久| 久久精品国产澳门| 一本色道久久综合精品竹菊| 欧美电视剧免费全集观看| 成人欧美一区二区三区| 日本欧美久久久久免费播放网| 成av人片一区二区| 亚洲精品一线二线三线无人区| 亚洲一区二区在线观看视频| 国产·精品毛片| 欧美一卡二卡三卡|