1*cf5a6c84SAndroid Build Coastguard Worker /* fallocate.c - Preallocate space to a file 2*cf5a6c84SAndroid Build Coastguard Worker * 3*cf5a6c84SAndroid Build Coastguard Worker * Copyright 2013 Felix Janda <[email protected]> 4*cf5a6c84SAndroid Build Coastguard Worker * 5*cf5a6c84SAndroid Build Coastguard Worker * No standard 6*cf5a6c84SAndroid Build Coastguard Worker 7*cf5a6c84SAndroid Build Coastguard Worker USE_FALLOCATE(NEWTOY(fallocate, ">1l#|o#", TOYFLAG_USR|TOYFLAG_BIN)) 8*cf5a6c84SAndroid Build Coastguard Worker 9*cf5a6c84SAndroid Build Coastguard Worker config FALLOCATE 10*cf5a6c84SAndroid Build Coastguard Worker bool "fallocate" 11*cf5a6c84SAndroid Build Coastguard Worker default y 12*cf5a6c84SAndroid Build Coastguard Worker help 13*cf5a6c84SAndroid Build Coastguard Worker usage: fallocate [-o OFFSET] -l SIZE FILE 14*cf5a6c84SAndroid Build Coastguard Worker 15*cf5a6c84SAndroid Build Coastguard Worker Tell the filesystem to allocate space for a range in a file. 16*cf5a6c84SAndroid Build Coastguard Worker 17*cf5a6c84SAndroid Build Coastguard Worker -l Number of bytes in range 18*cf5a6c84SAndroid Build Coastguard Worker -o Start offset of range (default 0) 19*cf5a6c84SAndroid Build Coastguard Worker */ 20*cf5a6c84SAndroid Build Coastguard Worker 21*cf5a6c84SAndroid Build Coastguard Worker #define FOR_fallocate 22*cf5a6c84SAndroid Build Coastguard Worker #include "toys.h" 23*cf5a6c84SAndroid Build Coastguard Worker GLOBALS(long o,l;)24*cf5a6c84SAndroid Build Coastguard WorkerGLOBALS( 25*cf5a6c84SAndroid Build Coastguard Worker long o, l; 26*cf5a6c84SAndroid Build Coastguard Worker ) 27*cf5a6c84SAndroid Build Coastguard Worker 28*cf5a6c84SAndroid Build Coastguard Worker void fallocate_main(void) 29*cf5a6c84SAndroid Build Coastguard Worker { 30*cf5a6c84SAndroid Build Coastguard Worker int fd = xcreate(*toys.optargs, O_RDWR | O_CREAT, 0644); 31*cf5a6c84SAndroid Build Coastguard Worker if ((errno = posix_fallocate(fd, TT.o, TT.l))) perror_exit("fallocate"); 32*cf5a6c84SAndroid Build Coastguard Worker if (CFG_TOYBOX_FREE) close(fd); 33*cf5a6c84SAndroid Build Coastguard Worker } 34