/*
- * $Id: fork.c,v 1.12 2001-12-03 05:03:38 jmarcus Exp $
+ * $Id: fork.c,v 1.15 2002-01-16 19:55:15 jmarcus Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
#include <dirent.h>
#include <string.h>
#include <errno.h>
-#include <syslog.h>
+#include <atalk/logger.h>
#include <sys/param.h>
#include <sys/stat.h>
int *buflen;
const u_int16_t attrbits;
{
+#ifndef USE_LASTDID
+ struct stat hst, lst, *lstp;
+#else /* USE_LASTDID */
+ struct stat hst;
+#endif
struct stat st;
struct extmap *em;
char *data, *nameoff = NULL, *upath;
} else {
aint = ad_getentrylen( ofork->of_ad, ADEID_RFORK );
if ( ad_refresh( ofork->of_ad ) < 0 ) {
- syslog( LOG_ERR, "getforkparams: ad_refresh: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "getforkparams: ad_refresh: %s", strerror(errno) );
return( AFPERR_PARAM );
}
/* See afp_closefork() for why this is bad */
#endif /* CNID_DB */
if (aint == 0) {
-#ifdef AFS
- aint = st.st_ino;
-#else /* AFS */
- aint = ( st.st_dev << 16 ) | ( st.st_ino & 0x0000ffff );
-#endif /* AFS */
+#ifdef USE_LASTDID
+ aint = htonl(( st.st_dev << 16 ) | ( st.st_ino & 0x0000ffff ));
+#else /* USE_LASTDID */
+ lstp = lstat(upath, &lst) < 0 ? st : &lst;
+#ifdef DID_MTAB
+ aint = htonl( afpd_st_cnid ( lstp ) );
+#else /* DID_MTAB */
+ aint = htonl(CNID(lstp, 1));
+#endif /* DID_MTAB */
+#endif /* USE_LASTDID */
}
memcpy(data, &aint, sizeof( aint ));
goto openfork_err;
break;
default:
- syslog( LOG_ERR, "afp_openfork: ad_open: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_openfork: ad_open: %s", strerror(errno) );
ret = AFPERR_PARAM;
goto openfork_err;
break;
goto openfork_err;
break;
default:
- syslog( LOG_ERR, "afp_openfork: ad_open: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_openfork: ad_open: %s", strerror(errno) );
goto openfork_err;
break;
}
break;
default:
*rbuflen = 0;
- syslog( LOG_ERR, "afp_openfork: ad_lock: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_openfork: ad_lock: %s", strerror(errno) );
return( AFPERR_PARAM );
}
}
*rbuflen = 0;
if (( ofork = of_find( ofrefnum )) == NULL ) {
- syslog( LOG_ERR, "afp_setforkparams: of_find: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_setforkparams: of_find: %s", strerror(errno) );
return( AFPERR_PARAM );
}
goto afp_setfork_err;
if (ad_flush( ofork->of_ad, ADFLAGS_HF ) < 0) {
- syslog( LOG_ERR, "afp_setforkparams: ad_flush: %s",
+ LOG(log_error, logtype_default, "afp_setforkparams: ad_flush: %s",
strerror(errno) );
return( AFPERR_PARAM );
}
#ifdef AFS
if ( flushfork( ofork ) < 0 ) {
- syslog( LOG_ERR, "afp_setforkparams: flushfork: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_setforkparams: flushfork: %s", strerror(errno) );
}
#endif /* AFS */
ibuf += sizeof(ofrefnum);
if (( ofork = of_find( ofrefnum )) == NULL ) {
- syslog( LOG_ERR, "afp_bytelock: of_find: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_bytelock: of_find: %s", strerror(errno) );
return( AFPERR_PARAM );
}
cc = ad_read(ofork->of_ad, eid, offset, rbuf, *rbuflen);
if ( cc < 0 ) {
- syslog( LOG_ERR, "afp_read: ad_read: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_read: ad_read: %s", strerror(errno) );
*rbuflen = 0;
return( AFPERR_PARAM );
}
ibuf += sizeof( u_short );
if (( ofork = of_find( ofrefnum )) == NULL ) {
- syslog( LOG_ERR, "afp_read: of_find: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_read: of_find: %s", strerror(errno) );
err = AFPERR_PARAM;
goto afp_read_err;
}
if (errno == EINVAL)
goto afp_read_loop;
else {
- syslog(LOG_ERR, "afp_read: ad_readfile: %s", strerror(errno));
+ LOG(log_error, logtype_default, "afp_read: ad_readfile: %s", strerror(errno));
goto afp_read_exit;
}
}
goto afp_read_done;
afp_read_exit:
- syslog(LOG_ERR, "afp_read: %s", strerror(errno));
+ LOG(log_error, logtype_default, "afp_read: %s", strerror(errno));
dsi_readdone(dsi);
ad_tmplock(ofork->of_ad, eid, ADLOCK_CLR, saveoff, reqcount);
obj->exit(1);
memcpy(&ofrefnum, ibuf, sizeof( ofrefnum ));
if (( ofork = of_find( ofrefnum )) == NULL ) {
- syslog( LOG_ERR, "afp_flushfork: of_find: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_flushfork: of_find: %s", strerror(errno) );
return( AFPERR_PARAM );
}
if ( flushfork( ofork ) < 0 ) {
- syslog( LOG_ERR, "afp_flushfork: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_flushfork: %s", strerror(errno) );
}
return( AFP_OK );
if ( ad_dfileno( ofork->of_ad ) != -1 &&
fsync( ad_dfileno( ofork->of_ad )) < 0 ) {
- syslog( LOG_ERR, "flushfork: dfile(%d) %s",
+ LOG(log_error, logtype_default, "flushfork: dfile(%d) %s",
ad_dfileno(ofork->of_ad), strerror(errno) );
err = -1;
}
err = -1;
if (err < 0)
- syslog( LOG_ERR, "flushfork: hfile(%d) %s",
+ LOG(log_error, logtype_default, "flushfork: hfile(%d) %s",
ad_hfileno(ofork->of_ad), strerror(errno) );
}
memcpy(&ofrefnum, ibuf, sizeof( ofrefnum ));
if (( ofork = of_find( ofrefnum )) == NULL ) {
- syslog( LOG_ERR, "afp_closefork: of_find: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_closefork: of_find: %s", strerror(errno) );
return( AFPERR_PARAM );
}
}
if ( ad_close( ofork->of_ad, adflags ) < 0 ) {
- syslog( LOG_ERR, "afp_closefork: ad_close: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_closefork: ad_close: %s", strerror(errno) );
return( AFPERR_PARAM );
}
case ENOSPC :
return( AFPERR_DFULL );
default :
- syslog( LOG_ERR, "afp_write: ad_write: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_write: ad_write: %s", strerror(errno) );
return( AFPERR_PARAM );
}
}
ibuf += sizeof( reqcount );
if (( ofork = of_find( ofrefnum )) == NULL ) {
- syslog( LOG_ERR, "afp_write: of_find: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_write: of_find: %s", strerror(errno) );
err = AFPERR_PARAM;
goto afp_write_err;
}
case AFPPROTO_ASP:
if (asp_wrtcont(obj->handle, rbuf, rbuflen) < 0) {
*rbuflen = 0;
- syslog( LOG_ERR, "afp_write: asp_wrtcont: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_write: asp_wrtcont: %s", strerror(errno) );
return( AFPERR_PARAM );
}
cc = AFPERR_DFULL;
break;
default :
- syslog( LOG_ERR, "afp_write: ad_writefile: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_write: ad_writefile: %s", strerror(errno) );
goto afp_write_loop;
}
dsi_writeflush(dsi);
*rbuflen = 0;
if (( ofork = of_find( ofrefnum )) == NULL ) {
- syslog( LOG_ERR, "afp_getforkparams: of_find: %s", strerror(errno) );
+ LOG(log_error, logtype_default, "afp_getforkparams: of_find: %s", strerror(errno) );
return( AFPERR_PARAM );
}