Subject: Re: [netatalk-admins] a15 patchset available
From: wesley.craig@umich.edu
Date: Thu Aug 28 1997 - 16:11:25 EDT
> From: a sun <asun@zoology.washington.edu>
> To: netatalk-admins@umich.edu
> anyways, this patch set fixes some, but not
> all, of the os8 interaction problems.
Find attached the set of patches (thus far) for MacOS 8. It fixes
everything that I've had reported so far, i.e. "dancing" in the finder,
and failed finder copies when there's no AppleDouble header file.
I've given these patches to a couple of people, but since I've not
gotten any responses back, I'll no hold them any longer.
:wes
*** etc/afpd/file.c- 1997/08/17 00:01:46
--- etc/afpd/file.c 1997/08/20 22:39:08
***************
*** 125,139 ****
break;
case FILPBIT_FINFO :
! if ( !isad ||
! bcmp( ad_entry( &ad, ADEID_FINDERI ), ufinderi, 8 ) == 0 ) {
bcopy( ufinderi, data, 32 );
- if (( em = getextmap( path )) != NULL ) {
- bcopy( em->em_type, data, sizeof( em->em_type ));
- bcopy( em->em_creator, data + 4, sizeof( em->em_creator ));
- }
} else {
bcopy( ad_entry( &ad, ADEID_FINDERI ), data, 32 );
}
data += 32;
break;
--- 125,139 ----
break;
case FILPBIT_FINFO :
! if ( !isad ) {
bcopy( ufinderi, data, 32 );
} else {
bcopy( ad_entry( &ad, ADEID_FINDERI ), data, 32 );
+ }
+ if ( bcmp( data, ufinderi, 8 ) == 0 &&
+ ( em = getextmap( path )) != NULL ) {
+ bcopy( em->em_type, data, sizeof( em->em_type ));
+ bcopy( em->em_creator, data + 4, sizeof( em->em_creator ));
}
data += 32;
break;
*** etc/afpd/fork.c- 1997/08/17 00:01:46
--- etc/afpd/fork.c 1997/08/26 03:50:24
***************
*** 95,108 ****
if ( ad_open( mtoupath( path ), adflags, oflags, 0,
&ofork->of_ad ) < 0 ) {
! if ( errno == ENOENT && adflags != ADFLAGS_HF ) {
ad_close( &ofork->of_ad, adflags );
! if ( ad_open( mtoupath( path ), ADFLAGS_DF, oflags, 0,
! &ofork->of_ad ) < 0 ) {
! ad_close( &ofork->of_ad, ADFLAGS_DF );
! of_dealloc( ofork );
! *rbuflen = 0;
! return( AFPERR_NOOBJ );
}
} else {
of_dealloc( ofork );
--- 95,110 ----
if ( ad_open( mtoupath( path ), adflags, oflags, 0,
&ofork->of_ad ) < 0 ) {
! if ( errno == ENOENT ) {
ad_close( &ofork->of_ad, adflags );
! if ( adflags != ADFLAGS_HF ) {
! if ( ad_open( mtoupath( path ), ADFLAGS_DF, oflags, 0,
! &ofork->of_ad ) < 0 ) {
! ad_close( &ofork->of_ad, ADFLAGS_DF );
! of_dealloc( ofork );
! *rbuflen = 0;
! return( AFPERR_NOOBJ );
! }
}
} else {
of_dealloc( ofork );
***************
*** 171,176 ****
--- 173,181 ----
lockfd = ad_dfileno( &ofork->of_ad );
} else {
lockfd = ad_hfileno( &ofork->of_ad );
+ if ( lockfd == -1 ) {
+ lockop = 0;
+ }
}
if ( lockop && flock( lockfd, lockop|LOCK_NB ) < 0 ) {
ret = errno;
***************
*** 318,325 ****
if ( ad_dfileno( &ofork->of_ad ) != -1 ) {
eid = ADEID_DFORK;
! } else {
eid = ADEID_RFORK;
}
if ( reqcount < 0 ) {
--- 323,333 ----
if ( ad_dfileno( &ofork->of_ad ) != -1 ) {
eid = ADEID_DFORK;
! } else if ( ad_hfileno( &ofork->of_ad ) != -1 ) {
eid = ADEID_RFORK;
+ } else {
+ *rbuflen = 0;
+ return( AFPERR_EOF );
}
if ( reqcount < 0 ) {
***************
*** 548,555 ****
*rbuflen = 0;
return( AFPERR_DFULL );
default :
- syslog( LOG_ERR, "afp_write: ad_write: %m" );
*rbuflen = 0;
return( AFPERR_PARAM );
}
}
--- 556,563 ----
*rbuflen = 0;
return( AFPERR_DFULL );
default :
*rbuflen = 0;
+ syslog( LOG_ERR, "afp_write: ad_write: %m" );
return( AFPERR_PARAM );
}
}
***************
*** 642,649 ****
}
if ( bitmap & ( 1<<FILPBIT_DFLEN | 1<<FILPBIT_FNUM )) {
if ( ad_dfileno( &ofork->of_ad ) == -1 ) {
! if ( fstat( ad_hfileno( &ofork->of_ad ), &st ) < 0 ) {
! return( AFPERR_BITMAP );
}
} else {
if ( fstat( ad_dfileno( &ofork->of_ad ), &st ) < 0 ) {
--- 650,657 ----
}
if ( bitmap & ( 1<<FILPBIT_DFLEN | 1<<FILPBIT_FNUM )) {
if ( ad_dfileno( &ofork->of_ad ) == -1 ) {
! if ( stat( mtoupath( ofork->of_name ), &st ) < 0 ) {
! return( AFPERR_NOOBJ );
}
} else {
if ( fstat( ad_dfileno( &ofork->of_ad ), &st ) < 0 ) {
***************
*** 710,724 ****
break;
case FILPBIT_FINFO :
! if ( !isad || bcmp( ad_entry( &ofork->of_ad, ADEID_FINDERI ),
! ufinderi, 8 ) == 0 ) {
bcopy( ufinderi, data, 32 );
- if (( em = getextmap( ofork->of_name )) != NULL ) {
- bcopy( em->em_type, data, sizeof( em->em_type ));
- bcopy( em->em_creator, data + 4, sizeof( em->em_creator ));
- }
} else {
bcopy( ad_entry( &ofork->of_ad, ADEID_FINDERI ), data, 32 );
}
data += 32;
break;
--- 718,732 ----
break;
case FILPBIT_FINFO :
! if ( !isad ) {
bcopy( ufinderi, data, 32 );
} else {
bcopy( ad_entry( &ofork->of_ad, ADEID_FINDERI ), data, 32 );
+ }
+ if ( bcmp( data, ufinderi, 8 ) == 0 &&
+ ( em = getextmap( ofork->of_name )) != NULL ) {
+ bcopy( em->em_type, data, sizeof( em->em_type ));
+ bcopy( em->em_creator, data + 4, sizeof( em->em_creator ));
}
data += 32;
break;
This archive was generated by hypermail 2b28 : Sat Dec 18 1999 - 16:26:31 EST