Req #27182 [Fbk->NoF]: [Patch] uniqid("prefix", 0) now works under recent cygwin
| From: | php-bugs at lists dot php dot net | Date: | Tue, 15 Oct 2013 11:54:24 +0000 |
| Subject: | Req #27182 [Fbk->NoF]: [Patch] uniqid("prefix", 0) now works under recent cygwin | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-182161@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=27182&edit=1
ID: 27182
Updated by: php-bugs@lists.php.net
Reported by: sagawa at sohgoh dot net
Summary: [Patch] uniqid("prefix", 0) now works under recent
cygwin
-Status: Feedback
+Status: No Feedback
Type: Feature/Change Request
Package: *General Issues
Operating System: CYGWIN_NT-5.1 1.5.7
PHP Version: 4.3.5RC2
Private report: N
New Comment:
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Re-Opened". Thank you.
Previous Comments:
------------------------------------------------------------------------
[2013-09-05 17:27:53] cmbecker69 at gmx dot de
I have now recompiled PHP 5.4.19 with the patch given above:
$ php -r 'var_dump(uniqid(null, false));'
string(13) "5228be262625a"
------------------------------------------------------------------------
[2013-09-05 13:22:37] cmbecker69 at gmx dot de
I made the following test:
$ uname -a
CYGWIN_NT-5.1 RELIANT 1.7.18(0.263/5/3) 2013-04-19 10:39 i686 Cygwin
$ php -v
PHP 5.4.19 (cli) (built: Aug 23 2013 19:12:30)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
$ php -r 'var_dump(uniqid(null,false));'
PHP Warning: uniqid(): You must use 'more entropy' under CYGWIN
in Command line code on line 1
Warning: uniqid(): You must use 'more entropy' under CYGWIN
in Command line code on line 1
bool(false)
From looking at the sources[1], the result is not surprising.
[1] <http://lxr.php.net/xref/PHP_5_4/ext/standard/uniqid.c#63>
<http://lxr.php.net/xref/PHP_5_5/ext/standard/uniqid.c#63>
------------------------------------------------------------------------
[2013-07-31 01:39:26] yohgaki@php.net
Please try using this snapshot:
http://snaps.php.net/php5.4-latest.tar.gz
For Windows:
http://windows.php.net/snapshots/
------------------------------------------------------------------------
[2004-02-08 00:40:54] sagawa at sohgoh dot net
Description:
------------
According to cygwin-patches(*1) and ChangeLog(*2), Cygwin's usleep now advances system
clock(gettimeofday).
*1 .. http://sources.redhat.com/ml/cygwin-patches/2003-q3/msg00178.html
*2 .. http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/winsup/cygwin/signal.cc?cvsroot=src#rev1.48
Therefore I can use uniqid safely when more entropy flag is zero, I made a patch. (but "more
entropy flag" is still on by default for backward compatibility)
Unfortunary cygwin doesn't change version for this change, I apply most recent change of
CYGWIN_VERSION_API_MINOR.
"String functions [tests/strings/001.phpt]" now pass!
--- php-4.3.5RC2/ext/standard/uniqid.c.orig 2003-01-01 01:35:35.000000000 +0900
+++ php-4.3.5RC2/ext/standard/uniqid.c 2004-02-08 13:01:49.006220800 +0900
@@ -34,6 +34,9 @@
#else
#include <sys/time.h>
#endif
+#if defined(__CYGWIN__)
+#include <cygwin/version.h>
+#endif
#include "php_lcg.h"
#include "uniqid.h"
@@ -66,7 +69,7 @@
}
#if HAVE_USLEEP && !defined(PHP_WIN32)
if (!more_entropy) {
-#if defined(__CYGWIN__)
+#if defined(__CYGWIN__) && (CYGWIN_VERSION_API_MINOR < 91)
php_error_docref(NULL TSRMLS_CC, E_ERROR, "You must use 'more entropy' under
CYGWIN.");
return;
#else
--- php-4.3.5RC2/tests/strings/001.phpt.orig 2001-03-21 21:47:46.000000000 +0900
+++ php-4.3.5RC2/tests/strings/001.phpt 2004-02-08 13:23:53.320491200 +0900
@@ -181,8 +181,8 @@
echo "Testing uniqid: ";
$str = "prefix";
-$ui1 = uniqid($str);
-$ui2 = uniqid($str);
+$ui1 = uniqid($str, 0);
+$ui2 = uniqid($str, 0);
if (strlen($ui1) == strlen($ui2) && strlen($ui1) == 19 && $ui1 != $ui2) {
echo("passed\n");
} else {
Reproduce code:
---------------
<?php
echo uniqid("prefix"),"\n";
echo uniqid("prefix", 1),"\n";
echo uniqid("prefix", 0),"\n";
echo uniqid("prefix", 0),"\n";
echo uniqid("prefix", 0),"\n";
?>
Expected result:
----------------
-- cygwin --
prefix4025c46680d100.85790027
prefix4025c466810f81.04902838
prefix4025c466814e0
prefix4025c466818c8
prefix4025c46681cb0
-- linux --
prefix4025c4a472847
prefix4025c4a47289a3.07476264
prefix4025c4a47766a
prefix4025c4a47c487
prefix4025c4a4812a8
Actual result:
--------------
-- cygwin(NG) --
PHP Fatal error: uniqid(): You must use 'more entropy' under CYGWIN. in
/home/sagawa/uniqid_test.php on line 4
prefix4025c46680d100.85790027
prefix4025c466810f81.04902838
-- linux(OK) --
prefix4025c4a472847
prefix4025c4a47289a3.07476264
prefix4025c4a47766a
prefix4025c4a47c487
prefix4025c4a4812a8
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=27182&edit=1