| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | /* vi: set sw=4 ts=4: *//* * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org> * * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */#include <sys/syscall.h>#include <stdarg.h>#include <unistd.h>#include <ulimit.h>#include <sys/resource.h>long int ulimit(int cmd, ...){	va_list va;	struct rlimit limit;	long int result = -1;	va_start (va, cmd);	switch (cmd) {		/* Get limit on file size.  */		case UL_GETFSIZE:			if (getrlimit(RLIMIT_FSIZE, &limit) == 0)				result =  limit.rlim_cur / 512; /* bytes to 512 byte blocksize */			break;		/* Set limit on file size.  */		case UL_SETFSIZE:			result = va_arg (va, long int);			if ((rlim_t) result > RLIM_INFINITY / 512) {				limit.rlim_cur = RLIM_INFINITY;				limit.rlim_max = RLIM_INFINITY;			} else {				limit.rlim_cur = result * 512;				limit.rlim_max = result * 512;			}			result = setrlimit(RLIMIT_FSIZE, &limit);			break;		case __UL_GETOPENMAX:			result = sysconf(_SC_OPEN_MAX);			break;		default:			__set_errno(EINVAL);	}	va_end (va);	return result;}
 |