From: Anatol Belski Date: Tue, 22 Sep 2015 19:13:37 +0000 (+0200) Subject: initial ftok() implementation for win32 X-Git-Tag: php-7.1.0alpha1~991 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5def56e23f5494d69d6bc09460b8132f4e071139;p=php initial ftok() implementation for win32 --- diff --git a/win32/ftok.c b/win32/ftok.c new file mode 100644 index 0000000000..322d9e7462 --- /dev/null +++ b/win32/ftok.c @@ -0,0 +1,52 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 7 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2015 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Author: Anatol Belski | + +----------------------------------------------------------------------+ + */ + +#include "ftok.h" + +#include +#include + + +key_t +ftok(const char *pathname, int proj_id) +{ + HANDLE fh; + struct stat st; + BY_HANDLE_FILE_INFORMATION bhfi; + key_t ret; + + if (stat(pathname, &st) < 0) { + return (key_t)-1; + } + + if ((fh = CreateFile(pathname, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0)) == INVALID_HANDLE_VALUE) { + return (key_t)-1; + } + + if (!GetFileInformationByHandle(fh, &bhfi)) { + CloseHandle(fh); + return (key_t)-1; + } + + ret = (key_t) ((proj_id & 0xff) << 24 | (st.st_dev & 0xff) << 16 | ((bhfi.nFileIndexLow | (__int64)bhfi.nFileIndexHigh << 32) & 0xffff)); + + CloseHandle(fh); + + return ret; +} + diff --git a/win32/ftok.h b/win32/ftok.h new file mode 100644 index 0000000000..373c9949fa --- /dev/null +++ b/win32/ftok.h @@ -0,0 +1,27 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 7 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2015 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.01 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_01.txt | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Author: Anatol Belski | + +----------------------------------------------------------------------+ + */ + +#ifndef PHP_WIN32_GLOB_H +#define PHP_WIN32_GLOB_H 1 + +typedef int key_t; + +key_t ftok(const char *path, int id); + + +#endif /* PHP_WIN32_GLOB_H */