+ lstat(path,&st_link);
+ if (S_ISLNK(st_link.st_mode) && (oflags == O_RDONLY)) {
+ int lsz;
+ ad->ad_data_fork.adf_syml=(char *)malloc(PATH_MAX+1);
+ lsz=readlink(path,ad->ad_data_fork.adf_syml,PATH_MAX);
+ if (lsz<=0) {
+ free(ad->ad_data_fork.adf_syml);
+ return -1;
+ }
+ ad->ad_data_fork.adf_syml[lsz]=0;
+ ad->ad_data_fork.adf_syml=(char *)realloc(ad->ad_data_fork.adf_syml,lsz+1);
+ ad->ad_data_fork.adf_fd=0;
+ }else{
+
+ ad->ad_data_fork.adf_fd =open( path, hoflags | O_NOFOLLOW, admode );
+