f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy/*
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * CDDL HEADER START
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy *
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * The contents of this file are subject to the terms of the
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * Common Development and Distribution License, Version 1.0 only
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * (the "License"). You may not use this file except in compliance
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * with the License.
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy *
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * or http://www.opensolaris.org/os/licensing.
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * See the License for the specific language governing permissions
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * and limitations under the License.
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy *
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * When distributing Covered Code, include this CDDL HEADER in each
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * If applicable, add the following below this CDDL HEADER, with the
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * fields enclosed by brackets "[]" replaced with your own identifying
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * information: Portions Copyright [yyyy] [name of copyright owner]
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy *
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * CDDL HEADER END
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy */
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy/* All Rights Reserved */
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy/*
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * Copyright (c) 2001 by Sun Microsystems, Inc.
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * All rights reserved.
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy */
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy#pragma ident "%Z%%M% %I% %E% SMI"
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy/*
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * NAME
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * legal - check existence of file
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy *
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * SYNOPSIS
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * int legal(char *file)
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy *
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * DESCRIPTION
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * legal() checks to see if "file" is a writable file name.
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy *
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * Returns:
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * 0 -> file or directory exists, but is unwriteable
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * 1 -> file exists writeable
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * 2 -> file does not exist, but can be created
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy */
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy#include "mail.h"
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedyint
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedylegal(file)
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedyregister char *file;
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy{
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy register char *sp;
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy char dfile[MAXFILENAME];
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy /*
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * If file does not exist then try "." if file name has
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy * no "/". For file names that have a "/", try check
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy * for existence of previous directory.
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy */
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy if (access(file, A_EXIST) == A_OK) {
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy if (access(file, A_WRITE) == A_OK)
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy return (1);
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy else return (0);
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy } else {
f38cb554a534c6df738be3f4d23327e69888e634John Wren Kennedy if ((sp = strrchr(file, '/')) == NULL) {
strcpy(dfile, ".");
} else if (sp == file) {
strcpy(dfile, "/");
} else {
if ((sp - file + 1) > MAXFILENAME)
return (0);
strncpy(dfile, file, sp - file);
dfile[sp - file] = '\0';
}
if (access(dfile, A_WRITE) == CERROR)
return (0);
return (2);
}
}