//doors/serverfd1.c
#include	"unpipc.h"

void
servproc(void *cookie, char *dataptr, size_t datasize,
		 door_desc_t *descptr, size_t ndesc)
{
	int		fd;
	char	resbuf[BUFFSIZE];
	door_desc_t	desc;

	dataptr[datasize-1] = 0;		/*  0 */
	if ( (fd = open(dataptr, O_RDONLY)) == -1) {
			/* ,    */
		snprintf(resbuf, BUFFSIZE, "%s: can't open, %s",
				 dataptr, strerror(errno));
		Door_return(resbuf, strlen(resbuf), NULL, 0);

	} else {
			/* ,   */
		desc.d_data.d_desc.d_descriptor = fd;
		desc.d_attributes = DOOR_DESCRIPTOR;
		Door_return(NULL, 0, &desc, 1);
	}
}
