annotate utillib.tcl @ 528:20a1b0f39f71

utillib: Add new helper functions.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 07 Jul 2020 14:20:55 +0300
parents 1255d524a919
children c9dc79874939
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
290
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
1 ##########################################################################
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
2 #
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
3 # TCL functions library by Matti 'ccr' Hamalainen <ccr@tnsp.org>
502
1255d524a919 Fix create_*.tcl database creation scripts after long period of being broken.
Matti Hamalainen <ccr@tnsp.org>
parents: 467
diff changeset
4 # (C) Copyright 2015-2020 Tecnic Software productions (TNSP)
290
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
5 #
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
6 # This script is freely distributable under GNU GPL (version 2) license.
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
7 #
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
8 ##########################################################################
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
9
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
10 set utl_html_ent_str "&#45;|-|&#39;|'|—|-|&rlm;||&#8212;|-|&#8211;|--|&#x202a;||&#x202c;|"
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
11 append utl_html_ent_str "|&lrm;||&aring;|å|&Aring;|Å|&eacute;|é|&#58;|:|&nbsp;| "
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
12 append utl_html_ent_str "|&#8221;|\"|&#8220;|\"|&laquo;|<<|&raquo;|>>|&quot;|\""
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
13 append utl_html_ent_str "|&auml;|ä|&ouml;|ö|&Auml;|Ä|&Ouml;|Ö|&amp;|&|&lt;|<|&gt;|>"
440
cd53828bb724 utillib: Add some new entity translations.
Matti Hamalainen <ccr@tnsp.org>
parents: 432
diff changeset
14 append utl_html_ent_str "|&#228;|ä|&#229;|ö|&mdash;|--|&#039;|'|&ndash;|-|&#034;|\""
290
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
15 append utl_html_ent_str "|&#124;|-|&#8217;|'|&uuml;|ü|&Uuml;|Ü|&bull;|*|&euro;|€"
317
994c398cb3fc utillib: Add some entity conversions.
Matti Hamalainen <ccr@tnsp.org>
parents: 316
diff changeset
16 append utl_html_ent_str "|&rdquo;|\"|&#8216;|'|&#xe4;|ä|&#xb7;|*|&#174;|®|&acute;|'"
330
c42c900daf08 utillib: Add more entity conversions.
Matti Hamalainen <ccr@tnsp.org>
parents: 326
diff changeset
17 append utl_html_ent_str "|&#246;|ö|&#xf6;|ö|&#35;|#|&apos;|'|&shy;||–|-|”|\""
337
e01963cb88fd utillib: Add some more entity etc. conversions.
Matti Hamalainen <ccr@tnsp.org>
parents: 333
diff changeset
18 append utl_html_ent_str "|&#x2026;|...|&hellip;|...|&#34;|\"|&#xad;||&#064;|#"
440
cd53828bb724 utillib: Add some new entity translations.
Matti Hamalainen <ccr@tnsp.org>
parents: 432
diff changeset
19 append utl_html_ent_str "|&#xa0;| |&pound;|£|&#38;|&|&#158;|ž|&#196;|Ä|&#186;|º"
467
b29b0db02649 utillib: Add unicode hyphen conversion to ascii.
Matti Hamalainen <ccr@tnsp.org>
parents: 441
diff changeset
20 append utl_html_ent_str "|&#8230;|...|&#47;|/|&#10;| |&#034;|\"|–|-"
290
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
21 set utl_html_ent_list [split [encoding convertfrom "utf-8" $utl_html_ent_str] "|"]
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
22
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
23
432
124b97f5a19d utillib: Add some comments, bump copyright.
Matti Hamalainen <ccr@tnsp.org>
parents: 428
diff changeset
24 # Convert given string, containing HTML/XML style entities into a normal
124b97f5a19d utillib: Add some comments, bump copyright.
Matti Hamalainen <ccr@tnsp.org>
parents: 428
diff changeset
25 # UTF-8 Unicode string, using the above entity->character mapping
290
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
26 proc utl_convert_html_ent {udata} {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
27 global utl_html_ent_list
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
28 return [string map -nocase $utl_html_ent_list [string map $utl_html_ent_list $udata]]
31
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
29 }
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
30
290
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
31
432
124b97f5a19d utillib: Add some comments, bump copyright.
Matti Hamalainen <ccr@tnsp.org>
parents: 428
diff changeset
32 # Split given string "str" into a list of sub-strings of maximum length
124b97f5a19d utillib: Add some comments, bump copyright.
Matti Hamalainen <ccr@tnsp.org>
parents: 428
diff changeset
33 # "maxlen", by attempting to split at "words", if possible.
290
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
34 proc utl_str_split {str maxlen} {
424
825cac46b1cb Cosmetic / stray trailing whitespace cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 422
diff changeset
35 set pos 0
290
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
36 set len [string length $str]
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
37 set ulen 0
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
38 set ustr ""
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
39 set result {}
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
40 while {$pos < $len} {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
41 set end [string wordend $str $pos]
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
42 set new [expr $end - $pos + 1]
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
43 if {$ulen + $new < $maxlen} {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
44 append ustr [string range $str $pos $end]
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
45 set ulen [expr $ulen + $new]
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
46 } else {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
47 append ustr [string range $str $pos $end]
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
48 lappend result $ustr
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
49 set ustr ""
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
50 set ulen 0
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
51 }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
52 set pos [expr $end + 1]
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
53 }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
54 if {$ustr != ""} {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
55 lappend result $ustr
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
56 }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
57 return $result
31
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
58 }
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
59
1ddfada536ff Add utility "library" for database conversion and creation scripts.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
60
314
1cf897164a25 utillib: Add utl_match_delim_list helper function.
Matti Hamalainen <ccr@tnsp.org>
parents: 310
diff changeset
61 proc utl_match_delim_list {ulist ustr} {
1cf897164a25 utillib: Add utl_match_delim_list helper function.
Matti Hamalainen <ccr@tnsp.org>
parents: 310
diff changeset
62 foreach ukey [split $ulist ";"] {
316
682adbf6f09f urllog: 10L Bugfix.
Matti Hamalainen <ccr@tnsp.org>
parents: 314
diff changeset
63 if {[string match $ukey $ustr]} {
314
1cf897164a25 utillib: Add utl_match_delim_list helper function.
Matti Hamalainen <ccr@tnsp.org>
parents: 310
diff changeset
64 return 1
1cf897164a25 utillib: Add utl_match_delim_list helper function.
Matti Hamalainen <ccr@tnsp.org>
parents: 310
diff changeset
65 }
1cf897164a25 utillib: Add utl_match_delim_list helper function.
Matti Hamalainen <ccr@tnsp.org>
parents: 310
diff changeset
66 }
1cf897164a25 utillib: Add utl_match_delim_list helper function.
Matti Hamalainen <ccr@tnsp.org>
parents: 310
diff changeset
67 return 0
1cf897164a25 utillib: Add utl_match_delim_list helper function.
Matti Hamalainen <ccr@tnsp.org>
parents: 310
diff changeset
68 }
1cf897164a25 utillib: Add utl_match_delim_list helper function.
Matti Hamalainen <ccr@tnsp.org>
parents: 310
diff changeset
69
1cf897164a25 utillib: Add utl_match_delim_list helper function.
Matti Hamalainen <ccr@tnsp.org>
parents: 310
diff changeset
70
528
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
71 proc utl_valid_user {uhand} {
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
72 if {$uhand != "" && $uhand != "{}" && $uhand != "*"} {
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
73 return 1
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
74 }
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
75 return 0
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
76 }
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
77
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
78
432
124b97f5a19d utillib: Add some comments, bump copyright.
Matti Hamalainen <ccr@tnsp.org>
parents: 428
diff changeset
79 # Send IRC message with given message type, splitting the
124b97f5a19d utillib: Add some comments, bump copyright.
Matti Hamalainen <ccr@tnsp.org>
parents: 428
diff changeset
80 # string to fit to IRCNet (etc.) max message length.
426
84d3d7abeb8a Add utl_msg_do() function into utillib and refactor out similar things in quotedb and weather scripts.
Matti Hamalainen <ccr@tnsp.org>
parents: 424
diff changeset
81 proc utl_msg_do {upreferredmsg upublic unick uchan umsg} {
84d3d7abeb8a Add utl_msg_do() function into utillib and refactor out similar things in quotedb and weather scripts.
Matti Hamalainen <ccr@tnsp.org>
parents: 424
diff changeset
82 foreach uline [utl_str_split $umsg 450] {
428
04021e2e26c3 utillib: Fix silly bugs.
Matti Hamalainen <ccr@tnsp.org>
parents: 426
diff changeset
83 if {$upublic == 1} {
04021e2e26c3 utillib: Fix silly bugs.
Matti Hamalainen <ccr@tnsp.org>
parents: 426
diff changeset
84 putserv "$upreferredmsg $uchan :$uline"
426
84d3d7abeb8a Add utl_msg_do() function into utillib and refactor out similar things in quotedb and weather scripts.
Matti Hamalainen <ccr@tnsp.org>
parents: 424
diff changeset
85 } else {
84d3d7abeb8a Add utl_msg_do() function into utillib and refactor out similar things in quotedb and weather scripts.
Matti Hamalainen <ccr@tnsp.org>
parents: 424
diff changeset
86 putserv "$upreferredmsg $unick :$uline"
84d3d7abeb8a Add utl_msg_do() function into utillib and refactor out similar things in quotedb and weather scripts.
Matti Hamalainen <ccr@tnsp.org>
parents: 424
diff changeset
87 }
84d3d7abeb8a Add utl_msg_do() function into utillib and refactor out similar things in quotedb and weather scripts.
Matti Hamalainen <ccr@tnsp.org>
parents: 424
diff changeset
88 }
84d3d7abeb8a Add utl_msg_do() function into utillib and refactor out similar things in quotedb and weather scripts.
Matti Hamalainen <ccr@tnsp.org>
parents: 424
diff changeset
89 }
84d3d7abeb8a Add utl_msg_do() function into utillib and refactor out similar things in quotedb and weather scripts.
Matti Hamalainen <ccr@tnsp.org>
parents: 424
diff changeset
90
84d3d7abeb8a Add utl_msg_do() function into utillib and refactor out similar things in quotedb and weather scripts.
Matti Hamalainen <ccr@tnsp.org>
parents: 424
diff changeset
91
528
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
92 proc utl_msg_args {upreferredmsg upublic unick uchan umsg {uargs {}}} {
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
93
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
94 # Map constant tokens
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
95 set umsg [string map [list "@nick@" $unick] $umsg]
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
96 set umsg [string map [list "@chan@" $uchan] $umsg]
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
97
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
98 # Map numeric tokens
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
99 set narg 1
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
100 foreach marg $uargs {
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
101 set umsg [string map [list "@$narg@" $marg] $umsg]
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
102 incr narg
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
103 }
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
104
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
105 utl_msg_do $upreferredmsg $upublic $unick $uchan $umsg
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
106 }
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
107
20a1b0f39f71 utillib: Add new helper functions.
Matti Hamalainen <ccr@tnsp.org>
parents: 502
diff changeset
108
432
124b97f5a19d utillib: Add some comments, bump copyright.
Matti Hamalainen <ccr@tnsp.org>
parents: 428
diff changeset
109 # Return formatted time for given UNIX timestamp
422
880a07485275 Add utl_ctime() to utillib and use it elsewhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 337
diff changeset
110 proc utl_ctime {utime} {
880a07485275 Add utl_ctime() to utillib and use it elsewhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 337
diff changeset
111 if {$utime == "" || $utime == "*"} {
880a07485275 Add utl_ctime() to utillib and use it elsewhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 337
diff changeset
112 set utime 0
880a07485275 Add utl_ctime() to utillib and use it elsewhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 337
diff changeset
113 }
880a07485275 Add utl_ctime() to utillib and use it elsewhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 337
diff changeset
114 return [clock format $utime -format "%d.%m.%Y %H:%M"]
880a07485275 Add utl_ctime() to utillib and use it elsewhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 337
diff changeset
115 }
880a07485275 Add utl_ctime() to utillib and use it elsewhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 337
diff changeset
116
880a07485275 Add utl_ctime() to utillib and use it elsewhere.
Matti Hamalainen <ccr@tnsp.org>
parents: 337
diff changeset
117
290
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
118 ###
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
119 ### SQL database handling
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
120 ###
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
121 proc utl_tdbc_sql_init {ndb_handle db_type db_name db_host db_port db_user db_pass} {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
122 upvar $ndb_handle udb_handle
424
825cac46b1cb Cosmetic / stray trailing whitespace cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 422
diff changeset
123
290
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
124 if {$db_type == "sqlite"} {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
125 if {$db_name == ""} {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
126 putlog " SQLite3 database file not set."
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
127 return 0
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
128 }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
129 if {![file exists $db_name]} {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
130 putlog " URLLog SQLite3 database file '$db_name' not found, or not accessible!"
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
131 return 0
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
132 }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
133 package require tdbc::sqlite3 1.0
310
d56509a6f435 utillib: Simplify SQL connection creation.
Matti Hamalainen <ccr@tnsp.org>
parents: 295
diff changeset
134 if {[catch {set udb_handle [tdbc::sqlite3::connection new $db_name]} db_errmsg]} {
290
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
135 putlog " Could not open SQLite3 database '$db_name': $db_errmsg"
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
136 return 0
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
137 }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
138 putlog " (Using SQLite3 database $db_name)"
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
139 } elseif {$db_type == "postgres" || $db_type == "mysql"} {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
140 # Check parameters
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
141 set db_args {}
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
142 if {$db_user != ""} { lappend db_args -user $db_user }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
143 if {$db_pass != ""} { lappend db_args -passwd $db_pass }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
144 if {$db_host != ""} {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
145 lappend db_args -host $db_pass
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
146 if {$db_posrt != 0} {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
147 lappend db_args -port $db_port
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
148 set db_host "${db_host}:${db_port}"
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
149 }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
150 } else {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
151 set db_host "localhost"
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
152 }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
153 if {$db_name == ""} {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
154 putlog " Database name not set."
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
155 return 0
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
156 }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
157 lappend db_args -database $db_name
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
158
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
159 if {$db_type == "postgres"} {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
160 package require tdbc::postgres 1.0
310
d56509a6f435 utillib: Simplify SQL connection creation.
Matti Hamalainen <ccr@tnsp.org>
parents: 295
diff changeset
161 if {[catch {set udb_handle [tdbc::postgres::connection new {*}$db_args]} db_errmsg]} {
290
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
162 putlog " Could not connect to PostgreSQL database '$db_name @ $db_host': $db_errmsg"
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
163 return 0
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
164 }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
165 putlog " (Using PostgreSQL database $db_name @ $db_host)"
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
166 } elseif {$db_type == "mysql"} {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
167 package require tdbc::mysql 1.0
310
d56509a6f435 utillib: Simplify SQL connection creation.
Matti Hamalainen <ccr@tnsp.org>
parents: 295
diff changeset
168 if {[catch {set udb_handle [tdbc::mysql::connection new {*}$db_args]} db_errmsg]} {
290
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
169 putlog " Could not connect to MySQL database '$db_name @ $db_host': $db_errmsg"
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
170 return 0
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
171 }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
172 putlog " (Using MySQL database $db_name @ $db_host)"
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
173 }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
174 } else {
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
175 putlog " Invalid or unsupported database type: '$db_type'."
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
176 return 0
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
177 }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
178 return 1
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
179 }
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
180
cad1041b5bc4 Revamp the utility functions library.
Matti Hamalainen <ccr@tnsp.org>
parents: 262
diff changeset
181
295
141bb4a2b76f utillib: utl_escape (which will be deprecated soon).
Matti Hamalainen <ccr@tnsp.org>
parents: 290
diff changeset
182 proc utl_escape {str} {
141bb4a2b76f utillib: utl_escape (which will be deprecated soon).
Matti Hamalainen <ccr@tnsp.org>
parents: 290
diff changeset
183 return [string map {' ''} $str]
141bb4a2b76f utillib: utl_escape (which will be deprecated soon).
Matti Hamalainen <ccr@tnsp.org>
parents: 290
diff changeset
184 }