Patch submitted by hoefnix. Ref. https://groups.google.com/d/msg/minix-dev/sHQDVJRyx1c/eJjrYOqk5bgJ Change-Id: I2fcdf4cf119ef252ccc7df06849baf37ffd08440
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* This file contains various utility functions.
 | 
						|
 *
 | 
						|
 * The entry points into this file are:
 | 
						|
 *   get_name		retrieve a path component string from VFS
 | 
						|
 *   do_noop		handle file system calls that do nothing and succeed
 | 
						|
 *   no_sys		handle file system calls that are not implemented
 | 
						|
 *
 | 
						|
 * Created:
 | 
						|
 *   April 2009 (D.C. van Moolenbroek)
 | 
						|
 */
 | 
						|
 | 
						|
#include "inc.h"
 | 
						|
 | 
						|
/*===========================================================================*
 | 
						|
 *				get_name				     *
 | 
						|
 *===========================================================================*/
 | 
						|
int get_name(
 | 
						|
	cp_grant_id_t grant, 	/* memory grant for the path component */
 | 
						|
	size_t len,          	/* length of the name, including '\0' */
 | 
						|
	char name[NAME_MAX+1]	/* buffer in which store the result */
 | 
						|
)
 | 
						|
{
 | 
						|
/* Retrieve a path component from the caller, using a given grant.
 | 
						|
 */
 | 
						|
  int r;
 | 
						|
 | 
						|
  /* Copy in the name of the directory entry. */
 | 
						|
  if (len <= 1) return EINVAL;
 | 
						|
  if (len > NAME_MAX+1) return ENAMETOOLONG;
 | 
						|
 | 
						|
  r = sys_safecopyfrom(m_in.m_source, grant, 0, (vir_bytes) name, len);
 | 
						|
 | 
						|
  if (r != OK) return r;
 | 
						|
 | 
						|
  if (name[len-1] != 0) {
 | 
						|
	printf("%s: VFS did not zero-terminate path component!\n", sffs_name);
 | 
						|
 | 
						|
	return EINVAL;
 | 
						|
  }
 | 
						|
 | 
						|
  return OK;
 | 
						|
}
 | 
						|
 | 
						|
/*===========================================================================*
 | 
						|
 *				do_noop					     *
 | 
						|
 *===========================================================================*/
 | 
						|
int do_noop(void)
 | 
						|
{
 | 
						|
/* Generic handler for no-op system calls.
 | 
						|
 */
 | 
						|
 | 
						|
  return OK;
 | 
						|
}
 | 
						|
 | 
						|
/*===========================================================================*
 | 
						|
 *				no_sys					     *
 | 
						|
 *===========================================================================*/
 | 
						|
int no_sys(void)
 | 
						|
{
 | 
						|
/* Generic handler for unimplemented system calls.
 | 
						|
 */
 | 
						|
 | 
						|
  return ENOSYS;
 | 
						|
}
 |