Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:39245 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 20583 invoked from network); 23 Jul 2008 20:23:14 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 23 Jul 2008 20:23:14 -0000 Authentication-Results: pb1.pair.com header.from=steph@php.net; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=steph@php.net; spf=unknown; sender-id=unknown Received-SPF: unknown (pb1.pair.com: domain php.net does not designate 64.99.136.152 as permitted sender) X-PHP-List-Original-Sender: steph@php.net X-Host-Fingerprint: 64.99.136.152 smtprelay-virgin0152.hostedemail.com Linux 2.5 (sometimes 2.4) (4) Received: from [64.99.136.152] ([64.99.136.152:44142] helo=smtprelay-virgin.hostedemail.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id B5/C6-12534-23397884 for ; Wed, 23 Jul 2008 16:23:14 -0400 Received: from filter.hostedemail.com (ff-bigip1 [10.5.19.254]) by smtprelay06.hostedemail.com (Postfix) with SMTP id CBE7644E31; Wed, 23 Jul 2008 20:23:11 +0000 (UTC) X-SpamScore: 1 Received: from foxbox (77-97-189-167.cable.ubr07.shef.blueyonder.co.uk [77.97.189.167]) (Authenticated sender: steph.fox) by omf10.hostedemail.com (Postfix) with ESMTP; Wed, 23 Jul 2008 20:23:11 +0000 (UTC) Message-ID: <0a2401c8ed02$20a634a0$a7bd614d@foxbox> To: "Marcus Boerger" Cc: "internals" References: <04a501c8d181$e67c6ec0$4401a8c0@foxbox> <1062092242.20080619210052@marcus-boerger.de> Date: Wed, 23 Jul 2008 21:24:35 +0100 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0A21_01C8ED0A.8146B610" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 X-session-marker: 73746570682E666F78 X-Spam-Summary: 2,0,0,d00ae6481bc72dea,04500b467597ecf3,steph@php.net,,RULES_HIT:152:355:379:539:540:541:542:543:567:599:601:871:966:973:988:989:1000:1155:1156:1260:1308:1309:1313:1314:1345:1437:1515:1516:1518:1535:1538:1575:1587:1594:1676:1711:1714:1730:1747:1764:1766:1792:2073:2075:2078:2196:2199:2379:2393:2559:2562:2911:3027:3350:3622:3865:3867:3868:3869:3870:3872:3874:4117:4250:4362:4385:4425:5007:6119:6261:7281:7653:7875:7903,0,RBL:none,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:,MSBL:none,DNSBL:none Subject: Re: [PHP-DEV] [PATCH] unix path separators in spl From: steph@php.net ("Steph Fox") ------=_NextPart_000_0A21_01C8ED0A.8146B610 Content-Type: text/plain; format=flowed; charset="utf-8"; reply-type=original Content-Transfer-Encoding: 7bit Hi Marcus, > how about having this as an option inside the SPL classes that gets > turned on by Phar automatically? Inside SPL we could have it as a user > set-only flag. The attached patch does this, at the SPL end. Can I commit it (or something very close) before the 5_3 freeze please? NB The patch was created with DOS line endings and then converted to *nix, it won't apply cleanly in its current state. It's just for review. Thanks, - Steph ------=_NextPart_000_0A21_01C8ED0A.8146B610 Content-Type: text/plain; format=flowed; name="spl_paths.txt"; reply-type=original Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="spl_paths.txt" Index: ext/spl/spl_directory.c=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /repository/php-src/ext/spl/spl_directory.c,v=0A= retrieving revision 1.45.2.27.2.23.2.26=0A= diff -u -r1.45.2.27.2.23.2.26 spl_directory.c=0A= --- ext/spl/spl_directory.c 23 Jul 2008 06:12:29 -0000 = 1.45.2.27.2.23.2.26=0A= +++ ext/spl/spl_directory.c 23 Jul 2008 20:19:29 -0000=0A= @@ -175,6 +175,8 @@=0A= =0A= static inline void = spl_filesystem_object_get_file_name(spl_filesystem_object *intern = TSRMLS_DC) /* {{{ */=0A= {=0A= + char slash =3D intern->flags & SPL_FILE_DIR_UNIXPATHS ? '/' : = DEFAULT_SLASH;=0A= +=0A= if (!intern->file_name) {=0A= switch (intern->type) {=0A= case SPL_FS_INFO:=0A= @@ -184,7 +186,7 @@=0A= case SPL_FS_DIR:=0A= intern->file_name_len =3D spprintf(&intern->file_name, 0, "%s%c%s",=0A= = spl_filesystem_object_get_path(intern, NULL TSRMLS_CC),=0A= - DEFAULT_SLASH, = intern->u.dir.entry.d_name);=0A= + slash, intern->u.dir.entry.d_name);=0A= break;=0A= }=0A= }=0A= @@ -615,6 +617,9 @@=0A= if (ctor_flags & SPL_FILE_DIR_SKIPDOTS) {=0A= flags |=3D SPL_FILE_DIR_SKIPDOTS;=0A= }=0A= + if (ctor_flags & SPL_FILE_DIR_UNIXPATHS) {=0A= + flags |=3D SPL_FILE_DIR_UNIXPATHS;=0A= + }=0A= if (parsed =3D=3D FAILURE) {=0A= php_set_error_handling(EH_NORMAL, NULL TSRMLS_CC);=0A= return;=0A= @@ -1244,6 +1249,7 @@=0A= zval zpath, zflags;=0A= spl_filesystem_object *intern =3D = (spl_filesystem_object*)zend_object_store_get_object(getThis() = TSRMLS_CC);=0A= spl_filesystem_object *subdir;=0A= + char slash =3D intern->flags & SPL_FILE_DIR_UNIXPATHS ? '/' : = DEFAULT_SLASH;=0A= =0A= spl_filesystem_object_get_file_name(intern TSRMLS_CC);=0A= =0A= @@ -1257,7 +1263,7 @@=0A= subdir =3D = (spl_filesystem_object*)zend_object_store_get_object(return_value = TSRMLS_CC);=0A= if (subdir) {=0A= if (intern->u.dir.sub_path && intern->u.dir.sub_path[0]) {=0A= - subdir->u.dir.sub_path_len =3D spprintf(&subdir->u.dir.sub_path, 0, = "%s%c%s", intern->u.dir.sub_path, DEFAULT_SLASH, = intern->u.dir.entry.d_name);=0A= + subdir->u.dir.sub_path_len =3D spprintf(&subdir->u.dir.sub_path, 0, = "%s%c%s", intern->u.dir.sub_path, slash, intern->u.dir.entry.d_name);=0A= } else {=0A= subdir->u.dir.sub_path_len =3D strlen(intern->u.dir.entry.d_name);=0A= subdir->u.dir.sub_path =3D estrndup(intern->u.dir.entry.d_name, = subdir->u.dir.sub_path_len);=0A= @@ -1290,9 +1296,10 @@=0A= spl_filesystem_object *intern =3D = (spl_filesystem_object*)zend_object_store_get_object(getThis() = TSRMLS_CC);=0A= char *sub_name;=0A= int len;=0A= + char slash =3D intern->flags & SPL_FILE_DIR_UNIXPATHS ? '/' : = DEFAULT_SLASH;=0A= =0A= if (intern->u.dir.sub_path) {=0A= - len =3D spprintf(&sub_name, 0, "%s%c%s", intern->u.dir.sub_path, = DEFAULT_SLASH, intern->u.dir.entry.d_name);=0A= + len =3D spprintf(&sub_name, 0, "%s%c%s", intern->u.dir.sub_path, = slash, intern->u.dir.entry.d_name);=0A= RETURN_STRINGL(sub_name, len, 0);=0A= } else {=0A= RETURN_STRING(intern->u.dir.entry.d_name, 1);=0A= @@ -2624,6 +2631,7 @@=0A= REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "KEY_AS_FILENAME", = SPL_FILE_DIR_KEY_AS_FILENAME);=0A= REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, = "NEW_CURRENT_AND_KEY", = SPL_FILE_DIR_KEY_AS_FILENAME|SPL_FILE_DIR_CURRENT_AS_FILEINFO);=0A= REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "SKIP_DOTS", = SPL_FILE_DIR_SKIPDOTS);=0A= + REGISTER_SPL_CLASS_CONST_LONG(FilesystemIterator, "UNIX_PATHS", = SPL_FILE_DIR_UNIXPATHS);=0A= =0A= spl_ce_FilesystemIterator->get_iterator =3D = spl_filesystem_tree_get_iterator;=0A= =0A= Index: ext/spl/spl_directory.h=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= RCS file: /repository/php-src/ext/spl/spl_directory.h,v=0A= retrieving revision 1.12.2.5.2.4.2.11=0A= diff -u -r1.12.2.5.2.4.2.11 spl_directory.h=0A= --- ext/spl/spl_directory.h 19 Jul 2008 11:20:18 -0000 1.12.2.5.2.4.2.11=0A= +++ ext/spl/spl_directory.h 23 Jul 2008 20:20:36 -0000=0A= @@ -133,6 +133,7 @@=0A= #define SPL_FILE_DIR_KEY(intern,mode) = ((intern->flags&SPL_FILE_DIR_KEY_MODE_MASK)=3D=3Dmode)=0A= =0A= #define SPL_FILE_DIR_SKIPDOTS 0x00001000 /* Tells whether = it should skip dots or not */=0A= +#define SPL_FILE_DIR_UNIXPATHS 0x00002000 /* Whether to = unixify path separators */=0A= =0A= #endif /* SPL_DIRECTORY_H */=0A= =0A= ------=_NextPart_000_0A21_01C8ED0A.8146B610--