From 1da85e522d9089ebbeba4baa07771d2ac2df3408 Mon Sep 17 00:00:00 2001 From: Paul Wilde Date: Fri, 26 Aug 2022 10:42:23 +0100 Subject: [PATCH] fixed some clipurr issues --- clipurr/src/clipurr.nim | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/clipurr/src/clipurr.nim b/clipurr/src/clipurr.nim index 4704b32..2a7e8b3 100644 --- a/clipurr/src/clipurr.nim +++ b/clipurr/src/clipurr.nim @@ -1,11 +1,10 @@ import ../../globurrl import std/[strutils,os,db_sqlite,osproc] -const CLIP_DB = WM_TOOLS_DIR & ".clipurr_cache.sqlite" +const CLIP_DB = WM_TOOLS_DIR & "clipurr_cache.sqlite" const KEEP_ITEMS = 20 proc openDBConn(): DBConn -let db = openDBConn() proc addClip(str: var string) @@ -45,9 +44,8 @@ proc openDBConn(): DBConn = return db proc clearHistory() = -# let db = openDBConn() + let db = openDBConn() - defer: db.close() try: db.exec(sql"drop table if exists clip_items") except: @@ -56,8 +54,9 @@ proc clearHistory() = proc maintainDB() = return # order by and offset doesn't work unless certain sqlite compile time options set # will create a different way to do this - let db = openDBConn() try: + let db = openDBConn() + defer: db.close() db.exec(sql"""BEGIN""") db.exec(sql"delete from clip_items order by timestamp desc offset ?", KEEP_ITEMS) db.exec(sql"""COMMIT""") @@ -67,6 +66,7 @@ proc maintainDB() = proc escapeClip(str: string): string = var clip = str clip = clip.replace("`","\\`") + clip = clip.replace("\\n`","\\\\n`") clip = escape(clip) return strip(clip) @@ -82,8 +82,9 @@ proc unescapeClip(str: string): string = proc readClipFile(): seq[string] = var clips: seq[string] = @[] # let db = openDBConn() - defer: db.close() try: + let db = openDBConn() + defer: db.close() for row in db.fastRows(sql"select distinct(clip) from clip_items order by timestamp desc LIMIT ?", KEEP_ITEMS): var str = unescapeClip(row[0]) clips.add(str) @@ -98,12 +99,15 @@ proc addClip(str: var string) = var t = str[1..3] echo "Is a ", $t, " file , not storing" str = "[" & t & " Image] (not stored)" - defer: db.close() try: + str = escapeClip(str) + echo "clipboard content : ", str + let db = openDBConn() + defer: db.close() db.exec(sql"""BEGIN""") db.exec(sql"""insert into clip_items (timestamp, clip) values (CURRENT_TIMESTAMP, ?) - """, escapeClip(str)) + """, str) db.exec(sql"""COMMIT""") except: echo getCurrentExceptionMsg()