青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 319, comments - 22, trackbacks - 0, articles - 11
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

轉載:http://www.cnblogs.com/fzzl/archive/2009/07/14/1522913.html

【轉】vs2005下的dirent.h  該方法同樣適用于VS2008 及VS2010

http://www.analogcn.com/Article/wz3/200802/20080202211037.html

 

dirent.h是gcc下的一個頭文件,而在VS2005中是沒有的。這個文件中封裝了幾個對目錄進行操作函數:

static DIR *opendir (const char *dirname);
static struct dirent *readdir (DIR *dirp);
static int closedir (DIR *dirp);

 對于在linux->windows之間進行程序移植來講常常會造成一些困擾,在網上仔細搜了一下,發現原來已經有位好同志寫了相應的移植代碼,如下所示:


typedef struct dirent {
  /* name of current directory entry (a multi-byte character string) */
  char d_name[MAX_PATH + 1];

  /* file attributes */
  WIN32_FIND_DATA data;
} dirent;


typedef struct DIR {
  /* current directory entry */
  dirent current;

  /* is there an un-processed entry in current? */
  int cached;

  /* file search handle */
  HANDLE search_handle;

  /* search pattern (3 = zero terminator + pattern "\\*") */
  TCHAR patt[MAX_PATH + 3];
} DIR;


static DIR *opendir (const char *dirname);
static struct dirent *readdir (DIR *dirp);
static int closedir (DIR *dirp);


/* use the new safe string functions introduced in Visual Studio 2005 */
#if defined(_MSC_VER) && _MSC_VER >= 1400
# define STRNCPY(dest,src,size) strncpy_s((dest),(size),(src),_TRUNCATE)
#else
# define STRNCPY(dest,src,size) strncpy((dest),(src),(size))
#endif


/*
 * Open directory stream DIRNAME for read and return a pointer to the
 * internal working area that is used to retrieve individual directory
 * entries.
 */
static DIR*
opendir(
    const char *dirname)
{
  DIR *dirp;
  assert (dirname != NULL);
  assert (strlen (dirname) < MAX_PATH);

  /* construct new DIR structure */
  dirp = (DIR*) malloc (sizeof (struct DIR));
  if (dirp != NULL) {
    TCHAR *p;
   
    /* prepare search pattern */
#ifdef _UNICODE

    /* convert directory name to wide character string */
    MultiByteToWideChar(
        CP_ACP,                                /* code page */
        0,                                     /* conversion flags */
        dirname,                               /* mb-string to convert */
        -1,                                    /* length of mb-string */
        dirp->patt,                            /* wc-string to produce */
        MAX_PATH);                             /* max length of wc-string */
    dirp->patt[MAX_PATH] = '\0';
   
    /* append search pattern to directory name */
    p = wcschr (dirp->patt, '\0');
    if (dirp->patt < p  &&  *(p-1) != '\\'  &&  *(p-1) != ':') {
      *p++ = '\\';
    }
    *p++ = '*';
    *p = '\0';

#else /* !_UNICODE */
   
    /* take directory name... */
    STRNCPY (dirp->patt, dirname, sizeof(dirp->patt));
    dirp->patt[MAX_PATH] = '\0';
   
    /* ... and append search pattern to it */
    p = strchr (dirp->patt, '\0');
    if (dirp->patt < p  &&  *(p-1) != '\\'  &&  *(p-1) != ':') {
      *p++ = '\\';
    }
    *p++ = '*';
    *p = '\0';
   
#endif /* !_UNICODE */

    /* open stream and retrieve first file */
    dirp->search_handle = FindFirstFile (dirp->patt, &dirp->current.data);
    if (dirp->search_handle == INVALID_HANDLE_VALUE) {
      /* invalid search pattern? */
      free (dirp);
      return NULL;
    }

    /* there is an un-processed directory entry in memory now */
    dirp->cached = 1;
   
  }
  return dirp;
}


/*
 * Read a directory entry, and return a pointer to a dirent structure
 * containing the name of the entry in d_name field.  Individual directory
 * entries returned by this very function include regular files,
 * sub-directories, pseudo-directories "." and "..", but also volume labels,
 * hidden files and system files may be returned. 
 */
static struct dirent *
readdir(
    DIR *dirp)
{
  assert (dirp != NULL);

  if (dirp->search_handle == INVALID_HANDLE_VALUE) {
    /* directory stream was opened/rewound incorrectly or it ended normally */
    return NULL;
  }

  /* get next directory entry */
  if (dirp->cached != 0) {
    /* a valid directory entry already in memory */
    dirp->cached = 0;
  } else {
    /* read next directory entry from disk */
    if (FindNextFile (dirp->search_handle, &dirp->current.data) == FALSE) {
      /* the very last file has been processed or an error occured */
      FindClose (dirp->search_handle);
      dirp->search_handle = INVALID_HANDLE_VALUE;
      return NULL;
    }
  }

  /* copy directory entry to d_name */
#ifdef _UNICODE
 
  /* convert entry name to multibyte */
  WideCharToMultiByte(
      CP_ACP,                                  /* code page */
      0,                                       /* conversion flags */
      dirp->current.data.cFileName,            /* wc-string to convert */
      -1,                                      /* length of wc-string */
      dirp->current.d_name,                    /* mb-string to produce */
      MAX_PATH,                                /* max length of mb-string */
      NULL,                                    /* use sys default character */
      NULL);                                   /* don't care  */
  dirp->current.d_name[MAX_PATH] = '\0';
 
#else /* !_UNICODE */

  /* copy as a multibyte character string */
  STRNCPY (dirp->current.d_name, dirp->current.data.cFileName, sizeof(dirp->current.d_name));
  dirp->current.d_name[MAX_PATH] = '\0';

#endif /* !_UNICODE */
 
  return &dirp->current;
}


/*
 * Close directory stream opened by opendir() function.  Close of the
 * directory stream invalidates the DIR structure as well as any previously
 * read directory entry.
 */
static int
closedir(
    DIR *dirp)
{
  assert (dirp != NULL);
 
  /* release search handle */
  if (dirp->search_handle != INVALID_HANDLE_VALUE) {
    FindClose (dirp->search_handle);
    dirp->search_handle = INVALID_HANDLE_VALUE;
  }

  /* release directory handle */
  free (dirp);
  return 0;
}

此文件可從http://www.softagalleria.net/dirent/index.en.html下載得到,直接將它放在VS2005的include目錄就OK 了!

開網店http://www.5678520.com/怎么樣開網店

posted @ 2012-04-28 06:42 RTY 閱讀(9719) | 評論 (0)編輯 收藏

     摘要: 2011-04-15 11:09 46人閱讀 評論(0) 收藏 舉報摘自msdn,列在這里方便查閱。The following tables show the format specifiers recognized by the debugger. SpecifierFormatExpressionValue Displayedd,isigned...  閱讀全文

posted @ 2012-04-24 22:37 RTY 閱讀(728) | 評論 (1)編輯 收藏

     摘要: HomeLibraryLearnDownloadsSupportCommunitySign in | 中國(簡體中文) |  | MSDN LibraryDevelopment Tools and LanguagesVisual Studio 2008Visual StudioApplication Development in Visu...  閱讀全文

posted @ 2012-04-24 21:42 RTY 閱讀(805) | 評論 (0)編輯 收藏

     摘要: HomeLibraryLearnDownloadsSupportCommunitySign in | 中國(簡體中文) |  | MSDN LibraryDevelopment Tools and LanguagesVisual Studio 2010Visual StudioApplication Development in Visu...  閱讀全文

posted @ 2012-04-24 21:39 RTY 閱讀(631) | 評論 (0)編輯 收藏

Mailing Lists: Apple Mailing Lists
Image of Mac OS face in stamp
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Find path of an application


  • SubjectRe: Find path of an application
  • From: Terry Lambert <email@hidden>
  • Date: Tue, 16 Dec 2008 02:01:54 -0800
  • Delivered-to: email@hidden
  • Delivered-to: email@hidden

On Dec 16, 2008, at 1:00 AM, Rakesh Singhal wrote:
I am done with finding the process is running or not. Thanks a lot. Still I am stuck with second issue to find the path to my application in my system. Actually there are 3 steps:

1. To know that application is running or not?  Now it is done. 2. If not then get the path of application where it was installed (user can change the path during installation). 3. Launch the application.

My code is standard C++ tool so I want to use only C and C++ APIs. Please suggest me. 

You said this was a GUI app that you didn't control the sources to. So control it anyway by renaming the binary in the bundle and putting a stub in there that will save off the id for you and then reexec the real binary:


--- example with no error checking --- #include <mach-o/dyld.h>	/* _NSGetExecutablePath */ #include <limits.h>		/* PATH_MAX */ #include <unistd.h>		/* execve */ #include <libgen.h>		/* dirname */ #include <string.h>		/* strcpy */

#define BINARYNAME	"myreal_executable"

int main(int ac, char *av[]) { 	char pathbuf[PATH_MAX + 1]; 	char real_executable[PATH_MAX + 1]; 	char *bundle_id; 	int  bufsize = sizeof(pathbuf);

	_NSGetExecutablePath( pathbuf, &bufsize);

	bundle_id = dirname(pathbuf);

	strcpy(real_executable, bundle_id); 	strcat(real_executable, "/"); 	strcat(real_executable, BINARYNAME);

	execv(real_executable, av); } --------------------

Then write the path into /var/run/program.<pid> before you do the execv call to give control to the real binary.

Then in your other program go looking for /var/run/program.*. When you find one, take the pid and do an atoi() on it to get the integer pid back. Then end it a kill(pid, 0).

This function will return one of three things:

(1) 0, indicating that the process exists and you have the right to send it signals

(2) -1, with errno set to EPERM, indicating that the process exists and you do not have rights to send it a signal

(3) -1, with errno set to ESRCH, indicating that the process does not (yet) exist

-

Ideally, all this would be unnecessary because you put your daemon and the program you want to give it a UI into the same bundle, which ,means either one of them can find the other by looking at the dirname() from their own call to _NSGetExecutablePath().

No grovelling around trying to find out where something came from, because it tells you.

-- Terry _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-dev mailing list      (email@hidden) Help/Unsubscribe/Update your Subscription: This email sent to email@hidden  
References: 
 >Find path of an application (From: "Rakesh Singhal" <email@hidden>)
 >Re: Find path of an application (From: Jean-Daniel Dupas <email@hidden>)
 >Re: Find path of an application (From: "Rakesh Singhal" <email@hidden>)
 >Re: Find path of an application (From: Jean-Daniel Dupas <email@hidden>)
 >Re: Find path of an application (From: "Rakesh Singhal" <email@hidden>)

posted @ 2012-04-18 22:44 RTY 閱讀(621) | 評論 (0)編輯 收藏

@executable path, @load path and @rpath

2010年11月6日 by Wincent Colaiuta

Note: this article is actually about the @executable_path, @load_path and @rpath install paths used by the linker on Mac OS X; wiki titles can't include underscores, however, because they are ambiguous with spaces.

Absolute paths

Useful for frameworks installed in shared locations. Example:

  • Install path: /Library/Frameworks/Foo.framework/Versions/A/Foo

@executable_path

Useful for frameworks embedded inside applications, because it allows you to specify the location of the framework relative to the application's executable:

  • Install path: @executable_path/../Frameworks/Foo.framework/Versions/A/Foo
  • Application location: /Applications/Foo.app
  • Executable path: /Applications/Foo.app/Contents/MacOS
  • Framework location: /Applications/Foo.app/Contents/Frameworks/Foo.framework
  • Linker puts all this together to figure out that the framework binary can be found at: /Applications/Foo.app/Contents/MacOS/../Frameworks/Foo.framework/Versions/A/Foo

@loader_path

Available from Mac OS X 10.4 Tiger onwards; useful for frameworks embedded inside plug-ins, because it allows you to specify the location of the framework relative to the plug-in's code (remember, plug-ins may not actually know where they are going to be installed, relative to the application, so knowing @executable_path doesn't help us in this case):

  • Install path: @loader_path/../Frameworks/Foo.framework/Versions/A/Foo
  • Application location: /Applications/Foo.app
  • Plug-in location: /Library/Application Support/Foo/Plug-Ins/Bar.bundle
  • Executable path: /Applications/Foo.app/Contents/MacOS
  • Loader path: /Library/Application Support/Foo/Plug-Ins/Bar.bundle/Contents/MacOS
  • Framework location: /Library/Application Support/Foo/Plug-Ins/Bar.bundle/Contents/Frameworks/Foo.framework
  • Linker puts all this together to figure out that the framework binary can be found at: /Library/Application Support/Foo/Plug-Ins/Bar.bundle/Contents/MacOS/../Frameworks/Foo.framework/Versions/A/Foo

Note that if the "loader" is an application rather than a plug-in, the @loader_path ends up being equivalent to @executable_path.

@rpath

New in Mac OS X 10.5 Leopard is @rpath. Key points:

  • @rpath instructs the dynamic linker to search a list of paths in order to locate the framework
  • critically, this list is embedded in the loading application
  • this means that a single framework with @rpath/Foo.framework/Versions/A/Foo can be made to work in a number of different ways; that is, you are effectively no longer limited by the choice of specifying your "install path" using either @executable_path or @loader_path
  • the down side: you now have to pass additional linker flags when building the host application (eg. -rpath @executable_path/../Frameworks or /Library/Frameworks; note that specifying both will cause the dynamic linker to try looking in both locations)

Sources

posted @ 2012-04-18 06:14 RTY 閱讀(1520) | 評論 (0)編輯 收藏

真的坑爹,今天才開始玩MAC OX,裝了個最新版本的10.7.3,只能裝XCODE 4.3 這個月剛發行的版本。

安裝時發現沒有install過程,直接雙擊就進入開發環境了。而且裝完后沒有gcc 等各種編譯工具,在TERMINAL下各種命令不識別,想裝ruby的各種開發工具,都不行了。

 

查了半天才發現:

Apple announced Xcode 4.3 for OSX Lion and 4.4 for OSX Mountain Lion last week. The major difference is that Xcode no longer provide an installer which is good thing because you now could update Xcode with AppStore in the future, plus it is much easier to carry the development environment with you. However, there is a little problem with this new version of Xcode, is that all command line toolsets and compilers are not visible in terminal. 

解決方案一:
A simple fix is to update your PATH env:

export PATH=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:$PATH

Please be noted that clang does not reside in /Developer/usr/bin, it is now in /Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

Now you could access to gcc, g++, git or any toolsets bundled with Xcode. For your convenience, it is recommended to include it in your .bash_profile.

解決方案二:

You can install these additional tools directly in Xcode :
Preferences > Downloads > Command Line Tools > Install


SO. What a fUUUcking day!

posted @ 2012-04-07 21:50 RTY 閱讀(754) | 評論 (0)編輯 收藏

原文:http://blog.sina.com.cn/s/blog_5a6efa330100x3sp.html

10月12日全新的IOS 5系統可供下載后,Mac OS也升級到了10.7.2,10.7.2支持iCloud 全套云服務,用戶可以將自己的數據自動存儲到iCloud中并推送到所有設備。另外本次更新主要包括常規性修復,增強了穩定性、兼容性和安全性等。
但很多黑蘋果的朋友在更新10.7.2版本后,發現系統無法啟動,出現五國或者禁止符號等錯誤。本文只針對采用虛擬機(VMware或者VirtualBOX)的朋友,具體解決方案如下;
原因就是:升級后AppleLSIFusionMPT.kext 出了問題,這個可以在升級補丁前備份AppleLSIFusionMPT.kext,完了后AppleLSIFusionMPT.kext備份到之前的文件夾。
具體解決方法是:
1、首先正常啟動虛擬機后,進入Mac OS X 10.7.1操作系統內。

原版本為:11B26

VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案

VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案

2、啟動“終端”程序(在“前往-實用工具”中)
3、在終端命令行下完整輸入如下引號內的命令(意思是備份AppleLSIFusionMPT.kext文件到當前目錄)
“cp -rv /System/Library/Extensions/AppleLSIFusionMPT.kext  .“
注意最后一個點號不要忘記(指備份到當前目錄),而且大小寫也不能錯(我沒試過全部小寫,我印象中Unix系統都是大小寫敏感的,這一點和windows不一樣)
輸入之后,按回車,會出現一大堆文字,表示一些文件被正常備份下來。
VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案

 
4、不要關閉終端,然后開始正常的10.7.2補丁升級操作(這個步驟不會很快,尤其是在虛擬機下,可以干點別的,或者看我繼續往下說)
蘋果官方10.7.2升級包地址
http://support.apple.com/downloads/DL1459/en_US/MacOSXUpdCombo10.7.2.dmg
5、【切記】順利升級完成后,不要立刻啟動操作系統!而是重新回到終端命令行下
6、輸入如下引號內命令(意思是刪除在Lion10.7.2升級過程中系統又安裝上的AppleLSIFusionMPT.kext,這個文件是Lion10.7.2版本的,不好用,必須先刪除!)
”sudo rm -rfv /System/Library/Extensions/AppleLSIFusionMPT.kext“
回車,會提示你輸入密碼,輸入你登錄密碼即可。可能屏幕沒有顯示,所以你一定要看好了提示文字(懂點英文還是必須的)
 VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案


再輸入引號內命令(意思是將升級前備份在當前目錄下的AppleLSIFusionMPT.kext文件,是Lion 10.7.1版本的,重新拷貝到原系統中)
”sudo cp -rv AppleLSIFusionMPT.kext /System/Library/Extensions“

VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案


7、正常重啟,大功告成!看到版本已經變成10.7.2了。版本號為:Mac OS X Lion (11C74)
 VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案

VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案

VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案
    Lion 10.7.2的主要功能之一,iCloud出來了。

這個修改版起碼小的升級都沒有問題,而且常用的功能都使用正常,起碼我的iphone連上了itunes
假如已經升級了,顯然是無法啟動的,那么可以用筆者以下的解決方案來解決。實現原理就是使用Windows PE盤進入系統,然后利用Transmac工具(至于為什么不用Macdrive,因為它不能在PE下使用,而且還不免費)打開系統盤/System/Library/Extensions/,將AppleLSIFusionMPT.kext替換,可能需要兩次才能生效,但是此教程是一定能夠成功的。圖文教程如下;(當然也是從insanelymac學來的),我直接把重要的地方粘貼過來了(部分加上了細節)
*本文將利用到的工具*(Transmac和AppleLSIFusionMPT.kext文件)
下載地址: http://m1.mail.sina.com.cn/apps/netdisk/download.php?id=e6f5482c11f317df981ddb0f1307cfca
Mac_OS_X_10.7.2系統替換文件和工具by_dehe1988.rar
 VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案
使用PE工具進入系統,本人使用的是“深山紅葉”大神工具包。PS:各種PE系統都行,這個只是提供一個修改的環境!
 

VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案
系統界面
 
VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案



輸入下載地址。如果很懶,也可以先下載,再發送到自己的郵箱中,再登陸自己郵箱下載,貌似更復雜?
 VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案


文件約1.5MB,很好下載的!
 VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案


Transmac的界面,該軟件可以讀取覽蘋果文件系統HFS+,而且可以在PE環境下運行。但Transmac默認只能讀取,因此需要設置。 
 VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案


容許讀寫打開。關閉,再一次打開就會生效了。
 
VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案


找到/System/Library/Extensions/目錄下,將AppleLSIFusionMPT.kext復制到此替換。

VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案

VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案


 VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案

VMware虛擬機從Mac <wbr>OS <wbr>Lion <wbr>10.7.1更新到Mac <wbr>OS <wbr>Lion <wbr>10.7.2后無法正常啟動解決方案


 

posted @ 2012-04-07 14:24 RTY 閱讀(1486) | 評論 (0)編輯 收藏

     摘要: 原文:http://ideapad.zol.com.cn/56/160_557572.html靈感來了的時候,擋也擋不住,這個是真的!昨晚一個很偶然的機會下,我使用Vmware 8 安裝成功了Mac OS X 10.7(Lion)系統,實在是讓人非常興奮。再三申明,本人的電腦就是那種裝黑蘋果被判了死刑的電腦。關于死——喬布斯是這么說的“沒有人愿意死,即使想上天堂...  閱讀全文

posted @ 2012-04-07 07:45 RTY 閱讀(3284) | 評論 (0)編輯 收藏

     摘要: 原文:http://ideapad.zol.com.cn/57/160_560764.html樓主我之前發過的Vmware 8和VirtualBOX 安裝Lion的教程。1、全民吃蘋果,首發VirtualBOX安裝Mac OS X 10.7正式版_可完美升級,無bug http://ideapad.zol.com.cn/56/160_557572.html2、踏破鐵鞋,Vmware 8完...  閱讀全文

posted @ 2012-04-07 07:32 RTY 閱讀(878) | 評論 (0)編輯 收藏

僅列出標題
共31頁: 1 2 3 4 5 6 7 8 9 Last 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一本久道久久综合中文字幕| 国产视频久久| 一区二区免费在线观看| 亚洲精品久久久久久久久久久久久| 亚洲伦理在线观看| 99精品国产一区二区青青牛奶| 日韩视频久久| 亚洲永久视频| 久久久久国产精品麻豆ai换脸 | 国产毛片久久| 最新国产成人在线观看| 亚洲二区在线视频| 亚洲区中文字幕| 9l国产精品久久久久麻豆| 亚洲一区二区三| 欧美在线免费视屏| 模特精品在线| 日韩亚洲在线| 欧美一区中文字幕| 久久蜜桃香蕉精品一区二区三区| 久久久国产精彩视频美女艺术照福利| 老司机精品久久| 欧美日韩一区二区视频在线观看 | 亚洲人精品午夜| 日韩小视频在线观看| 亚洲一区中文| 欧美 日韩 国产在线| 亚洲国产毛片完整版| 亚洲一区二区免费| 久久青草福利网站| 国产精品九九| 在线观看欧美亚洲| 欧美中文在线观看国产| 欧美激情导航| 久久国产精品久久久久久久久久| 欧美日韩免费一区| 91久久线看在观草草青青| 午夜精品久久久久久久| 亚洲国产精品一区在线观看不卡| 欧美一二三区精品| 国产精品久久午夜夜伦鲁鲁| 亚洲精品日韩精品| 久久青草福利网站| 亚洲欧美日韩一区在线观看| 欧美日本一区二区三区| 亚洲激情国产精品| 久久久久久香蕉网| 亚洲一区二区高清视频| 欧美精品亚洲| 亚洲日韩欧美一区二区在线| 久久影视精品| 久久成人综合网| 国产日韩欧美一区二区三区在线观看 | 麻豆国产va免费精品高清在线| 一区二区三区高清在线观看| 欧美成人一区二区三区| 亚洲国产第一页| 久久免费国产精品| 久久都是精品| 亚洲欧美日韩国产综合| 亚洲人午夜精品免费| 蜜臀av在线播放一区二区三区| 国产日韩欧美麻豆| 久久久久久午夜| 久久久久成人网| 亚洲国产精品t66y| 亚洲高清免费| 欧美日韩亚洲视频| 亚洲欧美日韩高清| 午夜欧美大片免费观看| 国产日韩在线一区二区三区| 欧美在线观看视频一区二区三区 | 亚洲精品日本| 日韩午夜三级在线| 国产精品久在线观看| 欧美在线二区| 麻豆成人91精品二区三区| 亚洲人成人77777线观看| 亚洲二区在线视频| 欧美日韩一区免费| 久久大香伊蕉在人线观看热2| 欧美资源在线| 亚洲激情影院| 亚洲精品在线三区| 国产欧美日韩一区二区三区| 久久综合影视| 欧美精品一区二区三区蜜臀 | 激情久久一区| 亚洲欧洲一区二区三区| 国产精品国产一区二区| 久久亚洲风情| 欧美日本在线观看| 久久黄色小说| 欧美国产精品劲爆| 欧美一级久久久久久久大片| 久久婷婷蜜乳一本欲蜜臀| 这里只有精品在线播放| 欧美一区二区三区精品| 亚洲国产视频一区二区| 中文国产成人精品| 91久久夜色精品国产九色| 亚洲一区二区三区视频| 在线不卡亚洲| 亚洲午夜高清视频| 亚洲国语精品自产拍在线观看| 99国产一区| 在线观看不卡| 亚洲欧美另类中文字幕| 亚洲精品少妇网址| 午夜精品福利视频| 中文精品视频一区二区在线观看| 久久九九精品99国产精品| 亚洲私人影院| 欧美成人免费播放| 久久综合给合| 国产伦精品一区二区三区视频孕妇| 欧美激情1区2区3区| 国产欧美日韩91| 一本色道久久88综合日韩精品| 久久久综合香蕉尹人综合网| 欧美日韩国产综合一区二区| 久久综合精品一区| 国产精品日本一区二区| 亚洲经典在线| 91久久精品国产91性色| 久久一区亚洲| 美玉足脚交一区二区三区图片| 国产精品丝袜91| 一区二区三区免费在线观看| 亚洲精品之草原avav久久| 久久天天躁狠狠躁夜夜av| 久久久久久久精| 国产精品午夜av在线| 一本大道久久a久久综合婷婷| 99精品99久久久久久宅男| 欧美成人精品在线播放| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲国产视频直播| 99精品国产热久久91蜜凸| 亚洲精品久久久久久下一站 | 亚洲人成在线观看一区二区| 久久久av水蜜桃| 久久亚洲综合色| 激情综合网激情| 久久亚洲精品中文字幕冲田杏梨| 免费短视频成人日韩| 在线日本成人| 久久午夜视频| 亚洲国产欧美一区二区三区久久 | 亚洲天堂av在线免费观看| 欧美日韩国语| 亚洲影音一区| 老司机精品视频网站| 亚洲国产成人在线视频| 麻豆av一区二区三区| 欧美高清在线观看| 亚洲天堂久久| 国产精品v欧美精品∨日韩| 亚洲无毛电影| 久久成人人人人精品欧| 国产毛片一区二区| 亚洲欧美日韩视频一区| 欧美国产日韩精品| 亚洲一区二区三区在线| 国产精品v欧美精品∨日韩| 亚洲欧美日韩中文在线制服| 欧美一区二区在线视频| 极品少妇一区二区| 欧美不卡高清| 日韩视频中文| 欧美一区亚洲二区| 久久99在线观看| 亚洲欧洲一二三| 欧美日韩免费观看一区| 一区二区欧美视频| 久久一区视频| 亚洲性线免费观看视频成熟| 国产精品青草久久| 久久综合九色综合欧美狠狠| 亚洲精品视频免费| 久久精品视频在线观看| 亚洲欧洲日产国产综合网| 国产精品你懂的| 久久综合给合| 亚洲在线免费| 欧美激情精品| 性伦欧美刺激片在线观看| 亚洲国产另类 国产精品国产免费| 欧美日韩情趣电影| 蜜臀av一级做a爰片久久| 亚洲一本视频| 亚洲成人自拍视频| 久久婷婷国产麻豆91天堂| 中文精品一区二区三区| 尤物在线观看一区| 国产情人节一区| 欧美日韩一区二区精品| 欧美在线看片a免费观看| 亚洲免费av片| 亚洲激情图片小说视频|