<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>The variable names (CP_OPTS, RM_OPTS, MV_OPTS, GREP_OPTS,
      MKDIR_OPTS) seem too generic to me, given that they're just one
      subset of the options for a particular situation. E.g. OUTPUT_OPTS
      would be better since they're all related to logging, seems better
      to me. (And don't include the -p for mkdir in there; if there's
      ever support for a platform whose mkdir doesn't have a -p, it can
      get it's own variable.)<br>
    </p>
    Cheers<br>
    -Lorrin<br>
    <br>
    <div class="moz-cite-prefix">On 03/03/2017 06:46 AM, Aaron Bieber
      wrote:<br>
    </div>
    <blockquote
      cite="mid:20170303144603.njhirgt463htkhu5@slip.bold.daemon"
      type="cite">
      <pre wrap="">Hola,

This patch allows p-s to function on OpenBSD using native cp, rm, mv,
grep and mkdir. It does this by exposing command flags that can be
overwritten in the platform/$(uname).sh scripts.

Tests all pass on OpenBSD and Debian 8.7.

Cheers,
Aaron

diff --git a/src/password-store.sh b/src/password-store.sh
index 1ab6fb5..737ea5b 100755
--- a/src/password-store.sh
+++ b/src/password-store.sh
@@ -20,6 +20,13 @@ GENERATED_LENGTH="${PASSWORD_STORE_GENERATED_LENGTH:-25}"
 CHARACTER_SET="${PASSWORD_STORE_CHARACTER_SET:-[:graph:]}"
 CHARACTER_SET_NO_SYMBOLS="${PASSWORD_STORE_CHARACTER_SET_NO_SYMBOLS:-[:alnum:]}"
 
+CP_OPTS="-v"
+RM_OPTS="-v"
+MV_OPTS="-v"
+GREP_OPTS="--color=always"
+MKDIR_OPTS="-v -p"
+TREE="tree"
+
 export GIT_CEILING_DIRECTORIES="$PREFIX/.."
 
 #
@@ -316,14 +323,14 @@ cmd_init() {
 
        if [[ $# -eq 1 && -z $1 ]]; then
                [[ ! -f "$gpg_id" ]] && die "Error: $gpg_id does not exist and so cannot be removed."
-               rm -v -f "$gpg_id" || exit 1
+               rm $RM_OPTS -f "$gpg_id" || exit 1
                if [[ -n $INNER_GIT_DIR ]]; then
                        git -C "$INNER_GIT_DIR" rm -qr "$gpg_id"
                        git_commit "Deinitialize ${gpg_id}${id_path:+ ($id_path)}."
                fi
                rmdir -p "${gpg_id%/*}" 2>/dev/null
        else
-               mkdir -v -p "$PREFIX/$id_path"
+               mkdir $MKDIR_OPTS "$PREFIX/$id_path"
                printf "%s\n" "$@" > "$gpg_id"
                local id_print="$(printf "%s, " "$@")"
                echo "Password store initialized for ${id_print%, }${id_path:+ ($id_path)}"
@@ -379,7 +386,7 @@ cmd_show() {
                else
                        echo "${path%\/}"
                fi
-               tree -C -l --noreport "$PREFIX/$path" | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' # remove .gpg at end of line, but keep colors
+               "$TREE" -C -l --noreport "$PREFIX/$path" | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g' # remove .gpg at end of line, but keep colors
        elif [[ -z $path ]]; then
                die "Error: password store is empty. Try \"pass init\"."
        else
@@ -391,14 +398,14 @@ cmd_find() {
        [[ $# -eq 0 ]] && die "Usage: $PROGRAM $COMMAND pass-names..."
        IFS="," eval 'echo "Search Terms: $*"'
        local terms="*$(printf '%s*|*' "$@")"
-       tree -C -l --noreport -P "${terms%|*}" --prune --matchdirs --ignore-case "$PREFIX" | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g'
+       "$TREE" -C -l --noreport -P "${terms%|*}" --prune --matchdirs --ignore-case "$PREFIX" | tail -n +2 | sed -E 's/\.gpg(\x1B\[[0-9]+m)?( ->|$)/\1\2/g'
 }
 
 cmd_grep() {
        [[ $# -ne 1 ]] && die "Usage: $PROGRAM $COMMAND search-string"
        local search="$1" passfile grepresults
        while read -r -d "" passfile; do
-               grepresults="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | grep --color=always "$search")"
+               grepresults="$($GPG -d "${GPG_OPTS[@]}" "$passfile" | grep $GREP_OPTS "$search")"
                [[ $? -ne 0 ]] && continue
                passfile="${passfile%.gpg}"
                passfile="${passfile#$PREFIX/}"
@@ -430,7 +437,7 @@ cmd_insert() {
 
        [[ $force -eq 0 && -e $passfile ]] && yesno "An entry already exists for $path. Overwrite it?"
 
-       mkdir -p -v "$PREFIX/$(dirname "$path")"
+       mkdir $MKDIR_OPTS "$PREFIX/$(dirname "$path")"
        set_gpg_recipients "$(dirname "$path")"
 
        if [[ $multiline -eq 1 ]]; then
@@ -464,7 +471,7 @@ cmd_edit() {
 
        local path="${1%/}"
        check_sneaky_paths "$path"
-       mkdir -p -v "$PREFIX/$(dirname "$path")"
+       mkdir $MKDIR_OPTS "$PREFIX/$(dirname "$path")"
        set_gpg_recipients "$(dirname "$path")"
        local passfile="$PREFIX/$path.gpg"
        set_git "$passfile"
@@ -506,7 +513,7 @@ cmd_generate() {
        local length="${2:-$GENERATED_LENGTH}"
        check_sneaky_paths "$path"
        [[ ! $length =~ ^[0-9]+$ ]] && die "Error: pass-length \"$length\" must be a number."
-       mkdir -p -v "$PREFIX/$(dirname "$path")"
+       mkdir $MKDIR_OPTS "$PREFIX/$(dirname "$path")"
        set_gpg_recipients "$(dirname "$path")"
        local passfile="$PREFIX/$path.gpg"
        set_git "$passfile"
@@ -561,7 +568,7 @@ cmd_delete() {
 
        [[ $force -eq 1 ]] || yesno "Are you sure you would like to delete $path?"
 
-       rm $recursive -f -v "$passfile"
+       rm $recursive -f $RM_OPTS "$passfile"
        set_git "$passfile"
        if [[ -n $INNER_GIT_DIR && ! -e $passfile ]]; then
                git -C "$INNER_GIT_DIR" rm -qr "$passfile"
@@ -595,7 +602,7 @@ cmd_copy_move() {
        echo "$old_path"
        [[ -e $old_path ]] || die "Error: $1 is not in the password store."
 
-       mkdir -p -v "${new_path%/*}"
+       mkdir $MKDIR_OPTS "${new_path%/*}"
        [[ -d $old_path || -d $new_path || $new_path == */ ]] || new_path="${new_path}.gpg"
 
        local interactive="-i"
@@ -603,7 +610,8 @@ cmd_copy_move() {
 
        set_git "$new_path"
        if [[ $move -eq 1 ]]; then
-               mv $interactive -v "$old_path" "$new_path" || exit 1
+               echo mv $interactive $MV_OPTS "$old_path" "$new_path"
+               mv $interactive $MV_OPTS "$old_path" "$new_path" || exit 1
                [[ -e "$new_path" ]] && reencrypt_path "$new_path"
 
                set_git "$new_path"
@@ -620,7 +628,7 @@ cmd_copy_move() {
                fi
                rmdir -p "$old_dir" 2>/dev/null
        else
-               cp $interactive -r -v "$old_path" "$new_path" || exit 1
+               cp $interactive -r $CP_OPTS "$old_path" "$new_path" || exit 1
                [[ -e "$new_path" ]] && reencrypt_path "$new_path"
                git_add_file "$new_path" "Copy ${1} to ${2}."
        fi
diff --git a/src/platform/openbsd.sh b/src/platform/openbsd.sh
index b66b32f..aa7d479 100644
--- a/src/platform/openbsd.sh
+++ b/src/platform/openbsd.sh
@@ -38,3 +38,10 @@ tmpdir() {
 
 GETOPT="gnugetopt"
 SHRED="rm -P -f"
+CP_OPTS=""
+RM_OPTS=""
+MV_OPTS=""
+GREP_OPTS=""
+MKDIR_OPTS="-p"
+TREE="colortree"
+

</pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Password-Store mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Password-Store@lists.zx2c4.com">Password-Store@lists.zx2c4.com</a>
<a class="moz-txt-link-freetext" href="https://lists.zx2c4.com/mailman/listinfo/password-store">https://lists.zx2c4.com/mailman/listinfo/password-store</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>