flush
authorMichael Wallner <mike@php.net>
Fri, 27 Nov 2015 12:40:26 +0000 (13:40 +0100)
committerMichael Wallner <mike@php.net>
Fri, 27 Nov 2015 12:40:26 +0000 (13:40 +0100)
Makefile.frag
psi.d/stat.psi
src/context.c
tests/stat/stat001.phpt

index bca0f48df131013d30981bf5b2d0f0c8bac8b27b..e5e4608124a085b69185209fb3c7444be9a991f1 100644 (file)
@@ -27,6 +27,8 @@ lemon.c:
 
 $(PHP_PSI_SRCDIR)/src/context.c: $(PHP_PSI_SRCDIR)/config.m4
        touch $@
+$(PHP_PSI_BUILDDIR)/parser.h: $(PHP_PSI_BUILDDIR)/parser_proc.h
+       touch $@
 $(PHP_PSI_SRCDIR)/src/%.c: $(PHP_PSI_BUILDDIR)/parser.h
        touch $@
 $(PHP_PSI_SRCDIR)/src/parser_proc.y: $(PHP_PSI_BUILDDIR)/parser.h
index 82d624976162301b1687dd8d90c5183209aa4232..17dc18851597e53c0cd5c39e9e3fd2d78f55795f 100644 (file)
@@ -1,3 +1,4 @@
+// extern int stat(char *path, struct stat *buf);
 function psi\stat(string $path, array &$buf = NULL) : int {
        let path = strval($path);
        let buf = calloc(1, struct stat);
index 44f82992e6e0ee1f739ea2aaa11aec137fc5f4ca..05d5aacbfc3d1d041957d88b72df257ee35e47f5 100644 (file)
@@ -452,7 +452,8 @@ static inline int validate_set_value(PSI_Data *data, set_value *set, decl_arg *r
        if (set->count) {
                int is_to_array = (set->func->type == PSI_T_TO_ARRAY);
                int is_pointer_to_struct = (ref_type->type == PSI_T_STRUCT && ref->var->pointer_level);
-               if (is_to_array && !is_pointer_to_struct) {
+
+               if (!is_to_array && !is_pointer_to_struct) {
                        data->error(E_WARNING, "Inner `set` statement casts only work with "
                                        "to_array() casts on structs or pointers: %s(%s...", set->func->name, set->vars->vars[0]->name);
                        return 0;
index edfc45ff6384d794977f731962975fbfab52b91d..9051123c802e0510341917446d886f727432b25c 100644 (file)
@@ -16,7 +16,7 @@ var_dump(psi\stat(__FILE__, $stat), $stat);
 --EXPECTF--
 ===TEST===
 int(0)
-array(13) {
+array(16) {
   ["st_dev"]=>
   int(%d)
   ["st_ino"]=>
@@ -32,7 +32,7 @@ array(13) {
   ["st_rdev"]=>
   int(%d)
   ["st_size"]=>
-  int(76)
+  int(75)
   ["st_atim"]=>
   array(2) {
     ["tv_sec"]=>
@@ -40,6 +40,8 @@ array(13) {
     ["tv_nsec"]=>
     int(%d)
   }
+  ["st_atime"]=>
+  int(%d)
   ["st_mtim"]=>
   array(2) {
     ["tv_sec"]=>
@@ -47,6 +49,8 @@ array(13) {
     ["tv_nsec"]=>
     int(%d)
   }
+  ["st_mtime"]=>
+  int(%d)
   ["st_ctim"]=>
   array(2) {
     ["tv_sec"]=>
@@ -54,6 +58,8 @@ array(13) {
     ["tv_nsec"]=>
     int(%d)
   }
+  ["st_ctime"]=>
+  int(%d)
   ["st_blksize"]=>
   int(%d)
   ["st_blocks"]=>