1163953Srrs// ufs_mount.cpp 2185694Srrs 3235828Stuexen#include <errno.h> 4235828Stuexen#include <stdio.h> 5163953Srrs#include <string.h> 6163953Srrs#include <unistd.h> 7163953Srrs 8163953Srrs#include <String.h> 9163953Srrs 10228653Stuexenconst char* kUsage = 11163953Srrs"Usage: ufs_mount <file system> <device> <mount point> [ <parameters> ]\n" 12163953Srrs; 13163953Srrs 14228653Stuexen// print_usage 15163953Srrsvoid 16163953Srrsprint_usage(bool error = true) 17163953Srrs{ 18163953Srrs fprintf((error ? stderr : stdout), kUsage); 19163953Srrs} 20163953Srrs 21163953Srrs// main 22163953Srrsint 23163953Srrsmain(int argc, char** argv) 24163953Srrs{ 25163953Srrs // check and get the parameters 26163953Srrs if (argc < 4 || argc > 5) { 27163953Srrs print_usage(); 28163953Srrs return 1; 29163953Srrs } 30163953Srrs const char* fileSystem = argv[1]; 31163953Srrs const char* device = argv[2]; 32163953Srrs const char* mountPoint = argv[3]; 33163953Srrs const char* fsParameters = (argc >= 5 ? argv[4] : NULL); 34163953Srrs // get prepare the parameters for the mount() call 35163953Srrs if (strlen(device) == 0) 36163953Srrs device = NULL; 37163953Srrs BString parameters(fileSystem); 38163953Srrs if (fsParameters) 39163953Srrs parameters << ' ' << fsParameters; 40163953Srrs // mount 41167598Srrs ulong flags = 0; 42163953Srrsprintf("mount('userlandfs', '%s', '%s', %lu, '%s', %ld)\n", mountPoint, device, 43163953Srrsflags, parameters.String(), parameters.Length() + 1); 44163953Srrs if (mount("userlandfs", mountPoint, device, flags, 45163953Srrs (void*)parameters.String(), parameters.Length() + 1) < 0) { 46163953Srrs fprintf(stderr, "mounting failed: %s\n", strerror(errno)); 47163953Srrs return 1; 48179783Srrs } 49179783Srrs return 0; 50163953Srrs} 51163953Srrs