Use zsh's builtin stat instead of relying on the stat command

This commit is contained in:
Kovid Goyal 2022-05-27 12:50:52 +05:30
parent c5e5ec618d
commit 83ce23ff9f
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -455,13 +455,11 @@ edit-in-kitty() {
builtin echo "$ed_filename is not a file" > /dev/stderr
return 1
}
builtin local stat_result=""
stat_result=$(builtin command stat -L --format '%d:%i:%s' "$ed_filename" 2> /dev/null)
[ $? != 0 ] && stat_result=$(builtin command stat -L -f '%d:%i:%z' "$ed_filename" 2> /dev/null)
[ -z "$stat_result" ] && { builtin echo "Failed to stat the file: $ed_filename" > /dev/stderr; return 1; }
data="$data,file_inode=$stat_result"
builtin local file_size=$(builtin echo "$stat_result" | builtin command cut -d: -f3)
[ "$file_size" -gt $((8 * 1024 * 1024)) ] && { builtin echo "File is too large for performant editing"; return 1; }
builtin zmodload -F zsh/stat b:zstat
builtin typeset -A stat_result
builtin zstat -H stat_result "$ed_filename" || { builtin echo "Failed to stat the file: $ed_filename" > /dev/stderr; return 1; }
[ "${stat_result[size]}" -gt $((8 * 1024 * 1024)) ] && { builtin echo "File is too large for performant editing"; return 1; }
data="$data,file_inode=${stat_result[device]}:${stat_result[inode]}:${stat_result[size]}"
data="$data,file_data=$(builtin command cat "$ed_filename" | builtin command base64)"
_ksi_transmit_data "$data" "edit"
data=""