mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-23 21:06:52 +03:00
ebbdc8847e
...to prevent leaving wal/shm files after viewing sqlite database. The problem I often had with viewing .sqlite files with mc is that exiting the view mode mid-way may leave .wal/.shm files in the database directory. This never caused any actual issues, but a bit annoying, since leftover .wal files are often a sign that the program working with the database exited ungracefully. This effectively reproduces mc's behaviour: /tmp/testsqlite $ rm -f *-wal *-shm && sqlite3 "/tmp/testsqlite/db file.sqlite" .dump | head >/dev/null && ls -1 /tmp/testsqlite/ 'db file.sqlite' 'db file.sqlite-shm' 'db file.sqlite-wal' After the change -- no shm/wal files /tmp/testsqlite $ rm -f *-wal *-shm && sqlite3 "file:/tmp/testsqlite/db file.sqlite?immutable=1" .dump | head >/dev/null && ls -1 /tmp/testsqlite/ 'db file.sqlite' You can find the docs on immutable mode here: https://www.sqlite.org/uri.html#uriimmutable Immutable mode has been supported in sqlite since 2014: https://www.sqlite.org/changes.html#version_3_8_5 In case user's sqlite installation is older, the mode is just quietly ignored, so the change is backwards compatible. Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
102 lines
2.2 KiB
Bash
102 lines
2.2 KiB
Bash
#!/bin/sh
|
|
|
|
# $1 - action
|
|
# $2 - type of file
|
|
|
|
action=$1
|
|
filetype=$2
|
|
|
|
[ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"
|
|
|
|
do_view_action() {
|
|
filetype=$1
|
|
|
|
case "${filetype}" in
|
|
iso9660)
|
|
if which isoinfo > /dev/null 2>&1; then
|
|
isoinfo -d -i "${MC_EXT_FILENAME}" && isoinfo -l -R -J -i "${MC_EXT_FILENAME}"
|
|
else
|
|
7za l "${MC_EXT_FILENAME}"
|
|
fi
|
|
;;
|
|
cat)
|
|
cat "${MC_EXT_FILENAME}" 2>/dev/null
|
|
;;
|
|
ar)
|
|
file "${MC_EXT_FILENAME}" && nm -C "${MC_EXT_FILENAME}"
|
|
;;
|
|
lib)
|
|
gplib -t "${MC_EXT_FILENAME}" | \
|
|
@PERL@ -e 'while (<>) { @a=split /[\s\t]+/, $_; printf ("%-30s | %10d | %s.%s.%02d | %s\n", $a[0], ($a[1]*1),$a[7], lc($a[4]), $a[5], $a[6]);}'
|
|
;;
|
|
so)
|
|
file "${MC_EXT_FILENAME}" && nm -C -D "${MC_EXT_FILENAME}"
|
|
;;
|
|
elf)
|
|
file "${MC_EXT_FILENAME}" && nm -C "${MC_EXT_FILENAME}"
|
|
;;
|
|
dbf)
|
|
dbview -b "${MC_EXT_FILENAME}"
|
|
;;
|
|
sqlite)
|
|
sqlite3 "file:${MC_EXT_FILENAME}?immutable=1" .dump
|
|
;;
|
|
mo)
|
|
msgunfmt "${MC_EXT_FILENAME}" || \
|
|
cat "${MC_EXT_FILENAME}"
|
|
;;
|
|
lyx)
|
|
lyxcat "${MC_EXT_FILENAME}"
|
|
;;
|
|
torrent)
|
|
ctorrent -x "${MC_EXT_FILENAME}" 2>/dev/null
|
|
;;
|
|
javaclass)
|
|
jad -p "${MC_EXT_FILENAME}" 2>/dev/null || \
|
|
(file -b "${MC_EXT_FILENAME}"; javap -private "${MC_EXT_FILENAME}" 2>/dev/null)
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
}
|
|
|
|
do_open_action() {
|
|
filetype=$1
|
|
|
|
case "${filetype}" in
|
|
dbf)
|
|
dbview "${MC_EXT_FILENAME}"
|
|
;;
|
|
sqlite)
|
|
sqlite3 "${MC_EXT_FILENAME}"
|
|
;;
|
|
glade)
|
|
if which glade-3 >/dev/null 2>&1; then
|
|
(glade-3 "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
|
|
else
|
|
(glade-2 "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
|
|
fi
|
|
;;
|
|
po)
|
|
(poedit "${MC_EXT_FILENAME}" >/dev/null 2>&1 &)
|
|
;;
|
|
lyx)
|
|
lyx "${MC_EXT_FILENAME}"
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
}
|
|
|
|
case "${action}" in
|
|
view)
|
|
do_view_action "${filetype}"
|
|
;;
|
|
open)
|
|
("${MC_XDG_OPEN}" "${MC_EXT_FILENAME}" >/dev/null 2>&1) || \
|
|
do_open_action "${filetype}"
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|