@@ -706,8 +706,8 @@ PHP_FUNCTION(clearstatcache)
706
706
/* {{{ php_stat */
707
707
PHPAPI void php_stat (zend_string * filename , int type , zval * return_value )
708
708
{
709
- zend_stat_t * stat_sb = {0 };
710
709
php_stream_statbuf ssb = {0 };
710
+ zend_stat_t * stat_sb = & ssb .sb ;
711
711
int flags = 0 , rmask = S_IROTH , wmask = S_IWOTH , xmask = S_IXOTH ; /* access rights defaults to other */
712
712
const char * local = NULL ;
713
713
php_stream_wrapper * wrapper = NULL ;
@@ -765,14 +765,14 @@ PHPAPI void php_stat(zend_string *filename, int type, zval *return_value)
765
765
if (filename == BG (CurrentLStatFile )
766
766
|| (BG (CurrentLStatFile )
767
767
&& zend_string_equal_content (filename , BG (CurrentLStatFile )))) {
768
- memcpy ( & ssb , & BG (lssb ), sizeof ( php_stream_statbuf )) ;
768
+ stat_sb = & BG (lssb ). sb ;
769
769
break ;
770
770
}
771
771
} else {
772
772
if (filename == BG (CurrentStatFile )
773
773
|| (BG (CurrentStatFile )
774
774
&& zend_string_equal_content (filename , BG (CurrentStatFile )))) {
775
- memcpy ( & ssb , & BG (ssb ), sizeof ( php_stream_statbuf )) ;
775
+ stat_sb = & BG (ssb ). sb ;
776
776
break ;
777
777
}
778
778
}
@@ -819,14 +819,12 @@ PHPAPI void php_stat(zend_string *filename, int type, zval *return_value)
819
819
}
820
820
} while (0 );
821
821
822
- stat_sb = & ssb .sb ;
823
-
824
822
if (type >= FS_IS_W && type <= FS_IS_X ) {
825
- if (ssb . sb . st_uid == getuid ()) {
823
+ if (stat_sb -> st_uid == getuid ()) {
826
824
rmask = S_IRUSR ;
827
825
wmask = S_IWUSR ;
828
826
xmask = S_IXUSR ;
829
- } else if (ssb . sb . st_gid == getgid ()) {
827
+ } else if (stat_sb -> st_gid == getgid ()) {
830
828
rmask = S_IRGRP ;
831
829
wmask = S_IWGRP ;
832
830
xmask = S_IXGRP ;
@@ -839,7 +837,7 @@ PHPAPI void php_stat(zend_string *filename, int type, zval *return_value)
839
837
gids = (gid_t * )safe_emalloc (groups , sizeof (gid_t ), 0 );
840
838
n = getgroups (groups , gids );
841
839
for (i = 0 ;i < n ;i ++ ){
842
- if (ssb . sb . st_gid == gids [i ]) {
840
+ if (stat_sb -> st_gid == gids [i ]) {
843
841
rmask = S_IRGRP ;
844
842
wmask = S_IWGRP ;
845
843
xmask = S_IXGRP ;
@@ -865,26 +863,26 @@ PHPAPI void php_stat(zend_string *filename, int type, zval *return_value)
865
863
switch (type ) {
866
864
case FS_PERMS :
867
865
case FS_LPERMS :
868
- RETURN_LONG ((zend_long )ssb . sb . st_mode );
866
+ RETURN_LONG ((zend_long )stat_sb -> st_mode );
869
867
case FS_INODE :
870
- RETURN_LONG ((zend_long )ssb . sb . st_ino );
868
+ RETURN_LONG ((zend_long )stat_sb -> st_ino );
871
869
case FS_SIZE :
872
- RETURN_LONG ((zend_long )ssb . sb . st_size );
870
+ RETURN_LONG ((zend_long )stat_sb -> st_size );
873
871
case FS_OWNER :
874
- RETURN_LONG ((zend_long )ssb . sb . st_uid );
872
+ RETURN_LONG ((zend_long )stat_sb -> st_uid );
875
873
case FS_GROUP :
876
- RETURN_LONG ((zend_long )ssb . sb . st_gid );
874
+ RETURN_LONG ((zend_long )stat_sb -> st_gid );
877
875
case FS_ATIME :
878
- RETURN_LONG ((zend_long )ssb . sb . st_atime );
876
+ RETURN_LONG ((zend_long )stat_sb -> st_atime );
879
877
case FS_MTIME :
880
- RETURN_LONG ((zend_long )ssb . sb . st_mtime );
878
+ RETURN_LONG ((zend_long )stat_sb -> st_mtime );
881
879
case FS_CTIME :
882
- RETURN_LONG ((zend_long )ssb . sb . st_ctime );
880
+ RETURN_LONG ((zend_long )stat_sb -> st_ctime );
883
881
case FS_TYPE :
884
- if (S_ISLNK (ssb . sb . st_mode )) {
882
+ if (S_ISLNK (stat_sb -> st_mode )) {
885
883
RETURN_STRING ("link" );
886
884
}
887
- switch (ssb . sb . st_mode & S_IFMT ) {
885
+ switch (stat_sb -> st_mode & S_IFMT ) {
888
886
case S_IFIFO : RETURN_STRING ("fifo" );
889
887
case S_IFCHR : RETURN_STRING ("char" );
890
888
case S_IFDIR : RETURN_STRING ("dir" );
@@ -894,20 +892,20 @@ PHPAPI void php_stat(zend_string *filename, int type, zval *return_value)
894
892
case S_IFSOCK : RETURN_STRING ("socket" );
895
893
#endif
896
894
}
897
- php_error_docref (NULL , E_NOTICE , "Unknown file type (%d)" , ssb . sb . st_mode & S_IFMT );
895
+ php_error_docref (NULL , E_NOTICE , "Unknown file type (%d)" , stat_sb -> st_mode & S_IFMT );
898
896
RETURN_STRING ("unknown" );
899
897
case FS_IS_W :
900
- RETURN_BOOL ((ssb . sb . st_mode & wmask ) != 0 );
898
+ RETURN_BOOL ((stat_sb -> st_mode & wmask ) != 0 );
901
899
case FS_IS_R :
902
- RETURN_BOOL ((ssb . sb . st_mode & rmask )!= 0 );
900
+ RETURN_BOOL ((stat_sb -> st_mode & rmask ) != 0 );
903
901
case FS_IS_X :
904
- RETURN_BOOL ((ssb . sb . st_mode & xmask )!= 0 );
902
+ RETURN_BOOL ((stat_sb -> st_mode & xmask ) != 0 );
905
903
case FS_IS_FILE :
906
- RETURN_BOOL (S_ISREG (ssb . sb . st_mode ));
904
+ RETURN_BOOL (S_ISREG (stat_sb -> st_mode ));
907
905
case FS_IS_DIR :
908
- RETURN_BOOL (S_ISDIR (ssb . sb . st_mode ));
906
+ RETURN_BOOL (S_ISDIR (stat_sb -> st_mode ));
909
907
case FS_IS_LINK :
910
- RETURN_BOOL (S_ISLNK (ssb . sb . st_mode ));
908
+ RETURN_BOOL (S_ISLNK (stat_sb -> st_mode ));
911
909
case FS_EXISTS :
912
910
RETURN_TRUE ; /* the false case was done earlier */
913
911
case FS_LSTAT :
0 commit comments