/*
- * $Id: directory.c,v 1.69 2003-04-20 06:13:40 didg Exp $
+ * $Id: directory.c,v 1.70 2003-04-20 06:53:40 didg Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
return( AFP_OK );
}
+/* ----------------------------- */
+int path_error(struct path *path, int error)
+{
+/* - a dir with access error
+ * - no error it's a file
+ * - file not found
+ */
+ if (path_isadir(path))
+ return afp_errno;
+ if (path->st_errno)
+ return error;
+ return AFPERR_BADTYPE ;
+}
+
/* ----------------------------- */
int afp_setdirparams(obj, ibuf, ibuflen, rbuf, rbuflen )
AFPObj *obj;
return get_afp_errno(AFPERR_NOOBJ);
}
- /* FIXME access error or not a file */
if ( *path->m_name != '\0' ) {
- return (path_isadir( path))? afp_errno:AFPERR_BADTYPE ;
+ return path_error(path, AFPERR_NOOBJ);
}
/*
}
if ( *path->m_name != '\0' ) {
- return (path_isadir(path))? afp_errno:AFPERR_BADTYPE ;
+ return path_error(path, AFPERR_NOOBJ);
}
if ( !path->st_valid && of_stat(path ) < 0 ) {
/*
- * $Id: directory.h,v 1.12 2003-04-14 18:03:49 didg Exp $
+ * $Id: directory.h,v 1.13 2003-04-20 06:53:40 didg Exp $
*
* Copyright (c) 1990,1991 Regents of The University of Michigan.
* All Rights Reserved.
extern int setdirparams __P((const struct vol *, struct path *, u_int16_t, char *));
extern int renamedir __P((char *, char *, struct dir *,
struct dir *, char *, const int));
+extern int path_error __P((struct path *, int error));
typedef int (*dir_loop)(struct dirent *, char *, void *);
/*
- * $Id: enumerate.c,v 1.38 2003-04-16 06:55:44 didg Exp $
+ * $Id: enumerate.c,v 1.39 2003-04-20 06:53:40 didg Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
}
if ( *o_path->m_name != '\0') {
/* it's a file or it's a dir and extendir() was unable to chdir in it */
- return (path_isadir(o_path))? afp_errno:AFPERR_BADTYPE ;
+ return path_error(o_path, AFPERR_NODIR );
}
data = rbuf + 3 * sizeof( u_int16_t );
/*
- * $Id: file.c,v 1.90 2003-04-20 06:13:41 didg Exp $
+ * $Id: file.c,v 1.91 2003-04-20 06:53:40 didg Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
return( AFPERR_BADTYPE ); /* it's a directory */
}
+ if ( s_path->st_errno != 0 ) {
+ return( AFPERR_NOOBJ );
+ }
+
if ((u_long)ibuf & 1 ) {
ibuf++;
}
return get_afp_errno(AFPERR_NOOBJ);
}
if ( *s_path->m_name != '\0' ) {
+#if 0
return (path_isadir( s_path))? AFPERR_PARAM:AFPERR_BADTYPE ;
+#endif
+ path_error(s_path, AFPERR_PARAM);
}
/* one of the handful of places that knows about the path type */
/*
- * $Id: filedir.c,v 1.44 2003-04-14 18:03:49 didg Exp $
+ * $Id: filedir.c,v 1.45 2003-04-20 06:53:40 didg Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
upath = s_path->u_name;
if ( path_isadir( s_path) ) {
if (*s_path->m_name != '\0') {
- rc = AFPERR_ACCESS;
+ rc = AFPERR_ACCESS;
}
else {
rc = deletecurdir( vol, obj->oldtmp, AFPOBJ_TMPSIZ);
return( AFPERR_NOOBJ );
}
if ( *path->m_name != '\0' ) {
- return (path_isadir(path))?afp_errno:AFPERR_BADTYPE;
+ return path_error(path, AFPERR_NOOBJ);
}
/* one more place where we know about path type */