/*
- * $Id: file.c,v 1.29.2.1 2001-12-03 05:01:04 jmarcus Exp $
+ * $Id: file.c,v 1.29.2.8 2002-03-12 15:09:20 srittau Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
#include <dirent.h>
#include <sys/mman.h>
#include <errno.h>
+#include <syslog.h>
-#include <sys/syslog.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/param.h>
*/
const u_char ufinderi[] = {
- 'T', 'E', 'X', 'T', 'U', 'N', 'I', 'X',
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0
-};
+ 'T', 'E', 'X', 'T', 'U', 'N', 'I', 'X',
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0
+ };
int getfilparams(struct vol *vol,
u_int16_t bitmap,
#ifdef CNID_DB
aint = cnid_add(vol->v_db, st, dir->d_did, upath,
strlen(upath), aint);
+ /* Throw errors if cnid_add fails. */
+ if (aint == CNID_INVALID) {
+ switch (errno) {
+ case CNID_ERR_PARAM:
+ syslog(LOG_ERR, "getfilparams: Incorrect parameters passed to cnid_add");
+ return(AFPERR_PARAM);
+ case CNID_ERR_PATH:
+ return(AFPERR_PARAM);
+ case CNID_ERR_DB:
+ case CNID_ERR_MAX:
+ return(AFPERR_MISC);
+ }
+ }
#endif /* CNID_DB */
if (aint == 0) {
return( AFPERR_NOOBJ );
}
- if ((vol->v_flags & AFPVOL_MSWINDOWS) &&
- strpbrk(path, MSWINDOWS_BADCHARS))
+ if (!wincheck(vol, path))
return AFPERR_PARAM;
upath = mtoupath(vol, path);
}
#endif /* AD_VERSION > AD_VERSION1 */
- if (id = cnid_add(vol->v_db, &st, did, upath, len, id)) {
+ if (id = cnid_add(vol->v_db, &st, did, upath, len, id) != CNID_INVALID) {
memcpy(rbuf, &id, sizeof(id));
*rbuflen = sizeof(id);
return AFP_OK;
return AFPERR_ACCESS;
break;
default:
- syslog(LOG_ERR, "afp_createid: cnid_add: %m");
+ syslog(LOG_ERR, "afp_createid: cnid_add: %s", strerror(errno));
return AFPERR_PARAM;
}
}
char *upath;
int err;
cnid_t id;
+ cnid_t fileid;
u_short vid;
#ifdef DEBUG
memcpy(&id, ibuf, sizeof( id ));
ibuf += sizeof(id);
-
+ fileid = id;
+
if ((upath = cnid_resolve(vol->v_db, &id)) == NULL) {
return AFPERR_NOID;
}
if (S_ISDIR(st.st_mode))
return AFPERR_BADTYPE;
- if (cnid_delete(vol->v_db, id)) {
+ if (cnid_delete(vol->v_db, fileid)) {
switch (errno) {
case EROFS:
return AFPERR_VLOCK;
case EPERM:
case EACCES:
err = AFPERR_ACCESS;
+ break;
default:
err = AFPERR_PARAM;
}
case EPERM:
case EACCES:
err = AFPERR_ACCESS;
+ break;
default:
err = AFPERR_PARAM;
}