⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uniqid.c

📁 php-4.4.7学习linux时下载的源代码
💻 C
字号:
/*   +----------------------------------------------------------------------+   | PHP Version 4                                                        |   +----------------------------------------------------------------------+   | Copyright (c) 1997-2007 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: Stig S鎡her Bakken <ssb@fast.no>                             |   +----------------------------------------------------------------------+ *//* $Id: uniqid.c,v 1.31.8.4.8.3 2007/01/01 09:46:48 sebastian Exp $ */#include "php.h"#include <stdlib.h>#if HAVE_UNISTD_H#include <unistd.h>#endif#include <string.h>#include <errno.h>#include <stdio.h>#ifdef PHP_WIN32#include "win32/time.h"#else#include <sys/time.h>#endif#include "php_lcg.h"#include "uniqid.h"/* {{{ proto string uniqid(string prefix [, bool more_entropy])   Generates a unique ID */#ifdef HAVE_GETTIMEOFDAYPHP_FUNCTION(uniqid){	char *prefix;#if defined(__CYGWIN__)	zend_bool more_entropy = 1;#else	zend_bool more_entropy = 0;#endif	char uniqid[138];	int sec, usec, argc, prefix_len;	struct timeval tv;	argc = ZEND_NUM_ARGS();	if (zend_parse_parameters(argc TSRMLS_CC, "s|b", &prefix, &prefix_len,							  &more_entropy)) {		return;	}	/* Do some bounds checking since we are using a char array. */	if (prefix_len > 114) {		php_error_docref(NULL TSRMLS_CC, E_ERROR, "The prefix to uniqid should not be more than 114 characters.");		return;	}#if HAVE_USLEEP && !defined(PHP_WIN32)	if (!more_entropy) {#if defined(__CYGWIN__)		php_error_docref(NULL TSRMLS_CC, E_WARNING, "You must use 'more entropy' under CYGWIN.");		RETURN_FALSE;#else		usleep(1);#endif	}#endif	gettimeofday((struct timeval *) &tv, (struct timezone *) NULL);	sec = (int) tv.tv_sec;	usec = (int) (tv.tv_usec % 0x100000);	/* The max value usec can have is 0xF423F, so we use only five hex	 * digits for usecs.	 */	if (more_entropy) {		sprintf(uniqid, "%s%08x%05x%.8f", prefix, sec, usec, php_combined_lcg(TSRMLS_C) * 10);	} else {		sprintf(uniqid, "%s%08x%05x", prefix, sec, usec);	}	RETURN_STRING(uniqid, 1);}#endif/* }}} *//* * Local variables: * tab-width: 4 * c-basic-offset: 4 * End: * vim600: sw=4 ts=4 fdm=marker * vim<600: sw=4 ts=4 */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -