main: also accept options at the end via "-o"
For compatability with mount(1), options are also accepted as "-o COMMA-SEPARATED-OPTIONS" at the end of the command line. For example, "-o q,zerokey" is equivalent to "-q -zerokey".
This commit is contained in:
parent
25a8802403
commit
9cf3ced0ce
@ -18,7 +18,7 @@ gocryptfs -init [OPTIONS] CIPHERDIR
|
|||||||
Mount
|
Mount
|
||||||
-----
|
-----
|
||||||
|
|
||||||
gocryptfs [OPTIONS] CIPHERDIR MOUNTPOINT
|
gocryptfs [OPTIONS] CIPHERDIR MOUNTPOINT [-o COMMA-SEPARATED-OPTIONS]
|
||||||
|
|
||||||
Change password
|
Change password
|
||||||
---------------
|
---------------
|
||||||
@ -143,6 +143,12 @@ useful in regression testing.
|
|||||||
automated testing as it does not provide any security.
|
automated testing as it does not provide any security.
|
||||||
|
|
||||||
|
|
||||||
|
Comma-Separated-Options:
|
||||||
|
|
||||||
|
For compatability with mount(1), options are also accepted as
|
||||||
|
"-o COMMA-SEPARATED-OPTIONS" at the end of the command line.
|
||||||
|
For example, "-o q,zerokey" is equivalent to "-q -zerokey".
|
||||||
|
|
||||||
EXAMPLES
|
EXAMPLES
|
||||||
========
|
========
|
||||||
|
|
||||||
|
25
cli_args.go
25
cli_args.go
@ -4,6 +4,7 @@ import (
|
|||||||
"flag"
|
"flag"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/rfjakob/gocryptfs/internal/configfile"
|
"github.com/rfjakob/gocryptfs/internal/configfile"
|
||||||
"github.com/rfjakob/gocryptfs/internal/prefer_openssl"
|
"github.com/rfjakob/gocryptfs/internal/prefer_openssl"
|
||||||
@ -27,8 +28,32 @@ type argContainer struct {
|
|||||||
|
|
||||||
var flagSet *flag.FlagSet
|
var flagSet *flag.FlagSet
|
||||||
|
|
||||||
|
// prefixOArgs transform options passed via "-o foo,bar" into regular options
|
||||||
|
// like "-foo -bar" and prefixes them to the command line.
|
||||||
|
func prefixOArgs(osArgs []string) []string {
|
||||||
|
l := len(osArgs)
|
||||||
|
// Need at least 3, example: gocryptfs -o foo,bar
|
||||||
|
if l < 3 {
|
||||||
|
return osArgs
|
||||||
|
}
|
||||||
|
if osArgs[l-2] != "-o" {
|
||||||
|
return osArgs
|
||||||
|
}
|
||||||
|
oOpts := strings.Split(osArgs[l-1], ",")
|
||||||
|
osArgs = osArgs[:l-2]
|
||||||
|
newArgs := []string{osArgs[0]}
|
||||||
|
// Add options from "-o"
|
||||||
|
for _, a := range oOpts {
|
||||||
|
newArgs = append(newArgs, "-"+a)
|
||||||
|
}
|
||||||
|
newArgs = append(newArgs, osArgs[1:]...)
|
||||||
|
return newArgs
|
||||||
|
}
|
||||||
|
|
||||||
// parseCliOpts - parse command line options (i.e. arguments that start with "-")
|
// parseCliOpts - parse command line options (i.e. arguments that start with "-")
|
||||||
func parseCliOpts() (args argContainer) {
|
func parseCliOpts() (args argContainer) {
|
||||||
|
os.Args = prefixOArgs(os.Args)
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
var opensslAuto string
|
var opensslAuto string
|
||||||
|
|
||||||
|
4
main.go
4
main.go
@ -42,7 +42,7 @@ func usageText() {
|
|||||||
printVersion()
|
printVersion()
|
||||||
fmt.Printf(`
|
fmt.Printf(`
|
||||||
Usage: %s -init|-passwd [OPTIONS] CIPHERDIR
|
Usage: %s -init|-passwd [OPTIONS] CIPHERDIR
|
||||||
or %s [OPTIONS] CIPHERDIR MOUNTPOINT
|
or %s [OPTIONS] CIPHERDIR MOUNTPOINT [-o COMMA-SEPARATED-OPTIONS]
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
`, tlog.ProgramName, tlog.ProgramName)
|
`, tlog.ProgramName, tlog.ProgramName)
|
||||||
@ -221,7 +221,7 @@ func main() {
|
|||||||
prettyArgs = prettyArgs[1 : len(prettyArgs)-1]
|
prettyArgs = prettyArgs[1 : len(prettyArgs)-1]
|
||||||
tlog.Info.Printf("Wrong number of arguments (have %d, want 2). You passed: %s",
|
tlog.Info.Printf("Wrong number of arguments (have %d, want 2). You passed: %s",
|
||||||
flagSet.NArg(), prettyArgs)
|
flagSet.NArg(), prettyArgs)
|
||||||
tlog.Fatal.Printf("Usage: %s [OPTIONS] CIPHERDIR MOUNTPOINT", tlog.ProgramName)
|
tlog.Fatal.Printf("Usage: %s [OPTIONS] CIPHERDIR MOUNTPOINT [-o COMMA-SEPARATED-OPTIONS]", tlog.ProgramName)
|
||||||
os.Exit(ErrExitUsage)
|
os.Exit(ErrExitUsage)
|
||||||
}
|
}
|
||||||
os.Exit(doMount(&args))
|
os.Exit(doMount(&args))
|
||||||
|
Loading…
Reference in New Issue
Block a user