641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
|
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
|
+
-
+
+
+
|
retval *= 16777619; /* FNV-1a 32-bit prime */
#else
/* GCC Optimized replacement */
retval += (retval << 1) + (retval << 4) + (retval << 7) + (retval << 8) + (retval << 24);
#endif
}
if (uid >= 0) {
retval += uid;
retval += uid;
retval++;
}
return(retval);
}
/*
* Cache Get Path Info lookups for speed
*/
|
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
|
914
915
916
917
918
919
920
921
922
923
924
925
926
927
|
-
|
appfs_call_libtcl(Tcl_Release(interp);)
return(-EIO);
}
pathinfo->packaged = 0;
pathinfo->inode = appfs_get_path_inode(path, fsuid);
appfs_call_libtcl(
attr_value_str = Tcl_GetString(attr_value);
switch (attr_value_str[0]) {
case 'd': /* directory */
pathinfo->type = APPFS_PATHTYPE_DIRECTORY;
|
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
|
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
|
+
+
+
+
+
+
|
}
} else {
pathinfo->time = appfs_boottime;
}
Tcl_Release(interp);
)
if (pathinfo->packaged) {
pathinfo->inode = appfs_get_path_inode(path, -1);
} else {
pathinfo->inode = appfs_get_path_inode(path, fsuid);
}
if (retval == 0) {
appfs_get_path_info_cache_add(path, fsuid, pathinfo);
} else {
APPFS_DEBUG("error: Invalid type for \"%s\" from Tcl", path);
}
|