1// ufs_mount.cpp 2 3#include <errno.h> 4#include <stdio.h> 5#include <string.h> 6#include <unistd.h> 7 8#include <String.h> 9 10const char* kUsage = 11"Usage: ufs_mount <file system> <device> <mount point> [ <parameters> ]\n" 12; 13 14// print_usage 15void 16print_usage(bool error = true) 17{ 18 fprintf((error ? stderr : stdout), kUsage); 19} 20 21// main 22int 23main(int argc, char** argv) 24{ 25 // check and get the parameters 26 if (argc < 4 || argc > 5) { 27 print_usage(); 28 return 1; 29 } 30 const char* fileSystem = argv[1]; 31 const char* device = argv[2]; 32 const char* mountPoint = argv[3]; 33 const char* fsParameters = (argc >= 5 ? argv[4] : NULL); 34 // get prepare the parameters for the mount() call 35 if (strlen(device) == 0) 36 device = NULL; 37 BString parameters(fileSystem); 38 if (fsParameters) 39 parameters << ' ' << fsParameters; 40 // mount 41 ulong flags = 0; 42printf("mount('userlandfs', '%s', '%s', %lu, '%s', %ld)\n", mountPoint, device, 43flags, parameters.String(), parameters.Length() + 1); 44 if (mount("userlandfs", mountPoint, device, flags, 45 (void*)parameters.String(), parameters.Length() + 1) < 0) { 46 fprintf(stderr, "mounting failed: %s\n", strerror(errno)); 47 return 1; 48 } 49 return 0; 50} 51