1*433d6423SLionel Sambuc #include <sys/cdefs.h> 2*433d6423SLionel Sambuc #include "namespace.h" 3*433d6423SLionel Sambuc #include <lib.h> 4*433d6423SLionel Sambuc #include <minix/u64.h> 5*433d6423SLionel Sambuc #include <sys/types.h> 6*433d6423SLionel Sambuc #include <sys/stat.h> 7*433d6423SLionel Sambuc #include <stdio.h> 8*433d6423SLionel Sambuc #include <errno.h> 9*433d6423SLionel Sambuc #include <fcntl.h> 10*433d6423SLionel Sambuc #include <limits.h> 11*433d6423SLionel Sambuc #include <stdlib.h> 12*433d6423SLionel Sambuc #include <string.h> 13*433d6423SLionel Sambuc #include <time.h> 14*433d6423SLionel Sambuc #include <unistd.h> 15*433d6423SLionel Sambuc #include <minix/config.h> 16*433d6423SLionel Sambuc #include <minix/const.h> 17*433d6423SLionel Sambuc #include <minix/type.h> 18*433d6423SLionel Sambuc #include <minix/minlib.h> 19*433d6423SLionel Sambuc #include <minix/partition.h> 20*433d6423SLionel Sambuc #include <sys/ioc_disk.h> 21*433d6423SLionel Sambuc 22*433d6423SLionel Sambuc #include <unistd.h> 23*433d6423SLionel Sambuc 24*433d6423SLionel Sambuc /*================================================================ 25*433d6423SLionel Sambuc * minix_sizeup - determine device size 26*433d6423SLionel Sambuc *===============================================================*/ 27*433d6423SLionel Sambuc int minix_sizeup(device, bytes) 28*433d6423SLionel Sambuc char *device; 29*433d6423SLionel Sambuc u64_t *bytes; 30*433d6423SLionel Sambuc { 31*433d6423SLionel Sambuc int fd; 32*433d6423SLionel Sambuc struct part_geom entry; 33*433d6423SLionel Sambuc struct stat st; 34*433d6423SLionel Sambuc 35*433d6423SLionel Sambuc if ((fd = open(device, O_RDONLY)) == -1) { 36*433d6423SLionel Sambuc if (errno != ENOENT) 37*433d6423SLionel Sambuc perror("sizeup open"); 38*433d6423SLionel Sambuc return -1; 39*433d6423SLionel Sambuc } 40*433d6423SLionel Sambuc if (ioctl(fd, DIOCGETP, &entry) == -1) { 41*433d6423SLionel Sambuc perror("sizeup ioctl"); 42*433d6423SLionel Sambuc if(fstat(fd, &st) < 0) { 43*433d6423SLionel Sambuc perror("fstat"); 44*433d6423SLionel Sambuc entry.size = ((u64_t)(0)); 45*433d6423SLionel Sambuc } else { 46*433d6423SLionel Sambuc entry.size = ((u64_t)(st.st_size)); 47*433d6423SLionel Sambuc } 48*433d6423SLionel Sambuc } 49*433d6423SLionel Sambuc close(fd); 50*433d6423SLionel Sambuc *bytes = entry.size; 51*433d6423SLionel Sambuc return 0; 52*433d6423SLionel Sambuc } 53